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()
Beispiel #2
0
    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()