From 38243af7debe5a530a64a9cc9bfa2323289192b6 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 19 Mar 2011 10:08:05 +0000 Subject: [PATCH 01/17] Add destop startup file selection --- openlp.pyw | 2 +- openlp/core/ui/mainwindow.py | 11 ++++++++--- openlp/core/ui/printserviceform.py | 11 ++++++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 04f65a5dd..3fbb473fd 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -184,7 +184,7 @@ class OpenLP(QtGui.QApplication): # make sure Qt really display the splash screen self.processEvents() # start the main app window - self.mainWindow = MainWindow(screens, app_version, self.clipboard()) + self.mainWindow = MainWindow(screens, app_version, self) self.mainWindow.show() if show_splash: # now kill the splashscreen diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 294cca49b..85872155f 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -468,7 +468,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): actionList = ActionList() - def __init__(self, screens, applicationVersion, clipboard): + def __init__(self, screens, applicationVersion, application): """ This constructor sets up the interface, the various managers, and the plugins. @@ -476,7 +476,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMainWindow.__init__(self) self.screens = screens self.applicationVersion = applicationVersion - self.clipboard = clipboard + self.application = application # Set up settings sections for the main application # (not for use by plugins) self.uiSettingsSection = u'user interface' @@ -658,7 +658,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): if self.liveController.display.isVisible(): self.liveController.display.setFocus() self.activateWindow() - if QtCore.QSettings().value( + if len(self.application.arguments()) > 0: + args = [] + for a in self.application.arguments(): + args.extend([a]) + self.ServiceManagerContents.loadFile(unicode(args[0])) + elif QtCore.QSettings().value( self.generalSettingsSection + u'/auto open', QtCore.QVariant(False)).toBool(): self.ServiceManagerContents.loadLastFile() diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 713e7c27b..da4d6205e 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -33,12 +33,12 @@ from openlp.core.ui.printservicedialog import Ui_PrintServiceDialog, ZoomSize class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog): - def __init__(self, parent, serviceManager): + def __init__(self, mainWindow, serviceManager): """ Constructor """ - QtGui.QDialog.__init__(self, parent) - self.parent = parent + QtGui.QDialog.__init__(self, mainWindow) + self.mainWindow = mainWindow self.serviceManager = serviceManager self.printer = QtGui.QPrinter() self.printDialog = QtGui.QPrintDialog(self.printer, self) @@ -181,13 +181,14 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog): """ Copies the display text to the clipboard as plain text """ - self.parent.clipboard.setText(self.document.toPlainText()) + self.mainWindow.application.clipboard.setText( + self.document.toPlainText()) def copyHtmlText(self): """ Copies the display text to the clipboard as Html """ - self.parent.clipboard.setText(self.document.toHtml()) + self.mainWindow.application.clipboard.setText(self.document.toHtml()) def printServiceOrder(self): """ From 5e7fa5940717f36e9b5b240fd1175fce0e493f21 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 19 Mar 2011 11:23:45 +0000 Subject: [PATCH 02/17] Update the Media timer UI --- openlp/core/lib/ui.py | 2 + openlp/core/ui/starttimedialog.py | 75 +++++++++++++++++++++++-------- openlp/core/ui/starttimeform.py | 28 +++++++++--- 3 files changed, 82 insertions(+), 23 deletions(-) diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index eae4f60ca..4e0c59210 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -56,6 +56,7 @@ class UiStrings(object): Export = translate('OpenLP.Ui', 'Export') FontSizePtUnit = translate('OpenLP.Ui', 'pt', 'Abbreviated font pointsize unit') + H = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours') Image = translate('OpenLP.Ui', 'Image') Import = translate('OpenLP.Ui', 'Import') LengthTime = unicode(translate('OpenLP.Ui', 'Length %s')) @@ -63,6 +64,7 @@ class UiStrings(object): LiveBGError = translate('OpenLP.Ui', 'Live Background Error') LivePanel = translate('OpenLP.Ui', 'Live Panel') Load = translate('OpenLP.Ui', 'Load') + M = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes') Middle = translate('OpenLP.Ui', 'Middle') New = translate('OpenLP.Ui', 'New') NewService = translate('OpenLP.Ui', 'New Service') diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 14ef84aac..0ee9ff5e7 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -32,39 +32,78 @@ from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box class Ui_StartTimeDialog(object): def setupUi(self, StartTimeDialog): StartTimeDialog.setObjectName(u'StartTimeDialog') - StartTimeDialog.resize(300, 10) + StartTimeDialog.resize(350, 10) self.dialogLayout = QtGui.QGridLayout(StartTimeDialog) self.dialogLayout.setObjectName(u'dialogLayout') + self.startLabel = QtGui.QLabel(StartTimeDialog) + self.startLabel.setObjectName(u'startLabel') + self.startLabel.setAlignment(QtCore.Qt.AlignHCenter) + self.dialogLayout.addWidget(self.startLabel, 0, 1, 1, 1) + self.finishLabel = QtGui.QLabel(StartTimeDialog) + self.finishLabel.setObjectName(u'finishLabel') + self.finishLabel.setAlignment(QtCore.Qt.AlignHCenter) + self.dialogLayout.addWidget(self.finishLabel, 0, 2, 1, 1) + self.lengthLabel = QtGui.QLabel(StartTimeDialog) + self.lengthLabel.setObjectName(u'startLabel') + self.lengthLabel.setAlignment(QtCore.Qt.AlignHCenter) + self.dialogLayout.addWidget(self.lengthLabel, 0, 3, 1, 1) self.hourLabel = QtGui.QLabel(StartTimeDialog) - self.hourLabel.setObjectName("hourLabel") - self.dialogLayout.addWidget(self.hourLabel, 0, 0, 1, 1) + self.hourLabel.setObjectName(u'hourLabel') + self.dialogLayout.addWidget(self.hourLabel, 1, 0, 1, 1) self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog) - self.hourSpinBox.setObjectName("hourSpinBox") - self.dialogLayout.addWidget(self.hourSpinBox, 0, 1, 1, 1) + self.hourSpinBox.setObjectName(u'hourSpinBox') + self.dialogLayout.addWidget(self.hourSpinBox, 1, 1, 1, 1) + self.hourFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) + self.hourFinishSpinBox.setObjectName(u'hourFinishSpinBox') + self.dialogLayout.addWidget(self.hourFinishSpinBox, 1, 2, 1, 1) + self.hourFinishLabel = QtGui.QLabel(StartTimeDialog) + self.hourFinishLabel.setObjectName(u'hourLabel') + self.hourFinishLabel.setAlignment(QtCore.Qt.AlignRight) + self.dialogLayout.addWidget(self.hourFinishLabel, 1, 3, 1, 1) self.minuteLabel = QtGui.QLabel(StartTimeDialog) - self.minuteLabel.setObjectName("minuteLabel") - self.dialogLayout.addWidget(self.minuteLabel, 1, 0, 1, 1) + self.minuteLabel.setObjectName(u'minuteLabel') + self.dialogLayout.addWidget(self.minuteLabel, 2, 0, 1, 1) self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog) - self.minuteSpinBox.setObjectName("minuteSpinBox") - self.dialogLayout.addWidget(self.minuteSpinBox, 1, 1, 1, 1) + self.minuteSpinBox.setObjectName(u'minuteSpinBox') + self.dialogLayout.addWidget(self.minuteSpinBox, 2, 1, 1, 1) + self.minuteFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) + self.minuteFinishSpinBox.setObjectName(u'minuteFinishSpinBox') + self.dialogLayout.addWidget(self.minuteFinishSpinBox, 2, 2, 1, 1) + self.minuteFinishLabel = QtGui.QLabel(StartTimeDialog) + self.minuteFinishLabel.setObjectName(u'minuteLabel') + self.minuteFinishLabel.setAlignment(QtCore.Qt.AlignRight) + self.dialogLayout.addWidget(self.minuteFinishLabel, 2, 3, 1, 1) self.secondLabel = QtGui.QLabel(StartTimeDialog) - self.secondLabel.setObjectName("secondLabel") - self.dialogLayout.addWidget(self.secondLabel, 2, 0, 1, 1) + self.secondLabel.setObjectName(u'secondLabel') + self.dialogLayout.addWidget(self.secondLabel, 3, 0, 1, 1) self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog) - self.secondSpinBox.setObjectName("secondSpinBox") - self.dialogLayout.addWidget(self.secondSpinBox, 2, 1, 1, 1) + self.secondSpinBox.setObjectName(u'secondSpinBox') + self.secondFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) + self.secondFinishSpinBox.setObjectName(u'secondFinishSpinBox') + self.dialogLayout.addWidget(self.secondFinishSpinBox, 3, 2, 1, 1) + self.secondFinishLabel = QtGui.QLabel(StartTimeDialog) + self.secondFinishLabel.setObjectName(u'secondLabel') + self.secondFinishLabel.setAlignment(QtCore.Qt.AlignRight) + self.dialogLayout.addWidget(self.secondFinishLabel, 3, 3, 1, 1) + self.dialogLayout.addWidget(self.secondSpinBox, 3, 1, 1, 1) self.buttonBox = create_accept_reject_button_box(StartTimeDialog, True) - self.dialogLayout.addWidget(self.buttonBox, 4, 0, 1, 2) + self.dialogLayout.addWidget(self.buttonBox, 5, 2, 1, 2) self.retranslateUi(StartTimeDialog) self.setMaximumHeight(self.sizeHint().height()) QtCore.QMetaObject.connectSlotsByName(StartTimeDialog) def retranslateUi(self, StartTimeDialog): self.setWindowTitle(translate('OpenLP.StartTimeForm', - 'Item Start Time')) - self.hourLabel.setText(translate('OpenLP.StartTimeForm', 'Hours:')) - self.hourSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'h')) - self.minuteSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'm')) + 'Item Start and Fnish Time')) + self.hourSpinBox.setSuffix(UiStrings.H) + self.minuteSpinBox.setSuffix(UiStrings.M) self.secondSpinBox.setSuffix(UiStrings.S) + self.hourFinishSpinBox.setSuffix(UiStrings.H) + self.minuteFinishSpinBox.setSuffix(UiStrings.M) + self.secondFinishSpinBox.setSuffix(UiStrings.S) + self.hourLabel.setText(translate('OpenLP.StartTimeForm', 'Hours:')) self.minuteLabel.setText(translate('OpenLP.StartTimeForm', 'Minutes:')) self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:')) + self.startLabel.setText(translate('OpenLP.StartTimeForm', 'Start')) + self.finishLabel.setText(translate('OpenLP.StartTimeForm', 'Finish')) + self.lengthLabel.setText(translate('OpenLP.StartTimeForm', 'Length')) diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 01800602f..42298772d 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -27,6 +27,7 @@ from PyQt4 import QtGui from starttimedialog import Ui_StartTimeDialog +from openlp.core.lib.ui import UiStrings class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): """ @@ -40,13 +41,30 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): """ Run the Dialog with correct heading. """ - seconds = self.item[u'service_item'].start_time + hour, minutes, seconds = self._time_split( + self.item[u'service_item'].start_time) + self.hourSpinBox.setValue(hour) + self.minuteSpinBox.setValue(minutes) + self.secondSpinBox.setValue(seconds) + hours, minutes, seconds = self._time_split( + self.item[u'service_item'].media_length) + self.hourFinishSpinBox.setValue(hours) + self.minuteFinishSpinBox.setValue(minutes) + self.secondFinishSpinBox.setValue(seconds) + self.hourFinishLabel.setText(u'%s%s' % (unicode(hour), UiStrings.H)) + self.minuteFinishLabel.setText(u'%s%s' % + (unicode(minutes), UiStrings.M)) + self.secondFinishLabel.setText(u'%s%s' % + (unicode(seconds), UiStrings.S)) + return QtGui.QDialog.exec_(self) + + def accept(self): + return QtGui.QDialog.accept(self) + + def _time_split(self, seconds): hours = seconds / 3600 seconds -= 3600 * hours minutes = seconds / 60 seconds -= 60 * minutes - self.hourSpinBox.setValue(hours) - self.minuteSpinBox.setValue(minutes) - self.secondSpinBox.setValue(seconds) - return QtGui.QDialog.exec_(self) + return hours, minutes, seconds From 7fc84ad2b2bfc541e276c49b3e2cdd0d07f43ef0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 19 Mar 2011 11:50:48 +0000 Subject: [PATCH 03/17] Enter and save end times --- openlp/core/lib/serviceitem.py | 6 +++++- openlp/core/ui/servicemanager.py | 6 +----- openlp/core/ui/starttimeform.py | 27 +++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index b360ab13d..ec0dceb65 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -109,6 +109,7 @@ class ServiceItem(object): self.edit_id = None self.xml_version = None self.start_time = 0 + self.end_time = 0 self.media_length = 0 self._new_item() @@ -260,6 +261,7 @@ class ServiceItem(object): u'data': self.data_string, u'xml_version': self.xml_version, u'start_time': self.start_time, + u'end_time': self.end_time, u'media_length': self.media_length } service_data = [] @@ -306,6 +308,8 @@ class ServiceItem(object): self.xml_version = header[u'xml_version'] if u'start_time' in header: self.start_time = header[u'start_time'] + if u'end_time' in header: + self.end_time = header[u'end_time'] if u'media_length' in header: self.media_length = header[u'media_length'] if self.service_item_type == ServiceItemType.Text: @@ -447,4 +451,4 @@ class ServiceItem(object): elif not start and end: return end else: - return u'%s : %s' % (start, end) \ No newline at end of file + return u'%s : %s' % (start, end) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 56aa1bea1..d6d675e1e 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -652,10 +652,6 @@ class ServiceManager(QtGui.QWidget): item = self.findServiceItem()[0] self.startTimeForm.item = self.serviceItems[item] if self.startTimeForm.exec_(): - self.serviceItems[item][u'service_item'].start_time = \ - self.startTimeForm.hourSpinBox.value() * 3600 + \ - self.startTimeForm.minuteSpinBox.value() * 60 + \ - self.startTimeForm.secondSpinBox.value() self.repaintServiceList(item, -1) def onServiceItemEditForm(self): @@ -1256,4 +1252,4 @@ class ServiceManager(QtGui.QWidget): Print a Service Order Sheet. """ settingDialog = PrintServiceForm(self.mainwindow, self) - settingDialog.exec_() \ No newline at end of file + settingDialog.exec_() diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 42298772d..eb70536cb 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -27,7 +27,9 @@ from PyQt4 import QtGui from starttimedialog import Ui_StartTimeDialog -from openlp.core.lib.ui import UiStrings + +from openlp.core.lib import translate +from openlp.core.lib.ui import UiStrings, critical_error_message_box class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): """ @@ -59,6 +61,28 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): return QtGui.QDialog.exec_(self) def accept(self): + start = self.hourSpinBox.value() * 3600 + \ + self.minuteSpinBox.value() * 60 + \ + self.secondSpinBox.value() + end = self.hourFinishSpinBox.value() * 3600 + \ + self.minuteFinishSpinBox.value() * 60 + \ + self.secondFinishSpinBox.value() + if end > self.item[u'service_item'].media_length: + critical_error_message_box( + title=translate('OpenLP.StartTimeForm', + 'Time Validation Error'), + message=translate('OpenLP.StartTimeForm', + 'End time is after the end of the Media Item')) + return + elif start > end: + critical_error_message_box( + title=translate('OpenLP.StartTimeForm', + 'Time Validation Error'), + message=translate('OpenLP.StartTimeForm', + 'Start time is after the End of the Media Item')) + return + self.item[u'service_item'].start_time = start + self.item[u'service_item'].end_time = end return QtGui.QDialog.accept(self) def _time_split(self, seconds): @@ -67,4 +91,3 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): minutes = seconds / 60 seconds -= 60 * minutes return hours, minutes, seconds - From 921163dbcd442a9096b20035fde1c71beef35178 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 19 Mar 2011 12:40:33 +0000 Subject: [PATCH 04/17] Media now has start and end times --- openlp/core/ui/maindisplay.py | 6 +++--- openlp/core/ui/printserviceform.py | 5 ++++- openlp/core/ui/serviceitemeditform.py | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 76c891636..193e96c1d 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -367,7 +367,7 @@ class MainDisplay(DisplayWidget): self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath)) # Need the timer to trigger set the trigger to 200ms # Value taken from web documentation. - if self.serviceItem.start_time != 0: + if self.serviceItem.end_time != 0: self.mediaObject.setTickInterval(200) self.mediaObject.play() self.webView.setVisible(False) @@ -399,9 +399,9 @@ class MainDisplay(DisplayWidget): def videoTick(self, tick): """ Triggered on video tick every 200 milli seconds - Will be used to manage stop time later """ - pass + if tick > self.serviceItem.end_time * 1000: + self.videoFinished() def isWebLoaded(self): """ diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index da4d6205e..37f15b297 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -134,9 +134,12 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog): item.notes.replace(u'\n', u'
')) # Add play length of media files. if item.is_media() and self.metaDataCheckBox.isChecked(): + tme = item.media_length + if item.end_time > 0: + tme = item.end_time - item.start_time text += u'

%s %s

' % (translate( 'OpenLP.ServiceManager', u'Playing time:'), - unicode(datetime.timedelta(seconds=item.media_length))) + unicode(datetime.timedelta(seconds=tme))) if self.footerTextEdit.toPlainText(): text += u'

%s

%s' % (translate('OpenLP.ServiceManager', u'Custom Service Notes:'), self.footerTextEdit.toPlainText()) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 588bdbfd6..228484ebf 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -141,4 +141,3 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): else: self.upButton.setEnabled(True) self.deleteButton.setEnabled(True) - From f0f1a5b5e1f0c264bcd0698d6ef1f2939fba4a31 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 20 Mar 2011 08:34:47 +0000 Subject: [PATCH 05/17] Text changes --- openlp/core/ui/starttimeform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index eb70536cb..2a1c270b4 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -72,14 +72,14 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): title=translate('OpenLP.StartTimeForm', 'Time Validation Error'), message=translate('OpenLP.StartTimeForm', - 'End time is after the end of the Media Item')) + 'End time is set after the end of the media item')) return elif start > end: critical_error_message_box( title=translate('OpenLP.StartTimeForm', 'Time Validation Error'), message=translate('OpenLP.StartTimeForm', - 'Start time is after the End of the Media Item')) + 'Start time is after the End Time of the media item')) return self.item[u'service_item'].start_time = start self.item[u'service_item'].end_time = end From caaf004f4c1300021757e28401d7d6b6433557d7 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 20 Mar 2011 18:42:24 +0000 Subject: [PATCH 06/17] theme changes --- openlp/core/lib/rendermanager.py | 3 ++- openlp/core/ui/slidecontroller.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 0c9549ea5..4f84cf27e 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -145,7 +145,8 @@ class RenderManager(object): else: self.theme = self.service_theme else: - if theme: + # Images have a theme of -1 + if theme and theme != -1: self.theme = theme elif theme_level == ThemeLevel.Song or \ theme_level == ThemeLevel.Service: diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 2f0e789a5..7cb1eb5c4 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -944,6 +944,7 @@ class SlideController(QtGui.QWidget): self.onSlideSelected() def __checkUpdateSelectedSlide(self, row): + print row, self.previewListWidget.rowCount() if row + 1 < self.previewListWidget.rowCount(): self.previewListWidget.scrollToItem( self.previewListWidget.item(row + 1, 0)) From 9836131025ecb47c72a3a1d1c1cf98da5132cb32 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 23 Mar 2011 21:08:24 +0000 Subject: [PATCH 07/17] Allow Preview Controller to request servicemanger to make the preview item live and add next to preview. Fixes: https://launchpad.net/bugs/730294 --- openlp/core/lib/eventreceiver.py | 4 ++++ openlp/core/lib/serviceitem.py | 1 + openlp/core/ui/servicemanager.py | 24 +++++++++++++++++++++++- openlp/core/ui/slidecontroller.py | 10 +++++++--- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 78b0c6324..b17db9823 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -101,6 +101,10 @@ class EventReceiver(QtCore.QObject): ``servicemanager_previous_item`` Display the previous item in the service + ``servicemanager_preview_live`` + Requests a Preview item from the Service Manager to update live and + add a new item to the preview panel + ``servicemanager_next_item`` Display the next item in the service diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 8991c873f..a5e82fb98 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -111,6 +111,7 @@ class ServiceItem(object): self.start_time = 0 self.end_time = 0 self.media_length = 0 + self.from_service = False self._new_item() def _new_item(self): diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index d6d675e1e..eeb18cb46 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -238,6 +238,8 @@ class ServiceManager(QtGui.QWidget): QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'servicemanager_preview_live'), self.previewLive) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem) QtCore.QObject.connect(Receiver.get_receiver(), @@ -558,6 +560,7 @@ class ServiceManager(QtGui.QWidget): self.newFile() for item in items: serviceItem = ServiceItem() + serviceItem.from_service = True serviceItem.render_manager = self.mainwindow.renderManager serviceItem.set_from_service(item, self.servicePath) self.validateItem(serviceItem) @@ -662,6 +665,19 @@ class ServiceManager(QtGui.QWidget): self.addServiceItem(self.serviceItemEditForm.getServiceItem(), replace=True, expand=self.serviceItems[item][u'expanded']) + def previewLive(self, message): + """ + Called by the SlideController to request a preview item be made live + and allows the next preview to be updated if relevent. + """ + id, row = message.split(u':') + for sitem in self.serviceItems: + if sitem[u'service_item']._uuid == id: + item = self.serviceManagerList.topLevelItem(sitem[u'order'] - 1) + self.serviceManagerList.setCurrentItem(item) + self.makeLive(int(row)) + return + def nextItem(self): """ Called by the SlideController to select the next service item. @@ -1017,6 +1033,7 @@ class ServiceManager(QtGui.QWidget): if expand is None: expand = self.expandTabs item.render() + item.from_service = True if replace: sitem, child = self.findServiceItem() item.merge(self.serviceItems[sitem][u'service_item']) @@ -1071,11 +1088,16 @@ class ServiceManager(QtGui.QWidget): else: return self.serviceItems[item][u'service_item'] - def makeLive(self): + def makeLive(self, row=-1): """ Send the current item to the Live slide controller + + ``row`` + Row number to be displayed if from preview """ item, child = self.findServiceItem() + if row != -1: + child = row if self.serviceItems[item][u'service_item'].is_valid: self.mainwindow.liveController.addServiceManagerItem( self.serviceItems[item][u'service_item'], child) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index dfffa2e66..72704a2c0 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -655,6 +655,7 @@ class SlideController(QtGui.QWidget): """ Utility method to update the selected slide in the list. """ + print "c", slideno if slideno > self.previewListWidget.rowCount(): self.previewListWidget.selectRow( self.previewListWidget.rowCount() - 1) @@ -944,7 +945,6 @@ class SlideController(QtGui.QWidget): self.onSlideSelected() def __checkUpdateSelectedSlide(self, row): - print row, self.previewListWidget.rowCount() if row + 1 < self.previewListWidget.rowCount(): self.previewListWidget.scrollToItem( self.previewListWidget.item(row + 1, 0)) @@ -1014,8 +1014,12 @@ class SlideController(QtGui.QWidget): """ row = self.previewListWidget.currentRow() if row > -1 and row < self.previewListWidget.rowCount(): - self.parent.liveController.addServiceManagerItem( - self.serviceItem, row) + if self.serviceItem.from_service: + Receiver.send_message('servicemanager_preview_live', + u'%s:%s' % (self.serviceItem._uuid, row)) + else: + self.parent.liveController.addServiceManagerItem( + self.serviceItem, row) def onMediaStart(self, item): """ From 5a80d5a606eb557813d977d59374d2fac9416cf0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 24 Mar 2011 19:50:40 +0000 Subject: [PATCH 08/17] remove print --- openlp/core/ui/slidecontroller.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 72704a2c0..dfeb02964 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -655,7 +655,6 @@ class SlideController(QtGui.QWidget): """ Utility method to update the selected slide in the list. """ - print "c", slideno if slideno > self.previewListWidget.rowCount(): self.previewListWidget.selectRow( self.previewListWidget.rowCount() - 1) From f83ac13f3f218a86145a117b498a3154aa8d5dd2 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 24 Mar 2011 21:28:03 +0000 Subject: [PATCH 09/17] Allow slides to automatically unblank when added to live Fixes: https://launchpad.net/bugs/735367 --- openlp/core/ui/generaltab.py | 9 +++++++++ openlp/core/ui/maindisplay.py | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index eabccd301..344f0b702 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -105,6 +105,9 @@ class GeneralTab(SettingsTab): self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox) self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox') self.settingsLayout.addRow(self.saveCheckServiceCheckBox) + self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox') + self.settingsLayout.addRow(self.autoUnblankCheckBox) self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') self.settingsLayout.addRow(self.autoPreviewCheckBox) @@ -224,6 +227,8 @@ class GeneralTab(SettingsTab): translate('OpenLP.GeneralTab', 'Application Settings')) self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab', 'Prompt to save before starting a new service')) + self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', + 'Unblank display when adding new live item')) self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service')) self.timeoutLabel.setText(translate('OpenLP.GeneralTab', @@ -262,6 +267,8 @@ class GeneralTab(SettingsTab): u'songselect password', QtCore.QVariant(u'')).toString())) self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt', QtCore.QVariant(False)).toBool()) + self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', + QtCore.QVariant(False)).toBool()) self.monitorComboBox.setCurrentIndex(self.monitorNumber) self.displayOnMonitorCheck.setChecked(self.screens.display) self.warningCheckBox.setChecked(settings.value(u'blank warning', @@ -312,6 +319,8 @@ class GeneralTab(SettingsTab): QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked())) settings.setValue(u'save prompt', QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked())) + settings.setValue(u'auto unblank', + QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) settings.setValue(u'auto preview', QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) settings.setValue(u'loop delay', diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 1153917a2..44c0e2b41 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -489,7 +489,11 @@ class MainDisplay(DisplayWidget): self.footer(serviceItem.foot_text) # if was hidden keep it hidden if self.hideMode and self.isLive: - self.hideDisplay(self.hideMode) + if QtCore.QSettings().value(u'general/auto unblank', + QtCore.QVariant(False)).toBool(): + Receiver.send_message(u'slidecontroller_live_unblank') + else: + self.hideDisplay(self.hideMode) # display hidden for video end we have a new item so must be shown if self.videoHide and self.isLive: self.videoHide = False From 2de02a0c76738482c3ab5a17b64932b5e5bb1161 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 25 Mar 2011 06:13:42 +0000 Subject: [PATCH 10/17] Fix up verse selection correctly. --- openlp/core/ui/servicemanager.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index eeb18cb46..8d0f9df9c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -231,7 +231,7 @@ class ServiceManager(QtGui.QWidget): QtCore.QObject.connect(self.themeComboBox, QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected) QtCore.QObject.connect(self.serviceManagerList, - QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.makeLive) + QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onMakeLive) QtCore.QObject.connect(self.serviceManagerList, QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed) QtCore.QObject.connect(self.serviceManagerList, @@ -1088,12 +1088,20 @@ class ServiceManager(QtGui.QWidget): else: return self.serviceItems[item][u'service_item'] + def onMakeLive(self): + """ + Send the current item to the Live slide controller but triggered + by a tablewidget click event. + """ + self.makeLive() + def makeLive(self, row=-1): """ Send the current item to the Live slide controller ``row`` - Row number to be displayed if from preview + Row number to be displayed if from preview. + -1 is passed if the value is not set """ item, child = self.findServiceItem() if row != -1: From f19baafb9c5166460c75b161f887d479eea25c69 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Mar 2011 13:45:24 +0000 Subject: [PATCH 11/17] Block 2 Instances of OpenLp running at the same time. Fixes: https://launchpad.net/bugs/742122 --- openlp.pyw | 22 ++++++++++++++++++++++ openlp/core/lib/ui.py | 1 + 2 files changed, 23 insertions(+) diff --git a/openlp.pyw b/openlp.pyw index 572f46934..7d44deaa6 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -34,6 +34,7 @@ from subprocess import Popen, PIPE from PyQt4 import QtCore, QtGui from openlp.core.lib import Receiver, check_directory_exists +from openlp.core.lib.ui import UiStrings from openlp.core.resources import qInitResources from openlp.core.ui.mainwindow import MainWindow from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm @@ -151,6 +152,13 @@ class OpenLP(QtGui.QApplication): log.info(u'Openlp version %s' % app_version[u'version']) return app_version + def exec_(self): + """ + Override exec method to allow the shared memory to be released on exit + """ + QtGui.QApplication.exec_() + self.sharedMemory.detach() + def run(self): """ Run the OpenLP application. @@ -201,6 +209,17 @@ class OpenLP(QtGui.QApplication): VersionThread(self.mainWindow, app_version).start() return self.exec_() + def isAlreadyRunning(self): + self.sharedMemory = QtCore.QSharedMemory('OpenLP') + if self.sharedMemory.attach(): + QtGui.QMessageBox.critical(None, + UiStrings.Error, UiStrings.OpenLPStart, + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + return True + else: + self.sharedMemory.create(1) + return False + def hookException(self, exctype, value, traceback): if not hasattr(self, u'mainWindow'): log.exception(''.join(format_exception(exctype, value, traceback))) @@ -275,6 +294,9 @@ def main(): app = OpenLP(qt_args) # Define the settings environment settings = QtCore.QSettings(u'OpenLP', u'OpenLP') + # Instance check + if app.isAlreadyRunning(): + sys.exit() # First time checks in settings # Use explicit reference as not inside a QT environment yet if not settings.value(u'general/has run wizard', diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index a503d7ef6..ad5b796d7 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -75,6 +75,7 @@ class UiStrings(object): NISp = translate('OpenLP.Ui', 'No Items Selected', 'Plural') OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x') OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0') + OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running') OpenService = translate('OpenLP.Ui', 'Open Service') Preview = translate('OpenLP.Ui', 'Preview') PreviewPanel = translate('OpenLP.Ui', 'Preview Panel') From dce9a73153310b4c863ec16114bb19ca18d45c54 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Mar 2011 19:34:01 +0000 Subject: [PATCH 12/17] Add Yes / No to Error Message --- openlp.pyw | 9 ++++++--- openlp/core/lib/ui.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 693b7aa0b..f5cb93ea7 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -133,10 +133,13 @@ class OpenLP(QtGui.QApplication): def isAlreadyRunning(self): self.sharedMemory = QtCore.QSharedMemory('OpenLP') if self.sharedMemory.attach(): - QtGui.QMessageBox.critical(None, + status = QtGui.QMessageBox.critical(None, UiStrings.Error, UiStrings.OpenLPStart, - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) - return True + QtGui.QMessageBox.StandardButtons( + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)) + if status == QtGui.QMessageBox.No: + return True + return False else: self.sharedMemory.create(1) return False diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 6c9281f11..9f26f4056 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -76,7 +76,8 @@ class UiStrings(object): NISp = translate('OpenLP.Ui', 'No Items Selected', 'Plural') OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x') OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0') - OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running') + OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you ' + 'wish continue.') OpenService = translate('OpenLP.Ui', 'Open Service') Preview = translate('OpenLP.Ui', 'Preview') PreviewPanel = translate('OpenLP.Ui', 'Preview Panel') From 70ca844473ef5d4dd0012519d772ef989364c869 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Mar 2011 19:50:15 +0000 Subject: [PATCH 13/17] Fix comments and errors --- openlp.pyw | 4 ++++ openlp/core/lib/ui.py | 8 ++++---- openlp/core/ui/slidecontroller.py | 2 +- openlp/core/ui/starttimedialog.py | 12 ++++++------ openlp/core/ui/starttimeform.py | 6 +++--- openlp/plugins/alerts/lib/alertstab.py | 2 +- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index f5cb93ea7..07e987842 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -131,6 +131,10 @@ class OpenLP(QtGui.QApplication): return self.exec_() def isAlreadyRunning(self): + """ + Look to see if OpenLP is already running and ask if a 2nd copy + is to be started. + """ self.sharedMemory = QtCore.QSharedMemory('OpenLP') if self.sharedMemory.attach(): status = QtGui.QMessageBox.critical(None, diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 9f26f4056..6aa610d09 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -57,7 +57,7 @@ class UiStrings(object): Export = translate('OpenLP.Ui', 'Export') FontSizePtUnit = translate('OpenLP.Ui', 'pt', 'Abbreviated font pointsize unit') - H = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours') + Hours = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours') Image = translate('OpenLP.Ui', 'Image') Import = translate('OpenLP.Ui', 'Import') LengthTime = unicode(translate('OpenLP.Ui', 'Length %s')) @@ -65,7 +65,7 @@ class UiStrings(object): LiveBGError = translate('OpenLP.Ui', 'Live Background Error') LivePanel = translate('OpenLP.Ui', 'Live Panel') Load = translate('OpenLP.Ui', 'Load') - M = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes') + Minutes = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes') Middle = translate('OpenLP.Ui', 'Middle') New = translate('OpenLP.Ui', 'New') NewService = translate('OpenLP.Ui', 'New Service') @@ -77,7 +77,7 @@ class UiStrings(object): OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x') OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0') OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you ' - 'wish continue.') + 'wish to continue.') OpenService = translate('OpenLP.Ui', 'Open Service') Preview = translate('OpenLP.Ui', 'Preview') PreviewPanel = translate('OpenLP.Ui', 'Preview Panel') @@ -86,7 +86,7 @@ class UiStrings(object): ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background') ResetBG = translate('OpenLP.Ui', 'Reset Background') ResetLiveBG = translate('OpenLP.Ui', 'Reset Live Background') - S = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds') + Seconds = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds') SaveAndPreview = translate('OpenLP.Ui', 'Save && Preview') Search = translate('OpenLP.Ui', 'Search') SelectDelete = translate('OpenLP.Ui', 'You must select an item to delete.') diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ccc81e4b3..232653326 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -185,7 +185,7 @@ class SlideController(QtGui.QWidget): self.delaySpinBox.setMinimum(1) self.delaySpinBox.setMaximum(180) self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) - self.delaySpinBox.setSuffix(UiStrings.S) + self.delaySpinBox.setSuffix(UiStrings.Seconds) self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', 'Delay between slides in seconds')) else: diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index c490a8a33..76690f686 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -95,12 +95,12 @@ class Ui_StartTimeDialog(object): def retranslateUi(self, StartTimeDialog): self.setWindowTitle(translate('OpenLP.StartTimeForm', 'Item Start and Fnish Time')) - self.hourSpinBox.setSuffix(UiStrings.H) - self.minuteSpinBox.setSuffix(UiStrings.M) - self.secondSpinBox.setSuffix(UiStrings.S) - self.hourFinishSpinBox.setSuffix(UiStrings.H) - self.minuteFinishSpinBox.setSuffix(UiStrings.M) - self.secondFinishSpinBox.setSuffix(UiStrings.S) + self.hourSpinBox.setSuffix(UiStrings.Hours) + self.minuteSpinBox.setSuffix(UiStrings.Minutes) + self.secondSpinBox.setSuffix(UiStrings.Seconds) + self.hourFinishSpinBox.setSuffix(UiStrings.Hours) + self.minuteFinishSpinBox.setSuffix(UiStrings.Minutes) + self.secondFinishSpinBox.setSuffix(UiStrings.Seconds) self.hourLabel.setText(translate('OpenLP.StartTimeForm', 'Hours:')) self.minuteLabel.setText(translate('OpenLP.StartTimeForm', 'Minutes:')) self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:')) diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 89ece34c6..a30dd3b8e 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -53,11 +53,11 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog): self.hourFinishSpinBox.setValue(hours) self.minuteFinishSpinBox.setValue(minutes) self.secondFinishSpinBox.setValue(seconds) - self.hourFinishLabel.setText(u'%s%s' % (unicode(hour), UiStrings.H)) + self.hourFinishLabel.setText(u'%s%s' % (unicode(hour), UiStrings.Hours)) self.minuteFinishLabel.setText(u'%s%s' % - (unicode(minutes), UiStrings.M)) + (unicode(minutes), UiStrings.Minutes)) self.secondFinishLabel.setText(u'%s%s' % - (unicode(seconds), UiStrings.S)) + (unicode(seconds), UiStrings.Seconds)) return QtGui.QDialog.exec_(self) def accept(self): diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 698cbfa2a..64a9801ca 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -112,7 +112,7 @@ class AlertsTab(SettingsTab): self.FontSizeSpinBox.setSuffix(UiStrings.FontSizePtUnit) self.TimeoutLabel.setText( translate('AlertsPlugin.AlertsTab', 'Alert timeout:')) - self.TimeoutSpinBox.setSuffix(UiStrings.S) + self.TimeoutSpinBox.setSuffix(UiStrings.Seconds) self.PreviewGroupBox.setTitle(UiStrings.Preview) self.FontPreview.setText(UiStrings.OLPV2) From fef89e7b8dc01e70ccec59051ed121b35f3e3ae8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Mar 2011 20:10:12 +0000 Subject: [PATCH 14/17] Add Spinbox limis --- openlp/core/ui/starttimedialog.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 76690f686..7597341f1 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -52,9 +52,13 @@ class Ui_StartTimeDialog(object): self.dialogLayout.addWidget(self.hourLabel, 1, 0, 1, 1) self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog) self.hourSpinBox.setObjectName(u'hourSpinBox') + self.hourSpinBox.setMinimum(0) + self.hourSpinBox.setMaximum(4) self.dialogLayout.addWidget(self.hourSpinBox, 1, 1, 1, 1) self.hourFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) self.hourFinishSpinBox.setObjectName(u'hourFinishSpinBox') + self.hourFinishSpinBox.setMinimum(0) + self.hourFinishSpinBox.setMaximum(4) self.dialogLayout.addWidget(self.hourFinishSpinBox, 1, 2, 1, 1) self.hourFinishLabel = QtGui.QLabel(StartTimeDialog) self.hourFinishLabel.setObjectName(u'hourLabel') @@ -65,9 +69,13 @@ class Ui_StartTimeDialog(object): self.dialogLayout.addWidget(self.minuteLabel, 2, 0, 1, 1) self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog) self.minuteSpinBox.setObjectName(u'minuteSpinBox') + self.minuteSpinBox.setMinimum(0) + self.minuteSpinBox.setMaximum(59) self.dialogLayout.addWidget(self.minuteSpinBox, 2, 1, 1, 1) self.minuteFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) self.minuteFinishSpinBox.setObjectName(u'minuteFinishSpinBox') + self.minuteFinishSpinBox.setMinimum(0) + self.minuteFinishSpinBox.setMaximum(59) self.dialogLayout.addWidget(self.minuteFinishSpinBox, 2, 2, 1, 1) self.minuteFinishLabel = QtGui.QLabel(StartTimeDialog) self.minuteFinishLabel.setObjectName(u'minuteLabel') @@ -78,8 +86,12 @@ class Ui_StartTimeDialog(object): self.dialogLayout.addWidget(self.secondLabel, 3, 0, 1, 1) self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog) self.secondSpinBox.setObjectName(u'secondSpinBox') + self.secondSpinBox.setMinimum(0) + self.secondSpinBox.setMaximum(59) self.secondFinishSpinBox = QtGui.QSpinBox(StartTimeDialog) self.secondFinishSpinBox.setObjectName(u'secondFinishSpinBox') + self.secondFinishSpinBox.setMinimum(0) + self.secondFinishSpinBox.setMaximum(59) self.dialogLayout.addWidget(self.secondFinishSpinBox, 3, 2, 1, 1) self.secondFinishLabel = QtGui.QLabel(StartTimeDialog) self.secondFinishLabel.setObjectName(u'secondLabel') From 7cf329422b1e325fc75c42bb1a19ec6414dec68d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Mar 2011 20:28:05 +0000 Subject: [PATCH 15/17] Fix minor errors --- openlp.pyw | 2 -- openlp/core/ui/starttimedialog.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 07e987842..b8c16c585 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -220,8 +220,6 @@ def main(): qInitResources() # Now create and actually run the application. app = OpenLP(qt_args) - # Define the settings environment - settings = QtCore.QSettings(u'OpenLP', u'OpenLP') # Instance check if app.isAlreadyRunning(): sys.exit() diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 7597341f1..be34b765e 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -106,7 +106,7 @@ class Ui_StartTimeDialog(object): def retranslateUi(self, StartTimeDialog): self.setWindowTitle(translate('OpenLP.StartTimeForm', - 'Item Start and Fnish Time')) + 'Item Start and Finish Time')) self.hourSpinBox.setSuffix(UiStrings.Hours) self.minuteSpinBox.setSuffix(UiStrings.Minutes) self.secondSpinBox.setSuffix(UiStrings.Seconds) From fc3f35f0f905a9d6cad02850b0ce4a3c02c07503 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 27 Mar 2011 17:30:40 +0100 Subject: [PATCH 16/17] Question mark --- openlp/core/lib/rendermanager.py | 1 + openlp/core/lib/ui.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 65f2b355c..a93b5d90e 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -242,6 +242,7 @@ class RenderManager(object): Add line endings after each line of text used for bibles. """ log.debug(u'format slide') + print words return self.renderer.format_slide(words, line_break, self.force_page) def calculate_default(self, screen): diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 6aa610d09..c1a9f8b35 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -77,7 +77,7 @@ class UiStrings(object): OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x') OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0') OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you ' - 'wish to continue.') + 'wish to continue?') OpenService = translate('OpenLP.Ui', 'Open Service') Preview = translate('OpenLP.Ui', 'Preview') PreviewPanel = translate('OpenLP.Ui', 'Preview Panel') From d3e2fe79e9a0506d6be5e3d0aed4136167657a50 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 27 Mar 2011 17:39:04 +0100 Subject: [PATCH 17/17] wot not print --- openlp/core/lib/rendermanager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index a93b5d90e..65f2b355c 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -242,7 +242,6 @@ class RenderManager(object): Add line endings after each line of text used for bibles. """ log.debug(u'format slide') - print words return self.renderer.format_slide(words, line_break, self.force_page) def calculate_default(self, screen):