diff --git a/CHANGELOG b/CHANGELOG index e48588db13..2a8bc10b35 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Improve treeview headers * Update states of both toolbar and menu * Improve toolbar order * Make readonly, required and invalid widget themable diff --git a/tryton/gui/main.py b/tryton/gui/main.py index bb372423fd..ac3c08560b 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -1041,6 +1041,8 @@ class Main(object): lambda *a: gobject.idle_add(toggle_favorite, *a), treeview) # Unset fixed height mode to add column treeview.set_fixed_height_mode(False) + treeview.set_property( + 'enable-grid-lines', gtk.TREE_VIEW_GRID_LINES_NONE) treeview.append_column(column) screen.search_filter() diff --git a/tryton/gui/window/view_form/view/list.py b/tryton/gui/window/view_form/view/list.py index 5a104f1867..942ff140d8 100644 --- a/tryton/gui/window/view_form/view/list.py +++ b/tryton/gui/window/view_form/view/list.py @@ -276,12 +276,15 @@ class ViewTree(View): self.reload = False if self.attributes.get('editable'): self.treeview = EditableTreeView(self.attributes['editable'], self) + grid_lines = gtk.TREE_VIEW_GRID_LINES_BOTH else: self.treeview = TreeView(self) + grid_lines = gtk.TREE_VIEW_GRID_LINES_VERTICAL self.parse(xml) self.treeview.set_property('rules-hint', True) + self.treeview.set_property('enable-grid-lines', grid_lines) self.treeview.set_fixed_height_mode( all(c.get_sizing() == gtk.TREE_VIEW_COLUMN_FIXED for c in self.treeview.get_columns())) @@ -386,7 +389,7 @@ class ViewTree(View): column.set_cell_data_func(suffix.renderer, suffix.setter) - self.set_column_widget(column, field, node_attrs) + self.set_column_widget(column, field, node_attrs, align=widget.align) self.set_column_width(column, field, node_attrs) if (not self.attributes.get('sequence') @@ -448,7 +451,8 @@ class ViewTree(View): def get_widget(cls, name): return cls.WIDGETS[name] - def set_column_widget(self, column, field, attributes, arrow=True): + def set_column_widget(self, column, field, attributes, + arrow=True, align=0.5): hbox = gtk.HBox(False, 2) label = gtk.Label(attributes['string']) if field and self.editable: @@ -478,7 +482,7 @@ class ViewTree(View): column.set_clickable(True) hbox.show() column.set_widget(hbox) - column.set_alignment(0.5) + column.set_alignment(align) def set_column_width(self, column, field, attributes): default_width = { diff --git a/tryton/gui/window/view_form/view/list_gtk/widget.py b/tryton/gui/window/view_form/view/list_gtk/widget.py index 0cd0afd3d8..3a3a3908d1 100644 --- a/tryton/gui/window/view_form/view/list_gtk/widget.py +++ b/tryton/gui/window/view_form/view/list_gtk/widget.py @@ -172,6 +172,7 @@ class Affix(Cell): class GenericText(Cell): + align = 0 def __init__(self, view, attrs, renderer=None): super(GenericText, self).__init__() @@ -211,13 +212,6 @@ class GenericText(Cell): field = record[self.attrs['name']] - if self.attrs.get('type', field.attrs.get('type')) in \ - ('float', 'integer', 'biginteger', 'boolean', - 'numeric', 'timedelta'): - align = 1 - else: - align = 0 - editable = getattr(self.view.treeview, 'editable', False) states = ('invisible',) if editable: @@ -244,7 +238,7 @@ class GenericText(Cell): if isinstance(cell, CellRendererToggle): cell.set_property('activatable', False) - cell.set_property('xalign', align) + cell.set_property('xalign', self.align) def open_remote(self, record, create, changed=False, text=None, callback=None): @@ -285,6 +279,7 @@ class Text(GenericText): class Int(GenericText): + align = 1 def __init__(self, view, attrs, renderer=None): if renderer is None: @@ -306,6 +301,7 @@ class Int(GenericText): class Boolean(GenericText): + align = 0.5 def __init__(self, view, attrs=None, renderer=None): @@ -395,7 +391,7 @@ class Time(Date): class TimeDelta(GenericText): - pass + align = 1 class Float(Int): @@ -415,6 +411,7 @@ class Float(Int): class Binary(GenericText): + align = 0.5 def __init__(self, view, attrs, renderer=None): self.filename = attrs.get('filename') @@ -515,6 +512,7 @@ class Binary(GenericText): class Image(GenericText): + align = 0.5 def __init__(self, view, attrs=None, renderer=None): if renderer is None: @@ -698,11 +696,7 @@ class O2O(M2O): class O2M(GenericText): - - @realized - def setter(self, column, cell, store, iter): - super(O2M, self).setter(column, cell, store, iter) - cell.set_property('xalign', 0.5) + align = 0.5 def get_textual_value(self, record): return '( ' + str(len(record[self.attrs['name']] @@ -836,6 +830,7 @@ class Reference(GenericText, SelectionMixin): class ProgressBar(object): + align = 0.5 orientations = { 'left_to_right': gtk.PROGRESS_LEFT_TO_RIGHT, 'right_to_left': gtk.PROGRESS_RIGHT_TO_LEFT,