Round 1 of media clip dialog refresh

This commit is contained in:
Raoul Snyman 2014-08-21 01:35:24 +02:00
parent 4fc6025f1a
commit 86291d0c41
5 changed files with 237 additions and 230 deletions

View File

@ -30,179 +30,180 @@
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.common import translate from openlp.core.common import translate
from openlp.core.lib import build_icon
class Ui_MediaClipSelector(object): class Ui_MediaClipSelector(object):
def setupUi(self, MediaClipSelector): def setupUi(self, media_clip_selector):
MediaClipSelector.setObjectName("MediaClipSelector") media_clip_selector.setObjectName('media_clip_selector')
MediaClipSelector.resize(683, 739) media_clip_selector.resize(554, 654)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding) self.combobox_size_policy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) media_clip_selector.setSizePolicy(
sizePolicy.setVerticalStretch(0) QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding))
sizePolicy.setHeightForWidth(MediaClipSelector.sizePolicy().hasHeightForWidth()) self.central_widget = QtGui.QWidget(media_clip_selector)
MediaClipSelector.setSizePolicy(sizePolicy) self.central_widget.setSizePolicy(
MediaClipSelector.setMinimumSize(QtCore.QSize(683, 686)) QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding))
MediaClipSelector.setFocusPolicy(QtCore.Qt.NoFocus) self.central_widget.setObjectName('central_widget')
MediaClipSelector.setAutoFillBackground(False) self.main_layout = QtGui.QVBoxLayout(self.central_widget)
MediaClipSelector.setInputMethodHints(QtCore.Qt.ImhNone) self.main_layout.setObjectName('main_layout')
self.centralwidget = QtGui.QWidget(MediaClipSelector) self.central_widget.setLayout(self.main_layout)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding) # Source groupbox
sizePolicy.setHorizontalStretch(0) self.source_groupbox = QtGui.QGroupBox(self.central_widget)
sizePolicy.setVerticalStretch(0) self.source_groupbox.setObjectName('source_groupbox')
sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth()) self.source_layout = QtGui.QHBoxLayout()
self.centralwidget.setSizePolicy(sizePolicy) self.source_layout.setObjectName('source_layout')
self.centralwidget.setObjectName("centralwidget") self.source_groupbox.setLayout(self.source_layout)
self.gridLayout = QtGui.QGridLayout(self.centralwidget) # Media path label
self.gridLayout.setObjectName("gridLayout") self.media_path_label = QtGui.QLabel(self.source_groupbox)
self.media_path_combobox = QtGui.QComboBox(self.centralwidget) self.media_path_label.setObjectName('media_path_label')
self.media_path_combobox.setEnabled(True) self.source_layout.addWidget(self.media_path_label)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) # Media path combobox
sizePolicy.setHorizontalStretch(0) self.media_path_combobox = QtGui.QComboBox(self.source_groupbox)
sizePolicy.setVerticalStretch(0) # Make the combobox expand
sizePolicy.setHeightForWidth(self.media_path_combobox.sizePolicy().hasHeightForWidth()) self.media_path_combobox.setSizePolicy(self.combobox_size_policy)
self.media_path_combobox.setSizePolicy(sizePolicy)
self.media_path_combobox.setEditable(True) self.media_path_combobox.setEditable(True)
self.media_path_combobox.setObjectName("media_path_combobox") self.media_path_combobox.setObjectName('media_path_combobox')
self.gridLayout.addWidget(self.media_path_combobox, 0, 2, 1, 2) self.source_layout.addWidget(self.media_path_combobox)
self.start_timeedit = QtGui.QTimeEdit(self.centralwidget) # Load disc button
self.start_timeedit.setEnabled(True) self.load_disc_button = QtGui.QPushButton(self.central_widget)
self.start_timeedit.setObjectName("start_timeedit") self.load_disc_button.setEnabled(True)
self.gridLayout.addWidget(self.start_timeedit, 7, 2, 1, 1) self.load_disc_button.setObjectName('load_disc_button')
self.end_timeedit = QtGui.QTimeEdit(self.centralwidget) self.source_layout.addWidget(self.load_disc_button)
self.end_timeedit.setEnabled(True) self.main_layout.addWidget(self.source_groupbox)
self.end_timeedit.setObjectName("end_timeedit") # Track details group box
self.gridLayout.addWidget(self.end_timeedit, 8, 2, 1, 1) self.track_groupbox = QtGui.QGroupBox(self.central_widget)
self.set_start_pushbutton = QtGui.QPushButton(self.centralwidget) self.track_groupbox.setObjectName('track_groupbox')
self.set_start_pushbutton.setEnabled(True) self.track_layout = QtGui.QFormLayout()
self.set_start_pushbutton.setObjectName("set_start_pushbutton") self.track_layout.setObjectName('track_layout')
self.gridLayout.addWidget(self.set_start_pushbutton, 7, 3, 1, 1) self.label_alignment = self.track_layout.labelAlignment()
self.load_disc_pushbutton = QtGui.QPushButton(self.centralwidget) self.track_groupbox.setLayout(self.track_layout)
self.load_disc_pushbutton.setEnabled(True) # Title track
self.load_disc_pushbutton.setObjectName("load_disc_pushbutton") self.title_label = QtGui.QLabel(self.track_groupbox)
self.gridLayout.addWidget(self.load_disc_pushbutton, 0, 4, 1, 1) self.title_label.setObjectName('title_label')
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) self.titles_combo_box = QtGui.QComboBox(self.track_groupbox)
self.gridLayout.addItem(spacerItem, 9, 3, 1, 1) self.titles_combo_box.setSizePolicy(self.combobox_size_policy)
self.play_pushbutton = QtGui.QPushButton(self.centralwidget) self.titles_combo_box.setEditText('')
self.play_pushbutton.setEnabled(True) self.titles_combo_box.setObjectName('titles_combo_box')
self.play_pushbutton.setText("") self.track_layout.addRow(self.title_label, self.titles_combo_box)
icon = QtGui.QIcon() # Audio track
icon.addPixmap(QtGui.QPixmap(":/slides/media_playback_start.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.audio_track_label = QtGui.QLabel(self.track_groupbox)
self.play_pushbutton.setIcon(icon) self.audio_track_label.setObjectName('audio_track_label')
self.play_pushbutton.setObjectName("play_pushbutton") self.audio_tracks_combobox = QtGui.QComboBox(self.track_groupbox)
self.gridLayout.addWidget(self.play_pushbutton, 6, 0, 1, 1) self.audio_tracks_combobox.setSizePolicy(self.combobox_size_policy)
self.end_point_label = QtGui.QLabel(self.centralwidget) self.audio_tracks_combobox.setObjectName('audio_tracks_combobox')
self.end_point_label.setEnabled(True) self.track_layout.addRow(self.audio_track_label, self.audio_tracks_combobox)
self.end_point_label.setObjectName("end_point_label") self.main_layout.addWidget(self.track_groupbox)
self.gridLayout.addWidget(self.end_point_label, 8, 0, 1, 1) # Subtitle track
self.subtitle_tracks_combobox = QtGui.QComboBox(self.centralwidget) self.subtitle_track_label = QtGui.QLabel(self.track_groupbox)
self.subtitle_tracks_combobox.setEnabled(True) self.subtitle_track_label.setObjectName('subtitle_track_label')
self.subtitle_tracks_combobox.setObjectName("subtitle_tracks_combobox") self.subtitle_tracks_combobox = QtGui.QComboBox(self.track_groupbox)
self.gridLayout.addWidget(self.subtitle_tracks_combobox, 4, 2, 1, 2) self.subtitle_tracks_combobox.setSizePolicy(self.combobox_size_policy)
self.title_label = QtGui.QLabel(self.centralwidget) self.subtitle_tracks_combobox.setObjectName('subtitle_tracks_combobox')
self.title_label.setEnabled(True) self.track_layout.addRow(self.subtitle_track_label, self.subtitle_tracks_combobox)
self.title_label.setObjectName("title_label") # Preview frame
self.gridLayout.addWidget(self.title_label, 2, 0, 1, 1) self.preview_frame = QtGui.QFrame(self.central_widget)
self.audio_tracks_combobox = QtGui.QComboBox(self.centralwidget) self.preview_frame.setMinimumSize(QtCore.QSize(320, 240))
self.audio_tracks_combobox.setEnabled(True) self.preview_frame.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding))
self.audio_tracks_combobox.setObjectName("audio_tracks_combobox") self.preview_frame.setStyleSheet('background-color:black;')
self.gridLayout.addWidget(self.audio_tracks_combobox, 3, 2, 1, 2) self.preview_frame.setFrameShape(QtGui.QFrame.NoFrame)
self.set_end_pushbutton = QtGui.QPushButton(self.centralwidget) self.preview_frame.setObjectName('preview_frame')
self.set_end_pushbutton.setEnabled(True) self.main_layout.addWidget(self.preview_frame)
self.set_end_pushbutton.setObjectName("set_end_pushbutton") # player controls
self.gridLayout.addWidget(self.set_end_pushbutton, 8, 3, 1, 1) self.controls_layout = QtGui.QHBoxLayout()
self.save_pushbutton = QtGui.QPushButton(self.centralwidget) self.controls_layout.setObjectName('controls_layout')
self.save_pushbutton.setEnabled(True) self.play_button = QtGui.QToolButton(self.central_widget)
self.save_pushbutton.setObjectName("save_pushbutton") self.play_button.setIcon(build_icon(':/slides/media_playback_start.png'))
self.gridLayout.addWidget(self.save_pushbutton, 10, 3, 1, 1) self.play_button.setObjectName('play_button')
self.close_pushbutton = QtGui.QPushButton(self.centralwidget) self.controls_layout.addWidget(self.play_button)
self.close_pushbutton.setEnabled(True) self.position_slider = QtGui.QSlider(self.central_widget)
self.close_pushbutton.setObjectName("close_pushbutton") self.position_slider.setTracking(False)
self.gridLayout.addWidget(self.close_pushbutton, 10, 4, 1, 1) self.position_slider.setOrientation(QtCore.Qt.Horizontal)
self.start_point_label = QtGui.QLabel(self.centralwidget) self.position_slider.setObjectName('position_slider')
self.start_point_label.setEnabled(True) self.controls_layout.addWidget(self.position_slider)
self.start_point_label.setObjectName("start_point_label") self.position_timeedit = QtGui.QTimeEdit(self.central_widget)
self.gridLayout.addWidget(self.start_point_label, 7, 0, 1, 2) self.position_timeedit.setReadOnly(True)
self.jump_start_pushbutton = QtGui.QPushButton(self.centralwidget) self.position_timeedit.setObjectName('position_timeedit')
self.jump_start_pushbutton.setEnabled(True) self.controls_layout.addWidget(self.position_timeedit)
self.jump_start_pushbutton.setObjectName("jump_start_pushbutton") self.main_layout.addLayout(self.controls_layout)
self.gridLayout.addWidget(self.jump_start_pushbutton, 7, 4, 1, 1) # Range
self.audio_track_label = QtGui.QLabel(self.centralwidget) self.range_groupbox = QtGui.QGroupBox(self.central_widget)
self.audio_track_label.setEnabled(True) self.range_groupbox.setObjectName('range_groupbox')
self.audio_track_label.setObjectName("audio_track_label") self.range_layout = QtGui.QGridLayout()
self.gridLayout.addWidget(self.audio_track_label, 3, 0, 1, 2) self.range_layout.setObjectName('range_layout')
self.media_position_timeedit = QtGui.QTimeEdit(self.centralwidget) self.range_groupbox.setLayout(self.range_layout)
self.media_position_timeedit.setEnabled(True) # Start position
self.media_position_timeedit.setReadOnly(True) self.start_position_label = QtGui.QLabel(self.range_groupbox)
self.media_position_timeedit.setObjectName("media_position_timeedit") self.start_position_label.setObjectName('start_position_label')
self.gridLayout.addWidget(self.media_position_timeedit, 6, 4, 1, 1) self.range_layout.addWidget(self.start_position_label, 0, 0, self.label_alignment)
self.media_view_frame = QtGui.QFrame(self.centralwidget) self.start_position_edit = QtGui.QTimeEdit(self.range_groupbox)
self.media_view_frame.setMinimumSize(QtCore.QSize(665, 375)) self.start_position_edit.setObjectName('start_position_edit')
self.media_view_frame.setStyleSheet("background-color:black;") self.range_layout.addWidget(self.start_position_edit, 0, 1)
self.media_view_frame.setFrameShape(QtGui.QFrame.NoFrame) self.set_start_button = QtGui.QPushButton(self.range_groupbox)
self.media_view_frame.setFrameShadow(QtGui.QFrame.Raised) self.set_start_button.setObjectName('set_start_button')
self.media_view_frame.setObjectName("media_view_frame") self.range_layout.addWidget(self.set_start_button, 0, 2)
self.gridLayout.addWidget(self.media_view_frame, 5, 0, 1, 5) self.jump_start_button = QtGui.QPushButton(self.range_groupbox)
self.subtitle_track_label = QtGui.QLabel(self.centralwidget) self.jump_start_button.setObjectName('jump_start_button')
self.subtitle_track_label.setEnabled(True) self.range_layout.addWidget(self.jump_start_button, 0, 3)
self.subtitle_track_label.setObjectName("subtitle_track_label") # End position
self.gridLayout.addWidget(self.subtitle_track_label, 4, 0, 1, 2) self.end_position_label = QtGui.QLabel(self.range_groupbox)
self.jump_end_pushbutton = QtGui.QPushButton(self.centralwidget) self.end_position_label.setObjectName('end_position_label')
self.jump_end_pushbutton.setEnabled(True) self.range_layout.addWidget(self.end_position_label, 1, 0, self.label_alignment)
self.jump_end_pushbutton.setObjectName("jump_end_pushbutton") self.end_timeedit = QtGui.QTimeEdit(self.range_groupbox)
self.gridLayout.addWidget(self.jump_end_pushbutton, 8, 4, 1, 1) self.end_timeedit.setObjectName('end_timeedit')
self.media_path_label = QtGui.QLabel(self.centralwidget) self.range_layout.addWidget(self.end_timeedit, 1, 1)
self.media_path_label.setEnabled(True) self.set_end_button = QtGui.QPushButton(self.range_groupbox)
self.media_path_label.setObjectName("media_path_label") self.set_end_button.setObjectName('set_end_button')
self.gridLayout.addWidget(self.media_path_label, 0, 0, 1, 2) self.range_layout.addWidget(self.set_end_button, 1, 2)
self.title_combo_box = QtGui.QComboBox(self.centralwidget) self.jump_end_button = QtGui.QPushButton(self.range_groupbox)
self.title_combo_box.setEnabled(True) self.jump_end_button.setObjectName('jump_end_button')
self.title_combo_box.setProperty("currentText", "") self.range_layout.addWidget(self.jump_end_button, 1, 3)
self.title_combo_box.setObjectName("title_combo_box") self.main_layout.addWidget(self.range_groupbox)
self.gridLayout.addWidget(self.title_combo_box, 2, 2, 1, 2) # Save and close buttons
self.position_horizontalslider = QtGui.QSlider(self.centralwidget) self.button_box = QtGui.QDialogButtonBox(self.central_widget)
self.position_horizontalslider.setEnabled(True) self.button_box.addButton(QtGui.QDialogButtonBox.Save)
self.position_horizontalslider.setTracking(False) self.button_box.addButton(QtGui.QDialogButtonBox.Cancel)
self.position_horizontalslider.setOrientation(QtCore.Qt.Horizontal) self.close_button = self.button_box.button(QtGui.QDialogButtonBox.Cancel)
self.position_horizontalslider.setInvertedAppearance(False) self.save_button = self.button_box.button(QtGui.QDialogButtonBox.Save)
self.position_horizontalslider.setObjectName("position_horizontalslider") self.main_layout.addWidget(self.button_box)
self.gridLayout.addWidget(self.position_horizontalslider, 6, 1, 1, 3)
self.retranslateUi(MediaClipSelector)
#QtCore.QMetaObject.connectSlotsByName(MediaClipSelector)
MediaClipSelector.setTabOrder(self.media_path_combobox, self.load_disc_pushbutton)
MediaClipSelector.setTabOrder(self.load_disc_pushbutton, self.title_combo_box)
MediaClipSelector.setTabOrder(self.title_combo_box, self.audio_tracks_combobox)
MediaClipSelector.setTabOrder(self.audio_tracks_combobox, self.subtitle_tracks_combobox)
MediaClipSelector.setTabOrder(self.subtitle_tracks_combobox, self.play_pushbutton)
MediaClipSelector.setTabOrder(self.play_pushbutton, self.position_horizontalslider)
MediaClipSelector.setTabOrder(self.position_horizontalslider, self.media_position_timeedit)
MediaClipSelector.setTabOrder(self.media_position_timeedit, self.start_timeedit)
MediaClipSelector.setTabOrder(self.start_timeedit, self.set_start_pushbutton)
MediaClipSelector.setTabOrder(self.set_start_pushbutton, self.jump_start_pushbutton)
MediaClipSelector.setTabOrder(self.jump_start_pushbutton, self.end_timeedit)
MediaClipSelector.setTabOrder(self.end_timeedit, self.set_end_pushbutton)
MediaClipSelector.setTabOrder(self.set_end_pushbutton, self.jump_end_pushbutton)
MediaClipSelector.setTabOrder(self.jump_end_pushbutton, self.save_pushbutton)
MediaClipSelector.setTabOrder(self.save_pushbutton, self.close_pushbutton)
def retranslateUi(self, MediaClipSelector): self.retranslateUi(media_clip_selector)
MediaClipSelector.setWindowTitle(translate("MediaPlugin.MediaClipSelector", "Select media clip", None)) self.button_box.accepted.connect(media_clip_selector.accept)
self.start_timeedit.setDisplayFormat(translate("MediaPlugin.MediaClipSelector", "HH:mm:ss.z", None)) self.button_box.rejected.connect(media_clip_selector.reject)
self.end_timeedit.setDisplayFormat(translate("MediaPlugin.MediaClipSelector", "HH:mm:ss.z", None)) QtCore.QMetaObject.connectSlotsByName(media_clip_selector)
self.set_start_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", media_clip_selector.setTabOrder(self.media_path_combobox, self.load_disc_button)
"Set current position as start point", None)) media_clip_selector.setTabOrder(self.load_disc_button, self.titles_combo_box)
self.load_disc_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", "Load disc", None)) media_clip_selector.setTabOrder(self.titles_combo_box, self.audio_tracks_combobox)
self.end_point_label.setText(translate("MediaPlugin.MediaClipSelector", "End point", None)) media_clip_selector.setTabOrder(self.audio_tracks_combobox, self.subtitle_tracks_combobox)
self.title_label.setText(translate("MediaPlugin.MediaClipSelector", "Title", None)) media_clip_selector.setTabOrder(self.subtitle_tracks_combobox, self.play_button)
self.set_end_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", media_clip_selector.setTabOrder(self.play_button, self.position_slider)
"Set current position as end point", None)) media_clip_selector.setTabOrder(self.position_slider, self.position_timeedit)
self.save_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", "Save current clip", None)) media_clip_selector.setTabOrder(self.position_timeedit, self.start_position_edit)
self.close_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", "Close", None)) media_clip_selector.setTabOrder(self.start_position_edit, self.set_start_button)
self.start_point_label.setText(translate("MediaPlugin.MediaClipSelector", "Start point", None)) media_clip_selector.setTabOrder(self.set_start_button, self.jump_start_button)
self.jump_start_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", "Jump to start point", None)) media_clip_selector.setTabOrder(self.jump_start_button, self.end_timeedit)
self.audio_track_label.setText(translate("MediaPlugin.MediaClipSelector", "Audio track", None)) media_clip_selector.setTabOrder(self.end_timeedit, self.set_end_button)
self.media_position_timeedit.setDisplayFormat(translate("MediaPlugin.MediaClipSelector", "HH:mm:ss.z", None)) media_clip_selector.setTabOrder(self.set_end_button, self.jump_end_button)
self.subtitle_track_label.setText(translate("MediaPlugin.MediaClipSelector", "Subtitle track", None)) media_clip_selector.setTabOrder(self.jump_end_button, self.save_button)
self.jump_end_pushbutton.setText(translate("MediaPlugin.MediaClipSelector", "Jump to end point", None)) media_clip_selector.setTabOrder(self.save_button, self.close_button)
self.media_path_label.setText(translate("MediaPlugin.MediaClipSelector", "Media path", None))
self.media_path_combobox.lineEdit().setPlaceholderText(translate("MediaPlugin.MediaClipSelector", def retranslateUi(self, media_clip_selector):
"Select drive from list", None)) media_clip_selector.setWindowTitle(translate('MediaPlugin.MediaClipSelector', 'Select Media Clip'))
self.source_groupbox.setTitle(translate('MediaPlugin.MediaClipSelector', 'Source'))
self.media_path_label.setText(translate('MediaPlugin.MediaClipSelector', 'Media path:'))
self.media_path_combobox.lineEdit().setPlaceholderText(translate('MediaPlugin.MediaClipSelector',
'Select drive from list'))
self.load_disc_button.setText(translate('MediaPlugin.MediaClipSelector', 'Load disc'))
self.track_groupbox.setTitle(translate('MediaPlugin.MediaClipSelector', 'Track Details'))
self.title_label.setText(translate('MediaPlugin.MediaClipSelector', 'Title:'))
self.audio_track_label.setText(translate('MediaPlugin.MediaClipSelector', 'Audio track:'))
self.subtitle_track_label.setText(translate('MediaPlugin.MediaClipSelector', 'Subtitle track:'))
self.position_timeedit.setDisplayFormat(translate('MediaPlugin.MediaClipSelector', 'HH:mm:ss.z'))
self.range_groupbox.setTitle(translate('MediaPlugin.MediaClipSelector', 'Clip Range'))
self.start_position_label.setText(translate('MediaPlugin.MediaClipSelector', 'Start point:'))
self.start_position_edit.setDisplayFormat(translate('MediaPlugin.MediaClipSelector', 'HH:mm:ss.z'))
self.set_start_button.setText(translate('MediaPlugin.MediaClipSelector', 'Set start point'))
self.jump_start_button.setText(translate('MediaPlugin.MediaClipSelector', 'Jump to start point'))
self.end_position_label.setText(translate('MediaPlugin.MediaClipSelector', 'End point:'))
self.end_timeedit.setDisplayFormat(translate('MediaPlugin.MediaClipSelector', 'HH:mm:ss.z'))
self.set_end_button.setText(translate('MediaPlugin.MediaClipSelector', 'Set end point'))
self.jump_end_button.setText(translate('MediaPlugin.MediaClipSelector', 'Jump to end point'))

View File

@ -81,8 +81,6 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
self.playback_length = 0 self.playback_length = 0
self.media_item = media_item self.media_item = media_item
self.setupUi(self) self.setupUi(self)
# most actions auto-connect due to the functions name, so only a few left to do
self.close_pushbutton.clicked.connect(self.reject)
# setup play/pause icon # setup play/pause icon
self.play_icon = QtGui.QIcon() self.play_icon = QtGui.QIcon()
self.play_icon.addPixmap(QtGui.QPixmap(":/slides/media_playback_start.png"), QtGui.QIcon.Normal, self.play_icon.addPixmap(QtGui.QPixmap(":/slides/media_playback_start.png"), QtGui.QIcon.Normal,
@ -96,6 +94,8 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
Exit Dialog and do not save Exit Dialog and do not save
""" """
log.debug('MediaClipSelectorForm.reject') log.debug('MediaClipSelectorForm.reject')
print(self.geometry().height())
print(self.geometry().width())
# Tear down vlc # Tear down vlc
if self.vlc_media_player: if self.vlc_media_player:
self.vlc_media_player.stop() self.vlc_media_player.stop()
@ -107,7 +107,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
if self.vlc_media: if self.vlc_media:
self.vlc_media.release() self.vlc_media.release()
self.vlc_media = None self.vlc_media = None
QtGui.QDialog.reject(self) return QtGui.QDialog.reject(self)
def exec_(self): def exec_(self):
""" """
@ -122,16 +122,16 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
Reset the UI to default values Reset the UI to default values
""" """
self.playback_length = 0 self.playback_length = 0
self.position_horizontalslider.setMinimum(0) self.position_slider.setMinimum(0)
self.disable_all() self.disable_all()
self.toggle_disable_load_media(False) self.toggle_disable_load_media(False)
self.subtitle_tracks_combobox.clear() self.subtitle_tracks_combobox.clear()
self.audio_tracks_combobox.clear() self.audio_tracks_combobox.clear()
self.title_combo_box.clear() self.titles_combo_box.clear()
time = QtCore.QTime() time = QtCore.QTime()
self.start_timeedit.setTime(time) self.start_position_edit.setTime(time)
self.end_timeedit.setTime(time) self.end_timeedit.setTime(time)
self.media_position_timeedit.setTime(time) self.position_timeedit.setTime(time)
def setup_vlc(self): def setup_vlc(self):
""" """
@ -145,7 +145,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
# This is platform specific! # This is platform specific!
# You have to give the id of the QFrame (or similar object) # You have to give the id of the QFrame (or similar object)
# to vlc, different platforms have different functions for this. # to vlc, different platforms have different functions for this.
win_id = int(self.media_view_frame.winId()) win_id = int(self.preview_frame.winId())
if sys.platform == "win32": if sys.platform == "win32":
self.vlc_media_player.set_hwnd(win_id) self.vlc_media_player.set_hwnd(win_id)
elif sys.platform == "darwin": elif sys.platform == "darwin":
@ -182,16 +182,16 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
self.audio_cd_tracks = self.vlc_media.subitems() self.audio_cd_tracks = self.vlc_media.subitems()
if not self.audio_cd_tracks or self.audio_cd_tracks.count() < 1: if not self.audio_cd_tracks or self.audio_cd_tracks.count() < 1:
return False return False
# Insert into title_combo_box # Insert into titles_combo_box
self.title_combo_box.clear() self.titles_combo_box.clear()
for i in range(self.audio_cd_tracks.count()): for i in range(self.audio_cd_tracks.count()):
item = self.audio_cd_tracks.item_at_index(i) item = self.audio_cd_tracks.item_at_index(i)
item_title = item.get_meta(vlc.Meta.Title) item_title = item.get_meta(vlc.Meta.Title)
self.title_combo_box.addItem(item_title, i) self.titles_combo_box.addItem(item_title, i)
self.vlc_media_player.set_media(self.audio_cd_tracks.item_at_index(0)) self.vlc_media_player.set_media(self.audio_cd_tracks.item_at_index(0))
self.audio_cd = True self.audio_cd = True
self.title_combo_box.setDisabled(False) self.titles_combo_box.setDisabled(False)
self.title_combo_box.setCurrentIndex(0) self.titles_combo_box.setCurrentIndex(0)
self.on_title_combo_box_currentIndexChanged(0) self.on_title_combo_box_currentIndexChanged(0)
return True return True
@ -255,19 +255,19 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
if not self.audio_cd: if not self.audio_cd:
# Get titles, insert in combobox # Get titles, insert in combobox
titles = self.vlc_media_player.video_get_title_description() titles = self.vlc_media_player.video_get_title_description()
self.title_combo_box.clear() self.titles_combo_box.clear()
for title in titles: for title in titles:
self.title_combo_box.addItem(title[1].decode(), title[0]) self.titles_combo_box.addItem(title[1].decode(), title[0])
# Main title is usually title #1 # Main title is usually title #1
if len(titles) > 1: if len(titles) > 1:
self.title_combo_box.setCurrentIndex(1) self.titles_combo_box.setCurrentIndex(1)
else: else:
self.title_combo_box.setCurrentIndex(0) self.titles_combo_box.setCurrentIndex(0)
# Enable audio track combobox if anything is in it # Enable audio track combobox if anything is in it
if len(titles) > 0: if len(titles) > 0:
self.title_combo_box.setDisabled(False) self.titles_combo_box.setDisabled(False)
self.toggle_disable_load_media(False) self.toggle_disable_load_media(False)
log.debug('load_disc_pushbutton end - vlc_media_player state: %s' % self.vlc_media_player.get_state()) log.debug('load_disc_button end - vlc_media_player state: %s' % self.vlc_media_player.get_state())
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_play_pushbutton_clicked(self, clicked): def on_play_pushbutton_clicked(self, clicked):
@ -278,23 +278,23 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
""" """
if self.vlc_media_player.get_state() == vlc.State.Playing: if self.vlc_media_player.get_state() == vlc.State.Playing:
self.vlc_media_player.pause() self.vlc_media_player.pause()
self.play_pushbutton.setIcon(self.play_icon) self.play_button.setIcon(self.play_icon)
else: else:
self.vlc_media_player.play() self.vlc_media_player.play()
self.media_state_wait(vlc.State.Playing) self.media_state_wait(vlc.State.Playing)
self.play_pushbutton.setIcon(self.pause_icon) self.play_button.setIcon(self.pause_icon)
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_set_start_pushbutton_clicked(self, clicked): def on_set_start_pushbutton_clicked(self, clicked):
""" """
Copy the current player position to start_timeedit Copy the current player position to start_position_edit
:param clicked: Given from signal, not used. :param clicked: Given from signal, not used.
""" """
vlc_ms_pos = self.vlc_media_player.get_time() vlc_ms_pos = self.vlc_media_player.get_time()
time = QtCore.QTime() time = QtCore.QTime()
new_pos_time = time.addMSecs(vlc_ms_pos) new_pos_time = time.addMSecs(vlc_ms_pos)
self.start_timeedit.setTime(new_pos_time) self.start_position_edit.setTime(new_pos_time)
# If start time is after end time, update end time. # If start time is after end time, update end time.
end_time = self.end_timeedit.time() end_time = self.end_timeedit.time()
if end_time < new_pos_time: if end_time < new_pos_time:
@ -312,14 +312,14 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
new_pos_time = time.addMSecs(vlc_ms_pos) new_pos_time = time.addMSecs(vlc_ms_pos)
self.end_timeedit.setTime(new_pos_time) self.end_timeedit.setTime(new_pos_time)
# If start time is after end time, update start time. # If start time is after end time, update start time.
start_time = self.start_timeedit.time() start_time = self.start_position_edit.time()
if start_time > new_pos_time: if start_time > new_pos_time:
self.start_timeedit.setTime(new_pos_time) self.start_position_edit.setTime(new_pos_time)
@QtCore.pyqtSlot(QtCore.QTime) @QtCore.pyqtSlot(QtCore.QTime)
def on_start_timeedit_timeChanged(self, new_time): def on_start_timeedit_timeChanged(self, new_time):
""" """
Called when start_timeedit is changed manually Called when start_position_edit is changed manually
:param new_time: The new time :param new_time: The new time
""" """
@ -336,9 +336,9 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
:param new_time: The new time :param new_time: The new time
""" """
# If start time is after end time, update start time. # If start time is after end time, update start time.
start_time = self.start_timeedit.time() start_time = self.start_position_edit.time()
if start_time > new_time: if start_time > new_time:
self.start_timeedit.setTime(new_time) self.start_position_edit.setTime(new_time)
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_jump_end_pushbutton_clicked(self, clicked): def on_jump_end_pushbutton_clicked(self, clicked):
@ -357,11 +357,11 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_jump_start_pushbutton_clicked(self, clicked): def on_jump_start_pushbutton_clicked(self, clicked):
""" """
Set the player position to the position stored in start_timeedit Set the player position to the position stored in start_position_edit
:param clicked: Given from signal, not used. :param clicked: Given from signal, not used.
""" """
start_time = self.start_timeedit.time() start_time = self.start_position_edit.time()
start_time_ms = start_time.hour() * 60 * 60 * 1000 + \ start_time_ms = start_time.hour() * 60 * 60 * 1000 + \
start_time.minute() * 60 * 1000 + \ start_time.minute() * 60 * 1000 + \
start_time.second() * 1000 + \ start_time.second() * 1000 + \
@ -428,17 +428,17 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
self.vlc_media_player.audio_set_mute(False) self.vlc_media_player.audio_set_mute(False)
self.vlc_media_player.set_pause(1) self.vlc_media_player.set_pause(1)
# If a title or audio track is available the player is enabled # If a title or audio track is available the player is enabled
if self.title_combo_box.count() > 0 or len(audio_tracks) > 0: if self.titles_combo_box.count() > 0 or len(audio_tracks) > 0:
self.toggle_disable_player(False) self.toggle_disable_player(False)
# Set media length info # Set media length info
self.playback_length = self.vlc_media_player.get_length() self.playback_length = self.vlc_media_player.get_length()
log.debug('playback_length: %d ms' % self.playback_length) log.debug('playback_length: %d ms' % self.playback_length)
self.position_horizontalslider.setMaximum(self.playback_length) self.position_slider.setMaximum(self.playback_length)
# setup start and end time # setup start and end time
rounded_vlc_ms_length = int(round(self.playback_length / 100.0) * 100.0) rounded_vlc_ms_length = int(round(self.playback_length / 100.0) * 100.0)
time = QtCore.QTime() time = QtCore.QTime()
playback_length_time = time.addMSecs(rounded_vlc_ms_length) playback_length_time = time.addMSecs(rounded_vlc_ms_length)
self.start_timeedit.setMaximumTime(playback_length_time) self.start_position_edit.setMaximumTime(playback_length_time)
self.end_timeedit.setMaximumTime(playback_length_time) self.end_timeedit.setMaximumTime(playback_length_time)
self.end_timeedit.setTime(playback_length_time) self.end_timeedit.setTime(playback_length_time)
# Pause once again, just to make sure # Pause once again, just to make sure
@ -447,7 +447,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
sleep(0.1) sleep(0.1)
self.vlc_media_player.set_pause(1) self.vlc_media_player.set_pause(1)
loop_count += 1 loop_count += 1
log.debug('title_combo_box end - vlc_media_player state: %s' % self.vlc_media_player.get_state()) log.debug('titles_combo_box end - vlc_media_player state: %s' % self.vlc_media_player.get_state())
@QtCore.pyqtSlot(int) @QtCore.pyqtSlot(int)
def on_audio_tracks_combobox_currentIndexChanged(self, index): def on_audio_tracks_combobox_currentIndexChanged(self, index):
@ -493,15 +493,15 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
rounded_vlc_ms_pos = int(round(vlc_ms_pos / 100.0) * 100.0) rounded_vlc_ms_pos = int(round(vlc_ms_pos / 100.0) * 100.0)
time = QtCore.QTime() time = QtCore.QTime()
new_pos_time = time.addMSecs(rounded_vlc_ms_pos) new_pos_time = time.addMSecs(rounded_vlc_ms_pos)
self.media_position_timeedit.setTime(new_pos_time) self.position_timeedit.setTime(new_pos_time)
self.position_horizontalslider.setSliderPosition(vlc_ms_pos) self.position_slider.setSliderPosition(vlc_ms_pos)
def disable_all(self): def disable_all(self):
""" """
Disable all elements in the dialog Disable all elements in the dialog
""" """
self.toggle_disable_load_media(True) self.toggle_disable_load_media(True)
self.title_combo_box.setDisabled(True) self.titles_combo_box.setDisabled(True)
self.audio_tracks_combobox.setDisabled(True) self.audio_tracks_combobox.setDisabled(True)
self.subtitle_tracks_combobox.setDisabled(True) self.subtitle_tracks_combobox.setDisabled(True)
self.toggle_disable_player(True) self.toggle_disable_player(True)
@ -513,7 +513,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
:param action: If True elements are disabled, if False they are enabled. :param action: If True elements are disabled, if False they are enabled.
""" """
self.media_path_combobox.setDisabled(action) self.media_path_combobox.setDisabled(action)
self.load_disc_pushbutton.setDisabled(action) self.load_disc_button.setDisabled(action)
def toggle_disable_player(self, action): def toggle_disable_player(self, action):
""" """
@ -521,16 +521,16 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
:param action: If True elements are disabled, if False they are enabled. :param action: If True elements are disabled, if False they are enabled.
""" """
self.play_pushbutton.setDisabled(action) self.play_button.setDisabled(action)
self.position_horizontalslider.setDisabled(action) self.position_slider.setDisabled(action)
self.media_position_timeedit.setDisabled(action) self.position_timeedit.setDisabled(action)
self.start_timeedit.setDisabled(action) self.start_position_edit.setDisabled(action)
self.set_start_pushbutton.setDisabled(action) self.set_start_button.setDisabled(action)
self.jump_start_pushbutton.setDisabled(action) self.jump_start_button.setDisabled(action)
self.end_timeedit.setDisabled(action) self.end_timeedit.setDisabled(action)
self.set_end_pushbutton.setDisabled(action) self.set_end_button.setDisabled(action)
self.jump_end_pushbutton.setDisabled(action) self.jump_end_button.setDisabled(action)
self.save_pushbutton.setDisabled(action) self.save_button.setDisabled(action)
@QtCore.pyqtSlot(bool) @QtCore.pyqtSlot(bool)
def on_save_pushbutton_clicked(self, clicked): def on_save_pushbutton_clicked(self, clicked):
@ -540,7 +540,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
:param clicked: Given from signal, not used. :param clicked: Given from signal, not used.
""" """
log.debug('in on_save_pushbutton_clicked') log.debug('in on_save_pushbutton_clicked')
start_time = self.start_timeedit.time() start_time = self.start_position_edit.time()
start_time_ms = start_time.hour() * 60 * 60 * 1000 + \ start_time_ms = start_time.hour() * 60 * 60 * 1000 + \
start_time.minute() * 60 * 1000 + \ start_time.minute() * 60 * 1000 + \
start_time.second() * 1000 + \ start_time.second() * 1000 + \
@ -550,7 +550,7 @@ class MediaClipSelectorForm(QtGui.QDialog, Ui_MediaClipSelector):
end_time.minute() * 60 * 1000 + \ end_time.minute() * 60 * 1000 + \
end_time.second() * 1000 + \ end_time.second() * 1000 + \
end_time.msec() end_time.msec()
title = self.title_combo_box.itemData(self.title_combo_box.currentIndex()) title = self.titles_combo_box.itemData(self.titles_combo_box.currentIndex())
path = self.media_path_combobox.currentText() path = self.media_path_combobox.currentText()
optical = '' optical = ''
if self.audio_cd: if self.audio_cd:

View File

@ -287,8 +287,8 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties):
check_directory_exists(self.service_path) check_directory_exists(self.service_path)
self.load_list(Settings().value(self.settings_section + '/media files')) self.load_list(Settings().value(self.settings_section + '/media files'))
self.rebuild_players() self.rebuild_players()
if VLC_AVAILABLE: # if VLC_AVAILABLE:
self.media_clip_selector_form = MediaClipSelectorForm(self, self.main_window, None) # self.media_clip_selector_form = MediaClipSelectorForm(self, self.main_window, None)
def rebuild_players(self): def rebuild_players(self):
""" """
@ -415,7 +415,13 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties):
""" """
When the load optical button is clicked, open the clip selector window. When the load optical button is clicked, open the clip selector window.
""" """
self.media_clip_selector_form.exec_() # self.media_clip_selector_form.exec_()
if VLC_AVAILABLE:
media_clip_selector_form = MediaClipSelectorForm(self, self.main_window, None)
media_clip_selector_form.exec_()
del media_clip_selector_form
else:
QtGui.QMessageBox.critical(self, 'VLC is not available', 'VLC is not available')
def add_optical_clip(self, optical): def add_optical_clip(self, optical):
""" """

View File

@ -124,7 +124,7 @@ class SongExportForm(OpenLPWizard):
self.export_song_layout = QtGui.QHBoxLayout(self.export_song_page) self.export_song_layout = QtGui.QHBoxLayout(self.export_song_page)
self.export_song_layout.setObjectName('export_song_layout') self.export_song_layout.setObjectName('export_song_layout')
self.grid_layout = QtGui.QGridLayout() self.grid_layout = QtGui.QGridLayout()
self.grid_layout.setObjectName('grid_layout') self.grid_layout.setObjectName('range_layout')
self.selected_list_widget = QtGui.QListWidget(self.export_song_page) self.selected_list_widget = QtGui.QListWidget(self.export_song_page)
self.selected_list_widget.setObjectName('selected_list_widget') self.selected_list_widget.setObjectName('selected_list_widget')
self.grid_layout.addWidget(self.selected_list_widget, 1, 0, 1, 1) self.grid_layout.addWidget(self.selected_list_widget, 1, 0, 1, 1)

View File

@ -100,7 +100,7 @@ class TestMediaClipSelectorForm(TestCase, TestMixin):
self.form.exec_() self.form.exec_()
# WHEN: The load button is clicked with no path set # WHEN: The load button is clicked with no path set
QtTest.QTest.mouseClick(self.form.load_disc_pushbutton, QtCore.Qt.LeftButton) QtTest.QTest.mouseClick(self.form.load_disc_button, QtCore.Qt.LeftButton)
# THEN: we should get an error # THEN: we should get an error
mocked_critical_error_message_box.assert_called_with(message='No path was given') mocked_critical_error_message_box.assert_called_with(message='No path was given')
@ -109,7 +109,7 @@ class TestMediaClipSelectorForm(TestCase, TestMixin):
mocked_os_path_exists.return_value = False mocked_os_path_exists.return_value = False
self.form.media_path_combobox.insertItem(0, '/non-existing/test-path.test') self.form.media_path_combobox.insertItem(0, '/non-existing/test-path.test')
self.form.media_path_combobox.setCurrentIndex(0) self.form.media_path_combobox.setCurrentIndex(0)
QtTest.QTest.mouseClick(self.form.load_disc_pushbutton, QtCore.Qt.LeftButton) QtTest.QTest.mouseClick(self.form.load_disc_button, QtCore.Qt.LeftButton)
# THEN: we should get an error # THEN: we should get an error
assert self.form.media_path_combobox.currentText() == '/non-existing/test-path.test',\ assert self.form.media_path_combobox.currentText() == '/non-existing/test-path.test',\
@ -122,7 +122,7 @@ class TestMediaClipSelectorForm(TestCase, TestMixin):
self.form.vlc_media_player.play.return_value = -1 self.form.vlc_media_player.play.return_value = -1
self.form.media_path_combobox.insertItem(0, '/existing/test-path.test') self.form.media_path_combobox.insertItem(0, '/existing/test-path.test')
self.form.media_path_combobox.setCurrentIndex(0) self.form.media_path_combobox.setCurrentIndex(0)
QtTest.QTest.mouseClick(self.form.load_disc_pushbutton, QtCore.Qt.LeftButton) QtTest.QTest.mouseClick(self.form.load_disc_button, QtCore.Qt.LeftButton)
# THEN: we should get an error # THEN: we should get an error
assert self.form.media_path_combobox.currentText() == '/existing/test-path.test',\ assert self.form.media_path_combobox.currentText() == '/existing/test-path.test',\
@ -141,15 +141,15 @@ class TestMediaClipSelectorForm(TestCase, TestMixin):
self.form.subtitle_tracks_combobox.itemData = MagicMock() self.form.subtitle_tracks_combobox.itemData = MagicMock()
self.form.audio_tracks_combobox.itemData.return_value = None self.form.audio_tracks_combobox.itemData.return_value = None
self.form.subtitle_tracks_combobox.itemData.return_value = None self.form.subtitle_tracks_combobox.itemData.return_value = None
self.form.title_combo_box.insertItem(0, 'Test Title 0') self.form.titles_combo_box.insertItem(0, 'Test Title 0')
self.form.title_combo_box.insertItem(1, 'Test Title 1') self.form.titles_combo_box.insertItem(1, 'Test Title 1')
# WHEN: There exists audio and subtitle tracks and the index is updated. # WHEN: There exists audio and subtitle tracks and the index is updated.
self.form.vlc_media_player.audio_get_track_description.return_value = [(-1, b'Disabled'), self.form.vlc_media_player.audio_get_track_description.return_value = [(-1, b'Disabled'),
(0, b'Audio Track 1')] (0, b'Audio Track 1')]
self.form.vlc_media_player.video_get_spu_description.return_value = [(-1, b'Disabled'), self.form.vlc_media_player.video_get_spu_description.return_value = [(-1, b'Disabled'),
(0, b'Subtitle Track 1')] (0, b'Subtitle Track 1')]
self.form.title_combo_box.setCurrentIndex(1) self.form.titles_combo_box.setCurrentIndex(1)
# THEN: The subtitle and audio track comboboxes should be updated and get signals and call itemData. # THEN: The subtitle and audio track comboboxes should be updated and get signals and call itemData.
self.form.audio_tracks_combobox.itemData.assert_any_call(0) self.form.audio_tracks_combobox.itemData.assert_any_call(0)