Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# 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()
|
||||
Reference in New Issue
Block a user