RGA(Open ERP) has proposed merging
lp:~openerp-dev/openobject-client/list_view_fixes into lp:openobject-client.
Requested reviews:
OpenERP sa GTK client R&D (openerp-dev-gtk)
Following bugs are fixed by this branch
* Switch to graph does not work in group_by views
* In One2many list editable, the last column was prefilled instead of
empty when clicking enter.
--
https://code.launchpad.net/~openerp-dev/openobject-client/list_view_fixes/+merge/28624
Your team OpenERP sa GTK client R&D is requested to review the proposed merge
of lp:~openerp-dev/openobject-client/list_view_fixes into lp:openobject-client.
=== modified file 'bin/widget/screen/screen.py'
--- bin/widget/screen/screen.py 2010-06-25 10:43:35 +0000
+++ bin/widget/screen/screen.py 2010-06-28 11:37:28 +0000
@@ -229,7 +229,12 @@
self.auto_search = True
return
val = self.filter_widget and self.filter_widget.value or {}
- self.context_update(val.get('context',{}), val.get('domain',[]) + self.sort_domain)
+ if self.current_view.view_type == 'graph':
+ self.domain = self.domain_init[:]
+ self.domain += val.get('domain',[]) + self.sort_domain
+ else:
+ self.context_update(val.get('context',{}), val.get('domain',[]) + self.sort_domain)
+
v = self.domain
limit=self.screen_container.get_limit()
if self.current_view.view_type == 'calendar':
@@ -248,7 +253,7 @@
self.offset = 0
offset=self.offset
self.latest_search = v
- if self.context.get('group_by',False):
+ if self.context.get('group_by',False) and not self.current_view.view_type == 'graph':
self.current_view.reload = True
self.display()
return True
@@ -421,7 +426,7 @@
# mode: False = next view, value = open this view
def switch_view(self, screen=None, mode=False):
- if isinstance(self.current_model,group_record):
+ if isinstance(self.current_model, group_record) and mode != 'graph':
return
self.current_view.set_value()
self.fields = {}
=== modified file 'bin/widget/view/graph_gtk/graph.py'
--- bin/widget/view/graph_gtk/graph.py 2010-04-26 14:05:54 +0000
+++ bin/widget/view/graph_gtk/graph.py 2010-06-28 11:37:28 +0000
@@ -71,6 +71,7 @@
self.axis = axis
self.old_axis = axis
self.editable = False
+ self.key = False
self.widget.editable = False
self.axis_data = axis_data
self.axis_group = {}
@@ -86,9 +87,15 @@
self.axis = copy.copy(self.old_axis)
group_by = self.widget.screen.context.get('group_by', False)
if group_by:
- models = models.models or models.list_group.lst
+ if not self.key:
+ del self.widget.screen.context['group_by']
+ self.widget.screen.search_filter()
+ models = self.widget.screen.models
+ self.key = True
+ self.widget.screen.context['group_by'] = group_by
self.axis[0] = group_by[0]
self.axis_data[group_by[0]] = {}
+
for m in models:
res = {}
for x in self.axis_data.keys():
@@ -96,10 +103,7 @@
if self.fields[x]['type'] in ('many2one', 'char','time','text'):
res[x] = field_val and str(field_val) or 'Undefined'
elif self.fields[x]['type'] == 'selection':
- if group_by and isinstance(m, group_record):
- selection = dict(m.children[0][x].attrs['selection'])
- else:
- selection = dict(m[x].attrs['selection'])
+ selection = dict(m[x].attrs['selection'])
if field_val:
val = str(field_val)
res[x] = selection.get(val, val)
=== modified file 'bin/widget/view/list.py'
--- bin/widget/view/list.py 2010-06-28 06:14:55 +0000
+++ bin/widget/view/list.py 2010-06-28 11:37:28 +0000
@@ -699,10 +699,11 @@
if isinstance(renderer, gtk.CellRendererToggle):
renderer.set_property('activatable', value)
elif not isinstance(renderer, gtk.CellRendererProgress) and not isinstance(renderer, gtk.CellRendererPixbuf):
- renderer.set_property('editable', value)
+ old_value = renderer.get_property('editable')
+ renderer.set_property('editable', value and old_value)
if value in ('top','bottom'):
if isinstance(renderer, (gtk.CellRendererText, gtk.CellRendererCombo, date_renderer.DecoratorRenderer)):
- renderer.set_property('editable', value)
+ renderer.set_property('editable', value and old_value)
if value:
if self.widget_tree.handlers.has_key(col):
if self.widget_tree.handlers[col]:
=== modified file 'bin/widget/view/tree_gtk/editabletree.py'
--- bin/widget/view/tree_gtk/editabletree.py 2010-04-21 15:19:27 +0000
+++ bin/widget/view/tree_gtk/editabletree.py 2010-06-28 11:37:28 +0000
@@ -45,7 +45,6 @@
# The value has not changed ... do nothing.
if value == cell.get_textual_value(current_model):
return
-
try:
real_value = cell.value_from_text(current_model, value)
modelfield.set_client(current_model, real_value)
@@ -187,7 +186,7 @@
txt = entry.get_active_text()
entry.disconnect(entry.editing_done_id)
self.on_quit_cell(model, column.name, txt)
- entry.editing_done_id = entry.connect('editing_done', self.on_editing_done)
+ entry.editing_done_id = entry.connect('editing_done', self.on_editing_done, model, txt)
if event.keyval in self.leaving_model_events:
if model.validate() and self.screen.tree_saves:
id = model.save()
@@ -204,7 +203,7 @@
if col.name in invalid_fields:
break
self.set_cursor(path, col, True)
- msg = _('Warning; field %s is required!') % ('<b>%s</b>' % invalid_fields[col.name])
+ msg = _('Warning; field %s is required!') % ('<b>%s</b>' % invalid_fields[col.name])
self.warn('misc-message', msg, "red")
return True
@@ -217,12 +216,12 @@
elif event.keyval == gtk.keysyms.Up:
self._key_up(path, store, column)
elif event.keyval == gtk.keysyms.Down:
- self._key_down(path,store,column)
+ self._key_down(path, store, column)
elif event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
if self.editable == 'top':
new_path = self._key_up(path, store, column)
else:
- new_path = self._key_down(path,store,column)
+ new_path = self._key_down(path, store, column)
col = self.get_columns(False, False)[0]
self.set_cursor(new_path, col, True)
elif event.keyval == gtk.keysyms.Escape:
@@ -277,16 +276,21 @@
self.set_cursor(new_path, column, True)
return new_path
- def on_editing_done(self, entry):
+ def on_editing_done(self, entry, model=None, txt=""):
path, column = self.get_cursor()
if not path:
return True
- store = self.get_model()
- model = store.get_value(store.get_iter(path), 0)
+ if not model:
+ store = self.get_model()
+ model = store.get_value(store.get_iter(path), 0)
+ if isinstance(entry, gtk.Entry):
+ txt = entry.get_text()
+ elif isinstance(entry, gtk.ComboBoxEntry):
+ txt = entry.get_active_text()
if isinstance(entry, gtk.Entry):
- self.on_quit_cell(model, column.name, entry.get_text())
+ self.on_quit_cell(model, column.name, txt)
elif isinstance(entry, gtk.ComboBoxEntry):
- self.on_quit_cell(model, column.name, entry.get_active_text())
+ self.on_quit_cell(model, column.name, txt)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp