import os import logging from PySide6.QtGui import * from PySide6.QtCore import * from PySide6.QtWidgets import * logger = logging.getLogger(__name__) from .mil_project_ui import Ui_FrameMILProject from mil.core import Config class MILProject(QFrame, Ui_FrameMILProject): update_item_name_signal = Signal() update_item_data_path_signal = Signal(str,str) update_item_file_path_signal = Signal(str,str) def __init__(self, config, name = None,parent = None): super().__init__(parent) self.setupUi(self) self.initUI(config,name) def initUI(self,config:Config, name:str): self.lineEditDataPath.setReadOnly(True) self.lineEditFilePath.setReadOnly(True) self.name = name self.config = config self.ItemConfigs = config.ItemConfigs if self.name is not None and self.name in self.ItemConfigs.keys(): self.lineEditName.setText(name) self.lineEditDataPath.setText(self.ItemConfigs[self.name]["DataPath"]) self.lineEditFilePath.setText(self.ItemConfigs[self.name]["FilePath"]) else: self.pushButtonDataPath.setEnabled(False) self.pushButtonFilePath.setEnabled(False) self.lineEditName.setPlaceholderText("必填项!!!") self.lineEditDataPath.setPlaceholderText("点击【选择数据文件】按钮,选择路径!") self.lineEditFilePath.setPlaceholderText("点击【选择测试用例】按钮,选择路径!") self.lineEditName.editingFinished.connect(self.on_name_editing_finished_event) self.lineEditDataPath.editingFinished.connect(self.on_datapath_editing_finished_event) self.lineEditFilePath.editingFinished.connect(self.on_filepath_editing_finished_event) self.pushButtonDataPath.clicked.connect(self.on_data_path_event) self.pushButtonFilePath.clicked.connect(self.on_file_path_event) def on_name_editing_finished_event(self): name = self.lineEditName.text() if name.replace(" ", "") == "": self.lineEditName.setText(self.name) logger.warning("项目名称是必填项!!!") return if name == self.name: return if self.name is None: self.name = name self.ItemConfigs[name] = dict() self.ItemConfigs[name]["DataPath"] = "" self.ItemConfigs[name]["FilePath"] = "" else: self.ItemConfigs[name] = self.ItemConfigs.pop(self.name) if self.name == self.config.CurrProject: self.config.CurrProject = name self.name = name self.config.save_config() self.update_item_name_signal.emit() self.pushButtonDataPath.setEnabled(True) self.pushButtonFilePath.setEnabled(True) def on_datapath_editing_finished_event(self): name = self.lineEditName.text() data_path = self.lineEditDataPath.text() if data_path.replace(" ","") == "": logger.warning("数据文件路径无效!") return self.ItemConfigs[name]["DataPath"] = data_path self.config.save_config() self.update_item_data_path_signal.emit(name,data_path) def on_filepath_editing_finished_event(self): name = self.lineEditName.text() file_path = self.lineEditFilePath.text() if file_path.replace(" ","") == "": logger.warning("测试用例路径无效!") return self.ItemConfigs[name]["FilePath"] = file_path self.config.save_config() self.update_item_file_path_signal.emit(name,file_path) def on_data_path_event(self): dataPath = self.lineEditDataPath.text() if os.path.exists(dataPath): path,type = QFileDialog.getOpenFileName(self, "选择文件", dataPath,"Excel工作簿(*.xlsx)") else: path,type = QFileDialog.getOpenFileName(self, "选择文件", "./","Excel工作簿(*.xlsx)") if not os.path.exists(path): return self.lineEditDataPath.setText(path) self.on_datapath_editing_finished_event() def on_file_path_event(self): filePath = self.lineEditFilePath.text() if os.path.exists(filePath): path,type = QFileDialog.getOpenFileName(self, "选择文件", filePath,"Excel工作簿(*.xlsx)") else: path,type = QFileDialog.getOpenFileName(self, "选择文件", "./","Excel工作簿(*.xlsx)") if not os.path.exists(path): return self.lineEditFilePath.setText(path) self.on_filepath_editing_finished_event()