f4ceb240 by shady

Revert "增加队列模式,支持同时做多个任务"

This reverts commit 3689be68.
1 parent 3689be68
...@@ -1043,10 +1043,6 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1043,10 +1043,6 @@ class ImageGeneratorWindow(QMainWindow):
1043 # Initialize history manager 1043 # Initialize history manager
1044 self.history_manager = HistoryManager() 1044 self.history_manager = HistoryManager()
1045 1045
1046 # Initialize task queue manager
1047 from task_queue import TaskQueueManager
1048 self.task_manager = TaskQueueManager()
1049
1050 self.setup_ui() 1046 self.setup_ui()
1051 self.apply_styles() 1047 self.apply_styles()
1052 1048
...@@ -1258,14 +1254,10 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1258,14 +1254,10 @@ class ImageGeneratorWindow(QMainWindow):
1258 central_widget = QWidget() 1254 central_widget = QWidget()
1259 self.setCentralWidget(central_widget) 1255 self.setCentralWidget(central_widget)
1260 1256
1261 main_layout = QHBoxLayout() 1257 main_layout = QVBoxLayout()
1262 main_layout.setContentsMargins(10, 10, 10, 10) 1258 main_layout.setContentsMargins(10, 10, 10, 10)
1263 main_layout.setSpacing(10) 1259 main_layout.setSpacing(10)
1264 1260
1265 # Left side: Main content
1266 content_layout = QVBoxLayout()
1267 content_layout.setSpacing(10)
1268
1269 # Create tab widget 1261 # Create tab widget
1270 self.tab_widget = QTabWidget() 1262 self.tab_widget = QTabWidget()
1271 1263
...@@ -1287,20 +1279,7 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1287,20 +1279,7 @@ class ImageGeneratorWindow(QMainWindow):
1287 history_tab = self.setup_history_tab() 1279 history_tab = self.setup_history_tab()
1288 self.tab_widget.addTab(history_tab, "历史记录") 1280 self.tab_widget.addTab(history_tab, "历史记录")
1289 1281
1290 content_layout.addWidget(self.tab_widget) 1282 main_layout.addWidget(self.tab_widget)
1291
1292 # Create content widget with vertical layout
1293 content_widget = QWidget()
1294 content_widget.setLayout(content_layout)
1295
1296 # Add content to left side
1297 main_layout.addWidget(content_widget, 7) # 70% width
1298
1299 # Right side: Task queue sidebar
1300 from task_queue import TaskQueueWidget
1301 self.task_queue_widget = TaskQueueWidget(self.task_manager)
1302 main_layout.addWidget(self.task_queue_widget, 3) # 30% width
1303
1304 central_widget.setLayout(main_layout) 1283 central_widget.setLayout(main_layout)
1305 1284
1306 self.check_favorite_status() 1285 self.check_favorite_status()
...@@ -1944,66 +1923,26 @@ class ImageGeneratorWindow(QMainWindow): ...@@ -1944,66 +1923,26 @@ class ImageGeneratorWindow(QMainWindow):
1944 self.status_label.setStyleSheet("QLabel { color: #34C759; }") 1923 self.status_label.setStyleSheet("QLabel { color: #34C759; }")
1945 1924
1946 def generate_image_async(self): 1925 def generate_image_async(self):
1947 """Submit image generation task to queue""" 1926 """Start image generation in a separate thread"""
1948 from task_queue import TaskType 1927 # Create and start worker thread
1949 1928 self.worker = ImageGenerationWorker(
1950 prompt = self.prompt_text.toPlainText().strip() 1929 self.api_key,
1951 if not prompt: 1930 self.prompt_text.toPlainText().strip(),
1952 QMessageBox.warning(self, "提示", "请输入图片描述!") 1931 self.uploaded_images,
1953 return 1932 self.aspect_ratio.currentText(),
1954 1933 self.image_size.currentText(),
1955 try: 1934 "gemini-3-pro-image-preview" # 锁死模型
1956 # Submit task to queue
1957 task_id = self.task_manager.submit_task(
1958 task_type=TaskType.IMAGE_GENERATION,
1959 prompt=prompt,
1960 api_key=self.api_key,
1961 reference_images=self.uploaded_images.copy(),
1962 aspect_ratio=self.aspect_ratio.currentText(),
1963 image_size=self.image_size.currentText(),
1964 model="gemini-3-pro-image-preview"
1965 ) 1935 )
1936 self.worker.finished.connect(self.on_image_generated)
1937 self.worker.error.connect(self.on_generation_error)
1938 self.worker.progress.connect(self.update_status)
1966 1939
1967 # Connect to task completion signal 1940 self.generate_btn.setEnabled(False)
1968 self.task_manager.task_completed.connect( 1941 self.download_btn.setEnabled(False)
1969 lambda tid, img, p, refs, ar, size, model: 1942 self.status_label.setText("● 正在生成图片...")
1970 self._on_my_task_completed(task_id, tid, img, p, refs, ar, size, model) 1943 self.status_label.setStyleSheet("QLabel { color: #FF9500; }")
1971 )
1972
1973 # Update UI
1974 self.status_label.setText(f"● 任务已提交 (ID: {task_id[:8]})")
1975 self.status_label.setStyleSheet("QLabel { color: #007AFF; }")
1976
1977 except RuntimeError as e:
1978 QMessageBox.warning(self, "队列已满", str(e))
1979
1980 def _on_my_task_completed(self, my_task_id, task_id, image_bytes, prompt,
1981 reference_images, aspect_ratio, image_size, model):
1982 """Handle completion of my submitted task"""
1983 if my_task_id != task_id:
1984 return # Not my task
1985 1944
1986 # Update display 1945 self.worker.start()
1987 self.generated_image_bytes = image_bytes
1988 self.display_image()
1989 self.download_btn.setEnabled(True)
1990 self.status_label.setText("● 图片生成成功")
1991 self.status_label.setStyleSheet("QLabel { color: #34C759; }")
1992
1993 # Save to history
1994 try:
1995 self.history_manager.save_generation(
1996 image_bytes=image_bytes,
1997 prompt=prompt,
1998 reference_images=reference_images,
1999 aspect_ratio=aspect_ratio,
2000 image_size=image_size,
2001 model=model
2002 )
2003 self.status_label.setText("● 图片生成成功,已保存到历史记录")
2004 self.refresh_history()
2005 except Exception as e:
2006 self.logger.warning(f"保存到历史记录失败: {e}")
2007 1946
2008 def on_image_generated(self, image_bytes, prompt, reference_images, aspect_ratio, image_size, model): 1947 def on_image_generated(self, image_bytes, prompt, reference_images, aspect_ratio, image_size, model):
2009 """Handle successful image generation""" 1948 """Handle successful image generation"""
...@@ -3300,9 +3239,7 @@ class StyleDesignerTab(QWidget): ...@@ -3300,9 +3239,7 @@ class StyleDesignerTab(QWidget):
3300 combo.setCurrentIndex(0) 3239 combo.setCurrentIndex(0)
3301 3240
3302 def generate_image(self): 3241 def generate_image(self):
3303 """Submit image generation task to queue""" 3242 """调用文生图 API"""
3304 from task_queue import TaskType
3305
3306 # 获取 prompt 3243 # 获取 prompt
3307 prompt = self.prompt_preview.toPlainText() 3244 prompt = self.prompt_preview.toPlainText()
3308 if not prompt.strip(): 3245 if not prompt.strip():
...@@ -3312,61 +3249,36 @@ class StyleDesignerTab(QWidget): ...@@ -3312,61 +3249,36 @@ class StyleDesignerTab(QWidget):
3312 # 获取设置 3249 # 获取设置
3313 aspect_ratio = self.aspect_ratio.currentText() 3250 aspect_ratio = self.aspect_ratio.currentText()
3314 image_size = self.image_size.currentText() 3251 image_size = self.image_size.currentText()
3315 model = "gemini-3-pro-image-preview" 3252 model = "gemini-3-pro-image-preview" # 硬编码使用默认模型
3316 3253
3317 # 获取父窗口的 API key 3254 # 获取父窗口的 API key
3318 if not hasattr(self.parent_window, 'api_key') or not self.parent_window.api_key: 3255 if not hasattr(self.parent_window, 'api_key') or not self.parent_window.api_key:
3319 QMessageBox.warning(self, "错误", "未找到 API 密钥,请在主窗口配置") 3256 QMessageBox.warning(self, "错误", "未找到 API 密钥,请在主窗口配置")
3320 return 3257 return
3321 3258
3322 try: 3259 # 非阻塞状态提示
3323 # Submit task to queue 3260 self.generate_btn.setEnabled(False)
3324 task_id = self.parent_window.task_manager.submit_task( 3261 self.status_label.setText("● 生成中...")
3325 task_type=TaskType.STYLE_DESIGN, 3262 QApplication.processEvents()
3326 prompt=prompt,
3327 api_key=self.parent_window.api_key,
3328 reference_images=[],
3329 aspect_ratio=aspect_ratio,
3330 image_size=image_size,
3331 model=model
3332 )
3333
3334 # Connect to task completion signal
3335 self.parent_window.task_manager.task_completed.connect(
3336 lambda tid, img, p, refs, ar, size, mdl:
3337 self._on_my_task_completed(task_id, tid, img, p, refs, ar, size, mdl)
3338 )
3339
3340 # Update UI
3341 self.status_label.setText(f"● 任务已提交 (ID: {task_id[:8]})")
3342
3343 except RuntimeError as e:
3344 QMessageBox.warning(self, "队列已满", str(e))
3345 3263
3346 def _on_my_task_completed(self, my_task_id, task_id, image_bytes, prompt,
3347 reference_images, aspect_ratio, image_size, model):
3348 """Handle completion of my submitted task"""
3349 if my_task_id != task_id:
3350 return # Not my task
3351
3352 # Update display
3353 self.generated_image_bytes = image_bytes
3354 self._display_generated_image_from_bytes()
3355 self.status_label.setText("● 生成成功")
3356
3357 # Save to history
3358 try: 3264 try:
3359 self.parent_window.history_manager.save_generation( 3265 # 创建生成线程
3360 image_bytes=image_bytes, 3266 self.gen_thread = ImageGenerationWorker(
3267 api_key=self.parent_window.api_key,
3361 prompt=prompt, 3268 prompt=prompt,
3362 reference_images=reference_images, 3269 images=[],
3363 aspect_ratio=aspect_ratio, 3270 aspect_ratio=aspect_ratio,
3364 image_size=image_size, 3271 image_size=image_size,
3365 model=model 3272 model=model
3366 ) 3273 )
3367 self.parent_window.refresh_history() 3274 self.gen_thread.finished.connect(self.on_generation_success)
3275 self.gen_thread.error.connect(self.on_generation_error)
3276 self.gen_thread.start()
3277
3368 except Exception as e: 3278 except Exception as e:
3369 self.logger.warning(f"保存到历史记录失败: {e}") 3279 self.generate_btn.setEnabled(True)
3280 self.status_label.setText("● 就绪")
3281 QMessageBox.critical(self, "错误", f"生成失败: {e}")
3370 3282
3371 def on_generation_success(self, image_bytes: bytes): 3283 def on_generation_success(self, image_bytes: bytes):
3372 """生成成功回调""" 3284 """生成成功回调"""
...@@ -3437,34 +3349,6 @@ class StyleDesignerTab(QWidget): ...@@ -3437,34 +3349,6 @@ class StyleDesignerTab(QWidget):
3437 self.status_label.setText("● 就绪") 3349 self.status_label.setText("● 就绪")
3438 QMessageBox.critical(self, "生成失败", error_msg) 3350 QMessageBox.critical(self, "生成失败", error_msg)
3439 3351
3440 def _display_generated_image_from_bytes(self):
3441 """从字节数据显示生成的图片"""
3442 if not self.generated_image_bytes:
3443 return
3444
3445 try:
3446 pixmap = QPixmap()
3447 pixmap.loadFromData(self.generated_image_bytes)
3448
3449 if not pixmap.isNull():
3450 # 缩放以适应标签大小
3451 scaled_pixmap = pixmap.scaled(
3452 self.result_label.size(),
3453 Qt.KeepAspectRatio,
3454 Qt.SmoothTransformation
3455 )
3456 self.result_label.setPixmap(scaled_pixmap)
3457 self.result_label.setStyleSheet("""
3458 QLabel {
3459 border: 1px solid #ddd;
3460 background-color: white;
3461 }
3462 """)
3463 # 启用下载按钮
3464 self.download_btn.setEnabled(True)
3465 except Exception as e:
3466 self.logger.error(f"显示图片失败: {e}")
3467
3468 def download_image(self): 3352 def download_image(self):
3469 """下载图片""" 3353 """下载图片"""
3470 if not self.generated_image_bytes: 3354 if not self.generated_image_bytes:
......