Init controls form
This commit is contained in:
parent
0efa92b6a9
commit
4a1285088b
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue