""" 新建项目对话框 """ from PyQt5.QtWidgets import ( QDialog, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QTextEdit, QPushButton, QMessageBox ) from PyQt5.QtCore import Qt from gui_ai_developer.models import Project, Requirement, Module, Document class NewProjectDialog(QDialog): """新建项目对话框""" def __init__(self, parent=None): """ 初始化对话框 Args: parent: 父窗口 """ super().__init__(parent) self.project = None self._setup_ui() def _setup_ui(self): """设置UI""" self.setWindowTitle("新建项目") self.setModal(True) self.resize(700, 500) layout = QVBoxLayout(self) layout.setSpacing(15) # 标题 title_label = QLabel("

📁 新建项目

") layout.addWidget(title_label) # 项目名称 layout.addWidget(QLabel("项目名称 *")) self.name_edit = QLineEdit() self.name_edit.setPlaceholderText("请输入项目名称") layout.addWidget(self.name_edit) # 项目描述 layout.addWidget(QLabel("项目描述")) self.desc_edit = QTextEdit() self.desc_edit.setPlaceholderText("请输入项目描述(可选)") self.desc_edit.setMaximumHeight(80) layout.addWidget(self.desc_edit) # 需求描述 layout.addWidget(QLabel("需求描述 *")) self.req_edit = QTextEdit() self.req_edit.setPlaceholderText( "请输入项目需求...\n\n" "建议格式:\n" "1. 功能描述\n" "2. 性能要求\n" "3. 安全要求" ) layout.addWidget(self.req_edit) # 按钮区域 button_layout = QHBoxLayout() button_layout.addStretch() cancel_btn = QPushButton("取消") cancel_btn.setStyleSheet(""" QPushButton { background: rgba(51, 65, 85, 0.5); border: 1px solid rgba(59, 130, 246, 0.2); } """) cancel_btn.clicked.connect(self.reject) button_layout.addWidget(cancel_btn) create_btn = QPushButton("创建项目") create_btn.clicked.connect(self._create_project) button_layout.addWidget(create_btn) layout.addLayout(button_layout) def _create_project(self): """创建项目""" # 验证输入 name = self.name_edit.text().strip() if not name: QMessageBox.warning(self, "提示", "请输入项目名称") return req_text = self.req_edit.toPlainText().strip() if not req_text: QMessageBox.warning(self, "提示", "请输入需求描述") return # 创建项目对象 self.project = Project( name=name, description=self.desc_edit.toPlainText().strip() ) self.project.original_requirement = req_text # 模拟生成需求 self._generate_requirements() # 模拟生成模块 self._generate_modules() # 模拟生成文档 self._generate_documents() self.accept() def _generate_requirements(self): """生成需求(模拟AI分析)""" requirements = [ Requirement("REQ-001", "核心功能", "从需求文本提取的核心功能", 90, "高"), Requirement("REQ-002", "数据管理", "数据的增删改查功能", 85, "中"), Requirement("REQ-003", "用户管理", "用户认证和权限管理", 88, "高") ] for req in requirements: self.project.add_requirement(req) def _generate_modules(self): """生成模块(模拟AI生成)""" modules = [ Module("核心业务模块", "实现主要业务逻辑", ["REQ-001"]), Module("数据管理模块", "数据存储和查询", ["REQ-002"]), Module("用户认证模块", "用户登录和权限控制", ["REQ-003"]) ] for module in modules: module.add_tech("Spring Boot") module.add_tech("MySQL") module.add_tech("Redis") self.project.add_module(module) def _generate_documents(self): """生成文档""" documents = [ Document("需求规格说明书.docx", "SRS", "1.5 MB"), Document("功能设计文档.docx", "功能设计", "1.2 MB"), Document("接口文档.pdf", "API", "800 KB") ] for doc in documents: self.project.add_document(doc) def get_project(self): """获取创建的项目""" return self.project