From 268aadde4c7ef7e9ac76fdaa7357d3090dc20ca1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 10 Oct 2009 19:36:58 +0100 Subject: [PATCH 1/8] Theme improvements --- openlp/core/lib/mediamanageritem.py | 8 +++---- openlp/core/ui/thememanager.py | 35 ++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index ffd1e8896..60661996c 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -281,22 +281,22 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) if self.hasEditIcon: self.ListView.addAction(contextMenuAction(self.ListView, - ':' +self.IconPath+u'_new.png', + u':' +self.IconPath+u'_new.png', translate(self.TranslationContext, u'&Edit ' + self.PluginTextShort), self.onEditClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) self.ListView.addAction(contextMenuAction( - self.ListView, ':/system/system_preview.png', + self.ListView, u':/system/system_preview.png', translate(self.TranslationContext, u'&Preview ' + self.PluginTextShort), self.onPreviewClick)) self.ListView.addAction(contextMenuAction( - self.ListView, ':/system/system_live.png', + self.ListView, u':/system/system_live.png', translate(self.TranslationContext, u'&Show Live'), self.onLiveClick)) self.ListView.addAction(contextMenuAction( - self.ListView, ':/system/system_add.png', + self.ListView, u':/system/system_add.png', translate(self.TranslationContext, u'&Add to Service'), self.onAddClick)) QtCore.QObject.connect(self.ListView, diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 3a00bb23b..2c32f55dd 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -33,7 +33,8 @@ from PyQt4 import QtCore, QtGui from openlp.core.ui import AmendThemeForm from openlp.core.theme import Theme from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, translate, \ - str_to_bool, file_to_xml, buildIcon, Receiver + str_to_bool, file_to_xml, buildIcon, Receiver, contextMenuAction, \ + contextMenuSeparator from openlp.core.utils import ConfigHelper class ThemeManager(QtGui.QWidget): @@ -77,6 +78,25 @@ class ThemeManager(QtGui.QWidget): self.ThemeListWidget.setAlternatingRowColors(True) self.ThemeListWidget.setIconSize(QtCore.QSize(88,50)) self.Layout.addWidget(self.ThemeListWidget) + self.ThemeListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, + u':/themes/theme_edit.png', + translate(u'ThemeManager', u'Edit a theme'), + self.onEditTheme)) + self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget)) + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, + u':/themes/theme_delete.png', + translate(u'ThemeManager', u'Delete theme'), + self.onDeleteTheme)) + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, + u':/themes/theme_export.png', + translate(u'ThemeManager', u'Make Global Theme'), + self.changeGlobalFromScreen)) + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, + u':/themes/theme_export.png', + translate(u'ThemeManager', u'Export theme'), + self.onExportTheme)) + self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget)) #Signals QtCore.QObject.connect(self.ThemeListWidget, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), @@ -109,8 +129,9 @@ class ThemeManager(QtGui.QWidget): u'default')) self.ThemeListWidget.item(count).setText(name) - def changeGlobalFromScreen(self, index): + def changeGlobalFromScreen(self, index = -1): log.debug(u'changeGlobalFromScreen %s', index) + selected_row = self.ThemeListWidget.currentRow() for count in range (0, self.ThemeListWidget.count()): item = self.ThemeListWidget.item(count) oldName = item.text() @@ -119,7 +140,7 @@ class ThemeManager(QtGui.QWidget): self.ThemeListWidget.item(count).setText( unicode(item.data(QtCore.Qt.UserRole).toString())) #Set the new name - if count == index.row(): + if count == selected_row: self.global_theme = unicode( self.ThemeListWidget.item(count).text()) name = u'%s (%s)' % (self.global_theme, @@ -188,12 +209,13 @@ class ThemeManager(QtGui.QWidget): return theme = unicode(item.text()) path = QtGui.QFileDialog.getExistingDirectory(self, - u'Save Theme',self.config.get_last_dir(1) ) + u'Save Theme - (%s)' % theme, + self.config.get_last_dir(1) ) path = unicode(path) if path != u'': self.config.set_last_dir(path, 1) themePath = os.path.join(path, theme + u'.theme') - zip = zipfile.ZipFile(themePath, 'w') + zip = zipfile.ZipFile(themePath, u'w') source = os.path.join(self.path, theme) for root, dirs, files in os.walk(source): for name in files: @@ -203,7 +225,8 @@ class ThemeManager(QtGui.QWidget): def onImportTheme(self): files = QtGui.QFileDialog.getOpenFileNames(None, - translate(u'ThemeManager', u'Select Theme Import File'), + translate(u'ThemeManager', + u'Select Theme Import File'), self.path, u'Theme (*.*)') log.info(u'New Themes %s', unicode(files)) if len(files) > 0: From f53a6fddeb9d12e916fcc4880d92dceaa7b45a11 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 06:47:38 +0100 Subject: [PATCH 2/8] Latest Version checking added --- openlp.pyw | 3 +- openlp/core/ui/mainwindow.py | 16 +++++++++ openlp/core/utils/__init__.py | 1 + openlp/core/utils/latestversion.py | 57 ++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 openlp/core/utils/latestversion.py diff --git a/openlp.pyw b/openlp.pyw index 941ae1e38..203137e1f 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -49,6 +49,7 @@ class OpenLP(QtGui.QApplication): """ Run the OpenLP application. """ + applicationVersion = u'1.9.0' #set the default string encoding try: sys.setappdefaultencoding(u'utf-8') @@ -58,7 +59,7 @@ class OpenLP(QtGui.QApplication): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'process_events'), self.processEvents) self.setApplicationName(u'OpenLP') - self.setApplicationVersion(u'1.9.0') + self.setApplicationVersion(applicationVersion) show_splash = str_to_bool(ConfigHelper.get_registry().get_value( u'general', u'show splash', True)) if show_splash: diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 629269a28..e842412b8 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -33,6 +33,7 @@ from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \ from openlp.core.lib import translate, RenderManager, PluginConfig, \ OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \ buildIcon +from openlp.core.utils import LatestVersion class Ui_MainWindow(object): @@ -524,6 +525,21 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.ThemeManagerContents.loadThemes() log.info(u'Load data from Settings') self.settingsForm.postSetUp() + self.versionCheck() + + def versionCheck(self): + # We do not want this in development! + if log.isEnabledFor(logging.DEBUG): + applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0') + version = LatestVersion(self.generalConfig).checkVersion(applicationVersion) + if applicationVersion != version: + QtGui.QMessageBox.question(None, + translate(u'mainWindow', u'OpenLP version Updated'), + translate(u'mainWindow', u'OpenLP version %s has been updated to version %s' + % (applicationVersion, version)), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), + QtGui.QMessageBox.Ok) + self.generalConfig.set_config(u'Application version', version) def getMonitorNumber(self): diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 0b93ec30f..17a4f5785 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -24,5 +24,6 @@ from registry import Registry from confighelper import ConfigHelper +from latestversion import LatestVersion __all__ = ['Registry', 'ConfigHelper'] diff --git a/openlp/core/utils/latestversion.py b/openlp/core/utils/latestversion.py new file mode 100644 index 000000000..7abc957e8 --- /dev/null +++ b/openlp/core/utils/latestversion.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2009 Raoul Snyman # +# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten # +# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +import logging +import urllib2 +from datetime import datetime + + +class LatestVersion(object): + """ + """ + global log + log = logging.getLogger(u'LatestVersion') + log.info(u'Latest Version detector loaded') + + def __init__(self, config): + self.config = config + + def checkVersion(self, current_version): + version_string = current_version + lastTest = self.config.get_config(u'Application version Test', datetime.now().date()) + thisTest = unicode(datetime.now().date()) + self.config.set_config(u'Application version Test', thisTest) + if lastTest != thisTest: + print "Now check" + version_string = u'' + req = urllib2.Request(u'http://www.openlp.oeg/files/version.txt') + req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') + try: + handle = urllib2.urlopen(req, None, 1) + html = handle.read() + version_string = unicode(html).rstrip() + except IOError, e: + if hasattr(e, u'reason'): + log.exception(u'Reason for failure: %s', e.reason) + return version_string From 56930f1e658d6b63ff4c019868980c2980989f16 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 07:25:37 +0100 Subject: [PATCH 3/8] Correct Theme name for Export if default --- openlp/core/ui/thememanager.py | 4 ++-- openlp/core/utils/latestversion.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 2c32f55dd..e725f755d 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -90,7 +90,7 @@ class ThemeManager(QtGui.QWidget): self.onDeleteTheme)) self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, u':/themes/theme_export.png', - translate(u'ThemeManager', u'Make Global Theme'), + translate(u'ThemeManager', u'Make Global'), self.changeGlobalFromScreen)) self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, u':/themes/theme_export.png', @@ -207,7 +207,7 @@ class ThemeManager(QtGui.QWidget): u'You have not selected a theme!'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) return - theme = unicode(item.text()) + theme = unicode(item.data(QtCore.Qt.UserRole).toString()) path = QtGui.QFileDialog.getExistingDirectory(self, u'Save Theme - (%s)' % theme, self.config.get_last_dir(1) ) diff --git a/openlp/core/utils/latestversion.py b/openlp/core/utils/latestversion.py index 7abc957e8..cd1ea1083 100644 --- a/openlp/core/utils/latestversion.py +++ b/openlp/core/utils/latestversion.py @@ -45,7 +45,7 @@ class LatestVersion(object): if lastTest != thisTest: print "Now check" version_string = u'' - req = urllib2.Request(u'http://www.openlp.oeg/files/version.txt') + req = urllib2.Request(u'http://www.openlp.org/files/version.txt') req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') try: handle = urllib2.urlopen(req, None, 1) From d74b9f6d16c46011d6926ebdb395fe0165364dca Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 07:29:25 +0100 Subject: [PATCH 4/8] Quick code cleanup and fix test for version checking --- openlp/core/lib/dockwidget.py | 5 ----- openlp/core/lib/settingsmanager.py | 10 ---------- openlp/core/ui/mainwindow.py | 2 +- openlp/core/ui/settingsform.py | 15 --------------- 4 files changed, 1 insertion(+), 31 deletions(-) diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index b3d9bb24b..0b788d1a3 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -46,8 +46,3 @@ class OpenLPDockWidget(QtGui.QDockWidget): self.parent.settingsmanager.setUIItemVisibility( self.objectName(), False) event.accept() - - def resizeEvent(self, event): - if self.objectName() == u'MediaManagerDock': - if event.size().width() != event.oldSize().width(): - self.parent.settingsmanager.setDockbarLeft(event.size().width()) diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index a577bbb44..43f148ffd 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -46,11 +46,6 @@ class SettingsManager(object): self.mainwindow_left = mainwindow_docbars self.mainwindow_right = mainwindow_docbars - #self.mainwindow_left = int( ConfigHelper.get_config( - # u'user interface', u'mediamanager left', self.mainwindow_left)) - #self.mainwindow_right = int( ConfigHelper.get_config( - # u'user interface', u'mediamanager right', self.mainwindow_right)) - self.slidecontroller = (self.width - ( self.mainwindow_left + self.mainwindow_right) - 100 ) / 2 self.slidecontroller_image = self.slidecontroller - 50 @@ -79,8 +74,3 @@ class SettingsManager(object): def togglePreviewPanel(self, isVisible): ConfigHelper.set_config(u'user interface', u'display previewpanel', isVisible) - - def setDockbarLeft(self, value): - #ConfigHelper.set_config(u'user interface', u'mediamanager left', value) - pass - diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index e842412b8..c1e9af746 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -529,7 +529,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def versionCheck(self): # We do not want this in development! - if log.isEnabledFor(logging.DEBUG): + if not log.isEnabledFor(logging.DEBUG): applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0') version = LatestVersion(self.generalConfig).checkVersion(applicationVersion) if applicationVersion != version: diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 6203b5982..68ffcfbd3 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -53,28 +53,13 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): def insertTab(self, tab, location): log.debug(u'Inserting %s tab' % tab.title()) self.SettingsTabWidget.insertTab(location + 13, tab, tab.title()) - #for tab_index in range(0, self.SettingsTabWidget.count()): - #print self.SettingsTabWidget.widget(tab_index).title() - #if self.SettingsTabWidget.widget(tab_index).title() == name: - #print "Insert match" - #print self.SettingsTabWidget.widget(tab_index).isVisible() - #self.SettingsTabWidget.setTabEnabled(tab_index, True) - #self.SettingsTabWidget.removeTab(tab_index) - #print self.SettingsTabWidget.widget(tab_index).isVisible() - def removeTab(self, name): log.debug(u'remove %s tab' % name) - #print ">>>>>>>>>>> remove settings" for tab_index in range(0, self.SettingsTabWidget.count()): if self.SettingsTabWidget.widget(tab_index) is not None: - #print "rt", self.SettingsTabWidget.widget(tab_index).title(), name if self.SettingsTabWidget.widget(tab_index).title() == name: - #print "remove match" - #print self.SettingsTabWidget.widget(tab_index).isVisible() - #self.SettingsTabWidget.setTabEnabled(tab_index, False) self.SettingsTabWidget.removeTab(tab_index) - #print self.SettingsTabWidget.widget(tab_index).isVisible() def accept(self): for tab_index in range(0, self.SettingsTabWidget.count()): From aa0450f543c6706a9e7515b72ce7ee88d44dbea1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 08:30:16 +0100 Subject: [PATCH 5/8] Servie Manager DnD part 1 --- openlp/core/ui/servicemanager.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 3c8e03b30..893fed45a 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -490,23 +490,16 @@ class ServiceManager(QtGui.QWidget): Service Item to be added """ - self.serviceItems.append({u'data': item, - u'order': len(self.serviceItems)+1, u'expanded':True}) - treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList) - treewidgetitem.setText(0,item.title) - treewidgetitem.setIcon(0,item.iconic_representation) - treewidgetitem.setData(0, QtCore.Qt.UserRole, - QtCore.QVariant(len(self.serviceItems))) - treewidgetitem.setExpanded(True) + sitem, count = self.findServiceItem() item.render() - count = 0 - for frame in item.frames: - treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem) - text = frame[u'title'] - treewidgetitem1.setText(0,text[:40]) - treewidgetitem1.setData(0, QtCore.Qt.UserRole, - QtCore.QVariant(count)) - count = count + 1 + if sitem == -1: + self.serviceItems.append({u'data': item, + u'order': len(self.serviceItems) + 1, u'expanded':True}) + self.repaintServiceList(len(self.serviceItems) + 1, 0) + else: + self.serviceItems.insert(sitem + 1, {u'data': item, + u'order': len(self.serviceItems)+1, u'expanded':True}) + self.repaintServiceList(sitem + 1, 0) self.parent.serviceChanged(False, self.serviceName) def makePreview(self): From 7431eeb65c02d2a16d65008c5d868ca4bf77b5e0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 10:31:27 +0100 Subject: [PATCH 6/8] Servie Manager DnD part 2 --- openlp/core/ui/servicemanager.py | 37 +++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 893fed45a..b011b8fca 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -66,6 +66,20 @@ class ServiceManagerList(QtGui.QTreeWidget): else: event.ignore() + def mouseMoveEvent(self, event): + """ + Drag and drop event does not care what data is selected + as the recipient will use events to request the data move + just tell it what plugin to call + """ + if event.buttons() != QtCore.Qt.LeftButton: + return + drag = QtGui.QDrag(self) + mimeData = QtCore.QMimeData() + drag.setMimeData(mimeData) + mimeData.setText(u'ServiceManager') + dropAction = drag.start(QtCore.Qt.CopyAction) + class Iter(QtGui.QTreeWidgetItemIterator): def __init__(self, *args): QtGui.QTreeWidgetItemIterator.__init__(self, *args) @@ -558,7 +572,28 @@ class ServiceManager(QtGui.QWidget): link = event.mimeData() if link.hasText(): plugin = event.mimeData().text() - Receiver().send_message(u'%s_add_service_item' % plugin) + if plugin == u'ServiceManager': + startpos, startCount = self.findServiceItem() + item = self.ServiceManagerList.itemAt(event.pos()) + if item == None: + endpos = len(self.serviceItems) + else: + parentitem = item.parent() + if parentitem is None: + endpos = item.data(0, QtCore.Qt.UserRole).toInt()[0] + else: + endpos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] + endpos -= 1 + if endpos < startpos: + newpos = endpos + else: + newpos = endpos + 1 + serviceItem = self.serviceItems[startpos] + self.serviceItems.remove(serviceItem) + self.serviceItems.insert(newpos, serviceItem) + self.repaintServiceList(endpos, startCount) + else: + Receiver().send_message(u'%s_add_service_item' % plugin) def updateThemeList(self, theme_list): """ From 1adb391797fdaaf3c4a22c3094d4b77b6a1314df Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Oct 2009 12:08:47 +0100 Subject: [PATCH 7/8] Audit Cleanup - part 1 --- openlp/plugins/audit/auditplugin.py | 30 +-- .../plugins/audit/forms/auditdeletedialog.py | 8 +- .../plugins/audit/forms/auditdetaildialog.py | 10 +- openlp/plugins/audit/forms/auditdetailform.py | 235 +++--------------- resources/forms/auditdeletedialog.ui | 22 +- resources/forms/auditdetaildialog.ui | 72 +++++- 6 files changed, 136 insertions(+), 241 deletions(-) diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index 1cea0a402..21c0d7b98 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -64,14 +64,7 @@ class AuditPlugin(Plugin): self.AuditMenu.setObjectName(u'AuditMenu') self.AuditMenu.setTitle( translate(u'AuditPlugin', u'&Audit')) - #Audit Delete All - self.AuditDeleteAll = QtGui.QAction(tools_menu) - self.AuditDeleteAll.setText( - translate(u'AuditPlugin', u'Au&dit Delete all')) - self.AuditDeleteAll.setStatusTip( - translate(u'AuditPlugin', u'Deleted all Audit records')) - self.AuditDeleteAll.setObjectName(u'AuditDeleteAll') - #Audit Delete + #Audit Delete self.AuditDelete = QtGui.QAction(tools_menu) self.AuditDelete.setText( translate(u'AuditPlugin', u'Audit &Delete')) @@ -81,9 +74,9 @@ class AuditPlugin(Plugin): #Audit Report self.AuditReport = QtGui.QAction(tools_menu) self.AuditReport.setText( - translate(u'AuditPlugin', u'Au&dit &Report')) + translate(u'AuditPlugin', u'Au&dit &Extract')) self.AuditReport.setStatusTip( - translate(u'AuditPlugin', u'Generate Reports on Audit Data')) + translate(u'AuditPlugin', u'Generate Extracts on Audit Data')) self.AuditReport.setObjectName(u'AuditReport') #Audit activation AuditIcon = buildIcon(u':/tools/tools_alert.png') @@ -100,9 +93,7 @@ class AuditPlugin(Plugin): self.toolsMenu.addAction(self.AuditMenu.menuAction()) self.AuditMenu.addAction(self.AuditStatus) self.AuditMenu.addSeparator() - self.AuditMenu.addAction(self.AuditDeleteAll) self.AuditMenu.addAction(self.AuditDelete) - self.AuditMenu.addSeparator() self.AuditMenu.addAction(self.AuditReport) # Signals and slots QtCore.QObject.connect(self.AuditStatus, @@ -111,8 +102,6 @@ class AuditPlugin(Plugin): QtCore.QObject.connect(self.AuditStatus, QtCore.SIGNAL(u'triggered(bool)'), self.toggleAuditState) - QtCore.QObject.connect(self.AuditDeleteAll, - QtCore.SIGNAL(u'triggered()'), self.onAuditDeleteAll) QtCore.QObject.connect(self.AuditDelete, QtCore.SIGNAL(u'triggered()'), self.onAuditDelete) QtCore.QObject.connect(self.AuditReport, @@ -132,7 +121,7 @@ class AuditPlugin(Plugin): if self.auditmanager is None: self.auditmanager = AuditManager(self.config) self.auditdeleteform = AuditDeleteForm(self.auditmanager) - self.auditdetailform = AuditDetailForm(self.auditmanager) + self.auditdetailform = AuditDetailForm(self) self.AuditMenu.menuAction().setVisible(True) def finalise(self): @@ -170,17 +159,6 @@ class AuditPlugin(Plugin): self.config.get_config(u'audit active', False)) self.AuditStatus.setEnabled(True) - def onAuditDeleteAll(self): - ret = QtGui.QMessageBox.question(None, - translate(u'mainWindow', u'Delete All Audit Events?'), - translate(u'mainWindow', u'Are you sure you want to delete all Audit Data?'), - QtGui.QMessageBox.StandardButtons( - QtGui.QMessageBox.Ok | - QtGui.QMessageBox.Cancel), - QtGui.QMessageBox.Cancel) - if ret == QtGui.QMessageBox.Ok: - self.auditmanager.delete_all() - def onAuditDelete(self): self.auditdeleteform.exec_() diff --git a/openlp/plugins/audit/forms/auditdeletedialog.py b/openlp/plugins/audit/forms/auditdeletedialog.py index e3cf54f49..dddb5c8c5 100644 --- a/openlp/plugins/audit/forms/auditdeletedialog.py +++ b/openlp/plugins/audit/forms/auditdeletedialog.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'auditdeletedialog.ui' # -# Created: Fri Sep 25 21:03:48 2009 +# Created: Sun Oct 11 11:34:45 2009 # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! @@ -12,7 +12,7 @@ from PyQt4 import QtCore, QtGui class Ui_AuditDeleteDialog(object): def setupUi(self, AuditDeleteDialog): AuditDeleteDialog.setObjectName("AuditDeleteDialog") - AuditDeleteDialog.resize(291, 202) + AuditDeleteDialog.resize(291, 243) self.layoutWidget = QtGui.QWidget(AuditDeleteDialog) self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 247, 181)) self.layoutWidget.setObjectName("layoutWidget") @@ -24,10 +24,10 @@ class Ui_AuditDeleteDialog(object): self.DeleteCalendar.setVerticalHeaderFormat(QtGui.QCalendarWidget.NoVerticalHeader) self.DeleteCalendar.setObjectName("DeleteCalendar") self.verticalLayout.addWidget(self.DeleteCalendar) - self.buttonBox = QtGui.QDialogButtonBox(self.layoutWidget) + self.buttonBox = QtGui.QDialogButtonBox(AuditDeleteDialog) + self.buttonBox.setGeometry(QtCore.QRect(30, 210, 245, 25)) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") - self.verticalLayout.addWidget(self.buttonBox) self.retranslateUi(AuditDeleteDialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDeleteDialog.accept) diff --git a/openlp/plugins/audit/forms/auditdetaildialog.py b/openlp/plugins/audit/forms/auditdetaildialog.py index 3a4269433..6eb1ec2e5 100644 --- a/openlp/plugins/audit/forms/auditdetaildialog.py +++ b/openlp/plugins/audit/forms/auditdetaildialog.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'auditdetaildialog.ui' # -# Created: Fri Sep 25 21:04:08 2009 +# Created: Sun Oct 11 11:40:02 2009 # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! @@ -136,6 +136,10 @@ class Ui_AuditDetailDialog(object): self.retranslateUi(AuditDetailDialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDetailDialog.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), AuditDetailDialog.close) + QtCore.QObject.connect(self.FirstCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeFirstService) + QtCore.QObject.connect(self.SecondCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeSecondService) + QtCore.QObject.connect(self.ThirdCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeThirdService) + QtCore.QObject.connect(self.SaveFilePushButton, QtCore.SIGNAL("pressed()"), AuditDetailDialog.defineOutputLocation) QtCore.QMetaObject.connectSlotsByName(AuditDetailDialog) def retranslateUi(self, AuditDetailDialog): @@ -144,11 +148,11 @@ class Ui_AuditDetailDialog(object): self.ReportTypeGroup.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Report Type", None, QtGui.QApplication.UnicodeUTF8)) self.SummaryReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Summary", None, QtGui.QApplication.UnicodeUTF8)) self.DetailedReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Detailed", None, QtGui.QApplication.UnicodeUTF8)) - self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Date Range", None, QtGui.QApplication.UnicodeUTF8)) + self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Date Range", None, QtGui.QApplication.UnicodeUTF8)) self.FromDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8)) self.To.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8)) self.ToDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8)) - self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Time Periods", None, QtGui.QApplication.UnicodeUTF8)) + self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Time Periods", None, QtGui.QApplication.UnicodeUTF8)) self.FirstCheckBox.setText(QtGui.QApplication.translate("AuditDetailDialog", "First Service", None, QtGui.QApplication.UnicodeUTF8)) self.FirstFromTimeEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "hh:mm AP", None, QtGui.QApplication.UnicodeUTF8)) self.FirstTo.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/openlp/plugins/audit/forms/auditdetailform.py b/openlp/plugins/audit/forms/auditdetailform.py index 1e2dea877..42834b378 100644 --- a/openlp/plugins/audit/forms/auditdetailform.py +++ b/openlp/plugins/audit/forms/auditdetailform.py @@ -32,209 +32,48 @@ class AuditDetailForm(QtGui.QDialog, Ui_AuditDetailDialog): """ Class documentation goes here. """ - def __init__(self, auditmanager, parent = None): + def __init__(self, parent = None): """ Constructor """ - QtGui.QDialog.__init__(self, parent) - #self.parent = parent + QtGui.QDialog.__init__(self, None) + self.parent = parent self.setupUi(self) -# # Connecting signals and slots -# QtCore.QObject.connect(self.buttonBox, -# QtCore.SIGNAL(u'rejected()'), self.rejected) -# QtCore.QObject.connect(self.buttonBox, -# QtCore.SIGNAL(u'accepted()'), self.accept) -# QtCore.QObject.connect(self.AddButton, -# QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed) -# QtCore.QObject.connect(self.EditButton, -# QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed) -# QtCore.QObject.connect(self.EditAllButton, -# QtCore.SIGNAL(u'pressed()'), self.onEditAllButtonPressed) -# QtCore.QObject.connect(self.SaveButton, -# QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed) -# QtCore.QObject.connect(self.DeleteButton, -# QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed) -# QtCore.QObject.connect(self.ClearButton, -# QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed) -# QtCore.QObject.connect(self.UpButton, -# QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed) -# QtCore.QObject.connect(self.DownButton, -# QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed) -# -# QtCore.QObject.connect(self.VerseListView, -# QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), -# self.onVerseListViewSelected) -# QtCore.QObject.connect(self.VerseListView, -# QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), -# self.onVerseListViewPressed) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'update_themes'), self.loadThemes) -# # Create other objects and forms -# self.custommanager = custommanager self.initialise() def initialise(self): + self.firstService = \ + int(self.parent.config.get_config(u'first service', QtCore.Qt.Checked)) + self.secondService = \ + int(self.parent.config.get_config(u'second service', QtCore.Qt.Checked)) + self.resetWindow() + + def changeFirstService(self, value): + self.firstService = value + self.parent.config.set_config(u'first service', value) + self.resetWindow() + + def changeSecondService(self, value): + self.secondService = value + self.parent.config.set_config(u'second service', value) + self.resetWindow() + + def changeThirdService(self, value): pass -# self.editAll = False -# self.DeleteButton.setEnabled(False) -# self.EditButton.setEnabled(False) -# self.EditAllButton.setEnabled(True) -# self.SaveButton.setEnabled(False) -# self.ClearButton.setEnabled(False) -# self.TitleEdit.setText(u'') -# self.CreditEdit.setText(u'') -# self.VerseTextEdit.clear() -# self.VerseListView.clear() -# #make sure we have a new item -# self.customSlide = CustomSlide() -# self.ThemeComboBox.addItem(u'') -# -# def loadThemes(self, themelist): -# self.ThemeComboBox.clear() -# self.ThemeComboBox.addItem(u'') -# for themename in themelist: -# self.ThemeComboBox.addItem(themename) -# -# def loadCustom(self, id): -# self.customSlide = CustomSlide() -# self.initialise() -# if id != 0: -# self.customSlide = self.custommanager.get_custom(id) -# self.TitleEdit.setText(self.customSlide.title) -# self.CreditEdit.setText(self.customSlide.credits) -# -# songXML = SongXMLParser(self.customSlide.text) -# verseList = songXML.get_verses() -# for verse in verseList: -# self.VerseListView.addItem(verse[1]) -# theme = unicode(self.customSlide.theme_name) -# id = self.ThemeComboBox.findText(theme, QtCore.Qt.MatchExactly) -# if id == -1: -# id = 0 # Not Found -# self.ThemeComboBox.setCurrentIndex(id) -# else: -# self.ThemeComboBox.setCurrentIndex(0) -# -# def accept(self): -# valid, message = self._validate() -# if not valid: -# QtGui.QMessageBox.critical(self, -# translate(u'customEditDialog', u'Error'), message, -# QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) -# return -# sxml = SongXMLBuilder() -# sxml.new_document() -# sxml.add_lyrics_to_song() -# count = 1 -# for i in range (0, self.VerseListView.count()): -# sxml.add_verse_to_lyrics( -# u'custom', unicode(count), -# unicode(self.VerseListView.item(i).text())) -# count += 1 -# self.customSlide.title = unicode(self.TitleEdit.displayText()) -# self.customSlide.text = unicode(sxml.extract_xml()) -# self.customSlide.credits = unicode(self.CreditEdit.displayText()) -# self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText()) -# self.custommanager.save_slide(self.customSlide) -# self.close() -# -# def rejected(self): -# self.close() -# -# def onUpButtonPressed(self): -# selectedRow = self.VerseListView.currentRow() -# if selectedRow != 0: -# qw = self.VerseListView.takeItem(selectedRow) -# self.VerseListView.insertItem(selectedRow - 1, qw) -# self.VerseListView.setCurrentRow(selectedRow - 1) -# -# def onDownButtonPressed(self): -# selectedRow = self.VerseListView.currentRow() -# # zero base arrays -# if selectedRow != self.VerseListView.count() - 1: -# qw = self.VerseListView.takeItem(selectedRow) -# self.VerseListView.insertItem(selectedRow + 1, qw) -# self.VerseListView.setCurrentRow(selectedRow + 1) -# -# def onClearButtonPressed(self): -# self.VerseTextEdit.clear() -# self.editAll = False -# self.AddButton.setEnabled(True) -# self.EditAllButton.setEnabled(True) -# self.SaveButton.setEnabled(False) -# -# def onVerseListViewPressed(self, item): -# self.DeleteButton.setEnabled(True) -# self.EditButton.setEnabled(True) -# -# def onVerseListViewSelected(self, item): -# self.editText(item.text()) -# -# def onAddButtonPressed(self): -# self.VerseListView.addItem(self.VerseTextEdit.toPlainText()) -# self.DeleteButton.setEnabled(False) -# self.VerseTextEdit.clear() -# -# def onEditButtonPressed(self): -# self.editText(self.VerseListView.currentItem().text()) -# -# def onEditAllButtonPressed(self): -# self.editAll = True -# self.AddButton.setEnabled(False) -# if self.VerseListView.count() > 0: -# verse_list = u'' -# for row in range(0, self.VerseListView.count()): -# item = self.VerseListView.item(row) -# verse_list += item.text() -# verse_list += u'\n---\n' -# self.editText(verse_list) -# -# def editText(self, text): -# self.beforeText = text -# self.VerseTextEdit.setPlainText(text) -# self.DeleteButton.setEnabled(False) -# self.EditButton.setEnabled(False) -# self.EditAllButton.setEnabled(False) -# self.SaveButton.setEnabled(True) -# self.ClearButton.setEnabled(True) -# -# def onSaveButtonPressed(self): -# if self.editAll: -# self.VerseListView.clear() -# for row in unicode(self.VerseTextEdit.toPlainText()).split(u'\n---\n'): -# self.VerseListView.addItem(row) -# else: -# self.VerseListView.currentItem().setText( -# self.VerseTextEdit.toPlainText()) -# #number of lines has change -# if len(self.beforeText.split(u'\n')) != \ -# len(self.VerseTextEdit.toPlainText().split(u'\n')): -# tempList = {} -# for row in range(0, self.VerseListView.count()): -# tempList[row] = self.VerseListView.item(row).text() -# self.VerseListView.clear() -# for row in range (0, len(tempList)): -# self.VerseListView.addItem(tempList[row]) -# self.VerseListView.repaint() -# self.AddButton.setEnabled(True) -# self.SaveButton.setEnabled(False) -# self.EditButton.setEnabled(False) -# self.EditAllButton.setEnabled(True) -# self.VerseTextEdit.clear() -# -# def onDeleteButtonPressed(self): -# self.VerseListView.takeItem(self.VerseListView.currentRow()) -# self.EditButton.setEnabled(False) -# self.EditAllButton.setEnabled(True) -# -# def _validate(self): -# if len(self.TitleEdit.displayText()) == 0: -# self.TitleEdit.setFocus() -# return False, translate( -# u'customEditDialog', u'You need to enter a title \n') -# # must have 1 slide -# if self.VerseListView.count() == 0: -# self.VerseTextEdit.setFocus() -# return False, translate( -# u'customEditDialog', u'You need to enter a slide \n') -# return True, u'' + + def defineOutputLocation(self): + pass + + def resetWindow(self): + if self.firstService == QtCore.Qt.Unchecked: + self.FirstFromTimeEdit.setEnabled(False) + self.FirstToTimeEdit.setEnabled(False) + else: + self.FirstFromTimeEdit.setEnabled(True) + self.FirstToTimeEdit.setEnabled(True) + if self.secondService == QtCore.Qt.Unchecked: + self.SecondFromTimeEdit.setEnabled(False) + self.SecondToTimeEdit.setEnabled(False) + else: + self.SecondFromTimeEdit.setEnabled(True) + self.SecondToTimeEdit.setEnabled(True) diff --git a/resources/forms/auditdeletedialog.ui b/resources/forms/auditdeletedialog.ui index 47aab12b0..5687f818c 100644 --- a/resources/forms/auditdeletedialog.ui +++ b/resources/forms/auditdeletedialog.ui @@ -7,7 +7,7 @@ 0 0 291 - 202 + 243 @@ -36,15 +36,21 @@ - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - + + + + 30 + 210 + 245 + 25 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + diff --git a/resources/forms/auditdetaildialog.ui b/resources/forms/auditdetaildialog.ui index f1d45d369..bafcfd535 100644 --- a/resources/forms/auditdetaildialog.ui +++ b/resources/forms/auditdetaildialog.ui @@ -108,7 +108,7 @@ - Date Range + Select Date Range @@ -148,7 +148,7 @@ - Time Periods + Select Time Periods @@ -336,8 +336,76 @@ + + FirstCheckBox + stateChanged(int) + AuditDetailDialog + changeFirstService(int) + + + 26 + 285 + + + 136 + 483 + + + + + SecondCheckBox + stateChanged(int) + AuditDetailDialog + changeSecondService(int) + + + 41 + 323 + + + 103 + 494 + + + + + ThirdCheckBox + stateChanged(int) + AuditDetailDialog + changeThirdService(int) + + + 38 + 351 + + + 155 + 463 + + + + + SaveFilePushButton + pressed() + AuditDetailDialog + defineOutputLocation() + + + 538 + 419 + + + 385 + 480 + + + accept() + changeFirstService(int) + changeSecondService(int) + changeThirdService(int) + defineOutputLocation() From d0b501bd2fc16410e3c9528ba4e82ce158292960 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 12 Oct 2009 05:43:02 +0100 Subject: [PATCH 8/8] Fixes to last merge request --- openlp/core/ui/mainwindow.py | 5 +- openlp/core/utils/__init__.py | 22 ++++++- openlp/core/utils/latestversion.py | 57 ------------------- openlp/plugins/audit/forms/auditdeleteform.py | 2 +- openlp/plugins/audit/forms/auditdetailform.py | 2 +- 5 files changed, 25 insertions(+), 63 deletions(-) delete mode 100644 openlp/core/utils/latestversion.py diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 3a4193f01..67b9bcd3d 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -33,8 +33,7 @@ from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \ from openlp.core.lib import translate, RenderManager, PluginConfig, \ OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \ buildIcon -from openlp.core.utils import LatestVersion - +from openlp.core.utils import check_latest_version class Ui_MainWindow(object): def setupUi(self, MainWindow): @@ -529,7 +528,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def versionCheck(self): applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0-595') - version = LatestVersion(self.generalConfig).checkVersion(applicationVersion) + version = check_latest_version(self.generalConfig, applicationVersion) if applicationVersion != version: QtGui.QMessageBox.question(None, translate(u'mainWindow', u'OpenLP version Updated'), diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 17a4f5785..de12084ea 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -21,9 +21,29 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +import logging +import urllib2 +from datetime import datetime from registry import Registry from confighelper import ConfigHelper -from latestversion import LatestVersion __all__ = ['Registry', 'ConfigHelper'] + +def check_latest_version(config, current_version): + version_string = current_version + lastTest = config.get_config(u'Application version Test', datetime.now().date()) + thisTest = unicode(datetime.now().date()) + config.set_config(u'Application version Test', thisTest) + if lastTest != thisTest: + version_string = u'' + req = urllib2.Request(u'http://www.openlp.org/files/version.txt') + req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') + try: + handle = urllib2.urlopen(req, None, 1) + html = handle.read() + version_string = unicode(html).rstrip() + except IOError, e: + if hasattr(e, u'reason'): + log.exception(u'Reason for failure: %s', e.reason) + return version_string diff --git a/openlp/core/utils/latestversion.py b/openlp/core/utils/latestversion.py deleted file mode 100644 index cd1ea1083..000000000 --- a/openlp/core/utils/latestversion.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2009 Raoul Snyman # -# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten # -# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -import logging -import urllib2 -from datetime import datetime - - -class LatestVersion(object): - """ - """ - global log - log = logging.getLogger(u'LatestVersion') - log.info(u'Latest Version detector loaded') - - def __init__(self, config): - self.config = config - - def checkVersion(self, current_version): - version_string = current_version - lastTest = self.config.get_config(u'Application version Test', datetime.now().date()) - thisTest = unicode(datetime.now().date()) - self.config.set_config(u'Application version Test', thisTest) - if lastTest != thisTest: - print "Now check" - version_string = u'' - req = urllib2.Request(u'http://www.openlp.org/files/version.txt') - req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') - try: - handle = urllib2.urlopen(req, None, 1) - html = handle.read() - version_string = unicode(html).rstrip() - except IOError, e: - if hasattr(e, u'reason'): - log.exception(u'Reason for failure: %s', e.reason) - return version_string diff --git a/openlp/plugins/audit/forms/auditdeleteform.py b/openlp/plugins/audit/forms/auditdeleteform.py index e91545433..fbe07d142 100644 --- a/openlp/plugins/audit/forms/auditdeleteform.py +++ b/openlp/plugins/audit/forms/auditdeleteform.py @@ -34,7 +34,7 @@ class AuditDeleteForm(QtGui.QDialog, Ui_AuditDeleteDialog): """ Class documentation goes here. """ - def __init__(self, auditmanager, parent = None): + def __init__(self, auditmanager, parent=None): """ Constructor """ diff --git a/openlp/plugins/audit/forms/auditdetailform.py b/openlp/plugins/audit/forms/auditdetailform.py index 42834b378..74e28f394 100644 --- a/openlp/plugins/audit/forms/auditdetailform.py +++ b/openlp/plugins/audit/forms/auditdetailform.py @@ -32,7 +32,7 @@ class AuditDetailForm(QtGui.QDialog, Ui_AuditDetailDialog): """ Class documentation goes here. """ - def __init__(self, parent = None): + def __init__(self, parent=None): """ Constructor """