Ravi Gadhia (OpenERP) has proposed merging
lp:~openerp-dev/openobject-client/trunk-bug-844064-rga into
lp:openobject-client.
Requested reviews:
Naresh(OpenERP) (nch-openerp)
Related bugs:
Bug #844064 in OpenERP GTK Client: "attrs not working within a group with
nested notebooks"
https://bugs.launchpad.net/openobject-client/+bug/844064
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-844064-rga/+merge/79788
--
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-844064-rga/+merge/79788
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-client/trunk-bug-844064-rga.
=== modified file 'bin/widget/view/form.py'
--- bin/widget/view/form.py 2011-10-11 06:15:57 +0000
+++ bin/widget/view/form.py 2011-10-19 10:03:48 +0000
@@ -367,7 +367,28 @@
obj.show_all()
if k=='readonly':
obj.set_sensitive(True)
-
+
+ def process_notebook(self, model, element, focus_widget=None):
+ def check_rec(child, focus_widget=None):
+ if isinstance(child, gtk.Frame):
+ check_frame_children(child, focus_widget)
+ if isinstance(child, gtk.Notebook):
+ self.set_notebook(model, child, focus_widget)
+
+ def check_frame_children(frame, focus_widget=None):
+ for x in frame.get_children():
+ if isinstance(x, gtk.Table):
+ for y in x.get_children():
+ check_rec(y, focus_widget)
+ if isinstance(x, gtk.Notebook):
+ self.set_notebook(model, x, focus_widget)
+
+ if isinstance(element, list):
+ for child in element:
+ check_rec(child)
+ else:
+ check_frame_children(element, focus_widget)
+
def set_notebook(self, model, nb, focus_widget=None):
for i in range(0, nb.get_n_pages()):
page = nb.get_nth_page(i)
@@ -376,35 +397,22 @@
nb.set_current_page(i)
focus_widget.widget.grab_focus()
children_notebooks = page.get_children()
- for child in children_notebooks:
- if isinstance(child, gtk.Frame):
- for x in child.get_children():
- if isinstance(x, gtk.Table):
- for y in x.get_children():
- if isinstance(y, gtk.Notebook):
- self.set_notebook(model, y)
- if isinstance(child, gtk.Notebook):
- self.set_notebook(model, child)
+ self.process_notebook(model, children_notebooks)
+
# attrs eval only when call from display not at time of set_cursor call
if nb.get_tab_label(page).attrs.get('attrs', False) and not focus_widget:
self.attrs_set(model, page, nb.get_tab_label(page), nb, i)
def display(self):
model = self.screen.current_model
- for x in self.widget.get_children():
- if isinstance(x, gtk.Table):
- for y in x.get_children():
- if isinstance(y, gtk.Notebook):
- self.set_notebook(model, y)
- elif isinstance(x, gtk.Notebook):
- self.set_notebook(model, x)
+ self.process_notebook(model, self.widget)
if model and ('state' in model.mgroup.fields):
state = model['state'].get(model)
else:
state = 'draft'
button_focus = field_focus = None
- for widget in self.state_aware_widgets:
- if not isinstance(widget.widget, gtk.Frame) or state:
+ for widget in self.state_aware_widgets :
+ if not isinstance(widget.widget, gtk.Frame) or widget.widget.attrs.get('states'):
widget.state_set(state)
widget.attrs_set(model)
if widget.widget.attrs.get('focus_button'):
@@ -439,15 +447,8 @@
continue
position = widgets.widget.position
focus_widget = widgets
- for x in self.widget.get_children():
- if not focus_widget:
- continue
- if isinstance(x, gtk.Table):
- for y in x.get_children():
- if isinstance(y, gtk.Notebook):
- self.set_notebook(model, y, focus_widget)
- elif isinstance(x, gtk.Notebook):
- self.set_notebook(model, x, focus_widget)
+ if focus_widget:
+ self.process_notebook(model, self.widget, focus_widget)
return True
# 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