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
|
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):
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in New Issue