openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #00148
[Merge] lp:~trb143/openlp/servicing2 into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/servicing2 into lp:openlp.
Requested reviews:
openlp.org Core (openlp-core)
File and Function cleanups
Improvements from last merge
OOS saving required now.
--
https://code.launchpad.net/~trb143/openlp/servicing2/+merge/8325
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'cnvdb.py'
--- cnvdb.py 2009-07-02 19:10:14 +0000
+++ cnvdb.py 2009-07-06 16:34:13 +0000
@@ -31,7 +31,7 @@
writefile = codecs.open(outname, 'w', encoding='utf-8')
for line in infile:
#replace the quotes with quotes
- line, replace("''", "'")
+ line = line.replace(u'\'\'', u'\'')
writefile.write(line)
infile.close()
writefile.close()
=== modified file 'openlp/core/lib/plugin.py'
--- openlp/core/lib/plugin.py 2009-06-28 06:54:12 +0000
+++ openlp/core/lib/plugin.py 2009-07-06 16:34:13 +0000
@@ -102,7 +102,6 @@
self.render_manager = plugin_helpers[u'render']
self.service_manager = plugin_helpers[u'service']
self.settings = plugin_helpers[u'settings']
- self.slideManager = plugin_helpers[u'slideManager']
self.dnd_id=None
def check_pre_conditions(self):
=== modified file 'openlp/core/ui/__init__.py'
--- openlp/core/ui/__init__.py 2009-07-03 19:08:21 +0000
+++ openlp/core/ui/__init__.py 2009-07-06 16:34:13 +0000
@@ -18,7 +18,6 @@
Place, Suite 330, Boston, MA 02111-1307 USA
"""
from slidecontroller import MasterToolbar
-from slidecontrollermanager import SlideControllerManager
from maindisplay import MainDisplay
from amendthemeform import AmendThemeForm
from slidecontroller import SlideController
=== modified file 'openlp/core/ui/amendthemeform.py'
--- openlp/core/ui/amendthemeform.py 2009-06-16 18:21:24 +0000
+++ openlp/core/ui/amendthemeform.py 2009-07-06 16:34:13 +0000
@@ -128,9 +128,7 @@
unicode(self.theme.display_outline), unicode(self.theme.display_outline_color),
unicode(self.theme.display_horizontalAlign), unicode(self.theme.display_verticalAlign),
unicode(self.theme.display_wrapStyle))
-
theme = new_theme.extract_xml()
-
self.thememanager.saveTheme(theme_name, theme, save_from, save_to)
return QtGui.QDialog.accept(self)
@@ -526,4 +524,4 @@
def previewTheme(self, theme):
if self.allowPreview:
frame = self.thememanager.generateImage(theme)
- self.ThemePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
\ No newline at end of file
+ self.ThemePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-07-03 19:08:21 +0000
+++ openlp/core/ui/mainwindow.py 2009-07-07 16:35:01 +0000
@@ -23,7 +23,7 @@
from PyQt4 import QtCore, QtGui
from openlp.core.ui import AboutForm, SettingsForm, AlertForm, ServiceManager, \
- ThemeManager, MainDisplay, SlideController, SlideControllerManager
+ ThemeManager, MainDisplay, SlideController
from openlp.core.lib import translate, Plugin, MediaManagerItem, SettingsTab, \
EventManager, RenderManager, PluginConfig
from openlp.core import PluginManager
@@ -41,6 +41,7 @@
This constructor sets up the interface, the various managers, and the
plugins.
"""
+ self.oosNotSaved = False
self.mainWindow = QtGui.QMainWindow()
self.mainWindow.__class__.closeEvent = self.onCloseEvent
self.mainDisplay = MainDisplay(None, screens)
@@ -50,7 +51,6 @@
self.alertForm = AlertForm(self)
self.aboutForm = AboutForm()
self.settingsForm = SettingsForm(self.screenList, self)
- self.slideControllerManager = SlideControllerManager(self)
# Set up the path with plugins
pluginpath = os.path.split(os.path.abspath(__file__))[0]
pluginpath = os.path.abspath(
@@ -73,7 +73,6 @@
self.plugin_helpers[u'render'] = self.RenderManager
self.plugin_helpers[u'service'] = self.ServiceManagerContents
self.plugin_helpers[u'settings'] = self.settingsForm
- self.plugin_helpers[u'slideManager'] = self.slideControllerManager
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
self.EventManager)
# hook methods have to happen after find_plugins. Find plugins needs the
@@ -129,8 +128,46 @@
"""
Hook to close the main window and display windows on exit
"""
- self.mainDisplay.close()
- event.accept()
+ if self.oosNotSaved == True:
+ box = QtGui.QMessageBox()
+ box.setWindowTitle(translate(u'mainWindow', u'Question?'))
+ box.setText(translate(u'mainWindow', u'Save changes to Order of Service?'))
+ box.setIcon(QtGui.QMessageBox.Question)
+ box.setStandardButtons(QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Cancel);
+ box.setDefaultButton(QtGui.QMessageBox.Save);
+ ret = box.exec_()
+ if ret == QtGui.QMessageBox.Save:
+ self.ServiceManagerContents.onSaveService()
+ self.mainDisplay.close()
+ event.accept()
+ elif ret == QtGui.QMessageBox.Discard:
+ self.mainDisplay.close()
+ event.accept()
+ else:
+ event.ignore()
+ else:
+ self.mainDisplay.close()
+ event.accept()
+
+ def OosChanged(self, reset = False, oosName = None):
+ """
+ Hook to change the title if the OOS has been changed
+ reset - tells if the OOS has been cleared or saved
+ oosName - is the name of the OOS (if it has one)
+ """
+ if reset == True:
+ self.oosNotSaved = False
+ if oosName is None:
+ title = self.mainTitle
+ else:
+ title = self.mainTitle + u' - (' + oosName + u')'
+ else:
+ self.oosNotSaved = True
+ if oosName is None:
+ title = self.mainTitle + u' - *'
+ else:
+ title = self.mainTitle + u' - *(' + oosName + u')'
+ self.mainWindow.setWindowTitle(title)
def setupUi(self):
"""
@@ -411,7 +448,8 @@
"""
Set up the translation system
"""
- self.mainWindow.setWindowTitle(translate(u'mainWindow', u'OpenLP 2.0'))
+ self.mainTitle = translate(u'mainWindow', u'OpenLP 2.0')
+ self.mainWindow.setWindowTitle(self.mainTitle)
self.FileMenu.setTitle(translate(u'mainWindow', u'&File'))
self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import'))
self.FileExportMenu.setTitle(translate(u'mainWindow', u'&Export'))
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2009-06-29 17:37:46 +0000
+++ openlp/core/ui/servicemanager.py 2009-07-07 16:35:01 +0000
@@ -63,6 +63,7 @@
QtGui.QWidget.__init__(self)
self.parent = parent
self.serviceItems = []
+ self.serviceName = u''
self.Layout = QtGui.QVBoxLayout(self)
self.Layout.setSpacing(0)
self.Layout.setMargin(0)
@@ -151,6 +152,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(0, temp)
self.repaintServiceList()
+ self.parent.OosChanged(False, self.serviceName)
def onServiceUp(self):
"""
@@ -163,6 +165,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item - 1, temp)
self.repaintServiceList()
+ self.parent.OosChanged(False, self.serviceName)
def onServiceDown(self):
"""
@@ -175,6 +178,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item + 1, temp)
self.repaintServiceList()
+ self.parent.OosChanged(False, self.serviceName)
def onServiceEnd(self):
"""
@@ -186,6 +190,7 @@
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(len(self.serviceItems), temp)
self.repaintServiceList()
+ self.parent.OosChanged(False, self.serviceName)
def onNewService(self):
"""
@@ -193,6 +198,8 @@
"""
self.ServiceManagerList.clear()
self.serviceItems = []
+ self.serviceName = u''
+ self.parent.OosChanged(True, self.serviceName)
def onDeleteFromService(self):
"""
@@ -202,6 +209,7 @@
if item is not -1:
self.serviceItems.remove(self.serviceItems[item])
self.repaintServiceList()
+ self.parent.OosChanged(False, self.serviceName)
def repaintServiceList(self):
#Correct order of idems in array
@@ -252,6 +260,7 @@
os.remove(servicefile)
except:
pass #if not present do not worry
+ self.parent.OosChanged(True, self.serviceName)
def onLoadService(self):
"""
@@ -260,6 +269,7 @@
filename = QtGui.QFileDialog.getOpenFileName(self, u'Open Order of Service',self.config.get_last_dir(),
u'Services (*.oos)')
filename = unicode(filename)
+ name = filename.split(os.path.sep)
if filename != u'':
self.config.set_last_dir(filename)
zip = zipfile.ZipFile(unicode(filename))
@@ -279,7 +289,6 @@
f.close()
self.onNewService()
for item in items:
- #print item
serviceitem = ServiceItem()
serviceitem.RenderManager = self.parent.RenderManager
serviceitem.set_from_oos(item, self.servicePath )
@@ -287,7 +296,10 @@
try:
os.remove(p_file)
except:
- pass #if not present do not worry
+ #if not present do not worry
+ pass
+ self.serviceName = name[len(name) - 1]
+ self.parent.OosChanged(True, self.serviceName)
def onThemeComboBoxSelected(self, currentIndex):
"""
@@ -323,6 +335,7 @@
treewidgetitem1.setText(0,text[:40])
treewidgetitem1.setData(0, QtCore.Qt.UserRole,QtCore.QVariant(count))
count = count + 1
+ self.parent.OosChanged(False, self.serviceName)
def makePreview(self):
"""
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-07-03 20:32:33 +0000
+++ openlp/core/ui/slidecontroller.py 2009-07-06 16:34:13 +0000
@@ -183,7 +183,7 @@
class MasterToolbar(QtCore.QObject):
"""
- Class from which all tollbars should extend
+ Class from which all toolbars should extend
"""
def __init__(self, isLive):
self.Toolbar = None
@@ -232,6 +232,13 @@
translate(u'SlideController', u'Close Screen'),
self.onBlankScreen)
+ def serviceLoaded(self):
+ """
+ method to allow toolbars to know when the service item
+ is fully in place
+ """
+ pass
+
def onSlideSelectedFirst(self):
"""
Go to the first slide.
@@ -325,3 +332,4 @@
else:
self.PreviewListWidget.selectRow(slideno)
self.onSlideSelected()
+ self.serviceLoaded()
=== removed file 'openlp/core/ui/slidecontrollermanager.py'
--- openlp/core/ui/slidecontrollermanager.py 2009-06-28 06:54:12 +0000
+++ openlp/core/ui/slidecontrollermanager.py 1970-01-01 00:00:00 +0000
@@ -1,52 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
-"""
-OpenLP - Open Source Lyrics Projection
-Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
-
-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 os
-
-class SlideControllerManager():
- """
- This class controls which SlideController is availabe to the
- main window
- """
- global log
- log = logging.getLogger(u'SlideControllerManager')
-
- def __init__(self, parent):
- """
- Set up the Slide Controller. Manager
- """
- self.parent = parent
- self.live = {}
- self.preview = {}
-
- def add_controllers(self, handle, preview, live):
- self.live[handle] = live
- self.preview[handle] = preview
- print self.live
-
- def getPreviewController(self, handle):
- return self.preview[handle]
-
- def getLiveController(self, handle):
- print "---"
- print self.live
- print handle
- print self.live[handle]
- return self.live[handle]
=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py 2009-07-02 19:04:50 +0000
+++ openlp/core/ui/thememanager.py 2009-07-06 16:34:13 +0000
@@ -21,109 +21,16 @@
import sys
import zipfile
import shutil
+import logging
-from time import sleep
from xml.etree.ElementTree import ElementTree, XML
from PyQt4 import QtCore, QtGui
from openlp.core.ui import AmendThemeForm, ServiceManager
from openlp.core.theme import Theme
-from openlp.core.lib import Event, EventType, EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, file_to_xml
+from openlp.core.lib import Event, EventType, EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, file_to_xml, buildIcon
from openlp.core.utils import ConfigHelper
-import logging
-
-class ThemeData(QtCore.QAbstractListModel):
- """
- Tree of items for an order of Theme.
- Includes methods for reading and writing the contents to an OOS file
- Root contains a list of ThemeItems
- """
- global log
- log = logging.getLogger(u'ThemeData')
-
- def __init__(self):
- QtCore.QAbstractListModel.__init__(self)
- self.items = []
- self.rowheight = 50
- self.maximagewidth = self.rowheight * 16 / 9.0;
- log.info(u'Starting')
-
- def clearItems(self):
- self.items = []
-
- def rowCount(self, parent):
- return len(self.items)
-
- def insertRow(self, row, filename):
- self.beginInsertRows(QtCore.QModelIndex(), row, row)
- log.debug(u'insert row %d:%s' % (row, filename))
- (prefix, shortfilename) = os.path.split(unicode(filename))
- log.debug(u'shortfilename = %s' % shortfilename)
- theme = shortfilename.split(u'.')
- # create a preview image
- if os.path.exists(filename):
- preview = QtGui.QImage(unicode(filename))
- width = self.maximagewidth
- height = self.rowheight
- preview = preview.scaled(width, height, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
- realwidth = preview.width()
- realheight = preview.height()
- # and move it to the centre of the preview space
- pixmap = QtGui.QImage(width, height, QtGui.QImage.Format_ARGB32_Premultiplied)
- pixmap.fill(QtCore.Qt.black)
- painter = QtGui.QPainter(pixmap)
- painter.drawImage((width - realwidth) / 2, (height - realheight) / 2, preview)
- else:
- width = self.maximagewidth
- height = self.rowheight
- pixmap = QtGui.QImage(width, height, QtGui.QImage.Format_ARGB32_Premultiplied)
- pixmap.fill(QtCore.Qt.black)
- # finally create the row
- self.items.insert(row, (filename, pixmap, shortfilename, theme[0]))
- log.debug(u'Items: %s' % self.items)
- self.endInsertRows()
-
- def removeRow(self, row):
- self.beginRemoveRows(QtCore.QModelIndex(), row, row)
- self.items.pop(row)
- self.endRemoveRows()
-
- def addRow(self, item):
- self.insertRow(len(self.items), item)
-
- def data(self, index, role):
- row = index.row()
- if row > len(self.items):
- # if the last row is selected and deleted, we then get called with an empty row!
- return QtCore.QVariant()
- if role == QtCore.Qt.DisplayRole:
- retval = self.items[row][3]
- elif role == QtCore.Qt.DecorationRole:
- retval = self.items[row][1]
- else:
- retval = QtCore.QVariant()
- if type(retval) is not type(QtCore.QVariant):
- return QtCore.QVariant(retval)
- else:
- return retval
-
- def __iter__(self):
- for item in self.items:
- yield item
-
- def getValue(self, index):
- row = index.row()
- return self.items[row]
-
- def getItem(self, row):
- log.info(u'Get Item:%d -> %s' % (row, unicode(self.items)))
- return self.items[row]
-
- def getList(self):
- filelist = [item[3] for item in self.items]
- return filelist
-
class ThemeManager(QtGui.QWidget):
"""
Manages the orders of Theme.
@@ -157,13 +64,10 @@
translate(u'ThemeManager', u'Export a theme'), self.onExportTheme)
self.ThemeWidget = QtGui.QWidgetAction(self.Toolbar)
self.Layout.addWidget(self.Toolbar)
-
- self.ThemeListView = QtGui.QListView(self)
- self.themeData = ThemeData()
- self.ThemeListView.setModel(self.themeData)
- self.ThemeListView.setAlternatingRowColors(True)
- self.Layout.addWidget(self.ThemeListView)
-
+ self.ThemeListWidget = QtGui.QListWidget(self)
+ self.ThemeListWidget.setAlternatingRowColors(True)
+ self.ThemeListWidget.setIconSize(QtCore.QSize(88,50))
+ self.Layout.addWidget(self.ThemeListWidget)
self.themelist = []
self.path = os.path.join(ConfigHelper.get_data_path(), u'themes')
self.checkThemesExists(self.path)
@@ -174,21 +78,18 @@
self.amendThemeForm.exec_()
def onEditTheme(self):
- items = self.ThemeListView.selectedIndexes()
- if len(items) > 0:
- for item in items:
- data = self.themeData.getValue(item)
- self.amendThemeForm.loadTheme(data[3])
+ item = self.ThemeListWidget.currentItem()
+ if item is not None:
+ self.amendThemeForm.loadTheme(unicode(item.text()))
self.amendThemeForm.exec_()
def onDeleteTheme(self):
- items = self.ThemeListView.selectedIndexes()
- if len(items) > 0:
- theme = u''
- for item in items:
- data = self.themeData.getValue(item)
- theme = data[3]
+ item = self.ThemeListWidget.currentItem()
+ if item is not None:
+ theme = unicode(item.text())
th = theme + u'.png'
+ row = self.ThemeListWidget.row(item)
+ self.ThemeListWidget.takeItem(row)
try:
os.remove(os.path.join(self.path, th))
except:
@@ -199,8 +100,6 @@
except:
#if not present do not worry
pass
- self.themeData.clearItems()
- self.loadThemes()
def onExportTheme(self):
pass
@@ -213,24 +112,37 @@
if len(files) > 0:
for file in files:
self.unzipTheme(file, self.path)
- self.themeData.clearItems()
self.loadThemes()
def loadThemes(self):
+ """
+ Loads the theme lists and triggers updates accross
+ the whole system using direct calls or core functions
+ and events for the plugins.
+ The plugins will call back in to get the real list if they want it.
+ """
log.debug(u'Load themes from dir')
+ self.themelist = []
+ self.ThemeListWidget.clear()
for root, dirs, files in os.walk(self.path):
for name in files:
if name.endswith(u'.png'):
- #check to see file is in route directory
+ #check to see file is in theme root directory
theme = os.path.join(self.path, name)
if os.path.exists(theme):
- self.themeData.addRow(theme)
+ (path, filename) = os.path.split(unicode(file))
+ textName = os.path.splitext(name)[0]
+ item_name = QtGui.QListWidgetItem(textName)
+ item_name.setIcon(buildIcon(theme))
+ item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName))
+ self.ThemeListWidget.addItem(item_name)
+ self.themelist.append(textName)
self.parent.EventManager.post_event(Event(EventType.ThemeListChanged))
self.parent.ServiceManagerContents.updateThemeList(self.getThemes())
self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes())
def getThemes(self):
- return self.themeData.getList()
+ return self.themelist
def getThemeData(self, themename):
log.debug(u'getthemedata for theme %s', themename)
@@ -337,6 +249,10 @@
return newtheme.extract_xml()
def saveTheme(self, name, theme_xml, image_from, image_to) :
+ """
+ Called by thememaintenance Dialog to save the theme
+ and to trigger the reload of the theme list
+ """
log.debug(u'saveTheme %s %s', name, theme_xml)
theme_dir = os.path.join(self.path, name)
if os.path.exists(theme_dir) == False:
@@ -348,7 +264,6 @@
if image_from is not None and image_from != image_to:
shutil.copyfile(image_from, image_to)
self.generateAndSaveImage(self.path, name, theme_xml)
- self.themeData.clearItems()
self.loadThemes()
def generateAndSaveImage(self, dir, name, theme_xml):
@@ -357,7 +272,6 @@
theme.parse(theme_xml)
theme.extend_image_filename(dir)
frame = self.generateImage(theme)
- #im = frame.toImage()
samplepathname = os.path.join(self.path, name + u'.png')
if os.path.exists(samplepathname):
os.unlink(samplepathname)
@@ -365,6 +279,9 @@
log.debug(u'Theme image written to %s', samplepathname)
def generateImage(self, themedata):
+ """
+ Call the RenderManager to build a Sample Image
+ """
log.debug(u'generateImage %s ', themedata)
frame = self.parent.RenderManager.generate_preview(themedata)
return frame
=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py 2009-07-04 05:52:30 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py 2009-07-07 16:35:01 +0000
@@ -494,7 +494,7 @@
if end_verse == '':
end_verse = 99
if start_chapter == '':
- message = u'No chapter found for search'
+ message = u'No chapter found for search criteria'
#print 'message = ' + unicode(message)
#print 'search = ' + unicode(original)
#print 'results = ' + unicode(book) + ' @ '+ unicode(start_chapter)+' @ '+ unicode(end_chapter)+' @ '+ unicode(start_verse)+ ' @ '+ unicode(end_verse)
=== modified file 'openlp/plugins/images/lib/imageslidecontroller.py'
--- openlp/plugins/images/lib/imageslidecontroller.py 2009-07-03 20:32:33 +0000
+++ openlp/plugins/images/lib/imageslidecontroller.py 2009-07-06 16:34:13 +0000
@@ -74,14 +74,26 @@
u':/media/media_stop.png',
translate(u'SlideController', u'Stop continuous loop'),
self.onStopLoop)
+ self.Toolbar.addSeparator()
+ self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar)
+ self.SpinWidget = QtGui.QWidgetAction(self.Toolbar)
+ self.SpinWidget.setDefaultWidget(self.DelaySpinBox)
+ self.Toolbar.addAction(self.SpinWidget)
+ #self.Layout.addWidget(self.Toolbar)
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
+ self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's'))
+
+ def serviceLoaded(self):
+ self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay)
+ if self.PreviewListWidget.rowCount() == 1:
+ self.DelaySpinBox.setEnabled(False)
def onStartLoop(self):
"""
Go to the last slide.
"""
- delay = self.parent.parent.ImageTab.loop_delay
- self.timer_id = self.startTimer(delay * 1000)
+ if self.PreviewListWidget.rowCount() > 1:
+ self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000)
def onStopLoop(self):
"""
@@ -92,4 +104,3 @@
def timerEvent(self, event):
if event.timerId() == self.timer_id:
self.onSlideSelectedNext()
-
=== modified file 'openlp/plugins/images/lib/imagetab.py'
--- openlp/plugins/images/lib/imagetab.py 2009-07-03 20:33:41 +0000
+++ openlp/plugins/images/lib/imagetab.py 2009-07-06 16:34:13 +0000
@@ -49,7 +49,6 @@
self.TimeoutSpacer = QtGui.QSpacerItem(147, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.TimeoutLayout.addItem(self.TimeoutSpacer)
-
self.ImageLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ImageModeGroupBox)
# Signals and slots
QtCore.QObject.connect(self.TimeoutSpinBox,
@@ -57,6 +56,7 @@
def retranslateUi(self):
self.TimeoutLabel.setText(translate(u'ImageTab', u'Slide Loop Delay:'))
+ self.TimeoutSpinBox.setSuffix(translate(u'ImageTab', u's'))
def onTimeoutSpinBoxChanged(self):
self.loop_delay = self.TimeoutSpinBox.value()
Follow ups