Move class UnoGrid
This commit is contained in:
parent
5cee113cb7
commit
830d08d01d
145
source/diff.py
145
source/diff.py
|
@ -757,33 +757,6 @@ class EventsTab(EventsListenerBase, XTabListener):
|
|||
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):
|
||||
"""
|
||||
event.KeyChar
|
||||
|
@ -902,124 +875,6 @@ class EventsMenu(EventsListenerBase, XMenuListener):
|
|||
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):
|
||||
|
||||
def __init__(self, obj):
|
||||
|
|
|
@ -87,6 +87,8 @@ from com.sun.star.awt import XMouseMotionListener
|
|||
from com.sun.star.awt import XFocusListener
|
||||
from com.sun.star.awt import XKeyListener
|
||||
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
|
||||
from com.sun.star.awt import FontUnderline
|
||||
|
@ -3159,6 +3161,33 @@ class EventsItemRoadmap(EventsItem):
|
|||
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 = ?
|
||||
# ~ FontStyleName = ?
|
||||
# ~ HelpURL = ?
|
||||
|
@ -3714,7 +3743,6 @@ class UnoTree(UnoBaseObject):
|
|||
tdm.setRoot(root)
|
||||
self.model.DataModel = tdm
|
||||
self._tdm = self.model.DataModel
|
||||
# ~ self._add_data()
|
||||
return
|
||||
|
||||
@property
|
||||
|
@ -3747,6 +3775,129 @@ class UnoTree(UnoBaseObject):
|
|||
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 = {
|
||||
'label': UnoLabel,
|
||||
'link': UnoLabelLink,
|
||||
|
@ -3758,10 +3909,10 @@ UNO_CLASSES = {
|
|||
'listbox': UnoListBox,
|
||||
'roadmap': UnoRoadmap,
|
||||
'tree': UnoTree,
|
||||
'grid': UnoGrid,
|
||||
}
|
||||
|
||||
|
||||
# ~ 'ComboBox': 'com.sun.star.awt.UnoControlComboBoxModel',
|
||||
# ~ 'CurrencyField': 'com.sun.star.awt.UnoControlCurrencyFieldModel',
|
||||
# ~ 'DateField': 'com.sun.star.awt.UnoControlDateFieldModel',
|
||||
# ~ 'FileControl': 'com.sun.star.awt.UnoControlFileControlModel',
|
||||
|
@ -3775,6 +3926,7 @@ UNO_CLASSES = {
|
|||
# ~ 'Throbber': 'com.sun.star.awt.UnoControlThrobberModel',
|
||||
# ~ 'TimeField': 'com.sun.star.awt.UnoControlTimeFieldModel',
|
||||
|
||||
|
||||
class LODialog(object):
|
||||
SEPARATION = 5
|
||||
MODELS = {
|
||||
|
@ -3788,9 +3940,10 @@ class LODialog(object):
|
|||
'listbox': 'com.sun.star.awt.UnoControlListBoxModel',
|
||||
'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel',
|
||||
'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',
|
||||
# ~ 'pages': 'com.sun.star.awt.UnoMultiPageModel',
|
||||
# ~ 'combobox': 'com.sun.star.awt.UnoControlComboBoxModel',
|
||||
}
|
||||
|
||||
def __init__(self, args):
|
||||
|
|
Loading…
Reference in New Issue