mirror of
https://github.com/yuruotong1/autoMate.git
synced 2026-03-22 13:07:17 +08:00
增加本地存储,完成
This commit is contained in:
@@ -65,9 +65,9 @@ class ActionBase:
|
||||
self.action_arg[arg_name] = self.__ui_name_and_link_edit[arg_name].text()
|
||||
# 如果双击应用列表打开的配置页面,保存后向应用列表最后插入
|
||||
if self.action_pos is None:
|
||||
self.action_pos = GlobalUtil.action_list_global.count()
|
||||
self.action_pos = GlobalUtil.current_action.count()
|
||||
|
||||
GlobalUtil.action_list_global.insertItem(self.action_pos, ActionListViewItem(self))
|
||||
GlobalUtil.current_action.insertItem(self.action_pos, ActionListViewItem(self))
|
||||
self.__config_ui.hide()
|
||||
|
||||
def config_page_show(self):
|
||||
|
||||
@@ -5,15 +5,15 @@ from actions.search_engine_action import SearchEngineAction
|
||||
|
||||
|
||||
class ActionList:
|
||||
funcs = [OpenApplicationAction(), OpenBrowserUrlAction(), SearchEngineAction(), LLMAction()]
|
||||
actions = [OpenApplicationAction(), OpenBrowserUrlAction(), SearchEngineAction(), LLMAction()]
|
||||
|
||||
@classmethod
|
||||
def get_funcs(cls):
|
||||
return cls.funcs
|
||||
return cls.actions
|
||||
|
||||
@classmethod
|
||||
def get_fuc_by_name(cls, name):
|
||||
for i in cls.funcs:
|
||||
def get_action_by_name(cls, name):
|
||||
for i in cls.actions:
|
||||
if i.name == name:
|
||||
return i
|
||||
return None
|
||||
|
||||
@@ -25,7 +25,7 @@ class ActionListViewItem(QListWidgetItem):
|
||||
def load(cls, action_item: ActionItem):
|
||||
from actions.action_list import ActionList
|
||||
from actions.action_base import ActionBase
|
||||
action: ActionBase = ActionList.get_fuc_by_name(action_item.action_name)()
|
||||
action: ActionBase = ActionList.get_action_by_name(action_item.action_name)
|
||||
action.action_pos = action_item.action_pos
|
||||
action.action_arg = action_item.action_arg
|
||||
action_list_view_item = ActionListViewItem(action)
|
||||
@@ -48,11 +48,12 @@ class ActionListView(QListWidget):
|
||||
func_description: str
|
||||
action_items: list[ActionListViewItem.ActionItem]
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, func_list_pos_row, func_list_pos_column, *args, **kwargs):
|
||||
super().__init__()
|
||||
# 在func上的信息
|
||||
self.func_list_pos_row = -1
|
||||
self.func_list_pos_column = -1
|
||||
# 在func页面上的位置
|
||||
self.func_list_pos_row = func_list_pos_row
|
||||
self.func_list_pos_column = func_list_pos_column
|
||||
# 在func上的名称
|
||||
self.func_name = ""
|
||||
self.func_description = ""
|
||||
self.setAcceptDrops(True)
|
||||
@@ -71,9 +72,8 @@ class ActionListView(QListWidget):
|
||||
|
||||
@classmethod
|
||||
def load(cls, action_list_view_json: ActionListViewJson):
|
||||
action_list_view = ActionListView()
|
||||
action_list_view.func_list_pos_row = action_list_view_json.func_list_pos_row
|
||||
action_list_view.func_list_pos_column = action_list_view_json.func_list_pos_column
|
||||
action_list_view = ActionListView(action_list_view_json.func_list_pos_row,
|
||||
action_list_view_json.func_list_pos_column)
|
||||
action_list_view.func_name = action_list_view_json.func_name
|
||||
action_list_view.func_description = action_list_view_json.func_description
|
||||
for item in action_list_view_json.action_items:
|
||||
@@ -222,7 +222,7 @@ class ActionListView(QListWidget):
|
||||
# 向指定行插入数据
|
||||
item_data = e.mimeData().data(self.my_mime_type)
|
||||
from actions.action_list import ActionList
|
||||
function = ActionList.get_fuc_by_name(item_data)
|
||||
function = ActionList.get_action_by_name(item_data)
|
||||
function.action_pos = self.the_insert_row
|
||||
function.config_page_show()
|
||||
# self.insertItem(self.the_insert_row, ActionListViewItem(function))
|
||||
@@ -234,7 +234,19 @@ class ActionListView(QListWidget):
|
||||
|
||||
|
||||
class GlobalUtil:
|
||||
action_list_global: [ActionListView]
|
||||
action_list_global: list[ActionListView] = []
|
||||
current_action: ActionListView = None
|
||||
|
||||
@classmethod
|
||||
def get_list_view_by_position(cls, row, column):
|
||||
for i in cls.action_list_global:
|
||||
if i.func_list_pos_row == row and i.func_list_pos_column == column:
|
||||
return i
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def delete_action_view(cls, action_view):
|
||||
cls.action_list_global.remove(action_view)
|
||||
|
||||
@classmethod
|
||||
def read_from_local(cls):
|
||||
@@ -243,13 +255,16 @@ class GlobalUtil:
|
||||
return []
|
||||
|
||||
with open("./cache", "rb") as file:
|
||||
data = pickle.load(file)["action_list_global"]
|
||||
data = pickle.load(file).get("action_list_global")
|
||||
if not data:
|
||||
data = []
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
def save_to_local(cls):
|
||||
with open("./cache", "wb") as file:
|
||||
pickle.dump({"action_list_global": cls.action_list_global}, file)
|
||||
action_list_json = [i.dump() for i in cls.action_list_global]
|
||||
pickle.dump({"action_list_global": action_list_json}, file)
|
||||
|
||||
@classmethod
|
||||
def init(cls):
|
||||
@@ -264,5 +279,4 @@ class GlobalUtil:
|
||||
else:
|
||||
action_list_json = []
|
||||
for action in action_list_json:
|
||||
action_json = ActionListView.ActionListViewJson(**action)
|
||||
cls.action_list_global.append(ActionListView.load(action_json))
|
||||
cls.action_list_global.append(ActionListView.load(action))
|
||||
|
||||
@@ -9,7 +9,7 @@ class EditPage(BasePage):
|
||||
self.ui = QtUtil.load_ui("edit_page.ui")
|
||||
function_list_view = FunctionListView()
|
||||
self.ui.function_list_layout.addWidget(function_list_view)
|
||||
# self.ui.ListViewLayout.addWidget(GlobalUtil.action_list_global)
|
||||
self.ui.ListViewLayout.addWidget(GlobalUtil.current_action)
|
||||
self.ui.run_button.clicked.connect(self.__run_button_click)
|
||||
self.ui.save_button.clicked.connect(self.__save_button_click)
|
||||
self.ui.cancel_button.clicked.connect(self.__cancel_button_click)
|
||||
@@ -21,16 +21,19 @@ class EditPage(BasePage):
|
||||
def __save_button_click(self):
|
||||
GlobalUtil.save_to_local()
|
||||
self.ui.hide()
|
||||
self.func = FunctionListView()
|
||||
from pages.func_list_page import FuncListPage
|
||||
self.func = FuncListPage()
|
||||
self.func.show()
|
||||
|
||||
def __cancel_button_click(self):
|
||||
GlobalUtil.delete_action_view(GlobalUtil.current_action)
|
||||
self.ui.hide()
|
||||
self.func = FunctionListView()
|
||||
self.func.show()
|
||||
|
||||
def __run_button_click(self):
|
||||
GlobalUtil.action_list_global.model()
|
||||
for index in range(GlobalUtil.action_list_global.count()):
|
||||
func = GlobalUtil.action_list_global.item(index)
|
||||
@staticmethod
|
||||
def __run_button_click():
|
||||
GlobalUtil.current_action.model()
|
||||
for index in range(GlobalUtil.current_action.count()):
|
||||
func = GlobalUtil.current_action.item(index)
|
||||
r = func.__getattribute__("func").run_with_out_arg()
|
||||
|
||||
@@ -3,15 +3,16 @@ from PyQt6.QtGui import QIcon
|
||||
from PyQt6.QtWidgets import QPushButton, QGraphicsOpacityEffect
|
||||
|
||||
from pages.bse_page import BasePage
|
||||
from pages.edit_action_list_view import GlobalUtil, ActionListView
|
||||
from pages.edit_page import EditPage
|
||||
from utils.qt_util import QtUtil
|
||||
|
||||
|
||||
class AddFuncButton(QPushButton):
|
||||
def __init__(self, pos_x, pos_y, func_list_page):
|
||||
def __init__(self, func_list_pos_row, func_list_pos_column, func_list_page):
|
||||
super().__init__()
|
||||
self.pos_x = pos_x
|
||||
self.pos_y = pos_y
|
||||
self.func_list_pos_row = func_list_pos_row
|
||||
self.func_list_pos_column = func_list_pos_column
|
||||
self.func_list_page = func_list_page
|
||||
self.setMouseTracking(True)
|
||||
self.clicked.connect(self.click)
|
||||
@@ -27,6 +28,11 @@ class AddFuncButton(QPushButton):
|
||||
|
||||
def click(self):
|
||||
self.func_list_page.hide()
|
||||
list_view = GlobalUtil.get_list_view_by_position(self.func_list_pos_row, self.func_list_pos_column)
|
||||
if not list_view:
|
||||
list_view = ActionListView(self.func_list_pos_row, self.func_list_pos_column)
|
||||
GlobalUtil.action_list_global.append(list_view)
|
||||
GlobalUtil.current_action = list_view
|
||||
self.edit_page = EditPage()
|
||||
self.edit_page.show()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user