~suutari-olli/openlp/click-slide-to-go-live-from-blank

« back to all changes in this revision

Viewing changes to openlp/plugins/media/lib/mediaitem.py

  • Committer: Simon Hanna
  • Date: 2016-05-17 08:48:19 UTC
  • mfrom: (2625.1.36 openlp)
  • mto: (2625.1.37 openlp)
  • mto: This revision was merged to the branch mainline in revision 2649.
  • Revision ID: simon.hanna@serve-me.info-20160517084819-lgup78nzyzjympuu
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
    translate
30
30
from openlp.core.lib import ItemCapabilities, MediaManagerItem, MediaType, ServiceItem, ServiceItemContext, \
31
31
    build_icon, check_item_selected
32
 
from openlp.core.lib.ui import critical_error_message_box, create_horizontal_adjusting_combo_box
33
 
from openlp.core.ui import DisplayController, Display, DisplayControllerType
 
32
from openlp.core.lib.ui import create_widget_action, critical_error_message_box, create_horizontal_adjusting_combo_box
 
33
from openlp.core.ui import DisplayControllerType
34
34
from openlp.core.ui.media import get_media_players, set_media_players, parse_optical_path, format_milliseconds
35
 
from openlp.core.utils import get_locale_key
 
35
from openlp.core.common.languagemanager import get_locale_key
36
36
from openlp.core.ui.media.vlcplayer import get_vlc
37
37
 
38
38
if get_vlc() is not None:
78
78
        self.single_service_item = False
79
79
        self.has_search = True
80
80
        self.media_object = None
81
 
        self.display_controller = DisplayController(self.parent())
82
 
        self.display_controller.controller_layout = QtWidgets.QVBoxLayout()
83
 
        self.media_controller.register_controller(self.display_controller)
84
 
        self.media_controller.set_controls_visible(self.display_controller, False)
85
 
        self.display_controller.preview_display = Display(self.display_controller)
86
 
        self.display_controller.preview_display.hide()
87
 
        self.display_controller.preview_display.setGeometry(QtCore.QRect(0, 0, 300, 300))
88
 
        self.display_controller.preview_display.screen = {'size': self.display_controller.preview_display.geometry()}
89
 
        self.display_controller.preview_display.setup()
90
 
        self.media_controller.setup_display(self.display_controller.preview_display, False)
 
81
        # self.display_controller = DisplayController(self.parent())
91
82
        Registry().register_function('video_background_replaced', self.video_background_replaced)
92
83
        Registry().register_function('mediaitem_media_rebuild', self.rebuild_players)
93
 
        Registry().register_function('config_screen_changed', self.display_setup)
94
84
        # Allow DnD from the desktop
95
85
        self.list_view.activateDnD()
96
86
 
101
91
        """
102
92
        self.on_new_prompt = translate('MediaPlugin.MediaItem', 'Select Media')
103
93
        self.replace_action.setText(UiStrings().ReplaceBG)
 
94
        self.replace_action_context.setText(UiStrings().ReplaceBG)
104
95
        if 'webkit' in get_media_players()[0]:
105
96
            self.replace_action.setToolTip(UiStrings().ReplaceLiveBG)
 
97
            self.replace_action_context.setToolTip(UiStrings().ReplaceLiveBG)
106
98
        else:
107
99
            self.replace_action.setToolTip(UiStrings().ReplaceLiveBGDisabled)
 
100
            self.replace_action_context.setToolTip(UiStrings().ReplaceLiveBGDisabled)
108
101
        self.reset_action.setText(UiStrings().ResetBG)
109
102
        self.reset_action.setToolTip(UiStrings().ResetLiveBG)
 
103
        self.reset_action_context.setText(UiStrings().ResetBG)
 
104
        self.reset_action_context.setToolTip(UiStrings().ResetLiveBG)
110
105
        self.automatic = UiStrings().Automatic
111
106
        self.display_type_label.setText(translate('MediaPlugin.MediaItem', 'Use Player:'))
112
107
 
151
146
        Adds buttons to the end of the header bar.
152
147
        """
153
148
        # Replace backgrounds do not work at present so remove functionality.
154
 
        self.replace_action = self.toolbar.add_toolbar_action('replace_action', icon=':/slides/slide_blank.png',
 
149
        self.replace_action = self.toolbar.add_toolbar_action('replace_action', icon=':/slides/slide_theme.png',
155
150
                                                              triggers=self.on_replace_click)
156
151
        if 'webkit' not in get_media_players()[0]:
157
152
            self.replace_action.setDisabled(True)
 
153
            self.replace_action_context.setDisabled(True)
158
154
        self.reset_action = self.toolbar.add_toolbar_action('reset_action', icon=':/system/system_close.png',
159
155
                                                            visible=False, triggers=self.on_reset_click)
160
156
        self.media_widget = QtWidgets.QWidget(self)
173
169
        self.page_layout.addWidget(self.media_widget)
174
170
        self.display_type_combo_box.currentIndexChanged.connect(self.override_player_changed)
175
171
 
176
 
    def override_player_changed(self, index):
 
172
    def add_custom_context_actions(self):
 
173
        create_widget_action(self.list_view, separator=True)
 
174
        self.replace_action_context = create_widget_action(
 
175
            self.list_view, text=UiStrings().ReplaceBG, icon=':/slides/slide_blank.png',
 
176
            triggers=self.on_replace_click)
 
177
        self.reset_action_context = create_widget_action(
 
178
            self.list_view, text=UiStrings().ReplaceLiveBG, icon=':/system/system_close.png',
 
179
            visible=False, triggers=self.on_reset_click)
 
180
 
 
181
    @staticmethod
 
182
    def override_player_changed(index):
177
183
        """
178
184
        The Player has been overridden
179
185
 
191
197
        """
192
198
        self.media_controller.media_reset(self.live_controller)
193
199
        self.reset_action.setVisible(False)
 
200
        self.reset_action_context.setVisible(False)
194
201
 
195
202
    def video_background_replaced(self):
196
203
        """
197
204
        Triggered by main display on change of serviceitem.
198
205
        """
199
206
        self.reset_action.setVisible(False)
 
207
        self.reset_action_context.setVisible(False)
200
208
 
201
209
    def on_replace_click(self):
202
210
        """
215
223
                service_item.add_from_command(path, name, CLAPPERBOARD)
216
224
                if self.media_controller.video(DisplayControllerType.Live, service_item, video_behind_text=True):
217
225
                    self.reset_action.setVisible(True)
 
226
                    self.reset_action_context.setVisible(True)
218
227
                else:
219
228
                    critical_error_message_box(UiStrings().LiveBGError,
220
229
                                               translate('MediaPlugin.MediaItem',
273
282
            service_item.processor = self.display_type_combo_box.currentText()
274
283
            service_item.add_from_command(path, name, CLAPPERBOARD)
275
284
            # Only get start and end times if going to a service
276
 
            if context == ServiceItemContext.Service:
277
 
                # Start media and obtain the length
278
 
                if not self.media_controller.media_length(service_item):
279
 
                    return False
 
285
            if not self.media_controller.media_length(service_item):
 
286
                return False
280
287
        service_item.add_capability(ItemCapabilities.CanAutoStartForLive)
281
288
        service_item.add_capability(ItemCapabilities.CanEditTitle)
282
289
        service_item.add_capability(ItemCapabilities.RequiresMedia)
283
290
        if Settings().value(self.settings_section + '/media auto start') == QtCore.Qt.Checked:
284
291
            service_item.will_auto_start = True
285
 
            # force a non-existent theme
 
292
        # force a non-existent theme
286
293
        service_item.theme = -1
287
294
        return True
288
295
 
305
312
            ' '.join(self.media_controller.video_extensions_list),
306
313
            ' '.join(self.media_controller.audio_extensions_list), UiStrings().AllFiles)
307
314
 
308
 
    def display_setup(self):
309
 
        """
310
 
        Setup media controller display.
311
 
        """
312
 
        self.media_controller.setup_display(self.display_controller.preview_display, False)
313
 
 
314
315
    def populate_display_types(self):
315
316
        """
316
317
        Load the combobox with the enabled media players,  allowing user to select a specific player if settings allow.
385
386
            if item_name:
386
387
                self.list_view.addItem(item_name)
387
388
 
388
 
    def get_list(self, type=MediaType.Audio):
 
389
    def get_list(self, media_type=MediaType.Audio):
389
390
        """
390
391
        Get the list of media, optional select media type.
391
392
 
392
 
        :param type: Type to get, defaults to audio.
 
393
        :param media_type: Type to get, defaults to audio.
393
394
        :return: The media list
394
395
        """
395
396
        media = Settings().value(self.settings_section + '/media files')
396
397
        media.sort(key=lambda filename: get_locale_key(os.path.split(str(filename))[1]))
397
 
        if type == MediaType.Audio:
 
398
        if media_type == MediaType.Audio:
398
399
            extension = self.media_controller.audio_extensions_list
399
400
        else:
400
401
            extension = self.media_controller.video_extensions_list