From e8bba323027aa2155048fa0b749376a186d3cb89 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Mon, 7 Sep 2009 08:01:40 +0000 Subject: [PATCH] Config ui prototype and some minor fixes git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@29 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 10 + source/distro/doc/user-manual.odt | Bin 219545 -> 219790 bytes .../w2lcommon/filter/ByteArrayXStream.java | 2 +- .../da/comp/w2lcommon/filter/EPSCleaner.java | 2 +- .../w2lcommon/filter/ExportFilterBase.java | 5 +- .../comp/w2lcommon/helper/DialogAccess.java | 269 ++++++++++++ .../da/comp/w2lcommon/helper/MessageBox.java | 2 +- .../writer2latex/ConfigurationDialog.java | 396 ++++++++++++++++++ .../da/comp/writer2latex/W2LExportFilter.java | 6 +- .../da/comp/writer2latex/W2LRegistration.java | 14 +- .../da/comp/writer2xhtml/W2XExportFilter.java | 6 +- .../writer2latex/api/ConverterFactory.java | 2 +- .../writer2latex/api/GraphicConverter.java | 2 +- .../java/writer2latex/api/IndexPageEntry.java | 2 +- source/java/writer2latex/base/Option.java | 2 +- .../latex/i18n/ReplacementTrieNode.java | 2 +- .../latex/i18n/UnicodeCharacter.java | 2 +- .../latex/i18n/UnicodeStringParser.java | 2 +- .../writer2latex/latex/i18n/UnicodeTable.java | 2 +- .../writer2latex/latex/util/BeforeAfter.java | 2 +- .../writer2latex/latex/util/HeadingMap.java | 2 +- .../writer2latex/latex/util/StyleMapItem.java | 2 +- source/java/writer2latex/office/CellView.java | 2 +- .../java/writer2latex/office/XMLString.java | 3 +- source/java/writer2latex/util/Base64.java | 2 +- source/java/writer2latex/util/CSVList.java | 2 +- source/java/writer2latex/util/Misc.java | 2 +- .../writer2latex/util/SimpleInputBuffer.java | 2 +- .../xhtml/BatchConverterImpl.java | 3 +- source/java/writer2latex/xhtml/Converter.java | 3 +- .../writer2latex/xhtml/DrawConverter.java | 5 +- .../writer2latex/xhtml/LinkDescriptor.java | 2 +- .../writer2latex/xhtml/TextConverter.java | 8 +- .../java/writer2latex/xhtml/XhtmlConfig.java | 65 +-- .../writer2latex/xhtml/XhtmlDocument.java | 14 +- .../writer2latex/xmerge/OfficeConstants.java | 2 +- .../xmerge/OfficeDocumentException.java | 2 +- source/oxt/writer2latex/OptionPages.xcu | 125 +++++- .../W2LDialogs2/Configuration1.xdl | 14 - .../W2LDialogs2/Configuration2.xdl | 8 - .../W2LDialogs2/ConfigurationRoot.xdl | 15 + .../W2LDialogs2/Documentclass.xdl | 15 + .../oxt/writer2latex/W2LDialogs2/Figures.xdl | 16 + source/oxt/writer2latex/W2LDialogs2/Fonts.xdl | 15 + .../writer2latex/W2LDialogs2/Formatting.xdl | 23 + source/oxt/writer2latex/W2LDialogs2/Pages.xdl | 20 + .../oxt/writer2latex/W2LDialogs2/Styles.xdl | 36 ++ .../oxt/writer2latex/W2LDialogs2/Tables.xdl | 27 ++ .../writer2latex/W2LDialogs2/TextAndMath.xdl | 25 ++ .../oxt/writer2latex/W2LDialogs2/dialog.xlb | 11 +- 50 files changed, 1091 insertions(+), 110 deletions(-) create mode 100644 source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java create mode 100644 source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java delete mode 100644 source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl delete mode 100644 source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Figures.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Fonts.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Formatting.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Pages.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Styles.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/Tables.xdl create mode 100644 source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index 74f0482..ce62479 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,16 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ---------- version 1.1.1 ---------- +[w2x] Use svg:title as alternative text on graphics if svg:desc is not present + +[all] Bugfix: Filtername (Writer2LaTeX/Writer2xhtml) was not displayed in error messages + +[w2x] New option hexadecimal_entities with values true (default) and false. + When this option is set to true, numeric character entities are exported + using hexadecimal numbers, otherwise decimal numbers are used + +[w2x] Export tabs as ASCII TAB rather than space + [w2l] Allow additional characters in bibliography keys (_, - and :) [w2l] Bugfix: Fixed crash when using the option external_bibtex_files diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index bf4212d98b0aae505599ee9312d7d826584ca8b7..9b2ba57e25022e2ffc12bbd3231a9a8426515feb 100644 GIT binary patch delta 44345 zcmZsB19T;AvuCzk98EpQ`Gvs;*kA z_q)3)qY*x~86H7V1{4ep=$`{pgPb=3K?>}jHHiqAD6K~o6b|kmE!6ka7M8vB0+l#=DoP(8!W%V!^>%YZw^tSMy1r zV3f1*(9AiJdD@`){Y6gZhU@JWk5$q!9nkT1nO_i1-)6eM+Mg(LJsQvq_Pgnfg_T4R ze?%U%ZY8!o}7ggX8-lNGvM~@b`~?8U-3+`yqjZ3T%vDdT>Nyl5p^Fg2Tz+ zs!)+<$5ic3pQ>QCTrbiKhZGm=5mG+NAIbZhoE+X-Hzo*4F#{kj6=fiy>cn%wx4)kp z3y}ub$El;(5`$JR>bQG*FV;T=G zC+ceM4@WzbDOY?6a)Hl!EOj)Y5HE2fUAqIe1qL9 z$C-X^AW0Ci^zo{pb>4*(Fb9IImzgKO_p@3%^B!mV!oRRV_J}+eNuUy7gAV)PN%n~R z054}3$LmVWuj$^g_3HnqCvfG=`AtATK@6G-*$ z&QbGmZ|$!DP8iU`%DP3HKlKicc%U|8G=X9P8wA7e_ig87IZKUI*rPE& zS}k(!y(c3!i1;Ic8}?j5yAd!G!YndyrTHzndmWC9-ecYuUaH%62Yx;R# z>+~@$hoZ)LvLORkL0|h}#EPP6)=qVsLKPXEZ$$oH6+^{;*f3OWvb)=vNxen^zVJc# zfdmtL_i54(5XO>S!G!gvJn9}91eNZ#J0TJPJ0JtthHwYJ zJA<60jI;0Js=0#-P)9@lwM!bDww%3pE!E1mhX@wwW`zDvp*GD zdLFxT1`Au^$@%T`^dApCGr%f8)&wRt^jqEll&-%oHxVq{Ykl4P>Jw?)X1vqX%8l(I z7dw}G&a*tRW;A}c*&P)E zv{ObNaB<+90#@_t%0j{6Xv*dPZF*1LpU?c1{h!1{g90T z2&Fv8<7oCyDD=-3ti8XcOL^dMPb-b;mlx9ztQ92Z_*4vdviMeB2UWJJ>A-UC9;He( zHbou4XfIu?3;%Z3A-k*|eWY*%Hs0x*1$M)t3IUn}TAeq~Tq|ntTt9%m6PZ`7Yt_3T zP-)>>&}h#k=VkLYZJAp|A5`}U&UZSCy@PC0E!%UP&_78Em2*1k}lb6sPalhIfl_ET9d34`(>wC$zn(piHHciH>ph#qM8U{Pajn{bHxvleV#R8Gk8uRm9?YeifRSr&|Trf8su?K%)b~8v|J7 zZ{sW7SNJ0`UD`tcOdv520+a;L%>KZuofY?$*o0w=*BQRQyH~y-ibWUs8QPt@N!hw zBNMQuYIk+;mLH$ZWg`D(JaGnHZ!M@jpG+x}-@6(qjv5Uz;=i2@GwpqFzu(SiKRbBJw{=UJB>1CMV zJ5|2z0E&&>+Xe%^^!LJoe=|eg>oJi04@1qwK*&hm>+{1>C@qeP{z?-t$PpzRX3F%h;t!P;%2iC<)xqVe0Rmcv1%}?c;5>H?= zIIgtLqwDuxCltX|tHv7~FJ_LP+4n7Tj`95p>MGZFn`UM|7er%qMq9Sf-l0chIF0tG z=?LtjCm4iPUoU3Htx){D^fx%_lb}-U-WnP^nkEiBU859G^NsNVYko=JPIBi(ON+jp zFih)tuqmvimC}l>**!IQG0)|2vGHE8zhrGRCQbA#kK|b9to{?$`IL=MMySct&7qx} zTT-WI$Ew)hi~CBIk(t;;&Nu7zj1PHNzXi(%&WoTmd!Fwau4LsIv2=br z#_KUM+9po7PJhztIfNOsj&TK6omRLnx})2osc9$!0B^iYz%8fJEoav}B7U%lCBi$0 zD`MtBYHT)reKCATAPVWwY#X}dbUrtlW}cca^5@Lf6`3w?ISY{~5RS#X^`qIfCwPk| zda6}hl7hC99^da5*@2U~$KcovR_M~km85C`HfT)0ryIB1^UJ~{N)882?Ctq>t`jxJ z@U|p?eD20$rf9+4r`dy7xE!g%+xlZh^qu1cG;`e?rlC zyx)WpD8aiN?WeiA@B_c~U}&D1L5m#A_=n&{S(ld^Pbekq&fEJVj|Lq$o`$Rae!Xux zL3W*Wm*?3B3!hDRA1cs-78{07@1&lc0Xmr1@58XSk$;dw5)Md`D3g8}AyaNXUs8om zf}3mswE(=C+&(l_{|eTCiDkh1$gUgii<3S~OvM=KNjSR~ZfbVYPvVuI$AVKxz1)c_ z&f)f%(f}#7!-Sk!@(q9A`($!x=1vP#uf*?99ES~_n zVV8yK9Udd+p(VDIG++|un*GS9fHq;g831Y?SIv^TJY>R^(m16wXrp42a^nk3Li#nu z3U<^AX$uN9az0x5M;qm5yG^`TI$$1`F*4%jGkm`X<6Rb8qZ`kP@e;sa)Y;(j3u!d! zB5l)ko*rYmtGlY(-R^aW@1zs2|EJ)3KCAcer@g0rC-45fn!BFS5^plfDQ~6TT<|4AaWV|= zRP0o_EpnKSWuz54a+y=4vMU^^e2d}AM&XSj)ecJ1$l~{hO2nN`|<3zdp zc#t~l<|YGnztzmz8ZrA-E}$yci`6OeQY>3%WklV^w>f`lExhOhD}otCp($*K1qm%{ zt0_iOXPCUI%Q5d3!5y!(H|oB?flQcsU*a2Qug?VL1fUXRePZDNb(}N( zQh#_u;e|)FGSy~^t~W1KiOJ~$hTvHNJVb>f8&&AIv)^<_e*4K$Q~+*JEMAo9G;2#u zYccdZAO~@ull2C}PrX$AT`>=fucmGW9vimy&Sr@RmaydPM`go|V{#BB^INhiX5E{? z9d7+*%sW{e{POei9N;1D(CGc5e+oCo=R#+GmShJsz}aNSJHQX7ZSMoxt+c0^Ph&*o zm4~uus*4JSlyu+f*!#{Nk%UH2;S!;Hzh=8p zi!1QA$$>(Z!vwd@`UW-SP8avCx4>>(-Nm|E?2d$H0Kd?S`zP4&*e@!nX7vYPNVHMe z8tRtxGLEXZzGvHAX@#cx)pgmG7$R`CWKe6?E2btQ-+s*HfwVSm&F3CTJiqYX1?^)6 zR8NE7)@4yXU4X2B>!OqfLuTGc%)NT|r~r_6;_r=oc89s0I>};Yc zhz9~8?l``RVc}UO()m#+HS~yTf;9JBfb4p>hI~oco?2fSP=(!e{%c-k5KNYU0Epzn zX~^Q&YpWcQtLH6Ne8t!GQ|%i6#kV4d|NY^tnfEBp2)KNP;PdlgHF>n>DxL@Me70== z^cDwP&hRbGX;EMx04`!6{Cv%6ndSYK&dJ`+VP02##P62gv_(5?*#^Ifx7q&(vZbQP zKHw|1)3clwpAUioh;isG&9@4EiyZLnMZUz{>G==DPeEu2>IpsMZQ(!L{Px2Ku1319 zfp$5I^B*mITYW-Pjd3tgY7_W>q5}Ni7XK%<&%*x@#J_?4??@*9@B98Ai~kczd5{4pG^BKtqXMgcq2|&X3zZL&#{|~vM{pY$0mo2t(+oCt| z4*UO)_b}DKlK(bcNsPi^qs^3 zm1ksa`;!Cubbtmw56A}{pxHbw(B0I@qObhSwT2JwP05ogeV4@oAAGM~{oHlQ2)Ev1 zuRgM)OgG*(U7z&7B@LVZB^jFimel$>&2};*l3f9oODUhCcEpr-e6KnHSLS+D+Z$gk z);#AG1FN?!zr0DSY^|a`GQryCe=gNZ17c}yi9a$;+vi7SYNe8C?OWe7huY^U#%iT9 zY3=3SGmF~iL;Gu`(rNAY-YSCI=MOtF&Du*QP50CRnv(2x5A*p}>!)VKOKnRsK^2ab zX(6h6>WuIeBh~sC$}u|KUC%3ROSIBYa#`d5DTm?=9a|dzR7dTk=Y)0TKP2%xv2QRH z;vKa#8=Nr|X#oWwmDrPixL<=*~%;pWaA>Hwd=;f0v3{iv;qWf$^0=Drb3-!~z zCyisf-EF_x#1DxYdIE7ILzKxux4)~tV%#MQ1P=wibgt~@ZwEE75rBDjJ`?JRTE}Hf zFOtvzKs9?3*aEtKc-(Mf{AOJD!~&r5vT|y+^?*uJKxWoHV=PdMGkt%s0TbZ5SGWst z1k1$vm;ik7I320jmo0K~V#yC4Q?+LevT~N30ks}_-Rc%P9u@g|$`7FevSI95z#6K4jFr$a)K|~owvVdv0TY;(=XG;?RScA>hgj+7Y0@=YA+(1(Nd!8ot9APTS zy~7LFhijnBxZw$}Cm%L9&&*cYWz51S@ zce87jEO+>vSlqRGfH6QS*2n$!Fq9HW_N-_;SHg7&ZdB^`hcB$U^^>NZuN16O!1XTR z>MLx4kNf0vul5W0tKG#9Noe2K(GQf9;?6fP9e@@a7b+;^@MqnDaF|Ky2+oBvKwwx> z-{wph;+N%doUve=s4U3NsIYtS^bAO_F)}H|8 zg8moLI`U=?rb}Lq!+BY$)3TTdgANJc-QFcFgR6CM>1^C4L?XD88Ip{f!6R4`X7Nu9 zOzaLl94`1&+I4qOA@FrrF=&*b>T?XQKlfn!KABG%NmqX46);Y$D4C~jr-O0fi*C6P zY7INm2FRsY2@>k%Mx=uQM2iGeCdpbDbmry)xLiW@Aeh|ONnpuXn^EB5{YfC8WGwv~ zo&O{9`Uda+0PSzE`w#f>4Q{`|9G($$GG!bAmyEtiNMB~~1)Ns9Z*yRSE;{jnpir%# zbw!cHl)*lFBsvWC`eW>1+y*)gZDrfnx@AxmVaTsxBwO6Cq@e_msj+gf_laiAAPgQJ z?Uz$nX9PeyHmBIe9%eU6B*l59j-SEC;}KT=DVfSn_!@V14C|whrbbsKA468HMQ`cB z;~H)6R&M>45m#0LACUVA9m?!eV&}$HhsB@5Zudz|bi=!k+pMeBor&n~@j!Z)&eckG zshvNs2Q6;ee%7TI3P3t6K-|vm&)~MIM&T{+b9FLbZ^;5zIdR55%;ex!+sB)G}#|Ot&VNX z80XZt+=pS#2z4c_N+N6T|8*~6%R?X zczycd9hJdC4K28W9neI(8X@wfi3WPv_WbGL5_e$kv0P8G0fg6xjz*5Yk+!Y9C9Vm8 zUEZHJ9vu=N=|l4YBIBQ}vH0D-9{d~g-ID~$jg#Oy((N+8A*$As^&F?(&6)KfR0U}~ zaSVT;19G$PX#mSys@--gWBbMYO)U%vO>ws}o}Z1DR2WkLZrIVbVTAlyMgp!*(9u6=GUjL@j@#qqoN2q@A0*GE6L3kxY2*0`<=Tu(tqags+tNPJ{sy`jKM zqtrqY4(|x3jlkUty}_Cqv2(o0$D)gTl{^E9 zYS97zZD3&F3b?!Ky{yy`Gb2%8k&~9rHpV6-Q5i1tR+gjlKf~NxX!OrT8xmJmoeNHv zsdxd-^ZX%C9o4(^d2>&c7n`TZFuj*mnNL@Mpy3qLG5X-n=RJ_?X$jHPoPte|}PINetk8L|ra`p&L-Vb(=2(N{SLxE7T?_Q$aAQNpR3@dE*O>9k0jO zNGNg((N9J}oPn!oN=*7A2@Lm~**oOS+ZndYTP7Uk8J%>#ZJiu0gTU*NjDfFRlJl2@ z0Wpv;B9ip{dss+ALa%Yu>agun4c`kn10%D1SVS^pHl)83P{=kPEpFX_&8@a&20AyS z_Jn5n{FR;Nu#O0_BOhc*jQViCO$iJMOR8tM;502=M#u?Pg3KvJJFPL9k|<3h8WY9ZVNlH!?CdD$dkEiy`!xzC^0i6_E41{bAwy-fkQ#KcfJl6 zVn+T*9)GmqP2(ZZ{PMH`Nb*+^#yY>QDXv8@pLV1)YjIvlGa`_sp{j#07sxUM1o%He zFKP6_Z2N{yklb&sOxRs;%@SLh5n$U?(oO~ip|Y7F*t0#^@|a@};{U|yP>yLV3-Iq; zV!Rwz;m$t&<~j-59Bd*EUPGbGubeyiDdl|-p^=NKo4Ext&LngPSO?}ym=UhI9t@k? zX^z7?e7`hAim;wln@IA_iBnPbtb#UjTgl1<-waFef7uD}4Th>9@ij3~0cH{ z0o{ZkuZmKVMcmLxA&xqrfFqfI47}2b@vG%d2L(F;f9Ln$6>OeXO zbTYj;P%HikfVJ;_2K#jYUOJn+{}8?EWh7?5$bl-{#j_a!O^$1&9QWquVEf|l_?U|B zh9mKn( zbl+dY2`(Vrf9oY!0<(zI{poEkLHXFRy!zJvM9QIZ0&s|a2W3Txb3ahd89Q@-sYbCu zE_CBBP)JG}brU+6^`mqpIzwf#a|{f4IN!6{h>)~`2+Hqj$Z>x0-f zvPv#=;04ge)9;PndL0&lplv|2*cIFuBVdw7OYJs8Qi8A#r`xf^X^|l}UUb%};|(|i z(>0so0$!?1s$B8MO2^F3m{*l_GHgeKr#XRGfvQ;Bg4WQevfVOvVV`-x#;+RRm2lpf zMEMHu1mQvco^^KS6_LpsW)M$Gj6>_+ZIicoGi0KHG{gaI2{KaJ;DsQki-T3E_jgFZ zxQtd7=hqm2eRS=hivkPMveIP1ReCh;SGyuEVY?{?~(OJ989@MibGHnhB~%gc(kzNU|XztGte!^!;%am9q|c zNR%EKz7TLtK`}Y3<7S!v?s5@uXegVXLGOH>OiInvueIGU$I~7jjy14h_EVTk5Agx0 zt}FGZUwaTvGG{+OC@LsQwH z`G$nKYF9mZC}i9eqlI?Og{R#pPaVZR^hYVr4`~1zQ$@@Y9OjwwybVzH#Ln{Z zt7J@me6PJZ^%;iN#Adu1mSRem5W=dIZz&+GN9&A+MunqQDw=o~J)&2v9y&9A>rd(swVI6M|v z{g)K9m=Z#jH+vijZQuVRa=w_JYI~PXvXpAEA$b%_^UPRYg4~v)99vf!-sZw^k`e%f zY@i2pD^^*o+NPT)c`p(3JeX}W*y8lvg8juRT01gnka_Rwvb>PkW}$P9=#-$uF6B%b~owOe$7hf;g|4gkYsRC6cI{N*}^9}^5KT9OKN}?8uUVC#VMPOqn=;^Koeq1Mc^wf zurvUcXtvJ5$Lkyt@X8kHlxqQKw@-q_l}UjcBJkIJp&xnEL*%>HwM9f zD2l&WsEWoZkU*-_74>oH2a4WDN{L==57!pUQ8bD6p)dAfHPuX$ zo6%TNiZlyX@#<=z-i|0UQsKg3{ZJjX@ zc+lzY!N!m^nBq)kf}5t@2m*(5_NVN}9mko=mH$XbfAHY&fLK*btP?s%HbL_q{sd2bKKooWPM zw|+OSlTA^mS%huIM}B|SzCyDPC4#x|<;GupPgQ_QXTZ*;1~6~X9AV4`aWpsFN4yj@ z_#shT^*Et22-VgN|AnF#h;WtfjMJ0VEX!>n5tc}3QDr>bFe-Bou*t%2>QIEVgvisx z0FQahYCP?ymM20|#A*CKnehN~2_zONBTRJe49?KVKu9Z_Oj(&Vb-2V7#zKhfDadxlUwBw_6>Up^Zm#EmowS*Vp73GS%gVMFHHo7CY8Dqueh4 zmRfUmrao5MaIjyN>UELyv1f%~_~e+@96o^lgKg-ae$sO!ylC%?lzlgS`FTXI2*b$l zljHA0dA{C6GIDswM^1ijt%UW&58Gm`z6{GoF&!)%-O)$e5>1FE&j<0cu2hk5de~3> zX^~jWj+_T`>gT=Yuq!3-rv4a&z1ZG>OiSuN*D`ldrjTN-k$)WgKE z=keG`{gr;wtZ&tnoHY2p#@`{(>vzEA)+SDBGn-4}#TZS#>8yeKgpdU+E6a>Vb$F~` zjx;@5BbX!rFDBxs|1wW4n6`=oqB-+)kO-F54)y|4{NTCXp--+~lzM`#T!tUB~^R!cR(^`E%NcjMlx3P!*glkAAL=t1E= z1`}Ff3vVQ;^oM6fw7ijd_DkeL=2(Zmp!vON5yFwpBSTTeO*uR6q4dmIkASjgt`kLo zkDnyl;&6y)Y#QEb&Af=zCIV2|Z7G5s_n%8hJQAX}L`ckJZWoU4iW^BW3%WA`&7H44Y*MnPOo zxL-0@W_ECw&*y-3=NyS2&p_=dOBG%rrL0}nhNsAWyNMelsZk)kpa>AkJ~=gn#zL2z zKr!sXi$10aX@+DNH7Q+-ZXP5sKxt)og&S)bwm}Hd;2fChiRe(I8zHV_W~h{Q&PQUw zqsi&tL|u7WR2viNY-qlDAQ8srX*M&rPS(YWY>~fA@F`Tq7tgY{BAtaXEQ)?B0$ z5DyyKRYbFIK;at?t}aTkgB4y7g()XD+^;@~te~Hjcv8fH;uGqL#YxUzXiDJR8d;%v zZEcO`L<0nM0>V^3&`4#vuaXXbIm0 zH)#xRK<*Z{pB7M#X`(Npoi5xV3eoy212Kkqu^FT`M7yM)b%As-v=ex`3{5M#p-<<0 zf{6{iVc28D+Vm$zMHA-J>Vr>5%B|ZNn=(SMBRpLq4~01%FUaxV_}z|ZBScr5NLRgd zg|avQkZ2gj-NuQsdnFe117qh8Hrt;f(TOf%GK?eKxCj8oiB}5RZsz94F|6i%*_P6E z7bmmXoV3&DIV_p+*eI$WyQB2x{NTz!V}^CLsXy+>EDEAq)qfmai#v!FB2m zlWD>8%&q`hj|4pmY1|PQwh$X?szBu7+9MZfJk1_j4TFu5k-P<1+|A?={u$Xa6+EjQ zWqN0PhiTVj6<)15Gq0#n0THuV5^x7+eFSjBI5UWH#SycN{h0eNyO~YY>@c6L{u~ow z>3P#+Pq|Ym5+~pn-5sxudjexwy{;4RcRqhmNd$mDlti^Gu>mHN5R&1#rwv?%q>tC0 zvZcr^DzdCz2dGVo2qZFPr8iGfuqGtw7m6N542T3~+e@%#t}Z6M6lch;18SqRe892l z1C3*wmUJa2h6S|^!u9J2KShJimStdo!jWX%+DhShESiZ z?MOh+c1{9|As>}#x}h<%JF+cY)efC2`<{~)0n{(uoT=p0V+y(C#~+&YW!!qVkp6V_73=Sl+dgG5xZ9<`%Q;G0HbkRJg6Gk}l<7?RaGJ32za~fm ziaj95gp~yQ!q+sXw?`bg?sW%!80oI!X4CmA z88)B_;xo#+ObF?L19FH{!IAWdYa=pu-7Y~*#KsmO-UTN~Oe{yWG8W10$0u9oR{#nKp$!0__0z6QTRfmFsSHps2 ziJjphj-MN}Niz<4aIbm-gftmbcnvt@Hwtyr-K$9v!G8~z<2y;qWZ4s;5kx8$*PN{i z3qlE?3kxQ(;Bi^=tocNfv^^w6%*`e zXIID#^WZ@ocJZQx_4ov$ug!~bUF(Q}v8>fE`#t*LK!Ji8MW``juT#UL6OH%7`*pFY zC{#16eP9+*o{?T^YJzKyBye2=QUYDBkyT8p6%(O@05 z4SL3{$s8uLv2|?PLN^Er?E0sLXFMV%FynbfY7YnjU~tZ0N--UuT&3__tJHG>vEC}3 zJ5;xhCME^BfjU7@$&;Fb(fQYyP==ob867Jj8@dg4pu9%dI(u#t6|sH#FLa=Ep*7E# z5ix4N-+d5NHwt!U{c%(JGwIV3y;_2Ylz&PkP)sK`?RtxfnqUaKCj5YSXQTbic2gDp zayyth11_wW4WKd-L(zxp$d{bZ24<1NRBLJGpsQKgxwU?>tNnR875d}eg;J;{w7%ht zBrx`ROT+=7mgyv$lmqRm)Lq-0w_dAsvGrD~wY8tLUR%4fUh{rmZfQMQZh0!JwM8c< z*&%T|jg(<7Y^b{5?0)zeg)Ku%Rc>SZ%=rN2tQe5W^oQkkMMMkjTK@F%FtCUu*#UVq z!@;EDgoeCAxKvQ-9Np_82GMY00kxO~Yc~y60fh#N;fSA4NXt{UBOKYMxJX6LfHvqO zhOiLbgfz{j7X*(S`Hl>J0ft-ET;7OB>9zSCVt+RM{Oytnq&{Jblp0m=!yqJmGOfB7 zgc5*yA37d_FhB;(C+;b1WXHmGqgS8U5Xv#T}+*5yo zp7fnQ3~%f-dZ_}PKyodcb9(;yZ)Zx6@G1=4D7l4Wh_&8zbXA8FvsIsIjuCrS?C=jN zJ!*e;M>f*G-m6HC#fLh4R_NjWVMe3nD0#?UxpFD5OmaBHW~N9WbGg+ZX{LQ3bZ|co zc;uyG&AM04#}3o7`#>mQ(^9$+a~>$x6n1peru#q$RlPo(E)EN?d^2jLg}eyWUxUKa z>D9riER|K@^2zD5kwbz+i3R&G_e6^acm8He3Hj`e3`)lP{`GG6uK%92Z24l`r)l;KX+sum~GtZ(-+ zJYj1rt+yWp4}+G(vvF=I6PkC*jLxXNK_*2$nQk~M?WP|D72s2b)UO%Hs;&6Mv3XpA zi`vL-L4s8zJYaqh2vuvTqVp7bPqk1INxySfLhW?of}4k?*B zLDeIY)M{qh1h5#8WvS*(4^(N9oQ2d*+Wymn=drsWNeq2f6DL$l27hRJg1~ANBY`^- zm;J{)c#QvoqTM}ydqV2!l6i+Z3C$(X0|fii5@@F%R(?-#PCS%maV0$l8yiDav*bw? zIIDR*w=1TKfT`9(6v(*gdJ)XeCzro$&4l^S(gz6m>j3UWsy~lm>d^u^evj|2+A+q5 z;@Pz%)laHix)>edh_SZ1D^=}dr!X08CH$@SHSrV zA5j{{sOk&#Ac$&jkb7l()N$k;E~pC}guj?A8hUEjlGU3^teomhC_>ant9`D67@!@w zV2u{HGtvSEK`;TZ1-dn+wkwy10j@1vCBhbedPj5XB`QOn z|CEhu$UQv757$s>ab?4ExkvR9gVCz&WBI8} z;UDs(04o_>VXgJO9bn6zkETt3;|Y*R@q>8eJ;f$tEwHTuhY|VZzU4VGmh6LKzlbhd&BJv`TF;c zz!dG)qofM=_|S6~A7*WBcuVqTi!Gx@s}67#;PebIh&fL9e%}pxZajDi^2fG4lrre7-<`~1SIpY2>|QU|*NPL8rhsOE)mA2~FWK1;MoQta=tBO64tH$`{?pdnpo?5xT;E!U=>UZsKbaxN$&J!#LR(Rk?nk$(+aH8|Qp$M^ zbns8P$AfVQBO}wlf{r9GT}sW$3s8dzoGLMCh}44MlO@W9zVA~7x!jfQ2S+w+NeGdN z8k55So121dV^bQ8r1{tJ%H)}?-TZJiBmLBk%X{2EZ+2_8aNj8yY5q74KFC z-|-55>@v3jU9NF7Xk+>iPqL0)sgRMOWO2*=s~N~5$u=C4*f3}9)Kg}+$jwivBD{Dz z3g}WZamG7klN5X~r+JbXf0ZY^jX_mtO?5OtzTwYDQRK;A_G-XT+Y1ZuZqk0DHZZw$ znD>9Uv%Omf;wm+MDg`9dgI<_jiN}uSdMxWUc+np~ciWIt;n&*b{(uu(wxNe_;$G

IMC1_ZOV_7JoTYN!Ih14{ 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

!oy`vR>(N4!#C3fo|i$oj4quyC8kGU?6^ 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 RMw){jhz43j3-mGe{{iw|%>@7e delta 43995 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 JsDc05{|_Lz$-Dpn diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java index c76cf30..633f5aa 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ByteArrayXStream.java @@ -26,7 +26,7 @@ package org.openoffice.da.comp.w2lcommon.filter; -// This class is based on these java uno adapter classes: +// This class is based on these java uno adapter classes: // com.sun.star.lib.uno.adapter.ByteArrayToXInputStreamAdapter; // com.sun.star.lib.uno.adapter.XOutputStreamToByteArrayAdapter; // See http://go-oo.org/lxr/source/udk/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java index 745a7f5..95c0ac6 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/EPSCleaner.java @@ -29,7 +29,7 @@ package org.openoffice.da.comp.w2lcommon.filter; * See the issue http://qa.openoffice.org/issues/show_bug.cgi?id=25256 * According to this message http://markmail.org/message/dc6rprmtktxuq35v * on dev@openoffice.org the binary data is an EPSI preview in TIFF format - * TODO: Is it possible to avoid this export? + * TODO: Is it possible to avoid this export? */ public class EPSCleaner { diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java index 5af207f..de7459f 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/ExportFilterBase.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2009-04-25) + * Version 1.2 (2009-09-06) * */ @@ -82,7 +82,7 @@ public abstract class ExportFilterBase implements public static final String __implementationName = ""; /** Filter name to include in error messages */ - public static final String __displayName = ""; + public String __displayName = ""; private static XComponentContext xComponentContext = null; protected static XMultiServiceFactory xMSF; @@ -94,7 +94,6 @@ public abstract class ExportFilterBase implements private Object filterData; private XSimpleFileAccess2 sfa2; - /** We need to get the Service Manager from the Component context to * instantiate certain services, hence this constructor. diff --git a/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java b/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java new file mode 100644 index 0000000..daefbcb --- /dev/null +++ b/source/java/org/openoffice/da/comp/w2lcommon/helper/DialogAccess.java @@ -0,0 +1,269 @@ +/************************************************************************ + * + * DialogAccess.java + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Copyright: 2002-2009 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.2 (2009-09-06) + * + */ + +package org.openoffice.da.comp.w2lcommon.helper; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XDialog; +import com.sun.star.beans.XPropertySet; +import com.sun.star.uno.UnoRuntime; + + +/** This class provides some convenient methods to access a uno dialog + */ +public class DialogAccess { + + /** The XDialog containing the controls. The subclass must override this */ + private Object xDialog = null; + + // State of a checkbox + + public static final short CHECKBOX_NOT_CHECKED = 0; + public static final short CHECKBOX_CHECKED = 1; + public static final short CHECKBOX_DONT_KNOW = 2; + + public DialogAccess(XDialog xDialog) { + this.xDialog = xDialog; + } + + ////////////////////////////////////////////////////////////////////////// + // Helpers to access controls in the dialog (to be used by the subclass) + // Note: The helpers fail silently if an exception occurs. Could query the + // the ClassId property for the control type and check that the property + // exists to ensure a correct behaviour in all cases, but as long as the + // helpers are used correctly, this doesn't really matter. + + // Get the properties of a named control in the dialog + public XPropertySet getControlProperties(String sControlName) { + XControlContainer xContainer = (XControlContainer) + UnoRuntime.queryInterface(XControlContainer.class, xDialog); + XControl xControl = xContainer.getControl(sControlName); + XControlModel xModel = xControl.getModel(); + XPropertySet xPropertySet = (XPropertySet) + UnoRuntime.queryInterface(XPropertySet.class, xModel); + return xPropertySet; + } + + + public void setControlEnabled(String sControlName, boolean bEnabled) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Enabled", new Boolean(bEnabled)); + } + catch (Exception e) { + // Will fail if the control does not exist + } + } + + public short getCheckBoxState(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Short) xPropertySet.getPropertyValue("State")).shortValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a checkbox + return CHECKBOX_DONT_KNOW; + } + } + + public boolean getCheckBoxStateAsBoolean(String sControlName) { + return getCheckBoxState(sControlName)==CHECKBOX_CHECKED; + } + + public void setCheckBoxState(String sControlName, short nState) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("State",new Short(nState)); + } + catch (Exception e) { + // will fail if the control does not exist or is not a checkbox or + // nState has an illegal value + } + } + + public void setCheckBoxStateAsBoolean(String sControlName, boolean bChecked) { + setCheckBoxState(sControlName,bChecked ? CHECKBOX_CHECKED : CHECKBOX_NOT_CHECKED); + } + + public String[] getListBoxStringItemList(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String[]) xPropertySet.getPropertyValue("StringItemList"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return new String[0]; + } + } + + public void setListBoxStringItemList(String sControlName, String[] items) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("StringItemList",items); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + } + } + + public short getListBoxSelectedItem(String sControlName) { + // Returns the first selected element in case of a multiselection + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + short[] selection = (short[]) xPropertySet.getPropertyValue("SelectedItems"); + return selection[0]; + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return -1; + } + } + + public void setListBoxSelectedItem(String sControlName, short nIndex) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + short[] selection = new short[1]; + selection[0] = nIndex; + xPropertySet.setPropertyValue("SelectedItems",selection); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box or + // nIndex is an illegal value + } + } + + public short getListBoxLineCount(String sControlName) { + // Returns the first selected element in case of a multiselection + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Short) xPropertySet.getPropertyValue("LineCount")).shortValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box + return 0; + } + } + + public void setListBoxLineCount(String sControlName, short nLineCount) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("LineCount",new Short(nLineCount)); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a list box or + // nLineCount is an illegal value + } + } + + public String getComboBoxText(String sControlName) { + // Returns the text of a combobox + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a combo + return ""; + } + } + + public void setComboBoxText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text", sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a combo box or + // nText is an illegal value + } + } + + public String getTextFieldText(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a text field + return ""; + } + } + + public void setTextFieldText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text",sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a text field + } + } + + public String getFormattedFieldText(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return (String) xPropertySet.getPropertyValue("Text"); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a formatted field + return ""; + } + } + + public void setFormattedFieldText(String sControlName, String sText) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Text",sText); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a formatted field + } + } + + public int getNumericFieldValue(String sControlName) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + return ((Double) xPropertySet.getPropertyValue("Value")).intValue(); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a numeric field + return 0; + } + } + + public void setNumericFieldValue(String sControlName, int nValue) { + XPropertySet xPropertySet = getControlProperties(sControlName); + try { + xPropertySet.setPropertyValue("Value",new Double(nValue)); + } + catch (Exception e) { + // Will fail if the control does not exist or is not a numeric field + } + } + +} \ No newline at end of file diff --git a/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java b/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java index d930b83..44e63c5 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/helper/MessageBox.java @@ -38,7 +38,7 @@ import com.sun.star.frame.XFrame; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; -/** This class provides simple access to a uno awt message box +/** This class provides simple access to a uno awt message box */ public class MessageBox { diff --git a/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java b/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java new file mode 100644 index 0000000..d165f8a --- /dev/null +++ b/source/java/org/openoffice/da/comp/writer2latex/ConfigurationDialog.java @@ -0,0 +1,396 @@ +/************************************************************************ + * + * ConfigurationDialog.java + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Copyright: 2002-2009 by Henrik Just + * + * All Rights Reserved. + * + * Version 1.2 (2009-09-06) + * + */ + +package org.openoffice.da.comp.writer2latex; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URI; +import java.util.Vector; + +import com.sun.star.awt.XControl; +import com.sun.star.awt.XControlContainer; +import com.sun.star.awt.XControlModel; +import com.sun.star.awt.XContainerWindowEventHandler; +import com.sun.star.awt.XDialog; +import com.sun.star.awt.XWindow; +import com.sun.star.beans.XPropertySet; +import com.sun.star.io.NotConnectedException; +import com.sun.star.io.XInputStream; +import com.sun.star.io.XOutputStream; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.ucb.CommandAbortedException; +import com.sun.star.ucb.XSimpleFileAccess2; +import com.sun.star.ui.dialogs.ExecutableDialogResults; +import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.ui.dialogs.XFilePicker; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.util.XStringSubstitution; + +import com.sun.star.lib.uno.helper.WeakBase; +import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter; +import com.sun.star.lib.uno.adapter.XOutputStreamToOutputStreamAdapter; + +import writer2latex.api.Config; +import writer2latex.api.ConverterFactory; + +import org.openoffice.da.comp.w2lcommon.helper.DialogAccess; + +/** This class provides a uno component which implements the configuration + * of Writer2LaTeX. The same component is used for all pages - using the + * dialog title to distinguish between tha pages. + */ +public final class ConfigurationDialog extends WeakBase + implements XServiceInfo, XContainerWindowEventHandler { + + //private XComponentContext xContext; + private XSimpleFileAccess2 sfa2; + private String sConfigFileName = null; + Config config; + private String sTitle = null; + private DialogAccess dlg = null; + + /** The component will be registered under this name. + */ + public static String __serviceName = "org.openoffice.da.writer2latex.ConfigurationDialog"; + + /** The component should also have an implementation name. + */ + public static String __implementationName = "org.openoffice.da.comp.writer2latex.ConfigurationDialog"; + + /** Create a new ConfigurationDialog */ + public ConfigurationDialog(XComponentContext xContext) { + //this.xContext = xContext; + + // Get the SimpleFileAccess service + sfa2 = null; + try { + Object sfaObject = xContext.getServiceManager().createInstanceWithContext( + "com.sun.star.ucb.SimpleFileAccess", xContext); + sfa2 = (XSimpleFileAccess2) UnoRuntime.queryInterface(XSimpleFileAccess2.class, sfaObject); + } + catch (com.sun.star.uno.Exception e) { + // failed to get SimpleFileAccess service (should not happen) + } + + // Create the config file name + XStringSubstitution xPathSub = null; + try { + Object psObject = xContext.getServiceManager().createInstanceWithContext( + "com.sun.star.util.PathSubstitution", xContext); + xPathSub = (XStringSubstitution) UnoRuntime.queryInterface(XStringSubstitution.class, psObject); + sConfigFileName = xPathSub.substituteVariables("$(user)/writer2latex.xml", false); + } + catch (com.sun.star.uno.Exception e) { + // failed to get PathSubstitution service (should not happen) + } + + // Create the configuration + config = ConverterFactory.createConverter("application/x-latex").getConfig(); + } + + // Implement XContainerWindowEventHandler + public boolean callHandlerMethod(XWindow xWindow, Object event, String sMethod) + throws com.sun.star.lang.WrappedTargetException { + XDialog xDialog = (XDialog)UnoRuntime.queryInterface(XDialog.class, xWindow); + sTitle = xDialog.getTitle(); + dlg = new DialogAccess(xDialog); + + try { + if (sMethod.equals("external_event") ){ + return handleExternalEvent(event); + } + else if (sMethod.equals("NoPreambleChange")) { + enableDocumentclassControls(); + return true; + } + else if (sMethod.equals("ExportGeometryChange")) { + enablePagesControls(); + return true; + } + else if (sMethod.equals("ExportHeaderAndFooterChange")) { + enablePagesControls(); + return true; + } + else if (sMethod.equals("NoTablesChange")) { + enableTablesControls(); + return true; + } + else if (sMethod.equals("UseSupertabularChange")) { + enableTablesControls(); + return true; + } + else if (sMethod.equals("UseLongtableChange")) { + enableTablesControls(); + return true; + } + } + catch (com.sun.star.uno.RuntimeException e) { + throw e; + } + catch (com.sun.star.uno.Exception e) { + throw new com.sun.star.lang.WrappedTargetException(sMethod, this, e); + } + return false; + } + + public String[] getSupportedMethodNames() { + String[] sNames = { "external_event", "NoPreambleChange", "ExportGeometryChange", "ExportHeaderAndFooterChange", "NoTablesChange", "UseSupertabularChange", "UseLongtableChange" }; + return sNames; + } + + // Implement the interface XServiceInfo + public boolean supportsService(String sServiceName) { + return sServiceName.equals(__serviceName); + } + + public String getImplementationName() { + return __implementationName; + } + + public String[] getSupportedServiceNames() { + String[] sSupportedServiceNames = { __serviceName }; + return sSupportedServiceNames; + } + + // Private stuff + private boolean handleExternalEvent(Object aEventObject) + throws com.sun.star.uno.Exception { + try { + String sMethod = AnyConverter.toString(aEventObject); + if (sMethod.equals("ok")) { + loadConfig(); + getControls(); + saveConfig(); + return true; + } else if (sMethod.equals("back") || sMethod.equals("initialize")) { + loadConfig(); + setControls(); + return true; + } + } + catch (com.sun.star.lang.IllegalArgumentException e) { + throw new com.sun.star.lang.IllegalArgumentException( + "Method external_event requires a string in the event object argument.", this,(short) -1); + } + return false; + } + + // Load the user configuration from file + private void loadConfig() { + if (sfa2!=null && sConfigFileName!=null) { + try { + XInputStream xIs = sfa2.openFileRead(sConfigFileName); + if (xIs!=null) { + InputStream is = new XInputStreamToInputStreamAdapter(xIs); + config.read(is); + is.close(); + xIs.closeInput(); + } + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } + } + } + + // Save the user configuration + private void saveConfig() { + if (sfa2!=null && sConfigFileName!=null) { + try { + // Remove the file if it exists + if (sfa2.exists(sConfigFileName)) { + sfa2.kill(sConfigFileName); + } + // Then write the new contents + XOutputStream xOs = sfa2.openFileWrite(sConfigFileName); + if (xOs!=null) { + OutputStream os = new XOutputStreamToOutputStreamAdapter(xOs); + config.write(os); + os.close(); + xOs.closeOutput(); + } + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } + } + } + + // Set controls based on the config + private void setControls() { + if ("Documentclass".equals(sTitle)) { + loadDocumentclass(); + } + else if ("Pages".equals(sTitle)) { + loadPages(); + } + else if ("Tables".equals(sTitle)) { + loadTables(); + } + } + + // Change the config based on the controls + private void getControls() { + if ("Documentclass".equals(sTitle)) { + saveDocumentclass(); + } + else if ("Pages".equals(sTitle)) { + savePages(); + } + else if ("Tables".equals(sTitle)) { + saveTables(); + } + } + + // The page "Documentclass" + // This page handles the options no_preamble, documentclass, global_options and the custom-preamble + + private void loadDocumentclass() { + dlg.setCheckBoxStateAsBoolean("NoPreamble","true".equals(config.getOption("no_preamble"))); + dlg.setTextFieldText("Documentclass",config.getOption("documentclass")); + dlg.setTextFieldText("GlobalOptions",config.getOption("global_options")); + //dlg.setTextFieldText("CustomPreamble",config.getLongOption("custom-preamble")); + enableDocumentclassControls(); + } + + private void saveDocumentclass() { + config.setOption("no_preamble", Boolean.toString(dlg.getCheckBoxStateAsBoolean("NoPreamble"))); + config.setOption("documentclass", dlg.getTextFieldText("Documentclass")); + config.setOption("global_options", dlg.getTextFieldText("GlobalOptions")); + //config.setLongOption("custom-preamble", dlg.getTextFieldText("CustomPreamble")); + } + + private void enableDocumentclassControls() { + boolean bPreamble = !dlg.getCheckBoxStateAsBoolean("NoPreamble"); + dlg.setControlEnabled("DocumentclassLabel",bPreamble); + dlg.setControlEnabled("Documentclass",bPreamble); + dlg.setControlEnabled("GlobalOptionsLabel",bPreamble); + dlg.setControlEnabled("GlobalOptions",bPreamble); + dlg.setControlEnabled("CustomPreambleLabel",bPreamble); + dlg.setControlEnabled("CustomPreamble",bPreamble); + } + + // The page "Pages" + // This page handles the options page_formatting, use_geometry, use_fancyhdr, use_lastpage and use_endnotes + + private void loadPages() { + enablePagesControls(); + } + + private void savePages() { + + } + + private void enablePagesControls() { + boolean bExportGeometry = dlg.getCheckBoxStateAsBoolean("ExportGeometry"); + dlg.setControlEnabled("UseGeometry",bExportGeometry); + + boolean bExport = dlg.getCheckBoxStateAsBoolean("ExportHeaderAndFooter"); + dlg.setControlEnabled("UseFancyhdr",bExport); + } + + // The page "Tables" + // This page handles the options table_content, use_tabulary, use_colortbl, use_multirow, use_supertabular, use_longtable, + // table_first_head_style, table_head_style, table_foot_style, table_last_foot_style + // Limitation: Cannot handle the values "error" and "warning" for table_content + + private void loadTables() { + dlg.setCheckBoxStateAsBoolean("NoTables", !"accept".equals(config.getOption("table_content"))); + dlg.setCheckBoxStateAsBoolean("UseTabulary", "true".equals(config.getOption("use_tabulary"))); + //dlg.setCheckBoxStateAsBoolean("UseMultirow", "true".equals(config.getOption("use_multirow"))); + dlg.setCheckBoxStateAsBoolean("UseSupertabular","true".equals(config.getOption("use_supertabular"))); + dlg.setCheckBoxStateAsBoolean("UseLongtable", "true".equals(config.getOption("use_longtable"))); + dlg.setTextFieldText("TableFirstHeadStyle", config.getOption("table_first_head_style")); + dlg.setTextFieldText("TableHeadStyle", config.getOption("table_head_style")); + dlg.setTextFieldText("TableFootStyle", config.getOption("table_foot_style")); + dlg.setTextFieldText("TableLastFootStyle", config.getOption("table_last_foot_style")); + dlg.setTextFieldText("TableSequenceName", config.getOption("table_sequence_name")); + enableTablesControls(); + } + + private void saveTables() { + config.setOption("table_content", dlg.getCheckBoxStateAsBoolean("NoTables") ? "ignore" : "accept"); + config.setOption("use_tabulary", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseTabulary"))); + //config.setOption("use_multirow", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseMultirow"))); + config.setOption("use_supertabular", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseSupertabular"))); + config.setOption("use_longtable", Boolean.toString(dlg.getCheckBoxStateAsBoolean("UseLongtable"))); + config.setOption("table_first_head_style", dlg.getTextFieldText("TableFirstHeadStyle")); + config.setOption("table_head_style", dlg.getTextFieldText("TableHeadStyle")); + config.setOption("table_foot_style", dlg.getTextFieldText("TableFootStyle")); + config.setOption("table_last_foot_style", dlg.getTextFieldText("TableLastFootStyle")); + config.setOption("table_sequence_name", dlg.getTextFieldText("TableSequenceName")); + } + + private void enableTablesControls() { + boolean bNoTables = dlg.getCheckBoxStateAsBoolean("NoTables"); + boolean bSupertabular = dlg.getCheckBoxStateAsBoolean("UseSupertabular"); + boolean bLongtable = dlg.getCheckBoxStateAsBoolean("UseLongtable"); + dlg.setControlEnabled("UseTabulary", !bNoTables); + dlg.setControlEnabled("UseMultirow", false); + dlg.setControlEnabled("UseSupertabular", !bNoTables); + dlg.setControlEnabled("UseLongtable", !bNoTables && !bSupertabular); + dlg.setControlEnabled("TableFirstHeadLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFirstHeadStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableHeadLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableHeadStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFootLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableFootStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableLastFootLabel", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableLastFootStyle", !bNoTables && (bSupertabular || bLongtable)); + dlg.setControlEnabled("TableSequenceLabel", !bNoTables); + dlg.setControlEnabled("TableSequenceName", !bNoTables); + + } + + +} + + + diff --git a/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java b/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java index 330eaea..8d4adc0 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java +++ b/source/java/org/openoffice/da/comp/writer2latex/W2LExportFilter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2008 by Henrik Just + * Copyright: 2002-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -42,7 +42,7 @@ public class W2LExportFilter extends ExportFilterBase { public static final String __implementationName = "org.openoffice.da.comp.writer2latex.W2LExportFilter"; /** Filter name to include in error messages */ - public static final String __displayName = "Writer2LaTeX"; + public final String __displayName = "Writer2LaTeX"; public W2LExportFilter(XComponentContext xComponentContext1) { super(xComponentContext1); diff --git a/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java b/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java index c67b7d7..c1cda7d 100644 --- a/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java +++ b/source/java/org/openoffice/da/comp/writer2latex/W2LRegistration.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2008 by Henrik Just + * Copyright: 2002-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -78,6 +78,12 @@ public class W2LRegistration { multiFactory, regKey); } + else if (implName.equals(ConfigurationDialog.__implementationName)) { + xSingleServiceFactory = FactoryHelper.getServiceFactory(ConfigurationDialog.class, + ConfigurationDialog.__serviceName, + multiFactory, + regKey); + } return xSingleServiceFactory; } @@ -97,7 +103,9 @@ public class W2LRegistration { FactoryHelper.writeRegistryServiceInfo(LaTeXOptionsDialog.__implementationName, LaTeXOptionsDialog.__serviceName, regKey) & FactoryHelper.writeRegistryServiceInfo(W2LStarMathConverter.__implementationName, - W2LStarMathConverter.__serviceName, regKey); + W2LStarMathConverter.__serviceName, regKey) & + FactoryHelper.writeRegistryServiceInfo(ConfigurationDialog.__implementationName, + ConfigurationDialog.__serviceName, regKey); } } diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java b/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java index 0278890..1f59f07 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/W2XExportFilter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2008 by Henrik Just + * Copyright: 2002-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-07-21) + * Version 1.2 (2009-09-06) * */ @@ -42,7 +42,7 @@ public class W2XExportFilter extends ExportFilterBase { public static final String __implementationName = "org.openoffice.da.comp.writer2xhtml.W2XExportFilter"; /** Filter name to include in error messages */ - public static final String __displayName = "Writer2xhtml"; + public final String __displayName = "Writer2xhtml"; public W2XExportFilter(XComponentContext xComponentContext1) { super(xComponentContext1); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index e65aedb..a5b3483 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.1"; - private static final String DATE = "2008-08-31"; + private static final String DATE = "2008-09-07"; /** Return version information * @return the Writer2LaTeX version in the form diff --git a/source/java/writer2latex/api/GraphicConverter.java b/source/java/writer2latex/api/GraphicConverter.java index 8ccb426..b1ce03b 100644 --- a/source/java/writer2latex/api/GraphicConverter.java +++ b/source/java/writer2latex/api/GraphicConverter.java @@ -27,7 +27,7 @@ package writer2latex.api; /** A simple interface for a graphic converter which converts between various - * graphics formats + * graphics formats */ public interface GraphicConverter { diff --git a/source/java/writer2latex/api/IndexPageEntry.java b/source/java/writer2latex/api/IndexPageEntry.java index 6d28423..8f9f28c 100644 --- a/source/java/writer2latex/api/IndexPageEntry.java +++ b/source/java/writer2latex/api/IndexPageEntry.java @@ -26,7 +26,7 @@ package writer2latex.api; -/** This class represents a single entry on an index page created by a batch converter +/** This class represents a single entry on an index page created by a batch converter */ public class IndexPageEntry { diff --git a/source/java/writer2latex/base/Option.java b/source/java/writer2latex/base/Option.java index 458ef50..c5443c3 100644 --- a/source/java/writer2latex/base/Option.java +++ b/source/java/writer2latex/base/Option.java @@ -26,7 +26,7 @@ package writer2latex.base; -// The mother of all options; reads and writes string values +// The mother of all options; reads and writes string values public class Option { protected String sValue; private String sName; diff --git a/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java b/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java index 1e6a05f..f7c1d7d 100644 --- a/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java +++ b/source/java/writer2latex/latex/i18n/ReplacementTrieNode.java @@ -26,7 +26,7 @@ package writer2latex.latex.i18n; -/** This class contains a node in a trie of string -> LaTeX code replacements +/** This class contains a node in a trie of string -> LaTeX code replacements */ public class ReplacementTrieNode { diff --git a/source/java/writer2latex/latex/i18n/UnicodeCharacter.java b/source/java/writer2latex/latex/i18n/UnicodeCharacter.java index 7e8217e..aa34938 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeCharacter.java +++ b/source/java/writer2latex/latex/i18n/UnicodeCharacter.java @@ -26,7 +26,7 @@ package writer2latex.latex.i18n; -// Helper class: A struct to hold the LaTeX representations of a unicode character +// Helper class: A struct to hold the LaTeX representations of a unicode character class UnicodeCharacter implements Cloneable { final static int NORMAL = 0; // this is a normal character final static int COMBINING = 1; // this character should be ignored diff --git a/source/java/writer2latex/latex/i18n/UnicodeStringParser.java b/source/java/writer2latex/latex/i18n/UnicodeStringParser.java index 1a7b037..f437152 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeStringParser.java +++ b/source/java/writer2latex/latex/i18n/UnicodeStringParser.java @@ -29,7 +29,7 @@ package writer2latex.latex.i18n; // Helper class: Parse a unicode string. // Note: Some 8-bit fonts have additional "spacer" characters that are used // for manual placement of accents. These are ignored between the base character -// and the combining character, thus we are parsing according to the rule +// and the combining character, thus we are parsing according to the rule // * ? class UnicodeStringParser { private UnicodeTable table; // the table to use diff --git a/source/java/writer2latex/latex/i18n/UnicodeTable.java b/source/java/writer2latex/latex/i18n/UnicodeTable.java index d7d3893..3158aeb 100644 --- a/source/java/writer2latex/latex/i18n/UnicodeTable.java +++ b/source/java/writer2latex/latex/i18n/UnicodeTable.java @@ -18,7 +18,7 @@ * * Copyright: 2002-2007 by Henrik Just * - * All Rights Reserved. + * All Rights Reserved. * * Version 0.5 (2007-07-24) * diff --git a/source/java/writer2latex/latex/util/BeforeAfter.java b/source/java/writer2latex/latex/util/BeforeAfter.java index 3cd211e..c87c8c1 100644 --- a/source/java/writer2latex/latex/util/BeforeAfter.java +++ b/source/java/writer2latex/latex/util/BeforeAfter.java @@ -26,7 +26,7 @@ package writer2latex.latex.util; -/** Utility class to hold LaTeX code to put before/after other LaTeX code +/** Utility class to hold LaTeX code to put before/after other LaTeX code */ public class BeforeAfter { private String sBefore=""; diff --git a/source/java/writer2latex/latex/util/HeadingMap.java b/source/java/writer2latex/latex/util/HeadingMap.java index 2637c75..4fc6b03 100644 --- a/source/java/writer2latex/latex/util/HeadingMap.java +++ b/source/java/writer2latex/latex/util/HeadingMap.java @@ -27,7 +27,7 @@ package writer2latex.latex.util; /** This class contains data for the mapping of OOo headings to LaTeX headings. - A LaTeX heading is characterized by a name and a level. + A LaTeX heading is characterized by a name and a level. The heading is inserted with \name{...} or \name[...]{...} The headings are supposed to be "normal" LaTeX headings, ie. the names are also counter names, and the headings diff --git a/source/java/writer2latex/latex/util/StyleMapItem.java b/source/java/writer2latex/latex/util/StyleMapItem.java index a4ecb61..8055b5c 100644 --- a/source/java/writer2latex/latex/util/StyleMapItem.java +++ b/source/java/writer2latex/latex/util/StyleMapItem.java @@ -26,7 +26,7 @@ package writer2latex.latex.util; -// A struct to hold data about a style map +// A struct to hold data about a style map class StyleMapItem { String sBefore; String sAfter; diff --git a/source/java/writer2latex/office/CellView.java b/source/java/writer2latex/office/CellView.java index 62aefbc..c132f91 100644 --- a/source/java/writer2latex/office/CellView.java +++ b/source/java/writer2latex/office/CellView.java @@ -29,7 +29,7 @@ package writer2latex.office; import org.w3c.dom.Element; /** - * This class represent a cell in a table view

+ * This class represent a cell in a table view */ public class CellView { public Element cell = null; diff --git a/source/java/writer2latex/office/XMLString.java b/source/java/writer2latex/office/XMLString.java index 0b259d9..f9b158e 100644 --- a/source/java/writer2latex/office/XMLString.java +++ b/source/java/writer2latex/office/XMLString.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2009-03-27) + * Version 1.2 (2009-09-07) * */ @@ -440,6 +440,7 @@ public class XMLString { // svg namespace public static final String SVG_DESC="svg:desc"; + public static final String SVG_TITLE="svg:title"; public static final String SVG_FONT_FAMILY="svg:font-family"; // oasis (font declarations only) public static final String SVG_X="svg:x"; diff --git a/source/java/writer2latex/util/Base64.java b/source/java/writer2latex/util/Base64.java index 39d77a0..6f2d03c 100644 --- a/source/java/writer2latex/util/Base64.java +++ b/source/java/writer2latex/util/Base64.java @@ -1,5 +1,5 @@ /** - * This is Robert Harders public domain Base64 class. It is unmodified, except for the package name. + * This is Robert Harders public domain Base64 class. It is unmodified, except for the package name. * *

Encodes and decodes to and from Base64 notation.

*

Homepage: http://iharder.net/base64.

diff --git a/source/java/writer2latex/util/CSVList.java b/source/java/writer2latex/util/CSVList.java index 858286d..b232f14 100644 --- a/source/java/writer2latex/util/CSVList.java +++ b/source/java/writer2latex/util/CSVList.java @@ -26,7 +26,7 @@ package writer2latex.util; -// Create a list of values separated by commas or another seperation character +// Create a list of values separated by commas or another seperation character public class CSVList{ private String sSep; private String sNameValueSep; diff --git a/source/java/writer2latex/util/Misc.java b/source/java/writer2latex/util/Misc.java index d368585..41b3813 100644 --- a/source/java/writer2latex/util/Misc.java +++ b/source/java/writer2latex/util/Misc.java @@ -39,7 +39,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.NamedNodeMap; -// This class contains some usefull, but unrelated static methods +// This class contains some usefull, but unrelated static methods public class Misc{ private final static int BUFFERSIZE = 1024; diff --git a/source/java/writer2latex/util/SimpleInputBuffer.java b/source/java/writer2latex/util/SimpleInputBuffer.java index a511577..60c7062 100644 --- a/source/java/writer2latex/util/SimpleInputBuffer.java +++ b/source/java/writer2latex/util/SimpleInputBuffer.java @@ -27,7 +27,7 @@ package writer2latex.util; /** This class provides a simple string input buffer; it can be used as the - * basis of a tokenizer. + * basis of a tokenizer. */ public class SimpleInputBuffer { diff --git a/source/java/writer2latex/xhtml/BatchConverterImpl.java b/source/java/writer2latex/xhtml/BatchConverterImpl.java index 4cbe639..eb25912 100644 --- a/source/java/writer2latex/xhtml/BatchConverterImpl.java +++ b/source/java/writer2latex/xhtml/BatchConverterImpl.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-02-08) + * Version 1.2 (2009-09-05) * */ @@ -94,6 +94,7 @@ public class BatchConverterImpl extends BatchConverterBase { htmlDoc.setNoDoctype(config.xhtmlNoDoctype()); htmlDoc.setAddBOM(config.xhtmlAddBOM()); htmlDoc.setUseNamedEntities(config.useNamedEntities()); + htmlDoc.setHexadecimalEntities(config.hexadecimalEntities()); if (template!=null) { htmlDoc.readFromTemplate(template); } else { htmlDoc.createHeaderFooter(); } diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 8297178..c0b31b4 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2009-05-29) + * Version 1.2 (2009-09-05) * */ @@ -446,6 +446,7 @@ public class Converter extends ConverterBase { htmlDoc.setNoDoctype(config.xhtmlNoDoctype()); htmlDoc.setAddBOM(config.xhtmlAddBOM()); htmlDoc.setUseNamedEntities(config.useNamedEntities()); + htmlDoc.setHexadecimalEntities(config.hexadecimalEntities()); htmlDoc.setXsltPath(config.getXsltPath()); if (template!=null) { htmlDoc.readFromTemplate(template); } else if (bNeedHeaderFooter) { htmlDoc.createHeaderFooter(); } diff --git a/source/java/writer2latex/xhtml/DrawConverter.java b/source/java/writer2latex/xhtml/DrawConverter.java index 1bc9060..395ac60 100644 --- a/source/java/writer2latex/xhtml/DrawConverter.java +++ b/source/java/writer2latex/xhtml/DrawConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-03-08) + * Version 1.0 (2009-09-07) * */ @@ -391,6 +391,9 @@ public class DrawConverter extends ConverterHelper { // Add alternative text, using either alt.text, name or file name Element frame = getFrame(onode); Element desc = Misc.getChildByTagName(frame,XMLString.SVG_DESC); + if (desc==null) { + desc = Misc.getChildByTagName(frame,XMLString.SVG_TITLE); + } String sAltText = desc!=null ? Misc.getPCDATA(desc) : (sName!=null ? sName : sFileName); image.setAttribute("alt",sAltText); diff --git a/source/java/writer2latex/xhtml/LinkDescriptor.java b/source/java/writer2latex/xhtml/LinkDescriptor.java index 26e3ffc..8672e6c 100644 --- a/source/java/writer2latex/xhtml/LinkDescriptor.java +++ b/source/java/writer2latex/xhtml/LinkDescriptor.java @@ -30,7 +30,7 @@ import org.w3c.dom.Element; /** * Helper class (a struct) to contain information about a Link (used to manage - * links to be resolved later) + * links to be resolved later) */ final class LinkDescriptor { Element element; // the a-element diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index bcd603b..c379dc5 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-03-10) + * Version 1.0 (2009-09-05) * */ @@ -1456,16 +1456,16 @@ public class TextConverter extends ConverterHelper { } private void handleTabStop(Node onode, Node hnode) { - // xhtml does not have tab stops, we export a space, which the + // xhtml does not have tab stops, but we export and ASCII TAB character, which the // user may choose to format if (config.getXhtmlTabstopStyle().length()>0) { Element span = converter.createElement("span"); hnode.appendChild(span); span.setAttribute("class",config.getXhtmlTabstopStyle()); - span.appendChild(converter.createTextNode(" ")); + span.appendChild(converter.createTextNode("\t")); } else { - hnode.appendChild(converter.createTextNode(" ")); + hnode.appendChild(converter.createTextNode("\t")); } } diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index 06896f6..b82e98f 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2008 by Henrik Just + * Copyright: 2002-2009 by Henrik Just * * All Rights Reserved. * - * Version 1.0 (2008-11-14) + * Version 1.2 (2009-09-05) * */ @@ -38,7 +38,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 36; } + protected int getOptionCount() { return 37; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -65,34 +65,35 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int ADD_BOM = 5; private static final int ENCODING = 6; private static final int USE_NAMED_ENTITIES = 7; - private static final int CUSTOM_STYLESHEET = 8; - private static final int FORMATTING = 9; - private static final int FRAME_FORMATTING = 10; - private static final int SECTION_FORMATTING = 11; - private static final int TABLE_FORMATTING = 12; - private static final int IGNORE_TABLE_DIMENSIONS = 13; - private static final int USE_DUBLIN_CORE = 14; - private static final int NOTES = 15; - private static final int CONVERT_TO_PX = 16; - private static final int SCALING = 17; - private static final int COLUMN_SCALING = 18; - private static final int FLOAT_OBJECTS = 19; - private static final int TABSTOP_STYLE = 20; - private static final int USE_LIST_HACK = 21; - private static final int SPLIT_LEVEL = 22; - private static final int REPEAT_LEVELS = 23; - private static final int CALC_SPLIT = 24; - private static final int DISPLAY_HIDDEN_SHEETS = 25; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 26; - private static final int DISPLAY_FILTERED_ROWS_COLS = 27; - private static final int APPLY_PRINT_RANGES = 28; - private static final int USE_TITLE_AS_HEADING = 29; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 30; - private static final int XSLT_PATH = 31; - private static final int SAVE_IMAGES_IN_SUBDIR = 32; - private static final int UPLINK = 33; - private static final int DIRECTORY_ICON = 34; - private static final int DOCUMENT_ICON = 35; + private static final int HEXADECIMAL_ENTITIES = 8; + private static final int CUSTOM_STYLESHEET = 9; + private static final int FORMATTING = 10; + private static final int FRAME_FORMATTING = 11; + private static final int SECTION_FORMATTING = 12; + private static final int TABLE_FORMATTING = 13; + private static final int IGNORE_TABLE_DIMENSIONS = 14; + private static final int USE_DUBLIN_CORE = 15; + private static final int NOTES = 16; + private static final int CONVERT_TO_PX = 17; + private static final int SCALING = 18; + private static final int COLUMN_SCALING = 19; + private static final int FLOAT_OBJECTS = 20; + private static final int TABSTOP_STYLE = 21; + private static final int USE_LIST_HACK = 22; + private static final int SPLIT_LEVEL = 23; + private static final int REPEAT_LEVELS = 24; + private static final int CALC_SPLIT = 25; + private static final int DISPLAY_HIDDEN_SHEETS = 26; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 27; + private static final int DISPLAY_FILTERED_ROWS_COLS = 28; + private static final int APPLY_PRINT_RANGES = 29; + private static final int USE_TITLE_AS_HEADING = 30; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 31; + private static final int XSLT_PATH = 32; + private static final int SAVE_IMAGES_IN_SUBDIR = 33; + private static final int UPLINK = 34; + private static final int DIRECTORY_ICON = 35; + private static final int DOCUMENT_ICON = 36; protected XhtmlStyleMap xpar = new XhtmlStyleMap(); protected XhtmlStyleMap xtext = new XhtmlStyleMap(); @@ -111,6 +112,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { options[ADD_BOM] = new BooleanOption("add_bom","false"); options[ENCODING] = new Option("encoding","UTF-8"); options[USE_NAMED_ENTITIES] = new BooleanOption("use_named_entities","false"); + options[HEXADECIMAL_ENTITIES] = new BooleanOption("hexadecimal_entities","true"); options[CUSTOM_STYLESHEET] = new Option("custom_stylesheet",""); options[FORMATTING] = new XhtmlFormatOption("formatting","convert_all"); options[FRAME_FORMATTING] = new XhtmlFormatOption("frame_formatting","convert_all"); @@ -216,6 +218,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public boolean xhtmlAddBOM() { return ((BooleanOption) options[ADD_BOM]).getValue(); } public String xhtmlEncoding() { return options[ENCODING].getString(); } public boolean useNamedEntities() { return ((BooleanOption) options[USE_NAMED_ENTITIES]).getValue(); } + public boolean hexadecimalEntities() { return ((BooleanOption) options[HEXADECIMAL_ENTITIES]).getValue(); } public String xhtmlCustomStylesheet() { return options[CUSTOM_STYLESHEET].getString(); } public int xhtmlFormatting() { return ((XhtmlFormatOption) options[FORMATTING]).getValue(); } public int xhtmlFrameFormatting() { return ((XhtmlFormatOption) options[FRAME_FORMATTING]).getValue(); } diff --git a/source/java/writer2latex/xhtml/XhtmlDocument.java b/source/java/writer2latex/xhtml/XhtmlDocument.java index c1a4367..4d3b276 100644 --- a/source/java/writer2latex/xhtml/XhtmlDocument.java +++ b/source/java/writer2latex/xhtml/XhtmlDocument.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.0 (2009-05-29) + * Version 1.2 (2009-09-05) * */ @@ -82,6 +82,7 @@ public class XhtmlDocument extends DOMDocument { // Configuration private String sEncoding = "UTF-8"; private boolean bUseNamedEntities = false; + private boolean bHexadecimalEntities = true; private char cLimit = 65535; private boolean bNoDoctype = false; private boolean bAddBOM = false; @@ -292,6 +293,10 @@ public class XhtmlDocument extends DOMDocument { bUseNamedEntities = b; } + public void setHexadecimalEntities(boolean b) { + bHexadecimalEntities = b; + } + public void setXsltPath(String s) { sXsltPath = s; } public String getFileExtension() { return super.getFileExtension(); } @@ -474,7 +479,12 @@ public class XhtmlDocument extends DOMDocument { } } if (c>cLimit) { - osw.write("&#x"+Integer.toHexString(c).toUpperCase()+";"); + if (bHexadecimalEntities) { + osw.write("&#x"+Integer.toHexString(c).toUpperCase()+";"); + } + else { + osw.write("&#"+Integer.toString(c).toUpperCase()+";"); + } } else { osw.write(c); diff --git a/source/java/writer2latex/xmerge/OfficeConstants.java b/source/java/writer2latex/xmerge/OfficeConstants.java index 37ca471..2fb0af1 100644 --- a/source/java/writer2latex/xmerge/OfficeConstants.java +++ b/source/java/writer2latex/xmerge/OfficeConstants.java @@ -42,7 +42,7 @@ package writer2latex.xmerge; /** * This interface contains constants for StarOffice XML tags, - * attributes (StarCalc cell types, etc.). + * attributes (StarCalc cell types, etc.). * * @author Herbie Ong, Paul Rank, Martin Maher */ diff --git a/source/java/writer2latex/xmerge/OfficeDocumentException.java b/source/java/writer2latex/xmerge/OfficeDocumentException.java index f3549a3..c03cfb4 100644 --- a/source/java/writer2latex/xmerge/OfficeDocumentException.java +++ b/source/java/writer2latex/xmerge/OfficeDocumentException.java @@ -52,7 +52,7 @@ import org.xml.sax.SAXParseException; /** * Used by OfficeDocument to encapsulate exceptions. It will add * more details to the message string if it is of type - * SAXParseException. + * SAXParseException. * * @author Herbie Ong */ diff --git a/source/oxt/writer2latex/OptionPages.xcu b/source/oxt/writer2latex/OptionPages.xcu index 755a7d5..784473b 100644 --- a/source/oxt/writer2latex/OptionPages.xcu +++ b/source/oxt/writer2latex/OptionPages.xcu @@ -17,52 +17,155 @@ + + - org.openoffice.da.writer2latex.configuration + org.openoffice.da.writer2latex/configuration Writer2LaTeX - %origin%/W2LDialogs2/Configuration1.xdl + %origin%/W2LDialogs2/ConfigurationRoot.xdl org.openoffice.da.writer2latex.ConfigurationDialog + - + + - org.openoffice.da.writer2latex.configuration.subpage1 + org.openoffice.da.writer2latex/configuration/documentclass - Subpage + Documentclass - %origin%/W2LDialogs2/Configuration2.xdl + %origin%/W2LDialogs2/Documentclass.xdl org.openoffice.da.writer2latex.ConfigurationDialog - - org.openoffice.da.writer2latex.configuration.subpage2 + org.openoffice.da.writer2latex.configuration.styles - Subpage + Styles - %origin%/W2LDialogs2/Configuration1.xdl + %origin%/W2LDialogs2/Styles.xdl org.openoffice.da.writer2latex.ConfigurationDialog - + + + + org.openoffice.da.writer2latex.configuration.formatting + + + Formatting + + + %origin%/W2LDialogs2/Formatting.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.fonts + + + Fonts + + + %origin%/W2LDialogs2/Fonts.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.pages + + + Pages + + + %origin%/W2LDialogs2/Pages.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.tables + + + Tables + + + %origin%/W2LDialogs2/Tables.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.figures + + + Figures + + + %origin%/W2LDialogs2/Figures.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + + + org.openoffice.da.writer2latex.configuration.textandmath + + + Text and math + + + %origin%/W2LDialogs2/TextAndMath.xdl + + + org.openoffice.da.writer2latex.ConfigurationDialog + + + + diff --git a/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl b/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl deleted file mode 100644 index 6a0367b..0000000 --- a/source/oxt/writer2latex/W2LDialogs2/Configuration1.xdl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl b/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl deleted file mode 100644 index 0fac530..0000000 --- a/source/oxt/writer2latex/W2LDialogs2/Configuration2.xdl +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl b/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl new file mode 100644 index 0000000..817f307 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/ConfigurationRoot.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl b/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl new file mode 100644 index 0000000..92258d9 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Documentclass.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Figures.xdl b/source/oxt/writer2latex/W2LDialogs2/Figures.xdl new file mode 100644 index 0000000..1cdf349 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Figures.xdl @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl b/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl new file mode 100644 index 0000000..ddf9bdc --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Fonts.xdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl b/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl new file mode 100644 index 0000000..10369ff --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Formatting.xdl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Pages.xdl b/source/oxt/writer2latex/W2LDialogs2/Pages.xdl new file mode 100644 index 0000000..3edb8c0 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Pages.xdl @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Styles.xdl b/source/oxt/writer2latex/W2LDialogs2/Styles.xdl new file mode 100644 index 0000000..063a244 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Styles.xdl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/Tables.xdl b/source/oxt/writer2latex/W2LDialogs2/Tables.xdl new file mode 100644 index 0000000..f41c548 --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/Tables.xdl @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl b/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl new file mode 100644 index 0000000..309b41f --- /dev/null +++ b/source/oxt/writer2latex/W2LDialogs2/TextAndMath.xdl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2latex/W2LDialogs2/dialog.xlb b/source/oxt/writer2latex/W2LDialogs2/dialog.xlb index cbcedd2..eead70f 100644 --- a/source/oxt/writer2latex/W2LDialogs2/dialog.xlb +++ b/source/oxt/writer2latex/W2LDialogs2/dialog.xlb @@ -1,6 +1,13 @@ - - + + + + + + + + + \ No newline at end of file