Move class UnoGrid

This commit is contained in:
Mauricio Baeza 2020-11-21 17:39:52 -06:00
parent 5cee113cb7
commit 830d08d01d
2 changed files with 156 additions and 148 deletions

View File

@ -757,33 +757,6 @@ class EventsTab(EventsListenerBase, XTabListener):
return return
class EventsGrid(EventsListenerBase, XGridDataListener, XGridSelectionListener):
def __init__(self, controller, name):
super().__init__(controller, name)
def dataChanged(self, event):
event_name = '{}_data_changed'.format(self.name)
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
def rowHeadingChanged(self, event):
pass
def rowsInserted(self, event):
pass
def rowsRemoved(self, evemt):
pass
def selectionChanged(self, event):
event_name = '{}_selection_changed'.format(self.name)
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
class EventsKeyWindow(EventsListenerBase, XKeyListener): class EventsKeyWindow(EventsListenerBase, XKeyListener):
""" """
event.KeyChar event.KeyChar
@ -902,124 +875,6 @@ class EventsMenu(EventsListenerBase, XMenuListener):
return return
class UnoGrid(UnoBaseObject):
def __init__(self, obj):
super().__init__(obj)
self._gdm = self._model.GridDataModel
# ~ self._data = []
self._columns = {}
# ~ self._format_columns = ()
def __getitem__(self, index):
value = self._gdm.getCellData(index[0], index[1])
return value
@property
def type(self):
return 'grid'
def _format_cols(self):
rows = tuple(tuple(
self._format_columns[i].format(r) for i, r in enumerate(row)) for row in self._data
)
return rows
# ~ @property
# ~ def format_columns(self):
# ~ return self._format_columns
# ~ @format_columns.setter
# ~ def format_columns(self, value):
# ~ self._format_columns = value
@property
def value(self):
return self[self.column, self.row]
@property
def data(self):
return self._data
@data.setter
def data(self, values):
# ~ self._data = values
self.clear()
headings = tuple(range(1, len(values) + 1))
self._gdm.addRows(headings, values)
# ~ rows = range(grid_dm.RowCount)
# ~ colors = [COLORS['GRAY'] if r % 2 else COLORS['WHITE'] for r in rows]
# ~ grid.Model.RowBackgroundColors = tuple(colors)
return
@property
def row(self):
return self.obj.CurrentRow
@property
def rows(self):
return self._gdm.RowCount
@property
def column(self):
return self.obj.CurrentColumn
@property
def columns(self):
return self._gdm.ColumnCount
def set_cell_tooltip(self, col, row, value):
self._gdm.updateCellToolTip(col, row, value)
return
def get_cell_tooltip(self, col, row):
value = self._gdm.getCellToolTip(col, row)
return value
def _validate_column(self, data):
row = []
for i, d in enumerate(data):
if i in self._columns:
if 'image' in self._columns[i]:
row.append(self._columns[i]['image'])
else:
row.append(d)
return tuple(row)
def clear(self):
self._gdm.removeAllRows()
return
def add_row(self, data):
# ~ self._data.append(data)
data = self._validate_column(data)
self._gdm.addRow(self.rows + 1, data)
return
def remove_row(self, row):
self._gdm.removeRow(row)
# ~ del self._data[row]
self.update_row_heading()
return
def update_row_heading(self):
for i in range(self.rows):
self._gdm.updateRowHeading(i, i + 1)
return
def sort(self, column, asc=True):
self._gdm.sortByColumn(column, asc)
self.update_row_heading()
return
def set_column_image(self, column, path):
gp = create_instance('com.sun.star.graphic.GraphicProvider')
data = dict_to_property({'URL': _path_url(path)})
image = gp.queryGraphic(data)
if not column in self._columns:
self._columns[column] = {}
self._columns[column]['image'] = image
return
class UnoTab(UnoBaseObject): class UnoTab(UnoBaseObject):
def __init__(self, obj): def __init__(self, obj):

View File

@ -87,6 +87,8 @@ from com.sun.star.awt import XMouseMotionListener
from com.sun.star.awt import XFocusListener from com.sun.star.awt import XFocusListener
from com.sun.star.awt import XKeyListener from com.sun.star.awt import XKeyListener
from com.sun.star.awt import XItemListener from com.sun.star.awt import XItemListener
from com.sun.star.awt.grid import XGridDataListener
from com.sun.star.awt.grid import XGridSelectionListener
# ~ https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1awt_1_1FontUnderline.html # ~ https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1awt_1_1FontUnderline.html
from com.sun.star.awt import FontUnderline from com.sun.star.awt import FontUnderline
@ -3159,6 +3161,33 @@ class EventsItemRoadmap(EventsItem):
return return
class EventsGrid(EventsListenerBase, XGridDataListener, XGridSelectionListener):
def __init__(self, controller, name):
super().__init__(controller, name)
def dataChanged(self, event):
event_name = '{}_data_changed'.format(self.name)
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
def rowHeadingChanged(self, event):
pass
def rowsInserted(self, event):
pass
def rowsRemoved(self, evemt):
pass
def selectionChanged(self, event):
event_name = '{}_selection_changed'.format(self.name)
if hasattr(self._controller, event_name):
getattr(self._controller, event_name)(event)
return
# ~ BorderColor = ? # ~ BorderColor = ?
# ~ FontStyleName = ? # ~ FontStyleName = ?
# ~ HelpURL = ? # ~ HelpURL = ?
@ -3714,7 +3743,6 @@ class UnoTree(UnoBaseObject):
tdm.setRoot(root) tdm.setRoot(root)
self.model.DataModel = tdm self.model.DataModel = tdm
self._tdm = self.model.DataModel self._tdm = self.model.DataModel
# ~ self._add_data()
return return
@property @property
@ -3747,6 +3775,129 @@ class UnoTree(UnoBaseObject):
return return
class UnoGrid(UnoBaseObject):
def __init__(self, obj):
super().__init__(obj)
self._gdm = self.model.GridDataModel
# ~ self._columns = {}
# ~ self._format_columns = ()
def __setattr__(self, name, value):
if name in ('_gdm',):
self.__dict__[name] = value
else:
super().__setattr__(name, value)
def __getitem__(self, index):
value = self._gdm.getCellData(index[0], index[1])
return value
@property
def type(self):
return 'grid'
def _format_cols(self):
rows = tuple(tuple(
self._format_columns[i].format(r) for i, r in enumerate(row)) for row in self._data
)
return rows
# ~ @property
# ~ def format_columns(self):
# ~ return self._format_columns
# ~ @format_columns.setter
# ~ def format_columns(self, value):
# ~ self._format_columns = value
@property
def value(self):
return self[self.column, self.row]
@property
def data(self):
return self._data
@data.setter
def data(self, values):
# ~ self._data = values
self.clear()
headings = tuple(range(1, len(values) + 1))
self._gdm.addRows(headings, values)
# ~ rows = range(grid_dm.RowCount)
# ~ colors = [COLORS['GRAY'] if r % 2 else COLORS['WHITE'] for r in rows]
# ~ grid.Model.RowBackgroundColors = tuple(colors)
return
@property
def row(self):
return self.obj.CurrentRow
@property
def rows(self):
return self._gdm.RowCount
@property
def column(self):
return self.obj.CurrentColumn
@property
def columns(self):
return self._gdm.ColumnCount
def set_cell_tooltip(self, col, row, value):
self._gdm.updateCellToolTip(col, row, value)
return
def get_cell_tooltip(self, col, row):
value = self._gdm.getCellToolTip(col, row)
return value
def _validate_column(self, data):
row = []
for i, d in enumerate(data):
if i in self._columns:
if 'image' in self._columns[i]:
row.append(self._columns[i]['image'])
else:
row.append(d)
return tuple(row)
def clear(self):
self._gdm.removeAllRows()
return
def add_row(self, data):
# ~ self._data.append(data)
data = self._validate_column(data)
self._gdm.addRow(self.rows + 1, data)
return
def remove_row(self, row):
self._gdm.removeRow(row)
# ~ del self._data[row]
self.update_row_heading()
return
def update_row_heading(self):
for i in range(self.rows):
self._gdm.updateRowHeading(i, i + 1)
return
def sort(self, column, asc=True):
self._gdm.sortByColumn(column, asc)
self.update_row_heading()
return
def set_column_image(self, column, path):
gp = create_instance('com.sun.star.graphic.GraphicProvider')
data = dict_to_property({'URL': _path_url(path)})
image = gp.queryGraphic(data)
if not column in self._columns:
self._columns[column] = {}
self._columns[column]['image'] = image
return
UNO_CLASSES = { UNO_CLASSES = {
'label': UnoLabel, 'label': UnoLabel,
'link': UnoLabelLink, 'link': UnoLabelLink,
@ -3758,10 +3909,10 @@ UNO_CLASSES = {
'listbox': UnoListBox, 'listbox': UnoListBox,
'roadmap': UnoRoadmap, 'roadmap': UnoRoadmap,
'tree': UnoTree, 'tree': UnoTree,
'grid': UnoGrid,
} }
# ~ 'ComboBox': 'com.sun.star.awt.UnoControlComboBoxModel',
# ~ 'CurrencyField': 'com.sun.star.awt.UnoControlCurrencyFieldModel', # ~ 'CurrencyField': 'com.sun.star.awt.UnoControlCurrencyFieldModel',
# ~ 'DateField': 'com.sun.star.awt.UnoControlDateFieldModel', # ~ 'DateField': 'com.sun.star.awt.UnoControlDateFieldModel',
# ~ 'FileControl': 'com.sun.star.awt.UnoControlFileControlModel', # ~ 'FileControl': 'com.sun.star.awt.UnoControlFileControlModel',
@ -3775,6 +3926,7 @@ UNO_CLASSES = {
# ~ 'Throbber': 'com.sun.star.awt.UnoControlThrobberModel', # ~ 'Throbber': 'com.sun.star.awt.UnoControlThrobberModel',
# ~ 'TimeField': 'com.sun.star.awt.UnoControlTimeFieldModel', # ~ 'TimeField': 'com.sun.star.awt.UnoControlTimeFieldModel',
class LODialog(object): class LODialog(object):
SEPARATION = 5 SEPARATION = 5
MODELS = { MODELS = {
@ -3788,9 +3940,10 @@ class LODialog(object):
'listbox': 'com.sun.star.awt.UnoControlListBoxModel', 'listbox': 'com.sun.star.awt.UnoControlListBoxModel',
'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel', 'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel',
'tree': 'com.sun.star.awt.tree.TreeControlModel', 'tree': 'com.sun.star.awt.tree.TreeControlModel',
# ~ 'grid': 'com.sun.star.awt.grid.UnoControlGridModel', 'grid': 'com.sun.star.awt.grid.UnoControlGridModel',
# ~ 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel', # ~ 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel',
# ~ 'pages': 'com.sun.star.awt.UnoMultiPageModel', # ~ 'pages': 'com.sun.star.awt.UnoMultiPageModel',
# ~ 'combobox': 'com.sun.star.awt.UnoControlComboBoxModel',
} }
def __init__(self, args): def __init__(self, args):