Merge lp:~trb143/openlp/bitsandbobs into lp:openlp
- bitsandbobs
- Merge into trunk
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 |
Related bugs: |
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.
Commit message
Description of the change
Tim Bentley (trb143) wrote : Posted in a previous version of this proposal | # |
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.
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.
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+
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.
- 596. By Jonathan Corwin
-
More Presentation fixes
- 597. By Tim Bentley
-
Various changes and fixes
Preview Diff
1 | === modified file 'openlp.pyw' |
2 | --- openlp.pyw 2009-09-29 12:51:38 +0000 |
3 | +++ openlp.pyw 2009-10-12 05:00:34 +0000 |
4 | @@ -49,6 +49,7 @@ |
5 | """ |
6 | Run the OpenLP application. |
7 | """ |
8 | + applicationVersion = u'1.9.0' |
9 | #set the default string encoding |
10 | try: |
11 | sys.setappdefaultencoding(u'utf-8') |
12 | @@ -58,7 +59,7 @@ |
13 | QtCore.QObject.connect(Receiver.get_receiver(), |
14 | QtCore.SIGNAL(u'process_events'), self.processEvents) |
15 | self.setApplicationName(u'OpenLP') |
16 | - self.setApplicationVersion(u'1.9.0') |
17 | + self.setApplicationVersion(applicationVersion) |
18 | show_splash = str_to_bool(ConfigHelper.get_registry().get_value( |
19 | u'general', u'show splash', True)) |
20 | if show_splash: |
21 | |
22 | === modified file 'openlp/core/lib/dockwidget.py' |
23 | --- openlp/core/lib/dockwidget.py 2009-09-29 12:51:38 +0000 |
24 | +++ openlp/core/lib/dockwidget.py 2009-10-12 05:00:34 +0000 |
25 | @@ -46,8 +46,3 @@ |
26 | self.parent.settingsmanager.setUIItemVisibility( |
27 | self.objectName(), False) |
28 | event.accept() |
29 | - |
30 | - def resizeEvent(self, event): |
31 | - if self.objectName() == u'MediaManagerDock': |
32 | - if event.size().width() != event.oldSize().width(): |
33 | - self.parent.settingsmanager.setDockbarLeft(event.size().width()) |
34 | |
35 | === modified file 'openlp/core/lib/mediamanageritem.py' |
36 | --- openlp/core/lib/mediamanageritem.py 2009-10-03 13:08:18 +0000 |
37 | +++ openlp/core/lib/mediamanageritem.py 2009-10-12 05:00:34 +0000 |
38 | @@ -281,22 +281,22 @@ |
39 | self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) |
40 | if self.hasEditIcon: |
41 | self.ListView.addAction(contextMenuAction(self.ListView, |
42 | - ':' +self.IconPath+u'_new.png', |
43 | + u':' +self.IconPath+u'_new.png', |
44 | translate(self.TranslationContext, |
45 | u'&Edit ' + self.PluginTextShort), |
46 | self.onEditClick)) |
47 | self.ListView.addAction(contextMenuSeparator(self.ListView)) |
48 | self.ListView.addAction(contextMenuAction( |
49 | - self.ListView, ':/system/system_preview.png', |
50 | + self.ListView, u':/system/system_preview.png', |
51 | translate(self.TranslationContext, |
52 | u'&Preview ' + self.PluginTextShort), |
53 | self.onPreviewClick)) |
54 | self.ListView.addAction(contextMenuAction( |
55 | - self.ListView, ':/system/system_live.png', |
56 | + self.ListView, u':/system/system_live.png', |
57 | translate(self.TranslationContext, u'&Show Live'), |
58 | self.onLiveClick)) |
59 | self.ListView.addAction(contextMenuAction( |
60 | - self.ListView, ':/system/system_add.png', |
61 | + self.ListView, u':/system/system_add.png', |
62 | translate(self.TranslationContext, u'&Add to Service'), |
63 | self.onAddClick)) |
64 | QtCore.QObject.connect(self.ListView, |
65 | |
66 | === modified file 'openlp/core/lib/pluginmanager.py' |
67 | --- openlp/core/lib/pluginmanager.py 2009-10-10 04:56:06 +0000 |
68 | +++ openlp/core/lib/pluginmanager.py 2009-10-12 05:00:34 +0000 |
69 | @@ -90,7 +90,7 @@ |
70 | try: |
71 | __import__(modulename, globals(), locals(), []) |
72 | except ImportError, e: |
73 | - log.error(u'Failed to import module %s on path %s for reason %s', |
74 | + log.exception(u'Failed to import module %s on path %s for reason %s', |
75 | modulename, path, e.args[0]) |
76 | plugin_classes = Plugin.__subclasses__() |
77 | self.plugins = [] |
78 | |
79 | === modified file 'openlp/core/lib/settingsmanager.py' |
80 | --- openlp/core/lib/settingsmanager.py 2009-09-29 17:05:34 +0000 |
81 | +++ openlp/core/lib/settingsmanager.py 2009-10-12 05:00:34 +0000 |
82 | @@ -46,11 +46,6 @@ |
83 | self.mainwindow_left = mainwindow_docbars |
84 | self.mainwindow_right = mainwindow_docbars |
85 | |
86 | - #self.mainwindow_left = int( ConfigHelper.get_config( |
87 | - # u'user interface', u'mediamanager left', self.mainwindow_left)) |
88 | - #self.mainwindow_right = int( ConfigHelper.get_config( |
89 | - # u'user interface', u'mediamanager right', self.mainwindow_right)) |
90 | - |
91 | self.slidecontroller = (self.width - ( |
92 | self.mainwindow_left + self.mainwindow_right) - 100 ) / 2 |
93 | self.slidecontroller_image = self.slidecontroller - 50 |
94 | @@ -79,8 +74,3 @@ |
95 | def togglePreviewPanel(self, isVisible): |
96 | ConfigHelper.set_config(u'user interface', u'display previewpanel', |
97 | isVisible) |
98 | - |
99 | - def setDockbarLeft(self, value): |
100 | - #ConfigHelper.set_config(u'user interface', u'mediamanager left', value) |
101 | - pass |
102 | - |
103 | |
104 | === modified file 'openlp/core/ui/mainwindow.py' |
105 | --- openlp/core/ui/mainwindow.py 2009-10-10 12:10:05 +0000 |
106 | +++ openlp/core/ui/mainwindow.py 2009-10-12 05:00:34 +0000 |
107 | @@ -33,7 +33,7 @@ |
108 | from openlp.core.lib import translate, RenderManager, PluginConfig, \ |
109 | OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \ |
110 | buildIcon |
111 | - |
112 | +from openlp.core.utils import check_latest_version |
113 | |
114 | class Ui_MainWindow(object): |
115 | def setupUi(self, MainWindow): |
116 | @@ -524,6 +524,19 @@ |
117 | self.ThemeManagerContents.loadThemes() |
118 | log.info(u'Load data from Settings') |
119 | self.settingsForm.postSetUp() |
120 | + self.versionCheck() |
121 | + |
122 | + def versionCheck(self): |
123 | + applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0-595') |
124 | + version = check_latest_version(self.generalConfig, applicationVersion) |
125 | + if applicationVersion != version: |
126 | + QtGui.QMessageBox.question(None, |
127 | + translate(u'mainWindow', u'OpenLP version Updated'), |
128 | + translate(u'mainWindow', u'OpenLP version %s has been updated to version %s' |
129 | + % (applicationVersion, version)), |
130 | + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), |
131 | + QtGui.QMessageBox.Ok) |
132 | + self.generalConfig.set_config(u'Application version', version) |
133 | |
134 | |
135 | def getMonitorNumber(self): |
136 | |
137 | === modified file 'openlp/core/ui/pluginform.py' |
138 | --- openlp/core/ui/pluginform.py 2009-10-08 19:58:49 +0000 |
139 | +++ openlp/core/ui/pluginform.py 2009-10-12 05:00:34 +0000 |
140 | @@ -83,7 +83,11 @@ |
141 | log.debug('PluginStatus: %s', str(self.activePlugin.status)) |
142 | self.VersionNumberLabel.setText(self.activePlugin.version) |
143 | self.AboutTextBrowser.setHtml(self.activePlugin.about()) |
144 | - self.StatusComboBox.setCurrentIndex(int(self.activePlugin.status)) |
145 | + if self.activePlugin.can_be_disabled(): |
146 | + self.StatusComboBox.setCurrentIndex(int(self.activePlugin.status)) |
147 | + self.StatusComboBox.setEnabled(True) |
148 | + else: |
149 | + self.StatusComboBox.setEnabled(False) |
150 | |
151 | def onPluginListWidgetSelectionChanged(self): |
152 | if self.PluginListWidget.currentItem() is None: |
153 | |
154 | === modified file 'openlp/core/ui/servicemanager.py' |
155 | --- openlp/core/ui/servicemanager.py 2009-10-01 16:56:42 +0000 |
156 | +++ openlp/core/ui/servicemanager.py 2009-10-12 05:00:34 +0000 |
157 | @@ -66,6 +66,20 @@ |
158 | else: |
159 | event.ignore() |
160 | |
161 | + def mouseMoveEvent(self, event): |
162 | + """ |
163 | + Drag and drop event does not care what data is selected |
164 | + as the recipient will use events to request the data move |
165 | + just tell it what plugin to call |
166 | + """ |
167 | + if event.buttons() != QtCore.Qt.LeftButton: |
168 | + return |
169 | + drag = QtGui.QDrag(self) |
170 | + mimeData = QtCore.QMimeData() |
171 | + drag.setMimeData(mimeData) |
172 | + mimeData.setText(u'ServiceManager') |
173 | + dropAction = drag.start(QtCore.Qt.CopyAction) |
174 | + |
175 | class Iter(QtGui.QTreeWidgetItemIterator): |
176 | def __init__(self, *args): |
177 | QtGui.QTreeWidgetItemIterator.__init__(self, *args) |
178 | @@ -490,23 +504,16 @@ |
179 | Service Item to be added |
180 | |
181 | """ |
182 | - self.serviceItems.append({u'data': item, |
183 | - u'order': len(self.serviceItems)+1, u'expanded':True}) |
184 | - treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList) |
185 | - treewidgetitem.setText(0,item.title) |
186 | - treewidgetitem.setIcon(0,item.iconic_representation) |
187 | - treewidgetitem.setData(0, QtCore.Qt.UserRole, |
188 | - QtCore.QVariant(len(self.serviceItems))) |
189 | - treewidgetitem.setExpanded(True) |
190 | + sitem, count = self.findServiceItem() |
191 | item.render() |
192 | - count = 0 |
193 | - for frame in item.frames: |
194 | - treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem) |
195 | - text = frame[u'title'] |
196 | - treewidgetitem1.setText(0,text[:40]) |
197 | - treewidgetitem1.setData(0, QtCore.Qt.UserRole, |
198 | - QtCore.QVariant(count)) |
199 | - count = count + 1 |
200 | + if sitem == -1: |
201 | + self.serviceItems.append({u'data': item, |
202 | + u'order': len(self.serviceItems) + 1, u'expanded':True}) |
203 | + self.repaintServiceList(len(self.serviceItems) + 1, 0) |
204 | + else: |
205 | + self.serviceItems.insert(sitem + 1, {u'data': item, |
206 | + u'order': len(self.serviceItems)+1, u'expanded':True}) |
207 | + self.repaintServiceList(sitem + 1, 0) |
208 | self.parent.serviceChanged(False, self.serviceName) |
209 | |
210 | def makePreview(self): |
211 | @@ -565,7 +572,28 @@ |
212 | link = event.mimeData() |
213 | if link.hasText(): |
214 | plugin = event.mimeData().text() |
215 | - Receiver().send_message(u'%s_add_service_item' % plugin) |
216 | + if plugin == u'ServiceManager': |
217 | + startpos, startCount = self.findServiceItem() |
218 | + item = self.ServiceManagerList.itemAt(event.pos()) |
219 | + if item == None: |
220 | + endpos = len(self.serviceItems) |
221 | + else: |
222 | + parentitem = item.parent() |
223 | + if parentitem is None: |
224 | + endpos = item.data(0, QtCore.Qt.UserRole).toInt()[0] |
225 | + else: |
226 | + endpos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] |
227 | + endpos -= 1 |
228 | + if endpos < startpos: |
229 | + newpos = endpos |
230 | + else: |
231 | + newpos = endpos + 1 |
232 | + serviceItem = self.serviceItems[startpos] |
233 | + self.serviceItems.remove(serviceItem) |
234 | + self.serviceItems.insert(newpos, serviceItem) |
235 | + self.repaintServiceList(endpos, startCount) |
236 | + else: |
237 | + Receiver().send_message(u'%s_add_service_item' % plugin) |
238 | |
239 | def updateThemeList(self, theme_list): |
240 | """ |
241 | |
242 | === modified file 'openlp/core/ui/settingsform.py' |
243 | --- openlp/core/ui/settingsform.py 2009-10-10 04:56:06 +0000 |
244 | +++ openlp/core/ui/settingsform.py 2009-10-12 05:00:34 +0000 |
245 | @@ -53,28 +53,13 @@ |
246 | def insertTab(self, tab, location): |
247 | log.debug(u'Inserting %s tab' % tab.title()) |
248 | self.SettingsTabWidget.insertTab(location + 13, tab, tab.title()) |
249 | - #for tab_index in range(0, self.SettingsTabWidget.count()): |
250 | - #print self.SettingsTabWidget.widget(tab_index).title() |
251 | - #if self.SettingsTabWidget.widget(tab_index).title() == name: |
252 | - #print "Insert match" |
253 | - #print self.SettingsTabWidget.widget(tab_index).isVisible() |
254 | - #self.SettingsTabWidget.setTabEnabled(tab_index, True) |
255 | - #self.SettingsTabWidget.removeTab(tab_index) |
256 | - #print self.SettingsTabWidget.widget(tab_index).isVisible() |
257 | - |
258 | |
259 | def removeTab(self, name): |
260 | log.debug(u'remove %s tab' % name) |
261 | - #print ">>>>>>>>>>> remove settings" |
262 | for tab_index in range(0, self.SettingsTabWidget.count()): |
263 | if self.SettingsTabWidget.widget(tab_index) is not None: |
264 | - #print "rt", self.SettingsTabWidget.widget(tab_index).title(), name |
265 | if self.SettingsTabWidget.widget(tab_index).title() == name: |
266 | - #print "remove match" |
267 | - #print self.SettingsTabWidget.widget(tab_index).isVisible() |
268 | - #self.SettingsTabWidget.setTabEnabled(tab_index, False) |
269 | self.SettingsTabWidget.removeTab(tab_index) |
270 | - #print self.SettingsTabWidget.widget(tab_index).isVisible() |
271 | |
272 | def accept(self): |
273 | for tab_index in range(0, self.SettingsTabWidget.count()): |
274 | |
275 | === modified file 'openlp/core/ui/thememanager.py' |
276 | --- openlp/core/ui/thememanager.py 2009-09-25 00:43:42 +0000 |
277 | +++ openlp/core/ui/thememanager.py 2009-10-12 05:00:34 +0000 |
278 | @@ -33,7 +33,8 @@ |
279 | from openlp.core.ui import AmendThemeForm |
280 | from openlp.core.theme import Theme |
281 | from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, translate, \ |
282 | - str_to_bool, file_to_xml, buildIcon, Receiver |
283 | + str_to_bool, file_to_xml, buildIcon, Receiver, contextMenuAction, \ |
284 | + contextMenuSeparator |
285 | from openlp.core.utils import ConfigHelper |
286 | |
287 | class ThemeManager(QtGui.QWidget): |
288 | @@ -77,6 +78,25 @@ |
289 | self.ThemeListWidget.setAlternatingRowColors(True) |
290 | self.ThemeListWidget.setIconSize(QtCore.QSize(88,50)) |
291 | self.Layout.addWidget(self.ThemeListWidget) |
292 | + self.ThemeListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) |
293 | + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, |
294 | + u':/themes/theme_edit.png', |
295 | + translate(u'ThemeManager', u'Edit a theme'), |
296 | + self.onEditTheme)) |
297 | + self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget)) |
298 | + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, |
299 | + u':/themes/theme_delete.png', |
300 | + translate(u'ThemeManager', u'Delete theme'), |
301 | + self.onDeleteTheme)) |
302 | + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, |
303 | + u':/themes/theme_export.png', |
304 | + translate(u'ThemeManager', u'Make Global'), |
305 | + self.changeGlobalFromScreen)) |
306 | + self.ThemeListWidget.addAction(contextMenuAction(self.ThemeListWidget, |
307 | + u':/themes/theme_export.png', |
308 | + translate(u'ThemeManager', u'Export theme'), |
309 | + self.onExportTheme)) |
310 | + self.ThemeListWidget.addAction(contextMenuSeparator(self.ThemeListWidget)) |
311 | #Signals |
312 | QtCore.QObject.connect(self.ThemeListWidget, |
313 | QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), |
314 | @@ -109,8 +129,9 @@ |
315 | u'default')) |
316 | self.ThemeListWidget.item(count).setText(name) |
317 | |
318 | - def changeGlobalFromScreen(self, index): |
319 | + def changeGlobalFromScreen(self, index = -1): |
320 | log.debug(u'changeGlobalFromScreen %s', index) |
321 | + selected_row = self.ThemeListWidget.currentRow() |
322 | for count in range (0, self.ThemeListWidget.count()): |
323 | item = self.ThemeListWidget.item(count) |
324 | oldName = item.text() |
325 | @@ -119,7 +140,7 @@ |
326 | self.ThemeListWidget.item(count).setText( |
327 | unicode(item.data(QtCore.Qt.UserRole).toString())) |
328 | #Set the new name |
329 | - if count == index.row(): |
330 | + if count == selected_row: |
331 | self.global_theme = unicode( |
332 | self.ThemeListWidget.item(count).text()) |
333 | name = u'%s (%s)' % (self.global_theme, |
334 | @@ -186,14 +207,15 @@ |
335 | u'You have not selected a theme!'), |
336 | QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) |
337 | return |
338 | - theme = unicode(item.text()) |
339 | + theme = unicode(item.data(QtCore.Qt.UserRole).toString()) |
340 | path = QtGui.QFileDialog.getExistingDirectory(self, |
341 | - u'Save Theme',self.config.get_last_dir(1) ) |
342 | + u'Save Theme - (%s)' % theme, |
343 | + self.config.get_last_dir(1) ) |
344 | path = unicode(path) |
345 | if path != u'': |
346 | self.config.set_last_dir(path, 1) |
347 | themePath = os.path.join(path, theme + u'.theme') |
348 | - zip = zipfile.ZipFile(themePath, 'w') |
349 | + zip = zipfile.ZipFile(themePath, u'w') |
350 | source = os.path.join(self.path, theme) |
351 | for root, dirs, files in os.walk(source): |
352 | for name in files: |
353 | @@ -203,7 +225,8 @@ |
354 | |
355 | def onImportTheme(self): |
356 | files = QtGui.QFileDialog.getOpenFileNames(None, |
357 | - translate(u'ThemeManager', u'Select Theme Import File'), |
358 | + translate(u'ThemeManager', |
359 | + u'Select Theme Import File'), |
360 | self.path, u'Theme (*.*)') |
361 | log.info(u'New Themes %s', unicode(files)) |
362 | if len(files) > 0: |
363 | |
364 | === modified file 'openlp/core/utils/__init__.py' |
365 | --- openlp/core/utils/__init__.py 2009-09-08 19:58:05 +0000 |
366 | +++ openlp/core/utils/__init__.py 2009-10-12 05:00:34 +0000 |
367 | @@ -21,8 +21,29 @@ |
368 | # with this program; if not, write to the Free Software Foundation, Inc., 59 # |
369 | # Temple Place, Suite 330, Boston, MA 02111-1307 USA # |
370 | ############################################################################### |
371 | +import logging |
372 | +import urllib2 |
373 | +from datetime import datetime |
374 | |
375 | from registry import Registry |
376 | from confighelper import ConfigHelper |
377 | |
378 | __all__ = ['Registry', 'ConfigHelper'] |
379 | + |
380 | +def check_latest_version(config, current_version): |
381 | + version_string = current_version |
382 | + lastTest = config.get_config(u'Application version Test', datetime.now().date()) |
383 | + thisTest = unicode(datetime.now().date()) |
384 | + config.set_config(u'Application version Test', thisTest) |
385 | + if lastTest != thisTest: |
386 | + version_string = u'' |
387 | + req = urllib2.Request(u'http://www.openlp.org/files/version.txt') |
388 | + req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') |
389 | + try: |
390 | + handle = urllib2.urlopen(req, None, 1) |
391 | + html = handle.read() |
392 | + version_string = unicode(html).rstrip() |
393 | + except IOError, e: |
394 | + if hasattr(e, u'reason'): |
395 | + log.exception(u'Reason for failure: %s', e.reason) |
396 | + return version_string |
397 | |
398 | === modified file 'openlp/plugins/audit/auditplugin.py' |
399 | --- openlp/plugins/audit/auditplugin.py 2009-10-03 18:39:44 +0000 |
400 | +++ openlp/plugins/audit/auditplugin.py 2009-10-12 05:00:34 +0000 |
401 | @@ -64,14 +64,7 @@ |
402 | self.AuditMenu.setObjectName(u'AuditMenu') |
403 | self.AuditMenu.setTitle( |
404 | translate(u'AuditPlugin', u'&Audit')) |
405 | - #Audit Delete All |
406 | - self.AuditDeleteAll = QtGui.QAction(tools_menu) |
407 | - self.AuditDeleteAll.setText( |
408 | - translate(u'AuditPlugin', u'Au&dit Delete all')) |
409 | - self.AuditDeleteAll.setStatusTip( |
410 | - translate(u'AuditPlugin', u'Deleted all Audit records')) |
411 | - self.AuditDeleteAll.setObjectName(u'AuditDeleteAll') |
412 | - #Audit Delete |
413 | + #Audit Delete |
414 | self.AuditDelete = QtGui.QAction(tools_menu) |
415 | self.AuditDelete.setText( |
416 | translate(u'AuditPlugin', u'Audit &Delete')) |
417 | @@ -81,9 +74,9 @@ |
418 | #Audit Report |
419 | self.AuditReport = QtGui.QAction(tools_menu) |
420 | self.AuditReport.setText( |
421 | - translate(u'AuditPlugin', u'Au&dit &Report')) |
422 | + translate(u'AuditPlugin', u'Au&dit &Extract')) |
423 | self.AuditReport.setStatusTip( |
424 | - translate(u'AuditPlugin', u'Generate Reports on Audit Data')) |
425 | + translate(u'AuditPlugin', u'Generate Extracts on Audit Data')) |
426 | self.AuditReport.setObjectName(u'AuditReport') |
427 | #Audit activation |
428 | AuditIcon = buildIcon(u':/tools/tools_alert.png') |
429 | @@ -100,9 +93,7 @@ |
430 | self.toolsMenu.addAction(self.AuditMenu.menuAction()) |
431 | self.AuditMenu.addAction(self.AuditStatus) |
432 | self.AuditMenu.addSeparator() |
433 | - self.AuditMenu.addAction(self.AuditDeleteAll) |
434 | self.AuditMenu.addAction(self.AuditDelete) |
435 | - self.AuditMenu.addSeparator() |
436 | self.AuditMenu.addAction(self.AuditReport) |
437 | # Signals and slots |
438 | QtCore.QObject.connect(self.AuditStatus, |
439 | @@ -111,8 +102,6 @@ |
440 | QtCore.QObject.connect(self.AuditStatus, |
441 | QtCore.SIGNAL(u'triggered(bool)'), |
442 | self.toggleAuditState) |
443 | - QtCore.QObject.connect(self.AuditDeleteAll, |
444 | - QtCore.SIGNAL(u'triggered()'), self.onAuditDeleteAll) |
445 | QtCore.QObject.connect(self.AuditDelete, |
446 | QtCore.SIGNAL(u'triggered()'), self.onAuditDelete) |
447 | QtCore.QObject.connect(self.AuditReport, |
448 | @@ -132,7 +121,7 @@ |
449 | if self.auditmanager is None: |
450 | self.auditmanager = AuditManager(self.config) |
451 | self.auditdeleteform = AuditDeleteForm(self.auditmanager) |
452 | - self.auditdetailform = AuditDetailForm(self.auditmanager) |
453 | + self.auditdetailform = AuditDetailForm(self) |
454 | self.AuditMenu.menuAction().setVisible(True) |
455 | |
456 | def finalise(self): |
457 | @@ -170,17 +159,6 @@ |
458 | self.config.get_config(u'audit active', False)) |
459 | self.AuditStatus.setEnabled(True) |
460 | |
461 | - def onAuditDeleteAll(self): |
462 | - ret = QtGui.QMessageBox.question(None, |
463 | - translate(u'mainWindow', u'Delete All Audit Events?'), |
464 | - translate(u'mainWindow', u'Are you sure you want to delete all Audit Data?'), |
465 | - QtGui.QMessageBox.StandardButtons( |
466 | - QtGui.QMessageBox.Ok | |
467 | - QtGui.QMessageBox.Cancel), |
468 | - QtGui.QMessageBox.Cancel) |
469 | - if ret == QtGui.QMessageBox.Ok: |
470 | - self.auditmanager.delete_all() |
471 | - |
472 | def onAuditDelete(self): |
473 | self.auditdeleteform.exec_() |
474 | |
475 | |
476 | === modified file 'openlp/plugins/audit/forms/auditdeletedialog.py' |
477 | --- openlp/plugins/audit/forms/auditdeletedialog.py 2009-09-25 20:12:35 +0000 |
478 | +++ openlp/plugins/audit/forms/auditdeletedialog.py 2009-10-12 05:00:34 +0000 |
479 | @@ -2,7 +2,7 @@ |
480 | |
481 | # Form implementation generated from reading ui file 'auditdeletedialog.ui' |
482 | # |
483 | -# Created: Fri Sep 25 21:03:48 2009 |
484 | +# Created: Sun Oct 11 11:34:45 2009 |
485 | # by: PyQt4 UI code generator 4.5.4 |
486 | # |
487 | # WARNING! All changes made in this file will be lost! |
488 | @@ -12,7 +12,7 @@ |
489 | class Ui_AuditDeleteDialog(object): |
490 | def setupUi(self, AuditDeleteDialog): |
491 | AuditDeleteDialog.setObjectName("AuditDeleteDialog") |
492 | - AuditDeleteDialog.resize(291, 202) |
493 | + AuditDeleteDialog.resize(291, 243) |
494 | self.layoutWidget = QtGui.QWidget(AuditDeleteDialog) |
495 | self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 247, 181)) |
496 | self.layoutWidget.setObjectName("layoutWidget") |
497 | @@ -24,10 +24,10 @@ |
498 | self.DeleteCalendar.setVerticalHeaderFormat(QtGui.QCalendarWidget.NoVerticalHeader) |
499 | self.DeleteCalendar.setObjectName("DeleteCalendar") |
500 | self.verticalLayout.addWidget(self.DeleteCalendar) |
501 | - self.buttonBox = QtGui.QDialogButtonBox(self.layoutWidget) |
502 | + self.buttonBox = QtGui.QDialogButtonBox(AuditDeleteDialog) |
503 | + self.buttonBox.setGeometry(QtCore.QRect(30, 210, 245, 25)) |
504 | self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) |
505 | self.buttonBox.setObjectName("buttonBox") |
506 | - self.verticalLayout.addWidget(self.buttonBox) |
507 | |
508 | self.retranslateUi(AuditDeleteDialog) |
509 | QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDeleteDialog.accept) |
510 | |
511 | === modified file 'openlp/plugins/audit/forms/auditdeleteform.py' |
512 | --- openlp/plugins/audit/forms/auditdeleteform.py 2009-09-29 02:54:32 +0000 |
513 | +++ openlp/plugins/audit/forms/auditdeleteform.py 2009-10-12 05:00:34 +0000 |
514 | @@ -34,7 +34,7 @@ |
515 | """ |
516 | Class documentation goes here. |
517 | """ |
518 | - def __init__(self, auditmanager, parent = None): |
519 | + def __init__(self, auditmanager, parent=None): |
520 | """ |
521 | Constructor |
522 | """ |
523 | |
524 | === modified file 'openlp/plugins/audit/forms/auditdetaildialog.py' |
525 | --- openlp/plugins/audit/forms/auditdetaildialog.py 2009-09-25 20:12:35 +0000 |
526 | +++ openlp/plugins/audit/forms/auditdetaildialog.py 2009-10-12 05:00:34 +0000 |
527 | @@ -2,7 +2,7 @@ |
528 | |
529 | # Form implementation generated from reading ui file 'auditdetaildialog.ui' |
530 | # |
531 | -# Created: Fri Sep 25 21:04:08 2009 |
532 | +# Created: Sun Oct 11 11:40:02 2009 |
533 | # by: PyQt4 UI code generator 4.5.4 |
534 | # |
535 | # WARNING! All changes made in this file will be lost! |
536 | @@ -136,6 +136,10 @@ |
537 | self.retranslateUi(AuditDetailDialog) |
538 | QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), AuditDetailDialog.accept) |
539 | QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), AuditDetailDialog.close) |
540 | + QtCore.QObject.connect(self.FirstCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeFirstService) |
541 | + QtCore.QObject.connect(self.SecondCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeSecondService) |
542 | + QtCore.QObject.connect(self.ThirdCheckBox, QtCore.SIGNAL("stateChanged(int)"), AuditDetailDialog.changeThirdService) |
543 | + QtCore.QObject.connect(self.SaveFilePushButton, QtCore.SIGNAL("pressed()"), AuditDetailDialog.defineOutputLocation) |
544 | QtCore.QMetaObject.connectSlotsByName(AuditDetailDialog) |
545 | |
546 | def retranslateUi(self, AuditDetailDialog): |
547 | @@ -144,11 +148,11 @@ |
548 | self.ReportTypeGroup.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Report Type", None, QtGui.QApplication.UnicodeUTF8)) |
549 | self.SummaryReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Summary", None, QtGui.QApplication.UnicodeUTF8)) |
550 | self.DetailedReport.setText(QtGui.QApplication.translate("AuditDetailDialog", "Detailed", None, QtGui.QApplication.UnicodeUTF8)) |
551 | - self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Date Range", None, QtGui.QApplication.UnicodeUTF8)) |
552 | + self.DateRangeGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Date Range", None, QtGui.QApplication.UnicodeUTF8)) |
553 | self.FromDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8)) |
554 | self.To.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8)) |
555 | self.ToDateEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "dd/MM/yyyy", None, QtGui.QApplication.UnicodeUTF8)) |
556 | - self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Time Periods", None, QtGui.QApplication.UnicodeUTF8)) |
557 | + self.TimePeriodGroupBox.setTitle(QtGui.QApplication.translate("AuditDetailDialog", "Select Time Periods", None, QtGui.QApplication.UnicodeUTF8)) |
558 | self.FirstCheckBox.setText(QtGui.QApplication.translate("AuditDetailDialog", "First Service", None, QtGui.QApplication.UnicodeUTF8)) |
559 | self.FirstFromTimeEdit.setDisplayFormat(QtGui.QApplication.translate("AuditDetailDialog", "hh:mm AP", None, QtGui.QApplication.UnicodeUTF8)) |
560 | self.FirstTo.setText(QtGui.QApplication.translate("AuditDetailDialog", "to", None, QtGui.QApplication.UnicodeUTF8)) |
561 | |
562 | === modified file 'openlp/plugins/audit/forms/auditdetailform.py' |
563 | --- openlp/plugins/audit/forms/auditdetailform.py 2009-09-25 20:12:35 +0000 |
564 | +++ openlp/plugins/audit/forms/auditdetailform.py 2009-10-12 05:00:34 +0000 |
565 | @@ -32,209 +32,48 @@ |
566 | """ |
567 | Class documentation goes here. |
568 | """ |
569 | - def __init__(self, auditmanager, parent = None): |
570 | + def __init__(self, parent=None): |
571 | """ |
572 | Constructor |
573 | """ |
574 | - QtGui.QDialog.__init__(self, parent) |
575 | - #self.parent = parent |
576 | + QtGui.QDialog.__init__(self, None) |
577 | + self.parent = parent |
578 | self.setupUi(self) |
579 | -# # Connecting signals and slots |
580 | -# QtCore.QObject.connect(self.buttonBox, |
581 | -# QtCore.SIGNAL(u'rejected()'), self.rejected) |
582 | -# QtCore.QObject.connect(self.buttonBox, |
583 | -# QtCore.SIGNAL(u'accepted()'), self.accept) |
584 | -# QtCore.QObject.connect(self.AddButton, |
585 | -# QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed) |
586 | -# QtCore.QObject.connect(self.EditButton, |
587 | -# QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed) |
588 | -# QtCore.QObject.connect(self.EditAllButton, |
589 | -# QtCore.SIGNAL(u'pressed()'), self.onEditAllButtonPressed) |
590 | -# QtCore.QObject.connect(self.SaveButton, |
591 | -# QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed) |
592 | -# QtCore.QObject.connect(self.DeleteButton, |
593 | -# QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed) |
594 | -# QtCore.QObject.connect(self.ClearButton, |
595 | -# QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed) |
596 | -# QtCore.QObject.connect(self.UpButton, |
597 | -# QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed) |
598 | -# QtCore.QObject.connect(self.DownButton, |
599 | -# QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed) |
600 | -# |
601 | -# QtCore.QObject.connect(self.VerseListView, |
602 | -# QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), |
603 | -# self.onVerseListViewSelected) |
604 | -# QtCore.QObject.connect(self.VerseListView, |
605 | -# QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), |
606 | -# self.onVerseListViewPressed) |
607 | -# QtCore.QObject.connect(Receiver.get_receiver(), |
608 | -# QtCore.SIGNAL(u'update_themes'), self.loadThemes) |
609 | -# # Create other objects and forms |
610 | -# self.custommanager = custommanager |
611 | self.initialise() |
612 | |
613 | def initialise(self): |
614 | - pass |
615 | -# self.editAll = False |
616 | -# self.DeleteButton.setEnabled(False) |
617 | -# self.EditButton.setEnabled(False) |
618 | -# self.EditAllButton.setEnabled(True) |
619 | -# self.SaveButton.setEnabled(False) |
620 | -# self.ClearButton.setEnabled(False) |
621 | -# self.TitleEdit.setText(u'') |
622 | -# self.CreditEdit.setText(u'') |
623 | -# self.VerseTextEdit.clear() |
624 | -# self.VerseListView.clear() |
625 | -# #make sure we have a new item |
626 | -# self.customSlide = CustomSlide() |
627 | -# self.ThemeComboBox.addItem(u'') |
628 | -# |
629 | -# def loadThemes(self, themelist): |
630 | -# self.ThemeComboBox.clear() |
631 | -# self.ThemeComboBox.addItem(u'') |
632 | -# for themename in themelist: |
633 | -# self.ThemeComboBox.addItem(themename) |
634 | -# |
635 | -# def loadCustom(self, id): |
636 | -# self.customSlide = CustomSlide() |
637 | -# self.initialise() |
638 | -# if id != 0: |
639 | -# self.customSlide = self.custommanager.get_custom(id) |
640 | -# self.TitleEdit.setText(self.customSlide.title) |
641 | -# self.CreditEdit.setText(self.customSlide.credits) |
642 | -# |
643 | -# songXML = SongXMLParser(self.customSlide.text) |
644 | -# verseList = songXML.get_verses() |
645 | -# for verse in verseList: |
646 | -# self.VerseListView.addItem(verse[1]) |
647 | -# theme = unicode(self.customSlide.theme_name) |
648 | -# id = self.ThemeComboBox.findText(theme, QtCore.Qt.MatchExactly) |
649 | -# if id == -1: |
650 | -# id = 0 # Not Found |
651 | -# self.ThemeComboBox.setCurrentIndex(id) |
652 | -# else: |
653 | -# self.ThemeComboBox.setCurrentIndex(0) |
654 | -# |
655 | -# def accept(self): |
656 | -# valid, message = self._validate() |
657 | -# if not valid: |
658 | -# QtGui.QMessageBox.critical(self, |
659 | -# translate(u'customEditDialog', u'Error'), message, |
660 | -# QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) |
661 | -# return |
662 | -# sxml = SongXMLBuilder() |
663 | -# sxml.new_document() |
664 | -# sxml.add_lyrics_to_song() |
665 | -# count = 1 |
666 | -# for i in range (0, self.VerseListView.count()): |
667 | -# sxml.add_verse_to_lyrics( |
668 | -# u'custom', unicode(count), |
669 | -# unicode(self.VerseListView.item(i).text())) |
670 | -# count += 1 |
671 | -# self.customSlide.title = unicode(self.TitleEdit.displayText()) |
672 | -# self.customSlide.text = unicode(sxml.extract_xml()) |
673 | -# self.customSlide.credits = unicode(self.CreditEdit.displayText()) |
674 | -# self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText()) |
675 | -# self.custommanager.save_slide(self.customSlide) |
676 | -# self.close() |
677 | -# |
678 | -# def rejected(self): |
679 | -# self.close() |
680 | -# |
681 | -# def onUpButtonPressed(self): |
682 | -# selectedRow = self.VerseListView.currentRow() |
683 | -# if selectedRow != 0: |
684 | -# qw = self.VerseListView.takeItem(selectedRow) |
685 | -# self.VerseListView.insertItem(selectedRow - 1, qw) |
686 | -# self.VerseListView.setCurrentRow(selectedRow - 1) |
687 | -# |
688 | -# def onDownButtonPressed(self): |
689 | -# selectedRow = self.VerseListView.currentRow() |
690 | -# # zero base arrays |
691 | -# if selectedRow != self.VerseListView.count() - 1: |
692 | -# qw = self.VerseListView.takeItem(selectedRow) |
693 | -# self.VerseListView.insertItem(selectedRow + 1, qw) |
694 | -# self.VerseListView.setCurrentRow(selectedRow + 1) |
695 | -# |
696 | -# def onClearButtonPressed(self): |
697 | -# self.VerseTextEdit.clear() |
698 | -# self.editAll = False |
699 | -# self.AddButton.setEnabled(True) |
700 | -# self.EditAllButton.setEnabled(True) |
701 | -# self.SaveButton.setEnabled(False) |
702 | -# |
703 | -# def onVerseListViewPressed(self, item): |
704 | -# self.DeleteButton.setEnabled(True) |
705 | -# self.EditButton.setEnabled(True) |
706 | -# |
707 | -# def onVerseListViewSelected(self, item): |
708 | -# self.editText(item.text()) |
709 | -# |
710 | -# def onAddButtonPressed(self): |
711 | -# self.VerseListView.addItem(self.VerseTextEdit.toPlainText()) |
712 | -# self.DeleteButton.setEnabled(False) |
713 | -# self.VerseTextEdit.clear() |
714 | -# |
715 | -# def onEditButtonPressed(self): |
716 | -# self.editText(self.VerseListView.currentItem().text()) |
717 | -# |
718 | -# def onEditAllButtonPressed(self): |
719 | -# self.editAll = True |
720 | -# self.AddButton.setEnabled(False) |
721 | -# if self.VerseListView.count() > 0: |
722 | -# verse_list = u'' |
723 | -# for row in range(0, self.VerseListView.count()): |
724 | -# item = self.VerseListView.item(row) |
725 | -# verse_list += item.text() |
726 | -# verse_list += u'\n---\n' |
727 | -# self.editText(verse_list) |
728 | -# |
729 | -# def editText(self, text): |
730 | -# self.beforeText = text |
731 | -# self.VerseTextEdit.setPlainText(text) |
732 | -# self.DeleteButton.setEnabled(False) |
733 | -# self.EditButton.setEnabled(False) |
734 | -# self.EditAllButton.setEnabled(False) |
735 | -# self.SaveButton.setEnabled(True) |
736 | -# self.ClearButton.setEnabled(True) |
737 | -# |
738 | -# def onSaveButtonPressed(self): |
739 | -# if self.editAll: |
740 | -# self.VerseListView.clear() |
741 | -# for row in unicode(self.VerseTextEdit.toPlainText()).split(u'\n---\n'): |
742 | -# self.VerseListView.addItem(row) |
743 | -# else: |
744 | -# self.VerseListView.currentItem().setText( |
745 | -# self.VerseTextEdit.toPlainText()) |
746 | -# #number of lines has change |
747 | -# if len(self.beforeText.split(u'\n')) != \ |
748 | -# len(self.VerseTextEdit.toPlainText().split(u'\n')): |
749 | -# tempList = {} |
750 | -# for row in range(0, self.VerseListView.count()): |
751 | -# tempList[row] = self.VerseListView.item(row).text() |
752 | -# self.VerseListView.clear() |
753 | -# for row in range (0, len(tempList)): |
754 | -# self.VerseListView.addItem(tempList[row]) |
755 | -# self.VerseListView.repaint() |
756 | -# self.AddButton.setEnabled(True) |
757 | -# self.SaveButton.setEnabled(False) |
758 | -# self.EditButton.setEnabled(False) |
759 | -# self.EditAllButton.setEnabled(True) |
760 | -# self.VerseTextEdit.clear() |
761 | -# |
762 | -# def onDeleteButtonPressed(self): |
763 | -# self.VerseListView.takeItem(self.VerseListView.currentRow()) |
764 | -# self.EditButton.setEnabled(False) |
765 | -# self.EditAllButton.setEnabled(True) |
766 | -# |
767 | -# def _validate(self): |
768 | -# if len(self.TitleEdit.displayText()) == 0: |
769 | -# self.TitleEdit.setFocus() |
770 | -# return False, translate( |
771 | -# u'customEditDialog', u'You need to enter a title \n') |
772 | -# # must have 1 slide |
773 | -# if self.VerseListView.count() == 0: |
774 | -# self.VerseTextEdit.setFocus() |
775 | -# return False, translate( |
776 | -# u'customEditDialog', u'You need to enter a slide \n') |
777 | -# return True, u'' |
778 | + self.firstService = \ |
779 | + int(self.parent.config.get_config(u'first service', QtCore.Qt.Checked)) |
780 | + self.secondService = \ |
781 | + int(self.parent.config.get_config(u'second service', QtCore.Qt.Checked)) |
782 | + self.resetWindow() |
783 | + |
784 | + def changeFirstService(self, value): |
785 | + self.firstService = value |
786 | + self.parent.config.set_config(u'first service', value) |
787 | + self.resetWindow() |
788 | + |
789 | + def changeSecondService(self, value): |
790 | + self.secondService = value |
791 | + self.parent.config.set_config(u'second service', value) |
792 | + self.resetWindow() |
793 | + |
794 | + def changeThirdService(self, value): |
795 | + pass |
796 | + |
797 | + def defineOutputLocation(self): |
798 | + pass |
799 | + |
800 | + def resetWindow(self): |
801 | + if self.firstService == QtCore.Qt.Unchecked: |
802 | + self.FirstFromTimeEdit.setEnabled(False) |
803 | + self.FirstToTimeEdit.setEnabled(False) |
804 | + else: |
805 | + self.FirstFromTimeEdit.setEnabled(True) |
806 | + self.FirstToTimeEdit.setEnabled(True) |
807 | + if self.secondService == QtCore.Qt.Unchecked: |
808 | + self.SecondFromTimeEdit.setEnabled(False) |
809 | + self.SecondToTimeEdit.setEnabled(False) |
810 | + else: |
811 | + self.SecondFromTimeEdit.setEnabled(True) |
812 | + self.SecondToTimeEdit.setEnabled(True) |
813 | |
814 | === modified file 'resources/forms/auditdeletedialog.ui' |
815 | --- resources/forms/auditdeletedialog.ui 2009-09-25 20:12:35 +0000 |
816 | +++ resources/forms/auditdeletedialog.ui 2009-10-12 05:00:34 +0000 |
817 | @@ -7,7 +7,7 @@ |
818 | <x>0</x> |
819 | <y>0</y> |
820 | <width>291</width> |
821 | - <height>202</height> |
822 | + <height>243</height> |
823 | </rect> |
824 | </property> |
825 | <property name="windowTitle"> |
826 | @@ -36,15 +36,21 @@ |
827 | </property> |
828 | </widget> |
829 | </item> |
830 | - <item> |
831 | - <widget class="QDialogButtonBox" name="buttonBox"> |
832 | - <property name="standardButtons"> |
833 | - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
834 | - </property> |
835 | - </widget> |
836 | - </item> |
837 | </layout> |
838 | </widget> |
839 | + <widget class="QDialogButtonBox" name="buttonBox"> |
840 | + <property name="geometry"> |
841 | + <rect> |
842 | + <x>30</x> |
843 | + <y>210</y> |
844 | + <width>245</width> |
845 | + <height>25</height> |
846 | + </rect> |
847 | + </property> |
848 | + <property name="standardButtons"> |
849 | + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
850 | + </property> |
851 | + </widget> |
852 | </widget> |
853 | <resources/> |
854 | <connections> |
855 | |
856 | === modified file 'resources/forms/auditdetaildialog.ui' |
857 | --- resources/forms/auditdetaildialog.ui 2009-09-26 06:46:26 +0000 |
858 | +++ resources/forms/auditdetaildialog.ui 2009-10-12 05:00:34 +0000 |
859 | @@ -108,7 +108,7 @@ |
860 | <item> |
861 | <widget class="QGroupBox" name="DateRangeGroupBox"> |
862 | <property name="title"> |
863 | - <string>Date Range</string> |
864 | + <string>Select Date Range</string> |
865 | </property> |
866 | <layout class="QVBoxLayout" name="verticalLayout_2"> |
867 | <item> |
868 | @@ -148,7 +148,7 @@ |
869 | <item> |
870 | <widget class="QGroupBox" name="TimePeriodGroupBox"> |
871 | <property name="title"> |
872 | - <string>Time Periods</string> |
873 | + <string>Select Time Periods</string> |
874 | </property> |
875 | <layout class="QVBoxLayout" name="verticalLayout"> |
876 | <item> |
877 | @@ -336,8 +336,76 @@ |
878 | </hint> |
879 | </hints> |
880 | </connection> |
881 | + <connection> |
882 | + <sender>FirstCheckBox</sender> |
883 | + <signal>stateChanged(int)</signal> |
884 | + <receiver>AuditDetailDialog</receiver> |
885 | + <slot>changeFirstService(int)</slot> |
886 | + <hints> |
887 | + <hint type="sourcelabel"> |
888 | + <x>26</x> |
889 | + <y>285</y> |
890 | + </hint> |
891 | + <hint type="destinationlabel"> |
892 | + <x>136</x> |
893 | + <y>483</y> |
894 | + </hint> |
895 | + </hints> |
896 | + </connection> |
897 | + <connection> |
898 | + <sender>SecondCheckBox</sender> |
899 | + <signal>stateChanged(int)</signal> |
900 | + <receiver>AuditDetailDialog</receiver> |
901 | + <slot>changeSecondService(int)</slot> |
902 | + <hints> |
903 | + <hint type="sourcelabel"> |
904 | + <x>41</x> |
905 | + <y>323</y> |
906 | + </hint> |
907 | + <hint type="destinationlabel"> |
908 | + <x>103</x> |
909 | + <y>494</y> |
910 | + </hint> |
911 | + </hints> |
912 | + </connection> |
913 | + <connection> |
914 | + <sender>ThirdCheckBox</sender> |
915 | + <signal>stateChanged(int)</signal> |
916 | + <receiver>AuditDetailDialog</receiver> |
917 | + <slot>changeThirdService(int)</slot> |
918 | + <hints> |
919 | + <hint type="sourcelabel"> |
920 | + <x>38</x> |
921 | + <y>351</y> |
922 | + </hint> |
923 | + <hint type="destinationlabel"> |
924 | + <x>155</x> |
925 | + <y>463</y> |
926 | + </hint> |
927 | + </hints> |
928 | + </connection> |
929 | + <connection> |
930 | + <sender>SaveFilePushButton</sender> |
931 | + <signal>pressed()</signal> |
932 | + <receiver>AuditDetailDialog</receiver> |
933 | + <slot>defineOutputLocation()</slot> |
934 | + <hints> |
935 | + <hint type="sourcelabel"> |
936 | + <x>538</x> |
937 | + <y>419</y> |
938 | + </hint> |
939 | + <hint type="destinationlabel"> |
940 | + <x>385</x> |
941 | + <y>480</y> |
942 | + </hint> |
943 | + </hints> |
944 | + </connection> |
945 | </connections> |
946 | <slots> |
947 | <slot>accept()</slot> |
948 | + <slot>changeFirstService(int)</slot> |
949 | + <slot>changeSecondService(int)</slot> |
950 | + <slot>changeThirdService(int)</slot> |
951 | + <slot>defineOutputLocation()</slot> |
952 | </slots> |
953 | </ui> |
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.