split PanelWidget and PanelModal from ts_qt.py

This commit is contained in:
Andrew Arneson
2024-04-27 19:35:52 -06:00
parent a1fe57a352
commit e71ef7f671
3 changed files with 7 additions and 5137 deletions

View File

@@ -44,7 +44,8 @@ from src.core.utils.web import strip_web_protocol
from src.qt.flowlayout import FlowLayout, FlowWidget
from src.qt.main_window import Ui_MainWindow
from src.qt.helpers import open_file, FileOpenerHelper, FileOpenerLabel
from src.qt.widgets import FieldContainer, FieldWidget, CollageIconRenderer, ThumbButton, ThumbRenderer
from src.qt.widgets import (FieldContainer, FieldWidget, CollageIconRenderer, ThumbButton, ThumbRenderer, PanelWidget,
PanelModal)
import src.qt.resources_rc
# SIGQUIT is not defined on Windows
@@ -486,93 +487,6 @@ class TagWidget(QWidget):
self.update()
return super().leaveEvent(event)
class PanelModal(QWidget):
saved = Signal()
# TODO: Separate callbacks from the buttons you want, and just generally
# figure out what you want from this.
def __init__(self, widget:'PanelWidget', title:str, window_title:str,
done_callback:FunctionType=None,
# cancel_callback:FunctionType=None,
save_callback:FunctionType=None,has_save:bool=False):
# [Done]
# - OR -
# [Cancel] [Save]
super().__init__()
self.widget = widget
self.setWindowTitle(window_title)
self.setWindowModality(Qt.WindowModality.ApplicationModal)
self.root_layout = QVBoxLayout(self)
self.root_layout.setContentsMargins(6,0,6,6)
self.title_widget = QLabel()
self.title_widget.setObjectName('fieldTitle')
self.title_widget.setWordWrap(True)
self.title_widget.setStyleSheet(
# 'background:blue;'
# 'text-align:center;'
'font-weight:bold;'
'font-size:14px;'
'padding-top: 6px'
'')
self.title_widget.setText(title)
self.title_widget.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.button_container = QWidget()
self.button_layout = QHBoxLayout(self.button_container)
self.button_layout.setContentsMargins(6,6,6,6)
self.button_layout.addStretch(1)
# self.cancel_button = QPushButton()
# self.cancel_button.setText('Cancel')
if not (save_callback or has_save):
self.done_button = QPushButton()
self.done_button.setText('Done')
self.done_button.setAutoDefault(True)
self.done_button.clicked.connect(self.hide)
if done_callback:
self.done_button.clicked.connect(done_callback)
self.button_layout.addWidget(self.done_button)
if (save_callback or has_save):
self.cancel_button = QPushButton()
self.cancel_button.setText('Cancel')
self.cancel_button.clicked.connect(self.hide)
self.cancel_button.clicked.connect(widget.reset)
# self.cancel_button.clicked.connect(cancel_callback)
self.button_layout.addWidget(self.cancel_button)
if (save_callback or has_save):
self.save_button = QPushButton()
self.save_button.setText('Save')
self.save_button.setAutoDefault(True)
self.save_button.clicked.connect(self.hide)
self.save_button.clicked.connect(self.saved.emit)
if done_callback:
self.save_button.clicked.connect(done_callback)
if save_callback:
self.save_button.clicked.connect(lambda: save_callback(widget.get_content()))
self.button_layout.addWidget(self.save_button)
widget.done.connect(lambda: save_callback(widget.get_content()))
self.root_layout.addWidget(self.title_widget)
self.root_layout.addWidget(widget)
self.root_layout.setStretch(1,2)
self.root_layout.addWidget(self.button_container)
class PanelWidget(QWidget):
"""
Used for widgets that go in a modal panel, ex. for editing or searching.
"""
done = Signal()
def __init__(self):
super().__init__()
def get_content(self)-> str:
pass
def reset(self):
pass
class EditTextBox(PanelWidget):
def __init__(self, text):

View File

@@ -1,4 +1,5 @@
from .fields import FieldContainer, FieldWidget
from .collage_icon import CollageIconRenderer
from .thumb_button import ThumbButton
from .thumb_renderer import ThumbRenderer
from .thumb_renderer import ThumbRenderer
from .panel import PanelWidget, PanelModal

File diff suppressed because it is too large Load Diff