Init controls form

This commit is contained in:
Mauricio Baeza 2020-11-28 22:50:28 -06:00
parent 0efa92b6a9
commit 4a1285088b
2 changed files with 42 additions and 29 deletions

View File

@ -57,30 +57,6 @@ class FormControlBase(object):
return
class LOForm(ObjectBase):
def __init__(self, obj):
self._init_controls()
def _get_type_control(self, name):
types = {
# ~ 'stardiv.Toolkit.UnoEditControl': 'text',
# ~ 'stardiv.Toolkit.UnoRoadmapControl': 'roadmap',
# ~ 'stardiv.Toolkit.UnoFixedHyperlinkControl': 'link',
# ~ 'stardiv.Toolkit.UnoListBoxControl': 'listbox',
}
return types[name]
def _init_controls(self):
self._controls = []
for i, c in enumerate(self.obj.ControlModels):
tipo = self._get_type_control(c.ImplementationName)
control = get_custom_class(tipo, c)
control.index = i
self._controls.append(control)
setattr(self, c.Name, control)
class LOCalcSheet(object):
def __init__(self, obj, doc):

View File

@ -1486,23 +1486,31 @@ class LOFormControl(LOBaseObject):
super().__init__(obj)
self._view = view
self._m = view.Model
self._index = -1
def __setattr__(self, name, value):
if name in ('_view', '_m'):
if name in ('_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 form(self):
return self.obj.Parent
@property
def doc(self):
return self.obj.Parent.Forms.Parent
@property
def name(self):
return self.obj.Name
return self._m.Name
@name.setter
def name(self, value):
self.obj.Name = value
self._m.Name = value
@property
def tag(self):
@ -1511,6 +1519,13 @@ class LOFormControl(LOBaseObject):
def tag(self, value):
self._m.Tag = value
@property
def index(self):
return self._index
@index.setter
def index(self, value):
self._index = value
@property
def enabled(self):
return self._m.Enabled
@ -1591,9 +1606,12 @@ class LOForm(object):
def __init__(self, obj, draw_page):
self._obj = obj
self._dp = draw_page
self._controls = {}
self._init_controls()
def __getitem__(self, index):
return LOFormControl(self.obj[index])
control = self.obj[index]
return self._controls[control.Name]
def __enter__(self):
return self
@ -1610,6 +1628,22 @@ class LOForm(object):
def __str__(self):
return f'Form: {self.name}'
def _init_controls(self):
types = {
'com.sun.star.form.OFixedTextModel': 'label',
'com.sun.star.form.OEditModel': 'text',
'com.sun.star.form.OButtonModel': 'button',
}
for i, control in enumerate(self.obj):
name = control.Name
tipo = types[control.ImplementationName]
view = self.doc.CurrentController.getControl(control)
control = FORM_CONTROL_CLASS[tipo](control, view)
control.index = i
setattr(self, name, control)
self._controls[name] = control
return
@property
def obj(self):
return self._obj
@ -1668,11 +1702,14 @@ class LOForm(object):
args = self._special_properties(tipo, args)
_set_properties(model, args)
control.Control = model
self.obj.insertByIndex(len(self), model)
index = len(self)
self.obj.insertByIndex(index, model)
self._dp.add(control)
view = self.doc.CurrentController.getControl(self.obj.getByName(name))
control = FORM_CONTROL_CLASS[tipo](control, view)
control.index = index
setattr(self, name, control)
self._controls[name] = control
return control