2025-07-13 10:22:06 -07:00
|
|
|
from PyQt5.QtWidgets import (
|
|
|
|
|
QDialog, QVBoxLayout, QRadioButton, QDialogButtonBox, QButtonGroup, QLabel, QComboBox, QHBoxLayout, QCheckBox
|
|
|
|
|
)
|
|
|
|
|
from PyQt5.QtCore import Qt
|
2025-07-15 06:54:31 -07:00
|
|
|
from ...utils.resolution import get_dark_theme
|
2025-07-13 10:22:06 -07:00
|
|
|
|
|
|
|
|
class MoreOptionsDialog(QDialog):
|
|
|
|
|
"""
|
|
|
|
|
A dialog for selecting a scope, export format, and single PDF option.
|
|
|
|
|
"""
|
|
|
|
|
SCOPE_CONTENT = "content"
|
|
|
|
|
SCOPE_COMMENTS = "comments"
|
|
|
|
|
|
|
|
|
|
def __init__(self, parent=None, current_scope=None, current_format=None, single_pdf_checked=False):
|
|
|
|
|
super().__init__(parent)
|
2025-07-15 06:54:31 -07:00
|
|
|
self.parent_app = parent
|
2025-07-13 10:22:06 -07:00
|
|
|
self.setWindowTitle("More Options")
|
|
|
|
|
self.setMinimumWidth(350)
|
|
|
|
|
|
|
|
|
|
# ... (Layout and other widgets remain the same) ...
|
|
|
|
|
|
|
|
|
|
layout = QVBoxLayout(self)
|
|
|
|
|
self.description_label = QLabel("Please choose the scope for the action:")
|
|
|
|
|
layout.addWidget(self.description_label)
|
|
|
|
|
self.radio_button_group = QButtonGroup(self)
|
|
|
|
|
self.radio_content = QRadioButton("Description/Content")
|
2025-07-14 20:17:48 -07:00
|
|
|
self.radio_comments = QRadioButton("Comments (Not Working)")
|
2025-07-13 10:22:06 -07:00
|
|
|
self.radio_button_group.addButton(self.radio_content)
|
|
|
|
|
self.radio_button_group.addButton(self.radio_comments)
|
|
|
|
|
layout.addWidget(self.radio_content)
|
|
|
|
|
layout.addWidget(self.radio_comments)
|
|
|
|
|
|
|
|
|
|
if current_scope == self.SCOPE_COMMENTS:
|
|
|
|
|
self.radio_comments.setChecked(True)
|
|
|
|
|
else:
|
|
|
|
|
self.radio_content.setChecked(True)
|
|
|
|
|
|
|
|
|
|
export_layout = QHBoxLayout()
|
|
|
|
|
export_label = QLabel("Export as:")
|
|
|
|
|
self.format_combo = QComboBox()
|
|
|
|
|
self.format_combo.addItems(["PDF", "DOCX", "TXT"])
|
|
|
|
|
|
|
|
|
|
if current_format and current_format.upper() in ["PDF", "DOCX", "TXT"]:
|
|
|
|
|
self.format_combo.setCurrentText(current_format.upper())
|
|
|
|
|
else:
|
|
|
|
|
self.format_combo.setCurrentText("PDF")
|
|
|
|
|
|
|
|
|
|
export_layout.addWidget(export_label)
|
|
|
|
|
export_layout.addWidget(self.format_combo)
|
|
|
|
|
export_layout.addStretch()
|
|
|
|
|
layout.addLayout(export_layout)
|
|
|
|
|
|
|
|
|
|
# --- UPDATED: Single PDF Checkbox ---
|
|
|
|
|
self.single_pdf_checkbox = QCheckBox("Single PDF")
|
|
|
|
|
self.single_pdf_checkbox.setToolTip("If checked, all text from matching posts will be compiled into one single PDF file.")
|
|
|
|
|
self.single_pdf_checkbox.setChecked(single_pdf_checked)
|
|
|
|
|
layout.addWidget(self.single_pdf_checkbox)
|
|
|
|
|
|
|
|
|
|
self.format_combo.currentTextChanged.connect(self.update_single_pdf_checkbox_state)
|
|
|
|
|
self.update_single_pdf_checkbox_state(self.format_combo.currentText())
|
|
|
|
|
|
|
|
|
|
self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
|
|
|
|
|
self.button_box.accepted.connect(self.accept)
|
|
|
|
|
self.button_box.rejected.connect(self.reject)
|
|
|
|
|
layout.addWidget(self.button_box)
|
|
|
|
|
self.setLayout(layout)
|
2025-07-15 06:54:31 -07:00
|
|
|
self._apply_theme()
|
2025-07-13 10:22:06 -07:00
|
|
|
def update_single_pdf_checkbox_state(self, text):
|
|
|
|
|
"""Enable the Single PDF checkbox only if the format is PDF."""
|
|
|
|
|
is_pdf = (text.upper() == "PDF")
|
|
|
|
|
self.single_pdf_checkbox.setEnabled(is_pdf)
|
|
|
|
|
if not is_pdf:
|
|
|
|
|
self.single_pdf_checkbox.setChecked(False)
|
|
|
|
|
|
|
|
|
|
def get_selected_scope(self):
|
|
|
|
|
if self.radio_comments.isChecked():
|
|
|
|
|
return self.SCOPE_COMMENTS
|
|
|
|
|
return self.SCOPE_CONTENT
|
|
|
|
|
|
|
|
|
|
def get_selected_format(self):
|
|
|
|
|
return self.format_combo.currentText().lower()
|
|
|
|
|
|
|
|
|
|
def get_single_pdf_state(self):
|
|
|
|
|
"""Returns the state of the Single PDF checkbox."""
|
2025-07-15 06:54:31 -07:00
|
|
|
return self.single_pdf_checkbox.isChecked() and self.single_pdf_checkbox.isEnabled()
|
|
|
|
|
|
|
|
|
|
def _apply_theme(self):
|
|
|
|
|
"""Applies the current theme from the parent application."""
|
|
|
|
|
if self.parent_app and self.parent_app.current_theme == "dark":
|
|
|
|
|
# Get the scale factor from the parent app
|
|
|
|
|
scale = getattr(self.parent_app, 'scale_factor', 1)
|
|
|
|
|
# Call the imported function with the correct scale
|
|
|
|
|
self.setStyleSheet(get_dark_theme(scale))
|
|
|
|
|
else:
|
|
|
|
|
# Explicitly set a blank stylesheet for light mode
|
|
|
|
|
self.setStyleSheet("")
|