Files

74 lines
3.0 KiB
Python
Raw Permalink Normal View History

2026-05-31 18:43:18 +08:00
# ui/widgets/settings_dialog.py
from PyQt6.QtWidgets import (
QDialog, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit,
QPushButton, QListWidget, QFileDialog, QMessageBox
)
class SettingsDialog(QDialog):
def __init__(self, current_settings, parent=None):
super().__init__(parent)
self.settings = current_settings
self.setWindowTitle("Настройки подключения и папок")
self.resize(500, 380)
self.init_ui()
def init_ui(self):
layout = QVBoxLayout(self)
layout.addWidget(QLabel("Адрес API ComfyUI:"))
self.url_input = QLineEdit()
self.url_input.setText(self.settings.get("comfyui_url", "http://127.0.0.1:8000"))
layout.addWidget(self.url_input)
layout.addWidget(QLabel("Отслеживаемые папки генерации:"))
self.paths_list = QListWidget()
for p in self.settings.get("tracked_paths", []):
self.paths_list.addItem(p)
layout.addWidget(self.paths_list)
paths_btn_layout = QHBoxLayout()
self.add_path_btn = QPushButton("Добавить дополнительную папку")
self.add_path_btn.clicked.connect(self._add_path)
self.remove_path_btn = QPushButton("Удалить выбранную")
self.remove_path_btn.clicked.connect(self._remove_path)
paths_btn_layout.addWidget(self.add_path_btn)
paths_btn_layout.addWidget(self.remove_path_btn)
layout.addLayout(paths_btn_layout)
btn_layout = QHBoxLayout()
self.save_btn = QPushButton("Сохранить")
self.save_btn.clicked.connect(self._save)
self.cancel_btn = QPushButton("Отмена")
self.cancel_btn.clicked.connect(self.reject)
btn_layout.addStretch()
btn_layout.addWidget(self.save_btn)
btn_layout.addWidget(self.cancel_btn)
layout.addLayout(btn_layout)
def _add_path(self):
dir_path = QFileDialog.getExistingDirectory(self, "Выбрать отслеживаемую папку")
if dir_path:
items = [self.paths_list.item(i).text() for i in range(self.paths_list.count())]
if dir_path not in items:
self.paths_list.addItem(dir_path)
def _remove_path(self):
selected = self.paths_list.selectedItems()
if not selected: return
for s in selected:
self.paths_list.takeItem(self.paths_list.row(s))
def _save(self):
url = self.url_input.text().strip()
if not url:
QMessageBox.warning(self, "Ошибка", "Адрес API не может быть пустым.")
return
paths = [self.paths_list.item(i).text() for i in range(self.paths_list.count())]
if not paths:
QMessageBox.warning(self, "Ошибка", "Должна быть добавлена хотя бы одна папка.")
return
self.settings["comfyui_url"] = url
self.settings["tracked_paths"] = paths
self.accept()