diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 6e2cdaaa25..cfef2cd5d7 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -13,18 +13,19 @@ class ModelList(list): def insert(self, pos, obj): if pos >= 1: - self.__getitem__(pos - 1).next = obj + self.__getitem__(pos - 1).next[id(self)] = obj if pos < self.__len__(): - obj.next = self.__getitem__(pos) + obj.next[id(self)] = self.__getitem__(pos) else: - obj.next = None + obj.next[id(self)] = None super(ModelList, self).insert(pos, obj) if not self.lock_signal: self.__screen.signal('record-changed', ('record-added', pos)) def append(self, obj): if self.__len__() >= 1: - self.__getitem__(self.__len__() - 1).next = obj + self.__getitem__(self.__len__() - 1).next[id(self)] = obj + obj.next[id(self)] = None super(ModelList, self).append(obj) if not self.lock_signal: self.__screen.signal('record-changed', ('record-added', -1)) @@ -33,9 +34,9 @@ class ModelList(list): idx = self.index(obj) if idx >= 1: if idx + 1 < self.__len__(): - self.__getitem__(idx - 1).next = self.__getitem__(idx + 1) + self.__getitem__(idx - 1).next[id(self)] = self.__getitem__(idx + 1) else: - self.__getitem__(idx - 1).next = None + self.__getitem__(idx - 1).next[id(self)] = None super(ModelList, self).remove(obj) if not self.lock_signal: self.__screen.signal('record-changed', ('record-removed', idx)) diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py index 96e968bdd6..2f31b14b92 100644 --- a/tryton/gui/window/view_form/model/record.py +++ b/tryton/gui/window/view_form/model/record.py @@ -39,7 +39,7 @@ class ModelRecord(SignalEvent): self.modified_fields = {} self.read_time = time.time() self.attachment_count = -1 - self.next = None + self.next = {} for key, val in self.mgroup.mfields.items(): self.value[key] = val.create(self) if (new and val.attrs['type']=='one2many') \ diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py index afec35d3e7..02c95d646d 100644 --- a/tryton/gui/window/view_form/view/form.py +++ b/tryton/gui/window/view_form/view/form.py @@ -145,10 +145,10 @@ class ViewForm(ParserView): return self.widgets[name] def destroy(self): - self.widget.destroy() for widget in self.widgets.keys(): self.widgets[widget].widget.destroy() del self.widgets[widget] + self.widget.destroy() del self.widget del self.widgets del self.screen diff --git a/tryton/gui/window/view_form/view/list.py b/tryton/gui/window/view_form/view/list.py index 82222571c9..48d0c7984c 100644 --- a/tryton/gui/window/view_form/view/list.py +++ b/tryton/gui/window/view_form/view/list.py @@ -24,14 +24,14 @@ class AdaptModelGroup(gtk.GenericTreeModel): def added(self, modellist, position): if modellist is self.models: model = self.models[position] - self.emit('row_inserted', self.on_get_path(model), - self.get_iter(self.on_get_path(model))) + self.row_inserted(self.on_get_path(model), + self.get_iter(self.on_get_path(model))) def cancel(self): pass def removed(self, lst, position): - self.emit('row_deleted', position) + self.row_deleted(position) self.invalidate_iters() def append(self, model): @@ -71,10 +71,10 @@ class AdaptModelGroup(gtk.GenericTreeModel): prev = None for model in self.models: if prev: - prev.next = model + prev.next[id(self.models)] = model prev = model if prev: - prev.next = None + prev.next[id(self.models)] = None self.rows_reordered(None, None, new_order) def __len__(self): @@ -109,7 +109,7 @@ class AdaptModelGroup(gtk.GenericTreeModel): def on_iter_next(self, node): try: - return node.next + return node.next[id(self.models)] except IndexError: return None