openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #05169
[Merge] lp:~raoul-snyman/openlp/save-service into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/save-service into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/save-service/+merge/44968
Fix the save/save as/etc stuff so that it works properly.
--
https://code.launchpad.net/~raoul-snyman/openlp/save-service/+merge/44968
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/save-service into lp:openlp.
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2010-12-31 08:06:42 +0000
+++ openlp/core/ui/mainwindow.py 2010-12-31 21:51:58 +0000
@@ -582,16 +582,16 @@
QtCore.QObject.connect(self.SettingsShortcutsItem,
QtCore.SIGNAL(u'triggered()'), self.onSettingsShortcutsItemClicked)
QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onNewService)
+ self.ServiceManagerContents.onNewServiceClicked)
QtCore.QObject.connect(self.FileOpenItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onLoadService)
+ self.ServiceManagerContents.onLoadServiceClicked)
QtCore.QObject.connect(self.FileSaveItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onQuickSaveService)
+ self.ServiceManagerContents.onSaveServiceClicked)
QtCore.QObject.connect(self.FileSaveAsItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onSaveService)
+ self.ServiceManagerContents.onSaveServiceAsClicked)
# i18n set signals for languages
QtCore.QObject.connect(self.AutoLanguageItem,
QtCore.SIGNAL(u'toggled(bool)'), self.setAutoLanguage)
@@ -691,7 +691,8 @@
if QtCore.QSettings().value(
self.generalSettingsSection + u'/auto open',
QtCore.QVariant(False)).toBool():
- self.ServiceManagerContents.onLoadService(True)
+ #self.ServiceManagerContents.onLoadService(True)
+ self.ServiceManagerContents.loadLastFile()
view_mode = QtCore.QSettings().value(u'%s/view mode' % \
self.generalSettingsSection, u'default')
if view_mode == u'default':
@@ -812,7 +813,7 @@
"""
Hook to close the main window and display windows on exit
"""
- if self.serviceNotSaved:
+ if self.ServiceManagerContents.isModified():
ret = QtGui.QMessageBox.question(self,
translate('OpenLP.MainWindow', 'Save Changes to Service?'),
translate('OpenLP.MainWindow', 'Your service has changed. '
@@ -823,9 +824,12 @@
QtGui.QMessageBox.Save),
QtGui.QMessageBox.Save)
if ret == QtGui.QMessageBox.Save:
- self.ServiceManagerContents.onSaveService(True)
- self.cleanUp()
- event.accept()
+ #self.ServiceManagerContents.onSaveService(True)
+ if self.ServiceManagerContents.saveFile():
+ self.cleanUp()
+ event.accept()
+ else:
+ event.ignore()
elif ret == QtGui.QMessageBox.Discard:
self.cleanUp()
event.accept()
@@ -885,6 +889,23 @@
title = u'%s - %s*' % (self.mainTitle, service_name)
self.setWindowTitle(title)
+ def setServiceModified(self, modified, fileName):
+ """
+ This method is called from the ServiceManager to set the title of the
+ main window.
+
+ ``modified``
+ Whether or not this service has been modified.
+
+ ``fileName``
+ The file name of the service file.
+ """
+ if modified:
+ title = u'%s - %s*' % (self.mainTitle, fileName)
+ else:
+ title = u'%s - %s' % (self.mainTitle, fileName)
+ self.setWindowTitle(title)
+
def showStatusMessage(self, message):
self.StatusBar.showMessage(message)
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2010-12-26 11:04:47 +0000
+++ openlp/core/ui/servicemanager.py 2010-12-31 21:51:58 +0000
@@ -37,7 +37,7 @@
Receiver, build_icon, ItemCapabilities, SettingsManager, translate, \
ThemeLevel
from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm
-from openlp.core.utils import AppLocation
+from openlp.core.utils import AppLocation, split_filename
class ServiceManagerList(QtGui.QTreeWidget):
"""
@@ -90,6 +90,7 @@
mimeData.setText(u'ServiceManager')
drag.start(QtCore.Qt.CopyAction)
+
class ServiceManager(QtGui.QWidget):
"""
Manages the services. This involves taking text strings from plugins and
@@ -101,15 +102,16 @@
"""
Sets up the service manager, toolbars, list view, et al.
"""
- QtGui.QWidget.__init__(self)
+ QtGui.QWidget.__init__(self, parent)
self.parent = parent
self.serviceItems = []
self.serviceName = u''
self.suffixes = []
- self.droppos = 0
+ self.dropPosition = 0
self.expandTabs = False
#is a new service and has not been saved
- self.isNew = True
+ self._modified = False
+ self._fileName = u''
self.serviceNoteForm = ServiceNoteForm(self.parent)
self.serviceItemEditForm = ServiceItemEditForm(self.parent)
#start with the layout
@@ -123,17 +125,17 @@
translate('OpenLP.ServiceManager', 'New Service'),
u':/general/general_new.png',
translate('OpenLP.ServiceManager', 'Create a new service'),
- self.onNewService)
+ self.onNewServiceClicked)
self.toolbar.addToolbarButton(
translate('OpenLP.ServiceManager', 'Open Service'),
u':/general/general_open.png',
translate('OpenLP.ServiceManager', 'Load an existing service'),
- self.onLoadService)
+ self.onLoadServiceClicked)
self.toolbar.addToolbarButton(
translate('OpenLP.ServiceManager', 'Save Service'),
u':/general/general_save.png',
translate('OpenLP.ServiceManager', 'Save this service'),
- self.onQuickSaveService)
+ self.onSaveServiceClicked)
self.toolbar.addSeparator()
self.themeLabel = QtGui.QLabel(translate('OpenLP.ServiceManager',
'Theme:'), self)
@@ -282,6 +284,40 @@
self.menu.addMenu(self.themeMenu)
self.configUpdated(True)
+ def setModified(self, modified=True):
+ """
+ Setter for property "modified". Sets whether or not the current service
+ has been modified.
+ """
+ self._modified = modified
+ serviceFile = self.shortFileName() or u'Untitled Service'
+ self.parent.setServiceModified(modified, serviceFile)
+
+ def isModified(self):
+ """
+ Getter for boolean property "modified".
+ """
+ return self._modified
+
+ def setFileName(self, fileName):
+ """
+ Setter for service file.
+ """
+ self._fileName = unicode(fileName)
+ self.parent.setServiceModified(self.isModified, self.shortFileName())
+
+ def fileName(self):
+ """
+ Return the current file name including path.
+ """
+ return self._fileName
+
+ def shortFileName(self):
+ """
+ Return the current file name, excluding the path.
+ """
+ return split_filename(self._fileName)[1]
+
def configUpdated(self, firstTime=False):
"""
Triggered when Config dialog is updated.
@@ -295,6 +331,201 @@
def supportedSuffixes(self, suffix):
self.suffixes.append(suffix)
+ def onNewServiceClicked(self):
+ """
+ Create a new service.
+ """
+ if self.isModified():
+ result = QtGui.QMessageBox.question(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Changes'),
+ translate('OpenLP.ServiceManager', 'The current service has '
+ 'been modified, would you like to save it?'),
+ QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard |
+ QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save)
+ if result == QtGui.QMessageBox.Cancel:
+ return False
+ elif result == QtGui.QMessageBox.Save:
+ if not self.saveFile():
+ return False
+ self.serviceManagerList.clear()
+ self.serviceItems = []
+ self.setFileName(u'')
+ self.setModified(False)
+
+ def onLoadServiceClicked(self):
+ if self.isModified():
+ result = QtGui.QMessageBox.question(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Changes'),
+ translate('OpenLP.ServiceManager', 'The current service has '
+ 'been modified, would you like to save it?'),
+ QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard |
+ QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save)
+ if result == QtGui.QMessageBox.Cancel:
+ return False
+ elif result == QtGui.QMessageBox.Save:
+ self.saveFile()
+ fileName = unicode(QtGui.QFileDialog.getOpenFileName(self.parent,
+ translate('OpenLP.ServiceManager', 'Open File'),
+ SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
+ translate('OpenLP.ServiceManager',
+ 'OpenLP Service Files (*.osz) (*.osz)')))
+ if not fileName:
+ return False
+ SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
+ split_filename(fileName)[0])
+ self.loadFile(fileName)
+
+ def onSaveServiceClicked(self):
+ self.saveFile()
+
+ def onSaveServiceAsClicked(self):
+ self.saveFileAs()
+
+ def saveFile(self):
+ """
+ Save the current Service file.
+ """
+ if not self.fileName():
+ return self.saveFileAs()
+ else:
+ fileName = self.fileName()
+ log.debug(u'ServiceManager.saveFile - %s' % fileName)
+ SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
+ split_filename(fileName)[0])
+ service = []
+ serviceFileName = fileName.replace(u'.osz', u'.osd')
+ zip = None
+ file = None
+ try:
+ write_list = []
+ zip = zipfile.ZipFile(unicode(fileName), 'w')
+ for item in self.serviceItems:
+ service.append({u'serviceitem': \
+ item[u'service_item'].get_service_repr()})
+ if item[u'service_item'].uses_file():
+ for frame in item[u'service_item'].get_frames():
+ if item[u'service_item'].is_image():
+ path_from = frame[u'path']
+ else:
+ path_from = unicode(os.path.join(
+ frame[u'path'],
+ frame[u'title']))
+ # On write a file once
+ if not path_from in write_list:
+ write_list.append(path_from)
+ zip.write(path_from.encode(u'utf-8'))
+ file = open(serviceFileName, u'wb')
+ cPickle.dump(service, file)
+ file.close()
+ zip.write(serviceFileName.encode(u'utf-8'))
+ except IOError:
+ log.exception(u'Failed to save service to disk')
+ finally:
+ if file:
+ file.close()
+ if zip:
+ zip.close()
+ try:
+ os.remove(serviceFileName)
+ except (IOError, OSError):
+ # if not present do not worry
+ pass
+ self.parent.addRecentFile(fileName)
+ self.setModified(False)
+ return True
+
+ def saveFileAs(self):
+ """
+ Get a file name and then call :function:`ServiceManager.saveFile` to
+ save the file.
+ """
+ fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Service'),
+ SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
+ translate('OpenLP.ServiceManager',
+ 'OpenLP Service Files (*.osz) (*.osz)')))
+ if not fileName:
+ return False
+ if os.path.splitext(fileName)[1] == u'':
+ fileName += u'.osz'
+ else:
+ ext = os.path.splitext(fileName)[1]
+ fileName.replace(ext, u'.osz')
+ self.setFileName(fileName)
+ return self.saveFile()
+
+ def loadFile(self, fileName):
+ if not fileName:
+ return False
+ zip = None
+ fileTo = None
+ try:
+ zip = zipfile.ZipFile(unicode(fileName))
+ for file in zip.namelist():
+ try:
+ ucsfile = file.decode(u'utf-8')
+ except UnicodeDecodeError:
+ QtGui.QMessageBox.critical(
+ self, translate('OpenLP.ServiceManager', 'Error'),
+ translate('OpenLP.ServiceManager',
+ 'File is not a valid service.\n'
+ 'The content encoding is not UTF-8.'))
+ log.exception(u'Filename "%s" is not valid UTF-8' %
+ file.decode(u'utf-8', u'replace'))
+ continue
+ osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
+ filePath = os.path.join(self.servicePath,
+ split_filename(osfile)[1])
+ fileTo = open(filePath, u'wb')
+ fileTo.write(zip.read(file))
+ fileTo.flush()
+ fileTo.close()
+ if file_path.endswith(u'osd'):
+ p_file = file_path
+ if 'p_file' in locals():
+ fileTo = open(p_file, u'r')
+ items = cPickle.load(fileTo)
+ fileTo.close()
+ self.onNewService()
+ for item in items:
+ serviceItem = ServiceItem()
+ serviceItem.render_manager = self.parent.renderManager
+ serviceItem.set_from_service(item, self.servicePath)
+ self.validateItem(serviceItem)
+ self.addServiceItem(serviceItem)
+ if serviceItem.is_capable(
+ ItemCapabilities.OnLoadUpdate):
+ Receiver.send_message(u'%s_service_load' %
+ serviceItem.name.lower(), serviceItem)
+ try:
+ if os.path.isfile(p_file):
+ os.remove(p_file)
+ except (IOError, OSError):
+ log.exception(u'Failed to remove osd file')
+ else:
+ QtGui.QMessageBox.critical(
+ self, translate('OpenLP.ServiceManager', 'Error'),
+ translate('OpenLP.ServiceManager',
+ 'File is not a valid service.'))
+ log.exception(u'File contains no service data')
+ except (IOError, NameError):
+ log.exception(u'Problem loading a service file')
+ finally:
+ if fileTo:
+ fileTo.close()
+ if zip:
+ zip.close()
+ self.setFileName(fileName)
+ self.parent.addRecentFile(fileName)
+ self.setModified(False)
+ # Refresh Plugin lists
+ Receiver.send_message(u'plugin_list_refresh')
+
+ def loadLastFile(self):
+ if not self.parent.recentFiles:
+ return
+ self.loadFile(self.parent.recentFiles[0])
+
def contextMenu(self, point):
item = self.serviceManagerList.itemAt(point)
if item is None:
@@ -427,6 +658,7 @@
# Top Item was selected so set the last one
if setLastItem:
lastItem.setSelected(True)
+ self.isModified = True
def onMoveSelectionDown(self):
"""
@@ -449,6 +681,7 @@
serviceIterator += 1
if setSelected:
firstItem.setSelected(True)
+ self.isModified = True
def onCollapseAll(self):
"""
@@ -492,7 +725,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(0, temp)
self.repaintServiceList(0, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.isModified = True
def onServiceUp(self):
"""
@@ -505,7 +738,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item - 1, temp)
self.repaintServiceList(item - 1, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def onServiceDown(self):
"""
@@ -518,7 +751,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item + 1, temp)
self.repaintServiceList(item + 1, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def onServiceEnd(self):
"""
@@ -530,30 +763,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(len(self.serviceItems), temp)
self.repaintServiceList(len(self.serviceItems) - 1, count)
- self.parent.serviceChanged(False, self.serviceName)
-
- def onNewService(self):
- """
- Clear the list to create a new service
- """
- if self.parent.serviceNotSaved and QtCore.QSettings().value(
- self.parent.generalSettingsSection + u'/save prompt',
- QtCore.QVariant(False)).toBool():
- ret = QtGui.QMessageBox.question(self,
- translate('OpenLP.ServiceManager', 'Save Changes to Service?'),
- translate('OpenLP.ServiceManager',
- 'Your service is unsaved, do you want to save '
- 'those changes before creating a new one?'),
- QtGui.QMessageBox.StandardButtons(
- QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Save),
- QtGui.QMessageBox.Save)
- if ret == QtGui.QMessageBox.Save:
- self.onSaveService()
- self.serviceManagerList.clear()
- self.serviceItems = []
- self.serviceName = u''
- self.isNew = True
- self.parent.serviceChanged(True, self.serviceName)
+ self.setModified(True)
def onDeleteFromService(self):
"""
@@ -563,13 +773,19 @@
if item is not -1:
self.serviceItems.remove(self.serviceItems[item])
self.repaintServiceList(0, 0)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def repaintServiceList(self, serviceItem, serviceItemCount):
"""
- Clear the existing service list and prepaint all the items
- Used when moving items as the move takes place in supporting array,
- and when regenerating all the items due to theme changes
+ Clear the existing service list and prepaint all the items. This is
+ used when moving items as the move takes place in a supporting list,
+ and when regenerating all the items due to theme changes.
+
+ ``serviceItem``
+ The item which changed.
+
+ ``serviceItemCount``
+ The number of items in the service.
"""
# Correct order of items in array
count = 1
@@ -615,183 +831,6 @@
item[u'expanded'] = temp
treewidgetitem.setExpanded(item[u'expanded'])
- def onSaveService(self, quick=False):
- """
- Save the current service in a zip (OSZ) file
- This file contains
- * An osd which is a pickle of the service items
- * All image, presentation and video files needed to run the service.
- """
- log.debug(u'onSaveService %s' % quick)
- if not quick or self.isNew:
- filename = QtGui.QFileDialog.getSaveFileName(self,
- translate('OpenLP.ServiceManager', 'Save Service'),
- SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
- translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))
- else:
- filename = os.path.join(SettingsManager.get_last_dir(
- self.parent.serviceSettingsSection), self.serviceName)
- if filename:
- filename = QtCore.QDir.toNativeSeparators(filename)
- splittedFile = filename.split(u'.')
- if splittedFile[-1] != u'osz':
- filename = filename + u'.osz'
- filename = unicode(filename)
- self.isNew = False
- SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
- os.path.split(filename)[0])
- service = []
- servicefile = filename + u'.osd'
- zip = None
- file = None
- try:
- write_list = []
- zip = zipfile.ZipFile(unicode(filename), 'w')
- for item in self.serviceItems:
- service.append({u'serviceitem':item[u'service_item']
- .get_service_repr()})
- if item[u'service_item'].uses_file():
- for frame in item[u'service_item'].get_frames():
- if item[u'service_item'].is_image():
- path_from = frame[u'path']
- else:
- path_from = unicode(os.path.join(
- frame[u'path'],
- frame[u'title']))
- # On write a file once
- if not path_from in write_list:
- write_list.append(path_from)
- zip.write(path_from.encode(u'utf-8'))
- file = open(servicefile, u'wb')
- cPickle.dump(service, file)
- file.close()
- zip.write(servicefile.encode(u'utf-8'))
- except IOError:
- log.exception(u'Failed to save service to disk')
- finally:
- if file:
- file.close()
- if zip:
- zip.close()
- try:
- os.remove(servicefile)
- except (IOError, OSError):
- pass #if not present do not worry
- name = filename.split(os.path.sep)
- self.serviceName = name[-1]
- self.parent.addRecentFile(filename)
- self.parent.serviceChanged(True, self.serviceName)
-
- def onQuickSaveService(self):
- self.onSaveService(True)
-
- def onLoadService(self, lastService=False):
- if lastService:
- if not self.parent.recentFiles:
- return
- filename = self.parent.recentFiles[0]
- else:
- filename = QtGui.QFileDialog.getOpenFileName(
- self, translate('OpenLP.ServiceManager', 'Open Service'),
- SettingsManager.get_last_dir(
- self.parent.serviceSettingsSection), u'Services (*.osz)')
- filename = QtCore.QDir.toNativeSeparators(filename)
- self.loadService(filename)
-
- def loadService(self, filename=None):
- """
- Load an existing service from disk and rebuild the serviceitems. All
- files retrieved from the zip file are placed in a temporary directory
- and will only be used for this service.
- """
- if self.parent.serviceNotSaved:
- ret = QtGui.QMessageBox.question(self,
- translate('OpenLP.ServiceManager', 'Save Changes to Service?'),
- translate('OpenLP.ServiceManager',
- 'Your current service is unsaved, do you want to '
- 'save the changes before opening a new one?'),
- QtGui.QMessageBox.StandardButtons(
- QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
- QtGui.QMessageBox.Save)
- if ret == QtGui.QMessageBox.Save:
- self.onSaveService()
- if filename is None:
- action = self.sender()
- if isinstance(action, QtGui.QAction):
- filename = action.data().toString()
- else:
- return
- filename = unicode(filename)
- name = filename.split(os.path.sep)
- if filename:
- SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
- os.path.split(filename)[0])
- zip = None
- file_to = None
- try:
- zip = zipfile.ZipFile(unicode(filename))
- for file in zip.namelist():
- try:
- ucsfile = file.decode(u'utf-8')
- except UnicodeDecodeError:
- QtGui.QMessageBox.critical(
- self, translate('OpenLP.ServiceManager', 'Error'),
- translate('OpenLP.ServiceManager',
- 'File is not a valid service.\n'
- 'The content encoding is not UTF-8.'))
- log.exception(u'Filename "%s" is not valid UTF-8' %
- file.decode(u'utf-8', u'replace'))
- continue
- osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
- names = osfile.split(os.path.sep)
- file_path = os.path.join(self.servicePath,
- names[len(names) - 1])
- file_to = open(file_path, u'wb')
- file_to.write(zip.read(file))
- file_to.flush()
- file_to.close()
- if file_path.endswith(u'osd'):
- p_file = file_path
- if 'p_file' in locals():
- file_to = open(p_file, u'r')
- items = cPickle.load(file_to)
- file_to.close()
- self.onNewService()
- for item in items:
- serviceitem = ServiceItem()
- serviceitem.render_manager = self.parent.renderManager
- serviceitem.set_from_service(item, self.servicePath)
- self.validateItem(serviceitem)
- self.addServiceItem(serviceitem)
- if serviceitem.is_capable(
- ItemCapabilities.OnLoadUpdate):
- Receiver.send_message(u'%s_service_load' %
- serviceitem.name.lower(), serviceitem)
- try:
- if os.path.isfile(p_file):
- os.remove(p_file)
- except (IOError, OSError):
- log.exception(u'Failed to remove osd file')
- else:
- QtGui.QMessageBox.critical(
- self, translate('OpenLP.ServiceManager', 'Error'),
- translate('OpenLP.ServiceManager',
- 'File is not a valid service.'))
- log.exception(u'File contains no service data')
- except (IOError, NameError):
- log.exception(u'Problem loading a service file')
- finally:
- if file_to:
- file_to.close()
- if zip:
- zip.close()
- self.isNew = False
- self.serviceName = name[len(name) - 1]
- self.parent.addRecentFile(filename)
- self.parent.serviceChanged(True, self.serviceName)
- # Refresh Plugin lists
- Receiver.send_message(u'plugin_list_refresh')
-
def validateItem(self, serviceItem):
"""
Validates the service item and if the suffix matches an accepted
@@ -857,7 +896,7 @@
item[u'service_item'], False, expand=item[u'expanded'])
# Set to False as items may have changed rendering
# does not impact the saved song so True may also be valid
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def serviceItemUpdate(self, message):
"""
@@ -881,7 +920,7 @@
item[u'service_item'] = newItem
self.repaintServiceList(itemcount + 1, 0)
self.parent.liveController.replaceServiceManagerItem(newItem)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def addServiceItem(self, item, rebuild=False, expand=None, replace=False):
"""
@@ -905,7 +944,7 @@
self.parent.liveController.replaceServiceManagerItem(item)
else:
# nothing selected for dnd
- if self.droppos == 0:
+ if self.dropPosition == 0:
if isinstance(item, list):
for inditem in item:
self.serviceItems.append({u'service_item': inditem,
@@ -917,15 +956,15 @@
u'expanded':expand})
self.repaintServiceList(len(self.serviceItems) + 1, 0)
else:
- self.serviceItems.insert(self.droppos, {u'service_item': item,
- u'order': self.droppos,
+ self.serviceItems.insert(self.dropPosition, {u'service_item': item,
+ u'order': self.dropPosition,
u'expanded':expand})
- self.repaintServiceList(self.droppos, 0)
+ self.repaintServiceList(self.dropPosition, 0)
# if rebuilding list make sure live is fixed.
if rebuild:
self.parent.liveController.replaceServiceManagerItem(item)
- self.droppos = 0
- self.parent.serviceChanged(False, self.serviceName)
+ self.dropPosition = 0
+ self.setModified(True)
def makePreview(self):
"""
@@ -1045,7 +1084,7 @@
# we are not over anything so drop
replace = False
if item is None:
- self.droppos = len(self.serviceItems)
+ self.dropPosition = len(self.serviceItems)
else:
# we are over somthing so lets investigate
pos = self._getParentItemData(item) - 1
@@ -1056,14 +1095,14 @@
action = self.dndMenu.exec_(QtGui.QCursor.pos())
# New action required
if action == self.newAction:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
# Append to existing action
if action == self.addToAction:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
item.setSelected(True)
replace = True
else:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
Receiver.send_message(u'%s_add_service_item' % plugin, replace)
def updateThemeList(self, theme_list):
@@ -1119,4 +1158,4 @@
data_item[u'notes'] = unicode(service_item.notes)
data_item[u'selected'] = (item == curitem)
data.append(data_item)
- Receiver.send_message(u'servicemanager_list_response', data)
\ No newline at end of file
+ Receiver.send_message(u'servicemanager_list_response', data)
=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py 2010-12-26 11:04:47 +0000
+++ openlp/core/utils/__init__.py 2010-12-31 21:51:58 +0000
@@ -275,8 +275,15 @@
visible_formats, actual_formats)
return images_filter
+def split_filename(path):
+ path = os.path.abspath(path)
+ if not os.path.isfile(path):
+ return path, u''
+ else:
+ return os.path.split(path)
+
from languagemanager import LanguageManager
from actions import ActionList
__all__ = [u'AppLocation', u'check_latest_version', u'add_actions',
- u'get_filesystem_encoding', u'LanguageManager', u'ActionList']
\ No newline at end of file
+ u'get_filesystem_encoding', u'LanguageManager', u'ActionList']
Follow ups