From e5d97d17d965ceea37daac041e1eba316c000150 Mon Sep 17 00:00:00 2001 From: Maikel Stuivenberg Date: Fri, 18 Sep 2009 11:03:04 +0200 Subject: [PATCH 1/3] Fix for the File Menu --- openlp/core/ui/mainwindow.py | 8 ++++++++ openlp/core/ui/servicemanager.py | 20 ++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 67644643b..fa68c659b 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -519,6 +519,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'update_global_theme'), self.defaultThemeChanged) + QtCore.QObject.connect(self.FileNewItem, + QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onNewService) + QtCore.QObject.connect(self.FileOpenItem, + QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onLoadService) + QtCore.QObject.connect(self.FileSaveItem, + QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onQuickSaveService) + QtCore.QObject.connect(self.FileSaveAsItem, + QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onSaveService) #warning cyclic dependency #RenderManager needs to call ThemeManager and #ThemeManager needs to call RenderManager diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index ab112e758..8ef70dad3 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -361,21 +361,28 @@ class ServiceManager(QtGui.QWidget): if serviceItem == itemcount and serviceItemCount == count: self.ServiceManagerList.setCurrentItem(treewidgetitem1) - def onSaveService(self): + def onSaveService(self, quick=False): """ Save the current service in a zip file This file contains * An ood which is a pickle of the service items * All image, presentation and video files needed to run the service. """ - filename = QtGui.QFileDialog.getSaveFileName(self, + + if not quick: + filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() ) + else: + filename = self.config.get_last_dir() + splittedFile = filename.split(u'.') + if splittedFile[-1] != u'oos': + filename = filename + u'.oos' filename = unicode(filename) if filename != u'': self.config.set_last_dir(filename) service = [] servicefile= filename + u'.ood' - zip = zipfile.ZipFile(unicode(filename) + u'.oos', 'w') + zip = zipfile.ZipFile(unicode(filename), 'w') for item in self.serviceItems: service.append({u'serviceitem':item[u'data'].get_oos_repr()}) if item[u'data'].service_item_type == ServiceType.Image or \ @@ -393,7 +400,12 @@ class ServiceManager(QtGui.QWidget): os.remove(servicefile) except: pass #if not present do not worry - self.parent.OosChanged(True, filename + u'.oos') + name = filename.split(os.path.sep) + self.serviceName = name[-1] + self.parent.OosChanged(True, self.serviceName) + + def onQuickSaveService(self): + self.onSaveService(True) def onLoadService(self): """ From 9d6ac4cd1b973f50d6e5165af45d94a1e06abfe4 Mon Sep 17 00:00:00 2001 From: Maikel Stuivenberg Date: Fri, 18 Sep 2009 15:32:40 +0200 Subject: [PATCH 2/3] small fix for quick save --- openlp/core/ui/servicemanager.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 8ef70dad3..1e1a192a5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -100,6 +100,7 @@ class ServiceManager(QtGui.QWidget): self.parent = parent self.serviceItems = [] self.serviceName = u'' + self.isNew = True self.Layout = QtGui.QVBoxLayout(self) self.Layout.setSpacing(0) self.Layout.setMargin(0) @@ -319,6 +320,7 @@ class ServiceManager(QtGui.QWidget): self.ServiceManagerList.clear() self.serviceItems = [] self.serviceName = u'' + self.isNew = True self.parent.OosChanged(True, self.serviceName) def onDeleteFromService(self): @@ -369,7 +371,7 @@ class ServiceManager(QtGui.QWidget): * All image, presentation and video files needed to run the service. """ - if not quick: + if not quick or self.isNew: filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() ) else: @@ -379,6 +381,7 @@ class ServiceManager(QtGui.QWidget): filename = filename + u'.oos' filename = unicode(filename) if filename != u'': + self.isNew = False self.config.set_last_dir(filename) service = [] servicefile= filename + u'.ood' @@ -424,6 +427,7 @@ class ServiceManager(QtGui.QWidget): zip = zipfile.ZipFile(unicode(filename)) filexml = None themename = None + self.isNew = False for file in zip.namelist(): names = file.split(os.path.sep) file_to = os.path.join(self.servicePath, From 3bb458e4e1e419fe9cad52a4e3ac988df3648814 Mon Sep 17 00:00:00 2001 From: Maikel Stuivenberg Date: Fri, 18 Sep 2009 15:45:07 +0200 Subject: [PATCH 3/3] Another save fix.. --- openlp/core/ui/servicemanager.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 1e1a192a5..e0d63f170 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -370,17 +370,16 @@ class ServiceManager(QtGui.QWidget): * An ood which is a pickle of the service items * All image, presentation and video files needed to run the service. """ - if not quick or self.isNew: filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() ) else: filename = self.config.get_last_dir() - splittedFile = filename.split(u'.') - if splittedFile[-1] != u'oos': - filename = filename + u'.oos' - filename = unicode(filename) if filename != u'': + splittedFile = filename.split(u'.') + if splittedFile[-1] != u'oos': + filename = filename + u'.oos' + filename = unicode(filename) self.isNew = False self.config.set_last_dir(filename) service = [] @@ -427,7 +426,7 @@ class ServiceManager(QtGui.QWidget): zip = zipfile.ZipFile(unicode(filename)) filexml = None themename = None - self.isNew = False + for file in zip.namelist(): names = file.split(os.path.sep) file_to = os.path.join(self.servicePath, @@ -455,6 +454,7 @@ class ServiceManager(QtGui.QWidget): except: log.error(u'Problem processing oos load %s', sys.exc_info()[0]) pass + self.isNew = False self.serviceName = name[len(name) - 1] self.parent.OosChanged(True, self.serviceName)