From 08f5a48bc2c6d10c04f65cd44ff112e045819bb8 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 14 Oct 2021 22:25:48 -0500 Subject: [PATCH] Add property view_web to Writer --- source/easymacro.py | 135 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 118 insertions(+), 17 deletions(-) diff --git a/source/easymacro.py b/source/easymacro.py index 445b00e..8b19453 100644 --- a/source/easymacro.py +++ b/source/easymacro.py @@ -94,6 +94,7 @@ from com.sun.star.awt import XFocusListener from com.sun.star.awt import XKeyListener from com.sun.star.awt import XItemListener from com.sun.star.awt import XTabListener +from com.sun.star.awt import XSpinListener from com.sun.star.awt import XWindowListener from com.sun.star.awt import XTopWindowListener from com.sun.star.awt.grid import XGridDataListener @@ -729,8 +730,7 @@ def sha512(data): def get_config(key='', prefix='conf', default={}): name_file = FILE_NAME_CONFIG.format(prefix) - values = None - # ~ path = _P.join(_P.config('UserConfig'), name_file) + values = {} path = _P.join(_P.user_config, name_file) if not _P.exists(path): return default @@ -744,9 +744,8 @@ def get_config(key='', prefix='conf', default={}): def set_config(key, value, prefix='conf'): name_file = FILE_NAME_CONFIG.format(prefix) - # ~ path = _P.join(_P.config('UserConfig'), name_file) path = _P.join(_P.user_config, name_file) - values = get_config(default={}, prefix=prefix) + values = get_config(prefix=prefix, default={}) values[key] = value result = _P.to_json(path, values) return result @@ -2584,6 +2583,13 @@ class LOCalcRange(object): d = (data.hour * 3600 + data.minute * 60 + data.second) / SECONDS_DAY self.obj.setValue(d) + @property + def str(self): + return self.obj.String + @str.setter + def str(self, value): + self.obj.setString(value) + @property def date(self): value = int(self.obj.Value) @@ -3504,6 +3510,7 @@ class LOWriter(LODocument): def __init__(self, obj): super().__init__(obj) self._type = WRITER + self._settings = self._cc.ViewSettings @property def text(self): @@ -3550,10 +3557,6 @@ class LOWriter(LODocument): def draw_page(self): return LODrawPage(self.obj.DrawPage) - @property - def view_cursor(self): - return self._cc.ViewCursor - @property def cursor(self): return self.obj.Text.createTextCursor() @@ -3581,10 +3584,17 @@ class LOWriter(LODocument): @property def zoom(self): - return self._cc.ViewSettings.ZoomValue + return self._settings.ZoomValue @zoom.setter def zoom(self, value): - self._cc.ViewSettings.ZoomValue = value + self._settings.ZoomValue = value + + @property + def view_web(self): + return self._settings.ShowOnlineLayout + @view_web.setter + def view_web(self, value): + self._settings.ShowOnlineLayout = value def goto_start(self): self.view_cursor.gotoStart(False) @@ -4377,6 +4387,7 @@ def _add_listeners(events, control, name=''): 'addItemListener': EventsItem, 'addKeyListener': EventsKey, 'addTabListener': EventsTab, + 'addSpinListener': EventsSpin, } if hasattr(control, 'obj'): control = control.obj @@ -4435,6 +4446,36 @@ class EventsListenerBase(unohelper.Base, XEventListener): self._window.setMenuBar(None) +class EventsSpin(EventsListenerBase, XSpinListener): + + def __init__(self, controller, name): + super().__init__(controller, name) + + def up(self, event): + event_name = f'{self.name}_up' + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + def down(self, event): + event_name = f'{self.name}_up' + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + def first(self, event): + event_name = f'{self.name}_first' + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + def last(self, event): + event_name = f'{self.name}_last' + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + class EventsMouse(EventsListenerBase, XMouseListener, XMouseMotionListener): def __init__(self, controller, name): @@ -4449,7 +4490,10 @@ class EventsMouse(EventsListenerBase, XMouseListener, XMouseMotionListener): return def mouseReleased(self, event): - pass + event_name = '{}_after_click'.format(self._name) + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return def mouseEntered(self, event): pass @@ -4976,7 +5020,10 @@ class UnoBaseObject(object): else: self.x = origin.x if y: - self.y = origin.y + origin.height + y + h = origin.height + if y < 0: + h = 0 + self.y = origin.y + h + y else: self.y = origin.y @@ -5028,6 +5075,13 @@ class UnoButton(UnoBaseObject): def value(self, value): self.model.Label = value + @property + def image(self): + return self.model.ImageURL + @image.setter + def image(self, value): + self.model.ImageURL = _P.to_url(value) + class UnoRadio(UnoBaseObject): @@ -5099,7 +5153,10 @@ class UnoText(UnoBaseObject): return chr(self.model.EchoChar) @echochar.setter def echochar(self, value): - self.model.EchoChar = ord(value[0]) + if value: + self.model.EchoChar = ord(value[0]) + else: + self.model.EchoChar = 0 def validate(self): return @@ -5635,6 +5692,44 @@ class UnoPages(UnoBaseObject): return +class UnoSpinButton(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def type(self): + return 'spinbutton' + + @property + def value(self): + return self.model.Label + @value.setter + def value(self, value): + self.model.Label = value + + +class UnoNumericField(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def type(self): + return 'numeric' + + @property + def int(self): + return int(self.value) + + @property + def value(self): + return self.model.Value + @value.setter + def value(self, value): + self.model.Value = value + + UNO_CLASSES = { 'label': UnoLabel, 'link': UnoLabelLink, @@ -5648,6 +5743,8 @@ UNO_CLASSES = { 'tree': UnoTree, 'grid': UnoGrid, 'pages': UnoPages, + 'spinbutton': UnoSpinButton, + 'numeric': UnoNumericField, } UNO_MODELS = { @@ -5665,17 +5762,17 @@ UNO_MODELS = { 'pages': 'com.sun.star.awt.UnoMultiPageModel', 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel', 'combobox': 'com.sun.star.awt.UnoControlComboBoxModel', + 'spinbutton': 'com.sun.star.awt.UnoControlSpinButtonModel', + 'numeric': 'com.sun.star.awt.UnoControlNumericFieldModel', } # ~ 'CurrencyField': 'com.sun.star.awt.UnoControlCurrencyFieldModel', # ~ 'DateField': 'com.sun.star.awt.UnoControlDateFieldModel', # ~ 'FileControl': 'com.sun.star.awt.UnoControlFileControlModel', # ~ 'FormattedField': 'com.sun.star.awt.UnoControlFormattedFieldModel', -# ~ 'NumericField': 'com.sun.star.awt.UnoControlNumericFieldModel', # ~ 'PatternField': 'com.sun.star.awt.UnoControlPatternFieldModel', # ~ 'ProgressBar': 'com.sun.star.awt.UnoControlProgressBarModel', # ~ 'ScrollBar': 'com.sun.star.awt.UnoControlScrollBarModel', # ~ 'SimpleAnimation': 'com.sun.star.awt.UnoControlSimpleAnimationModel', -# ~ 'SpinButton': 'com.sun.star.awt.UnoControlSpinButtonModel', # ~ 'Throbber': 'com.sun.star.awt.UnoControlThrobberModel', # ~ 'TimeField': 'com.sun.star.awt.UnoControlTimeFieldModel', @@ -5697,6 +5794,8 @@ class LODialog(object): 'pages': 'com.sun.star.awt.UnoMultiPageModel', 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel', 'combobox': 'com.sun.star.awt.UnoControlComboBoxModel', + 'spinbutton': 'com.sun.star.awt.UnoControlSpinButtonModel', + 'numeric': 'com.sun.star.awt.UnoControlNumericFieldModel', } def __init__(self, args): @@ -5776,6 +5875,9 @@ class LODialog(object): def path(self): return self._path @property + def path_images(self): + return _P.join(self.path, DIR['images']) + @property def id(self): return self._id @id.setter @@ -6546,7 +6648,7 @@ class ClipBoard(object): def __init__(self, text): df = DataFlavor() df.MimeType = ClipBoard.CLIPBOARD_FORMAT_TEXT - df.HumanPresentableName = "encoded text utf-16" + df.HumanPresentableName = 'encoded text utf-16' self.flavors = (df,) self._data = text @@ -6556,7 +6658,6 @@ class ClipBoard(object): def getTransferDataFlavors(self): return self.flavors - @classmethod def set(cls, value): ts = cls.TextTransferable(value)