class YesNoDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.message = QLabel() self.messageIcon = QLabel() self.yesButton = QPushButton("Yes") self.noButton = QPushButton("No") self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.yesButton) self.buttons_layout.addWidget(self.noButton) self.main_layout = QGridLayout() self.main_layout.addWidget(self.messageIcon, 0, 0, 2, 1) self.main_layout.addWidget(QLabel(), 0, 1, 1, 1) # add space self.main_layout.addWidget(self.message, 0, 2, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 4, 1, 1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.result = "No" self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_warning() self.reset_dialog_values() # self.increase_message_font_size(1) self.set_default_buttons() def signal_connect(self): self.yesButton.clicked.connect(self.click_yes) self.noButton.clicked.connect(self.click_no) def click_yes(self): self.result = "Yes" self.close() def click_no(self): self.result = "No" self.close() def reset_dialog_values(self): self.setWindowTitle("") # determine when use self.message.setText("") # determine when use self.setWindowIcon(GlobalFiles.RefreshIcon) def set_message_icon_warning(self): self.messageIcon.setPixmap(QtGui.QPixmap(GlobalFiles.WarningCheckBigIconPath)) def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_default_buttons(self): self.yesButton.setDefault(False) self.noButton.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size())
class ConfirmCheckMakeThisTrackDefaultWithUnCheckOption(QDialog): def __init__(self, track_type, parent=None): super().__init__(parent) self.track_type = track_type self.yesButton = QPushButton("OK") self.noButton = QPushButton("Cancel") self.thirdButton = QPushButton("Uncheck this one") self.setWindowTitle("Confirm Check") self.setWindowIcon(GlobalFiles.QuestionIcon) self.message = QLabel( "<nobr>Are you sure?<br>This will <b>uncheck</b> set default and set forced options " "from " + self.track_type + " tab") self.messageIcon = QLabel() self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.thirdButton) self.buttons_layout.addWidget(self.yesButton) self.buttons_layout.addWidget(self.noButton) self.main_layout = QGridLayout() self.main_layout.addWidget(self.messageIcon, 0, 0, 2, 1) self.main_layout.addWidget(QLabel(), 0, 1, 1, 1) # add space self.main_layout.addWidget(self.message, 0, 2, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 4, 1, 1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.result = "No" self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_info() # self.increase_message_font_size(1) self.set_default_buttons() def signal_connect(self): self.yesButton.clicked.connect(self.click_yes) self.noButton.clicked.connect(self.click_no) self.thirdButton.clicked.connect(self.click_third_button) def click_yes(self): self.result = "Yes" self.close() def click_no(self): self.result = "No" self.close() def click_third_button(self): self.result = "Third" self.close() def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_message_icon_info(self): self.messageIcon.setPixmap(QtGui.QPixmap(GlobalFiles.InfoBigIconPath)) def set_default_buttons(self): self.yesButton.setDefault(False) self.noButton.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size()) def execute(self): self.exec_()
class InvalidPathDialog(QDialog): def __init__(self, window_title="Invalid Path", error_message="Please Enter a Valid Path", parent=None): super().__init__(parent) self.error_message = error_message self.window_title = window_title self.message = QLabel() self.messageIcon = QLabel() self.yesButton = QPushButton("OK") self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.yesButton) self.main_layout = QGridLayout() self.main_layout.addWidget(self.messageIcon, 0, 0, 2, 1) self.main_layout.addWidget(QLabel(), 0, 1, 1, 1) # add space self.main_layout.addWidget(self.message, 0, 2, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 4, 1, 1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_critical() self.set_dialog_values() # self.increase_message_font_size(1) self.set_default_buttons() def signal_connect(self): self.yesButton.clicked.connect(self.click_yes) def click_yes(self): self.close() def set_dialog_values(self): self.setWindowTitle(self.window_title) self.message.setText(self.error_message) self.setWindowIcon(GlobalFiles.ErrorIcon) def disable_question_mark_window(self): self.setWindowFlag(Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_message_icon_critical(self): self.messageIcon.setPixmap(QtGui.QPixmap(GlobalFiles.ErrorBigIconPath)) def set_default_buttons(self): self.yesButton.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size()) def execute(self): self.exec_()
class OkDialog(QDialog): def __init__(self, window_title, parent=None): super().__init__(parent) self.info_message = "" self.window_title = window_title self.message = QLabel() self.mux_good_photo_label = QLabel() self.mux_good_photo_label.setPixmap( QtGui.QPixmap(GlobalFiles.GoodJobIconPath)) self.messageIcon = QLabel() self.yes_button = QPushButton("OK") self.show_log_file_button = QPushButton("Open log file") self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.yes_button) self.buttons_layout.addWidget(self.show_log_file_button) self.main_layout = QGridLayout() self.main_layout.addWidget(self.mux_good_photo_label, 0, 0, 3, 4, alignment=Qt.AlignCenter) self.main_layout.addLayout(self.buttons_layout, 3, 1, 1, 2) self.main_layout.setContentsMargins(10, 20, 10, 20) self.setLayout(self.main_layout) self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_ok() self.set_dialog_values() # self.increase_message_font_size(1) self.set_default_buttons() def set_message_icon_ok(self): self.messageIcon.setPixmap(QtGui.QPixmap(GlobalFiles.OkIconPath)) def signal_connect(self): self.yes_button.clicked.connect(self.click_yes) self.show_log_file_button.clicked.connect(click_show_log_file) def click_yes(self): self.close() def set_dialog_values(self): self.setWindowTitle(self.window_title) self.setWindowIcon(GlobalFiles.OkIcon) self.message.setText(self.info_message) def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_default_buttons(self): self.yes_button.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size()) def execute(self): self.exec_()
class CloseDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.info_message = "Are you sure you want to exit ?\nThis will stop current muxing" self.window_title = "Confirm Exit" self.message = QLabel() self.messageIcon = QLabel() self.exit_button = QPushButton("Stop Muxing") self.cancel_button = QPushButton("Cancel") self.result = "Cancel" self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.exit_button) self.buttons_layout.addWidget(self.cancel_button) self.main_layout = QGridLayout() self.main_layout.addWidget(self.messageIcon, 0, 0, 2, 1) self.main_layout.addWidget(QLabel(), 0, 1, 1, 1) # add space self.main_layout.addWidget(self.message, 0, 2, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 0, -1, -1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_warning() self.set_dialog_values() # self.increase_message_font_size(1) self.set_default_buttons() def set_message_icon_warning(self): self.messageIcon.setPixmap( QtGui.QPixmap(GlobalFiles.WarningCheckBigIconPath)) def signal_connect(self): self.exit_button.clicked.connect(self.click_exit) self.cancel_button.clicked.connect(self.click_cancel) def click_cancel(self): self.result = "Cancel" self.close() def click_exit(self): self.result = "Exit" self.close() def set_dialog_values(self): self.setWindowTitle(self.window_title) self.setWindowIcon(GlobalFiles.WarningCheckBigIcon) self.message.setText(self.info_message) def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_default_buttons(self): self.cancel_button.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size()) def execute(self): self.exec_()
class AboutDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("About MKV Muxing Batch GUI") self.setWindowIcon(AboutIcon) self.app_icon_label = QLabel() self.app_icon_label.setPixmap(QPixmap(AppIconPath).scaledToHeight(175)) self.app_name_label = QLabel("MKV Muxing Batch GUI") self.app_current_version = QLabel("Version: " + str(Version)) self.app_link_github_label = QLabel("Check for updates on: " + GitHubRepoUrlTag) self.app_link_github_label.setOpenExternalLinks(True) self.app_licence_label = QLabel("MKV Muxing Batch GUI is released under the " + GPLV2UrlTag + "+ licence") self.app_licence_label.setOpenExternalLinks(True) self.app_warranty_label = QLabel() self.app_warranty_label.setText("it is provided as is with no warranty of any kind, including the \n" "warranty of design and fitness for a particular purpose") self.app_warranty_label.setAlignment(Qt.AlignCenter) self.app_bug_report_label = QLabel( "you can report issues on the " + GitHubIssuesUrlTag) self.app_bug_report_label.setOpenExternalLinks(True) self.app_bug_report_issue_link_label = QLabel("please visit the " + GitHubIssuesUrlTag) self.app_bug_report_issue_link_label.setOpenExternalLinks(True) self.app_follow_me_label = QLabel("Contact me on:") self.app_bug_report_label.setOpenExternalLinks(True) self.social_twitter_label = TwitterLabel() self.social_telegram_label = TelegramLabel() self.ok_button = QPushButton("OK") self.social_media_layout = QHBoxLayout() self.social_media_layout.addWidget(QLabel(""), stretch=3) self.social_media_layout.addWidget(self.social_twitter_label, stretch=0) self.social_media_layout.addWidget(QLabel(""), stretch=0) self.social_media_layout.addWidget(self.social_telegram_label, stretch=0) self.social_media_layout.addWidget(QLabel(""), stretch=3) self.main_layout = QVBoxLayout() self.main_layout.addWidget(self.app_icon_label, alignment=Qt.AlignCenter) self.main_layout.addWidget(self.app_name_label, alignment=Qt.AlignCenter) self.main_layout.addWidget(self.app_current_version, alignment=Qt.AlignCenter) self.main_layout.addWidget(self.app_link_github_label, alignment=Qt.AlignCenter) # self.main_layout.addWidget(self.app_licence_label, alignment=Qt.AlignCenter) # self.main_layout.addWidget(self.app_warranty_label, alignment=Qt.AlignCenter) self.main_layout.addWidget(self.app_bug_report_label, alignment=Qt.AlignCenter) # self.main_layout.addWidget(self.app_bug_report_issue_link_label, alignment=Qt.AlignCenter) self.main_layout.addWidget(self.app_follow_me_label, alignment=Qt.AlignCenter) self.main_layout.addLayout(self.social_media_layout) self.main_layout.addWidget(self.ok_button, alignment=Qt.AlignCenter) # self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.setup_ui() self.signal_connect() def setup_app_name_label(self): app_name_font = self.app_name_label.font() app_name_font.setWeight(QFont.DemiBold) app_name_font.setPixelSize(self.app_name_label.fontInfo().pixelSize() + 2) self.app_name_label.setFont(app_name_font) def setup_ui(self): self.setup_app_name_label() self.disable_question_mark_window() def signal_connect(self): self.ok_button.clicked.connect(self.click_yes) def click_yes(self): self.close() def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(QSize(self.size().width() + 30, self.size().height())) def execute(self): self.exec_()
class ConfirmUsingMkvpropedit(QDialog): def __init__(self, parent=None): super().__init__(parent) self.fast_muxing_button = QPushButton("Fast Muxing") self.cancel_button = QPushButton("Cancel") self.usual_muxing_button = QPushButton("Usual Muxing") self.setWindowTitle("We can make it faster") self.message = QLabel( "<nobr>We can fast your muxing by editing the source files directly <br>This will " "<b>overwrite</b> your video files and can't be undone") self.messageIcon = QLabel() self.buttons_layout = QHBoxLayout() self.buttons_layout.addWidget(self.usual_muxing_button) self.buttons_layout.addWidget(self.fast_muxing_button) self.buttons_layout.addWidget(self.cancel_button) self.main_layout = QGridLayout() self.main_layout.addWidget(self.messageIcon, 0, 0, 2, 1) self.main_layout.addWidget(QLabel(), 0, 1, 1, 1) # add space self.main_layout.addWidget(self.message, 0, 2, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 4, 1, 1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.result = "cancel" self.setup_ui() self.signal_connect() def setup_ui(self): self.disable_question_mark_window() self.set_message_icon_info() # self.increase_message_font_size(1) self.set_default_buttons() def signal_connect(self): self.fast_muxing_button.clicked.connect(self.click_fast_muxing_button) self.cancel_button.clicked.connect(self.click_cancel_button) self.usual_muxing_button.clicked.connect( self.click_usual_muxing_button) def click_fast_muxing_button(self): self.result = "mkvpropedit" self.close() def click_cancel_button(self): self.result = "cancel" self.close() def click_usual_muxing_button(self): self.result = "mkvmerge" self.close() def reset_dialog_values(self): self.setWindowTitle("") # determine when use self.message.setText("") # determine when use def disable_question_mark_window(self): self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, on=False) def increase_message_font_size(self, value): message_font = self.message.font() message_font.setPointSize(self.message.fontInfo().pointSize() + value) self.message.setFont(message_font) def set_message_icon_warning(self): self.messageIcon.setPixmap(get_pixmap_from_warning_icon()) def set_message_icon_critical(self): self.messageIcon.setPixmap(get_pixmap_from_warning_icon()) def set_message_icon_info(self): self.messageIcon.setPixmap(get_pixmap_from_info_icon()) def set_default_buttons(self): self.fast_muxing_button.setDefault(False) self.cancel_button.setDefault(True) def showEvent(self, a0: QtGui.QShowEvent) -> None: super().showEvent(a0) self.setFixedSize(self.size()) def execute(self): self.exec_()