Add support for control roadmap
This commit is contained in:
parent
a88d9a1fca
commit
55df1aa1bc
|
@ -84,6 +84,8 @@ from com.sun.star.awt import XTopWindowListener
|
|||
from com.sun.star.awt import XWindowListener
|
||||
from com.sun.star.awt import XMenuListener
|
||||
from com.sun.star.awt import XKeyListener
|
||||
from com.sun.star.awt import XItemListener
|
||||
|
||||
|
||||
try:
|
||||
from fernet import Fernet, InvalidToken
|
||||
|
@ -1815,6 +1817,26 @@ class EventsModify(EventsListenerBase, XModifyListener):
|
|||
return
|
||||
|
||||
|
||||
class EventsItem(EventsListenerBase, XItemListener):
|
||||
|
||||
def __init__(self, controller, name):
|
||||
super().__init__(controller, name)
|
||||
|
||||
def disposing(self, event):
|
||||
pass
|
||||
|
||||
def itemStateChanged(self, event):
|
||||
pass
|
||||
|
||||
|
||||
class EventsItemRoadmap(EventsItem):
|
||||
|
||||
def itemStateChanged(self, event):
|
||||
dialog = event.Source.Context.Model
|
||||
dialog.Step = event.ItemId + 1
|
||||
return
|
||||
|
||||
|
||||
class EventsKey(EventsListenerBase, XKeyListener):
|
||||
"""
|
||||
event.KeyChar
|
||||
|
@ -2260,6 +2282,26 @@ class UnoGrid(UnoBaseObject):
|
|||
return
|
||||
|
||||
|
||||
class UnoRoadmap(UnoBaseObject):
|
||||
|
||||
def __init__(self, obj):
|
||||
super().__init__(obj)
|
||||
self._options = ()
|
||||
|
||||
@property
|
||||
def options(self):
|
||||
return self._options
|
||||
@options.setter
|
||||
def options(self, values):
|
||||
self._options = values
|
||||
for i, v in enumerate(values):
|
||||
opt = self.model.createInstance()
|
||||
opt.ID = i
|
||||
opt.Label = v
|
||||
self.model.insertByIndex(i, opt)
|
||||
return
|
||||
|
||||
|
||||
def get_custom_class(tipo, obj):
|
||||
classes = {
|
||||
'label': UnoLabel,
|
||||
|
@ -2268,8 +2310,8 @@ def get_custom_class(tipo, obj):
|
|||
'listbox': UnoListBox,
|
||||
'grid': UnoGrid,
|
||||
'link': UnoLabelLink,
|
||||
'roadmap': UnoRoadmap,
|
||||
# ~ 'tab': UnoTab,
|
||||
# ~ 'roadmap': UnoRoadmap,
|
||||
# ~ 'image': UnoImage,
|
||||
# ~ 'radio': UnoRadio,
|
||||
# ~ 'groupbox': UnoGroupBox,
|
||||
|
@ -2282,11 +2324,14 @@ def add_listeners(events, control, name=''):
|
|||
listeners = {
|
||||
'addActionListener': EventsButton,
|
||||
'addMouseListener': EventsMouse,
|
||||
'addItemListener': EventsItem,
|
||||
}
|
||||
if hasattr(control, 'obj'):
|
||||
control = contro.obj
|
||||
# ~ debug(control.ImplementationName)
|
||||
is_grid = control.ImplementationName == 'stardiv.Toolkit.GridControl'
|
||||
is_link = control.ImplementationName == 'stardiv.Toolkit.UnoFixedHyperlinkControl'
|
||||
is_roadmap = control.ImplementationName == 'stardiv.Toolkit.UnoRoadmapControl'
|
||||
|
||||
for key, value in listeners.items():
|
||||
if hasattr(control, key):
|
||||
|
@ -2296,6 +2341,9 @@ def add_listeners(events, control, name=''):
|
|||
if is_link and key == 'addMouseListener':
|
||||
control.addMouseListener(EventsMouseLink(events, name))
|
||||
continue
|
||||
if is_roadmap and key == 'addItemListener':
|
||||
control.addItemListener(EventsItemRoadmap(events, name))
|
||||
continue
|
||||
getattr(control, key)(listeners[key](events, name))
|
||||
return
|
||||
|
||||
|
@ -2784,6 +2832,7 @@ class LODialog(object):
|
|||
'stardiv.Toolkit.UnoFixedTextControl': 'label',
|
||||
'stardiv.Toolkit.UnoButtonControl': 'button',
|
||||
'stardiv.Toolkit.UnoEditControl': 'text',
|
||||
'stardiv.Toolkit.UnoRoadmapControl': 'roadmap',
|
||||
}
|
||||
return types[name]
|
||||
|
||||
|
@ -2803,6 +2852,20 @@ class LODialog(object):
|
|||
def model(self):
|
||||
return self._model
|
||||
|
||||
@property
|
||||
def height(self):
|
||||
return self.model.Height
|
||||
@height.setter
|
||||
def height(self, value):
|
||||
self.model.Height = value
|
||||
|
||||
@property
|
||||
def step(self):
|
||||
return self.model.Step
|
||||
@step.setter
|
||||
def step(self, value):
|
||||
self.model.Step = value
|
||||
|
||||
@property
|
||||
def events(self):
|
||||
return self._events
|
||||
|
@ -2817,6 +2880,7 @@ class LODialog(object):
|
|||
return
|
||||
|
||||
def open(self):
|
||||
# ~ self.model.Step = self.step
|
||||
return self.obj.execute()
|
||||
|
||||
def close(self, value=0):
|
||||
|
@ -2824,30 +2888,28 @@ class LODialog(object):
|
|||
|
||||
def _get_control_model(self, control):
|
||||
services = {
|
||||
'label': 'com.sun.star.awt.UnoControlFixedTextModel',
|
||||
'button': 'com.sun.star.awt.UnoControlButtonModel',
|
||||
'text': 'com.sun.star.awt.UnoControlEditModel',
|
||||
'listbox': 'com.sun.star.awt.UnoControlListBoxModel',
|
||||
'link': 'com.sun.star.awt.UnoControlFixedHyperlinkModel',
|
||||
'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel',
|
||||
'image': 'com.sun.star.awt.UnoControlImageControlModel',
|
||||
'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel',
|
||||
'radio': 'com.sun.star.awt.UnoControlRadioButtonModel',
|
||||
'tree': 'com.sun.star.awt.tree.TreeControlModel',
|
||||
'grid': 'com.sun.star.awt.grid.UnoControlGridModel',
|
||||
'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel',
|
||||
'image': 'com.sun.star.awt.UnoControlImageControlModel',
|
||||
'label': 'com.sun.star.awt.UnoControlFixedTextModel',
|
||||
'link': 'com.sun.star.awt.UnoControlFixedHyperlinkModel',
|
||||
'listbox': 'com.sun.star.awt.UnoControlListBoxModel',
|
||||
'radio': 'com.sun.star.awt.UnoControlRadioButtonModel',
|
||||
'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel',
|
||||
'text': 'com.sun.star.awt.UnoControlEditModel',
|
||||
'tree': 'com.sun.star.awt.tree.TreeControlModel',
|
||||
}
|
||||
return services[control]
|
||||
|
||||
def _set_column_model(self, columns):
|
||||
#~ https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1grid_1_1XGridColumn.html
|
||||
column_model = create_instance('com.sun.star.awt.grid.DefaultGridColumnModel', True)
|
||||
# ~ column_model.setDefaultColumns(len(columns))
|
||||
for column in columns:
|
||||
grid_column = create_instance('com.sun.star.awt.grid.GridColumn', True)
|
||||
for k, v in column.items():
|
||||
setattr(grid_column, k, v)
|
||||
column_model.addColumn(grid_column)
|
||||
# ~ mri(grid_column)
|
||||
return column_model
|
||||
|
||||
def _set_image_url(self, path):
|
||||
|
@ -2855,15 +2917,19 @@ class LODialog(object):
|
|||
return _path_url(path)
|
||||
return ''
|
||||
|
||||
def add_control(self, properties):
|
||||
tipo = properties.pop('Type').lower()
|
||||
|
||||
def _special_properties(self, tipo, properties):
|
||||
columns = properties.pop('Columns', ())
|
||||
if tipo == 'grid':
|
||||
properties['ColumnModel'] = self._set_column_model(columns)
|
||||
if tipo == 'button' and 'ImageURL' in properties:
|
||||
elif tipo == 'button' and 'ImageURL' in properties:
|
||||
properties['ImageURL'] = self._set_image_url(properties['ImageURL'])
|
||||
elif tipo == 'roadmap' and not 'Height' in properties:
|
||||
properties['Height'] = self.height
|
||||
return properties
|
||||
|
||||
def add_control(self, properties):
|
||||
tipo = properties.pop('Type').lower()
|
||||
properties = self._special_properties(tipo, properties)
|
||||
model = self.model.createInstance(self._get_control_model(tipo))
|
||||
set_properties(model, properties)
|
||||
name = properties['Name']
|
||||
|
|
Loading…
Reference in New Issue