def openObject(self, index): def object_saved(key, updated_object): parent_object = copy(self.original_object) setattr(parent_object, key, updated_object.to_json()) self.valueChanged(parent_object) def object_dismissed(): del self.object_editor key = index.model().data(index.model().index(index.row(), 0)) if isinstance(self.original_object[key], dict) and \ not index.model().flags(index) & QtCore.Qt.ItemIsEditable: self.object_editor = ObjectEditor( self, key, MetaObject(dict(self.model().basemodel[key]))) self.object_editor.saved.connect(object_saved) self.object_editor.rejected.connect(object_dismissed) self.object_editor.show()
def editObject(self, index): def object_saved(updated_object): row = self.proxyModel.mapToSource(index).row() obj = index.model().sourceModel().objects[row] telepat_object = TelepatBaseObject(updated_object.to_json()) patches = obj.patch_against(telepat_object) self.channel.patch(updated_object) def object_dismissed(): if hasattr(self, "object_editor"): del self.object_editor row = self.proxyModel.mapToSource(index).row() obj = index.model().sourceModel().objects[row] self.object_editor = ObjectEditor(self, self.telepat_context, self.app_users, TelepatObject(obj.to_json())) self.object_editor.saved.connect(object_saved) self.object_editor.rejected.connect(object_dismissed) self.object_editor.show()