Merge lp:~trb143/openlp/bitsandbobs into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: not available
Proposed branch: lp:~trb143/openlp/bitsandbobs
Merge into: lp:openlp
Diff against target: 953 lines
18 files modified
openlp.pyw (+2/-1)
openlp/core/lib/dockwidget.py (+0/-5)
openlp/core/lib/mediamanageritem.py (+4/-4)
openlp/core/lib/pluginmanager.py (+1/-1)
openlp/core/lib/settingsmanager.py (+0/-10)
openlp/core/ui/mainwindow.py (+14/-1)
openlp/core/ui/pluginform.py (+5/-1)
openlp/core/ui/servicemanager.py (+45/-17)
openlp/core/ui/settingsform.py (+0/-15)
openlp/core/ui/thememanager.py (+30/-7)
openlp/core/utils/__init__.py (+21/-0)
openlp/plugins/audit/auditplugin.py (+4/-26)
openlp/plugins/audit/forms/auditdeletedialog.py (+4/-4)
openlp/plugins/audit/forms/auditdeleteform.py (+1/-1)
openlp/plugins/audit/forms/auditdetaildialog.py (+7/-3)
openlp/plugins/audit/forms/auditdetailform.py (+38/-199)
resources/forms/auditdeletedialog.ui (+14/-8)
resources/forms/auditdetaildialog.ui (+70/-2)
To merge this branch: bzr merge lp:~trb143/openlp/bitsandbobs
Reviewer Review Type Date Requested Status
Raoul Snyman Approve
Review via email: mp+13200@code.launchpad.net

This proposal supersedes a proposal from 2009-10-11.

To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote : Posted in a previous version of this proposal

New toys:

Fixed Themes so default can be exported
Fixed Plugin list so can_be_disabled works
Fixed up drap and drop in service manager. New items and moving items around
Added version checking at start up once per day only.
Started to clean up Audit a bit.

Revision history for this message
Raoul Snyman (raoul-snyman) wrote : Posted in a previous version of this proposal

Two things...

Firstly, is there a reason for a whole object to check the latest version? Why not just put
a "check_version" function in the utils/__init__.py file?

Secondly, our coding standards say that only Qt-derivative classes should use camelCase method names. For all pure-Python objects, we use under_score method names.

review: Needs Fixing
Revision history for this message
Raoul Snyman (raoul-snyman) wrote : Posted in a previous version of this proposal

Also, there are various other bits and pieces of coding-style fixes.

No spaces between parent, = and None

 def __init__(self, parent = None):

Should be:

 def __init__(self, parent=None):

Even if it's not your code, please fix it when you see it.

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

Looks much better thanks. Just two comments...

1. When wanting to construct a string, rather use string formatting, like so:

    u':' +self.IconPath+u'_new.png'

   becomes

    u':%s_new.png' % self.IconPath

2. Can we rather use Firefox's agent string, or make up a better one than IE 5.5 ? Also, I
   think urllib/urllib2 might have a default agent string, which might be better.

review: Approve
lp:~trb143/openlp/bitsandbobs updated
596. By Jonathan Corwin

More Presentation fixes

597. By Tim Bentley

Various changes and fixes

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp.pyw'
--- openlp.pyw 2009-09-29 12:51:38 +0000
+++ openlp.pyw 2009-10-12 05:00:34 +0000
@@ -49,6 +49,7 @@
49 """49 """
50 Run the OpenLP application.50 Run the OpenLP application.
51 """51 """
52 applicationVersion = u'1.9.0'
52 #set the default string encoding53 #set the default string encoding
53 try:54 try:
54 sys.setappdefaultencoding(u'utf-8')55 sys.setappdefaultencoding(u'utf-8')
@@ -58,7 +59,7 @@
58 QtCore.QObject.connect(Receiver.get_receiver(),59 QtCore.QObject.connect(Receiver.get_receiver(),
59 QtCore.SIGNAL(u'process_events'), self.processEvents)60 QtCore.SIGNAL(u'process_events'), self.processEvents)
60 self.setApplicationName(u'OpenLP')61 self.setApplicationName(u'OpenLP')
61 self.setApplicationVersion(u'1.9.0')62 self.setApplicationVersion(applicationVersion)
62 show_splash = str_to_bool(ConfigHelper.get_registry().get_value(63 show_splash = str_to_bool(ConfigHelper.get_registry().get_value(
63 u'general', u'show splash', True))64 u'general', u'show splash', True))
64 if show_splash:65 if show_splash:
6566
=== modified file 'openlp/core/lib/dockwidget.py'
--- openlp/core/lib/dockwidget.py 2009-09-29 12:51:38 +0000
+++ openlp/core/lib/dockwidget.py 2009-10-12 05:00:34 +0000
@@ -46,8 +46,3 @@
46 self.parent.settingsmanager.setUIItemVisibility(46 self.parent.settingsmanager.setUIItemVisibility(
47 self.objectName(), False)47 self.objectName(), False)
48 event.accept()48 event.accept()
49
50 def resizeEvent(self, event):
51 if self.objectName() == u'MediaManagerDock':
52 if event.size().width() != event.oldSize().width():
53 self.parent.settingsmanager.setDockbarLeft(event.size().width())
5449
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py 2009-10-03 13:08:18 +0000
+++ openlp/core/lib/mediamanageritem.py 2009-10-12 05:00:34 +0000
@@ -281,22 +281,22 @@
281 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)281 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
282 if self.hasEditIcon:282 if self.hasEditIcon:
283 self.ListView.addAction(contextMenuAction(self.ListView,283 self.ListView.addAction(contextMenuAction(self.ListView,
284 ':' +self.IconPath+u'_new.png',284 u':' +self.IconPath+u'_new.png',
285 translate(self.TranslationContext,285 translate(self.TranslationContext,
286 u'&Edit ' + self.PluginTextShort),286 u'&Edit ' + self.PluginTextShort),
287 self.onEditClick))287 self.onEditClick))
288 self.ListView.addAction(contextMenuSeparator(self.ListView))288 self.ListView.addAction(contextMenuSeparator(self.ListView))
289 self.ListView.addAction(contextMenuAction(289 self.ListView.addAction(contextMenuAction(
290 self.ListView, ':/system/system_preview.png',290 self.ListView, u':/system/system_preview.png',
291 translate(self.TranslationContext,291 translate(self.TranslationContext,
292 u'&Preview ' + self.PluginTextShort),292 u'&Preview ' + self.PluginTextShort),
293 self.onPreviewClick))293 self.onPreviewClick))
294 self.ListView.addAction(contextMenuAction(294 self.ListView.addAction(contextMenuAction(
295 self.ListView, ':/system/system_live.png',295 self.ListView, u':/system/system_live.png',
296 translate(self.TranslationContext, u'&Show Live'),296 translate(self.TranslationContext, u'&Show Live'),
297 self.onLiveClick))297 self.onLiveClick))
298 self.ListView.addAction(contextMenuAction(298 self.ListView.addAction(contextMenuAction(
299 self.ListView, ':/system/system_add.png',299 self.ListView, u':/system/system_add.png',
300 translate(self.TranslationContext, u'&Add to Service'),300 translate(self.TranslationContext, u'&Add to Service'),
301 self.onAddClick))301 self.onAddClick))
302 QtCore.QObject.connect(self.ListView,302 QtCore.QObject.connect(self.ListView,
303303
=== modified file 'openlp/core/lib/pluginmanager.py'
--- openlp/core/lib/pluginmanager.py 2009-10-10 04:56:06 +0000
+++ openlp/core/lib/pluginmanager.py 2009-10-12 05:00:34 +0000
@@ -90,7 +90,7 @@
90 try:90 try:
91 __import__(modulename, globals(), locals(), [])91 __import__(modulename, globals(), locals(), [])
92 except ImportError, e:92 except ImportError, e:
93 log.error(u'Failed to import module %s on path %s for reason %s',93 log.exception(u'Failed to import module %s on path %s for reason %s',
94 modulename, path, e.args[0])94 modulename, path, e.args[0])
95 plugin_classes = Plugin.__subclasses__()95 plugin_classes = Plugin.__subclasses__()
96 self.plugins = []96 self.plugins = []
9797
=== modified file 'openlp/core/lib/settingsmanager.py'
--- openlp/core/lib/settingsmanager.py 2009-09-29 17:05:34 +0000
+++ openlp/core/lib/settingsmanager.py 2009-10-12 05:00:34 +0000
@@ -46,11 +46,6 @@
46 self.mainwindow_left = mainwindow_docbars46 self.mainwindow_left = mainwindow_docbars
47 self.mainwindow_right = mainwindow_docbars47 self.mainwindow_right = mainwindow_docbars
4848
49 #self.mainwindow_left = int( ConfigHelper.get_config(
50 # u'user interface', u'mediamanager left', self.mainwindow_left))
51 #self.mainwindow_right = int( ConfigHelper.get_config(
52 # u'user interface', u'mediamanager right', self.mainwindow_right))
53
54 self.slidecontroller = (self.width - (49 self.slidecontroller = (self.width - (
55 self.mainwindow_left + self.mainwindow_right) - 100 ) / 250 self.mainwindow_left + self.mainwindow_right) - 100 ) / 2
56 self.slidecontroller_image = self.slidecontroller - 5051 self.slidecontroller_image = self.slidecontroller - 50
@@ -79,8 +74,3 @@
79 def togglePreviewPanel(self, isVisible):74 def togglePreviewPanel(self, isVisible):
80 ConfigHelper.set_config(u'user interface', u'display previewpanel',75 ConfigHelper.set_config(u'user interface', u'display previewpanel',
81 isVisible)76 isVisible)
82
83 def setDockbarLeft(self, value):
84 #ConfigHelper.set_config(u'user interface', u'mediamanager left', value)
85 pass
86
8777
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-10-10 12:10:05 +0000
+++ openlp/core/ui/mainwindow.py 2009-10-12 05:00:34 +0000
@@ -33,7 +33,7 @@
33from openlp.core.lib import translate, RenderManager, PluginConfig, \33from openlp.core.lib import translate, RenderManager, PluginConfig, \
34 OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \34 OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \
35 buildIcon35 buildIcon
3636from openlp.core.utils import check_latest_version
3737
38class Ui_MainWindow(object):38class Ui_MainWindow(object):
39 def setupUi(self, MainWindow):39 def setupUi(self, MainWindow):
@@ -524,6 +524,19 @@
524 self.ThemeManagerContents.loadThemes()524 self.ThemeManagerContents.loadThemes()
525 log.info(u'Load data from Settings')525 log.info(u'Load data from Settings')
526 self.settingsForm.postSetUp()526 self.settingsForm.postSetUp()
527 self.versionCheck()
528
529 def versionCheck(self):
530 applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0-595')
531 version = check_latest_version(self.generalConfig, applicationVersion)
532 if applicationVersion != version:
533 QtGui.QMessageBox.question(None,
534 translate(u'mainWindow', u'OpenLP version Updated'),
535 translate(u'mainWindow', u'OpenLP version %s has been updated to version %s'
536 % (applicationVersion, version)),
537 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
538 QtGui.QMessageBox.Ok)
539 self.generalConfig.set_config(u'Application version', version)
527540
528541
529 def getMonitorNumber(self):542 def getMonitorNumber(self):
530543
=== modified file 'openlp/core/ui/pluginform.py'
--- openlp/core/ui/pluginform.py 2009-10-08 19:58:49 +0000
+++ openlp/core/ui/pluginform.py 2009-10-12 05:00:34 +0000
@@ -83,7 +83,11 @@
83 log.debug('PluginStatus: %s', str(self.activePlugin.status))83 log.debug('PluginStatus: %s', str(self.activePlugin.status))
84 self.VersionNumberLabel.setText(self.activePlugin.version)84 self.VersionNumberLabel.setText(self.activePlugin.version)
85 self.AboutTextBrowser.setHtml(self.activePlugin.about())85 self.AboutTextBrowser.setHtml(self.activePlugin.about())
86 self.StatusComboBox.setCurrentIndex(int(self.activePlugin.status))86 if self.activePlugin.can_be_disabled():
87 self.StatusComboBox.setCurrentIndex(int(self.activePlugin.status))
88 self.StatusComboBox.setEnabled(True)
89 else:
90 self.StatusComboBox.setEnabled(False)
8791
88 def onPluginListWidgetSelectionChanged(self):92 def onPluginListWidgetSelectionChanged(self):
89 if self.PluginListWidget.currentItem() is None:93 if self.PluginListWidget.currentItem() is None:
9094
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2009-10-01 16:56:42 +0000
+++ openlp/core/ui/servicemanager.py 2009-10-12 05:00:34 +0000
@@ -66,6 +66,20 @@
66 else:66 else:
67 event.ignore()67 event.ignore()
6868
69 def mouseMoveEvent(self, event):
70 """
71 Drag and drop event does not care what data is selected
72 as the recipient will use events to request the data move
73 just tell it what plugin to call
74 """
75 if event.buttons() != QtCore.Qt.LeftButton:
76 return
77 drag = QtGui.QDrag(self)
78 mimeData = QtCore.QMimeData()
79 drag.setMimeData(mimeData)
80 mimeData.setText(u'ServiceManager')
81 dropAction = drag.start(QtCore.Qt.CopyAction)
82
69class Iter(QtGui.QTreeWidgetItemIterator):83class Iter(QtGui.QTreeWidgetItemIterator):
70 def __init__(self, *args):84 def __init__(self, *args):
71 QtGui.QTreeWidgetItemIterator.__init__(self, *args)85 QtGui.QTreeWidgetItemIterator.__init__(self, *args)
@@ -490,23 +504,16 @@
490 Service Item to be added504 Service Item to be added
491505
492 """506 """
493 self.serviceItems.append({u'data': item,507 sitem, count = self.findServiceItem()
494 u'order': len(self.serviceItems)+1, u'expanded':True})
495 treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
496 treewidgetitem.setText(0,item.title)
497 treewidgetitem.setIcon(0,item.iconic_representation)
498 treewidgetitem.setData(0, QtCore.Qt.UserRole,
499 QtCore.QVariant(len(self.serviceItems)))
500 treewidgetitem.setExpanded(True)
501 item.render()508 item.render()
502 count = 0509 if sitem == -1:
503 for frame in item.frames:510 self.serviceItems.append({u'data': item,
504 treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem)511 u'order': len(self.serviceItems) + 1, u'expanded':True})
505 text = frame[u'title']512 self.repaintServiceList(len(self.serviceItems) + 1, 0)
506 treewidgetitem1.setText(0,text[:40])513 else:
507 treewidgetitem1.setData(0, QtCore.Qt.UserRole,514 self.serviceItems.insert(sitem + 1, {u'data': item,
508 QtCore.QVariant(count))515 u'order': len(self.serviceItems)+1, u'expanded':True})
509 count = count + 1516 self.repaintServiceList(sitem + 1, 0)
510 self.parent.serviceChanged(False, self.serviceName)517 self.parent.serviceChanged(False, self.serviceName)
511518
512 def makePreview(self):519 def makePreview(self):
@@ -565,7 +572,28 @@
565 link = event.mimeData()572 link = event.mimeData()
566 if link.hasText():573 if link.hasText():
567 plugin = event.mimeData().text()574 plugin = event.mimeData().text()
568 Receiver().send_message(u'%s_add_service_item' % plugin)575 if plugin == u'ServiceManager':
576 startpos, startCount = self.findServiceItem()
577 item = self.ServiceManagerList.itemAt(event.pos())
578 if item == None:
579 endpos = len(self.serviceItems)
580 else:
581 parentitem = item.parent()
582 if parentitem is None:
583 endpos = item.data(0, QtCore.Qt.UserRole).toInt()[0]
584 else:
585 endpos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
586 endpos -= 1
587 if endpos < startpos:
588 newpos = endpos
589 else:
590 newpos = endpos + 1
591 serviceItem = self.serviceItems[startpos]
592 self.serviceItems.remove(serviceItem)
593 self.serviceItems.insert(newpos, serviceItem)
594 self.repaintServiceList(endpos, startCount)
595 else:
596 Receiver().send_message(u'%s_add_service_item' % plugin)
569597
570 def updateThemeList(self, theme_list):598 def updateThemeList(self, theme_list):
571 """599 """
572600
=== modified file 'openlp/core/ui/settingsform.py'
--- openlp/core/ui/settingsform.py 2009-10-10 04:56:06 +0000
+++ openlp/core/ui/settingsform.py 2009-10-12 05:00:34 +0000
@@ -53,28 +53,13 @@
53 def insertTab(self, tab, location):53 def insertTab(self, tab, location):
54 log.debug(u'Inserting %s tab' % tab.title())54 log.debug(u'Inserting %s tab' % tab.title())
55 self.SettingsTabWidget.insertTab(location + 13, tab, tab.title())55 self.SettingsTabWidget.insertTab(location + 13, tab, tab.title())
56 #for tab_index in range(0, self.SettingsTabWidget.count()):
57 #print self.SettingsTabWidget.widget(tab_index).title()
58 #if self.SettingsTabWidget.widget(tab_index).title() == name:
59 #print "Insert match"
60 #print self.SettingsTabWidget.widget(tab_index).isVisible()
61 #self.SettingsTabWidget.setTabEnabled(tab_index, True)
62 #self.SettingsTabWidget.removeTab(tab_index)
63 #print self.SettingsTabWidget.widget(tab_index).isVisible()
64
6556
66 def removeTab(self, name):57 def removeTab(self, name):
67 log.debug(u'remove %s tab' % name)58 log.debug(u'remove %s tab' % name)
68 #print ">>>>>>>>>>> remove settings"
69 for tab_index in range(0, self.SettingsTabWidget.count()):59 for tab_index in range(0, self.SettingsTabWidget.count()):
70 if self.SettingsTabWidget.widget(tab_index) is not None:60 if self.SettingsTabWidget.widget(tab_index) is not None:
71 #print "rt", self.SettingsTabWidget.widget(tab_index).title(), name
72 if self.SettingsTabWidget.widget(tab_index).title() == name:61 if self.SettingsTabWidget.widget(tab_index).title() == name:
73 #print "remove match"
74 #print self.SettingsTabWidget.widget(tab_index).isVisible()
75 #self.SettingsTabWidget.setTabEnabled(tab_index, False)
76 self.SettingsTabWidget.removeTab(tab_index)62 self.SettingsTabWidget.removeTab(tab_index)
77 #print self.SettingsTabWidget.widget(tab_index).isVisible()
7863
79 def accept(self):64 def accept(self):
80 for tab_index in range(0, self.SettingsTabWidget.count()):65 for tab_index in range(0, self.SettingsTabWidget.count()):
8166
=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py 2009-09-25 00:43:42 +0000
+++ openlp/core/ui/thememanager.py 2009-10-12 05:00:34 +0000
@@ -33,7 +33,8 @@
33from openlp.core.ui import AmendThemeForm33from openlp.core.ui import AmendThemeForm
34from openlp.core.theme import Theme34from openlp.core.theme import Theme
35from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, translate, \35from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, translate, \
36 str_to_bool, file_to_xml, buildIcon, Receiver36 str_to_bool, file_to_xml, buildIcon, Receiver, contextMenuAction, \
37 contextMenuSeparator
37from openlp.core.utils import ConfigHelper38from openlp.core.utils import ConfigHelper
3839
39class ThemeManager(QtGui.QWidget):40class ThemeManager(QtGui.QWidget):
@@ -77,6 +78,25 @@
77 self.ThemeListWidget.setAlternatingRowColors(True)78 self.ThemeListWidget.setAlternatingRowColors(True)
78 self.ThemeListWidget.setIconSize(QtCore.QSize(88,50))79 self.ThemeListWidget.setIconSize(QtCore.QSize(88,50))
79 self.Layout.addWidget(self.ThemeListWidget)80 self.Layout.addWidget(self.ThemeListWidget)
81 self.ThemeListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
82 self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget,
83 u':/themes/theme_edit.png',
84 translate(u'ThemeManager', u'Edit a theme'),
85 self.onEditTheme))
86 self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget))
87 self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget,
88 u':/themes/theme_delete.png',
89 translate(u'ThemeManager', u'Delete theme'),
90 self.onDeleteTheme))
91 self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget,
92 u':/themes/theme_export.png',
93 translate(u'ThemeManager', u'Make Global'),
94 self.changeGlobalFromScreen))
95 self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget,
96 u':/themes/theme_export.png',
97 translate(u'ThemeManager', u'Export theme'),
98 self.onExportTheme))
99 self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget))
80 #Signals100 #Signals
81 QtCore.QObject.connect(self.ThemeListWidget,101 QtCore.QObject.connect(self.ThemeListWidget,
82 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),102 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
@@ -109,8 +129,9 @@
109 u'default'))129 u'default'))
110 self.ThemeListWidget.item(count).setText(name)130 self.ThemeListWidget.item(count).setText(name)
111131
112 def changeGlobalFromScreen(self, index):132 def changeGlobalFromScreen(self, index = -1):
113 log.debug(u'changeGlobalFromScreen %s', index)133 log.debug(u'changeGlobalFromScreen %s', index)
134 selected_row = self.ThemeListWidget.currentRow()
114 for count in range (0, self.ThemeListWidget.count()):135 for count in range (0, self.ThemeListWidget.count()):
115 item = self.ThemeListWidget.item(count)136 item = self.ThemeListWidget.item(count)
116 oldName = item.text()137 oldName = item.text()
@@ -119,7 +140,7 @@
119 self.ThemeListWidget.item(count).setText(140 self.ThemeListWidget.item(count).setText(
120 unicode(item.data(QtCore.Qt.UserRole).toString()))141 unicode(item.data(QtCore.Qt.UserRole).toString()))
121 #Set the new name142 #Set the new name
122 if count == index.row():143 if count == selected_row:
123 self.global_theme = unicode(144 self.global_theme = unicode(
124 self.ThemeListWidget.item(count).text())145 self.ThemeListWidget.item(count).text())
125 name = u'%s (%s)' % (self.global_theme,146 name = u'%s (%s)' % (self.global_theme,
@@ -186,14 +207,15 @@
186 u'You have not selected a theme!'),207 u'You have not selected a theme!'),
187 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))208 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
188 return209 return
189 theme = unicode(item.text())210 theme = unicode(item.data(QtCore.Qt.UserRole).toString())
190 path = QtGui.QFileDialog.getExistingDirectory(self,211 path = QtGui.QFileDialog.getExistingDirectory(self,
191 u'Save Theme',self.config.get_last_dir(1) )212 u'Save Theme - (%s)' % theme,
213 self.config.get_last_dir(1) )
192 path = unicode(path)214 path = unicode(path)
193 if path != u'':215 if path != u'':
194 self.config.set_last_dir(path, 1)216 self.config.set_last_dir(path, 1)
195 themePath = os.path.join(path, theme + u'.theme')217 themePath = os.path.join(path, theme + u'.theme')
196 zip = zipfile.ZipFile(themePath, 'w')218 zip = zipfile.ZipFile(themePath, u'w')
197 source = os.path.join(self.path, theme)219 source = os.path.join(self.path, theme)
198 for root, dirs, files in os.walk(source):220 for root, dirs, files in os.walk(source):
199 for name in files:221 for name in files:
@@ -203,7 +225,8 @@
203225
204 def onImportTheme(self):226 def onImportTheme(self):
205 files = QtGui.QFileDialog.getOpenFileNames(None,227 files = QtGui.QFileDialog.getOpenFileNames(None,
206 translate(u'ThemeManager', u'Select Theme Import File'),228 translate(u'ThemeManager',
229 u'Select Theme Import File'),
207 self.path, u'Theme (*.*)')230 self.path, u'Theme (*.*)')
208 log.info(u'New Themes %s', unicode(files))231 log.info(u'New Themes %s', unicode(files))
209 if len(files) > 0:232 if len(files) > 0:
210233
=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py 2009-09-08 19:58:05 +0000
+++ openlp/core/utils/__init__.py 2009-10-12 05:00:34 +0000
@@ -21,8 +21,29 @@
21# with this program; if not, write to the Free Software Foundation, Inc., 59 #21# with this program; if not, write to the Free Software Foundation, Inc., 59 #
22# Temple Place, Suite 330, Boston, MA 02111-1307 USA #22# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
23###############################################################################23###############################################################################
24import logging
25import urllib2
26from datetime import datetime
2427
25from registry import Registry28from registry import Registry
26from confighelper import ConfigHelper29from confighelper import ConfigHelper
2730
28__all__ = ['Registry', 'ConfigHelper']31__all__ = ['Registry', 'ConfigHelper']
32
33def check_latest_version(config, current_version):
34 version_string = current_version
35 lastTest = config.get_config(u'Application version Test', datetime.now().date())
36 thisTest = unicode(datetime.now().date())
37 config.set_config(u'Application version Test', thisTest)
38 if lastTest != thisTest:
39 version_string = u''
40 req = urllib2.Request(u'http://www.openlp.org/files/version.txt')
41 req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
42 try:
43 handle = urllib2.urlopen(req, None, 1)
44 html = handle.read()
45 version_string = unicode(html).rstrip()
46 except IOError, e:
47 if hasattr(e, u'reason'):
48 log.exception(u'Reason for failure: %s', e.reason)
49 return version_string
2950
=== modified file 'openlp/plugins/audit/auditplugin.py'
--- openlp/plugins/audit/auditplugin.py 2009-10-03 18:39:44 +0000
+++ openlp/plugins/audit/auditplugin.py 2009-10-12 05:00:34 +0000
@@ -64,14 +64,7 @@
64 self.AuditMenu.setObjectName(u'AuditMenu')64 self.AuditMenu.setObjectName(u'AuditMenu')
65 self.AuditMenu.setTitle(65 self.AuditMenu.setTitle(
66 translate(u'AuditPlugin', u'&Audit'))66 translate(u'AuditPlugin', u'&Audit'))
67 #Audit Delete All67 #Audit Delete
68 self.AuditDeleteAll = QtGui.QAction(tools_menu)
69 self.AuditDeleteAll.setText(
70 translate(u'AuditPlugin', u'Au&dit Delete all'))
71 self.AuditDeleteAll.setStatusTip(
72 translate(u'AuditPlugin', u'Deleted all Audit records'))
73 self.AuditDeleteAll.setObjectName(u'AuditDeleteAll')
74 #Audit Delete
75 self.AuditDelete = QtGui.QAction(tools_menu)68 self.AuditDelete = QtGui.QAction(tools_menu)
76 self.AuditDelete.setText(69 self.AuditDelete.setText(
77 translate(u'AuditPlugin', u'Audit &Delete'))70 translate(u'AuditPlugin', u'Audit &Delete'))
@@ -81,9 +74,9 @@
81 #Audit Report74 #Audit Report
82 self.AuditReport = QtGui.QAction(tools_menu)75 self.AuditReport = QtGui.QAction(tools_menu)
83 self.AuditReport.setText(76 self.AuditReport.setText(
84 translate(u'AuditPlugin', u'Au&dit &Report'))77 translate(u'AuditPlugin', u'Au&dit &Extract'))
85 self.AuditReport.setStatusTip(78 self.AuditReport.setStatusTip(
86 translate(u'AuditPlugin', u'Generate Reports on Audit Data'))79 translate(u'AuditPlugin', u'Generate Extracts on Audit Data'))
87 self.AuditReport.setObjectName(u'AuditReport')80 self.AuditReport.setObjectName(u'AuditReport')
88 #Audit activation81 #Audit activation
89 AuditIcon = buildIcon(u':/tools/tools_alert.png')82 AuditIcon = buildIcon(u':/tools/tools_alert.png')
@@ -100,9 +93,7 @@
100 self.toolsMenu.addAction(self.AuditMenu.menuAction())93 self.toolsMenu.addAction(self.AuditMenu.menuAction())
101 self.AuditMenu.addAction(self.AuditStatus)94 self.AuditMenu.addAction(self.AuditStatus)
102 self.AuditMenu.addSeparator()95 self.AuditMenu.addSeparator()
103 self.AuditMenu.addAction(self.AuditDeleteAll)
104 self.AuditMenu.addAction(self.AuditDelete)96 self.AuditMenu.addAction(self.AuditDelete)
105 self.AuditMenu.addSeparator()
106 self.AuditMenu.addAction(self.AuditReport)97 self.AuditMenu.addAction(self.AuditReport)
107 # Signals and slots98 # Signals and slots
108 QtCore.QObject.connect(self.AuditStatus,99 QtCore.QObject.connect(self.AuditStatus,
@@ -111,8 +102,6 @@
111 QtCore.QObject.connect(self.AuditStatus,102 QtCore.QObject.connect(self.AuditStatus,
112 QtCore.SIGNAL(u'triggered(bool)'),103 QtCore.SIGNAL(u'triggered(bool)'),
113 self.toggleAuditState)104 self.toggleAuditState)
114 QtCore.QObject.connect(self.AuditDeleteAll,
115 QtCore.SIGNAL(u'triggered()'), self.onAuditDeleteAll)
116 QtCore.QObject.connect(self.AuditDelete,105 QtCore.QObject.connect(self.AuditDelete,
117 QtCore.SIGNAL(u'triggered()'), self.onAuditDelete)106 QtCore.SIGNAL(u'triggered()'), self.onAuditDelete)
118 QtCore.QObject.connect(self.AuditReport,107 QtCore.QObject.connect(self.AuditReport,
@@ -132,7 +121,7 @@
132 if self.auditmanager is None:121 if self.auditmanager is None:
133 self.auditmanager = AuditManager(self.config)122 self.auditmanager = AuditManager(self.config)
134 self.auditdeleteform = AuditDeleteForm(self.auditmanager)123 self.auditdeleteform = AuditDeleteForm(self.auditmanager)
135 self.auditdetailform = AuditDetailForm(self.auditmanager)124 self.auditdetailform = AuditDetailForm(self)
136 self.AuditMenu.menuAction().setVisible(True)125 self.AuditMenu.menuAction().setVisible(True)
137126
138 def finalise(self):127 def finalise(self):
@@ -170,17 +159,6 @@
170 self.config.get_config(u'audit active', False))159 self.config.get_config(u'audit active', False))
171 self.AuditStatus.setEnabled(True)160 self.AuditStatus.setEnabled(True)
172161
173 def onAuditDeleteAll(self):
174 ret = QtGui.QMessageBox.question(None,
175 translate(u'mainWindow', u'Delete All Audit Events?'),
176 translate(u'mainWindow', u'Are you sure you want to delete all Audit Data?'),
177 QtGui.QMessageBox.StandardButtons(
178 QtGui.QMessageBox.Ok |
179 QtGui.QMessageBox.Cancel),
180 QtGui.QMessageBox.Cancel)
181 if ret == QtGui.QMessageBox.Ok:
182 self.auditmanager.delete_all()
183
184 def onAuditDelete(self):162 def onAuditDelete(self):
185 self.auditdeleteform.exec_()163 self.auditdeleteform.exec_()
186164
187165
=== modified file 'openlp/plugins/audit/forms/auditdeletedialog.py'
--- openlp/plugins/audit/forms/auditdeletedialog.py 2009-09-25 20:12:35 +0000
+++ openlp/plugins/audit/forms/auditdeletedialog.py 2009-10-12 05:00:34 +0000
@@ -2,7 +2,7 @@
22
3# Form implementation generated from reading ui file 'auditdeletedialog.ui'3# Form implementation generated from reading ui file 'auditdeletedialog.ui'
4#4#
5# Created: Fri Sep 25 21:03:48 20095# Created: Sun Oct 11 11:34:45 2009
6# by: PyQt4 UI code generator 4.5.46# by: PyQt4 UI code generator 4.5.4
7#7#
8# WARNING! All changes made in this file will be lost!8# WARNING! All changes made in this file will be lost!
@@ -12,7 +12,7 @@
12class Ui_AuditDeleteDialog(object):12class Ui_AuditDeleteDialog(object):
13 def setupUi(self, AuditDeleteDialog):13 def setupUi(self, AuditDeleteDialog):
14 AuditDeleteDialog.setObjectName("AuditDeleteDialog")14 AuditDeleteDialog.setObjectName("AuditDeleteDialog")
15 AuditDeleteDialog.resize(291, 202)15 AuditDeleteDialog.resize(291, 243)
16 self.layoutWidget = QtGui.QWidget(AuditDeleteDialog)16 self.layoutWidget = QtGui.QWidget(AuditDeleteDialog)
17 self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 247, 181))17 self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 247, 181))
18 self.layoutWidget.setObjectName("layoutWidget")18 self.layoutWidget.setObjectName("layoutWidget")
@@ -24,10 +24,10 @@
24 self.DeleteCalendar.setVerticalHeaderFormat(QtGui.QCalendarWidget.NoVerticalHeader)24 self.DeleteCalendar.setVerticalHeaderFormat(QtGui.QCalendarWidget.NoVerticalHeader)
25 self.DeleteCalendar.setObjectName("DeleteCalendar")25 self.DeleteCalendar.setObjectName("DeleteCalendar")
26 self.verticalLayout.addWidget(self.DeleteCalendar)26 self.verticalLayout.addWidget(self.DeleteCalendar)
27 self.buttonBox = QtGui.QDialogButtonBox(self.layoutWidget)27 self.buttonBox = QtGui.QDialogButtonBox(AuditDeleteDialog)
28 self.buttonBox.setGeometry(QtCore.QRect(30, 210, 245, 25))
28 self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)29 self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
29 self.buttonBox.setObjectName("buttonBox")30 self.buttonBox.setObjectName("buttonBox")
30 self.verticalLayout.addWidget(self.buttonBox)
3131
32 self.retranslateUi(AuditDeleteDialog)32 self.retranslateUi(AuditDeleteDialog)
33 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDeleteDialog.accept)33 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDeleteDialog.accept)
3434
=== modified file 'openlp/plugins/audit/forms/auditdeleteform.py'
--- openlp/plugins/audit/forms/auditdeleteform.py 2009-09-29 02:54:32 +0000
+++ openlp/plugins/audit/forms/auditdeleteform.py 2009-10-12 05:00:34 +0000
@@ -34,7 +34,7 @@
34 """34 """
35 Class documentation goes here.35 Class documentation goes here.
36 """36 """
37 def __init__(self, auditmanager, parent = None):37 def __init__(self, auditmanager, parent=None):
38 """38 """
39 Constructor39 Constructor
40 """40 """
4141
=== modified file 'openlp/plugins/audit/forms/auditdetaildialog.py'
--- openlp/plugins/audit/forms/auditdetaildialog.py 2009-09-25 20:12:35 +0000
+++ openlp/plugins/audit/forms/auditdetaildialog.py 2009-10-12 05:00:34 +0000
@@ -2,7 +2,7 @@
22
3# Form implementation generated from reading ui file 'auditdetaildialog.ui'3# Form implementation generated from reading ui file 'auditdetaildialog.ui'
4#4#
5# Created: Fri Sep 25 21:04:08 20095# Created: Sun Oct 11 11:40:02 2009
6# by: PyQt4 UI code generator 4.5.46# by: PyQt4 UI code generator 4.5.4
7#7#
8# WARNING! All changes made in this file will be lost!8# WARNING! All changes made in this file will be lost!
@@ -136,6 +136,10 @@
136 self.retranslateUi(AuditDetailDialog)136 self.retranslateUi(AuditDetailDialog)
137 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDetailDialog.accept)137 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDetailDialog.accept)
138 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), AuditDetailDialog.close)138 QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), AuditDetailDialog.close)
139 QtCore.QObject.connect(self.FirstCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeFirstService)
140 QtCore.QObject.connect(self.SecondCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeSecondService)
141 QtCore.QObject.connect(self.ThirdCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeThirdService)
142 QtCore.QObject.connect(self.SaveFilePushButton, QtCore.SIGNAL("pressed()"), AuditDetailDialog.defineOutputLocation)
139 QtCore.QMetaObject.connectSlotsByName(AuditDetailDialog)143 QtCore.QMetaObject.connectSlotsByName(AuditDetailDialog)
140144
141 def retranslateUi(self, AuditDetailDialog):145 def retranslateUi(self, AuditDetailDialog):
@@ -144,11 +148,11 @@
144 self.ReportTypeGroup.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Report Type", None, QtGui.QApplication.UnicodeUTF8))148 self.ReportTypeGroup.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Report Type", None, QtGui.QApplication.UnicodeUTF8))
145 self.SummaryReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Summary", None, QtGui.QApplication.UnicodeUTF8))149 self.SummaryReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Summary", None, QtGui.QApplication.UnicodeUTF8))
146 self.DetailedReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Detailed", None, QtGui.QApplication.UnicodeUTF8))150 self.DetailedReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Detailed", None, QtGui.QApplication.UnicodeUTF8))
147 self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Date Range", None, QtGui.QApplication.UnicodeUTF8))151 self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Date Range", None, QtGui.QApplication.UnicodeUTF8))
148 self.FromDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8))152 self.FromDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8))
149 self.To.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8))153 self.To.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8))
150 self.ToDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8))154 self.ToDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8))
151 self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Time Periods", None, QtGui.QApplication.UnicodeUTF8))155 self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Time Periods", None, QtGui.QApplication.UnicodeUTF8))
152 self.FirstCheckBox.setText(QtGui.QApplication.translate("AuditDetailDialog", "First Service", None, QtGui.QApplication.UnicodeUTF8))156 self.FirstCheckBox.setText(QtGui.QApplication.translate("AuditDetailDialog", "First Service", None, QtGui.QApplication.UnicodeUTF8))
153 self.FirstFromTimeEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "hh:mm AP", None, QtGui.QApplication.UnicodeUTF8))157 self.FirstFromTimeEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "hh:mm AP", None, QtGui.QApplication.UnicodeUTF8))
154 self.FirstTo.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8))158 self.FirstTo.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8))
155159
=== modified file 'openlp/plugins/audit/forms/auditdetailform.py'
--- openlp/plugins/audit/forms/auditdetailform.py 2009-09-25 20:12:35 +0000
+++ openlp/plugins/audit/forms/auditdetailform.py 2009-10-12 05:00:34 +0000
@@ -32,209 +32,48 @@
32 """32 """
33 Class documentation goes here.33 Class documentation goes here.
34 """34 """
35 def __init__(self, auditmanager, parent = None):35 def __init__(self, parent=None):
36 """36 """
37 Constructor37 Constructor
38 """38 """
39 QtGui.QDialog.__init__(self, parent)39 QtGui.QDialog.__init__(self, None)
40 #self.parent = parent40 self.parent = parent
41 self.setupUi(self)41 self.setupUi(self)
42# # Connecting signals and slots
43# QtCore.QObject.connect(self.buttonBox,
44# QtCore.SIGNAL(u'rejected()'), self.rejected)
45# QtCore.QObject.connect(self.buttonBox,
46# QtCore.SIGNAL(u'accepted()'), self.accept)
47# QtCore.QObject.connect(self.AddButton,
48# QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed)
49# QtCore.QObject.connect(self.EditButton,
50# QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed)
51# QtCore.QObject.connect(self.EditAllButton,
52# QtCore.SIGNAL(u'pressed()'), self.onEditAllButtonPressed)
53# QtCore.QObject.connect(self.SaveButton,
54# QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed)
55# QtCore.QObject.connect(self.DeleteButton,
56# QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed)
57# QtCore.QObject.connect(self.ClearButton,
58# QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed)
59# QtCore.QObject.connect(self.UpButton,
60# QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed)
61# QtCore.QObject.connect(self.DownButton,
62# QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed)
63#
64# QtCore.QObject.connect(self.VerseListView,
65# QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'),
66# self.onVerseListViewSelected)
67# QtCore.QObject.connect(self.VerseListView,
68# QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'),
69# self.onVerseListViewPressed)
70# QtCore.QObject.connect(Receiver.get_receiver(),
71# QtCore.SIGNAL(u'update_themes'), self.loadThemes)
72# # Create other objects and forms
73# self.custommanager = custommanager
74 self.initialise()42 self.initialise()
7543
76 def initialise(self):44 def initialise(self):
77 pass45 self.firstService = \
78# self.editAll = False46 int(self.parent.config.get_config(u'first service', QtCore.Qt.Checked))
79# self.DeleteButton.setEnabled(False)47 self.secondService = \
80# self.EditButton.setEnabled(False)48 int(self.parent.config.get_config(u'second service', QtCore.Qt.Checked))
81# self.EditAllButton.setEnabled(True)49 self.resetWindow()
82# self.SaveButton.setEnabled(False)50
83# self.ClearButton.setEnabled(False)51 def changeFirstService(self, value):
84# self.TitleEdit.setText(u'')52 self.firstService = value
85# self.CreditEdit.setText(u'')53 self.parent.config.set_config(u'first service', value)
86# self.VerseTextEdit.clear()54 self.resetWindow()
87# self.VerseListView.clear()55
88# #make sure we have a new item56 def changeSecondService(self, value):
89# self.customSlide = CustomSlide()57 self.secondService = value
90# self.ThemeComboBox.addItem(u'')58 self.parent.config.set_config(u'second service', value)
91#59 self.resetWindow()
92# def loadThemes(self, themelist):60
93# self.ThemeComboBox.clear()61 def changeThirdService(self, value):
94# self.ThemeComboBox.addItem(u'')62 pass
95# for themename in themelist:63
96# self.ThemeComboBox.addItem(themename)64 def defineOutputLocation(self):
97#65 pass
98# def loadCustom(self, id):66
99# self.customSlide = CustomSlide()67 def resetWindow(self):
100# self.initialise()68 if self.firstService == QtCore.Qt.Unchecked:
101# if id != 0:69 self.FirstFromTimeEdit.setEnabled(False)
102# self.customSlide = self.custommanager.get_custom(id)70 self.FirstToTimeEdit.setEnabled(False)
103# self.TitleEdit.setText(self.customSlide.title)71 else:
104# self.CreditEdit.setText(self.customSlide.credits)72 self.FirstFromTimeEdit.setEnabled(True)
105#73 self.FirstToTimeEdit.setEnabled(True)
106# songXML = SongXMLParser(self.customSlide.text)74 if self.secondService == QtCore.Qt.Unchecked:
107# verseList = songXML.get_verses()75 self.SecondFromTimeEdit.setEnabled(False)
108# for verse in verseList:76 self.SecondToTimeEdit.setEnabled(False)
109# self.VerseListView.addItem(verse[1])77 else:
110# theme = unicode(self.customSlide.theme_name)78 self.SecondFromTimeEdit.setEnabled(True)
111# id = self.ThemeComboBox.findText(theme, QtCore.Qt.MatchExactly)79 self.SecondToTimeEdit.setEnabled(True)
112# if id == -1:
113# id = 0 # Not Found
114# self.ThemeComboBox.setCurrentIndex(id)
115# else:
116# self.ThemeComboBox.setCurrentIndex(0)
117#
118# def accept(self):
119# valid, message = self._validate()
120# if not valid:
121# QtGui.QMessageBox.critical(self,
122# translate(u'customEditDialog', u'Error'), message,
123# QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
124# return
125# sxml = SongXMLBuilder()
126# sxml.new_document()
127# sxml.add_lyrics_to_song()
128# count = 1
129# for i in range (0, self.VerseListView.count()):
130# sxml.add_verse_to_lyrics(
131# u'custom', unicode(count),
132# unicode(self.VerseListView.item(i).text()))
133# count += 1
134# self.customSlide.title = unicode(self.TitleEdit.displayText())
135# self.customSlide.text = unicode(sxml.extract_xml())
136# self.customSlide.credits = unicode(self.CreditEdit.displayText())
137# self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText())
138# self.custommanager.save_slide(self.customSlide)
139# self.close()
140#
141# def rejected(self):
142# self.close()
143#
144# def onUpButtonPressed(self):
145# selectedRow = self.VerseListView.currentRow()
146# if selectedRow != 0:
147# qw = self.VerseListView.takeItem(selectedRow)
148# self.VerseListView.insertItem(selectedRow - 1, qw)
149# self.VerseListView.setCurrentRow(selectedRow - 1)
150#
151# def onDownButtonPressed(self):
152# selectedRow = self.VerseListView.currentRow()
153# # zero base arrays
154# if selectedRow != self.VerseListView.count() - 1:
155# qw = self.VerseListView.takeItem(selectedRow)
156# self.VerseListView.insertItem(selectedRow + 1, qw)
157# self.VerseListView.setCurrentRow(selectedRow + 1)
158#
159# def onClearButtonPressed(self):
160# self.VerseTextEdit.clear()
161# self.editAll = False
162# self.AddButton.setEnabled(True)
163# self.EditAllButton.setEnabled(True)
164# self.SaveButton.setEnabled(False)
165#
166# def onVerseListViewPressed(self, item):
167# self.DeleteButton.setEnabled(True)
168# self.EditButton.setEnabled(True)
169#
170# def onVerseListViewSelected(self, item):
171# self.editText(item.text())
172#
173# def onAddButtonPressed(self):
174# self.VerseListView.addItem(self.VerseTextEdit.toPlainText())
175# self.DeleteButton.setEnabled(False)
176# self.VerseTextEdit.clear()
177#
178# def onEditButtonPressed(self):
179# self.editText(self.VerseListView.currentItem().text())
180#
181# def onEditAllButtonPressed(self):
182# self.editAll = True
183# self.AddButton.setEnabled(False)
184# if self.VerseListView.count() > 0:
185# verse_list = u''
186# for row in range(0, self.VerseListView.count()):
187# item = self.VerseListView.item(row)
188# verse_list += item.text()
189# verse_list += u'\n---\n'
190# self.editText(verse_list)
191#
192# def editText(self, text):
193# self.beforeText = text
194# self.VerseTextEdit.setPlainText(text)
195# self.DeleteButton.setEnabled(False)
196# self.EditButton.setEnabled(False)
197# self.EditAllButton.setEnabled(False)
198# self.SaveButton.setEnabled(True)
199# self.ClearButton.setEnabled(True)
200#
201# def onSaveButtonPressed(self):
202# if self.editAll:
203# self.VerseListView.clear()
204# for row in unicode(self.VerseTextEdit.toPlainText()).split(u'\n---\n'):
205# self.VerseListView.addItem(row)
206# else:
207# self.VerseListView.currentItem().setText(
208# self.VerseTextEdit.toPlainText())
209# #number of lines has change
210# if len(self.beforeText.split(u'\n')) != \
211# len(self.VerseTextEdit.toPlainText().split(u'\n')):
212# tempList = {}
213# for row in range(0, self.VerseListView.count()):
214# tempList[row] = self.VerseListView.item(row).text()
215# self.VerseListView.clear()
216# for row in range (0, len(tempList)):
217# self.VerseListView.addItem(tempList[row])
218# self.VerseListView.repaint()
219# self.AddButton.setEnabled(True)
220# self.SaveButton.setEnabled(False)
221# self.EditButton.setEnabled(False)
222# self.EditAllButton.setEnabled(True)
223# self.VerseTextEdit.clear()
224#
225# def onDeleteButtonPressed(self):
226# self.VerseListView.takeItem(self.VerseListView.currentRow())
227# self.EditButton.setEnabled(False)
228# self.EditAllButton.setEnabled(True)
229#
230# def _validate(self):
231# if len(self.TitleEdit.displayText()) == 0:
232# self.TitleEdit.setFocus()
233# return False, translate(
234# u'customEditDialog', u'You need to enter a title \n')
235# # must have 1 slide
236# if self.VerseListView.count() == 0:
237# self.VerseTextEdit.setFocus()
238# return False, translate(
239# u'customEditDialog', u'You need to enter a slide \n')
240# return True, u''
24180
=== modified file 'resources/forms/auditdeletedialog.ui'
--- resources/forms/auditdeletedialog.ui 2009-09-25 20:12:35 +0000
+++ resources/forms/auditdeletedialog.ui 2009-10-12 05:00:34 +0000
@@ -7,7 +7,7 @@
7 <x>0</x>7 <x>0</x>
8 <y>0</y>8 <y>0</y>
9 <width>291</width>9 <width>291</width>
10 <height>202</height>10 <height>243</height>
11 </rect>11 </rect>
12 </property>12 </property>
13 <property name="windowTitle">13 <property name="windowTitle">
@@ -36,15 +36,21 @@
36 </property>36 </property>
37 </widget>37 </widget>
38 </item>38 </item>
39 <item>
40 <widget class="QDialogButtonBox" name="buttonBox">
41 <property name="standardButtons">
42 <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
43 </property>
44 </widget>
45 </item>
46 </layout>39 </layout>
47 </widget>40 </widget>
41 <widget class="QDialogButtonBox" name="buttonBox">
42 <property name="geometry">
43 <rect>
44 <x>30</x>
45 <y>210</y>
46 <width>245</width>
47 <height>25</height>
48 </rect>
49 </property>
50 <property name="standardButtons">
51 <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
52 </property>
53 </widget>
48 </widget>54 </widget>
49 <resources/>55 <resources/>
50 <connections>56 <connections>
5157
=== modified file 'resources/forms/auditdetaildialog.ui'
--- resources/forms/auditdetaildialog.ui 2009-09-26 06:46:26 +0000
+++ resources/forms/auditdetaildialog.ui 2009-10-12 05:00:34 +0000
@@ -108,7 +108,7 @@
108 <item>108 <item>
109 <widget class="QGroupBox" name="DateRangeGroupBox">109 <widget class="QGroupBox" name="DateRangeGroupBox">
110 <property name="title">110 <property name="title">
111 <string>Date Range</string>111 <string>Select Date Range</string>
112 </property>112 </property>
113 <layout class="QVBoxLayout" name="verticalLayout_2">113 <layout class="QVBoxLayout" name="verticalLayout_2">
114 <item>114 <item>
@@ -148,7 +148,7 @@
148 <item>148 <item>
149 <widget class="QGroupBox" name="TimePeriodGroupBox">149 <widget class="QGroupBox" name="TimePeriodGroupBox">
150 <property name="title">150 <property name="title">
151 <string>Time Periods</string>151 <string>Select Time Periods</string>
152 </property>152 </property>
153 <layout class="QVBoxLayout" name="verticalLayout">153 <layout class="QVBoxLayout" name="verticalLayout">
154 <item>154 <item>
@@ -336,8 +336,76 @@
336 </hint>336 </hint>
337 </hints>337 </hints>
338 </connection>338 </connection>
339 <connection>
340 <sender>FirstCheckBox</sender>
341 <signal>stateChanged(int)</signal>
342 <receiver>AuditDetailDialog</receiver>
343 <slot>changeFirstService(int)</slot>
344 <hints>
345 <hint type="sourcelabel">
346 <x>26</x>
347 <y>285</y>
348 </hint>
349 <hint type="destinationlabel">
350 <x>136</x>
351 <y>483</y>
352 </hint>
353 </hints>
354 </connection>
355 <connection>
356 <sender>SecondCheckBox</sender>
357 <signal>stateChanged(int)</signal>
358 <receiver>AuditDetailDialog</receiver>
359 <slot>changeSecondService(int)</slot>
360 <hints>
361 <hint type="sourcelabel">
362 <x>41</x>
363 <y>323</y>
364 </hint>
365 <hint type="destinationlabel">
366 <x>103</x>
367 <y>494</y>
368 </hint>
369 </hints>
370 </connection>
371 <connection>
372 <sender>ThirdCheckBox</sender>
373 <signal>stateChanged(int)</signal>
374 <receiver>AuditDetailDialog</receiver>
375 <slot>changeThirdService(int)</slot>
376 <hints>
377 <hint type="sourcelabel">
378 <x>38</x>
379 <y>351</y>
380 </hint>
381 <hint type="destinationlabel">
382 <x>155</x>
383 <y>463</y>
384 </hint>
385 </hints>
386 </connection>
387 <connection>
388 <sender>SaveFilePushButton</sender>
389 <signal>pressed()</signal>
390 <receiver>AuditDetailDialog</receiver>
391 <slot>defineOutputLocation()</slot>
392 <hints>
393 <hint type="sourcelabel">
394 <x>538</x>
395 <y>419</y>
396 </hint>
397 <hint type="destinationlabel">
398 <x>385</x>
399 <y>480</y>
400 </hint>
401 </hints>
402 </connection>
339 </connections>403 </connections>
340 <slots>404 <slots>
341 <slot>accept()</slot>405 <slot>accept()</slot>
406 <slot>changeFirstService(int)</slot>
407 <slot>changeSecondService(int)</slot>
408 <slot>changeThirdService(int)</slot>
409 <slot>defineOutputLocation()</slot>
342 </slots>410 </slots>
343</ui>411</ui>