From a797314ff3b539b52ccd280d291bc08d0844d15a Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 19 Dec 2020 21:53:55 -0600 Subject: [PATCH] Move create with dialog --- files/ZAZLaTex2SVG_v0.2.0.oxt | Bin 74140 -> 73594 bytes source/ZAZLaTex2SVG.py | 134 ---------------------------------- source/pythonpath/main.py | 132 ++++++++++++++++++++++++++++++++- 3 files changed, 130 insertions(+), 136 deletions(-) diff --git a/files/ZAZLaTex2SVG_v0.2.0.oxt b/files/ZAZLaTex2SVG_v0.2.0.oxt index 5c353289382da2747ae8351e2a88a0f9479fb77a..68ed380efc51ae9d54de9ab93c07d412b3b7f816 100644 GIT binary patch delta 2307 zcmZWrc{J4P8=vo3hMBQO#y)nVQ9@GYh8r;kSqB+wSu#Y{i8A5Zx0o2jWEqJvvJ{ae zvQ=bX>SikXWs>Du;!3&0?{2nYn? z0hKT)wR|Kn2Rqg$fky#y0fS<_@&~UL5&(fvU=T=vEjwp;&fLS!i==6bH#r=1CCu7_ z*rfq){pK*A%NZ-6#~(RmGNpM2feLAqJ{?0DnOgg8>2aq)SI(~g0la9%IM0T6grr z-aX?K)A0+5q1mqjhiy+$@?EsJkA{z37aZwB8hyqdJ2B>wRHM;T(sLd)nE5GL zq|o0vSOMa)AcnOG?$O)&)NW3z2q|8$h@8(dIht;#Xru#3#m{uR)ZuS7+tT|v;UfjT zvLUt0{qsr&1>d{on%)d7u>StBnm;4eli4?Q{FnLG+dz|ih4<$AbYlF(eJ&6PegFg# z22qEk0TFVwqg&t`9YOMB#n2N-e_q)g@mMg|>W#2z31ollII(3S-T>FoX(`W@9ZV7b zvDBh~N)Dc*JAP1M{n%Z~=%tW%-W!+Ar7F!HQFTk)C~6bh`Gj=0SEuu%tRqDG={(6$ ztP8|2=m#*eV1jisH;dn<}*rS8$E+I72n&yp){cfv|pi^DCO?IwoMhC@#;YUsB- zY11t#dwD_AX-=M~_B;$PT&^Q2f9!=>^IPsz<1$~1Ij~O$^pxnN?nx&+UVEVr{jXEc1Yzs+k zv>+SCx&L+IPyeoNF;Xce0!@-o1$*`tJe6n@BH*lZ?W!En?IY%A-5`cM?S+g^ZLdO> zcDks#L%qfk*t>+K#0JGgIQWXGInluL&~X0qD$IaciLaUF0B3|UOTx3+NBd~@UkwVl zD#`xD2|w&)T6ENut8y?jOSgWA=cE&*j$Bd%a*ikXDohgJ*Vu5W-nqPPsA+MU%S*>* zI26gPo@a%MC#1YVgeDO5m!eo$+?SVjsdm+=h=8*ZYaMFy@$@XO)Ti^O@(%Wh=4`*e zuRGM*{o4@vyba6A(aKWknMCtVeH51wk$2*_v+N+&-!khmA8ixi5#wQ zL0kIFm$X>Z(y8{)J}rq1qT87*tgA{k-qT`uSTGhgRQ0vQBcRZU8hSeATf?Ba`)G+- zwrvg;uP_L4UdyT%bniBd`)E}lG9uPOH{f-Bz3pO{CHQDV&!FRSV-_}1-q53`a zwn-4WovC6ba5dbu=;l2L{QK1jnt`p9o^uDWUo+Mvt0DgBkU>-sgZrbbxSY<+y-{2U z;MZg*uP2+NY;ZBK?ShgbL3d`V|Dj&Ij`#^mCBtu$WQq$=vQ})hY=id9k_jq>cA?y; zsp1y_o{?n^G0!knV9mCafwGzpG$9<+<4V)(J=TbW4E^*Mr-%ViBdOe(Fq%;^F z4f**Yb&4ljDpxvn1=AUl*Fb~rGQ3wJG^d-I8Yw|_7t;e(tUo#HV7MWhn0(hzwUyTk zx2U}v7H;V*j%#-9i^MNAHyK_y%?m{bKKtg9tkobJ?P}D;-B`YkE~PnEi;N$(k%x^l58vQguUz&+jDeOV zT|a7mu5J7<49Q)%H6KR0N+R(zzI1+`BFVRGva;mAD7hKXpmjcg{2I0lkAz3har$I` z*clW@84oMhrr(2UH^n4F4MYwWvV@(ySsU}}^fHG;nTICfU-}Nppf5B0yRJu? zBeOL8ab)I_u6K7wUTeDMRGb(8h5=ga0v0E02CF0FR!%>}&_tut&yV@9UlNxDFd3WW zXTLY$wj_zmt?lHBEk1+iquHWT@e#o}H>AEg!Nxz%3q1&Fde{5lvvj1xqgiW2&5r7k z_jf$R(r&H3NZ1C=csa%cv%JH*Bfjcejyp4IZ54#c#fh!&4_6IovrgL!uVA4G;n@WO z+su`kcu&$Gt=z8X0|Ni(1&Qu>L?GhTREW=vW$ACp`i(EiK7B1=Yw&zB6kpG?9JAfC zLIWxgt!tyHB_rsUs+Uw$NY`71{295HBeu-4p+;gTn0w*36;2TVMO*1@T`lnwwQ`|efV;A;>&y%z^9p$@;UuW!mVqR1% zB6kx6T4@G@#C}THksiYpN)?m=PJ^9!sP-}d2J8c+GGzc6DpnQ{rjGLgg7BYmdQ3TN zFK5OP$p=seg#ZNg-2s4WPl@Kp6xgR^sJXI$8b`9w{{#@~t_%RDF3AEiV1x*j9|@R% znWB3UK@CI#Li_#M^wxXwv%eWh>~DtX&w~5?-4UY}BLRhdl|HnN_L$AW*vel|@d-hl qMFL9u(}Kydr!_84Rh9dfuwoM&8WI3CP>NkMK@Je)PL*J90s03NF8IX& delta 2775 zcmY*bc{tSj7oP7J#=Z<{m<@47h{_t-%Q9p)mPA*!DU56lW)jL;mdu2~*spy{SwfPe zx>-huEG5boNyeHVp5J}$b3gyQ?{m(1&pDqz&U4OI8-&&g;ju7ffe3*>Aa)S5CAF3( z6wI=Z^|4?EK(1>^wakN()Vor8l)4rPkbB~5mV_M6xfxRnk6%T?(LD?0&wBZc4G7T%42 z>5U{`jP$&@xlSb18nCAId{GfLPG{&z(~dWc!%7{V&-s2GpRkLkNN%1#wUt3jhtM-N zX+otYQ=4ysvn*4r-}HZA`@NKc9nS{4QN!qBUzvH*pE@*XInz8REQhcO7G8d$Qn( zizj;4KW<4v`rC%7&SZY&X-#W}Ak zKFGi%OMGA#!EU3Sik`t_)}z*Y6Qjvmm6v&G7raG`GZW6n-`Nt!LGk_Xl;0-V;&oLE zYodZYkXh@7`47qr>R{8Fj+ysAvi5%L+Z8QKX=)C|j~3iH0vlx2I|G<7w(=X2`v|mV z(*`q^=BoS$J-Dw$4T+E7SO?06#+EEjpjboJ$lUX{#z=k-iVdbFakZIb10jbx3&gsM zUCC9Vz&{2U5L~efw7{GbV25kSoQ!AqU;f%UKQ%y6Y^r--qJ>3$#)QT<u1*Vt*REIy*zSiHwKNM3O8f z>W@OJL!q3lo+jlrDS-;fEM%gqsiFRRODh|*^@U8l`q&SkGenp2YmsMcMx1CU^kw)G zjMr{vgl4?9>n{o7_%hWZIFNc(B;D@LD{MB@_wus{Nl`h}cYLluzdq`8`Ciu1vMVbZ>EOO^CRHcwLuthxv8o`!^&$)(jFv zx%Wh$+XoqnQ(o_zbvTO@GzP@H1fmnFSWu$3mTc(XUg3II2aY+vl4QjBhQO21^-DT3a;UtU?B5T4H+o79!NcrQjDI3L ze654i+OaObQ_K(cc6Q>Epy5W@fT+S}qr`X1w~o!V`wk85!}ZgCgl& z6Iy39hxL>gdL+Zqq!=aaNM2{I(M~<1c6;wcy**$2v7W49?u)dR(M3Ve)o%0=wIeD6yf(q_UuxTGo=o_9vq$DPL7)G(sz*DU(|A=x zEHHGhGxcG?IjunZ4F|vQ-tg^<9|yOO{<{wj7eP5|tQYU{{vu${@~n_%0fAmY({z2| z=g;|L--Q5t8@Lx=p%4=()n_1aS+GzLYmL`85L z*cG28@~{e;G3<$n!X`tuHO-Y=i}+tgnUsp06)uC>Co2n(SX99|kuUD1>Tk$@MM9(! zUJe5tmrE0v$4y}|rrt&h_>`DwlIPG;_^RbmJ38LizfGW|BbjF+jtsVY*NqI(ap1{raz@@}_b zXDD?^*{b*Wg=THpXSv0*@9D?xJ#Ll64T0wW2plXccV@^NM05xahlY^D9X(1O)66pz z>0Umzxz(k{s#5d1#dRvS*NctVN>hBaG0JVYG z_lL&B=Dd{V%gZmAZI6FzFoOq=K_8=I(ZuqHaLh&7dD2$)SKf??@TSzO`H@j+)#Qkk zjMeG-I^PafC9bGOVazHyD({4n=(M$6XA_S(&qPvye|}ew=CEsck&W=^#Pi4Y9RZmU ztnT-gcI~*kQRuK`M(48J>8zDZ=Swaw=0>4h6(exxUjLIJPAmdIfDJjR-UvWS?7!m* z0>Sq0wtrq>WM2Ta3IT{6%K8sv(!pusfg)5W5|9N)a8ger0ZnimH2eNAv7y!Xyg#@T(qWkIHF#tbXC2~In=zkKd```co diff --git a/source/ZAZLaTex2SVG.py b/source/ZAZLaTex2SVG.py index 462ab86..5f67048 100644 --- a/source/ZAZLaTex2SVG.py +++ b/source/ZAZLaTex2SVG.py @@ -10,50 +10,7 @@ ID_EXTENSION = 'net.elmau.zaz.latex2svg' SERVICE = ('com.sun.star.task.Job',) -class Controllers(object): - - def __init__(self, dlg): - self.d = dlg - self._path = '' - - def cmd_close_action(self, event): - self.d.close() - return - - def cmd_preview_action(self, event): - code = self.d.text.value - if not code: - msg = _('Write some code') - app.errorbox(msg) - return - - self._path = _latex_to_svg(code) - self.d.image.url = self._path - return - - def cmd_insert_action(self, event): - if not self._path: - msg = _('First, generate preview') - app.errorbox(msg) - return - - attr = {} - sel = app.selection - if hasattr(sel, 'anchor'): - attr = sel.size - anchor = sel.anchor - anchor.dp.remove(sel) - sel = anchor - - image = sel.insert_image(self._path, attr) - image.description = self.d.text.value - self.d.close() - return - - - class ZAZLaTex2SVG(unohelper.Base, XJobExecutor): - NAME = 'temp' def __init__(self, ctx): self.ctx = ctx @@ -63,97 +20,6 @@ class ZAZLaTex2SVG(unohelper.Base, XJobExecutor): main.run(args, __file__) return - def _dlg(self): - dlg = self._create_dialog() - sel = app.selection - if hasattr(sel, 'description'): - dlg.text.value = sel.description - dlg.open() - return - - def _create_dialog(self): - args = { - 'Name': 'dialog', - 'Title': TITLE, - 'Width': 270, - 'Height': 250, - } - dlg = app.create_dialog(args) - dlg.id = ID_EXTENSION - dlg.events = Controllers - - args = { - 'Type': 'Label', - 'Name': 'lbl_code', - 'Label': _('Latex code'), - 'Width': 70, - 'Height': 10, - 'X': 10, - 'Y': 5, - 'VerticalAlign': 1, - } - dlg.add_control(args) - - args = { - 'Type': 'Text', - 'Name': 'text', - 'Width': 250, - 'Height': 75, - 'MultiLine': True, - 'VScroll': True, - } - dlg.add_control(args) - - args = { - 'Type': 'Button', - 'Name': 'cmd_preview', - 'Label': _('Preview'), - 'Width': 70, - 'Height': 15, - 'ImageURL': 'view.png', - 'ImagePosition': 1, - } - dlg.add_control(args) - - args = { - 'Type': 'Image', - 'Name': 'image', - 'Width': 250, - 'Height': 100, - } - dlg.add_control(args) - - args = { - 'Type': 'Button', - 'Name': 'cmd_insert', - 'Label': _('Insert'), - 'Width': 70, - 'Height': 15, - 'ImageURL': 'insert.png', - 'ImagePosition': 1, - } - dlg.add_control(args) - args = { - 'Type': 'Button', - 'Name': 'cmd_close', - 'Label': _('Close'), - 'Width': 70, - 'Height': 15, - 'ImageURL': 'close.png', - 'ImagePosition': 1, - } - dlg.add_control(args) - - dlg.text.move(dlg.lbl_code) - dlg.cmd_preview.move(dlg.text, center=True) - dlg.image.move(dlg.cmd_preview, center=True) - dlg.cmd_insert.move(dlg.image) - dlg.cmd_close.move(dlg.image) - controls = (dlg.cmd_insert, dlg.cmd_close) - dlg.center(controls) - - return dlg - g_ImplementationHelper = unohelper.ImplementationHelper() g_ImplementationHelper.addImplementation(ZAZLaTex2SVG, ID_EXTENSION, SERVICE) diff --git a/source/pythonpath/main.py b/source/pythonpath/main.py index d84e85a..2bf31b1 100644 --- a/source/pythonpath/main.py +++ b/source/pythonpath/main.py @@ -6,7 +6,6 @@ import easymacro as app ID_EXTENSION = '' TITLE = 'ZAZ Latex2SVG' _ = None - TEMPLATE = """\documentclass{{article}} \\usepackage[a5paper, landscape]{{geometry}} \\usepackage{{xcolor}} @@ -24,6 +23,47 @@ TEMPLATE = """\documentclass{{article}} """ +class Controllers(object): + + def __init__(self, dlg): + self.d = dlg + self._path = '' + + def cmd_close_action(self, event): + self.d.close() + return + + def cmd_preview_action(self, event): + code = self.d.text.value + if not code: + msg = _('Write some code') + app.errorbox(msg) + return + + self._path = _latex_to_svg(code) + self.d.image.url = self._path + return + + def cmd_insert_action(self, event): + if not self._path: + msg = _('First, generate preview') + app.errorbox(msg) + return + + attr = {} + sel = app.selection + if hasattr(sel, 'anchor'): + attr = sel.size + anchor = sel.anchor + anchor.dp.remove(sel) + sel = anchor + + image = sel.insert_image(self._path, attr) + image.description = self.d.text.value + self.d.close() + return + + def validate_app(): msg1 = _('Not found') msg2 = _('Found') @@ -87,8 +127,96 @@ def from_selection(): return +def _create_dialog(): + args = { + 'Name': 'dialog', + 'Title': TITLE, + 'Width': 270, + 'Height': 250, + } + dlg = app.create_dialog(args) + dlg.id = ID_EXTENSION + dlg.events = Controllers + + args = { + 'Type': 'Label', + 'Name': 'lbl_code', + 'Label': _('Latex code'), + 'Width': 70, + 'Height': 10, + 'X': 10, + 'Y': 5, + 'VerticalAlign': 1, + } + dlg.add_control(args) + + args = { + 'Type': 'Text', + 'Name': 'text', + 'Width': 250, + 'Height': 75, + 'MultiLine': True, + 'VScroll': True, + } + dlg.add_control(args) + + args = { + 'Type': 'Button', + 'Name': 'cmd_preview', + 'Label': _('Preview'), + 'Width': 70, + 'Height': 15, + 'ImageURL': 'view.png', + 'ImagePosition': 1, + } + dlg.add_control(args) + + args = { + 'Type': 'Image', + 'Name': 'image', + 'Width': 250, + 'Height': 100, + } + dlg.add_control(args) + + args = { + 'Type': 'Button', + 'Name': 'cmd_insert', + 'Label': _('Insert'), + 'Width': 70, + 'Height': 15, + 'ImageURL': 'insert.png', + 'ImagePosition': 1, + } + dlg.add_control(args) + args = { + 'Type': 'Button', + 'Name': 'cmd_close', + 'Label': _('Close'), + 'Width': 70, + 'Height': 15, + 'ImageURL': 'close.png', + 'ImagePosition': 1, + } + dlg.add_control(args) + + dlg.text.move(dlg.lbl_code) + dlg.cmd_preview.move(dlg.text, center=True) + dlg.image.move(dlg.cmd_preview, center=True) + dlg.cmd_insert.move(dlg.image) + dlg.cmd_close.move(dlg.image) + controls = (dlg.cmd_insert, dlg.cmd_close) + dlg.center(controls) + + return dlg + + def from_dialog(): - app.debug('From dialog') + dlg = _create_dialog() + sel = app.selection + if hasattr(sel, 'description'): + dlg.text.value = sel.description + dlg.open() return