From 6eb11a935e79c26e7b979f117f7180d515d2e4b2 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 30 Oct 2020 22:22:25 -0600 Subject: [PATCH] Add locales --- README.md | 2 +- conf.py | 8 ++ files/ZAZLaTex2SVG_v0.1.0.oxt | Bin 52996 -> 57312 bytes source/Addons.xcu | 18 +++ source/ZAZLaTex2SVG.py | 165 +++++++++++++++++++++----- source/locales/en/LC_MESSAGES/base.po | 30 +++++ source/locales/es/LC_MESSAGES/base.po | 32 +++++ source/locales/es/LC_MESSAGES/es.po~ | 30 +++++ source/pythonpath/easymacro2.py | 114 ++++++++++++++++++ 9 files changed, 370 insertions(+), 29 deletions(-) create mode 100644 source/locales/en/LC_MESSAGES/base.po create mode 100644 source/locales/es/LC_MESSAGES/base.po create mode 100644 source/locales/es/LC_MESSAGES/es.po~ diff --git a/README.md b/README.md index 0c1833a..916e186 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Requirements: * pdf2svg -## Software libre no gratis. +## Free Software, not gratis software This extension have a cost of maintenance of 5 euros every year. diff --git a/conf.py b/conf.py index 01db5ec..534a986 100644 --- a/conf.py +++ b/conf.py @@ -117,6 +117,14 @@ MENUS = ( 'toolbar': False, 'shortcut': '', }, + { + 'title': {'en': 'Insert...', 'es': 'Insertar...'}, + 'argument': 'dlg', + 'context': 'calc,writer,draw,impress', + 'icon': 'icon1', + 'toolbar': False, + 'shortcut': '', + }, { 'title': {'en': 'Validate applications', 'es': 'Validar aplicaciones'}, 'argument': 'app', diff --git a/files/ZAZLaTex2SVG_v0.1.0.oxt b/files/ZAZLaTex2SVG_v0.1.0.oxt index 092f1c2be743edca8ff3029159ba14d32988f79d..e77179a5537cf6023720625f31dbacbb6a447146 100644 GIT binary patch delta 27255 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 diff --git a/source/Addons.xcu b/source/Addons.xcu index 4de1c72..b025717 100644 --- a/source/Addons.xcu +++ b/source/Addons.xcu @@ -30,6 +30,24 @@ + + Insert... + Insertar... + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument,com.sun.star.drawing.DrawingDocument,com.sun.star.presentation.PresentationDocument + + + service:net.elmau.zaz.latex2svg?dlg + + + _self + + + %origin%/images/icon1 + + + Validate applications Validar aplicaciones diff --git a/source/ZAZLaTex2SVG.py b/source/ZAZLaTex2SVG.py index 442884c..fe0a446 100644 --- a/source/ZAZLaTex2SVG.py +++ b/source/ZAZLaTex2SVG.py @@ -6,74 +6,182 @@ import easymacro2 as app ID_EXTENSION = 'net.elmau.zaz.latex2svg' SERVICE = ('com.sun.star.task.Job',) +TITLE = 'ZAZ Latex2SVG' + + +_ = app.install_locales(__file__) + + +TEMPLATE = """\documentclass{{article}} +\\usepackage[a5paper, landscape]{{geometry}} +\\usepackage{{xcolor}} +\\usepackage{{amssymb}} +\\usepackage{{amsmath}} +\pagestyle{{empty}} +\\begin{{document}} + +\[ {} \] + +\end{{document}} +""" + + +class Controllers(object): + + def __init__(self, dlg): + self.d = dlg + + def cmd_preview_action(self, event): + data = self.d.text.value + if not data: + msg = _('Write some code') + app.errorbox(msg) + return + + app.msgbox(data) + return class ZAZLaTex2SVG(unohelper.Base, XJobExecutor): + NAME = 'temp' + _msg1 = _('Not found') + _msg2 = _('Found') def __init__(self, ctx): self.ctx = ctx - def trigger(self, args='pyUNO'): + def trigger(self, args=''): if args == 'app': self._app() return + if args == 'dlg': + self._dlg() + return + self._from_selection() return def _app(self): - result = 'No encontrado' + result = self._msg1 if app.paths.exists_app('pdflatex'): - result = 'Encontrado' + result = self._msg2 msg = f'pdflatex = {result}\n' - result = 'No encontrado' + result = self._msg1 if app.paths.exists_app('pdfcrop'): - result = 'Encontrado' + result = self._msg2 msg += f'pdfcrop = {result}\n' - result = 'No encontrado' + result = self._msg1 if app.paths.exists_app('pdf2svg'): - result = 'Encontrado' + result = self._msg2 msg += f'pdf2svg = {result}\n\n' - msg += 'No continues hasta tener las tres aplicaciones detectadas' + msg += _('Not used, if not found some application.') app.msgbox(msg) return @app.catch_exception + def _dlg(self): + dlg = self._create_dialog() + 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': 15, + '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': '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.cmd_insert.move(dlg.cmd_preview) + dlg.cmd_close.move(dlg.cmd_preview) + controls = (dlg.cmd_insert, dlg.cmd_close) + dlg.center(controls) + + return dlg + def _from_selection(self): - template = """\documentclass{{article}} - \\usepackage[a5paper, landscape]{{geometry}} - \\usepackage{{xcolor}} - \\usepackage{{amssymb}} - \\usepackage{{amsmath}} - \pagestyle{{empty}} - \\begin{{document}} - - \[ {} \] - - \end{{document}} - """ doc = app.active sel = doc.selection if doc.type == 'writer': sel = sel[0] data = sel.value - data = template.format(data) - path_tmp = '/tmp' - path_tex = '/tmp/test.tex' - path_pdf = '/tmp/test.pdf' - path_svg = '/tmp/test.svg' + data = TEMPLATE.format(data) + dt = app.paths.dir_tmp() + path_tex = app._P.join(dt.name, f'{self.NAME}.tex') + path_pdf = app._P.join(dt.name, f'{self.NAME}.pdf') + path_svg = app._P.join(dt.name, f'{self.NAME}.svg') app.paths.save(path_tex, data) - cmd = f'pdflatex --interaction=batchmode -output-directory={path_tmp} {path_tex}' + cmd = f'pdflatex --interaction=batchmode -output-directory="{dt.name}" "{path_tex}"' app.run(cmd) - cmd = f'pdfcrop {path_pdf} {path_pdf}' + cmd = f'pdfcrop "{path_pdf}" "{path_pdf}"' app.run(cmd) - cmd = f'pdf2svg {path_pdf} {path_svg}' + cmd = f'pdf2svg "{path_pdf}" "{path_svg}"' app.run(cmd) sel = sel.offset() @@ -82,6 +190,7 @@ class ZAZLaTex2SVG(unohelper.Base, XJobExecutor): args = {'Width': 5000, 'Height': 2000} sel.insert_image(path_svg, args) + dt.cleanup() return diff --git a/source/locales/en/LC_MESSAGES/base.po b/source/locales/en/LC_MESSAGES/base.po new file mode 100644 index 0000000..3b984cd --- /dev/null +++ b/source/locales/en/LC_MESSAGES/base.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2020-10-30 12:59-0600\n" +"PO-Revision-Date: 2020-10-30 13:03-0600\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.4.1\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: en\n" + +#: source/ZAZLaTex2SVG.py:15 +msgid "Not found" +msgstr "" + +#: source/ZAZLaTex2SVG.py:16 +msgid "Found" +msgstr "" + +#: source/ZAZLaTex2SVG.py:45 +msgid "Not used, if not found some application." +msgstr "" diff --git a/source/locales/es/LC_MESSAGES/base.po b/source/locales/es/LC_MESSAGES/base.po new file mode 100644 index 0000000..dfe7951 --- /dev/null +++ b/source/locales/es/LC_MESSAGES/base.po @@ -0,0 +1,32 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2020-10-30 12:59-0600\n" +"PO-Revision-Date: 2020-10-30 13:01-0600\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: source/ZAZLaTex2SVG.py:15 +msgid "Not found" +msgstr "No encontrado" + +#: source/ZAZLaTex2SVG.py:16 +msgid "Found" +msgstr "Encontrado" + +#: source/ZAZLaTex2SVG.py:45 +#, fuzzy +#| msgid "Not used, if not found some application" +msgid "Not used, if not found some application." +msgstr "No use, si no se encuentra alguna aplicaciĆ³n." diff --git a/source/locales/es/LC_MESSAGES/es.po~ b/source/locales/es/LC_MESSAGES/es.po~ new file mode 100644 index 0000000..c14f498 --- /dev/null +++ b/source/locales/es/LC_MESSAGES/es.po~ @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2020-10-30 12:34-0600\n" +"PO-Revision-Date: 2020-10-30 12:58-0600\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.4.1\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" + +#: source/ZAZLaTex2SVG.py:15 +msgid "Not found" +msgstr "No encontrado" + +#: source/ZAZLaTex2SVG.py:16 +msgid "Found" +msgstr "Encontrado" + +#: source/ZAZLaTex2SVG.py:45 +msgid "Not used, if not found some application" +msgstr "No use, si no se encuentra alguna aplicaciĆ³n." diff --git a/source/pythonpath/easymacro2.py b/source/pythonpath/easymacro2.py index df892ef..8777491 100644 --- a/source/pythonpath/easymacro2.py +++ b/source/pythonpath/easymacro2.py @@ -33,6 +33,7 @@ import shutil import socket import subprocess import sys +import tempfile import threading import time @@ -2618,6 +2619,7 @@ UNO_CLASSES = { class LODialog(object): + SEPARATION = 5 MODELS = { 'label': 'com.sun.star.awt.UnoControlFixedTextModel', 'link': 'com.sun.star.awt.UnoControlFixedHyperlinkModel', @@ -2642,6 +2644,8 @@ class LODialog(object): self._modal = True self._controls = {} self._color_on_focus = COLOR_ON_FOCUS + self._id = '' + self._path = '' def _create(self, args): service = 'com.sun.star.awt.DialogProvider' @@ -2688,6 +2692,28 @@ class LODialog(object): def controls(self): return self._controls + @property + def id(self): + return self._id + @id.setter + def id(self, value): + self._id = value + self._path = _P.from_id(value) + + @property + def height(self): + return self.model.Height + @height.setter + def height(self, value): + self.model.Height = value + + @property + def width(self): + return self.model.Width + @width.setter + def width(self, value): + self.model.Width = value + @property def visible(self): return self.obj.Visible @@ -2715,6 +2741,13 @@ class LODialog(object): _add_listeners(self.events, control, control.Model.Name) return + def _set_image_url(self, image): + if _P.exists(image): + return _P.to_url(image) + + path = _P.join(self._path, DIR['images'], image) + return _P.to_url(path) + def _special_properties(self, tipo, args): columns = args.pop('Columns', ()) @@ -2764,6 +2797,32 @@ class LODialog(object): self._controls[name] = control return control + def center(self, control, x=0, y=0): + w = self.width + h = self.height + + if isinstance(control, tuple): + wt = self.SEPARATION * -1 + for c in control: + wt += c.width + self.SEPARATION + x = w / 2 - wt / 2 + for c in control: + c.x = x + x = c.x + c.width + self.SEPARATION + return + + if x < 0: + x = w + x - control.width + elif x == 0: + x = w / 2 - control.width / 2 + if y < 0: + y = h + y - control.height + elif y == 0: + y = h / 2 - control.height / 2 + control.x = x + control.y = y + return + def open(self, modal=True): self._modal = modal if modal: @@ -3078,6 +3137,35 @@ class Paths(object): def home(self): return str(Path.home()) + @classproperty + def temp_dir(self): + return tempfile.gettempdir() + + @classmethod + def dir_tmp(self, only_name=False): + dt = tempfile.TemporaryDirectory() + if only_name: + dt = dt.name + return dt + + @classmethod + def tmp(cls, ext=''): + tmp = tempfile.NamedTemporaryFile(suffix=ext) + return tmp.name + + @classproperty + def python(self): + return sys.executable + + @classmethod + def config(cls, name='Work'): + """ + Return de path name in config + http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XPathSettings.html + """ + path = create_instance('com.sun.star.util.PathSettings') + return cls.to_system(getattr(path, name)) + @classmethod def replace_ext(cls, path, new_ext): p = Paths(path) @@ -3109,6 +3197,10 @@ class Paths(object): def is_dir(cls, path): return Path(path).is_dir() + @classmethod + def is_file(cls, path): + return Path(path).is_file() + @classmethod def join(cls, *paths): return str(Path(paths[0]).joinpath(*paths[1:])) @@ -3135,6 +3227,22 @@ class Paths(object): path = str(Path(uno.fileUrlToSystemPath(path)).resolve()) return path + @classmethod + def kill(cls, path): + result = True + p = Path(path) + + try: + if p.is_file(): + p.unlink() + elif p.is_dir(): + shutil.rmtree(path) + except OSError as e: + log.error(e) + result = False + + return result + @classmethod def walk(cls, path, filters=''): paths = [] @@ -3148,6 +3256,12 @@ class Paths(object): paths += files return paths + @classmethod + def from_id(cls, id_ext): + pip = CTX.getValueByName('/singletons/com.sun.star.deployment.PackageInformationProvider') + path = _P.to_system(pip.getPackageLocation(id_ext)) + return path + @classmethod def copy(cls, source, target='', name=''): p, f, n, e = _P(source).info