mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-11-01 07:35:42 +08:00
创建了新的页面
This commit is contained in:
parent
fe82822d58
commit
af7529b529
@ -2,11 +2,13 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QStackedWidget, QSizePolicy
|
||||
from PyQt5.QtCore import Qt
|
||||
from qfluentwidgets import PushSettingCard, FluentIcon, TabBar
|
||||
from qfluentwidgets import TitleLabel, BodyLabel, PushButton, FluentIcon
|
||||
|
||||
from PyQt5.QtWidgets import QFileDialog
|
||||
import os
|
||||
from .function_fit_interface import FunctionFitInterface
|
||||
from .ai_interface import AIInterface
|
||||
from qfluentwidgets import InfoBar
|
||||
from .tools.update_code import update_code
|
||||
from .code_generate_interface import CodeGenerateInterface
|
||||
|
||||
class CodeConfigurationInterface(QWidget):
|
||||
def __init__(self, parent=None):
|
||||
@ -28,9 +30,10 @@ class CodeConfigurationInterface(QWidget):
|
||||
self.mainPage = QWidget(self)
|
||||
mainLayout = QVBoxLayout(self.mainPage)
|
||||
mainLayout.setAlignment(Qt.AlignTop)
|
||||
mainLayout.setSpacing(28)
|
||||
mainLayout.setContentsMargins(48, 48, 48, 48)
|
||||
mainLayout.setSpacing(28) # 设置间距
|
||||
mainLayout.setContentsMargins(48, 48, 48, 48) # 设置内容边距
|
||||
|
||||
#添加空行
|
||||
title = TitleLabel("MRobot 代码生成")
|
||||
title.setAlignment(Qt.AlignCenter)
|
||||
mainLayout.addWidget(title)
|
||||
@ -64,10 +67,10 @@ class CodeConfigurationInterface(QWidget):
|
||||
# 信号连接
|
||||
self.stackedWidget.currentChanged.connect(self.onCurrentIndexChanged)
|
||||
self.tabBar.tabCloseRequested.connect(self.onCloseTab)
|
||||
# 你可以在此处连接按钮的槽函数
|
||||
# self.choose_btn.clicked.connect(self.choose_project_folder)
|
||||
self.choose_btn.clicked.connect(self.choose_project_folder) # 启用选择项目路径按钮
|
||||
self.update_template_btn.clicked.connect(self.on_update_template)
|
||||
|
||||
|
||||
def on_update_template(self):
|
||||
def info(parent):
|
||||
InfoBar.success(
|
||||
@ -85,6 +88,38 @@ class CodeConfigurationInterface(QWidget):
|
||||
)
|
||||
update_code(parent=self, info_callback=info, error_callback=error)
|
||||
|
||||
def choose_project_folder(self):
|
||||
folder = QFileDialog.getExistingDirectory(self, "选择CUBEMX工程目录")
|
||||
if not folder:
|
||||
return
|
||||
ioc_files = [f for f in os.listdir(folder) if f.endswith('.ioc')]
|
||||
if ioc_files:
|
||||
# 检查是否已存在 codeGenPage 标签页
|
||||
for i in range(self.stackedWidget.count()):
|
||||
widget = self.stackedWidget.widget(i)
|
||||
if widget is not None and widget.objectName() == "codeGenPage":
|
||||
# 如果已存在,则切换到该标签页,并更新路径显示
|
||||
if hasattr(widget, "project_path"):
|
||||
widget.project_path = folder
|
||||
if hasattr(widget, "refresh"):
|
||||
widget.refresh()
|
||||
self.stackedWidget.setCurrentWidget(widget)
|
||||
self.tabBar.setCurrentTab("codeGenPage")
|
||||
return
|
||||
# 不存在则新建
|
||||
code_gen_page = CodeGenerateInterface(folder, self)
|
||||
self.addSubInterface(code_gen_page, "codeGenPage", "代码生成")
|
||||
self.stackedWidget.setCurrentWidget(code_gen_page)
|
||||
self.tabBar.setCurrentTab("codeGenPage")
|
||||
else:
|
||||
InfoBar.error(
|
||||
title="未找到.ioc文件",
|
||||
content="所选文件夹不是有效的CUBEMX工程目录,请重新选择。",
|
||||
parent=self,
|
||||
duration=3000
|
||||
)
|
||||
|
||||
|
||||
def addSubInterface(self, widget: QWidget, objectName: str, text: str):
|
||||
widget.setObjectName(objectName)
|
||||
self.stackedWidget.addWidget(widget)
|
||||
@ -104,6 +139,9 @@ class CodeConfigurationInterface(QWidget):
|
||||
def onCloseTab(self, index: int):
|
||||
item = self.tabBar.tabItem(index)
|
||||
widget = self.findChild(QWidget, item.routeKey())
|
||||
# 禁止关闭主页
|
||||
if widget.objectName() == "mainPage":
|
||||
return
|
||||
self.stackedWidget.removeWidget(widget)
|
||||
self.tabBar.removeTab(index)
|
||||
widget.deleteLater()
|
||||
|
||||
21
app/code_generate_interface.py
Normal file
21
app/code_generate_interface.py
Normal file
@ -0,0 +1,21 @@
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout
|
||||
from PyQt5.QtCore import Qt
|
||||
from qfluentwidgets import TitleLabel, BodyLabel
|
||||
|
||||
class CodeGenerateInterface(QWidget):
|
||||
def __init__(self, project_path, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setObjectName("CodeGenerateInterface")
|
||||
self.project_path = project_path
|
||||
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setAlignment(Qt.AlignTop)
|
||||
layout.setContentsMargins(10, 10, 10, 10)
|
||||
|
||||
title = TitleLabel("代码生成页面")
|
||||
title.setAlignment(Qt.AlignCenter)
|
||||
layout.addWidget(title)
|
||||
|
||||
desc = BodyLabel(f"当前工程路径: {self.project_path}")
|
||||
desc.setAlignment(Qt.AlignCenter)
|
||||
layout.addWidget(desc)
|
||||
@ -65,17 +65,6 @@ class MainWindow(FluentWindow):
|
||||
self.addSubInterface(AboutInterface(self), FIF.INFO, self.tr('关于'), position=NavigationItemPosition.BOTTOM)
|
||||
|
||||
|
||||
# self.navigationInterface.addWidget(
|
||||
# 'startGameButton',
|
||||
# NavigationBarPushButton(FIF.PLAY, '启动游戏', isSelectable=False),
|
||||
# self.startGame,
|
||||
# NavigationItemPosition.BOTTOM)
|
||||
|
||||
# self.navigationInterface.addWidget(
|
||||
# 'themeButton',
|
||||
# NavigationBarPushButton(FIF.BRUSH, '主题', isSelectable=False),
|
||||
# lambda: toggleTheme(lazy=True),
|
||||
# NavigationItemPosition.BOTTOM)
|
||||
|
||||
self.themeBtn = NavigationPushButton(FIF.BRUSH, "切换主题", False, self.navigationInterface)
|
||||
self.themeBtn.clicked.connect(lambda: toggleTheme(lazy=True))
|
||||
@ -86,27 +75,6 @@ class MainWindow(FluentWindow):
|
||||
NavigationItemPosition.BOTTOM
|
||||
)
|
||||
|
||||
# self.navigationInterface.addWidget(
|
||||
# 'avatar',
|
||||
# NavigationBarPushButton(FIF.HEART, '赞赏', isSelectable=False),
|
||||
# lambda: MessageBoxSupport(
|
||||
# '支持作者🥰',
|
||||
# '此程序为免费开源项目,如果你付了钱请立刻退款\n如果喜欢本项目,可以微信赞赏送作者一杯咖啡☕\n您的支持就是作者开发和维护项目的动力🚀',
|
||||
# './assets/app/images/sponsor.jpg',
|
||||
# self
|
||||
# ).exec(),
|
||||
# NavigationItemPosition.BOTTOM
|
||||
# )
|
||||
|
||||
# self.addSubInterface(self.settingInterface, FIF.SETTING, self.tr('设置'), position=NavigationItemPosition.BOTTOM)
|
||||
|
||||
# self.splashScreen.finish() # 结束启动画面
|
||||
# self.themeListener = checkThemeChange(self)
|
||||
|
||||
# if not cfg.get_value(base64.b64decode("YXV0b191cGRhdGU=").decode("utf-8")):
|
||||
# disclaimer(self)
|
||||
|
||||
|
||||
# main_window.py 只需修改关闭事件
|
||||
def closeEvent(self, e):
|
||||
# if self.themeListener and self.themeListener.isRunning():
|
||||
|
||||
@ -73,6 +73,9 @@ class MiniToolInterface(QWidget):
|
||||
def onCloseTab(self, index: int):
|
||||
item = self.tabBar.tabItem(index)
|
||||
widget = self.findChild(QWidget, item.routeKey())
|
||||
# 禁止关闭主页
|
||||
if widget.objectName() == "mainPage":
|
||||
return
|
||||
self.stackedWidget.removeWidget(widget)
|
||||
self.tabBar.removeTab(index)
|
||||
widget.deleteLater()
|
||||
|
||||
7
app/tools/analyzing_ioc.py
Normal file
7
app/tools/analyzing_ioc.py
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
|
||||
class analyzing_ioc:
|
||||
def __init__(self, ioc_data): # 初始化方法,接收IOC数据
|
||||
self.ioc_data = ioc_data # 存储IOC数据
|
||||
|
||||
|
||||
0
app/tools/code_generate.py
Normal file
0
app/tools/code_generate.py
Normal file
Loading…
Reference in New Issue
Block a user