|
@@ -19,6 +19,9 @@ from PyQt5.QtWidgets import ( # pylint: disable=no-name-in-module
|
|
|
QApplication,
|
|
|
QDialog,
|
|
|
QVBoxLayout,
|
|
|
+ QHBoxLayout,
|
|
|
+ QStyle,
|
|
|
+ QLabel,
|
|
|
QRadioButton,
|
|
|
QPushButton,
|
|
|
QMessageBox,
|
|
@@ -26,6 +29,7 @@ from PyQt5.QtWidgets import ( # pylint: disable=no-name-in-module
|
|
|
QScrollArea,
|
|
|
QWidget,
|
|
|
)
|
|
|
+from PyQt5.QtCore import QSize
|
|
|
|
|
|
|
|
|
# pylint: disable=too-few-public-methods
|
|
@@ -65,12 +69,10 @@ class RadioButtonDialog(QDialog): # pylint: disable=too-few-public-methods
|
|
|
self.radio_button_group = QButtonGroup(self)
|
|
|
|
|
|
self.chosen = ""
|
|
|
- self.radio_buttons = []
|
|
|
for num, item in enumerate(options):
|
|
|
radio_button = QRadioButton(item)
|
|
|
if num == 0:
|
|
|
radio_button.setChecked(True)
|
|
|
- self.radio_buttons.append(radio_button)
|
|
|
self.radio_button_group.addButton(radio_button)
|
|
|
scroll_area_layout.addWidget(radio_button)
|
|
|
|
|
@@ -92,3 +94,85 @@ class RadioButtonDialog(QDialog): # pylint: disable=too-few-public-methods
|
|
|
"No Selection",
|
|
|
"Please select an option before proceeding.",
|
|
|
)
|
|
|
+
|
|
|
+
|
|
|
+class SheetAndPreviewChooser(QDialog): # pylint: disable=too-few-public-methods
|
|
|
+ def __init__(
|
|
|
+ self, base_dir: str, options: list[str], window_title: str
|
|
|
+ ) -> None:
|
|
|
+ super().__init__()
|
|
|
+ self.setWindowTitle(window_title)
|
|
|
+
|
|
|
+ master_layout = QVBoxLayout(self)
|
|
|
+
|
|
|
+ scroll_area = QScrollArea()
|
|
|
+ scroll_area.setWidgetResizable(True)
|
|
|
+ master_layout.addWidget(scroll_area)
|
|
|
+
|
|
|
+ scroll_content = QWidget()
|
|
|
+ scroll_area.setWidget(scroll_content)
|
|
|
+ scroll_area_layout = QVBoxLayout(scroll_content)
|
|
|
+
|
|
|
+ self.radio_button_group = QButtonGroup(self)
|
|
|
+
|
|
|
+ self.chosen = ""
|
|
|
+ for num, item in enumerate(options):
|
|
|
+ radio_button = QRadioButton(item)
|
|
|
+ if num == 0:
|
|
|
+ radio_button.setChecked(True)
|
|
|
+ button_layout = QHBoxLayout()
|
|
|
+ self.radio_button_group.addButton(radio_button)
|
|
|
+
|
|
|
+ button_layout.addWidget(radio_button)
|
|
|
+
|
|
|
+ play_button = self.get_player_button("SP_MediaPlay")
|
|
|
+ play_button.setToolTip("Play CD Preview")
|
|
|
+
|
|
|
+ pause_button = self.get_player_button("SP_MediaPause")
|
|
|
+ pause_button.setToolTip("Pause CD Preview")
|
|
|
+
|
|
|
+ stop_button = self.get_player_button("SP_MediaStop")
|
|
|
+ stop_button.setToolTip("Stop CD Preview")
|
|
|
+
|
|
|
+ seek_bwd_button = self.get_player_button("SP_MediaSeekBackward")
|
|
|
+ seek_bwd_button.setToolTip("Seek 10 seconds backwards")
|
|
|
+
|
|
|
+ seek_fwd_button = self.get_player_button("SP_MediaSeekForward")
|
|
|
+ seek_fwd_button.setToolTip("Seek 10 seconds forwards")
|
|
|
+
|
|
|
+ button_layout.addWidget(play_button)
|
|
|
+ button_layout.addWidget(pause_button)
|
|
|
+ button_layout.addWidget(stop_button)
|
|
|
+ button_layout.addWidget(seek_bwd_button)
|
|
|
+ button_layout.addWidget(seek_fwd_button)
|
|
|
+ button_layout.addWidget(QLabel("01:23 / 80:00"))
|
|
|
+
|
|
|
+ scroll_area_layout.addLayout(button_layout)
|
|
|
+
|
|
|
+ ok_button = QPushButton("OK")
|
|
|
+ ok_button.clicked.connect(self.accept)
|
|
|
+ master_layout.addWidget(ok_button)
|
|
|
+
|
|
|
+ def get_player_button(self, icon_name: str) -> QPushButton:
|
|
|
+ stop_button = QPushButton("")
|
|
|
+ stop_button.setMinimumSize(QSize(40, 40))
|
|
|
+ stop_button.setMaximumSize(QSize(40, 40))
|
|
|
+ pixmapi = getattr(QStyle, icon_name)
|
|
|
+ icon = self.style().standardIcon(pixmapi) # pyright: ignore
|
|
|
+ stop_button.setIcon(icon)
|
|
|
+ return stop_button
|
|
|
+
|
|
|
+ def accept(self):
|
|
|
+ selected_button = self.radio_button_group.checkedButton()
|
|
|
+ if selected_button:
|
|
|
+ self.chosen = selected_button.text()
|
|
|
+ # QMessageBox.information(
|
|
|
+ # self, "Selection", f"You selected: {selected_button.text()}"
|
|
|
+ # )
|
|
|
+ super().accept()
|
|
|
+ else:
|
|
|
+ QMessageBox.warning(
|
|
|
+ self,
|
|
|
+ "No Selection",
|
|
|
+ "Please select an option before proceeding.",
|
|
|
+ )
|