from PySide6.QtWidgets import (QDialog, QVBoxLayout, QGroupBox, QGridLayout, QPushButton, QHBoxLayout, QTabWidget) from PySide6.QtCore import Qt import logging class SettingsDialog(QDialog): def __init__(self, main_ui): super().__init__(main_ui) self.main_ui = main_ui self.logger = main_ui.logger self.setWindowTitle("편집 설정") self.setFixedSize(800, 600) self.setWindowFlags(Qt.WindowStaysOnTopHint) self.init_ui() def init_ui(self): self.logger.log("설정 대화상자 초기화 중...", level=logging.DEBUG) # 메인 레이아웃 main_layout = QVBoxLayout(self) # 탭 위젯 생성 tab_widget = QTabWidget(self) tab_widget.setStyleSheet(""" QTabWidget::pane { border: 1px solid #C4C4C3; background-color: #F5F5F5; border-radius: 5px; } QTabBar::tab { background-color: #E1E1E1; color: #555555; min-width: 80px; padding: 8px 12px; border: 1px solid #C4C4C3; border-bottom: none; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-right: 2px; } QTabBar::tab:selected { background-color: #F5F5F5; color: #000000; } """) # 각 탭에 해당하는 위젯 생성 self.create_general_tab(tab_widget) self.create_option_tab(tab_widget) self.create_tag_tab(tab_widget) self.create_price_tab(tab_widget) self.create_thumbnail_tab(tab_widget) self.create_detail_tab(tab_widget) self.create_watermark_tab(tab_widget) main_layout.addWidget(tab_widget) # 닫기 버튼 button_layout = QHBoxLayout() close_button = QPushButton("닫기") close_button.clicked.connect(self.accept) close_button.setFixedSize(120, 40) close_button.setStyleSheet(""" QPushButton { background-color: #3498db; color: white; border-radius: 5px; font-weight: bold; } QPushButton:hover { background-color: #2980b9; } """) button_layout.addStretch() button_layout.addWidget(close_button) main_layout.addLayout(button_layout) def create_general_tab(self, tab_widget): general_widget = QGroupBox("일반 설정") layout = QGridLayout(general_widget) # 기존 토글 스위치들을 여기로 이동 row = 0 layout.addWidget(self.main_ui.debug_toggle_label, row, 0) layout.addWidget(self.main_ui.debug_toggle, row, 1) layout.addWidget(self.main_ui.cat_rec_toggle_label, row, 2) layout.addWidget(self.main_ui.cat_rec_toggle, row, 3) row += 1 layout.addWidget(self.main_ui.keyword_fix_toggle_label, row, 0) layout.addWidget(self.main_ui.keyword_fix_toggle, row, 1) layout.addWidget(self.main_ui.keyword_fix_count_label, row, 2) layout.addWidget(self.main_ui.keyword_fix_count_input, row, 3) row += 1 layout.addWidget(self.main_ui.discord_notify_toggle_label, row, 0) layout.addWidget(self.main_ui.discord_notify_toggle, row, 1) layout.addWidget(self.main_ui.webhook_input, row, 2, 1, 3) row += 1 layout.addWidget(self.main_ui.max_option_count_label, row, 0) layout.addWidget(self.main_ui.max_option_count_input, row, 1) layout.addWidget(self.main_ui.ocr_toggle_label, row, 2) layout.addWidget(self.main_ui.ocr_toggle, row, 3) # 스트레치를 추가하여 위젯들이 상단에 위치하도록 함 layout.setRowStretch(row + 1, 1) tab_widget.addTab(general_widget, "일반") def create_option_tab(self, tab_widget): option_widget = QGroupBox("옵션 설정") layout = QGridLayout(option_widget) row = 0 layout.addWidget(self.main_ui.optionTrnas_toggle_label, row, 0) layout.addWidget(self.main_ui.optionTrnas_toggle, row, 1) layout.addWidget(self.main_ui.optionIMGTrans_toggle_label, row, 2) layout.addWidget(self.main_ui.optionIMGTrans_toggle, row, 3) row += 1 layout.addWidget(self.main_ui.optionAutoSelect_toggle_label, row, 0) layout.addWidget(self.main_ui.optionAutoSelect_toggle, row, 1) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(option_widget, "옵션") def create_tag_tab(self, tab_widget): tag_widget = QGroupBox("태그 설정") layout = QGridLayout(tag_widget) row = 0 layout.addWidget(self.main_ui.tag_toggle_label, row, 0) layout.addWidget(self.main_ui.tag_toggle, row, 1) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(tag_widget, "태그") def create_price_tab(self, tab_widget): price_widget = QGroupBox("가격 설정") layout = QGridLayout(price_widget) row = 0 layout.addWidget(self.main_ui.price_toggle_label, row, 0) layout.addWidget(self.main_ui.price_toggle, row, 1) layout.addWidget(self.main_ui.remove_overprice_toggle_label, row, 2) layout.addWidget(self.main_ui.remove_overprice_toggle, row, 3) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(price_widget, "가격") def create_thumbnail_tab(self, tab_widget): thumb_widget = QGroupBox("썸네일 설정") layout = QGridLayout(thumb_widget) row = 0 layout.addWidget(self.main_ui.thumb_toggle_label, row, 0) layout.addWidget(self.main_ui.thumb_toggle, row, 1) layout.addWidget(self.main_ui.thumb_trans_type_toggle_label, row, 2) layout.addWidget(self.main_ui.thumb_trans_type_toggle, row, 3) row += 1 layout.addWidget(self.main_ui.thumb_nukki_toggle_label, row, 0) layout.addWidget(self.main_ui.thumb_nukki_toggle, row, 1) layout.addWidget(self.main_ui.thumb_rmb_count_label, row, 2) layout.addWidget(self.main_ui.thumb_rmb_count_input, row, 3) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(thumb_widget, "썸네일") def create_detail_tab(self, tab_widget): detail_widget = QGroupBox("상세설명 설정") layout = QGridLayout(detail_widget) row = 0 layout.addWidget(self.main_ui.detail_Option_toggle_label, row, 0) layout.addWidget(self.main_ui.detail_Option_toggle, row, 1) layout.addWidget(self.main_ui.detail_IMGTrans_toggle_label, row, 2) layout.addWidget(self.main_ui.detail_IMGTrans_toggle, row, 3) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(detail_widget, "상세설명") def create_watermark_tab(self, tab_widget): watermark_widget = QGroupBox("워터마크 설정") layout = QGridLayout(watermark_widget) row = 0 layout.addWidget(self.main_ui.watermark_toggle_label, row, 0) layout.addWidget(self.main_ui.watermark_toggle, row, 1) row += 1 layout.addWidget(self.main_ui.watermark_text_label, row, 0) layout.addWidget(self.main_ui.watermark_text_input, row, 1, 1, 3) row += 1 layout.addWidget(self.main_ui.opacity_percent_label, row, 0) layout.addWidget(self.main_ui.opacity_percent_input, row, 1) # 스트레치 추가 layout.setRowStretch(row + 1, 1) tab_widget.addTab(watermark_widget, "워터마크")