99
99
sender = self.sender().objectName() if self.sender().objectName() else self.sender().text()
100
100
controller = self
101
Registry().execute('%s' % sender, [controller, args])
101
Registry().execute('{text}'.format(text=sender), [controller, args])
104
104
class InfoLabel(QtWidgets.QLabel):
395
395
{'key': 'O', 'configurable': True, 'text': translate('OpenLP.SlideController', 'Go to "Other"')}
397
397
shortcuts.extend([{'key': str(number)} for number in range(10)])
398
self.controller.addActions([create_action(self, 'shortcutAction_%s' % s['key'],
398
self.controller.addActions([create_action(self, 'shortcutAction_{key}'.format(key=s['key']),
399
399
text=s.get('text'),
400
400
can_shortcuts=True,
401
401
context=QtCore.Qt.WidgetWithChildrenShortcut,
417
417
self.preview_widget.doubleClicked.connect(self.on_preview_double_click)
418
418
self.toolbar.set_widget_visible(['editSong'], False)
419
419
self.controller.addActions([self.next_item, self.previous_item])
420
Registry().register_function('slidecontroller_%s_stop_loop' % self.type_prefix, self.on_stop_loop)
421
Registry().register_function('slidecontroller_%s_change' % self.type_prefix, self.on_slide_change)
422
Registry().register_function('slidecontroller_%s_blank' % self.type_prefix, self.on_slide_blank)
423
Registry().register_function('slidecontroller_%s_unblank' % self.type_prefix, self.on_slide_unblank)
420
Registry().register_function('slidecontroller_{text}_stop_loop'.format(text=self.type_prefix),
422
Registry().register_function('slidecontroller_{text}_change'.format(text=self.type_prefix),
423
self.on_slide_change)
424
Registry().register_function('slidecontroller_{text}_blank'.format(text=self.type_prefix),
426
Registry().register_function('slidecontroller_{text}_unblank'.format(text=self.type_prefix),
427
self.on_slide_unblank)
424
428
Registry().register_function('slidecontroller_update_slide_limits', self.update_slide_limits)
425
getattr(self, 'slidecontroller_%s_set' % self.type_prefix).connect(self.on_slide_selected_index)
426
getattr(self, 'slidecontroller_%s_next' % self.type_prefix).connect(self.on_slide_selected_next)
427
getattr(self, 'slidecontroller_%s_previous' % self.type_prefix).connect(self.on_slide_selected_previous)
429
getattr(self, 'slidecontroller_{text}_set'.format(text=self.type_prefix)).connect(self.on_slide_selected_index)
430
getattr(self, 'slidecontroller_{text}_next'.format(text=self.type_prefix)).connect(self.on_slide_selected_next)
431
# NOTE: {t} used to keep line length < maxline
433
'slidecontroller_{t}_previous'.format(t=self.type_prefix)).connect(self.on_slide_selected_previous)
429
435
def _slide_shortcut_activated(self):
841
847
self.service_item = copy.copy(service_item)
842
848
if self.service_item.is_command():
843
849
Registry().execute(
844
'%s_start' % service_item.name.lower(), [self.service_item, self.is_live, self.hide_mode(), slide_no])
850
'{text}_start'.format(text=service_item.name.lower()),
851
[self.service_item, self.is_live, self.hide_mode(), slide_no])
845
852
# Reset blanking if needed
846
853
if old_item and self.is_live and (old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay) or
847
854
self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay)):
879
886
if frame['verseTag']:
880
887
# These tags are already translated.
881
888
verse_def = frame['verseTag']
882
verse_def = '%s%s' % (verse_def[0], verse_def[1:])
883
two_line_def = '%s\n%s' % (verse_def[0], verse_def[1:])
889
verse_def = '{def1}{def2}'.format(def1=verse_def[0], def2=verse_def[1:])
890
two_line_def = '{def1}\n{def2}'.format(def1=verse_def[0], def2=verse_def[1:])
884
891
row = two_line_def
885
892
if verse_def not in self.slide_list:
886
893
self.slide_list[verse_def] = frame_number
915
922
# close the previous, so make sure we don't close the new one.
916
923
if old_item.is_command() and not self.service_item.is_command() or \
917
924
old_item.is_command() and not old_item.is_media() and self.service_item.is_media():
918
Registry().execute('%s_stop' % old_item.name.lower(), [old_item, self.is_live])
925
Registry().execute('{name}_stop'.format(name=old_item.name.lower()), [old_item, self.is_live])
919
926
if old_item.is_media() and not self.service_item.is_media():
920
927
self.on_media_close()
921
Registry().execute('slidecontroller_%s_started' % self.type_prefix, [self.service_item])
928
Registry().execute('slidecontroller_{item}_started'.format(item=self.type_prefix), [self.service_item])
923
930
def on_slide_selected_index(self, message):
930
937
if not self.service_item:
932
939
if self.service_item.is_command():
933
Registry().execute('%s_slide' % self.service_item.name.lower(), [self.service_item, self.is_live, index])
940
Registry().execute('{name}_slide'.format(name=self.service_item.name.lower()),
941
[self.service_item, self.is_live, index])
934
942
self.update_preview()
935
943
self.selected_row = index
976
984
if checked is None:
977
985
checked = self.blank_screen.isChecked()
978
self.log_debug('on_blank_display %s' % checked)
986
self.log_debug('on_blank_display {text}'.format(text=checked))
979
987
self.hide_menu.setDefaultAction(self.blank_screen)
980
988
self.blank_screen.setChecked(checked)
981
989
self.theme_screen.setChecked(False)
997
1005
if checked is None:
998
1006
checked = self.theme_screen.isChecked()
999
self.log_debug('on_theme_display %s' % checked)
1007
self.log_debug('on_theme_display {text}'.format(text=checked))
1000
1008
self.hide_menu.setDefaultAction(self.theme_screen)
1001
1009
self.blank_screen.setChecked(False)
1002
1010
self.theme_screen.setChecked(checked)
1018
1026
if checked is None:
1019
1027
checked = self.desktop_screen.isChecked()
1020
self.log_debug('on_hide_display %s' % checked)
1028
self.log_debug('on_hide_display {text}'.format(text=checked))
1021
1029
self.hide_menu.setDefaultAction(self.desktop_screen)
1022
1030
self.blank_screen.setChecked(False)
1023
1031
self.theme_screen.setChecked(False)
1035
1043
Blank/Hide the display screen within a plugin if required.
1037
1045
hide_mode = self.hide_mode()
1038
self.log_debug('blank_plugin %s ' % hide_mode)
1046
self.log_debug('blank_plugin {text}'.format(text=hide_mode))
1039
1047
if self.service_item is not None:
1041
1049
if not self.service_item.is_command():
1042
1050
Registry().execute('live_display_hide', hide_mode)
1043
Registry().execute('%s_blank' %
1044
self.service_item.name.lower(), [self.service_item, self.is_live, hide_mode])
1051
Registry().execute('{text}_blank'.format(text=self.service_item.name.lower()),
1052
[self.service_item, self.is_live, hide_mode])
1046
1054
if not self.service_item.is_command():
1047
1055
Registry().execute('live_display_show')
1048
Registry().execute('%s_unblank' % self.service_item.name.lower(), [self.service_item, self.is_live])
1056
Registry().execute('{text}_unblank'.format(text=self.service_item.name.lower()),
1057
[self.service_item, self.is_live])
1051
1060
Registry().execute('live_display_hide', hide_mode)
1057
1066
Tell the plugin to hide the display screen.
1059
self.log_debug('hide_plugin %s ' % hide)
1068
self.log_debug('hide_plugin {text}'.format(text=hide))
1060
1069
if self.service_item is not None:
1062
1071
Registry().execute('live_display_hide', HideMode.Screen)
1063
Registry().execute('%s_hide' % self.service_item.name.lower(), [self.service_item, self.is_live])
1072
Registry().execute('{text}_hide'.format(text=self.service_item.name.lower()),
1073
[self.service_item, self.is_live])
1065
1075
if not self.service_item.is_command():
1066
1076
Registry().execute('live_display_show')
1067
Registry().execute('%s_unblank' % self.service_item.name.lower(), [self.service_item, self.is_live])
1077
Registry().execute('{text}_unblank'.format(text=self.service_item.name.lower()),
1078
[self.service_item, self.is_live])
1070
1081
Registry().execute('live_display_hide', HideMode.Screen)
1099
1110
if -1 < row < self.preview_widget.slide_count():
1100
1111
if self.service_item.is_command():
1101
1112
if self.is_live and not start:
1102
Registry().execute('%s_slide' %
1103
self.service_item.name.lower(), [self.service_item, self.is_live, row])
1113
Registry().execute('{text}_slide'.format(text=self.service_item.name.lower()),
1114
[self.service_item, self.is_live, row])
1105
1116
to_display = self.service_item.get_rendered_frame(row)
1106
1117
if self.service_item.is_text():
1134
1145
This updates the preview frame, for example after changing a slide or using *Blank to Theme*.
1136
self.log_debug('update_preview %s ' % self.screens.current['primary'])
1147
self.log_debug('update_preview {text} '.format(text=self.screens.current['primary']))
1137
1148
if self.service_item and self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay):
1138
1149
if self.is_live:
1139
1150
# If live, grab screen-cap of main display now
1185
1196
if not self.service_item:
1187
1198
if self.service_item.is_command():
1188
Registry().execute('%s_next' % self.service_item.name.lower(), [self.service_item, self.is_live])
1199
Registry().execute('{text}_next'.format(text=self.service_item.name.lower()),
1200
[self.service_item, self.is_live])
1189
1201
if self.is_live:
1190
1202
self.update_preview()
1213
1225
if not self.service_item:
1215
1227
if self.service_item.is_command():
1216
Registry().execute('%s_previous' % self.service_item.name.lower(), [self.service_item, self.is_live])
1228
Registry().execute('{text}_previous'.format(text=self.service_item.name.lower()),
1229
[self.service_item, self.is_live])
1217
1230
if self.is_live:
1218
1231
self.update_preview()
1265
1278
checked = self.play_slides_loop.isChecked()
1267
1280
self.play_slides_loop.setChecked(checked)
1268
self.log_debug('on_play_slides_loop %s' % checked)
1281
self.log_debug('on_play_slides_loop {text}'.format(text=checked))
1270
1283
self.play_slides_loop.setIcon(build_icon(':/media/media_stop.png'))
1271
1284
self.play_slides_loop.setText(UiStrings().StopPlaySlidesInLoop)
1288
1301
checked = self.play_slides_once.isChecked()
1290
1303
self.play_slides_once.setChecked(checked)
1291
self.log_debug('on_play_slides_once %s' % checked)
1304
self.log_debug('on_play_slides_once {text}'.format(text=checked))
1293
1306
self.play_slides_once.setIcon(build_icon(':/media/media_stop.png'))
1294
1307
self.play_slides_once.setText(UiStrings().StopPlaySlidesToEnd)
1354
1367
# Live and Preview have issues if we have video or presentations
1355
1368
# playing in both at the same time.
1356
1369
if self.service_item.is_command():
1357
Registry().execute('%s_stop' % self.service_item.name.lower(), [self.service_item, self.is_live])
1370
Registry().execute('{text}_stop'.format(text=self.service_item.name.lower()),
1371
[self.service_item, self.is_live])
1358
1372
if self.service_item.is_media():
1359
1373
self.on_media_close()
1360
1374
self.on_go_live()