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

Reply via email to