From e9ec8aaaaf53e94118dd1ab05b99493b63255207 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 28 Apr 2011 18:32:37 +0200 Subject: [PATCH] added shorcuts for start/stop/toggle loop (#771966) Fixes: https://launchpad.net/bugs/771966 --- openlp/core/ui/slidecontroller.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index dfa313cc1..5a6e5aec3 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -180,16 +180,25 @@ class SlideController(QtGui.QWidget): self.hideMenu.menu().addAction(self.themeScreen) self.hideMenu.menu().addAction(self.desktopScreen) self.toolbar.addToolbarSeparator(u'Loop Separator') - self.toolbar.addToolbarButton( + startLoop = self.toolbar.addToolbarButton( # Does not need translating - control string. u'Start Loop', u':/media/media_time.png', translate('OpenLP.SlideController', 'Start continuous loop'), self.onStartLoop) - self.toolbar.addToolbarButton( + action_list = ActionList.get_instance() + action_list.add_action(startLoop, UiStrings().LiveToolbar) + stopLoop =self.toolbar.addToolbarButton( # Does not need translating - control string. u'Stop Loop', u':/media/media_stop.png', translate('OpenLP.SlideController', 'Stop continuous loop'), self.onStopLoop) + action_list.add_action(stopLoop, UiStrings().LiveToolbar) + self.toogleLoop = shortcut_action(self, u'toogleLoop', + [QtGui.QKeySequence(u'L')], self.onToggleLoop, + category=UiStrings().LiveToolbar) + self.toogleLoop.setText(translate('OpenLP.SlideController', + 'Start/Stop continuous loop')) + self.addAction(self.toogleLoop) self.delaySpinBox = QtGui.QSpinBox() self.delaySpinBox.setMinimum(1) self.delaySpinBox.setMaximum(180) @@ -494,6 +503,9 @@ class SlideController(QtGui.QWidget): self.mediabar.setVisible(False) self.toolbar.makeWidgetsInvisible([u'Song Menu']) self.toolbar.makeWidgetsInvisible(self.loopList) + self.toogleLoop.setEnabled(False) + self.toolbar.actions[u'Start Loop'].setEnabled(False) + self.toolbar.actions[u'Stop Loop'].setEnabled(False) self.toolbar.actions[u'Stop Loop'].setVisible(False) if item.is_text(): if QtCore.QSettings().value( @@ -503,6 +515,9 @@ class SlideController(QtGui.QWidget): if item.is_capable(ItemCapabilities.AllowsLoop) and \ len(item.get_frames()) > 1: self.toolbar.makeWidgetsVisible(self.loopList) + self.toogleLoop.setEnabled(True) + self.toolbar.actions[u'Start Loop'].setEnabled(True) + self.toolbar.actions[u'Stop Loop'].setEnabled(True) if item.is_media(): self.toolbar.setVisible(False) self.mediabar.setVisible(True) @@ -995,6 +1010,15 @@ class SlideController(QtGui.QWidget): self.previewListWidget.rowCount() - 1) self.slideSelected() + def onToggleLoop(self, toggled): + """ + Toggles the loop state. + """ + if self.toolbar.actions[u'Start Loop'].isVisible(): + self.onStartLoop() + else: + self.onStopLoop() + def onStartLoop(self): """ Start the timer loop running and store the timer id