From e64854c78cc44b1e3fdec1183212ed6d9a9a8153 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 5 Jun 2021 22:06:13 -0500 Subject: [PATCH 1/5] Update easymacro.py --- CHANGELOG | 14 +- VERSION | 2 +- conf.py | 2 +- easymacro.py | 383 ++++++++++++++++-- .../{ZAZPip_v0.7.0.oxt => ZAZPip_v0.8.0.oxt} | Bin 86539 -> 87758 bytes source/description.xml | 2 +- source/pythonpath/easymacro.py | 383 ++++++++++++++++-- 7 files changed, 711 insertions(+), 75 deletions(-) rename files/{ZAZPip_v0.7.0.oxt => ZAZPip_v0.8.0.oxt} (50%) diff --git a/CHANGELOG b/CHANGELOG index e5090d9..2f61d6e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,13 @@ +v 0.8.0 [06-jun-2021] + - Update easymacro.py + - Add proxy config + +v 0.7.0 [05-jan-2020] + - Disable search + +v 0.6.0 [18-nov-2020] + - Add install with requirements.txt + v 0.5.0 [09-jul-2020] - Test install pandas @@ -5,16 +15,12 @@ v 0.4.0 [10-mar-2020] - Update easymacro.py - Fix: in OSx Catalina - v 0.3.0 [12-nov-2019] - Update easymacro.py - Test install numpy - v 0.2.0 [18-oct-2019] - Add spanish - v 0.1.0 [18-oct-2019] - Initial version - diff --git a/VERSION b/VERSION index bcaffe1..8adc70f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.0 \ No newline at end of file +0.8.0 \ No newline at end of file diff --git a/conf.py b/conf.py index 42e616c..5c8c889 100644 --- a/conf.py +++ b/conf.py @@ -26,7 +26,7 @@ import logging TYPE_EXTENSION = 1 # ~ https://semver.org/ -VERSION = '0.7.0' +VERSION = '0.8.0' # ~ Your great extension name, not used spaces NAME = 'ZAZPip' diff --git a/easymacro.py b/easymacro.py index 0745d96..2c7d5f3 100644 --- a/easymacro.py +++ b/easymacro.py @@ -21,6 +21,7 @@ import base64 import csv +import ctypes import datetime import getpass import gettext @@ -82,8 +83,9 @@ from com.sun.star.util import Time, Date, DateTime from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK from com.sun.star.text.TextContentAnchorType import AS_CHARACTER -from com.sun.star.awt import XActionListener +from com.sun.star.lang import Locale from com.sun.star.lang import XEventListener +from com.sun.star.awt import XActionListener from com.sun.star.awt import XMenuListener from com.sun.star.awt import XMouseListener from com.sun.star.awt import XMouseMotionListener @@ -203,6 +205,12 @@ class ConditionOperator(): CO = ConditionOperator +class DataPilotFieldOrientation(): + from com.sun.star.sheet.DataPilotFieldOrientation \ + import HIDDEN, COLUMN, ROW, PAGE, DATA +DPFO = DataPilotFieldOrientation + + OS = platform.system() IS_WIN = OS == 'Windows' IS_MAC = OS == 'Darwin' @@ -308,6 +316,11 @@ def get_app_config(node_name: str, key: str=''): LANGUAGE = get_app_config('org.openoffice.Setup/L10N/', 'ooLocale') LANG = LANGUAGE.split('-')[0] +try: + COUNTRY = LANGUAGE.split('-')[1] +except: + COUNTRY = '' +LOCALE = Locale(LANG, COUNTRY, '') NAME = TITLE = get_app_config('org.openoffice.Setup/Product', 'ooName') VERSION = get_app_config('org.openoffice.Setup/Product','ooSetupVersion') @@ -372,6 +385,8 @@ def mri(obj: Any) -> None: error(msg) return + if hasattr(obj, 'obj'): + obj = obj.obj m.inspect(obj) return @@ -1166,6 +1181,9 @@ class LODocument(object): return def to_pdf(self, path: str='', args: dict={}): + """ + https://wiki.documentfoundation.org/Macros/Python_Guide/PDF_export_filter_data + """ path_pdf = path filter_name = '{}_pdf_Export'.format(self.type) filter_data = dict_to_property(args, True) @@ -1520,6 +1538,142 @@ class LOSheetCharts(object): return LOChart(name, self.obj[name], self._sheet.draw_page) +class LOSheetTableField(object): + + def __init__(self, obj): + self._obj = obj + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def obj(self): + return self._obj + + @property + def name(self): + return self.obj.Name + + @property + def orientation(self): + return self.obj.Orientation + @orientation.setter + def orientation(self, value): + self.obj.Orientation = value + + +# ~ com.sun.star.sheet.DataPilotFieldOrientation.ROW +class LOSheetTable(object): + + def __init__(self, obj): + self._obj = obj + self._source = None + + def __getitem__(self, index): + field = self.obj.DataPilotFields[index] + return LOSheetTableField(field) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def obj(self): + return self._obj + + @property + def filter(self): + return self.obj.ShowFilterButton + @filter.setter + def filter(self, value): + self.obj.ShowFilterButton = value + + @property + def source(self): + return self._source + @source.setter + def source(self, value): + self._source = value + self.obj.SourceRange = value.range_address + + @property + def rows(self): + return self.obj.RowFields + @rows.setter + def rows(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.ROW + @property + def columns(self): + return self.obj.ColumnFields + @columns.setter + def columns(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.COLUMN + + @property + def data(self): + return self.obj.DataFields + @data.setter + def data(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.DATA + + +class LOSheetTables(object): + + def __init__(self, obj, sheet): + self._obj = obj + self._sheet = sheet + + def __getitem__(self, index): + return LOSheetTable(self.obj[index]) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + def __contains__(self, item): + return item in self.obj + + @property + def obj(self): + return self._obj + + @property + def count(self): + return self.obj.Count + + @property + def names(self): + return self.obj.ElementNames + + def new(self, name, target): + table = self.obj.createDataPilotDescriptor() + self.obj.insertNewByName(name, target.address, table) + return LOSheetTable(self.obj[name]) + + def remove(self, name): + self.obj.removeByName(name) + return + + class LOFormControl(LOBaseObject): EVENTS = { 'action': 'actionPerformed', @@ -2045,6 +2199,10 @@ class LOCalcSheet(object): def charts(self): return LOSheetCharts(self.obj.Charts, self) + @property + def tables(self): + return LOSheetTables(self.obj.DataPilotTables, self) + @property def rows(self): return LOSheetRows(self, self.obj.Rows) @@ -2558,6 +2716,7 @@ class LOCalcRange(object): cell = None if isinstance(value, dict): for k, v in value.items(): + # ~ print(1, 'RENDER', k, v) cell = self._render_value(k, v, key) return cell elif isinstance(value, (list, tuple)): @@ -2569,7 +2728,11 @@ class LOCalcRange(object): search = f'{{{parent}.{key}}}' ranges = self.find_all(search) - for cell in ranges or range(0): + if ranges is None: + return + + # ~ for cell in ranges or range(0): + for cell in ranges: self._set_new_value(cell, search, value) return LOCalcRange(cell) @@ -2719,6 +2882,55 @@ class LOCalcRange(object): return +class LOWriterStyles(object): + + def __init__(self, styles): + self._styles = styles + + @property + def names(self): + return {s.DisplayName: s.Name for s in self._styles} + + def __str__(self): + return '\n'.join(tuple(self.names.values())) + + +class LOWriterStylesFamilies(object): + + def __init__(self, styles): + self._styles = styles + + def __getitem__(self, index): + styles = { + 'Character': 'CharacterStyles', + 'Paragraph': 'ParagraphStyles', + 'Page': 'PageStyles', + 'Frame': 'FrameStyles', + 'Numbering': 'NumberingStyles', + 'Table': 'TableStyles', + 'Cell': 'CellStyles', + } + name = styles.get(index, index) + return LOWriterStyles(self._styles[name]) + + def __iter__(self): + self._index = 0 + return self + + def __next__(self): + obj = LOWriterStyles(self._styles[self._index]) + self._index += 1 + return obj + # ~ raise StopIteration + + @property + def names(self): + return self._styles.ElementNames + + def __str__(self): + return '\n'.join(self.names) + + class LOWriterPageStyle(LOBaseObject): def __init__(self, obj): @@ -2755,18 +2967,23 @@ class LOWriterTextRange(object): self._doc = doc self._is_paragraph = self.obj.ImplementationName == 'SwXParagraph' self._is_table = self.obj.ImplementationName == 'SwXTextTable' + self._is_text = self.obj.ImplementationName == 'SwXTextPortion' + self._parts = [] + if self._is_paragraph: + self._parts = [LOWriterTextRange(p, doc) for p in obj] def __iter__(self): self._index = 0 return self def __next__(self): - for i, p in enumerate(self.obj): - if i == self._index: - obj = LOWriterTextRange(p, self._doc) - self._index += 1 - return obj - raise StopIteration + try: + obj = self._parts[self._index] + except IndexError: + raise StopIteration + + self._index += 1 + return obj @property def obj(self): @@ -2785,11 +3002,37 @@ class LOWriterTextRange(object): @property def value(self): return self.string + @value.setter + def value(self, value): + self.string = value + + @property + def style(self): + s = '' + if self.is_paragraph: + s = self.obj.ParaStyleName + elif self.is_text: + s = self.obj.CharStyleName + return s + @style.setter + def style(self, value): + if self.is_paragraph: + self.obj.ParaStyleName = value + elif self.is_text: + self.obj.CharStyleName = value + + @property + def is_paragraph(self): + return self._is_paragraph @property def is_table(self): return self._is_table + @property + def is_text(self): + return self._is_text + @property def text(self): return self.obj.Text @@ -2802,6 +3045,13 @@ class LOWriterTextRange(object): def dp(self): return self._doc.dp + def delete(self): + cursor = self.cursor + cursor.gotoStartOfParagraph(False) + cursor.gotoNextParagraph(True) + cursor.String = '' + return + def offset(self): cursor = self.cursor.getEnd() return LOWriterTextRange(cursor, self._doc) @@ -2846,25 +3096,26 @@ class LOWriterTextRanges(object): def __init__(self, obj, doc): self._obj = obj self._doc = doc + self._paragraphs = [LOWriterTextRange(p, doc) for p in obj] + + def __len__(self): + return len(self._paragraphs) def __getitem__(self, index): - for i, p in enumerate(self.obj): - if i == index: - obj = LOWriterTextRange(p, self._doc) - break - return obj + return self._paragraphs[index] def __iter__(self): self._index = 0 return self def __next__(self): - for i, p in enumerate(self.obj): - if i == self._index: - obj = LOWriterTextRange(p, self._doc) - self._index += 1 - return obj - raise StopIteration + try: + obj = self._paragraphs[self._index] + except IndexError: + raise StopIteration + + self._index += 1 + return obj @property def obj(self): @@ -2887,10 +3138,17 @@ class LOWriterTextTable(object): @property def data(self): - return self._obj.DataArray + return self.obj.DataArray @data.setter def data(self, values): - self._obj.DataArray = values + self.obj.DataArray = values + + @property + def style(self): + return self.obj.TableTemplateName + @style.setter + def style(self, value): + self.obj.autoFormat(value) class LOWriterTextTables(object): @@ -2920,7 +3178,7 @@ class LOWriter(LODocument): @property def text(self): - return LOWriterTextRange(self.obj.Text, self) + return self.paragraphs @property def paragraphs(self): @@ -2973,6 +3231,10 @@ class LOWriter(LODocument): ps = self.obj.StyleFamilies['PageStyles'] return LOWriterPageStyles(ps) + @property + def styles(self): + return LOWriterStylesFamilies(self.obj.StyleFamilies) + @property def search_descriptor(self): return self.obj.createSearchDescriptor() @@ -3403,15 +3665,19 @@ class BaseRow: class BaseQuery(object): PY_TYPES = { - 'SQL_LONG': 'getLong', - 'SQL_VARYING': 'getString', - 'SQL_FLOAT': 'getFloat', - 'SQL_BOOLEAN': 'getBoolean', - 'SQL_TYPE_DATE': 'getDate', - 'SQL_TYPE_TIME': 'getTime', - 'SQL_TIMESTAMP': 'getTimestamp', + 'VARCHAR': 'getString', + 'INTEGER': 'getLong', + 'DATE': 'getDate', + # ~ 'SQL_LONG': 'getLong', + # ~ 'SQL_VARYING': 'getString', + # ~ 'SQL_FLOAT': 'getFloat', + # ~ 'SQL_BOOLEAN': 'getBoolean', + # ~ 'SQL_TYPE_DATE': 'getDate', + # ~ 'SQL_TYPE_TIME': 'getTime', + # ~ 'SQL_TIMESTAMP': 'getTimestamp', } - TYPES_DATE = ('SQL_TYPE_DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') + # ~ TYPES_DATE = ('SQL_TYPE_DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') + TYPES_DATE = ('DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') def __init__(self, query): self._query = query @@ -3437,6 +3703,7 @@ class BaseQuery(object): def _to_python(self, index): type_field = self._meta.getColumnTypeName(index) + # ~ print('TF', type_field) value = getattr(self._query, self.PY_TYPES[type_field])(index) if type_field in self.TYPES_DATE: value = _struct_to_date(value) @@ -3562,10 +3829,11 @@ class LOBase(object): self._con.getTables().refresh() return - def initialize(self, database_proxy, tables): + def initialize(self, database_proxy, tables=[]): db = FirebirdDatabase(self) database_proxy.initialize(db) - db.create_tables(tables) + if tables: + db.create_tables(tables) return def _validate_sql(self, sql, params): @@ -5832,6 +6100,7 @@ _CB = ClipBoard class Paths(object): FILE_PICKER = 'com.sun.star.ui.dialogs.FilePicker' + FOLDER_PICKER = 'com.sun.star.ui.dialogs.FolderPicker' def __init__(self, path=''): if path.startswith('file://'): @@ -5941,7 +6210,7 @@ class Paths(object): @classmethod def get_dir(cls, init_dir=''): - folder_picker = create_instance(cls.FILE_PICKER) + folder_picker = create_instance(cls.FOLDER_PICKER) if not init_dir: init_dir = cls.documents init_dir = cls.to_url(init_dir) @@ -5950,7 +6219,7 @@ class Paths(object): path = '' if folder_picker.execute(): - path = cls.to_system(folder_picker.getDisplayDirectory()) + path = cls.to_system(folder_picker.getDirectory()) return path @classmethod @@ -6219,6 +6488,50 @@ class Paths(object): _P = Paths +class Dates(object): + + @classmethod + def date(cls, year, month, day): + d = datetime.date(year, month, day) + return d + + +class SpellChecker(object): + + def __init__(self): + service = 'com.sun.star.linguistic2.SpellChecker' + self._spellchecker = create_instance(service, True) + self._locale = LOCALE + + @property + def locale(self): + slocal = f'{self._locale.Language}-{self._locale.Country}' + return slocale + @locale.setter + def locale(self, value): + lang = value.split('-') + self._locale = Locale(lang[0], lang[1], '') + + def is_valid(self, word): + result = self._spellchecker.isValid(word, self._locale, ()) + return result + + def spell(self, word): + result = self._spellchecker.spell(word, self._locale, ()) + if result: + result = result.getAlternatives() + if not isinstance(result, tuple): + result = () + return result + + +def spell(word, locale=''): + sc = SpellChecker() + if locale: + sc.locale = locale + return sc.spell(word) + + def __getattr__(name): if name == 'active': return LODocs().active @@ -6244,6 +6557,8 @@ def __getattr__(name): return LOShortCuts() if name == 'clipboard': return ClipBoard + if name == 'dates': + return Dates raise AttributeError(f"module '{__name__}' has no attribute '{name}'") diff --git a/files/ZAZPip_v0.7.0.oxt b/files/ZAZPip_v0.8.0.oxt similarity index 50% rename from files/ZAZPip_v0.7.0.oxt rename to files/ZAZPip_v0.8.0.oxt index 1b86d6a90630f2187cc4b3f64d57f7459facff57..ae2c1a71bfd3434a7f0b10de0db646b86d24a103 100644 GIT binary patch delta 40382 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 }!I!{ii^2(}vedlTJ=$rtKY zP~UP1oI*ptx?g|YtFniDGylO%ah}M(uIfZ))*>ef)<)aeTHJZ&nAtD1ID#L12GZ~j zX|)PP6k12XbC=^T^COb1qG0Q*jCh%E0;|%U<6CC8nh;%b3&NDz&4Z^5A9r$jD7C>9 zB;1Viwc%Bw{M0@vNf@v4?^N%7Tj>feKf?;-1+Z)Biu!m=uqa%Im)@ZyZBxYkvojHM zr(eOaL>2uk+GYF37hQ)*gG+=MWf(oTL`^_3GOSDwduAy$&U_hGvd$bNNp+&>uj%Qs)2HsT(M>tsj4ni;0 zIfEOwp#*7dK&LSaI%)`7SyuZL@R6)pX~JbEr#M3zmJ$=N@K}_!UK@&Rcp~~>??`Ps zX?1}c8UT+^FAf=9;O)0-U%72rR^YF-V?TS3iCV(RcPz`R*O|`p)2)Ge1_u*>d2b1KF1Te`y;P7O=jHh38`D^66y}ktx(OGxlc9Rw7RHku<=i4eRYTn%Y z1FVAm)4C;ed__;cgCHyW3JEI0IZ<9LCY1oySjr6c!;~4~3(QQYnH+TCGU>13YVe9? z1X2R34PlYoRTIoH$n$&<5f~zt_) zUei`TIN^5kcCsZ@ubDYWp#n$NbdJsy5v4K2v#5uy`Q%5MLwDzd=q<#1(?(5oTrZCV zh2lsC!eX-MN#hJpAS5p%S|TEoLwSTiTn}=Vf1WL3t!aP^8|;*~NKbvD%iUDqzjERD z7U|@OdB^6=6m;Zr_-WzkE}%)tBp*Aek-~qn4$oagT*Swib40&9^@JX6`fHS-t;sMM z{ph`Sb?Wvt?dT^P=WPReIyf}hnmydQ7tfSvXw3oi5F}wOpfBa?eSpYFc2U$a$PASQ zRar_4EknC~$R>}q`KzKT@7%$^S#Tv81WG*bNofS;Xo9O};0zPi0-0Zn9UrXjv_R4l zllmUS=t`U|N-n!2khW>;ylEGWjmm)Tmx;Z|xwk5A{);J46h7+}_HE@D_gG5Fx&p@e zUeby3H`Ey)7-rTiCaA4nScEPdG8{>4$CG;&R$0&C?viCup1JaUHJ8DO0y;xzhhCw} zE_`HcFfQpvqH1qCVNPANF8W@(!%0A7FiubmBsAEIMTUO-hM@ewYQt~<< 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 Woli7)Nj+mp3&f7bs__&I>3;y>vlKl5 delta 39181 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 diff --git a/source/description.xml b/source/description.xml index 655fa38..60aaaf1 100644 --- a/source/description.xml +++ b/source/description.xml @@ -1,7 +1,7 @@ - + ZAZ Pip ZAZ Pip diff --git a/source/pythonpath/easymacro.py b/source/pythonpath/easymacro.py index 0745d96..2c7d5f3 100644 --- a/source/pythonpath/easymacro.py +++ b/source/pythonpath/easymacro.py @@ -21,6 +21,7 @@ import base64 import csv +import ctypes import datetime import getpass import gettext @@ -82,8 +83,9 @@ from com.sun.star.util import Time, Date, DateTime from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK from com.sun.star.text.TextContentAnchorType import AS_CHARACTER -from com.sun.star.awt import XActionListener +from com.sun.star.lang import Locale from com.sun.star.lang import XEventListener +from com.sun.star.awt import XActionListener from com.sun.star.awt import XMenuListener from com.sun.star.awt import XMouseListener from com.sun.star.awt import XMouseMotionListener @@ -203,6 +205,12 @@ class ConditionOperator(): CO = ConditionOperator +class DataPilotFieldOrientation(): + from com.sun.star.sheet.DataPilotFieldOrientation \ + import HIDDEN, COLUMN, ROW, PAGE, DATA +DPFO = DataPilotFieldOrientation + + OS = platform.system() IS_WIN = OS == 'Windows' IS_MAC = OS == 'Darwin' @@ -308,6 +316,11 @@ def get_app_config(node_name: str, key: str=''): LANGUAGE = get_app_config('org.openoffice.Setup/L10N/', 'ooLocale') LANG = LANGUAGE.split('-')[0] +try: + COUNTRY = LANGUAGE.split('-')[1] +except: + COUNTRY = '' +LOCALE = Locale(LANG, COUNTRY, '') NAME = TITLE = get_app_config('org.openoffice.Setup/Product', 'ooName') VERSION = get_app_config('org.openoffice.Setup/Product','ooSetupVersion') @@ -372,6 +385,8 @@ def mri(obj: Any) -> None: error(msg) return + if hasattr(obj, 'obj'): + obj = obj.obj m.inspect(obj) return @@ -1166,6 +1181,9 @@ class LODocument(object): return def to_pdf(self, path: str='', args: dict={}): + """ + https://wiki.documentfoundation.org/Macros/Python_Guide/PDF_export_filter_data + """ path_pdf = path filter_name = '{}_pdf_Export'.format(self.type) filter_data = dict_to_property(args, True) @@ -1520,6 +1538,142 @@ class LOSheetCharts(object): return LOChart(name, self.obj[name], self._sheet.draw_page) +class LOSheetTableField(object): + + def __init__(self, obj): + self._obj = obj + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def obj(self): + return self._obj + + @property + def name(self): + return self.obj.Name + + @property + def orientation(self): + return self.obj.Orientation + @orientation.setter + def orientation(self, value): + self.obj.Orientation = value + + +# ~ com.sun.star.sheet.DataPilotFieldOrientation.ROW +class LOSheetTable(object): + + def __init__(self, obj): + self._obj = obj + self._source = None + + def __getitem__(self, index): + field = self.obj.DataPilotFields[index] + return LOSheetTableField(field) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def obj(self): + return self._obj + + @property + def filter(self): + return self.obj.ShowFilterButton + @filter.setter + def filter(self, value): + self.obj.ShowFilterButton = value + + @property + def source(self): + return self._source + @source.setter + def source(self, value): + self._source = value + self.obj.SourceRange = value.range_address + + @property + def rows(self): + return self.obj.RowFields + @rows.setter + def rows(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.ROW + @property + def columns(self): + return self.obj.ColumnFields + @columns.setter + def columns(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.COLUMN + + @property + def data(self): + return self.obj.DataFields + @data.setter + def data(self, values): + if not isinstance(values, tuple): + values = (values,) + for v in values: + with self[v] as f: + f.orientation = DPFO.DATA + + +class LOSheetTables(object): + + def __init__(self, obj, sheet): + self._obj = obj + self._sheet = sheet + + def __getitem__(self, index): + return LOSheetTable(self.obj[index]) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + def __contains__(self, item): + return item in self.obj + + @property + def obj(self): + return self._obj + + @property + def count(self): + return self.obj.Count + + @property + def names(self): + return self.obj.ElementNames + + def new(self, name, target): + table = self.obj.createDataPilotDescriptor() + self.obj.insertNewByName(name, target.address, table) + return LOSheetTable(self.obj[name]) + + def remove(self, name): + self.obj.removeByName(name) + return + + class LOFormControl(LOBaseObject): EVENTS = { 'action': 'actionPerformed', @@ -2045,6 +2199,10 @@ class LOCalcSheet(object): def charts(self): return LOSheetCharts(self.obj.Charts, self) + @property + def tables(self): + return LOSheetTables(self.obj.DataPilotTables, self) + @property def rows(self): return LOSheetRows(self, self.obj.Rows) @@ -2558,6 +2716,7 @@ class LOCalcRange(object): cell = None if isinstance(value, dict): for k, v in value.items(): + # ~ print(1, 'RENDER', k, v) cell = self._render_value(k, v, key) return cell elif isinstance(value, (list, tuple)): @@ -2569,7 +2728,11 @@ class LOCalcRange(object): search = f'{{{parent}.{key}}}' ranges = self.find_all(search) - for cell in ranges or range(0): + if ranges is None: + return + + # ~ for cell in ranges or range(0): + for cell in ranges: self._set_new_value(cell, search, value) return LOCalcRange(cell) @@ -2719,6 +2882,55 @@ class LOCalcRange(object): return +class LOWriterStyles(object): + + def __init__(self, styles): + self._styles = styles + + @property + def names(self): + return {s.DisplayName: s.Name for s in self._styles} + + def __str__(self): + return '\n'.join(tuple(self.names.values())) + + +class LOWriterStylesFamilies(object): + + def __init__(self, styles): + self._styles = styles + + def __getitem__(self, index): + styles = { + 'Character': 'CharacterStyles', + 'Paragraph': 'ParagraphStyles', + 'Page': 'PageStyles', + 'Frame': 'FrameStyles', + 'Numbering': 'NumberingStyles', + 'Table': 'TableStyles', + 'Cell': 'CellStyles', + } + name = styles.get(index, index) + return LOWriterStyles(self._styles[name]) + + def __iter__(self): + self._index = 0 + return self + + def __next__(self): + obj = LOWriterStyles(self._styles[self._index]) + self._index += 1 + return obj + # ~ raise StopIteration + + @property + def names(self): + return self._styles.ElementNames + + def __str__(self): + return '\n'.join(self.names) + + class LOWriterPageStyle(LOBaseObject): def __init__(self, obj): @@ -2755,18 +2967,23 @@ class LOWriterTextRange(object): self._doc = doc self._is_paragraph = self.obj.ImplementationName == 'SwXParagraph' self._is_table = self.obj.ImplementationName == 'SwXTextTable' + self._is_text = self.obj.ImplementationName == 'SwXTextPortion' + self._parts = [] + if self._is_paragraph: + self._parts = [LOWriterTextRange(p, doc) for p in obj] def __iter__(self): self._index = 0 return self def __next__(self): - for i, p in enumerate(self.obj): - if i == self._index: - obj = LOWriterTextRange(p, self._doc) - self._index += 1 - return obj - raise StopIteration + try: + obj = self._parts[self._index] + except IndexError: + raise StopIteration + + self._index += 1 + return obj @property def obj(self): @@ -2785,11 +3002,37 @@ class LOWriterTextRange(object): @property def value(self): return self.string + @value.setter + def value(self, value): + self.string = value + + @property + def style(self): + s = '' + if self.is_paragraph: + s = self.obj.ParaStyleName + elif self.is_text: + s = self.obj.CharStyleName + return s + @style.setter + def style(self, value): + if self.is_paragraph: + self.obj.ParaStyleName = value + elif self.is_text: + self.obj.CharStyleName = value + + @property + def is_paragraph(self): + return self._is_paragraph @property def is_table(self): return self._is_table + @property + def is_text(self): + return self._is_text + @property def text(self): return self.obj.Text @@ -2802,6 +3045,13 @@ class LOWriterTextRange(object): def dp(self): return self._doc.dp + def delete(self): + cursor = self.cursor + cursor.gotoStartOfParagraph(False) + cursor.gotoNextParagraph(True) + cursor.String = '' + return + def offset(self): cursor = self.cursor.getEnd() return LOWriterTextRange(cursor, self._doc) @@ -2846,25 +3096,26 @@ class LOWriterTextRanges(object): def __init__(self, obj, doc): self._obj = obj self._doc = doc + self._paragraphs = [LOWriterTextRange(p, doc) for p in obj] + + def __len__(self): + return len(self._paragraphs) def __getitem__(self, index): - for i, p in enumerate(self.obj): - if i == index: - obj = LOWriterTextRange(p, self._doc) - break - return obj + return self._paragraphs[index] def __iter__(self): self._index = 0 return self def __next__(self): - for i, p in enumerate(self.obj): - if i == self._index: - obj = LOWriterTextRange(p, self._doc) - self._index += 1 - return obj - raise StopIteration + try: + obj = self._paragraphs[self._index] + except IndexError: + raise StopIteration + + self._index += 1 + return obj @property def obj(self): @@ -2887,10 +3138,17 @@ class LOWriterTextTable(object): @property def data(self): - return self._obj.DataArray + return self.obj.DataArray @data.setter def data(self, values): - self._obj.DataArray = values + self.obj.DataArray = values + + @property + def style(self): + return self.obj.TableTemplateName + @style.setter + def style(self, value): + self.obj.autoFormat(value) class LOWriterTextTables(object): @@ -2920,7 +3178,7 @@ class LOWriter(LODocument): @property def text(self): - return LOWriterTextRange(self.obj.Text, self) + return self.paragraphs @property def paragraphs(self): @@ -2973,6 +3231,10 @@ class LOWriter(LODocument): ps = self.obj.StyleFamilies['PageStyles'] return LOWriterPageStyles(ps) + @property + def styles(self): + return LOWriterStylesFamilies(self.obj.StyleFamilies) + @property def search_descriptor(self): return self.obj.createSearchDescriptor() @@ -3403,15 +3665,19 @@ class BaseRow: class BaseQuery(object): PY_TYPES = { - 'SQL_LONG': 'getLong', - 'SQL_VARYING': 'getString', - 'SQL_FLOAT': 'getFloat', - 'SQL_BOOLEAN': 'getBoolean', - 'SQL_TYPE_DATE': 'getDate', - 'SQL_TYPE_TIME': 'getTime', - 'SQL_TIMESTAMP': 'getTimestamp', + 'VARCHAR': 'getString', + 'INTEGER': 'getLong', + 'DATE': 'getDate', + # ~ 'SQL_LONG': 'getLong', + # ~ 'SQL_VARYING': 'getString', + # ~ 'SQL_FLOAT': 'getFloat', + # ~ 'SQL_BOOLEAN': 'getBoolean', + # ~ 'SQL_TYPE_DATE': 'getDate', + # ~ 'SQL_TYPE_TIME': 'getTime', + # ~ 'SQL_TIMESTAMP': 'getTimestamp', } - TYPES_DATE = ('SQL_TYPE_DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') + # ~ TYPES_DATE = ('SQL_TYPE_DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') + TYPES_DATE = ('DATE', 'SQL_TYPE_TIME', 'SQL_TIMESTAMP') def __init__(self, query): self._query = query @@ -3437,6 +3703,7 @@ class BaseQuery(object): def _to_python(self, index): type_field = self._meta.getColumnTypeName(index) + # ~ print('TF', type_field) value = getattr(self._query, self.PY_TYPES[type_field])(index) if type_field in self.TYPES_DATE: value = _struct_to_date(value) @@ -3562,10 +3829,11 @@ class LOBase(object): self._con.getTables().refresh() return - def initialize(self, database_proxy, tables): + def initialize(self, database_proxy, tables=[]): db = FirebirdDatabase(self) database_proxy.initialize(db) - db.create_tables(tables) + if tables: + db.create_tables(tables) return def _validate_sql(self, sql, params): @@ -5832,6 +6100,7 @@ _CB = ClipBoard class Paths(object): FILE_PICKER = 'com.sun.star.ui.dialogs.FilePicker' + FOLDER_PICKER = 'com.sun.star.ui.dialogs.FolderPicker' def __init__(self, path=''): if path.startswith('file://'): @@ -5941,7 +6210,7 @@ class Paths(object): @classmethod def get_dir(cls, init_dir=''): - folder_picker = create_instance(cls.FILE_PICKER) + folder_picker = create_instance(cls.FOLDER_PICKER) if not init_dir: init_dir = cls.documents init_dir = cls.to_url(init_dir) @@ -5950,7 +6219,7 @@ class Paths(object): path = '' if folder_picker.execute(): - path = cls.to_system(folder_picker.getDisplayDirectory()) + path = cls.to_system(folder_picker.getDirectory()) return path @classmethod @@ -6219,6 +6488,50 @@ class Paths(object): _P = Paths +class Dates(object): + + @classmethod + def date(cls, year, month, day): + d = datetime.date(year, month, day) + return d + + +class SpellChecker(object): + + def __init__(self): + service = 'com.sun.star.linguistic2.SpellChecker' + self._spellchecker = create_instance(service, True) + self._locale = LOCALE + + @property + def locale(self): + slocal = f'{self._locale.Language}-{self._locale.Country}' + return slocale + @locale.setter + def locale(self, value): + lang = value.split('-') + self._locale = Locale(lang[0], lang[1], '') + + def is_valid(self, word): + result = self._spellchecker.isValid(word, self._locale, ()) + return result + + def spell(self, word): + result = self._spellchecker.spell(word, self._locale, ()) + if result: + result = result.getAlternatives() + if not isinstance(result, tuple): + result = () + return result + + +def spell(word, locale=''): + sc = SpellChecker() + if locale: + sc.locale = locale + return sc.spell(word) + + def __getattr__(name): if name == 'active': return LODocs().active @@ -6244,6 +6557,8 @@ def __getattr__(name): return LOShortCuts() if name == 'clipboard': return ClipBoard + if name == 'dates': + return Dates raise AttributeError(f"module '{__name__}' has no attribute '{name}'") From 4eb0b51a6df9985f4117eebeeee44219608e61f6 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 5 Jun 2021 23:03:36 -0500 Subject: [PATCH 2/5] Add button and image for config proxy --- README.md | 2 +- files/ZAZPip_v0.8.0.oxt | Bin 87758 -> 89169 bytes source/images/proxy.svg | 54 ++++++++++++++++++++++++++++++++++++++ source/pythonpath/main.py | 26 +++++++++++++++--- 4 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 source/images/proxy.svg diff --git a/README.md b/README.md index 28f175c..85888d9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Extension for install and admin Python Pip in LibreOffice. Thanks! -https://gitlab.com/mauriciobaeza/zaz +https://git.cuates.net/elmau/zaz ### Software libre, no gratis diff --git a/files/ZAZPip_v0.8.0.oxt b/files/ZAZPip_v0.8.0.oxt index ae2c1a71bfd3434a7f0b10de0db646b86d24a103..f679fe249ee2f8f44acaa11d7d73d02cfe78e5a1 100644 GIT binary patch delta 5047 zcmZu#2Q*yYx1JfjMhhZ{-Xccty@VKTlnK$Jx6wniiP6jGj1nZGMu|?;1R)5bcM@$7 zM2lV?zqfwx{qxqlYn}DoyY{#D+54Qk&N}-WEXNsc#39y!U|~}M004Y|L1PthJP>5i zSd$GDr9ntHe$i!U>rn5(1^~ne0RXZal7ow-osB2h&BN9AC7xcGso z1#GOJ=S%)%xUyBgnd^H*Tdnb-Q6jA|iZ7h4N2{$ZqKTu~?2Q(Ej8Lb9XSm(^mh9sD zB zCf9iK~0SAmwZ&dbz|rjR8M%O^ML_1BK>LEMu=Y{ZN4vz^b9oTQQN*WuRnaoK#WPrUs8V@ zF{s#S#xEjsA#Gkg2@vx9z>$kg@bpvOuXZ@jijVJf5|U)h6!qEO8tMF%UHUnSN`|eE z)AL~WL;qPDw`tadnPYMpzC^vwgv@!t*Lj&977p_Tkk{mF_DIV|#ll6&4=N<8;xUM4 z8^7zd$!op~@Cx0Pqk+6j>Yd8YEVZj%lrFTvv<)212;WU&OX2JjJS~@MCea!wSUHm7 zoHBAuM}kikG8&{v(oLoqt|Jkt3(@a=y-)pg9&Q!5Feg=Nn46p*arjb(xVQVVhq;U@ zMF&;>&QW^dF`ex6AhUKL5I>5vx$h6cA?IjgW^B4cL^ujKb#=Ph(8DW1{3m2}DFZSPpy$JfU%-rK%$B6m3!F(`C6Dyk^Xgr6I6^Lei z8ZJc1f30LxR!7A`pcugLsVp67Ak=FWV|-94RdngV5jBS(>t&+n!?F~)TgA~%QGzp0 zP2I^Xrj%c&Z`n(tDV&Qo;U?rBgrM51Sabz>tSpv@y02IJbjvT2ZG=TVry6PX@RP`? z0eS=k&Y5bAZgJ0JS)vLEIt3B7W7VOb9A6a>*A?pr8?u1-s5DcU)e1?Tv&#aZ6e_5= z#OQ7$7OOC_doGWGqC_!HUF0dS2e0i8x-LOUllWyYHvzuk5TorQ{K7jhDKH64-9IN; zM!Csw+FJ%k&=(tbEJ5d#U@|0vKmhbmicY#3JeN$0?z8%Cpb%-+MSw^okhLbGQ$mg9 z)KxQ1j;5uxBoT6FJXIv)(0{2M<#`Y-AGDmY?AxjcunIWnqy@fGwW?*9>5^%QD|s^3 zv^F&~Y^O6!AR?X(H1@N_zZ>qxU#VD*+x3Jy(4XVZ3q$s_Rr(&J_&q1e6Kl!J^;8j7 z(OL<4r^U=FU&@miyypm=#G(S3_|Tb9Jc>TFxQ+!^1(wVR@$duU@S$(whHpR8UF(IC z#aCH8ViI?eC*i5=r6QeBYT@{h_0s-A`HY#OGrg&rcW~ar<3XZ*hSq z#GZ7n?u)J*QVBRn1OOl&nW0!Qz3I1S?`NN2Mp$+ z@8AE-VoTstjOL@s$>r~XFo5I4L`6v#n%-TbR8@=cdQ=B1l)i=&wZ|DMBP=}v_=Ds+ zhCle5pL61IS}%|G9P?cSTX_yHd)av&AO&*vyJGP61dnimv#+5G@mLqU1l{jO-L-(& z$=}+$u5F!v)Zk3(T)a}`yFRrjJIKWe_+iIbw84}YkQ`0~p1oKL{6&Nexm;#FJ|QER zT4id@EO~n!1bVApBqx};k9eix;kRtM0Q zS%(&odpoW?JxEfZRYt>KSF(#A{NPawiAg{PffiZS2Y^9>Ll%)?8e z5DVReUy6P^E0upj3t^Z*BZc@nMq(`^7F>V~tmjWa zkzo*^OqBHW6@LH~p^jg@7@ovYK;g%mkMwI@LRD|I#F~R-kdegILM54F1fd_YEqlOL0w; zI-ya6g|&P|E-d8Tue+GMWLr10=;fp_s4Cg3!OaaSQP|`{0+L)`4au6Ii>EQhgqeZ- zXw1n#uA{WAc4E80UwI4#pXSpIzMF0F)3}RxjK-s!;Lem&|NZKR{I$7wdPLo!K8jYw zEHO;un^je%*7;k*y`SRVMFhrPwLhm0z^(UOqzQGk_I^xN49@nrJ9*Z>Ijz_&w3K7; zRJlkf@Os4F)fZkPiYe@e+jP6WiKbxJBv%Vfk1;7reYTRyI|pgms+Bq~b-V{JFv^pM=fgPdTfg zU`>6JwZj_|#Xc#Euw*^AUpM;qF z>J{m2B{93+|A+3Kk>nV?YJyhLls5Ue>kxAuA8prgto$DVyUB5)xNT>_QQy%GwmEMf zgZ&DOpNZADy-Ewr$5C%lO~I1oeOgq{W};gEN4ibB z^tp{0r^-XTorFE!y*J4B3mibRl8i?`c{r0x$UR*2HftDI^*o3W3*5;`hYw%KNURN#?KyU~W-d9=5P6U*fnS1)@ZNxo+XA?b}^_DQ#8(_#>Zlp{L zR{9jkvW~%5Ju%DTLz1x%JcmXggVI5K}kmk zM(v{Yk9EoMi}K1w{ABwc?RXx+0xzM%hW3sGeRWIj$oZ1m=`($0|07#FWy zxu{@E9^&uB`cPm#A`eck%$RdX`>EdS;YG77{buF@oYRjog4bwRN>QMjwU4;Jiz%Ps z1g}1OhoYGI7fvo$oR{=sF(>gkI`g-b<#p{B704oRpN}in6BP)zJw2 z)AmOjX_$LXp&>47PTEjkJ8W*xpS2va?p7SW8e+3Y9OsxJ_2|52Q$$)meyrX8tu|r$ zu5E=36yjVJKjhx|<*_m_x%_x}w#z5tX{mwmyhF6Gg-zD~C8(x5Kd_1V> zOu{})KTx+~fxE%_v&(GU?9oG)LlOvwPC{p~Xd?}7O|jt7J<^I#$BMIa+(lIhMW|M+ zUG>DyrUKjr>!mY_rKYfeVe{=`?SiyHkK@!$jxyh%9`?tq*Phd;(zTqlh@2in&FIPu z62fDUpt!Xqvraa>?#bf}Gli5-6D?CB0J@fuT0Kt-Wg}i=1`1&n> z$Fbk9#9asNJ`%v%b|nY?HvE(ff7~nwsHFKz1d6@bUW;3Ow8|K0_CCLj-2qrHYlWI; zIWeyoyo`@Mz{9Hv2Oy^r&dMxY{YmvY~1|H3H=?B49YQ6(6nWjjGQ`{xO@OS^85Z^{nEj&0f#*cOSN|L<26f z>t{&oP9!yy<}N;hIdThMIH*M{UJ1Q!QXEXCCqF@qQ)gMa^vU7gOR2eXU@k;_q3$|9 z&RCnN!lcQ(lVbR`A-*Ww+M(e*8rqQd(VT zTKUis-0S+n+;U_-Y1(K{5wP7~`r74*j9ro#d{g>>*JU@kBwxQNh*cUeFZ6K`V35)&1ejnQxf@S!y+$D>L;J&vGlUQ}lfRp2Nq0AO;Wp$F1^n;3th9LMK+11HWAZj|IroPbO7YJ z$7MI2Km(x$P~=uDX;9Dv8sEO4bF_eJx45nagxsQtHc<4I;GzvI0rLHSa>|XO^3RhW z+)MknxPr!o0{K8~3}{g(kdevYMvCz}O}%0P0su$20070mjyISe%*BlMf&yhhek{pv z8K}^NP#_t43JRnH;c=l4p+Gqh;lpGB4ob9|E|3^;8!8NBuL-jU05om}`Cp-W!2gqm zpQWFhgBzb4+)f7q1W{rAw?_1L>+^pz(MSgX++KRwyTaWpz3jm*mJV<}x0nCv|4%8Q zpDS9@Zm4||AOOu@^Q-44Gw0qz6YBwaKzC)(;(9=7P^ujIjy{kH?XM3cM?<86WW@iv zq-hf;QH_*%58kTl|O13kp%c{a`|a^?}4_CIcWN zs7DhmZva#Ug=ya+tpJ?Q%h&5aQ@>p~5EJSO`(_i6AOPU*ziHfHey|c0Jz@Z4{inWp zn(LojH!Ol1*5CE{>7wt#fb6$_hcpaGk2R?WM1Rl%(vto?5jyzB2x8Vp=fZ%@q>KPY Ozz`k);H-ZW6YyW@qdgb^ delta 3483 zcmY*cXH-+$*3F?@q)BfPB#3lEuc3={r9-G9y*GhScZ>*J z5S1bzgcb`*2~t0}~sFGT-4Gy`)hkVJq#AA{Lmv80cwCL)#T*tmdo0$ z?IfArS&O_Ma^?%h(_eBt)dwtCrPGP8JrRQ;;6b~{aH9vo2=NH1#eQjhy`3EGB2)q% z5o~jW9nm@sdc_w+Zfx>kZ!|e{t9#K#zJR1w3JPTgP57kK9V@36Vt;&4|d{>?>R()+eU z*{E33#znLDq+!x+PxNn4lXtyuB7y9yLavLy`X^@(+i;%A)NFP_&}p#hV12}z@#tV{ zGY-FeC|E4UWOupD(ffeL;6RIM)ODkS*v0fqutr1X-pV?D@hlD zE~fpt;uh{h1r*A7d zP|DL@;o?MomvUn)%sqX*&s8>UHgq8+U?a(B8t1GdYyeaHX!c^T+~J=eKJ~ZpHiEQ7 zd)9J|hmwA=!=S=?{Vw!b%LB_4 z#&rB`RlKZ`SY)Dd+5NP=H*fW-46)oppdmMYO`IQQIjvas$e6KSY=;$`l8L75(xoch zS*NLR;`;hg=$^8%oP*?WWgcl`bTH_Lz(TQ9vucP%%)|wm$E9R-j-VOgpHJ#~_d<8$GZ%WNfD3L0BX7E^l zvOKgi58CcUv|^U-AiJI%DC@wTQrNfIHm9aaXZxEaA)XrJk92Om)q76Rn>vz9q}xBZfB1cg;qgheA;mumlyYjTg1dygJ|4(UE8uA)PWp9I(xH(PdCML$|S zWNF{>eTRFtM{Q3%vp|RLjSkO86Rcgs?Q?6)#t$uGXsBrRPiDK-UzL>k^@;wblb!|p zB(W(GIb8ksnFh<%j6SthG7c7i->>_+iy5l+_taY9nlg%gkk&Ql2Ax)M_YCS2UK4Z)DW%w<3)h zzO&}>ecYW;VTj5P7q_8B(wOx9gZ)lWhvPa`YbNbfOUs$Uo}-9V?YN|#w>*)fs!hnJ z&Yv?Jsa^z#B$)pwOH7Roj~E8UM+i=q#7LPVvBwJctADp0?s_?A*zmu(b&{U7&P*D> zG>$_g4So5@HC0mt&U8~#FTB$^^)JF)g99a5 z)>J($J{1jW{6x--@^%}Sc~Ln1b)-&J$Vd3STl5)8O35~W*9Vm2~*%cUbn7bRNS5q+;lR?mH{*5O={Rx{b0GBYM3z1} zgu(gpHAK$nO)yTu<=fG=m#1VqK}ES&$Y4Bbxz3eVe`YW`?vZd~?tUuA#B)rgHj%j+ zt_7m>?eX6Ce?m6sr?m=QZymoLS}!o9uyi!dT<9s&I8=h=x;QB6_(T%Qv|o5c0}P6l z;K!>haVOL8p=or;c6536K3y^Or~L#G=rx6B{zywoOnYPK*L)4b6n z(Ht8brqDNXa=veQi+$&A(&fEQZB^E|sdqR6OK-5(CkB73cs7qrGmc!QJx&aqZ-E$h zWYV#WR?i2)Lf`ku(KMZ7hCNaCyIGMbBB@%8goYl@4+XcA3{oY z0OBmm&h9jex)8$H0lE}p%Fr7-K%LSY1we&503UQ{53oVv_5hqxL;c?nKV;$nFhiKL zP^`v(Ts8K9B;{Y)090fQ@I%M;fCMGom46u@WaMzFY3lt)gB$>HiX=mb!4cqwW*h)% z3T@*vA|`;U>9?dnq#aWMFjx`=494-_Zch=Pcx(bdH!T28D8Lb5IBPq`@w9El>rk#E zAauq%&v>>eG +image/svg+xml diff --git a/source/pythonpath/main.py b/source/pythonpath/main.py index 5df7702..48bc63a 100644 --- a/source/pythonpath/main.py +++ b/source/pythonpath/main.py @@ -9,8 +9,9 @@ _ = None TITLE = 'ZAZ-PIP' URL_PIP = 'https://bootstrap.pypa.io/get-pip.py' +URL_TEST = 'http://duckduckgo.com' PIP = 'pip' -URL_GIT = 'https://git.elmau.net/elmau' +URL_GIT = 'https://git.cuates.net/elmau/zaz-pip' ICON_OK = 'ok.svg' ICON_QUESTION = 'question.svg' @@ -298,6 +299,10 @@ class Controllers(object): self._install(path=path) return + def cmd_proxy_action(self, event): + app.msgbox('Config Proxy') + return + def _create_dialog(): BUTTON_WH = 20 @@ -408,6 +413,17 @@ def _create_dialog(): dialog.add_control(args) dialog.center(dialog.link_proyect, y=-5) + args = { + 'Type': 'Button', + 'Name': 'cmd_proxy', + 'Width': 15, + 'Height': 15, + 'Step': 10, + 'ImageURL': 'proxy.svg', + 'FocusOnClick': False, + } + dialog.add_control(args) + args = { 'Type': 'Listbox', 'Name': 'lst_log', @@ -534,6 +550,10 @@ def _create_dialog(): } dialog.add_control(args) + dialog.cmd_proxy.move(dialog.link_proyect, x=5, y=0) + controls = (dialog.link_proyect, dialog.cmd_proxy) + dialog.center(controls) + controls = (dialog.cmd_home, dialog.cmd_search, dialog.cmd_install, dialog.cmd_uninstall, dialog.cmd_shell) dialog.lbl_package.move(dialog.cmd_home) @@ -544,10 +564,10 @@ def _create_dialog(): dialog.lst_package.center() dialog.txt_search.center() dialog.center(controls) - dialog.center((dialog.txt_search, dialog.cmd_explore)) + controls = (dialog.txt_search, dialog.cmd_explore) + dialog.center(controls) dialog.step = 10 - dialog.cmd_install_pip.visible = not exists_pip dialog.cmd_admin_pip.visible = exists_pip dialog.lst_log.visible = False From a49a1ad4d86585b034f4fcd679ba70eb04550b32 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 12 Jun 2021 23:04:37 -0500 Subject: [PATCH 3/5] Add config proxy --- CHANGELOG | 2 +- easymacro.py | 72 ++++++------- files/ZAZPip_v0.8.0.oxt | Bin 89169 -> 90365 bytes source/images/delete.svg | 4 + source/images/save.svg | 8 ++ source/pythonpath/easymacro.py | 72 ++++++------- source/pythonpath/main.py | 191 ++++++++++++++++++++++++++++++++- 7 files changed, 263 insertions(+), 86 deletions(-) create mode 100755 source/images/delete.svg create mode 100644 source/images/save.svg diff --git a/CHANGELOG b/CHANGELOG index 2f61d6e..8acdd9c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -v 0.8.0 [06-jun-2021] +v 0.8.0 [13-jun-2021] - Update easymacro.py - Add proxy config diff --git a/easymacro.py b/easymacro.py index 2c7d5f3..cbb26a0 100644 --- a/easymacro.py +++ b/easymacro.py @@ -2881,6 +2881,23 @@ class LOCalcRange(object): self.obj.fillAuto(0, source) return + def _cast(self, t, v): + if not t: + return v + + if t == datetime.date: + nv = datetime.date.fromordinal(int(v) + DATE_OFFSET) + else: + nv = t(v) + return nv + + def get_data(self, types): + values = [ + [self._cast(types[i], v) for i, v in enumerate(row)] + for row in self.data + ] + return values + class LOWriterStyles(object): @@ -3944,6 +3961,7 @@ class LODocs(object): return doc def __len__(self): + # ~ len(self._desktop.Components) for i, _ in enumerate(self._desktop.Components): pass return i + 1 @@ -4713,6 +4731,13 @@ class UnoText(UnoBaseObject): def value(self, value): self.model.Text = value + @property + def echochar(self): + return chr(self.model.EchoChar) + @echochar.setter + def echochar(self, value): + self.model.EchoChar = ord(value[0]) + def validate(self): return @@ -5553,6 +5578,11 @@ class LODialog(object): self.obj.dispose() return value + def set_values(self, data): + for k, v in data.items(): + self._controls[k].value = v + return + class LOSheets(object): @@ -6645,48 +6675,6 @@ def get_fonts(): return device.FontDescriptors -# ~ From request -# ~ https://github.com/psf/requests/blob/master/requests/structures.py#L15 -class CaseInsensitiveDict(MutableMapping): - - def __init__(self, data=None, **kwargs): - self._store = OrderedDict() - if data is None: - data = {} - self.update(data, **kwargs) - - def __setitem__(self, key, value): - # Use the lowercased key for lookups, but store the actual - # key alongside the value. - self._store[key.lower()] = (key, value) - - def __getitem__(self, key): - return self._store[key.lower()][1] - - def __delitem__(self, key): - del self._store[key.lower()] - - def __iter__(self): - return (casedkey for casedkey, mappedvalue in self._store.values()) - - def __len__(self): - return len(self._store) - - def lower_items(self): - """Like iteritems(), but with all lowercase keys.""" - values = ( - (lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items() - ) - return values - - # Copy is required - def copy(self): - return CaseInsensitiveDict(self._store.values()) - - def __repr__(self): - return str(dict(self.items())) - - # ~ https://en.wikipedia.org/wiki/Web_colors def get_color(value): COLORS = { diff --git a/files/ZAZPip_v0.8.0.oxt b/files/ZAZPip_v0.8.0.oxt index f679fe249ee2f8f44acaa11d7d73d02cfe78e5a1..b422fd3e12ae0b4f7a0c5b8d801e3a366b9dbe1a 100644 GIT binary patch delta 43682 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%0A??;3s|FLHUwJ&uAm#<3+Q5d_8nw45k?iqhgpP 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 diff --git a/source/images/delete.svg b/source/images/delete.svg new file mode 100755 index 0000000..534460e --- /dev/null +++ b/source/images/delete.svg @@ -0,0 +1,4 @@ + + + + diff --git a/source/images/save.svg b/source/images/save.svg new file mode 100644 index 0000000..49811f9 --- /dev/null +++ b/source/images/save.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/source/pythonpath/easymacro.py b/source/pythonpath/easymacro.py index 2c7d5f3..cbb26a0 100644 --- a/source/pythonpath/easymacro.py +++ b/source/pythonpath/easymacro.py @@ -2881,6 +2881,23 @@ class LOCalcRange(object): self.obj.fillAuto(0, source) return + def _cast(self, t, v): + if not t: + return v + + if t == datetime.date: + nv = datetime.date.fromordinal(int(v) + DATE_OFFSET) + else: + nv = t(v) + return nv + + def get_data(self, types): + values = [ + [self._cast(types[i], v) for i, v in enumerate(row)] + for row in self.data + ] + return values + class LOWriterStyles(object): @@ -3944,6 +3961,7 @@ class LODocs(object): return doc def __len__(self): + # ~ len(self._desktop.Components) for i, _ in enumerate(self._desktop.Components): pass return i + 1 @@ -4713,6 +4731,13 @@ class UnoText(UnoBaseObject): def value(self, value): self.model.Text = value + @property + def echochar(self): + return chr(self.model.EchoChar) + @echochar.setter + def echochar(self, value): + self.model.EchoChar = ord(value[0]) + def validate(self): return @@ -5553,6 +5578,11 @@ class LODialog(object): self.obj.dispose() return value + def set_values(self, data): + for k, v in data.items(): + self._controls[k].value = v + return + class LOSheets(object): @@ -6645,48 +6675,6 @@ def get_fonts(): return device.FontDescriptors -# ~ From request -# ~ https://github.com/psf/requests/blob/master/requests/structures.py#L15 -class CaseInsensitiveDict(MutableMapping): - - def __init__(self, data=None, **kwargs): - self._store = OrderedDict() - if data is None: - data = {} - self.update(data, **kwargs) - - def __setitem__(self, key, value): - # Use the lowercased key for lookups, but store the actual - # key alongside the value. - self._store[key.lower()] = (key, value) - - def __getitem__(self, key): - return self._store[key.lower()][1] - - def __delitem__(self, key): - del self._store[key.lower()] - - def __iter__(self): - return (casedkey for casedkey, mappedvalue in self._store.values()) - - def __len__(self): - return len(self._store) - - def lower_items(self): - """Like iteritems(), but with all lowercase keys.""" - values = ( - (lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items() - ) - return values - - # Copy is required - def copy(self): - return CaseInsensitiveDict(self._store.values()) - - def __repr__(self): - return str(dict(self.items())) - - # ~ https://en.wikipedia.org/wiki/Web_colors def get_color(value): COLORS = { diff --git a/source/pythonpath/main.py b/source/pythonpath/main.py index 48bc63a..16b0069 100644 --- a/source/pythonpath/main.py +++ b/source/pythonpath/main.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import os import easymacro as app @@ -32,6 +33,17 @@ PACKAGES = { def open_dialog_pip(): dialog = _create_dialog() + + proxy = app.get_config('proxy', {}, TITLE) + if proxy: + app.debug(proxy) + HOST = proxy['txt_proxy_host'] + PORT = proxy['txt_proxy_port'] + USER = proxy['txt_proxy_user'] + PASS = proxy['txt_proxy_pass'] + os.environ['http_proxy'] = f'http://{USER}:{PASS}@{HOST}:{PORT}' + os.environ['https_proxy'] = f'http://{USER}:{PASS}@{HOST}:{PORT}' + dialog.open() return @@ -300,7 +312,46 @@ class Controllers(object): return def cmd_proxy_action(self, event): - app.msgbox('Config Proxy') + dialog = _create_dialog_proxy() + data = app.get_config('proxy', {}, TITLE) + dialog.set_values(data) + dialog.open() + return + + +class ControllersProxy(object): + + def __init__(self, dialog): + self.d = dialog + + def cmd_proxy_save_action(self, event): + data = dict( + txt_proxy_host = self.d.txt_proxy_host.value, + txt_proxy_port = self.d.txt_proxy_port.value, + txt_proxy_user = self.d.txt_proxy_user.value, + txt_proxy_pass = self.d.txt_proxy_pass.value, + ) + msg = _('Are you shure save data?') + if not app.question(msg): + return + + app.set_config('proxy', data, TITLE) + + msg = _('Save data sucesfully') + app.msgbox(msg) + self.d.close() + return + + def cmd_proxy_delete_action(self, event): + msg = _("Are you shure delete data?") + if not app.question(msg): + return + + app.set_config('proxy', {}, TITLE) + + msg = _('Delete data sucesfully') + app.msgbox(msg) + self.d.close() return @@ -573,3 +624,141 @@ def _create_dialog(): dialog.lst_log.visible = False return dialog + + +def _create_dialog_proxy(): + args= { + 'Name': 'dlg_proxy', + 'Title': 'Zaz-Pip - Config Proxy', + 'Width': 150, + 'Height': 100, + } + dialog = app.create_dialog(args) + dialog.id = ID_EXTENSION + dialog.events = ControllersProxy + + args = { + 'Type': 'Label', + 'Name': 'lbl_proxy_host', + 'Label': 'Host: ', + 'Width': 40, + 'Height': 12, + 'Border': 1, + 'Align': 2, + 'VerticalAlign': 1, + 'X': 5, + 'Y': 5, + } + dialog.add_control(args) + + args = { + 'Type': 'Text', + 'Name': 'txt_proxy_host', + 'Width': 95, + 'Height': 12, + 'Border': 0, + } + dialog.add_control(args) + + args = { + 'Type': 'Label', + 'Name': 'lbl_proxy_port', + 'Label': 'Port: ', + 'Width': 40, + 'Height': 12, + 'Border': 1, + 'Align': 2, + 'VerticalAlign': 1, + } + dialog.add_control(args) + + args = { + 'Type': 'Text', + 'Name': 'txt_proxy_port', + 'Width': 95, + 'Height': 12, + 'Border': 0, + } + dialog.add_control(args) + + args = { + 'Type': 'Label', + 'Name': 'lbl_proxy_user', + 'Label': 'User: ', + 'Width': 40, + 'Height': 12, + 'Border': 1, + 'Align': 2, + 'VerticalAlign': 1, + } + dialog.add_control(args) + + args = { + 'Type': 'Text', + 'Name': 'txt_proxy_user', + 'Width': 95, + 'Height': 12, + 'Border': 0, + } + dialog.add_control(args) + + args = { + 'Type': 'Label', + 'Name': 'lbl_proxy_pass', + 'Label': 'Password: ', + 'Width': 40, + 'Height': 12, + 'Border': 1, + 'Align': 2, + 'VerticalAlign': 1, + } + dialog.add_control(args) + + args = { + 'Type': 'Text', + 'Name': 'txt_proxy_pass', + 'Width': 95, + 'Height': 12, + 'Border': 0, + } + txt = dialog.add_control(args) + txt.echochar = '*' + + args = { + 'Type': 'Button', + 'Name': 'cmd_proxy_save', + 'Label': _('Save'), + 'Width': 50, + 'Height': 15, + 'ImageURL': 'save.svg', + 'ImagePosition': 1, + 'FocusOnClick': False, + } + dialog.add_control(args) + + args = { + 'Type': 'Button', + 'Name': 'cmd_proxy_delete', + 'Label': _('Delete'), + 'Width': 50, + 'Height': 15, + 'ImageURL': 'delete.svg', + 'ImagePosition': 1, + 'FocusOnClick': False, + } + dialog.add_control(args) + + dialog.txt_proxy_host.move(dialog.lbl_proxy_host, x=5, y=0) + dialog.lbl_proxy_port.move(dialog.lbl_proxy_host) + dialog.txt_proxy_port.move(dialog.lbl_proxy_port, x=5, y=0) + dialog.lbl_proxy_user.move(dialog.lbl_proxy_port) + dialog.txt_proxy_user.move(dialog.lbl_proxy_user, x=5, y=0) + dialog.lbl_proxy_pass.move(dialog.lbl_proxy_user) + dialog.txt_proxy_pass.move(dialog.lbl_proxy_pass, x=5, y=0) + + dialog.cmd_proxy_save.move(dialog.lbl_proxy_pass, y=10) + dialog.cmd_proxy_delete.move(dialog.lbl_proxy_pass, y=10) + controls = (dialog.cmd_proxy_save, dialog.cmd_proxy_delete) + dialog.center(controls) + + return dialog From b31fa8247f7f3f6d23a1118d2e1774eed61f51bb Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Mon, 14 Jun 2021 16:34:30 -0500 Subject: [PATCH 4/5] Modify size icons --- conf.py | 5 +++-- files/ZAZPip_v0.8.0.oxt | Bin 90365 -> 90368 bytes source/description.xml | 4 ++-- source/images/proxy.svg | 14 +++++++------- source/images/python.svg | 39 ++++++++++++++++++++------------------- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/conf.py b/conf.py index 5c8c889..5b3edec 100644 --- a/conf.py +++ b/conf.py @@ -46,9 +46,10 @@ PATH_MSGMERGE = 'msgmerge' # ~ Show in extension manager +URL_GIT = 'https://git.cuates.net/elmau/zaz-pip' PUBLISHER = { - 'en': {'text': 'El Mau', 'link': 'https://gitlab.com/mauriciobaeza'}, - 'es': {'text': 'El Mau', 'link': 'https://gitlab.com/mauriciobaeza'}, + 'en': {'text': 'El Mau', 'link': URL_GIT}, + 'es': {'text': 'El Mau', 'link': URL_GIT}, } # ~ Name in this folder for copy diff --git a/files/ZAZPip_v0.8.0.oxt b/files/ZAZPip_v0.8.0.oxt index b422fd3e12ae0b4f7a0c5b8d801e3a366b9dbe1a..9875db7808d836a90f4b64ccabcdad56cd52cda8 100644 GIT binary patch delta 3562 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

7FzCj<&Mut2J&X84wtxDT=e7Y~8!qxsi&|M| zO)KTG^p`zAH$v3FGz6 zyhrl&917LO_fm5a*B5$I)4zaViG<|zW~Q5UzQdF#QO*!u*PQu#Af*bqspq{>-|If| zEpv=-wP)9HydZ!jn$^c^PZwQIYN?CWW#vz{?=x&*=oTRi)_L7_-_tz9hUdZi-r>pX z_w*mW>&7>-)nB`!VSlIjmgtiN~g3oS6tTGlb+juA2KWg|?ihl07wms*oXx6Wf!46rh_~GVHgmL(*@XMqs5jE!T z{)k$d+L?Jt=who>3&;ERjPw4^_6 zR6+^!GNje9;{GPl;at0OmFGi_ZD3I1E{%{}GxO+_s)kiD`Fa+OQ?OrQ^M~*PaDlWw zA2Qc;^R;HDR=3o_CzMFZtkwz1yOi=KlW{y{weMtRImr|IdsqEbP8A1{AsA7D4uU5> zk?MX!2yq9%4alqA&86gGu#4*^~QbAC`2Ad`>%V$sPpn6S3TH zXK^FyENAu$#b>faf6@53)I=-|&Ij0^H*w;ZCA79{V`zDxPT!X=;-qNV@ljsHDS;Z7 zA&ak^`<~B<2OLfI6Yng?ZRb>Y{i5FIdYvhQJpH)EE)%r zKUo>P)0-WM&Mm(G>%sveCc6V=$;jl$ZPa7<*&H<=pixG>zABc4&W$FU8NP1Zz2rpc zB+SRdlvC-XVO(np(NIx4H9>azhPc?qbYGpP8w_E_#%B<`i)`c2=qEz6nX4p@*|kS0 z{W7AVaXe6){z_gC&AtB2M!mMc{AJS*48`AAMY_Pxm=x)o)V-SGH>K7| z=z`rGKud@N_aZW=&E06*^P8?s)3U##ewu)OTo^AKJ$qf&APgyKlM~m)xviZ0YNR8h zjdAx2d+Co9jWXC`zOHPVCPUNX*gXb+#`N1C<1fBD<))YQ!Un4+Ofpxb;X~Fc z{2lChemycASqYa>c%v9O{=b8Q)(7`nuz!<=Q8fZWf zhy?@CfC|6|)}R4(KptF011Mksl(z-c02t_Q3y2E+GZfN8AgqVe{r^tUoi4D#_Ry0I zE+4rlfl?Si=s2)G1~>&g0$nkH2CxB^9FYic0Rw0PQJ|z9APf$o0qRr#@56_{Z2v<& zq(yfMLD$1u$58Qhhfwxlu^oV-n$1ZE9&&;^b^xQ$QCU0@=95z(1ak5{6@=#>03;}8 z59k28pqo9QPW4tByof!FT7d=Fz;SzkkLrc)kwy^Q#sci1I2Pao)<8`xU;qud0)Pbu zfB^U$3&=qU2FH>RxQhj3ptZ*Twc)S;Gx!h(2m-%BUmTzZ)PY1CAak4(m2lDl_2DiQ zNdl Q)tMgMl%dVFIgA7O529m5^8f$< diff --git a/source/description.xml b/source/description.xml index 60aaaf1..437e820 100644 --- a/source/description.xml +++ b/source/description.xml @@ -14,8 +14,8 @@ - El Mau - El Mau + El Mau + El Mau diff --git a/source/images/proxy.svg b/source/images/proxy.svg index fadd828..b8eecc3 100644 --- a/source/images/proxy.svg +++ b/source/images/proxy.svg @@ -3,12 +3,12 @@ version="1.0" x="0px" y="0px" - viewBox="0 0 24 24" + viewBox="0 0 18 18" enable-background="new 0 0 100 100" xml:space="preserve" id="svg10" - width="24" - height="24" + width="18" + height="18" sodipodi:docname="proxy.svg" inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" @@ -31,8 +31,8 @@ id="namedview8" showgrid="false" inkscape:zoom="18.185903" - inkscape:cx="18.613319" - inkscape:cy="9.7053198" + inkscape:cx="18.640812" + inkscape:cy="9.7053196" inkscape:window-x="0" inkscape:window-y="42" inkscape:window-maximized="1" @@ -41,10 +41,10 @@ inkscape:pagecheckerboard="0" />image/svg+xml image/svg+xml Date: Mon, 14 Jun 2021 16:37:30 -0500 Subject: [PATCH 5/5] Modify size icons --- files/ZAZPip_v0.8.0.oxt | Bin 90368 -> 90368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/files/ZAZPip_v0.8.0.oxt b/files/ZAZPip_v0.8.0.oxt index 9875db7808d836a90f4b64ccabcdad56cd52cda8..d134196436a44063a6b5977919a168fbfc6550d9 100644 GIT binary patch delta 151 zcmZoT#M*F(l{>(jnMH(wfq{b|XCwCnM#h}Ya~L@lfz&dkBm6)r+vr*ukaAjSw}vri zdt)f08Bopk9bt?yKzh1p1fwUAijQFQ0a9xs7|nr_Pa+tTnSiuMG@~6zQF{zy9gxcw g%XkkcJRN9;@bn+?jQT*fMgpS?kjjNnn-UoP0GUoMX#fBK delta 151 zcmZoT#M*F(l{>(jnMH(wfq{cTb0hZzMn=uea~L@lfz&dkBm6)r+vr*ukaAjSw}w%3 zdt)f08Bopk9bt?yKzh1p1fwUAijQFQ0a9xs7|nr_Pa+tTnSiuMG@~6zQF{zy9gxcw g%XkkcJRN9;@bn+?jQT*fMgpS?kjjNnn-UoP07N<|vj6}9