def __init__(self, main: AbstractMainWindow) -> None: super().__init__(main, 'Benchmark') self.setup_ui() self.running = False self.unsequenced = False self.buffer: Deque[Future] = deque() self.run_start_time = 0.0 self.start_frame = Frame(0) self. end_frame = Frame(0) self.total_frames = FrameInterval(0) self.frames_left = FrameInterval(0) self.sequenced_timer = Qt.QTimer() self.sequenced_timer.setTimerType(Qt.Qt.PreciseTimer) self.sequenced_timer.setInterval(0) self.update_info_timer = Qt.QTimer() self.update_info_timer.setTimerType(Qt.Qt.PreciseTimer) self.update_info_timer.setInterval( self.main.BENCHMARK_REFRESH_INTERVAL) self. start_frame_control.valueChanged.connect(lambda value: self.update_controls(start= value)) self. start_time_control.valueChanged.connect(lambda value: self.update_controls(start=Frame(value))) self. end_frame_control.valueChanged.connect(lambda value: self.update_controls( end= value)) self. end_time_control.valueChanged.connect(lambda value: self.update_controls( end=Frame(value))) self.total_frames_control.valueChanged.connect(lambda value: self.update_controls(total= value)) self. total_time_control.valueChanged.connect(lambda value: self.update_controls(total=FrameInterval(value))) self. prefetch_checkbox.stateChanged.connect(self.on_prefetch_changed) self. run_abort_button. clicked.connect(self.on_run_abort_pressed) self. sequenced_timer. timeout.connect(self._request_next_frame_sequenced) self. update_info_timer. timeout.connect(self.update_info) set_qobject_names(self)
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) -> None: from qdarkstyle import load_stylesheet_pyqt5 super().__init__() # logging logging.basicConfig(format='{asctime}: {levelname}: {message}', style='{', level=self.LOG_LEVEL) logging.Formatter.default_msec_format = '%s.%03d' # ??? self.app = Qt.QApplication.instance() if self.DARK_THEME: self.app.setStyleSheet( self.patch_dark_stylesheet(load_stylesheet_pyqt5())) self.ensurePolished() self.display_scale = self.app.primaryScreen().logicalDotsPerInch( ) / self.BASE_PPI self.setWindowTitle('VSPreview') self.move(400, 0) self.setup_ui() # global self.clipboard = self.app.clipboard() self.external_args: List[str] = [] self.script_path = Path() self.save_on_exit = True self.script_exec_failed = False # graphics view self.graphics_scene = Qt.QGraphicsScene(self) self.graphics_view.setScene(self.graphics_scene) self.opengl_widget = None if self.OPENGL_RENDERING: self.opengl_widget = Qt.QOpenGLWidget() self.graphics_view.setViewport(self.opengl_widget) self.graphics_view.wheelScrolled.connect(self.on_wheel_scrolled) # timeline self.timeline.clicked.connect(self.switch_frame) # init toolbars and outputs self.toolbars = Toolbars(self) self.main_layout.addWidget(self.toolbars.main) for toolbar in self.toolbars: self.main_layout.addWidget(toolbar) self.toolbars.main.layout().addWidget(toolbar.toggle_button) set_qobject_names(self) self.setObjectName('MainWindow')
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)
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]) 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_control.valueChanged.connect(self.main.switch_frame) self.time_control.valueChanged.connect( lambda t: self.main.switch_frame(time=t)) self.frame_control.editingFinished.connect( self.frame_control.clearFocus) # type: ignore self.time_control.editingFinished.connect( self.time_control.clearFocus) # 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.sync_outputs_checkbox.stateChanged.connect( self.on_sync_outputs_changed) self.zoom_combobox.currentTextChanged.connect(self.on_zoom_changed) self.save_as_button.clicked.connect(self.on_save_as_clicked) 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.SHIFT + Qt.Qt.Key_S, self.save_as_button.click) set_qobject_names(self)
def __init__(self, main: AbstractMainWindow) -> None: super().__init__(main, 'Pipette') self.setup_ui() self.main.graphics_view.mouseMoved.connect(self.mouse_moved) self.pos_fmt = '{},{}' self.src_hex_fmt = '{:2X}' self.src_max_val: Union[int, float] = 2**8 - 1 self.src_dec_fmt = '{:3d}' self.src_norm_fmt = '{:0.5f}' self.outputs: Dict[Output, vs.VideoNode] = {} set_qobject_names(self)
def __init__(self, main: AbstractMainWindow) -> None: super().__init__(main, 'Pipette') self.setup_ui() self.pos_fmt = '{},{}' self.src_hex_fmt = '{:2X}' self.src_max_val: Union[int, float] = 2**8 - 1 self.src_dec_fmt = '{:3d}' self.src_norm_fmt = '{:0.5f}' self.outputs = WeakKeyDictionary[Output, vs.VideoNode]() self.tracking = False set_qobject_names(self)
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) set_qobject_names(self)
def __init__(self, main: AbstractMainWindow) -> None: super().__init__(main, 'Debug') self.setup_ui() self.test_button.clicked.connect(self.test_button_clicked) self.exec_button.clicked.connect(self.exec_button_clicked) self.exec_lineedit.editingFinished.connect(self.exec_button_clicked) if self.main.DEBUG_TOOLBAR_BUTTONS_PRINT_STATE: self.filter = debug.EventFilter(self) self.main.toolbars.main.widget.installEventFilter(self.filter) for toolbar in self.main.toolbars: toolbar.widget.installEventFilter(self.filter) set_qobject_names(self)
def __init__(self, main: AbstractMainWindow) -> None: super().__init__(main, 'Pipette') self.setup_ui() self.main.graphics_view.mouseMoved.connect(self.mouse_moved) self.main.graphics_view.mousePressed.connect(self.mouse_pressed) self.main.graphics_view.mouseReleased.connect(self.mouse_released) self.pos_fmt = '{},{}' self.src_hex_fmt = '{:2X}' self.src_max_val: Union[int, float] = 2**8 - 1 self.src_dec_fmt = '{:3d}' self.src_norm_fmt = '{:0.5f}' self.outputs = WeakKeyDictionary[Output, vs.VideoNode]() self.tracking = False 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: AbstractMainWindow) -> None: super().__init__(main, 'Misc') 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.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) 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)