def update_commands(self, commands): if not commands: return self.inner_widget = QtWidgets.QWidget() sp = QtWidgets.QSizePolicy() sp.setHorizontalPolicy(QtWidgets.QSizePolicy.Policy.Maximum) self.inner_widget.setSizePolicy(sp) layout = QtWidgets.QVBoxLayout() layout.setSpacing(5) for index, item in enumerate(commands, 1): if item.item == "command": new_item = Command(self.scroll_area, item.command, index, name=item.name) layout.addWidget(new_item) elif item.item == "loop": new_item = Loop(self.scroll_area, item.condition, item.commands, index, name=item.name) layout.addWidget(new_item) layout.addStretch() self.inner_widget.setLayout(layout) self.scroll_area.setWidget(self.inner_widget) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.inner_widget.setFixedWidth(self.scroll_area.width() - 3)
def init_crop(self): crop_box = QtWidgets.QGroupBox() crop_box.setStyleSheet("QGroupBox{padding-top:17px; margin-top:-18px}") crop_layout = QtWidgets.QVBoxLayout() self.widgets.crop.top, crop_top_layout = self.build_hoz_int_field( "Top ") self.widgets.crop.left, crop_hz_layout = self.build_hoz_int_field( "Left ", right_stretch=False) self.widgets.crop.right, crop_hz_layout = self.build_hoz_int_field( " Right ", left_stretch=False, layout=crop_hz_layout) self.widgets.crop.bottom, crop_bottom_layout = self.build_hoz_int_field( "Bottom ", right_stretch=True) self.widgets.crop.top.textChanged.connect(lambda: self.page_update()) self.widgets.crop.left.textChanged.connect(lambda: self.page_update()) self.widgets.crop.right.textChanged.connect(lambda: self.page_update()) self.widgets.crop.bottom.textChanged.connect( lambda: self.page_update()) label = QtWidgets.QLabel("Crop", alignment=(Qt.AlignBottom | Qt.AlignRight)) label.setStyleSheet("QLabel{color:#777}") label.setMaximumHeight(40) crop_bottom_layout.addWidget(label) crop_layout.addLayout(crop_top_layout) crop_layout.addLayout(crop_hz_layout) crop_layout.addLayout(crop_bottom_layout) crop_box.setLayout(crop_layout) return crop_box
def init_scale_and_crop(self): layout = QtWidgets.QVBoxLayout() layout.addWidget(self.init_scale()) layout.addWidget(self.init_crop()) layout.addWidget(self.init_start_time()) layout.addStretch() self.grid.addLayout(layout, 0, 6, 5, 4)
def init_video_area(self): layout = QtWidgets.QVBoxLayout() layout.addLayout(self.init_button_menu()) layout.addLayout(self.init_video_track_select()) layout.addWidget(self.init_rotate()) layout.addStretch() self.grid.addLayout(layout, 0, 0, 5, 6)
def __init__(self, parent, condition, commands, number, name=""): super(Loop, self).__init__(parent) layout = QtWidgets.QVBoxLayout() layout.addWidget(QtWidgets.QLabel(f"Loop: {name}")) self.condition = condition self.number = number self.setStyleSheet("QGroupBox{padding-top:15px; margin-top:-18px}") for index, item in enumerate(commands, 1): new_item = Command(parent, item.command, index, item.name) layout.addWidget(new_item) self.setLayout(layout)
def init_scale(self): scale_area = QtWidgets.QGroupBox() scale_area.setStyleSheet( "QGroupBox{padding-top:15px; margin-top:-18px}") scale_layout = QtWidgets.QVBoxLayout() self.widgets.scale.width, new_scale_layout = self.build_hoz_int_field( "Width ", right_stretch=False) self.widgets.scale.height, new_scale_layout, lb, rb = self.build_hoz_int_field( " Height ", left_stretch=False, layout=new_scale_layout, return_buttons=True) self.widgets.scale.height.setDisabled(True) lb.setDisabled(True) rb.setDisabled(True) QtWidgets.QPushButton() # TODO scale 0 error self.widgets.scale.width.textChanged.connect( lambda: self.scale_update()) self.widgets.scale.height.textChanged.connect( lambda: self.scale_update()) bottom_row = QtWidgets.QHBoxLayout() self.widgets.scale.keep_aspect = QtWidgets.QCheckBox( "Keep aspect ratio") self.widgets.scale.keep_aspect.setMaximumHeight(40) self.widgets.scale.keep_aspect.setChecked(True) self.widgets.scale.keep_aspect.toggled.connect( lambda: self.toggle_disable((self.widgets.scale.height, lb, rb))) self.widgets.scale.keep_aspect.toggled.connect( lambda: self.scale_update()) label = QtWidgets.QLabel('Scale', alignment=(Qt.AlignBottom | Qt.AlignRight)) label.setStyleSheet("QLabel{color:#777}") label.setMaximumHeight(40) bottom_row.addWidget(self.widgets.scale.keep_aspect, alignment=Qt.AlignCenter) scale_layout.addLayout(new_scale_layout) bottom_row.addWidget(label) scale_layout.addLayout(bottom_row) scale_area.setLayout(scale_layout) return scale_area
def __init__(self, parent=None): super(Logs, self).__init__(parent) layout = QtWidgets.QVBoxLayout() log_text_box = QPlainTextEditLogger(self) log_text_box.setFormatter( logging.Formatter( '<b>%(levelname)s</b> - %(asctime)s - %(message)s')) log_text_box.setLevel(logging.DEBUG) logger.setLevel(logging.DEBUG) logger.addHandler(log_text_box) log_text_box.setLevel(logging.DEBUG) layout.addWidget(log_text_box.widget) self.setLayout(layout)
def update_audio(self, subtitles): self.inner_widget = QtWidgets.QWidget() sp = QtWidgets.QSizePolicy() sp.setHorizontalPolicy(QtWidgets.QSizePolicy.Policy.Maximum) self.inner_widget.setSizePolicy(sp) layout = QtWidgets.QVBoxLayout() layout.setSpacing(5) for index, track in enumerate(subtitles, 1): new_item = Subtitle(self.scroll_area, track, index) layout.addWidget(new_item) layout.addStretch() self.inner_widget.setLayout(layout) self.scroll_area.setWidget(self.inner_widget) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.inner_widget.setFixedWidth(self.scroll_area.width() - 3)
def init_move_buttons(self): layout = QtWidgets.QVBoxLayout() layout.setSpacing(0) layout.setMargin(0) # self.widgets.up_button = QtWidgets.QPushButton("^") self.widgets.up_button.setDisabled(self.first) self.widgets.up_button.setFixedWidth(20) self.widgets.up_button.clicked.connect( lambda: self.parent.move_up(self)) # self.widgets.down_button = QtWidgets.QPushButton("v") self.widgets.down_button.setDisabled(self.last) self.widgets.down_button.setFixedWidth(20) self.widgets.down_button.clicked.connect( lambda: self.parent.move_down(self)) layout.addWidget(self.widgets.up_button) layout.addWidget(self.widgets.down_button) return layout
def init_preview_buttons(self): layout = QtWidgets.QVBoxLayout() refresh = QtWidgets.QPushButton("R") refresh.setFixedWidth(20) preview = QtWidgets.QPushButton("P") preview.setFixedWidth(20) one = QtWidgets.QPushButton("1") one.setFixedWidth(20) two = QtWidgets.QPushButton("2") two.setFixedWidth(20) refresh.clicked.connect(lambda: self.page_update()) layout.addWidget(refresh) layout.addWidget(preview) layout.addWidget(one) layout.addWidget(two) layout.addStretch() return layout
def new_source(self, codecs): self.inner_widget = QtWidgets.QWidget() self.tracks = [] layout = QtWidgets.QVBoxLayout() layout.setSpacing(5) for i, x in enumerate(self.main.streams.audio, 1): track_info = "" tags = x.get("tags") if tags: track_info += tags.get('title', '') if 'language' in tags: track_info += f' {tags.language}' track_info += f' - {x.codec_name}' if 'profile' in x: track_info += f' ({x.profile})' track_info += f' - {x.channels} channels' new_item = Audio( self, track_info, original=True, first=True if i == 1 else False, index=x.index, codec=x.codec_name, codecs=codecs, channels=x.channels, available_audio_encoders=self.available_audio_encoders) layout.addWidget(new_item) self.tracks.append(new_item) if self.tracks: self.tracks[-1].set_last() layout.addStretch() # layout. self.inner_layout = layout self.inner_widget.setLayout(layout) self.init_inner()