Add text form control
This commit is contained in:
parent
fce0a21551
commit
f052c634ab
|
@ -16,28 +16,8 @@ class FormControlBase(object):
|
|||
|
||||
def __init__(self, obj):
|
||||
self._obj = obj
|
||||
self._index = -1
|
||||
self._rules = {}
|
||||
|
||||
@property
|
||||
def obj(self):
|
||||
return self._obj
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.obj.Name
|
||||
|
||||
@property
|
||||
def form(self):
|
||||
return self.obj.getParent()
|
||||
|
||||
@property
|
||||
def index(self):
|
||||
return self._index
|
||||
@index.setter
|
||||
def index(self, value):
|
||||
self._index = value
|
||||
|
||||
@property
|
||||
def events(self):
|
||||
return self.form.getScriptEvents(self.index)
|
||||
|
|
|
@ -967,7 +967,7 @@ class LOBaseObject(object):
|
|||
|
||||
def __setattr__(self, name, value):
|
||||
exists = hasattr(self, name)
|
||||
if not exists and not name in ('_obj', '_index'):
|
||||
if not exists and not name in ('_obj', '_index', '_view'):
|
||||
setattr(self._obj, name, value)
|
||||
else:
|
||||
super().__setattr__(name, value)
|
||||
|
@ -1482,37 +1482,89 @@ class LOSheetCharts(object):
|
|||
|
||||
class LOFormControl(LOBaseObject):
|
||||
|
||||
def __init__(self, obj):
|
||||
self._obj = obj
|
||||
self._control = self.doc.CurrentController.getControl(self.obj)
|
||||
def __init__(self, obj, view):
|
||||
super().__init__(obj)
|
||||
self._view = view
|
||||
self._m = view.Model
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if name == '_control':
|
||||
if name in ('_view', '_m'):
|
||||
self.__dict__[name] = value
|
||||
else:
|
||||
super().__setattr__(name, value)
|
||||
|
||||
@property
|
||||
def doc(self):
|
||||
return self.obj.Parent.Parent.Parent
|
||||
return self.obj.Parent.Forms.Parent
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.obj.Name
|
||||
@name.setter
|
||||
def name(self, value):
|
||||
self.obj.Name = value
|
||||
|
||||
@property
|
||||
def label(self):
|
||||
return self.obj.Label
|
||||
def tag(self):
|
||||
return self._m.Tag
|
||||
@tag.setter
|
||||
def tag(self, value):
|
||||
self._m.Tag = value
|
||||
|
||||
def set_focus(self):
|
||||
self._control.setFocus()
|
||||
self._view.setFocus()
|
||||
return
|
||||
|
||||
|
||||
class LOForm(object):
|
||||
class LOFormControlLabel(LOFormControl):
|
||||
|
||||
def __init__(self, obj):
|
||||
def __init__(self, obj, view):
|
||||
super().__init__(obj, view)
|
||||
|
||||
@property
|
||||
def type(self):
|
||||
return 'label'
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self._m.Label
|
||||
@value.setter
|
||||
def value(self, value):
|
||||
self._m.Label = value
|
||||
|
||||
|
||||
class LOFormControlText(LOFormControl):
|
||||
|
||||
def __init__(self, obj, view):
|
||||
super().__init__(obj, view)
|
||||
|
||||
@property
|
||||
def type(self):
|
||||
return 'text'
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self._m.Text
|
||||
@value.setter
|
||||
def value(self, value):
|
||||
self._m.Text = value
|
||||
|
||||
|
||||
FORM_CONTROL_CLASS = {
|
||||
'label': LOFormControlLabel,
|
||||
'text': LOFormControlText,
|
||||
}
|
||||
|
||||
|
||||
class LOForm(object):
|
||||
MODELS = {
|
||||
'label': 'com.sun.star.form.component.FixedText',
|
||||
'text': 'com.sun.star.form.component.TextField',
|
||||
}
|
||||
|
||||
def __init__(self, obj, draw_page):
|
||||
self._obj = obj
|
||||
self._dp = draw_page
|
||||
|
||||
def __getitem__(self, index):
|
||||
return LOFormControl(self.obj[index])
|
||||
|
@ -1564,19 +1616,39 @@ class LOForm(object):
|
|||
def command(self, value):
|
||||
self.obj.Command = value
|
||||
|
||||
@property
|
||||
def doc(self):
|
||||
return self.obj.Parent.Parent
|
||||
|
||||
def add(self, args):
|
||||
|
||||
|
||||
return
|
||||
name = args['Name']
|
||||
tipo = args.pop('Type').lower()
|
||||
w = args.pop('Width')
|
||||
h = args.pop('Height')
|
||||
x = args.pop('X', 0)
|
||||
y = args.pop('Y', 0)
|
||||
control = self.doc.createInstance('com.sun.star.drawing.ControlShape')
|
||||
control.setSize(Size(w, h))
|
||||
control.setPosition(Point(x, y))
|
||||
model = self.doc.createInstance(self.MODELS[tipo])
|
||||
_set_properties(model, args)
|
||||
control.Control = model
|
||||
self.obj.insertByIndex(len(self), model)
|
||||
self._dp.add(control)
|
||||
view = self.doc.CurrentController.getControl(self.obj.getByName(name))
|
||||
control = FORM_CONTROL_CLASS[tipo](control, view)
|
||||
setattr(self, name, control)
|
||||
return control
|
||||
|
||||
|
||||
class LOSheetForms(object):
|
||||
|
||||
def __init__(self, obj):
|
||||
self._obj = obj
|
||||
def __init__(self, draw_page):
|
||||
self._dp = draw_page
|
||||
self._obj = draw_page.Forms
|
||||
|
||||
def __getitem__(self, index):
|
||||
return LOForm(self.obj[index])
|
||||
return LOForm(self.obj[index], self._dp)
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
@ -1609,7 +1681,7 @@ class LOSheetForms(object):
|
|||
def insert(self, name):
|
||||
form = self.doc.createInstance('com.sun.star.form.component.Form')
|
||||
self.obj.insertByName(name, form)
|
||||
return LOForm(form)
|
||||
return LOForm(form, self._dp)
|
||||
|
||||
def remove(self, index):
|
||||
if isinstance(index, int):
|
||||
|
@ -1838,7 +1910,7 @@ class LOCalcSheet(object):
|
|||
|
||||
@property
|
||||
def forms(self):
|
||||
return LOSheetForms(self.obj.DrawPage.Forms)
|
||||
return LOSheetForms(self.obj.DrawPage)
|
||||
|
||||
def activate(self):
|
||||
self.doc.activate(self._obj)
|
||||
|
|
Loading…
Reference in New Issue