diff --git a/actions/action_list.py b/actions/action_list.py index 639d7cf..a79ee04 100644 --- a/actions/action_list.py +++ b/actions/action_list.py @@ -75,7 +75,7 @@ class ActionList(QListWidget): def get_parent(self): if self.level == 0: return GlobalUtil.current_page - return GlobalUtil.get_widget_by_uuid(self.parent_uuid, "action_list") + return GlobalUtil.get_widget_by_uuid(self.parent_uuid, "action_list_item") def init(self): diff --git a/actions/action_list_item.py b/actions/action_list_item.py index 79b523f..8f4c1df 100644 --- a/actions/action_list_item.py +++ b/actions/action_list_item.py @@ -35,7 +35,7 @@ class ActionListItem(QListWidgetItem): from actions.action_list import ActionList # 如果子元素不是 action_list 则加载 if not isinstance(self.data(QtCore.Qt.ItemDataRole.UserRole), ActionList): - action_list = ActionList.load({"action_list": self.action.args.action_list, "parent_uuid": self.get_parent().uuid}, self.get_parent().level + 1) + action_list = ActionList.load({"action_list": self.action.args.action_list, "parent_uuid": self.uuid}, self.get_parent().level + 1) action_list.action_signal.size_changed.connect(self._adjust_ui) self.setData(QtCore.Qt.ItemDataRole.UserRole, action_list) action_list.setGeometry(QtCore.QRect(20, 30, widget.width() - 20, 20)) diff --git a/utils/undo_command.py b/utils/undo_command.py index 8a559a9..9d4f034 100644 --- a/utils/undo_command.py +++ b/utils/undo_command.py @@ -14,6 +14,8 @@ class ActionListAddCommand(QUndoCommand): def redo(self): self.action_list.insertItem(self.row, self.action_item) + if self.action_list.level > 0: + self.action_list.get_parent().action.args.action_list.append(self.action_item.action) self.action_item.render() self.action_list.adjust_ui() @@ -25,6 +27,8 @@ class ActionListAddCommand(QUndoCommand): # GlobalUtil.all_widget["action_list"].remove(self.action_item.data(QtCore.Qt.ItemDataRole.UserRole)) del GlobalUtil.all_widget["action_list"][self.action_item.data(QtCore.Qt.ItemDataRole.UserRole).uuid] del GlobalUtil.all_widget["action_list_item"][self.action_item.uuid] + if self.action_list.level > 0: + self.action_list.get_parent().action.args.action_list.remove(self.action_item.action) from actions.action_list_item import ActionListItem # 重新加载,避免被 pyqt GC action_list_item = ActionListItem.load(self.action_item.dump()) @@ -49,6 +53,8 @@ class ActionListDeleteCommand(QUndoCommand): if self.delete_action_list_item.type == "include": del GlobalUtil.all_widget["action_list"][self.action_list.item(self.row).data(QtCore.Qt.ItemDataRole.UserRole).uuid] del GlobalUtil.all_widget["action_list_item"][self.delete_action_list_item.uuid] + if self.action_list.level > 0: + self.action_list.get_parent().action.args.action_list.remove(self.delete_action_list_item.action) self.action_list.takeItem(self.row) self.action_list.adjust_ui() @@ -56,6 +62,9 @@ class ActionListDeleteCommand(QUndoCommand): def undo(self): self.action_list.insertItem(self.row, self.delete_action_list_item) + if self.action_list.level > 0: + self.action_list.get_parent().action.args.action_list.append(self.delete_action_list_item.action) self.delete_action_list_item.render() self.action_list.adjust_ui() +