Exemple #1
0
    def __init__(self, main_window: AbstractMainWindow) -> None:
        super().__init__(main_window, Qt.Qt.Dialog)
        self.main = main_window

        self.setWindowTitle('Script Loading Error')
        self.setModal(True)

        self.setup_ui()

        self.reload_button.clicked.connect(self.on_reload_clicked)
        self.exit_button.clicked.connect(self.on_exit_clicked)

        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_R, self.reload_button.click, self)
Exemple #2
0
    def __init__(self, main: AbstractMainWindow) -> None:
        super().__init__(main, 'Misc')
        self.setup_ui()

        self.save_template_lineedit.setText(self.main.SAVE_TEMPLATE)

        self.autosave_timer = Qt.QTimer()
        self.autosave_timer.timeout.connect(self.save)

        self.save_file_types = {
            'Single Image (*.png)': self.save_as_png,
        }

        self.reload_script_button.     clicked.connect(lambda: self.main.reload_script())  # pylint: disable=unnecessary-lambda
        self.         save_button.     clicked.connect(lambda: self.save(manually=True))
        self.keep_on_top_checkbox.stateChanged.connect(        self.on_keep_on_top_changed)
        self.   copy_frame_button.     clicked.connect(        self.copy_frame_to_clipboard)
        self.save_frame_as_button.     clicked.connect(        self.on_save_frame_as_clicked)
        self. show_debug_checkbox.stateChanged.connect(        self.on_show_debug_changed)

        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_R, self.reload_script_button.click)
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_S, self.         save_button.click)
        add_shortcut(Qt.Qt.ALT  + Qt.Qt.Key_S, self.   copy_frame_button.click)
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.SHIFT + Qt.Qt.Key_S,
                     self.save_frame_as_button.click)

        set_qobject_names(self)
    def __init__(self, main: AbstractMainWindow) -> None:
        super().__init__(main)

        self.main = main
        self.scening_list = SceningList()

        self.setWindowTitle('Scening List View')
        self.setup_ui()

        self.end_frame_control  .valueChanged.connect(self.on_end_frame_changed)
        self.end_time_control   .valueChanged.connect(self.on_end_time_changed)
        self.label_lineedit      .textChanged.connect(self.on_label_changed)
        self.name_lineedit       .textChanged.connect(self.on_name_changed)
        self.start_frame_control.valueChanged.connect(self.on_start_frame_changed)
        self.start_time_control .valueChanged.connect(self.on_start_time_changed)
        self.tableview         .doubleClicked.connect(self.on_tableview_clicked)
        self.delete_button           .clicked.connect(self.on_delete_clicked)

        add_shortcut(Qt.Qt.Key_Delete, self.delete_button.click, self.tableview)
        set_qobject_names(self)
    def __init__(self, main_window: AbstractMainWindow) -> None:
        from collections import deque
        from concurrent.futures import Future

        super().__init__(main_window)
        self.setup_ui()

        self.play_buffer: Deque[Future] = deque()
        self.play_timer = Qt.QTimer()
        self.play_timer.setTimerType(Qt.Qt.PreciseTimer)
        self.play_timer.timeout.connect(self._playback_show_next_frame)

        self.seek_frame_spinbox.setMinimum(0)
        self.seek_time_spinbox.setMinimumTime(Qt.QTime(0, 0))

        self.fps_prev_frame: Optional[Frame] = None
        self.fps_timer = Qt.QTimer()
        self.fps_timer.setTimerType(Qt.Qt.PreciseTimer)
        self.fps_timer.timeout.connect(self.update_fps_counter)

        self.toggle_button.clicked.connect(self.on_toggle)
        self.play_pause_button.clicked.connect(self.on_play_pause_clicked)
        self.seek_to_prev_button.clicked.connect(self.seek_to_prev)
        self.seek_to_next_button.clicked.connect(self.seek_to_next)
        self.seek_n_frames_b_button.clicked.connect(self.seek_n_frames_b)
        self.seek_n_frames_f_button.clicked.connect(self.seek_n_frames_f)
        self.seek_frame_spinbox.valueChanged.connect(
            self.on_seek_frame_changed)
        self.seek_time_spinbox.timeChanged.connect(
            self.on_seek_time_changed)  # type: ignore
        self.fps_spinbox.valueChanged.connect(self.on_fps_changed)
        self.fps_unlimited_checkbox.stateChanged.connect(
            self.on_fps_unlimited_changed)

        add_shortcut(Qt.Qt.Key_Space, self.play_pause_button.click)
        add_shortcut(Qt.Qt.Key_Left, self.seek_to_prev_button.click)
        add_shortcut(Qt.Qt.Key_Right, self.seek_to_next_button.click)
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_Left,
                     self.seek_n_frames_b_button.click)
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_Right,
                     self.seek_n_frames_f_button.click)
Exemple #5
0
    def __init__(self, main_window: AbstractMainWindow) -> None:
        super().__init__(main_window)
        self.setup_ui()

        self.save_template_lineedit.setText(self.main.SAVE_TEMPLATE)

        self.autosave_enabled: bool = self.main.AUTOSAVE_ENABLED
        self.autosave_timer = Qt.QTimer()
        self.autosave_timer.timeout.connect(self.save)

        self.toggle_button.clicked.connect(self.on_toggle)
        self.reload_script_button.clicked.connect(
            lambda: self.main.reload_script())  # pylint: disable=unnecessary-lambda
        self.save_button.clicked.connect(lambda: self.save(manually=True))
        self.autosave_checkbox.stateChanged.connect(self.on_autosave_changed)
        self.keep_on_top_checkbox.stateChanged.connect(
            self.on_keep_on_top_changed)
        self.show_debug_checkbox.stateChanged.connect(
            self.on_show_debug_changed)

        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_R, self.reload_script_button.click)
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_S, self.save_button.click)
Exemple #6
0
    def __init__(self, main: AbstractMainWindow) -> None:
        from concurrent.futures import Future

        super().__init__(main, 'Playback')
        self.setup_ui()

        self.play_buffer: Deque[Future] = deque()
        self.play_timer = Qt.QTimer()
        self.play_timer.setTimerType(Qt.Qt.PreciseTimer)
        self.play_timer.timeout.connect(self._show_next_frame)

        self.fps_history: Deque[int] = deque(
            [],
            int(self.main.FPS_AVERAGING_WINDOW_SIZE) + 1)
        self.current_fps = 0.0
        self.fps_timer = Qt.QTimer()
        self.fps_timer.setTimerType(Qt.Qt.PreciseTimer)
        self.fps_timer.timeout.connect(
            lambda: self.fps_spinbox.setValue(self.current_fps))

        self.play_start_time: Optional[int] = None
        self.play_start_frame = Frame(0)
        self.play_end_time = 0
        self.play_end_frame = Frame(0)

        self.play_pause_button.clicked.connect(self.on_play_pause_clicked)
        self.seek_to_prev_button.clicked.connect(self.seek_to_prev)
        self.seek_to_next_button.clicked.connect(self.seek_to_next)
        self.seek_n_frames_b_button.clicked.connect(self.seek_n_frames_b)
        self.seek_n_frames_f_button.clicked.connect(self.seek_n_frames_f)
        self.seek_to_start_button.clicked.connect(self.seek_to_start)
        self.seek_to_end_button.clicked.connect(self.seek_to_end)
        self.seek_frame_control.valueChanged.connect(
            self.on_seek_frame_changed)
        self.seek_time_control.valueChanged.connect(self.on_seek_time_changed)
        self.fps_spinbox.valueChanged.connect(self.on_fps_changed)
        self.fps_reset_button.clicked.connect(self.reset_fps)
        self.fps_unlimited_checkbox.stateChanged.connect(
            self.on_fps_unlimited_changed)

        add_shortcut(Qt.Qt.Key_Space, self.play_pause_button.click)
        add_shortcut(Qt.Qt.Key_Left, self.seek_to_prev_button.click)
        add_shortcut(Qt.Qt.Key_Right, self.seek_to_next_button.click)
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_Left,
                     self.seek_n_frames_b_button.click)
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_Right,
                     self.seek_n_frames_f_button.click)
        add_shortcut(Qt.Qt.Key_Home, self.seek_to_start_button.click)
        add_shortcut(Qt.Qt.Key_End, self.seek_to_end_button.click)

        set_qobject_names(self)
Exemple #7
0
    def __init__(self, main_window: AbstractMainWindow) -> None:
        from vspreview.models import ZoomLevels

        super().__init__(main_window, 'Main')
        self.setup_ui()

        self.outputs = Outputs()
        self.outputs_combobox.setModel(self.outputs)

        self.zoom_levels = ZoomLevels(
            [0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 4.0, 8.0, 16.0])
        self.zoom_combobox.setModel(self.zoom_levels)
        self.zoom_combobox.setCurrentIndex(3)

        self.outputs_combobox.currentIndexChanged.connect(
            self.main.switch_output)
        self.frame_control.valueChanged.connect(self.main.switch_frame)
        self.time_control.valueChanged.connect(self.main.switch_frame)
        self.frame_control.editingFinished.connect(
            self.frame_control.clearFocus)  # type: ignore
        self.time_control.editingFinished.connect(
            self.time_control.clearFocus)  # type: ignore
        self.sync_outputs_checkbox.stateChanged.connect(
            self.on_sync_outputs_changed)
        self.zoom_combobox.currentTextChanged.connect(self.on_zoom_changed)
        self.switch_timeline_mode_button.clicked.connect(
            self.on_switch_timeline_mode_clicked)

        add_shortcut(Qt.Qt.Key_1, lambda: self.main.switch_output(0))
        add_shortcut(Qt.Qt.Key_2, lambda: self.main.switch_output(1))
        add_shortcut(Qt.Qt.Key_3, lambda: self.main.switch_output(2))
        add_shortcut(Qt.Qt.Key_4, lambda: self.main.switch_output(3))
        add_shortcut(Qt.Qt.Key_5, lambda: self.main.switch_output(4))
        add_shortcut(Qt.Qt.Key_6, lambda: self.main.switch_output(5))
        add_shortcut(Qt.Qt.Key_7, lambda: self.main.switch_output(6))
        add_shortcut(Qt.Qt.Key_8, lambda: self.main.switch_output(7))
        add_shortcut(Qt.Qt.Key_9, lambda: self.main.switch_output(8))
        add_shortcut(Qt.Qt.Key_0, lambda: self.main.switch_output(9))
        add_shortcut(Qt.Qt.Key_S, self.sync_outputs_checkbox.click)
        add_shortcut(
            Qt.Qt.CTRL + Qt.Qt.Key_Tab,
            lambda: self.main.switch_output(self.outputs_combobox.currentIndex(
            ) + 1))
        add_shortcut(
            Qt.Qt.CTRL + Qt.Qt.SHIFT + Qt.Qt.Key_Tab,
            lambda: self.main.switch_output(self.outputs_combobox.currentIndex(
            ) - 1))

        set_qobject_names(self)
    def __init__(self, main: AbstractMainWindow) -> None:
        super().__init__(main, 'Scening')
        self.setup_ui()

        self.lists = SceningLists()

        self.first_frame : Optional[Frame] = None
        self.second_frame: Optional[Frame] = None
        self.export_template_pattern  = re.compile(
            r'.*(?:{start}|{end}|{label}).*')
        self.export_template_scenes_pattern = re.compile(r'.+')

        self.items_combobox.setModel(self.lists)
        self.scening_update_status_label()
        self.scening_list_dialog = SceningListDialog(self.main)

        self.supported_file_types = {
            'Aegisub Project (*.ass)'       : self.import_ass,
            'AvsP Session (*.ses)'          : self.import_ses,
            'CUE Sheet (*.cue)'             : self.import_cue,
            'DGIndex Project (*.dgi)'       : self.import_dgi,
            'IfoEdit Celltimes (*.txt)'     : self.import_celltimes,
            'L-SMASH Works Index (*.lwi)'   : self.import_lwi,
            'Matroska Timestamps v1 (*.txt)': self.import_matroska_timestamps_v1,
            'Matroska Timestamps v2 (*.txt)': self.import_matroska_timestamps_v2,
            'Matroska Timestamps v3 (*.txt)': self.import_matroska_timestamps_v3,
            'Matroska XML Chapters (*.xml)' : self.import_matroska_xml_chapters,
            'OGM Chapters (*.txt)'          : self.import_ogm_chapters,
            'TFM Log (*.txt)'               : self.import_tfm,
            'VSEdit Bookmarks (*.bookmarks)': self.import_vsedit,
            'x264/x265 2 Pass Log (*.log)'  : self.import_x264_2pass_log,
            'x264/x265 QP File (*.qp *.txt)': self.import_qp,
            'XviD Log (*.txt)'              : self.import_xvid,
        }

        self.add_list_button               .clicked.connect(self.on_add_list_clicked)
        self.add_single_frame_button       .clicked.connect(self.on_add_single_frame_clicked)
        self.add_to_list_button            .clicked.connect(self.on_add_to_list_clicked)
        self.export_multiline_button       .clicked.connect(self.export_multiline)
        self.export_single_line_button     .clicked.connect(self.export_single_line)
        self.export_template_lineedit  .textChanged.connect(self.check_remove_export_possibility)
        self.import_file_button            .clicked.connect(self.on_import_file_clicked)
        self.items_combobox           .valueChanged.connect(self.on_current_list_changed)
        self.remove_at_current_frame_button.clicked.connect(self.on_remove_at_current_frame_clicked)
        self.remove_last_from_list_button  .clicked.connect(self.on_remove_last_from_list_clicked)
        self.remove_list_button            .clicked.connect(self.on_remove_list_clicked)
        self.seek_to_next_button           .clicked.connect(self.on_seek_to_next_clicked)
        self.seek_to_prev_button           .clicked.connect(self.on_seek_to_prev_clicked)
        self.toggle_first_frame_button     .clicked.connect(self.on_first_frame_clicked)
        self.toggle_second_frame_button    .clicked.connect(self.on_second_frame_clicked)
        self.view_list_button              .clicked.connect(self.on_view_list_clicked)

        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_1, lambda: self.switch_list(0))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_2, lambda: self.switch_list(1))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_3, lambda: self.switch_list(2))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_4, lambda: self.switch_list(3))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_5, lambda: self.switch_list(4))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_6, lambda: self.switch_list(5))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_7, lambda: self.switch_list(6))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_8, lambda: self.switch_list(7))
        add_shortcut(Qt.Qt.SHIFT + Qt.Qt.Key_9, lambda: self.switch_list(8))

        add_shortcut(Qt.Qt.CTRL  + Qt.Qt.Key_Space, self.on_toggle_single_frame)
        add_shortcut(Qt.Qt.CTRL  + Qt.Qt.Key_Left,  self.seek_to_prev_button         .click)
        add_shortcut(Qt.Qt.CTRL  + Qt.Qt.Key_Right, self.seek_to_next_button         .click)
        add_shortcut(              Qt.Qt.Key_Q,     self.toggle_first_frame_button   .click)
        add_shortcut(              Qt.Qt.Key_W,     self.toggle_second_frame_button  .click)
        add_shortcut(              Qt.Qt.Key_E,     self.add_to_list_button          .click)
        add_shortcut(              Qt.Qt.Key_R,     self.remove_last_from_list_button.click)

        # FIXME: get rid of workaround
        self._on_list_items_changed = lambda *arg: self.on_list_items_changed(*arg)  # pylint: disable=unnecessary-lambda, no-value-for-parameter

        set_qobject_names(self)
Exemple #9
0
    def __init__(self, main_window: AbstractMainWindow) -> None:
        from vspreview.models import ZoomLevels

        super().__init__(main_window)
        self.setup_ui()

        self.outputs = Outputs()

        self.outputs_combobox.setModel(self.outputs)
        self.frame_spinbox.setMinimum(0)
        self.time_spinbox.setMinimumTime(Qt.QTime())
        self.zoom_levels = ZoomLevels(
            [0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 4.0, 8.0])
        self.zoom_combobox.setModel(self.zoom_levels)
        self.zoom_combobox.setCurrentIndex(3)

        self.save_file_types = {'Single Image (*.png)': self.save_as_png}

        self.outputs_combobox.currentIndexChanged.connect(
            self.main.switch_output)
        self.frame_spinbox.valueChanged.connect(
            lambda f: self.main.on_current_frame_changed(Frame(f)))
        self.time_spinbox.timeChanged.connect(
            lambda qtime: self.main.on_current_frame_changed(
                t=qtime_to_timedelta(qtime)))  # type: ignore
        self.copy_frame_button.clicked.connect(
            self.on_copy_frame_button_clicked)
        self.copy_timestamp_button.clicked.connect(
            self.on_copy_timestamp_button_clicked)
        self.zoom_combobox.currentTextChanged.connect(self.on_zoom_changed)
        self.save_as_button.clicked.connect(self.on_save_as_clicked)
        self.switch_timeline_mode.clicked.connect(
            self.on_switch_timeline_mode_clicked)

        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_1,
                     lambda: self.main.switch_output(0))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_2,
                     lambda: self.main.switch_output(1))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_3,
                     lambda: self.main.switch_output(2))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_4,
                     lambda: self.main.switch_output(3))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_5,
                     lambda: self.main.switch_output(4))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_6,
                     lambda: self.main.switch_output(5))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_7,
                     lambda: self.main.switch_output(6))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_8,
                     lambda: self.main.switch_output(7))
        add_shortcut(Qt.Qt.CTRL + Qt.Qt.Key_9,
                     lambda: self.main.switch_output(8))