Add property url from command buttons forms

This commit is contained in:
Mauricio Baeza 2021-07-09 14:57:43 -05:00
parent 87c8ead015
commit 19e211ce0a
1 changed files with 55 additions and 11 deletions

View File

@ -225,6 +225,11 @@ class CellDeleteMode():
CDM = CellDeleteMode
class FormButtonType():
from com.sun.star.form.FormButtonType import PUSH, SUBMIT, RESET, URL
FBT = FormButtonType
OS = platform.system()
IS_WIN = OS == 'Windows'
IS_MAC = OS == 'Darwin'
@ -1750,7 +1755,8 @@ class LOSheetTables(object):
return
class LOFormControl(LOBaseObject):
# ~ class LOFormControl(LOBaseObject):
class LOFormControl():
EVENTS = {
'action': 'actionPerformed',
'click': 'mousePressed',
@ -1761,21 +1767,25 @@ class LOFormControl(LOBaseObject):
}
def __init__(self, obj, view, form):
super().__init__(obj)
self._obj = obj
self._view = view
self._form = form
self._m = view.Model
self._index = -1
def __setattr__(self, name, value):
if name in ('_form', '_view', '_m', '_index'):
self.__dict__[name] = value
else:
super().__setattr__(name, value)
# ~ def __setattr__(self, name, value):
# ~ if name in ('_form', '_view', '_m', '_index'):
# ~ self.__dict__[name] = value
# ~ else:
# ~ super().__setattr__(name, value)
def __str__(self):
return f'{self.name} ({self.type}) {[self.index]}'
@property
def obj(self):
return self._obj
@property
def form(self):
return self._form
@ -1812,6 +1822,30 @@ class LOFormControl(LOBaseObject):
def enabled(self, value):
self._m.Enabled = value
@property
def anchor(self):
return self.obj.Anchor
@anchor.setter
def anchor(self, value):
size = None
if hasattr(value, 'obj'):
size = getattr(value, 'size', None)
value = value.obj
self.obj.Anchor = value
if not size is None:
self.size = size
try:
self.obj.ResizeWithCell = True
except:
pass
@property
def size(self):
return self.obj.Size
@size.setter
def size(self, value):
self.obj.Size = value
@property
def events(self):
return self.form.getScriptEvents(self.index)
@ -1891,6 +1925,14 @@ class LOFormControlButton(LOFormControl):
def value(self, value):
self._m.Text = Label
@property
def url(self):
return self._m.TargetURL
@url.setter
def url(self, value):
self._m.TargetURL = value
self._m.ButtonType = FormButtonType.URL
FORM_CONTROL_CLASS = {
'label': LOFormControlLabel,
@ -1941,7 +1983,7 @@ class LOForm(object):
name = control.Name
tipo = types[control.ImplementationName]
view = self.doc.CurrentController.getControl(control)
control = FORM_CONTROL_CLASS[tipo](control, view)
control = FORM_CONTROL_CLASS[tipo](control, view, self._obj)
control.index = i
setattr(self, name, control)
self._controls[name] = control
@ -1994,8 +2036,8 @@ class LOForm(object):
def add(self, args):
name = args['Name']
tipo = args.pop('Type').lower()
w = args.pop('Width')
h = args.pop('Height')
w = args.pop('Width', 1000)
h = args.pop('Height', 200)
x = args.pop('X', 0)
y = args.pop('Y', 0)
control = self.doc.createInstance('com.sun.star.drawing.ControlShape')
@ -2053,7 +2095,9 @@ class LOSheetForms(object):
def names(self):
return self.obj.ElementNames
def insert(self, name):
def insert(self, name=''):
if not name:
name = f'form{self.count + 1}'
form = self.doc.createInstance('com.sun.star.form.component.Form')
self.obj.insertByName(name, form)
return LOForm(form, self._dp)