This commit is contained in:
Raoul Snyman 2010-12-31 23:45:12 +02:00
commit cd826f525a
49 changed files with 1084 additions and 1331 deletions

View File

@ -84,7 +84,8 @@ html_expands.append({u'desc': u'Underline', u'start tag': u'{u}',
u'start html': u'<span style="text-decoration: underline;">', u'start html': u'<span style="text-decoration: underline;">',
u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True})
def translate(context, text, comment=None): def translate(context, text, comment=None,
encoding=QtCore.QCoreApplication.CodecForTr, n=-1):
""" """
A special shortcut method to wrap around the Qt4 translation functions. A special shortcut method to wrap around the Qt4 translation functions.
This abstracts the translation procedure so that we can change it if at a This abstracts the translation procedure so that we can change it if at a
@ -101,7 +102,7 @@ def translate(context, text, comment=None):
An identifying string for when the same text is used in different roles An identifying string for when the same text is used in different roles
within the same context. within the same context.
""" """
return QtCore.QCoreApplication.translate(context, text, comment) return QtCore.QCoreApplication.translate(context, text, comment, encoding, n)
def get_text_file_string(text_file): def get_text_file_string(text_file):
""" """
@ -325,4 +326,4 @@ from dockwidget import OpenLPDockWidget
from renderer import Renderer from renderer import Renderer
from rendermanager import RenderManager from rendermanager import RenderManager
from mediamanageritem import MediaManagerItem from mediamanageritem import MediaManagerItem
from baselistwithdnd import BaseListWithDnD from baselistwithdnd import BaseListWithDnD

View File

@ -284,34 +284,30 @@ class MediaManagerItem(QtGui.QWidget):
self.listView.addAction( self.listView.addAction(
context_menu_action( context_menu_action(
self.listView, u':/general/general_edit.png', self.listView, u':/general/general_edit.png',
unicode(translate('OpenLP.MediaManagerItem', '&Edit %s')) % self.plugin.getString(StringContent.Edit)[u'title'],
name_string[u'singular'],
self.onEditClick)) self.onEditClick))
self.listView.addAction(context_menu_separator(self.listView)) self.listView.addAction(context_menu_separator(self.listView))
if self.hasDeleteIcon: if self.hasDeleteIcon:
self.listView.addAction( self.listView.addAction(
context_menu_action( context_menu_action(
self.listView, u':/general/general_delete.png', self.listView, u':/general/general_delete.png',
unicode(translate('OpenLP.MediaManagerItem', self.plugin.getString(StringContent.Delete)[u'title'],
'&Delete %s')) %
name_string[u'singular'],
self.onDeleteClick)) self.onDeleteClick))
self.listView.addAction(context_menu_separator(self.listView)) self.listView.addAction(context_menu_separator(self.listView))
self.listView.addAction( self.listView.addAction(
context_menu_action( context_menu_action(
self.listView, u':/general/general_preview.png', self.listView, u':/general/general_preview.png',
unicode(translate('OpenLP.MediaManagerItem', '&Preview %s')) % self.plugin.getString(StringContent.Preview)[u'title'],
name_string[u'singular'],
self.onPreviewClick)) self.onPreviewClick))
self.listView.addAction( self.listView.addAction(
context_menu_action( context_menu_action(
self.listView, u':/general/general_live.png', self.listView, u':/general/general_live.png',
translate('OpenLP.MediaManagerItem', '&Show Live'), self.plugin.getString(StringContent.Live)[u'title'],
self.onLiveClick)) self.onLiveClick))
self.listView.addAction( self.listView.addAction(
context_menu_action( context_menu_action(
self.listView, u':/general/general_add.png', self.listView, u':/general/general_add.png',
translate('OpenLP.MediaManagerItem', '&Add to Service'), self.plugin.getString(StringContent.Service)[u'title'],
self.onAddClick)) self.onAddClick))
if self.addToServiceItem: if self.addToServiceItem:
self.listView.addAction( self.listView.addAction(
@ -445,7 +441,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem', translate('OpenLP.MediaManagerItem',
'You must select one or more items to preview.')) 'You must select one or more items to preview.'))
else: else:
log.debug(self.plugin.name + u' Preview requested') log.debug(u'%s Preview requested', self.plugin.name)
serviceItem = self.buildServiceItem() serviceItem = self.buildServiceItem()
if serviceItem: if serviceItem:
serviceItem.from_plugin = True serviceItem.from_plugin = True
@ -462,7 +458,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem', translate('OpenLP.MediaManagerItem',
'You must select one or more items to send live.')) 'You must select one or more items to send live.'))
else: else:
log.debug(self.plugin.name + u' Live requested') log.debug(u'%s Live requested', self.plugin.name)
serviceItem = self.buildServiceItem() serviceItem = self.buildServiceItem()
if serviceItem: if serviceItem:
serviceItem.from_plugin = True serviceItem.from_plugin = True
@ -481,7 +477,7 @@ class MediaManagerItem(QtGui.QWidget):
# Is it posssible to process multiple list items to generate # Is it posssible to process multiple list items to generate
# multiple service items? # multiple service items?
if self.singleServiceItem or self.remoteTriggered: if self.singleServiceItem or self.remoteTriggered:
log.debug(self.plugin.name + u' Add requested') log.debug(u'%s Add requested', self.plugin.name)
serviceItem = self.buildServiceItem(None, True) serviceItem = self.buildServiceItem(None, True)
if serviceItem: if serviceItem:
serviceItem.from_plugin = False serviceItem.from_plugin = False
@ -505,7 +501,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem', translate('OpenLP.MediaManagerItem',
'You must select one or more items')) 'You must select one or more items'))
else: else:
log.debug(self.plugin.name + u' Add requested') log.debug(u'%s Add requested', self.plugin.name)
serviceItem = self.parent.serviceManager.getServiceItem() serviceItem = self.parent.serviceManager.getServiceItem()
if not serviceItem: if not serviceItem:
QtGui.QMessageBox.information(self, QtGui.QMessageBox.information(self,

View File

@ -58,7 +58,7 @@ class ItemCapabilities(object):
NoLineBreaks = 7 NoLineBreaks = 7
OnLoadUpdate = 8 OnLoadUpdate = 8
AddIfNewItem = 9 AddIfNewItem = 9
ProvidesOwnDisplay = 10
class ServiceItem(object): class ServiceItem(object):
""" """
@ -397,4 +397,4 @@ class ServiceItem(object):
""" """
Returns the path of the raw frame Returns the path of the raw frame
""" """
return self._raw_frames[row][u'path'] return self._raw_frames[row][u'path']

View File

@ -31,7 +31,7 @@ class SettingsTab(QtGui.QWidget):
SettingsTab is a helper widget for plugins to define Tabs for the settings SettingsTab is a helper widget for plugins to define Tabs for the settings
dialog. dialog.
""" """
def __init__(self, title, visible_title=None): def __init__(self, title, visible_title=None):
""" """
Constructor to create the Settings tab item. Constructor to create the Settings tab item.
@ -95,4 +95,4 @@ class SettingsTab(QtGui.QWidget):
Indicates if called before or after updates. Indicates if called before or after updates.
""" """
pass pass

View File

@ -33,11 +33,11 @@ processing version 1 themes in OpenLP version 2.
from xml.etree.ElementTree import ElementTree, XML from xml.etree.ElementTree import ElementTree, XML
from PyQt4 import QtGui from PyQt4 import QtGui
DELPHI_COLORS = {"clRed":0xFF0000, DELPHI_COLORS = {u'clRed': 0xFF0000,
"clBlue":0x0000FF, u'clBlue': 0x0000FF,
"clYellow":0xFFFF00, u'clYellow': 0xFFFF00,
"clBlack":0x000000, u'clBlack': 0x000000,
"clWhite":0xFFFFFF} u'clWhite': 0xFFFFFF}
BLANK_STYLE_XML = \ BLANK_STYLE_XML = \
'''<?xml version="1.0" encoding="iso-8859-1"?> '''<?xml version="1.0" encoding="iso-8859-1"?>
@ -222,4 +222,4 @@ class Theme(object):
for key in dir(self): for key in dir(self):
if key[0:1] != u'_': if key[0:1] != u'_':
theme_strings.append(u'%30s : %s' % (key, getattr(self, key))) theme_strings.append(u'%30s : %s' % (key, getattr(self, key)))
return u'\n'.join(theme_strings) return u'\n'.join(theme_strings)

View File

@ -84,7 +84,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
u'lxml: %s\n' % etree.__version__ + \ u'lxml: %s\n' % etree.__version__ + \
u'Chardet: %s\n' % chardet_version + \ u'Chardet: %s\n' % chardet_version + \
u'PyEnchant: %s\n' % enchant_version + \ u'PyEnchant: %s\n' % enchant_version + \
u'PySQLite: %s\n' % sqlite_version u'PySQLite: %s\n' % sqlite_version
if platform.system() == u'Linux': if platform.system() == u'Linux':
if os.environ.get(u'KDE_FULL_SESSION') == u'true': if os.environ.get(u'KDE_FULL_SESSION') == u'true':
system = system + u'Desktop: KDE SC\n' system = system + u'Desktop: KDE SC\n'
@ -135,7 +135,9 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
'--- Please enter the report below this line. ---\n\n\n' '--- Please enter the report below this line. ---\n\n\n'
'--- Exception Traceback ---\n%s\n' '--- Exception Traceback ---\n%s\n'
'--- System information ---\n%s\n' '--- System information ---\n%s\n'
'--- Library Versions ---\n%s\n')) '--- Library Versions ---\n%s\n',
'Please add the information that bug reports are favoured written '
'in English.'))
content = self._createReport() content = self._createReport()
for line in content[1].split(u'\n'): for line in content[1].split(u'\n'):
if re.search(r'[/\\]openlp[/\\]', line): if re.search(r'[/\\]openlp[/\\]', line):
@ -144,4 +146,4 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
exception = line.split(u'\n')[-1].split(u':')[0] exception = line.split(u'\n')[-1].split(u':')[0]
subject = u'Bug report: %s in %s' % (exception, source) subject = u'Bug report: %s in %s' % (exception, source)
mailto(address=u'bugs@openlp.org', subject=subject, mailto(address=u'bugs@openlp.org', subject=subject,
body=body % content) body=body % content)

View File

@ -141,10 +141,10 @@ class GeneralTab(SettingsTab):
self.settingsLayout.addWidget(self.autoPreviewCheckBox, 1, 0, 1, 2) self.settingsLayout.addWidget(self.autoPreviewCheckBox, 1, 0, 1, 2)
# Moved here from image tab # Moved here from image tab
self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox)
self.timeoutLabel.setObjectName("timeoutLabel") self.timeoutLabel.setObjectName(u'timeoutLabel')
self.settingsLayout.addWidget(self.timeoutLabel, 2, 0, 1, 1) self.settingsLayout.addWidget(self.timeoutLabel, 2, 0, 1, 1)
self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox) self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox)
self.timeoutSpinBox.setObjectName("timeoutSpinBox") self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
self.settingsLayout.addWidget(self.timeoutSpinBox, 2, 1, 1, 1) self.settingsLayout.addWidget(self.timeoutSpinBox, 2, 1, 1, 1)
self.generalLeftLayout.addWidget(self.settingsGroupBox) self.generalLeftLayout.addWidget(self.settingsGroupBox)
self.generalLeftSpacer = QtGui.QSpacerItem(20, 40, self.generalLeftSpacer = QtGui.QSpacerItem(20, 40,
@ -389,11 +389,11 @@ class GeneralTab(SettingsTab):
settings = QtCore.QSettings() settings = QtCore.QSettings()
settings.beginGroup(self.settingsSection) settings.beginGroup(self.settingsSection)
for screen in self.screens.screen_list: for screen in self.screens.screen_list:
screen_name = u'%s %d' % (translate('OpenLP.GeneralTab', 'Screen'), screen_name = unicode(translate('OpenLP.GeneralTab', 'Screen %d')) \
screen[u'number'] + 1) % (screen[u'number'] + 1)
if screen[u'primary']: if screen[u'primary']:
screen_name = u'%s (%s)' % (screen_name, screen_name = unicode(translate('OpenLP.GeneralTab',
translate('OpenLP.GeneralTab', 'primary')) '%s (primary)')) % screen_name
self.monitorComboBox.addItem(screen_name) self.monitorComboBox.addItem(screen_name)
self.numberEdit.setText(unicode(settings.value( self.numberEdit.setText(unicode(settings.value(
u'ccli number', QtCore.QVariant(u'')).toString())) u'ccli number', QtCore.QVariant(u'')).toString()))
@ -530,4 +530,4 @@ class GeneralTab(SettingsTab):
""" """
Called when the width, height, x position or y position has changed. Called when the width, height, x position or y position has changed.
""" """
self.overrideChanged = True self.overrideChanged = True

View File

@ -209,7 +209,7 @@ class MainDisplay(DisplayWidget):
shrink = True shrink = True
else: else:
shrink = False shrink = False
js = u'show_alert("%s", "%s")' % ( js = u'show_alert("%s", "%s")' % (
text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'), text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'),
u'top' if shrink else u'') u'top' if shrink else u'')
height = self.frame.evaluateJavaScript(js) height = self.frame.evaluateJavaScript(js)
@ -235,8 +235,8 @@ class MainDisplay(DisplayWidget):
def image(self, name): def image(self, name):
""" """
Add an image as the background. The image is converted to a Add an image as the background. The image is converted to a bytestream
bytestream on route. on route.
`Image` `Image`
The Image to be displayed can be QImage or QPixmap The Image to be displayed can be QImage or QPixmap
@ -421,8 +421,8 @@ class MainDisplay(DisplayWidget):
Display the Footer Display the Footer
""" """
log.debug(u'footer') log.debug(u'footer')
js = "show_footer('" + \ js = u'show_footer(\'' + \
text.replace("\\", "\\\\").replace("\'", "\\\'") + "')" text.replace(u'\\', u'\\\\').replace(u'\'', u'\\\'') + u'\')'
self.frame.evaluateJavaScript(js) self.frame.evaluateJavaScript(js)
def hideDisplay(self, mode=HideMode.Screen): def hideDisplay(self, mode=HideMode.Screen):

View File

@ -748,6 +748,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
""" """
self.settingsForm.exec_() self.settingsForm.exec_()
def paintEvent(self, event):
"""
We need to make sure, that the SlidePreview's size is correct.
"""
self.previewController.previewSizeChanged()
self.liveController.previewSizeChanged()
def onSettingsShortcutsItemClicked(self): def onSettingsShortcutsItemClicked(self):
""" """
Show the shortcuts dialog Show the shortcuts dialog

View File

@ -92,7 +92,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
self.statusComboBox.setEnabled(False) self.statusComboBox.setEnabled(False)
def _setDetails(self): def _setDetails(self):
log.debug('PluginStatus: %s', str(self.activePlugin.status)) log.debug(u'PluginStatus: %s', str(self.activePlugin.status))
self.versionNumberLabel.setText(self.activePlugin.version) self.versionNumberLabel.setText(self.activePlugin.version)
self.aboutTextBrowser.setHtml(self.activePlugin.about()) self.aboutTextBrowser.setHtml(self.activePlugin.about())
self.programaticChange = True self.programaticChange = True
@ -142,4 +142,4 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
translate('OpenLP.PluginForm', '%s (Disabled)')) translate('OpenLP.PluginForm', '%s (Disabled)'))
name_string = self.activePlugin.getString(StringContent.Name) name_string = self.activePlugin.getString(StringContent.Name)
self.pluginListWidget.currentItem().setText( self.pluginListWidget.currentItem().setText(
status_text % name_string[u'singular']) status_text % name_string[u'singular'])

View File

@ -71,7 +71,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
if event.modifiers() & Qt.ShiftModifier == Qt.ShiftModifier: if event.modifiers() & Qt.ShiftModifier == Qt.ShiftModifier:
key_string = u'Shift+' + key_string key_string = u'Shift+' + key_string
key_sequence = QtGui.QKeySequence(key_string) key_sequence = QtGui.QKeySequence(key_string)
existing_key = QtGui.QKeySequence("Ctrl+Shift+F8") existing_key = QtGui.QKeySequence(u'Ctrl+Shift+F8')
if key_sequence == existing_key: if key_sequence == existing_key:
QtGui.QMessageBox.warning( QtGui.QMessageBox.warning(
self, self,

View File

@ -377,25 +377,11 @@ class SlideController(QtGui.QWidget):
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.typePrefix), QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.typePrefix),
self.onTextRequest) self.onTextRequest)
QtCore.QObject.connect(self.parent.ControlSplitter,
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.previewSizeChanged)
QtCore.QObject.connect(self.Splitter,
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.previewSizeChanged)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem) QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_screen_changed'), self.screenSizeChanged) QtCore.SIGNAL(u'config_screen_changed'), self.screenSizeChanged)
def paintEvent(self, event):
"""
When the Slidecontroller is painted, we need to make sure, that the
SlidePreview's size is updated.
"""
# We need to make this circuit, because we have to consider the other
# slidecontroller as well.
self.parent.previewController.previewSizeChanged()
self.parent.liveController.previewSizeChanged()
def screenSizeChanged(self): def screenSizeChanged(self):
""" """
Settings dialog has changed the screen size of adjust output and Settings dialog has changed the screen size of adjust output and
@ -561,6 +547,8 @@ class SlideController(QtGui.QWidget):
if self.serviceItem.is_media(): if self.serviceItem.is_media():
self.onMediaClose() self.onMediaClose()
if self.isLive: if self.isLive:
if serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay):
self._forceUnblank()
blanked = self.BlankScreen.isChecked() blanked = self.BlankScreen.isChecked()
else: else:
blanked = False blanked = False
@ -568,8 +556,6 @@ class SlideController(QtGui.QWidget):
[serviceItem, self.isLive, blanked, slideno]) [serviceItem, self.isLive, blanked, slideno])
self.slideList = {} self.slideList = {}
width = self.parent.ControlSplitter.sizes()[self.split] width = self.parent.ControlSplitter.sizes()[self.split]
# Set pointing cursor when we have something to point at
self.PreviewListWidget.setCursor(QtCore.Qt.PointingHandCursor)
self.serviceItem = serviceItem self.serviceItem = serviceItem
self.PreviewListWidget.clear() self.PreviewListWidget.clear()
self.PreviewListWidget.setRowCount(0) self.PreviewListWidget.setRowCount(0)
@ -698,7 +684,7 @@ class SlideController(QtGui.QWidget):
""" """
log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) log.debug(u'mainDisplaySetBackground live = %s' % self.isLive)
if not self.display.primary: if not self.display.primary:
self.onHideDisplay(True) self.onBlankDisplay(True)
def onSlideBlank(self): def onSlideBlank(self):
""" """
@ -1041,3 +1027,23 @@ class SlideController(QtGui.QWidget):
self.video.hide() self.video.hide()
self.SlidePreview.clear() self.SlidePreview.clear()
self.SlidePreview.show() self.SlidePreview.show()
def _forceUnblank(self):
"""
Used by command items which provide their own displays to reset the
screen hide attributes
"""
if self.BlankScreen.isChecked:
self.BlankScreen.setChecked(False)
self.HideMenu.setDefaultAction(self.BlankScreen)
QtCore.QSettings().setValue(
self.parent.generalSettingsSection + u'/screen blank',
QtCore.QVariant(False))
if self.ThemeScreen.isChecked:
self.ThemeScreen.setChecked(False)
self.HideMenu.setDefaultAction(self.ThemeScreen)
if self.screens.display_count > 1:
if self.DesktopScreen.isChecked:
self.DesktopScreen.setChecked(False)
self.HideMenu.setDefaultAction(self.DesktopScreen)

View File

@ -56,90 +56,70 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.registerFields() self.registerFields()
self.accepted = False self.accepted = False
self.updateThemeAllowed = True self.updateThemeAllowed = True
QtCore.QObject.connect(self.backgroundTypeComboBox, QtCore.QObject.connect(self.backgroundComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.onBackgroundComboBox) self.onBackgroundComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.gradientComboBox, QtCore.QObject.connect(self.gradientComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.onGradientComboBox) self.onGradientComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.colorButton, QtCore.QObject.connect(self.colorButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onColorButtonClicked) self.onColorButtonClicked)
QtCore.QObject.connect(self.gradientStartButton, QtCore.QObject.connect(self.gradientStartButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onGradientStartButtonClicked) self.onGradientStartButtonClicked)
QtCore.QObject.connect(self.gradientEndButton, QtCore.QObject.connect(self.gradientEndButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onGradientEndButtonClicked) self.onGradientEndButtonClicked)
QtCore.QObject.connect(self.imageBrowseButton, QtCore.QObject.connect(self.imageBrowseButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onImageBrowseButtonClicked) self.onImageBrowseButtonClicked)
QtCore.QObject.connect(self.mainColorPushButton, QtCore.QObject.connect(self.mainColorButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onMainColourPushButtonClicked) self.onMainColorButtonClicked)
QtCore.QObject.connect(self.outlineColorPushButton, QtCore.QObject.connect(self.outlineColorButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onOutlineColourPushButtonClicked) self.onOutlineColorButtonClicked)
QtCore.QObject.connect(self.shadowColorPushButton, QtCore.QObject.connect(self.shadowColorButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onShadowColourPushButtonClicked) self.onShadowColorButtonClicked)
QtCore.QObject.connect(self.outlineCheckBox, QtCore.QObject.connect(self.outlineCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), QtCore.SIGNAL(u'stateChanged(int)'),
self.onOutlineCheckCheckBoxChanged) self.onOutlineCheckCheckBoxStateChanged)
QtCore.QObject.connect(self.shadowCheckBox, QtCore.QObject.connect(self.shadowCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), QtCore.SIGNAL(u'stateChanged(int)'),
self.onShadowCheckCheckBoxChanged) self.onShadowCheckCheckBoxStateChanged)
QtCore.QObject.connect(self.footerColorPushButton, QtCore.QObject.connect(self.footerColorButton,
QtCore.SIGNAL(u'pressed()'), QtCore.SIGNAL(u'clicked()'),
self.onFooterColourPushButtonClicked) self.onFooterColorButtonClicked)
QtCore.QObject.connect(self.mainDefaultPositionCheckBox, QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), QtCore.SIGNAL(u'stateChanged(int)'),
self.onMainDefaultPositionCheckBox) self.onMainPositionCheckBoxStateChanged)
QtCore.QObject.connect(self.footerDefaultPositionCheckBox, QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), QtCore.SIGNAL(u'stateChanged(int)'),
self.onFooterDefaultPositionCheckBox) self.onFooterPositionCheckBoxStateChanged)
QtCore.QObject.connect(self, QtCore.QObject.connect(self,
QtCore.SIGNAL(u'currentIdChanged(int)'), QtCore.SIGNAL(u'currentIdChanged(int)'),
self.pageChanged) self.onCurrentIdChanged)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'theme_line_count'), QtCore.SIGNAL(u'theme_line_count'),
self.updateLinesText) self.updateLinesText)
QtCore.QObject.connect(self.mainSizeSpinBox, QtCore.QObject.connect(self.mainSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'), QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines) self.calculateLines)
QtCore.QObject.connect(self.mainSizeSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.calculateLines)
QtCore.QObject.connect(self.lineSpacingSpinBox, QtCore.QObject.connect(self.lineSpacingSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'), QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines) self.calculateLines)
QtCore.QObject.connect(self.lineSpacingSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.calculateLines)
QtCore.QObject.connect(self.outlineSizeSpinBox, QtCore.QObject.connect(self.outlineSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'), QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines) self.calculateLines)
QtCore.QObject.connect(self.outlineSizeSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.calculateLines)
QtCore.QObject.connect(self.shadowSizeSpinBox, QtCore.QObject.connect(self.shadowSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'), QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines) self.calculateLines)
QtCore.QObject.connect(self.shadowSizeSpinBox,
QtCore.SIGNAL(u'editingFinished()'),
self.calculateLines)
QtCore.QObject.connect(self.mainFontComboBox, QtCore.QObject.connect(self.mainFontComboBox,
QtCore.SIGNAL(u'activated(int)'), QtCore.SIGNAL(u'activated(int)'),
self.calculateLines) self.calculateLines)
QtCore.QObject.connect(self, QtCore.SIGNAL(u'accepted()'), self.accept)
def pageChanged(self, pageId):
"""
Detects Page changes and updates as approprate.
"""
if pageId == 6:
self.updateTheme()
frame = self.thememanager.generateImage(self.theme)
self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
def setDefaults(self): def setDefaults(self):
""" """
@ -147,19 +127,19 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
""" """
self.restart() self.restart()
self.accepted = False self.accepted = False
self.setBackgroundTabValues() self.setBackgroundPageValues()
self.setMainAreaTabValues() self.setMainAreaPageValues()
self.setFooterAreaTabValues() self.setFooterAreaPageValues()
self.setAlignmentTabValues() self.setAlignmentPageValues()
self.setPositionTabValues() self.setPositionPageValues()
self.setPreviewTabValues() self.setPreviewPageValues()
def registerFields(self): def registerFields(self):
""" """
Map field names to screen names, Map field names to screen names,
""" """
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'background_type', self.backgroundTypeComboBox) u'background_type', self.backgroundComboBox)
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'color', self.colorButton) u'color', self.colorButton)
self.backgroundPage.registerField( self.backgroundPage.registerField(
@ -167,11 +147,11 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'grandient_end', self.gradientEndButton) u'grandient_end', self.gradientEndButton)
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'background_image', self.imageLineEdit) u'background_image', self.imageFileEdit)
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'gradient', self.gradientComboBox) u'gradient', self.gradientComboBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'mainColorPushButton', self.mainColorPushButton) u'mainColorButton', self.mainColorButton)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'mainSizeSpinBox', self.mainSizeSpinBox) u'mainSizeSpinBox', self.mainSizeSpinBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
@ -179,17 +159,17 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'outlineCheckBox', self.outlineCheckBox) u'outlineCheckBox', self.outlineCheckBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'outlineColorPushButton', self.outlineColorPushButton) u'outlineColorButton', self.outlineColorButton)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'outlineSizeSpinBox', self.outlineSizeSpinBox) u'outlineSizeSpinBox', self.outlineSizeSpinBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'shadowCheckBox', self.shadowCheckBox) u'shadowCheckBox', self.shadowCheckBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'boldCheckBox', self.boldCheckBox) u'mainBoldCheckBox', self.mainBoldCheckBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'italicsCheckBox', self.italicsCheckBox) u'mainItalicsCheckBox', self.mainItalicsCheckBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'shadowColorPushButton', self.shadowColorPushButton) u'shadowColorButton', self.shadowColorButton)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
u'shadowSizeSpinBox', self.shadowSizeSpinBox) u'shadowSizeSpinBox', self.shadowSizeSpinBox)
self.mainAreaPage.registerField( self.mainAreaPage.registerField(
@ -224,7 +204,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
Calculate the number of lines on a page by rendering text Calculate the number of lines on a page by rendering text
""" """
# Do not trigger on start up # Do not trigger on start up
if self.page != 0: if self.currentPage != self.welcomePage:
self.updateTheme() self.updateTheme()
frame = self.thememanager.generateImage(self.theme, True) frame = self.thememanager.generateImage(self.theme, True)
@ -235,7 +215,37 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.mainLineCountLabel.setText(unicode(translate('OpenLP.ThemeForm', \ self.mainLineCountLabel.setText(unicode(translate('OpenLP.ThemeForm', \
'(%d lines per slide)' % int(lines)))) '(%d lines per slide)' % int(lines))))
def onOutlineCheckCheckBoxChanged(self, state): def resizeEvent(self, event=None):
"""
Rescale the theme preview thumbnail on resize events.
"""
if not event:
event = QtGui.QResizeEvent(self.size(), self.size())
QtGui.QWizard.resizeEvent(self, event)
if self.currentPage() == self.previewPage:
frameWidth = self.previewBoxLabel.lineWidth()
pixmapWidth = self.previewArea.width() - 2 * frameWidth
pixmapHeight = self.previewArea.height() - 2 * frameWidth
aspectRatio = float(pixmapWidth) / pixmapHeight
if aspectRatio < self.displayAspectRatio:
pixmapHeight = int(pixmapWidth / self.displayAspectRatio + 0.5)
else:
pixmapWidth = int(pixmapHeight * self.displayAspectRatio + 0.5)
self.previewBoxLabel.setFixedSize(pixmapWidth + 2 * frameWidth,
pixmapHeight + 2 * frameWidth)
def onCurrentIdChanged(self, pageId):
"""
Detects Page changes and updates as approprate.
"""
if self.page(pageId) == self.previewPage:
self.updateTheme()
frame = self.thememanager.generateImage(self.theme)
self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
self.displayAspectRatio = float(frame.width()) / frame.height()
self.resizeEvent()
def onOutlineCheckCheckBoxStateChanged(self, state):
""" """
Change state as Outline check box changed Change state as Outline check box changed
""" """
@ -243,11 +253,11 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_outline = True self.theme.font_main_outline = True
else: else:
self.theme.font_main_outline = False self.theme.font_main_outline = False
self.outlineColorPushButton.setEnabled(self.theme.font_main_outline) self.outlineColorButton.setEnabled(self.theme.font_main_outline)
self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline) self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
self.calculateLines() self.calculateLines()
def onShadowCheckCheckBoxChanged(self, state): def onShadowCheckCheckBoxStateChanged(self, state):
""" """
Change state as Shadow check box changed Change state as Shadow check box changed
""" """
@ -255,35 +265,21 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_shadow = True self.theme.font_main_shadow = True
else: else:
self.theme.font_main_shadow = False self.theme.font_main_shadow = False
self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow) self.shadowColorButton.setEnabled(self.theme.font_main_shadow)
self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow) self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
self.calculateLines() self.calculateLines()
def onMainDefaultPositionCheckBox(self, value): def onMainPositionCheckBoxStateChanged(self, value):
""" """
Change state as Main Area Position check box changed Change state as Main Area Position check box changed
""" """
if value == QtCore.Qt.Checked: self.theme.font_main_override = (value == QtCore.Qt.Checked)
self.theme.font_main_override = False
else:
self.theme.font_main_override = True
self.mainXSpinBox.setEnabled(self.theme.font_main_override)
self.mainYSpinBox.setEnabled(self.theme.font_main_override)
self.mainHeightSpinBox.setEnabled(self.theme.font_main_override)
self.mainWidthSpinBox.setEnabled(self.theme.font_main_override)
def onFooterDefaultPositionCheckBox(self, value): def onFooterPositionCheckBoxStateChanged(self, value):
""" """
Change state as Footer Area Position check box changed Change state as Footer Area Position check box changed
""" """
if value == QtCore.Qt.Checked: self.theme.font_footer_override = (value == QtCore.Qt.Checked)
self.theme.font_footer_override = False
else:
self.theme.font_footer_override = True
self.footerXSpinBox.setEnabled(self.theme.font_footer_override)
self.footerYSpinBox.setEnabled(self.theme.font_footer_override)
self.footerHeightSpinBox.setEnabled(self.theme.font_footer_override)
self.footerWidthSpinBox.setEnabled(self.theme.font_footer_override)
def exec_(self, edit=False): def exec_(self, edit=False):
""" """
@ -293,8 +289,14 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.updateThemeAllowed = False self.updateThemeAllowed = False
self.setDefaults() self.setDefaults()
self.updateThemeAllowed = True self.updateThemeAllowed = True
self.themeNameLabel.setVisible(not edit)
self.themeNameEdit.setVisible(not edit)
if edit: if edit:
self.setWindowTitle(unicode(translate('OpenLP.ThemeWizard',
'Edit Theme %s')) % self.theme.theme_name)
self.next() self.next()
else:
self.setWindowTitle(translate('OpenLP.ThemeWizard', 'New Theme'))
return QtGui.QWizard.exec_(self) return QtGui.QWizard.exec_(self)
def initializePage(self, id): def initializePage(self, id):
@ -302,21 +304,21 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
Set up the pages for Initial run through dialog Set up the pages for Initial run through dialog
""" """
log.debug(u'initializePage %s' % id) log.debug(u'initializePage %s' % id)
self.page = id wizardPage = self.page(id)
if id == 1: if wizardPage == self.backgroundPage:
self.setBackgroundTabValues() self.setBackgroundPageValues()
elif id == 2: elif wizardPage == self.mainAreaPage:
self.setMainAreaTabValues() self.setMainAreaPageValues()
elif id == 3: elif wizardPage == self.footerAreaPage:
self.setFooterAreaTabValues() self.setFooterAreaPageValues()
elif id == 4: elif wizardPage == self.alignmentPage:
self.setAlignmentTabValues() self.setAlignmentPageValues()
elif id == 5: elif wizardPage == self.areaPositionPage:
self.setPositionTabValues() self.setPositionPageValues()
def setBackgroundTabValues(self): def setBackgroundPageValues(self):
""" """
Handle the display and State of the background display tab. Handle the display and state of the Background page.
""" """
if self.theme.background_type == \ if self.theme.background_type == \
BackgroundType.to_string(BackgroundType.Solid): BackgroundType.to_string(BackgroundType.Solid):
@ -331,7 +333,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.background_end_color) self.theme.background_end_color)
self.setField(u'background_type', QtCore.QVariant(1)) self.setField(u'background_type', QtCore.QVariant(1))
else: else:
self.imageLineEdit.setText(self.theme.background_filename) self.imageFileEdit.setText(self.theme.background_filename)
self.setField(u'background_type', QtCore.QVariant(2)) self.setField(u'background_type', QtCore.QVariant(2))
if self.theme.background_direction == \ if self.theme.background_direction == \
BackgroundGradientType.to_string(BackgroundGradientType.Horizontal): BackgroundGradientType.to_string(BackgroundGradientType.Horizontal):
@ -348,122 +350,101 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
else: else:
self.setField(u'gradient', QtCore.QVariant(4)) self.setField(u'gradient', QtCore.QVariant(4))
def setMainAreaTabValues(self): def setMainAreaPageValues(self):
""" """
Handle the display and State of the Main Area tab. Handle the display and state of the Main Area page.
""" """
self.mainFontComboBox.setCurrentFont( self.mainFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name)) QtGui.QFont(self.theme.font_main_name))
self.mainColorPushButton.setStyleSheet(u'background-color: %s' % self.mainColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_color) self.theme.font_main_color)
self.setField(u'mainSizeSpinBox', \ self.setField(u'mainSizeSpinBox',
QtCore.QVariant(self.theme.font_main_size)) QtCore.QVariant(self.theme.font_main_size))
self.setField(u'lineSpacingSpinBox', \ self.setField(u'lineSpacingSpinBox',
QtCore.QVariant(self.theme.font_main_line_adjustment)) QtCore.QVariant(self.theme.font_main_line_adjustment))
self.setField(u'outlineCheckBox', \ self.setField(u'outlineCheckBox',
QtCore.QVariant(self.theme.font_main_outline)) QtCore.QVariant(self.theme.font_main_outline))
self.outlineColorPushButton.setStyleSheet(u'background-color: %s' % self.outlineColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_outline_color) self.theme.font_main_outline_color)
self.setField(u'outlineSizeSpinBox', \ self.setField(u'outlineSizeSpinBox',
QtCore.QVariant(self.theme.font_main_outline_size)) QtCore.QVariant(self.theme.font_main_outline_size))
self.setField(u'shadowCheckBox', \ self.setField(u'shadowCheckBox',
QtCore.QVariant(self.theme.font_main_shadow)) QtCore.QVariant(self.theme.font_main_shadow))
self.shadowColorPushButton.setStyleSheet(u'background-color: %s' % self.shadowColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_shadow_color) self.theme.font_main_shadow_color)
self.setField(u'shadowSizeSpinBox', \ self.setField(u'shadowSizeSpinBox',
QtCore.QVariant(self.theme.font_main_shadow_size)) QtCore.QVariant(self.theme.font_main_shadow_size))
self.setField(u'boldCheckBox', \ self.setField(u'mainBoldCheckBox',
QtCore.QVariant(self.theme.font_main_bold)) QtCore.QVariant(self.theme.font_main_bold))
self.setField(u'italicsCheckBox', \ self.setField(u'mainItalicsCheckBox',
QtCore.QVariant(self.theme.font_main_italics)) QtCore.QVariant(self.theme.font_main_italics))
# Set up field states
if self.theme.font_main_outline:
self.setField(u'outlineCheckBox', QtCore.QVariant(False))
else:
self.setField(u'outlineCheckBox', QtCore.QVariant(True))
self.outlineColorPushButton.setEnabled(self.theme.font_main_outline)
self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
if self.theme.font_main_shadow:
self.setField(u'shadowCheckBox', QtCore.QVariant(False))
else:
self.setField(u'shadowCheckBox', QtCore.QVariant(True))
self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow)
self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
def setFooterAreaTabValues(self): def setFooterAreaPageValues(self):
""" """
Handle the display and State of the Footer Area tab. Handle the display and state of the Footer Area page.
""" """
self.footerFontComboBox.setCurrentFont( self.footerFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name)) QtGui.QFont(self.theme.font_main_name))
self.footerColorPushButton.setStyleSheet(u'background-color: %s' % self.footerColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_footer_color) self.theme.font_footer_color)
self.setField(u'footerSizeSpinBox', \ self.setField(u'footerSizeSpinBox',
QtCore.QVariant(self.theme.font_footer_size)) QtCore.QVariant(self.theme.font_footer_size))
def setPositionTabValues(self): def setPositionPageValues(self):
""" """
Handle the display and State of the Position tab. Handle the display and state of the Position page.
""" """
# Main Area # Main Area
if self.theme.font_main_override: self.mainPositionCheckBox.setChecked(not self.theme.font_main_override)
self.mainDefaultPositionCheckBox.setChecked(False) self.setField(u'mainPositionX', QtCore.QVariant(self.theme.font_main_x))
else: self.setField(u'mainPositionY', QtCore.QVariant(self.theme.font_main_y))
self.mainDefaultPositionCheckBox.setChecked(True) self.setField(u'mainPositionHeight',
self.setField(u'mainPositionX', \
QtCore.QVariant(self.theme.font_main_x))
self.setField(u'mainPositionY', \
QtCore.QVariant(self.theme.font_main_y))
self.setField(u'mainPositionHeight', \
QtCore.QVariant(self.theme.font_main_height)) QtCore.QVariant(self.theme.font_main_height))
self.setField(u'mainPositionWidth', \ self.setField(u'mainPositionWidth',
QtCore.QVariant(self.theme.font_main_width)) QtCore.QVariant(self.theme.font_main_width))
# Footer # Footer
if self.theme.font_footer_override: self.footerPositionCheckBox.setChecked(
self.footerDefaultPositionCheckBox.setChecked(False) not self.theme.font_footer_override)
else: self.setField(u'footerPositionX',
self.footerDefaultPositionCheckBox.setChecked(True)
self.setField(u'footerPositionX', \
QtCore.QVariant(self.theme.font_footer_x)) QtCore.QVariant(self.theme.font_footer_x))
self.setField(u'footerPositionY', \ self.setField(u'footerPositionY',
QtCore.QVariant(self.theme.font_footer_y)) QtCore.QVariant(self.theme.font_footer_y))
self.setField(u'footerPositionHeight', \ self.setField(u'footerPositionHeight',
QtCore.QVariant(self.theme.font_footer_height)) QtCore.QVariant(self.theme.font_footer_height))
self.setField(u'footerPositionWidth', \ self.setField(u'footerPositionWidth',
QtCore.QVariant(self.theme.font_footer_width)) QtCore.QVariant(self.theme.font_footer_width))
def setAlignmentTabValues(self): def setAlignmentPageValues(self):
""" """
Define the Tab Alignments Page Handle the display and state of the Alignments page.
""" """
self.setField(u'horizontal', \ self.setField(u'horizontal',
QtCore.QVariant(self.theme.display_horizontal_align)) QtCore.QVariant(self.theme.display_horizontal_align))
self.setField(u'vertical', \ self.setField(u'vertical',
QtCore.QVariant(self.theme.display_vertical_align)) QtCore.QVariant(self.theme.display_vertical_align))
self.setField(u'slideTransition', \ self.setField(u'slideTransition',
QtCore.QVariant(self.theme.display_slide_transition)) QtCore.QVariant(self.theme.display_slide_transition))
def setPreviewTabValues(self): def setPreviewPageValues(self):
"""
Handle the display and state of the Preview page.
"""
self.setField(u'name', QtCore.QVariant(self.theme.theme_name)) self.setField(u'name', QtCore.QVariant(self.theme.theme_name))
if len(self.theme.theme_name) > 0:
self.themeNameEdit.setEnabled(False)
else:
self.themeNameEdit.setEnabled(True)
def onBackgroundComboBox(self, index): def onBackgroundComboBoxCurrentIndexChanged(self, index):
""" """
Background style Combo box has changed. Background style Combo box has changed.
""" """
self.theme.background_type = BackgroundType.to_string(index) self.theme.background_type = BackgroundType.to_string(index)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onGradientComboBox(self, index): def onGradientComboBoxCurrentIndexChanged(self, index):
""" """
Background gradient Combo box has changed. Background gradient Combo box has changed.
""" """
self.theme.background_direction = \ self.theme.background_direction = \
BackgroundGradientType.to_string(index) BackgroundGradientType.to_string(index)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onColorButtonClicked(self): def onColorButtonClicked(self):
""" """
@ -471,7 +452,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
""" """
self.theme.background_color = \ self.theme.background_color = \
self._colorButton(self.theme.background_color) self._colorButton(self.theme.background_color)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onGradientStartButtonClicked(self): def onGradientStartButtonClicked(self):
""" """
@ -479,7 +460,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
""" """
self.theme.background_start_color = \ self.theme.background_start_color = \
self._colorButton(self.theme.background_start_color) self._colorButton(self.theme.background_start_color)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onGradientEndButtonClicked(self): def onGradientEndButtonClicked(self):
""" """
@ -487,7 +468,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
""" """
self.theme.background_end_color = \ self.theme.background_end_color = \
self._colorButton(self.theme.background_end_color) self._colorButton(self.theme.background_end_color)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onImageBrowseButtonClicked(self): def onImageBrowseButtonClicked(self):
""" """
@ -501,27 +482,27 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
images_filter) images_filter)
if filename: if filename:
self.theme.background_filename = unicode(filename) self.theme.background_filename = unicode(filename)
self.setBackgroundTabValues() self.setBackgroundPageValues()
def onMainColourPushButtonClicked(self): def onMainColorButtonClicked(self):
self.theme.font_main_color = \ self.theme.font_main_color = \
self._colorButton(self.theme.font_main_color) self._colorButton(self.theme.font_main_color)
self.setMainAreaTabValues() self.setMainAreaPageValues()
def onOutlineColourPushButtonClicked(self): def onOutlineColorButtonClicked(self):
self.theme.font_main_outline_color = \ self.theme.font_main_outline_color = \
self._colorButton(self.theme.font_main_outline_color) self._colorButton(self.theme.font_main_outline_color)
self.setMainAreaTabValues() self.setMainAreaPageValues()
def onShadowColourPushButtonClicked(self): def onShadowColorButtonClicked(self):
self.theme.font_main_shadow_color = \ self.theme.font_main_shadow_color = \
self._colorButton(self.theme.font_main_shadow_color) self._colorButton(self.theme.font_main_shadow_color)
self.setMainAreaTabValues() self.setMainAreaPageValues()
def onFooterColourPushButtonClicked(self): def onFooterColorButtonClicked(self):
self.theme.font_footer_color = \ self.theme.font_footer_color = \
self._colorButton(self.theme.font_footer_color) self._colorButton(self.theme.font_footer_color)
self.setFooterAreaTabValues() self.setFooterAreaPageValues()
def updateTheme(self): def updateTheme(self):
""" """
@ -543,9 +524,9 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_shadow_size = \ self.theme.font_main_shadow_size = \
self.field(u'shadowSizeSpinBox').toInt()[0] self.field(u'shadowSizeSpinBox').toInt()[0]
self.theme.font_main_bold = \ self.theme.font_main_bold = \
self.field(u'boldCheckBox').toBool() self.field(u'mainBoldCheckBox').toBool()
self.theme.font_main_italics = \ self.theme.font_main_italics = \
self.field(u'italicsCheckBox').toBool() self.field(u'mainItalicsCheckBox').toBool()
# footer page # footer page
self.theme.font_footer_name = \ self.theme.font_footer_name = \
unicode(self.footerFontComboBox.currentFont().family()) unicode(self.footerFontComboBox.currentFont().family())
@ -586,8 +567,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtGui.QMessageBox.critical(self, QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeForm', 'Theme Name Missing'), translate('OpenLP.ThemeForm', 'Theme Name Missing'),
translate('OpenLP.ThemeForm', translate('OpenLP.ThemeForm',
'There is no name for this theme. ' 'There is no name for this theme. Please enter one.'),
'Please enter one.'),
(QtGui.QMessageBox.Ok), (QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)
return return
@ -595,8 +575,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtGui.QMessageBox.critical(self, QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeForm', 'Theme Name Invalid'), translate('OpenLP.ThemeForm', 'Theme Name Invalid'),
translate('OpenLP.ThemeForm', translate('OpenLP.ThemeForm',
'Invalid theme name. ' 'Invalid theme name. Please enter one.'),
'Please enter one.'),
(QtGui.QMessageBox.Ok), (QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)
return return
@ -620,4 +599,4 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtGui.QColor(field), self) QtGui.QColor(field), self)
if new_color.isValid(): if new_color.isValid():
field = new_color.name() field = new_color.name()
return field return field

View File

@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.ui import FileRenameForm, ThemeForm from openlp.core.ui import FileRenameForm, ThemeForm
from openlp.core.theme import Theme from openlp.core.theme import Theme
from openlp.core.lib import OpenLPToolbar, ThemeXML, get_text_file_string, \ from openlp.core.lib import OpenLPToolbar, ThemeXML, get_text_file_string, \
build_icon, Receiver, SettingsManager, translate, check_item_selected, \ build_icon, Receiver, SettingsManager, translate, check_item_selected, \
BackgroundType, BackgroundGradientType BackgroundType, BackgroundGradientType
from openlp.core.utils import AppLocation, get_filesystem_encoding from openlp.core.utils import AppLocation, get_filesystem_encoding
@ -223,14 +223,17 @@ class ThemeManager(QtGui.QWidget):
""" """
Renames an existing theme to a new name Renames an existing theme to a new name
""" """
action = unicode(translate('OpenLP.ThemeManager', 'Rename')) if self._validate_theme_action(unicode(translate('OpenLP.ThemeManager',
if self._validate_theme_action(action, False): 'You must select a theme to rename.')),
unicode(translate('OpenLP.ThemeManager', 'Rename Confirmation')),
unicode(translate('OpenLP.ThemeManager', 'Rename %s theme?')),
False):
item = self.themeListWidget.currentItem() item = self.themeListWidget.currentItem()
oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString()) oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
self.fileRenameForm.fileNameEdit.setText(oldThemeName) self.fileRenameForm.fileNameEdit.setText(oldThemeName)
self.saveThemeName = oldThemeName self.saveThemeName = oldThemeName
if self.fileRenameForm.exec_(): if self.fileRenameForm.exec_():
newThemeName = unicode(self.fileRenameForm.fileNameEdit.text()) newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
oldThemeData = self.getThemeData(oldThemeName) oldThemeData = self.getThemeData(oldThemeName)
self.deleteTheme(oldThemeName) self.deleteTheme(oldThemeName)
self.cloneThemeData(oldThemeData, newThemeName) self.cloneThemeData(oldThemeData, newThemeName)
@ -244,7 +247,7 @@ class ThemeManager(QtGui.QWidget):
self.fileRenameForm.fileNameEdit.setText(oldThemeName) self.fileRenameForm.fileNameEdit.setText(oldThemeName)
self.saveThemeName = u'' self.saveThemeName = u''
if self.fileRenameForm.exec_(True): if self.fileRenameForm.exec_(True):
newThemeName = unicode(self.fileRenameForm.fileNameEdit.text()) newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
themeData = self.getThemeData(oldThemeName) themeData = self.getThemeData(oldThemeName)
self.cloneThemeData(themeData, newThemeName) self.cloneThemeData(themeData, newThemeName)
self.loadThemes() self.loadThemes()
@ -288,8 +291,10 @@ class ThemeManager(QtGui.QWidget):
""" """
Delete a theme Delete a theme
""" """
action = unicode(translate('OpenLP.ThemeManager', 'Delete')) if self._validate_theme_action(unicode(translate('OpenLP.ThemeManager',
if self._validate_theme_action(action): 'You must select a theme to delete.')),
unicode(translate('OpenLP.ThemeManager', 'Delete Confirmation')),
unicode(translate('OpenLP.ThemeManager', 'Delete %s theme?'))):
item = self.themeListWidget.currentItem() item = self.themeListWidget.currentItem()
theme = unicode(item.text()) theme = unicode(item.text())
row = self.themeListWidget.row(item) row = self.themeListWidget.row(item)
@ -331,7 +336,7 @@ class ThemeManager(QtGui.QWidget):
theme = unicode(item.data(QtCore.Qt.UserRole).toString()) theme = unicode(item.data(QtCore.Qt.UserRole).toString())
path = QtGui.QFileDialog.getExistingDirectory(self, path = QtGui.QFileDialog.getExistingDirectory(self,
unicode(translate('OpenLP.ThemeManager', unicode(translate('OpenLP.ThemeManager',
'Save Theme - (%s)')) % theme, 'Save Theme - (%s)')) % theme,
SettingsManager.get_last_dir(self.settingsSection, 1)) SettingsManager.get_last_dir(self.settingsSection, 1))
path = unicode(path) path = unicode(path)
if path: if path:
@ -750,7 +755,8 @@ class ThemeManager(QtGui.QWidget):
theme.extend_image_filename(path) theme.extend_image_filename(path)
return theme return theme
def _validate_theme_action(self, action, testPlugin=True): def _validate_theme_action(self, select_text, confirm_title, confirm_text,
testPlugin=True):
""" """
Check to see if theme has been selected and the destructive action Check to see if theme has been selected and the destructive action
is allowed. is allowed.
@ -758,19 +764,14 @@ class ThemeManager(QtGui.QWidget):
self.global_theme = unicode(QtCore.QSettings().value( self.global_theme = unicode(QtCore.QSettings().value(
self.settingsSection + u'/global theme', self.settingsSection + u'/global theme',
QtCore.QVariant(u'')).toString()) QtCore.QVariant(u'')).toString())
if check_item_selected(self.themeListWidget, if check_item_selected(self.themeListWidget, select_text):
unicode(translate('OpenLP.ThemeManager',
'You must select a theme to %s.')) % action):
item = self.themeListWidget.currentItem() item = self.themeListWidget.currentItem()
theme = unicode(item.text()) theme = unicode(item.text())
# confirm deletion # confirm deletion
answer = QtGui.QMessageBox.question(self, answer = QtGui.QMessageBox.question(self, confirm_title,
unicode(translate('OpenLP.ThemeManager', '%s Confirmation')) confirm_text % theme, QtGui.QMessageBox.StandardButtons(
% action, QtGui.QMessageBox.Yes | QtGui.QMessageBox.No),
unicode(translate('OpenLP.ThemeManager', '%s %s theme?')) QtGui.QMessageBox.No)
% (action, theme),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.No: if answer == QtGui.QMessageBox.No:
return False return False
# should be the same unless default # should be the same unless default
@ -779,6 +780,7 @@ class ThemeManager(QtGui.QWidget):
translate('OpenLP.ThemeManager', 'Error'), translate('OpenLP.ThemeManager', 'Error'),
translate('OpenLP.ThemeManager', translate('OpenLP.ThemeManager',
'You are unable to delete the default theme.')) 'You are unable to delete the default theme.'))
return False
else: else:
if testPlugin: if testPlugin:
for plugin in self.parent.pluginManager.plugins: for plugin in self.parent.pluginManager.plugins:
@ -795,4 +797,4 @@ class ThemeManager(QtGui.QWidget):
unicode(translate('OpenLP.ThemeManager', unicode(translate('OpenLP.ThemeManager',
'Theme %s is used by the service manager.')) % theme) 'Theme %s is used by the service manager.')) % theme)
return False return False
return True return True

View File

@ -31,592 +31,393 @@ from openlp.core.lib import translate, build_icon
class Ui_ThemeWizard(object): class Ui_ThemeWizard(object):
def setupUi(self, ThemeWizard): def setupUi(self, ThemeWizard):
ThemeWizard.setObjectName(u'OpenLP.ThemeWizard') ThemeWizard.setObjectName(u'OpenLP.ThemeWizard')
ThemeWizard.resize(550, 386)
ThemeWizard.setModal(True) ThemeWizard.setModal(True)
ThemeWizard.setWizardStyle(QtGui.QWizard.ModernStyle) ThemeWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
ThemeWizard.setOptions( ThemeWizard.setOptions(
QtGui.QWizard.IndependentPages | QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage) QtGui.QWizard.NoBackButtonOnStartPage)
# Welcome Page
self.welcomePage = QtGui.QWizardPage() self.welcomePage = QtGui.QWizardPage()
self.welcomePage.setTitle(u'')
self.welcomePage.setSubTitle(u'')
self.welcomePage.setObjectName(u'welcomePage')
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap, self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_createtheme.bmp')) QtGui.QPixmap(u':/wizards/wizard_createtheme.bmp'))
self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage) self.welcomePage.setObjectName(u'WelcomePage')
self.welcomeLayout.setSpacing(8) self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
self.welcomeLayout.setMargin(0) self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.welcomeLayout.setObjectName(u'welcomeLayout')
self.welcomePageLayout = QtGui.QVBoxLayout()
self.welcomePageLayout.setSpacing(8)
self.welcomePageLayout.setObjectName(u'welcomePageLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage) self.titleLabel = QtGui.QLabel(self.welcomePage)
self.titleLabel.setObjectName(u'titleLabel') self.titleLabel.setObjectName(u'TitleLabel')
self.welcomePageLayout.addWidget(self.titleLabel) self.welcomeLayout.addWidget(self.titleLabel)
self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40, self.welcomeLayout.addSpacing(40)
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.welcomePageLayout.addItem(self.welcomeTopSpacer)
self.informationLabel = QtGui.QLabel(self.welcomePage) self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True) self.informationLabel.setWordWrap(True)
self.informationLabel.setMargin(10) self.informationLabel.setObjectName(u'InformationLabel')
self.informationLabel.setObjectName(u'informationLabel') self.welcomeLayout.addWidget(self.informationLabel)
self.welcomePageLayout.addWidget(self.informationLabel) self.welcomeLayout.addStretch()
self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40,
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.welcomePageLayout.addItem(self.welcomeBottomSpacer)
self.welcomeLayout.addLayout(self.welcomePageLayout)
ThemeWizard.addPage(self.welcomePage) ThemeWizard.addPage(self.welcomePage)
# Background Page
self.backgroundPage = QtGui.QWizardPage() self.backgroundPage = QtGui.QWizardPage()
self.backgroundPage.setObjectName(u'backgroundPage') self.backgroundPage.setObjectName(u'BackgroundPage')
self.backgroundLayout = QtGui.QVBoxLayout(self.backgroundPage) self.backgroundLayout = QtGui.QVBoxLayout(self.backgroundPage)
self.backgroundLayout.setSpacing(8) self.backgroundLayout.setObjectName(u'BackgroundLayout')
self.backgroundLayout.setMargin(20) self.backgroundTypeLayout = QtGui.QFormLayout()
self.backgroundLayout.setObjectName(u'backgroundLayout') self.backgroundTypeLayout.setObjectName(u'BackgroundTypeLayout')
self.backgroundTypeLayout = QtGui.QHBoxLayout() self.backgroundLabel = QtGui.QLabel(self.backgroundPage)
self.backgroundTypeLayout.setSpacing(8) self.backgroundLabel.setObjectName(u'BackgroundLabel')
self.backgroundTypeLayout.setObjectName(u'backgroundTypeLayout') self.backgroundComboBox = QtGui.QComboBox(self.backgroundPage)
self.backgroundTypeLabel = QtGui.QLabel(self.backgroundPage) self.backgroundComboBox.addItems([u'', u'', u''])
self.backgroundTypeLabel.setObjectName(u'backgroundTypeLabel') self.backgroundComboBox.setObjectName(u'BackgroundComboBox')
self.backgroundTypeLayout.addWidget(self.backgroundTypeLabel) self.backgroundTypeLayout.addRow(self.backgroundLabel,
self.backgroundTypeComboBox = QtGui.QComboBox(self.backgroundPage) self.backgroundComboBox)
self.backgroundTypeComboBox.setObjectName(u'backgroundTypeComboBox') self.backgroundTypeSpacer = QtGui.QSpacerItem(10, 0,
self.backgroundTypeComboBox.addItem(u'') QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
self.backgroundTypeComboBox.addItem(u'') self.backgroundTypeLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.backgroundTypeComboBox.addItem(u'') self.backgroundTypeSpacer)
self.backgroundTypeLayout.addWidget(self.backgroundTypeComboBox)
self.backgroundTypeSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.backgroundTypeLayout.addItem(self.backgroundTypeSpacer)
self.backgroundLayout.addLayout(self.backgroundTypeLayout) self.backgroundLayout.addLayout(self.backgroundTypeLayout)
self.backgroundStackedWidget = QtGui.QStackedWidget( self.backgroundStack = QtGui.QStackedLayout()
self.backgroundPage) self.backgroundStack.setObjectName(u'BackgroundStack')
self.backgroundStackedWidget.setObjectName(u'backgroundStackedWidget') self.colorWidget = QtGui.QWidget(self.backgroundPage)
self.colorPage = QtGui.QWidget() self.colorWidget.setObjectName(u'ColorWidget')
self.colorPage.setObjectName(u'colorPage') self.colorLayout = QtGui.QFormLayout(self.colorWidget)
self.colorLayout = QtGui.QFormLayout(self.colorPage)
self.colorLayout.setMargin(0) self.colorLayout.setMargin(0)
self.colorLayout.setSpacing(8) self.colorLayout.setObjectName(u'ColorLayout')
self.colorLayout.setObjectName(u'colorLayout') self.colorLabel = QtGui.QLabel(self.colorWidget)
self.colorLabel = QtGui.QLabel(self.colorPage) self.colorLabel.setObjectName(u'ColorLabel')
self.colorLabel.setMinimumSize(QtCore.QSize(103, 0)) self.colorButton = QtGui.QPushButton(self.colorWidget)
self.colorLabel.setAlignment(QtCore.Qt.AlignRight | self.colorButton.setObjectName(u'ColorButton')
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.colorLayout.addRow(self.colorLabel, self.colorButton)
self.colorLabel.setObjectName(u'colorLabel') self.colorSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.colorLayout.setWidget(0, QtGui.QSizePolicy.Minimum)
QtGui.QFormLayout.LabelRole, self.colorLabel) self.colorLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.colorButton = QtGui.QPushButton(self.colorPage) self.colorSpacer)
self.colorButton.setText(u'') self.backgroundStack.addWidget(self.colorWidget)
self.colorButton.setObjectName(u'colorButton') self.gradientWidget = QtGui.QWidget(self.backgroundPage)
self.colorLayout.setWidget(0, self.gradientWidget.setObjectName(u'GradientWidget')
QtGui.QFormLayout.FieldRole, self.colorButton) self.gradientLayout = QtGui.QFormLayout(self.gradientWidget)
self.backgroundStackedWidget.addWidget(self.colorPage)
self.gradientPage = QtGui.QWidget()
self.gradientPage.setObjectName(u'gradientPage')
self.gradientLayout = QtGui.QFormLayout(self.gradientPage)
self.gradientLayout.setMargin(0) self.gradientLayout.setMargin(0)
self.gradientLayout.setSpacing(8) self.gradientLayout.setObjectName(u'GradientLayout')
self.gradientLayout.setObjectName(u'gradientLayout') self.gradientStartLabel = QtGui.QLabel(self.gradientWidget)
self.gradientStartLabel = QtGui.QLabel(self.gradientPage) self.gradientStartLabel.setObjectName(u'GradientStartLabel')
self.gradientStartLabel.setMinimumSize(QtCore.QSize(103, 0)) self.gradientStartButton = QtGui.QPushButton(self.gradientWidget)
self.gradientStartLabel.setAlignment(QtCore.Qt.AlignRight | self.gradientStartButton.setObjectName(u'GradientStartButton')
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.gradientLayout.addRow(self.gradientStartLabel,
self.gradientStartLabel.setObjectName(u'gradientStartLabel') self.gradientStartButton)
self.gradientLayout.setWidget(0, self.gradientEndLabel = QtGui.QLabel(self.gradientWidget)
QtGui.QFormLayout.LabelRole, self.gradientStartLabel) self.gradientEndLabel.setObjectName(u'GradientEndLabel')
self.gradientStartButton = QtGui.QPushButton(self.gradientPage) self.gradientEndButton = QtGui.QPushButton(self.gradientWidget)
self.gradientStartButton.setText(u'') self.gradientEndButton.setObjectName(u'GradientEndButton')
self.gradientStartButton.setObjectName(u'gradientStartButton') self.gradientLayout.addRow(self.gradientEndLabel,
self.gradientLayout.setWidget(0, self.gradientEndButton)
QtGui.QFormLayout.FieldRole, self.gradientStartButton) self.gradientTypeLabel = QtGui.QLabel(self.gradientWidget)
self.gradientEndLabel = QtGui.QLabel(self.gradientPage) self.gradientTypeLabel.setObjectName(u'GradientTypeLabel')
self.gradientEndLabel.setMinimumSize(QtCore.QSize(103, 0)) self.gradientComboBox = QtGui.QComboBox(self.gradientWidget)
self.gradientEndLabel.setAlignment(QtCore.Qt.AlignRight | self.gradientComboBox.setObjectName(u'GradientComboBox')
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.gradientComboBox.addItems([u'', u'', u'', u'', u''])
self.gradientEndLabel.setObjectName(u'gradientEndLabel') self.gradientLayout.addRow(self.gradientTypeLabel,
self.gradientLayout.setWidget(1, self.gradientComboBox)
QtGui.QFormLayout.LabelRole, self.gradientEndLabel) self.gradientSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.gradientEndButton = QtGui.QPushButton(self.gradientPage) QtGui.QSizePolicy.Minimum)
self.gradientEndButton.setText(u'') self.gradientLayout.setItem(3, QtGui.QFormLayout.LabelRole,
self.gradientEndButton.setObjectName(u'gradientEndButton') self.gradientSpacer)
self.gradientLayout.setWidget(1, self.backgroundStack.addWidget(self.gradientWidget)
QtGui.QFormLayout.FieldRole, self.gradientEndButton) self.imageWidget = QtGui.QWidget(self.backgroundPage)
self.gradientTypeLabel = QtGui.QLabel(self.gradientPage) self.imageWidget.setObjectName(u'ImageWidget')
self.gradientTypeLabel.setMinimumSize(QtCore.QSize(103, 0)) self.imageLayout = QtGui.QFormLayout(self.imageWidget)
self.gradientTypeLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.gradientTypeLabel.setObjectName(u'gradientTypeLabel')
self.gradientLayout.setWidget(2,
QtGui.QFormLayout.LabelRole, self.gradientTypeLabel)
self.gradientComboBox = QtGui.QComboBox(self.gradientPage)
self.gradientComboBox.setObjectName(u'gradientComboBox')
self.gradientComboBox.addItem(u'')
self.gradientComboBox.addItem(u'')
self.gradientComboBox.addItem(u'')
self.gradientComboBox.addItem(u'')
self.gradientComboBox.addItem(u'')
self.gradientLayout.setWidget(2,
QtGui.QFormLayout.FieldRole, self.gradientComboBox)
self.backgroundStackedWidget.addWidget(self.gradientPage)
self.imagePage = QtGui.QWidget()
self.imagePage.setObjectName(u'imagePage')
self.imageLayout = QtGui.QFormLayout(self.imagePage)
self.imageLayout.setMargin(0) self.imageLayout.setMargin(0)
self.imageLayout.setSpacing(8) self.imageLayout.setObjectName(u'ImageLayout')
self.imageLayout.setObjectName(u'imageLayout') self.imageLabel = QtGui.QLabel(self.imageWidget)
self.imageLabel = QtGui.QLabel(self.imagePage) self.imageLabel.setObjectName(u'ImageLabel')
self.imageLabel.setMinimumSize(QtCore.QSize(103, 0))
self.imageLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.imageLabel.setObjectName(u'imageLabel')
self.imageLayout.setWidget(0,
QtGui.QFormLayout.LabelRole, self.imageLabel)
self.imageFileLayout = QtGui.QHBoxLayout() self.imageFileLayout = QtGui.QHBoxLayout()
self.imageFileLayout.setSpacing(8) self.imageFileLayout.setObjectName(u'ImageFileLayout')
self.imageFileLayout.setObjectName(u'imageFileLayout') self.imageFileEdit = QtGui.QLineEdit(self.imageWidget)
self.imageLineEdit = QtGui.QLineEdit(self.imagePage) self.imageFileEdit.setObjectName(u'ImageFileEdit')
self.imageLineEdit.setObjectName(u'imageLineEdit') self.imageFileLayout.addWidget(self.imageFileEdit)
self.imageFileLayout.addWidget(self.imageLineEdit) self.imageBrowseButton = QtGui.QToolButton(self.imageWidget)
self.imageBrowseButton = QtGui.QToolButton(self.imagePage) self.imageBrowseButton.setObjectName(u'ImageBrowseButton')
self.imageBrowseButton.setText(u'')
self.imageBrowseButton.setIcon( self.imageBrowseButton.setIcon(
build_icon(u':/general/general_open.png')) build_icon(u':/general/general_open.png'))
self.imageBrowseButton.setObjectName(u'imageBrowseButton')
self.imageFileLayout.addWidget(self.imageBrowseButton) self.imageFileLayout.addWidget(self.imageBrowseButton)
self.imageLayout.setLayout(0, self.imageLayout.addRow(self.imageLabel, self.imageFileLayout)
QtGui.QFormLayout.FieldRole, self.imageFileLayout) self.imageSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.backgroundStackedWidget.addWidget(self.imagePage) QtGui.QSizePolicy.Minimum)
self.backgroundLayout.addWidget(self.backgroundStackedWidget) self.imageLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.imageSpacer)
self.backgroundStack.addWidget(self.imageWidget)
self.backgroundLayout.addLayout(self.backgroundStack)
ThemeWizard.addPage(self.backgroundPage) ThemeWizard.addPage(self.backgroundPage)
# Main Area Page
self.mainAreaPage = QtGui.QWizardPage() self.mainAreaPage = QtGui.QWizardPage()
self.mainAreaPage.setObjectName(u'mainAreaPage') self.mainAreaPage.setObjectName(u'MainAreaPage')
self.mainAreaLayout = QtGui.QFormLayout(self.mainAreaPage) self.mainAreaLayout = QtGui.QFormLayout(self.mainAreaPage)
self.mainAreaLayout.setFormAlignment(QtCore.Qt.AlignLeading | self.mainAreaLayout.setObjectName(u'MainAreaLayout')
QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.mainAreaLayout.setMargin(20)
self.mainAreaLayout.setSpacing(8)
self.mainAreaLayout.setObjectName(u'mainAreaLayout')
self.mainFontLabel = QtGui.QLabel(self.mainAreaPage) self.mainFontLabel = QtGui.QLabel(self.mainAreaPage)
self.mainFontLabel.setMinimumSize(QtCore.QSize(103, 0)) self.mainFontLabel.setObjectName(u'MainFontLabel')
self.mainFontLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.mainFontLabel.setObjectName(u'mainFontLabel')
self.mainAreaLayout.setWidget(0,
QtGui.QFormLayout.LabelRole, self.mainFontLabel)
self.mainFontComboBox = QtGui.QFontComboBox(self.mainAreaPage) self.mainFontComboBox = QtGui.QFontComboBox(self.mainAreaPage)
self.mainFontComboBox.setObjectName(u'mainFontComboBox') self.mainFontComboBox.setObjectName(u'MainFontComboBox')
self.mainAreaLayout.setWidget(0, self.mainAreaLayout.addRow(self.mainFontLabel, self.mainFontComboBox)
QtGui.QFormLayout.FieldRole, self.mainFontComboBox)
self.mainColorLabel = QtGui.QLabel(self.mainAreaPage) self.mainColorLabel = QtGui.QLabel(self.mainAreaPage)
self.mainColorLabel.setObjectName(u'mainColorLabel') self.mainColorLabel.setObjectName(u'MainColorLabel')
self.mainAreaLayout.setWidget(1, self.mainPropertiesLayout = QtGui.QHBoxLayout()
QtGui.QFormLayout.LabelRole, self.mainColorLabel) self.mainPropertiesLayout.setObjectName(u'MainPropertiesLayout')
self.fontPropertiesLayout = QtGui.QHBoxLayout() self.mainColorButton = QtGui.QPushButton(self.mainAreaPage)
self.fontPropertiesLayout.setSpacing(24) self.mainColorButton.setObjectName(u'MainColorButton')
self.fontPropertiesLayout.setObjectName(u'fontPropertiesLayout') self.mainPropertiesLayout.addWidget(self.mainColorButton)
self.mainColorPushButton = QtGui.QPushButton(self.mainAreaPage) self.mainPropertiesLayout.addSpacing(20)
self.mainColorPushButton.setText(u'') self.mainBoldCheckBox = QtGui.QCheckBox(self.mainAreaPage)
self.mainColorPushButton.setObjectName(u'mainColorPushButton') self.mainBoldCheckBox.setObjectName(u'MainBoldCheckBox')
self.fontPropertiesLayout.addWidget(self.mainColorPushButton) self.mainPropertiesLayout.addWidget(self.mainBoldCheckBox)
self.boldCheckBox = QtGui.QCheckBox(self.mainAreaPage) self.mainPropertiesLayout.addSpacing(20)
self.boldCheckBox.setObjectName(u'boldCheckBox') self.mainItalicsCheckBox = QtGui.QCheckBox(self.mainAreaPage)
self.fontPropertiesLayout.addWidget(self.boldCheckBox) self.mainItalicsCheckBox.setObjectName(u'MainItalicsCheckBox')
self.italicsCheckBox = QtGui.QCheckBox(self.mainAreaPage) self.mainPropertiesLayout.addWidget(self.mainItalicsCheckBox)
self.italicsCheckBox.setObjectName(u'italicsCheckBox') self.mainAreaLayout.addRow(self.mainColorLabel,
self.fontPropertiesLayout.addWidget(self.italicsCheckBox) self.mainPropertiesLayout)
self.mainAreaLayout.setLayout(1,
QtGui.QFormLayout.FieldRole, self.fontPropertiesLayout)
self.mainSizeLabel = QtGui.QLabel(self.mainAreaPage) self.mainSizeLabel = QtGui.QLabel(self.mainAreaPage)
self.mainSizeLabel.setObjectName(u'mainSizeLabel') self.mainSizeLabel.setObjectName(u'MainSizeLabel')
self.mainAreaLayout.setWidget(2,
QtGui.QFormLayout.LabelRole, self.mainSizeLabel)
self.mainSizeLayout = QtGui.QHBoxLayout() self.mainSizeLayout = QtGui.QHBoxLayout()
self.mainSizeLayout.setSpacing(8) self.mainSizeLayout.setObjectName(u'MainSizeLayout')
self.mainSizeLayout.setMargin(0)
self.mainSizeLayout.setObjectName(u'mainSizeLayout')
self.mainSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage) self.mainSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.mainSizeSpinBox.sizePolicy().hasHeightForWidth())
self.mainSizeSpinBox.setSizePolicy(sizePolicy)
self.mainSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
self.mainSizeSpinBox.setMaximum(999) self.mainSizeSpinBox.setMaximum(999)
self.mainSizeSpinBox.setProperty(u'value', 16) self.mainSizeSpinBox.setValue(16)
self.mainSizeSpinBox.setObjectName(u'mainSizeSpinBox') self.mainSizeSpinBox.setObjectName(u'MainSizeSpinBox')
self.mainSizeLayout.addWidget(self.mainSizeSpinBox) self.mainSizeLayout.addWidget(self.mainSizeSpinBox)
self.mainLineCountLabel = QtGui.QLabel(self.mainAreaPage) self.mainLineCountLabel = QtGui.QLabel(self.mainAreaPage)
self.mainLineCountLabel.setObjectName(u'mainLineCountLabel') self.mainLineCountLabel.setObjectName(u'MainLineCountLabel')
self.mainSizeLayout.addWidget(self.mainLineCountLabel) self.mainSizeLayout.addWidget(self.mainLineCountLabel)
self.mainAreaLayout.setLayout(2, self.mainAreaLayout.addRow(self.mainSizeLabel, self.mainSizeLayout)
QtGui.QFormLayout.FieldRole, self.mainSizeLayout)
self.lineSpacingLabel = QtGui.QLabel(self.mainAreaPage) self.lineSpacingLabel = QtGui.QLabel(self.mainAreaPage)
self.lineSpacingLabel.setObjectName(u'lineSpacingLabel') self.lineSpacingLabel.setObjectName(u'LineSpacingLabel')
self.mainAreaLayout.setWidget(3,
QtGui.QFormLayout.LabelRole, self.lineSpacingLabel)
self.lineSpacingSpinBox = QtGui.QSpinBox(self.mainAreaPage) self.lineSpacingSpinBox = QtGui.QSpinBox(self.mainAreaPage)
self.lineSpacingSpinBox.setMinimum(-50) self.lineSpacingSpinBox.setMinimum(-50)
self.lineSpacingSpinBox.setMaximum(50) self.lineSpacingSpinBox.setMaximum(50)
self.lineSpacingSpinBox.setObjectName(u'lineSpacingSpinBox') self.lineSpacingSpinBox.setObjectName(u'LineSpacingSpinBox')
self.mainAreaLayout.setWidget(3, self.mainAreaLayout.addRow(self.lineSpacingLabel,
QtGui.QFormLayout.FieldRole, self.lineSpacingSpinBox) self.lineSpacingSpinBox)
self.outlineCheckBox = QtGui.QCheckBox(self.mainAreaPage) self.outlineCheckBox = QtGui.QCheckBox(self.mainAreaPage)
self.outlineCheckBox.setObjectName(u'outlineCheckBox') self.outlineCheckBox.setObjectName(u'OutlineCheckBox')
self.mainAreaLayout.setWidget(4,
QtGui.QFormLayout.LabelRole, self.outlineCheckBox)
self.outlineLayout = QtGui.QHBoxLayout() self.outlineLayout = QtGui.QHBoxLayout()
self.outlineLayout.setObjectName(u'outlineLayout') self.outlineLayout.setObjectName(u'OutlineLayout')
self.outlineColorPushButton = QtGui.QPushButton(self.mainAreaPage) self.outlineColorButton = QtGui.QPushButton(self.mainAreaPage)
self.outlineColorPushButton.setEnabled(True) self.outlineColorButton.setEnabled(False)
self.outlineColorPushButton.setText(u'') self.outlineColorButton.setObjectName(u'OutlineColorButton')
self.outlineColorPushButton.setObjectName(u'outlineColorPushButton') self.outlineLayout.addWidget(self.outlineColorButton)
self.outlineLayout.addWidget(self.outlineColorPushButton) self.outlineLayout.addSpacing(20)
self.outlineSizeLabel = QtGui.QLabel(self.mainAreaPage) self.outlineSizeLabel = QtGui.QLabel(self.mainAreaPage)
self.outlineSizeLabel.setObjectName(u'outlineSizeLabel') self.outlineSizeLabel.setObjectName(u'OutlineSizeLabel')
self.outlineLayout.addWidget(self.outlineSizeLabel) self.outlineLayout.addWidget(self.outlineSizeLabel)
self.outlineSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage) self.outlineSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
self.outlineSizeSpinBox.setObjectName(u'outlineSizeSpinBox') self.outlineSizeSpinBox.setEnabled(False)
self.outlineSizeSpinBox.setObjectName(u'OutlineSizeSpinBox')
self.outlineLayout.addWidget(self.outlineSizeSpinBox) self.outlineLayout.addWidget(self.outlineSizeSpinBox)
self.mainAreaLayout.setLayout(4, self.mainAreaLayout.addRow(self.outlineCheckBox, self.outlineLayout)
QtGui.QFormLayout.FieldRole, self.outlineLayout)
self.shadowCheckBox = QtGui.QCheckBox(self.mainAreaPage) self.shadowCheckBox = QtGui.QCheckBox(self.mainAreaPage)
self.shadowCheckBox.setObjectName(u'shadowCheckBox') self.shadowCheckBox.setObjectName(u'ShadowCheckBox')
self.mainAreaLayout.setWidget(5,
QtGui.QFormLayout.LabelRole, self.shadowCheckBox)
self.shadowLayout = QtGui.QHBoxLayout() self.shadowLayout = QtGui.QHBoxLayout()
self.shadowLayout.setObjectName(u'shadowLayout') self.shadowLayout.setObjectName(u'ShadowLayout')
self.shadowColorPushButton = QtGui.QPushButton(self.mainAreaPage) self.shadowColorButton = QtGui.QPushButton(self.mainAreaPage)
self.shadowColorPushButton.setEnabled(True) self.shadowColorButton.setEnabled(False)
self.shadowColorPushButton.setText(u'') self.shadowColorButton.setObjectName(u'shadowColorButton')
self.shadowColorPushButton.setObjectName(u'shadowColorPushButton') self.shadowLayout.addWidget(self.shadowColorButton)
self.shadowLayout.addWidget(self.shadowColorPushButton) self.shadowLayout.addSpacing(20)
self.shadowSizeLabel = QtGui.QLabel(self.mainAreaPage) self.shadowSizeLabel = QtGui.QLabel(self.mainAreaPage)
self.shadowSizeLabel.setObjectName(u'shadowSizeLabel') self.shadowSizeLabel.setObjectName(u'ShadowSizeLabel')
self.shadowLayout.addWidget(self.shadowSizeLabel) self.shadowLayout.addWidget(self.shadowSizeLabel)
self.shadowSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage) self.shadowSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
self.shadowSizeSpinBox.setObjectName(u'shadowSizeSpinBox') self.shadowSizeSpinBox.setEnabled(False)
self.shadowSizeSpinBox.setObjectName(u'ShadowSizeSpinBox')
self.shadowLayout.addWidget(self.shadowSizeSpinBox) self.shadowLayout.addWidget(self.shadowSizeSpinBox)
self.mainAreaLayout.setLayout(5, self.mainAreaLayout.addRow(self.shadowCheckBox, self.shadowLayout)
QtGui.QFormLayout.FieldRole, self.shadowLayout)
ThemeWizard.addPage(self.mainAreaPage) ThemeWizard.addPage(self.mainAreaPage)
# Footer Area Page
self.footerAreaPage = QtGui.QWizardPage() self.footerAreaPage = QtGui.QWizardPage()
self.footerAreaPage.setObjectName(u'footerAreaPage') self.footerAreaPage.setObjectName(u'FooterAreaPage')
self.footerLayout = QtGui.QFormLayout(self.footerAreaPage) self.footerAreaLayout = QtGui.QFormLayout(self.footerAreaPage)
self.footerLayout.setFieldGrowthPolicy( self.footerAreaLayout.setObjectName(u'FooterAreaLayout')
QtGui.QFormLayout.ExpandingFieldsGrow)
self.footerLayout.setMargin(20)
self.footerLayout.setSpacing(8)
self.footerLayout.setObjectName(u'footerLayout')
self.footerFontLabel = QtGui.QLabel(self.footerAreaPage) self.footerFontLabel = QtGui.QLabel(self.footerAreaPage)
self.footerFontLabel.setMinimumSize(QtCore.QSize(103, 0)) self.footerFontLabel.setObjectName(u'FooterFontLabel')
self.footerFontLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.footerFontLabel.setObjectName(u'footerFontLabel')
self.footerLayout.setWidget(0,
QtGui.QFormLayout.LabelRole, self.footerFontLabel)
self.footerFontComboBox = QtGui.QFontComboBox(self.footerAreaPage) self.footerFontComboBox = QtGui.QFontComboBox(self.footerAreaPage)
self.footerFontComboBox.setObjectName(u'footerFontComboBox') self.footerFontComboBox.setObjectName(u'footerFontComboBox')
self.footerLayout.setWidget(0, self.footerAreaLayout.addRow(self.footerFontLabel,
QtGui.QFormLayout.FieldRole, self.footerFontComboBox) self.footerFontComboBox)
self.footerColorLabel = QtGui.QLabel(self.footerAreaPage) self.footerColorLabel = QtGui.QLabel(self.footerAreaPage)
self.footerColorLabel.setObjectName(u'footerColorLabel') self.footerColorLabel.setObjectName(u'FooterColorLabel')
self.footerLayout.setWidget(1, self.footerColorButton = QtGui.QPushButton(self.footerAreaPage)
QtGui.QFormLayout.LabelRole, self.footerColorLabel) self.footerColorButton.setObjectName(u'footerColorButton')
self.footerColorPushButton = QtGui.QPushButton(self.footerAreaPage) self.footerAreaLayout.addRow(self.footerColorLabel,
self.footerColorPushButton.setText(u'') self.footerColorButton)
self.footerColorPushButton.setObjectName(u'footerColorPushButton')
self.footerLayout.setWidget(1,
QtGui.QFormLayout.FieldRole, self.footerColorPushButton)
self.footerSizeLabel = QtGui.QLabel(self.footerAreaPage) self.footerSizeLabel = QtGui.QLabel(self.footerAreaPage)
self.footerSizeLabel.setObjectName(u'footerSizeLabel') self.footerSizeLabel.setObjectName(u'FooterSizeLabel')
self.footerLayout.setWidget(2,
QtGui.QFormLayout.LabelRole, self.footerSizeLabel)
self.footerSizeSpinBox = QtGui.QSpinBox(self.footerAreaPage) self.footerSizeSpinBox = QtGui.QSpinBox(self.footerAreaPage)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.footerSizeSpinBox.sizePolicy().hasHeightForWidth())
self.footerSizeSpinBox.setSizePolicy(sizePolicy)
self.footerSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
self.footerSizeSpinBox.setMaximum(999) self.footerSizeSpinBox.setMaximum(999)
self.footerSizeSpinBox.setProperty(u'value', 10) self.footerSizeSpinBox.setValue(10)
self.footerSizeSpinBox.setObjectName(u'footerSizeSpinBox') self.footerSizeSpinBox.setObjectName(u'FooterSizeSpinBox')
self.footerLayout.setWidget(2, self.footerAreaLayout.addRow(self.footerSizeLabel, self.footerSizeSpinBox)
QtGui.QFormLayout.FieldRole, self.footerSizeSpinBox)
ThemeWizard.addPage(self.footerAreaPage) ThemeWizard.addPage(self.footerAreaPage)
# Alignment Page
self.alignmentPage = QtGui.QWizardPage() self.alignmentPage = QtGui.QWizardPage()
self.alignmentPage.setObjectName(u'alignmentPage') self.alignmentPage.setObjectName(u'AlignmentPage')
self.alignmentLayout = QtGui.QFormLayout(self.alignmentPage) self.alignmentLayout = QtGui.QFormLayout(self.alignmentPage)
self.alignmentLayout.setMargin(20) self.alignmentLayout.setObjectName(u'AlignmentLayout')
self.alignmentLayout.setSpacing(8)
self.alignmentLayout.setObjectName(u'alignmentLayout')
self.horizontalLabel = QtGui.QLabel(self.alignmentPage) self.horizontalLabel = QtGui.QLabel(self.alignmentPage)
self.horizontalLabel.setMinimumSize(QtCore.QSize(103, 0)) self.horizontalLabel.setObjectName(u'HorizontalLabel')
self.horizontalLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.horizontalLabel.setObjectName(u'horizontalLabel')
self.alignmentLayout.setWidget(0,
QtGui.QFormLayout.LabelRole, self.horizontalLabel)
self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage) self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage)
self.horizontalComboBox.setEditable(False) self.horizontalComboBox.addItems([u'', u'', u''])
self.horizontalComboBox.setObjectName(u'horizontalComboBox') self.horizontalComboBox.setObjectName(u'HorizontalComboBox')
self.horizontalComboBox.addItem(u'') self.alignmentLayout.addRow(self.horizontalLabel,
self.horizontalComboBox.addItem(u'') self.horizontalComboBox)
self.horizontalComboBox.addItem(u'')
self.alignmentLayout.setWidget(0,
QtGui.QFormLayout.FieldRole, self.horizontalComboBox)
self.verticalLabel = QtGui.QLabel(self.alignmentPage) self.verticalLabel = QtGui.QLabel(self.alignmentPage)
self.verticalLabel.setObjectName(u'verticalLabel') self.verticalLabel.setObjectName(u'VerticalLabel')
self.alignmentLayout.setWidget(1,
QtGui.QFormLayout.LabelRole, self.verticalLabel)
self.verticalComboBox = QtGui.QComboBox(self.alignmentPage) self.verticalComboBox = QtGui.QComboBox(self.alignmentPage)
self.verticalComboBox.setObjectName(u'verticalComboBox') self.verticalComboBox.addItems([u'', u'', u''])
self.verticalComboBox.addItem(u'') self.verticalComboBox.setObjectName(u'VerticalComboBox')
self.verticalComboBox.addItem(u'') self.alignmentLayout.addRow(self.verticalLabel, self.verticalComboBox)
self.verticalComboBox.addItem(u'') self.transitionsLabel = QtGui.QLabel(self.alignmentPage)
self.alignmentLayout.setWidget(1, self.transitionsLabel.setObjectName(u'TransitionsLabel')
QtGui.QFormLayout.FieldRole, self.verticalComboBox)
self.transitionsCheckBox = QtGui.QCheckBox(self.alignmentPage) self.transitionsCheckBox = QtGui.QCheckBox(self.alignmentPage)
self.transitionsCheckBox.setObjectName(u'transitionsCheckBox') self.transitionsCheckBox.setObjectName(u'TransitionsCheckBox')
self.alignmentLayout.setWidget(2, self.alignmentLayout.addRow(self.transitionsLabel,
QtGui.QFormLayout.FieldRole, self.transitionsCheckBox) self.transitionsCheckBox)
ThemeWizard.addPage(self.alignmentPage) ThemeWizard.addPage(self.alignmentPage)
# Area Position Page
self.areaPositionPage = QtGui.QWizardPage() self.areaPositionPage = QtGui.QWizardPage()
self.areaPositionPage.setObjectName(u'areaPositionPage') self.areaPositionPage.setObjectName(u'AreaPositionPage')
self.areaPositionLayout = QtGui.QGridLayout(self.areaPositionPage) self.areaPositionLayout = QtGui.QHBoxLayout(self.areaPositionPage)
self.areaPositionLayout.setMargin(20) self.areaPositionLayout.setObjectName(u'AreaPositionLayout')
self.areaPositionLayout.setSpacing(8)
self.areaPositionLayout.setObjectName(u'areaPositionLayout')
self.mainPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage) self.mainPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
self.mainPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0)) self.mainPositionGroupBox.setObjectName(u'MainPositionGroupBox')
self.mainPositionGroupBox.setObjectName(u'mainPositionGroupBox')
self.mainPositionLayout = QtGui.QFormLayout(self.mainPositionGroupBox) self.mainPositionLayout = QtGui.QFormLayout(self.mainPositionGroupBox)
self.mainPositionLayout.setMargin(8) self.mainPositionLayout.setObjectName(u'MainPositionLayout')
self.mainPositionLayout.setSpacing(8) self.mainPositionCheckBox = QtGui.QCheckBox(self.mainPositionGroupBox)
self.mainPositionLayout.setObjectName(u'mainPositionLayout') self.mainPositionCheckBox.setObjectName(u'MainPositionCheckBox')
self.mainDefaultPositionCheckBox = QtGui.QCheckBox( self.mainPositionLayout.addRow(self.mainPositionCheckBox)
self.mainPositionGroupBox) self.mainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
self.mainDefaultPositionCheckBox.setChecked(True) self.mainXLabel.setObjectName(u'MainXLabel')
self.mainDefaultPositionCheckBox.setTristate(False)
self.mainDefaultPositionCheckBox.setObjectName(
u'mainDefaultPositionCheckBox')
self.mainPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.mainDefaultPositionCheckBox)
self.nainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
self.nainXLabel.setObjectName(u'nainXLabel')
self.mainPositionLayout.setWidget(1,
QtGui.QFormLayout.LabelRole, self.nainXLabel)
self.mainXSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox) self.mainXSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
self.mainXSpinBox.setEnabled(False)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.mainXSpinBox.sizePolicy().hasHeightForWidth())
self.mainXSpinBox.setSizePolicy(sizePolicy)
self.mainXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.mainXSpinBox.setMaximum(9999) self.mainXSpinBox.setMaximum(9999)
self.mainXSpinBox.setProperty(u'value', 0) self.mainXSpinBox.setObjectName(u'MainXSpinBox')
self.mainXSpinBox.setObjectName(u'mainXSpinBox') self.mainPositionLayout.addRow(self.mainXLabel, self.mainXSpinBox)
self.mainPositionLayout.setWidget(1,
QtGui.QFormLayout.FieldRole, self.mainXSpinBox)
self.mainYSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
self.mainYSpinBox.setEnabled(False)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.mainYSpinBox.sizePolicy().hasHeightForWidth())
self.mainYSpinBox.setSizePolicy(sizePolicy)
self.mainYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.mainYSpinBox.setMaximum(9999)
self.mainYSpinBox.setObjectName(u'mainYSpinBox')
self.mainPositionLayout.setWidget(2,
QtGui.QFormLayout.FieldRole, self.mainYSpinBox)
self.mainYLabel = QtGui.QLabel(self.mainPositionGroupBox) self.mainYLabel = QtGui.QLabel(self.mainPositionGroupBox)
self.mainYLabel.setObjectName(u'mainYLabel') self.mainYLabel.setObjectName(u'MainYLabel')
self.mainPositionLayout.setWidget(2, self.mainYSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
QtGui.QFormLayout.LabelRole, self.mainYLabel) self.mainYSpinBox.setMaximum(9999)
self.mainWidthSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox) self.mainYSpinBox.setObjectName(u'MainYSpinBox')
self.mainWidthSpinBox.setEnabled(False) self.mainPositionLayout.addRow(self.mainYLabel, self.mainYSpinBox)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.mainWidthSpinBox.sizePolicy().hasHeightForWidth())
self.mainWidthSpinBox.setSizePolicy(sizePolicy)
self.mainWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.mainWidthSpinBox.setMaximum(9999)
self.mainWidthSpinBox.setObjectName(u'mainWidthSpinBox')
self.mainPositionLayout.setWidget(3,
QtGui.QFormLayout.FieldRole, self.mainWidthSpinBox)
self.mainWidthLabel = QtGui.QLabel(self.mainPositionGroupBox) self.mainWidthLabel = QtGui.QLabel(self.mainPositionGroupBox)
self.mainWidthLabel.setObjectName(u'mainWidthLabel') self.mainWidthLabel.setObjectName(u'MainWidthLabel')
self.mainPositionLayout.setWidget(3, self.mainWidthSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
QtGui.QFormLayout.LabelRole, self.mainWidthLabel) self.mainWidthSpinBox.setMaximum(9999)
self.mainHeightSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox) self.mainWidthSpinBox.setObjectName(u'MainWidthSpinBox')
self.mainHeightSpinBox.setEnabled(False) self.mainPositionLayout.addRow(self.mainWidthLabel,
sizePolicy = QtGui.QSizePolicy( self.mainWidthSpinBox)
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.mainHeightSpinBox.sizePolicy().hasHeightForWidth())
self.mainHeightSpinBox.setSizePolicy(sizePolicy)
self.mainHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.mainHeightSpinBox.setMaximum(9999)
self.mainHeightSpinBox.setObjectName(u'mainHeightSpinBox')
self.mainPositionLayout.setWidget(4,
QtGui.QFormLayout.FieldRole, self.mainHeightSpinBox)
self.mainHeightLabel = QtGui.QLabel(self.mainPositionGroupBox) self.mainHeightLabel = QtGui.QLabel(self.mainPositionGroupBox)
self.mainHeightLabel.setObjectName(u'mainHeightLabel') self.mainHeightLabel.setObjectName(u'MainHeightLabel')
self.mainPositionLayout.setWidget(4, self.mainHeightSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
QtGui.QFormLayout.LabelRole, self.mainHeightLabel) self.mainHeightSpinBox.setMaximum(9999)
self.areaPositionLayout.addWidget( self.mainHeightSpinBox.setObjectName(u'MainHeightSpinBox')
self.mainPositionGroupBox, 1, 0, 1, 1) self.mainPositionLayout.addRow(self.mainHeightLabel,
self.mainHeightSpinBox)
self.areaPositionLayout.addWidget(self.mainPositionGroupBox)
self.footerPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage) self.footerPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
self.footerPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0)) self.footerPositionGroupBox.setObjectName(u'FooterPositionGroupBox')
self.footerPositionGroupBox.setObjectName(u'footerPositionGroupBox') self.footerPositionLayout = QtGui.QFormLayout(self.footerPositionGroupBox)
self.footerPositionLayout = QtGui.QFormLayout( self.footerPositionLayout.setObjectName(u'FooterPositionLayout')
self.footerPositionGroupBox) self.footerPositionCheckBox = QtGui.QCheckBox(self.footerPositionGroupBox)
self.footerPositionLayout.setMargin(8) self.footerPositionCheckBox.setObjectName(u'FooterPositionCheckBox')
self.footerPositionLayout.setSpacing(8) self.footerPositionLayout.addRow(self.footerPositionCheckBox)
self.footerPositionLayout.setObjectName(u'footerPositionLayout')
self.footerXLabel = QtGui.QLabel(self.footerPositionGroupBox) self.footerXLabel = QtGui.QLabel(self.footerPositionGroupBox)
self.footerXLabel.setObjectName(u'footerXLabel') self.footerXLabel.setObjectName(u'FooterXLabel')
self.footerPositionLayout.setWidget(1,
QtGui.QFormLayout.LabelRole, self.footerXLabel)
self.footerXSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox) self.footerXSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
self.footerXSpinBox.setEnabled(False)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.footerXSpinBox.sizePolicy().hasHeightForWidth())
self.footerXSpinBox.setSizePolicy(sizePolicy)
self.footerXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerXSpinBox.setMaximum(9999) self.footerXSpinBox.setMaximum(9999)
self.footerXSpinBox.setProperty(u'value', 0) self.footerXSpinBox.setObjectName(u'FooterXSpinBox')
self.footerXSpinBox.setObjectName(u'footerXSpinBox') self.footerPositionLayout.addRow(self.footerXLabel, self.footerXSpinBox)
self.footerPositionLayout.setWidget(1,
QtGui.QFormLayout.FieldRole, self.footerXSpinBox)
self.footerYLabel = QtGui.QLabel(self.footerPositionGroupBox) self.footerYLabel = QtGui.QLabel(self.footerPositionGroupBox)
self.footerYLabel.setObjectName(u'footerYLabel') self.footerYLabel.setObjectName(u'FooterYLabel')
self.footerPositionLayout.setWidget(2,
QtGui.QFormLayout.LabelRole, self.footerYLabel)
self.footerYSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox) self.footerYSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
self.footerYSpinBox.setEnabled(False)
sizePolicy = QtGui.QSizePolicy(
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.footerYSpinBox.sizePolicy().hasHeightForWidth())
self.footerYSpinBox.setSizePolicy(sizePolicy)
self.footerYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerYSpinBox.setMaximum(9999) self.footerYSpinBox.setMaximum(9999)
self.footerYSpinBox.setProperty(u'value', 0) self.footerYSpinBox.setObjectName(u'FooterYSpinBox')
self.footerYSpinBox.setObjectName(u'footerYSpinBox') self.footerPositionLayout.addRow(self.footerYLabel, self.footerYSpinBox)
self.footerPositionLayout.setWidget(2,
QtGui.QFormLayout.FieldRole, self.footerYSpinBox)
self.footerWidthLabel = QtGui.QLabel(self.footerPositionGroupBox) self.footerWidthLabel = QtGui.QLabel(self.footerPositionGroupBox)
self.footerWidthLabel.setObjectName(u'footerWidthLabel') self.footerWidthLabel.setObjectName(u'FooterWidthLabel')
self.footerPositionLayout.setWidget(3,
QtGui.QFormLayout.LabelRole, self.footerWidthLabel)
self.footerWidthSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox) self.footerWidthSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
self.footerWidthSpinBox.setEnabled(False)
self.footerWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerWidthSpinBox.setMaximum(9999) self.footerWidthSpinBox.setMaximum(9999)
self.footerWidthSpinBox.setObjectName(u'footerWidthSpinBox') self.footerWidthSpinBox.setObjectName(u'FooterWidthSpinBox')
self.footerPositionLayout.setWidget(3, self.footerPositionLayout.addRow(self.footerWidthLabel,
QtGui.QFormLayout.FieldRole, self.footerWidthSpinBox) self.footerWidthSpinBox)
self.footerHeightLabel = QtGui.QLabel(self.footerPositionGroupBox) self.footerHeightLabel = QtGui.QLabel(self.footerPositionGroupBox)
self.footerHeightLabel.setObjectName(u'footerHeightLabel') self.footerHeightLabel.setObjectName(u'FooterHeightLabel')
self.footerPositionLayout.setWidget(4,
QtGui.QFormLayout.LabelRole, self.footerHeightLabel)
self.footerHeightSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox) self.footerHeightSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
self.footerHeightSpinBox.setEnabled(False)
self.footerHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerHeightSpinBox.setMaximum(9999) self.footerHeightSpinBox.setMaximum(9999)
self.footerHeightSpinBox.setObjectName(u'footerHeightSpinBox') self.footerHeightSpinBox.setObjectName(u'FooterHeightSpinBox')
self.footerPositionLayout.setWidget(4, self.footerPositionLayout.addRow(self.footerHeightLabel,
QtGui.QFormLayout.FieldRole, self.footerHeightSpinBox) self.footerHeightSpinBox)
self.footerDefaultPositionCheckBox = QtGui.QCheckBox( self.areaPositionLayout.addWidget(self.footerPositionGroupBox)
self.footerPositionGroupBox)
self.footerDefaultPositionCheckBox.setChecked(True)
self.footerDefaultPositionCheckBox.setObjectName(
u'footerDefaultPositionCheckBox')
self.footerPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.footerDefaultPositionCheckBox)
self.areaPositionLayout.addWidget(
self.footerPositionGroupBox, 1, 1, 1, 1)
ThemeWizard.addPage(self.areaPositionPage) ThemeWizard.addPage(self.areaPositionPage)
# Preview Page
self.previewPage = QtGui.QWizardPage() self.previewPage = QtGui.QWizardPage()
self.previewPage.setObjectName(u'previewPage') self.previewPage.setObjectName(u'PreviewPage')
self.previewLayout = QtGui.QVBoxLayout(self.previewPage) self.previewLayout = QtGui.QVBoxLayout(self.previewPage)
self.previewLayout.setSpacing(8) self.previewLayout.setObjectName(u'PreviewLayout')
self.previewLayout.setMargin(20) self.themeNameLayout = QtGui.QFormLayout()
self.previewLayout.setObjectName(u'previewLayout') self.themeNameLayout.setObjectName(u'ThemeNameLayout')
self.themeNameLayout = QtGui.QHBoxLayout()
self.themeNameLayout.setSpacing(8)
self.themeNameLayout.setObjectName(u'themeNameLayout')
self.themeNameLabel = QtGui.QLabel(self.previewPage) self.themeNameLabel = QtGui.QLabel(self.previewPage)
self.themeNameLabel.setMinimumSize(QtCore.QSize(103, 0)) self.themeNameLabel.setObjectName(u'ThemeNameLabel')
self.themeNameLabel.setTextFormat(QtCore.Qt.PlainText)
self.themeNameLabel.setAlignment(QtCore.Qt.AlignRight |
QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
self.themeNameLabel.setObjectName(u'themeNameLabel')
self.themeNameLayout.addWidget(self.themeNameLabel)
self.themeNameEdit = QtGui.QLineEdit(self.previewPage) self.themeNameEdit = QtGui.QLineEdit(self.previewPage)
self.themeNameEdit.setObjectName(u'themeNameEdit') self.themeNameEdit.setObjectName(u'ThemeNameEdit')
self.themeNameLayout.addWidget(self.themeNameEdit) self.themeNameLayout.addRow(self.themeNameLabel, self.themeNameEdit)
self.previewLayout.addLayout(self.themeNameLayout) self.previewLayout.addLayout(self.themeNameLayout)
self.previewPaneLayout = QtGui.QHBoxLayout() self.previewArea = QtGui.QWidget(self.previewPage)
self.previewPaneLayout.setSpacing(0) self.previewArea.setObjectName(u'PreviewArea')
self.previewPaneLayout.setObjectName(u'previewPaneLayout') self.previewAreaLayout = QtGui.QGridLayout(self.previewArea)
self.previewLeftSpacer = QtGui.QSpacerItem(58, 20, self.previewAreaLayout.setMargin(0)
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.previewAreaLayout.setColumnStretch(0, 1)
self.previewPaneLayout.addItem(self.previewLeftSpacer) self.previewAreaLayout.setRowStretch(0, 1)
self.previewBoxLabel = QtGui.QLabel(self.previewPage) self.previewAreaLayout.setObjectName(u'PreviewAreaLayout')
sizePolicy = QtGui.QSizePolicy( self.previewBoxLabel = QtGui.QLabel(self.previewArea)
QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) self.previewBoxLabel.setFrameShape(QtGui.QFrame.Box)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.previewBoxLabel.sizePolicy().hasHeightForWidth())
self.previewBoxLabel.setSizePolicy(sizePolicy)
self.previewBoxLabel.setMinimumSize(QtCore.QSize(100, 150))
self.previewBoxLabel.setFrameShape(QtGui.QFrame.WinPanel)
self.previewBoxLabel.setFrameShadow(QtGui.QFrame.Sunken)
self.previewBoxLabel.setLineWidth(1)
self.previewBoxLabel.setText(u'')
self.previewBoxLabel.setScaledContents(True) self.previewBoxLabel.setScaledContents(True)
self.previewBoxLabel.setObjectName(u'previewBoxLabel') self.previewBoxLabel.setObjectName(u'PreviewBoxLabel')
self.previewPaneLayout.addWidget(self.previewBoxLabel) self.previewAreaLayout.addWidget(self.previewBoxLabel)
self.previewRightSpacer = QtGui.QSpacerItem(78, 20, self.previewLayout.addWidget(self.previewArea)
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.previewPaneLayout.addItem(self.previewRightSpacer)
self.previewLayout.addLayout(self.previewPaneLayout)
ThemeWizard.addPage(self.previewPage) ThemeWizard.addPage(self.previewPage)
self.themeNameLabel.setBuddy(self.themeNameEdit)
self.retranslateUi(ThemeWizard) self.retranslateUi(ThemeWizard)
self.backgroundStackedWidget.setCurrentIndex(0) QtCore.QObject.connect(self.backgroundComboBox,
QtCore.QObject.connect( QtCore.SIGNAL(u'currentIndexChanged(int)'), self.backgroundStack,
ThemeWizard, QtCore.SLOT(u'setCurrentIndex(int)'))
QtCore.SIGNAL(u'accepted()'), QtCore.QObject.connect(self.outlineCheckBox,
ThemeWizard.accept) QtCore.SIGNAL(u'toggled(bool)'), self.outlineColorButton,
QtCore.QObject.connect( QtCore.SLOT(u'setEnabled(bool)'))
self.backgroundTypeComboBox, QtCore.QObject.connect(self.outlineCheckBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), QtCore.SIGNAL(u'toggled(bool)'), self.outlineSizeSpinBox,
self.backgroundStackedWidget.setCurrentIndex) QtCore.SLOT(u'setEnabled(bool)'))
QtCore.QObject.connect(self.shadowCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.shadowColorButton,
QtCore.SLOT(u'setEnabled(bool)'))
QtCore.QObject.connect(self.shadowCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.shadowSizeSpinBox,
QtCore.SLOT(u'setEnabled(bool)'))
QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.mainXSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.mainYSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.mainWidthSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.mainHeightSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.footerXSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.footerYSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.footerWidthSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.footerHeightSpinBox,
QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QMetaObject.connectSlotsByName(ThemeWizard) QtCore.QMetaObject.connectSlotsByName(ThemeWizard)
def retranslateUi(self, ThemeWizard): def retranslateUi(self, ThemeWizard):
@ -627,20 +428,20 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Welcome to the Theme Wizard')) translate('OpenLP.ThemeWizard', 'Welcome to the Theme Wizard'))
self.informationLabel.setText( self.informationLabel.setText(
translate('OpenLP.ThemeWizard', 'This wizard will help you to ' translate('OpenLP.ThemeWizard', 'This wizard will help you to '
'create and edit your themes . Click the next button below to ' 'create and edit your themes. Click the next button below to '
'start the process by setting up your background.')) 'start the process by setting up your background.'))
self.backgroundPage.setTitle( self.backgroundPage.setTitle(
translate('OpenLP.ThemeWizard', 'Set Up Background')) translate('OpenLP.ThemeWizard', 'Set Up Background'))
self.backgroundPage.setSubTitle( self.backgroundPage.setSubTitle(
translate('OpenLP.ThemeWizard', 'Set up your theme\'s background ' translate('OpenLP.ThemeWizard', 'Set up your theme\'s background '
'according to the parameters below.')) 'according to the parameters below.'))
self.backgroundTypeLabel.setText( self.backgroundLabel.setText(
translate('OpenLP.ThemeWizard', 'Background type:')) translate('OpenLP.ThemeWizard', 'Background type:'))
self.backgroundTypeComboBox.setItemText(0, self.backgroundComboBox.setItemText(0,
translate('OpenLP.ThemeWizard', 'Solid Color')) translate('OpenLP.ThemeWizard', 'Solid Color'))
self.backgroundTypeComboBox.setItemText(1, self.backgroundComboBox.setItemText(1,
translate('OpenLP.ThemeWizard', 'Gradient')) translate('OpenLP.ThemeWizard', 'Gradient'))
self.backgroundTypeComboBox.setItemText(2, self.backgroundComboBox.setItemText(2,
translate('OpenLP.ThemeWizard', 'Image')) translate('OpenLP.ThemeWizard', 'Image'))
self.colorLabel.setText(translate('OpenLP.ThemeWizard', 'Color:')) self.colorLabel.setText(translate('OpenLP.ThemeWizard', 'Color:'))
self.gradientStartLabel.setText( self.gradientStartLabel.setText(
@ -682,9 +483,9 @@ class Ui_ThemeWizard(object):
self.shadowCheckBox.setText(translate('OpenLP.ThemeWizard', '&Shadow:')) self.shadowCheckBox.setText(translate('OpenLP.ThemeWizard', '&Shadow:'))
self.shadowSizeLabel.setText(translate('OpenLP.ThemeWizard', 'Size:')) self.shadowSizeLabel.setText(translate('OpenLP.ThemeWizard', 'Size:'))
self.shadowSizeSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'pt')) self.shadowSizeSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'pt'))
self.boldCheckBox.setText( self.mainBoldCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Bold')) translate('OpenLP.ThemeWizard', 'Bold'))
self.italicsCheckBox.setText( self.mainItalicsCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Italic')) translate('OpenLP.ThemeWizard', 'Italic'))
self.footerAreaPage.setTitle( self.footerAreaPage.setTitle(
translate('OpenLP.ThemeWizard', 'Footer Area Font Details')) translate('OpenLP.ThemeWizard', 'Footer Area Font Details'))
@ -716,8 +517,8 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Middle')) translate('OpenLP.ThemeWizard', 'Middle'))
self.verticalComboBox.setItemText(2, self.verticalComboBox.setItemText(2,
translate('OpenLP.ThemeWizard', 'Bottom')) translate('OpenLP.ThemeWizard', 'Bottom'))
self.transitionsCheckBox.setText( self.transitionsLabel.setText(
translate('OpenLP.ThemeWizard', 'Transitions')) translate('OpenLP.ThemeWizard', 'Transitions:'))
self.areaPositionPage.setTitle( self.areaPositionPage.setTitle(
translate('OpenLP.ThemeWizard', 'Output Area Locations')) translate('OpenLP.ThemeWizard', 'Output Area Locations'))
self.areaPositionPage.setSubTitle( self.areaPositionPage.setSubTitle(
@ -725,9 +526,9 @@ class Ui_ThemeWizard(object):
' main and footer areas.')) ' main and footer areas.'))
self.mainPositionGroupBox.setTitle( self.mainPositionGroupBox.setTitle(
translate('OpenLP.ThemeWizard', '&Main Area')) translate('OpenLP.ThemeWizard', '&Main Area'))
self.mainDefaultPositionCheckBox.setText( self.mainPositionCheckBox.setText(
translate('OpenLP.ThemeWizard', '&Use default location')) translate('OpenLP.ThemeWizard', '&Use default location'))
self.nainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:')) self.mainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:'))
self.mainXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px')) self.mainXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
self.mainYSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px')) self.mainYSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
self.mainYLabel.setText(translate('OpenLP.ThemeWizard', 'Y position:')) self.mainYLabel.setText(translate('OpenLP.ThemeWizard', 'Y position:'))
@ -737,7 +538,7 @@ class Ui_ThemeWizard(object):
self.mainHeightLabel.setText( self.mainHeightLabel.setText(
translate('OpenLP.ThemeWizard', 'Height:')) translate('OpenLP.ThemeWizard', 'Height:'))
self.footerPositionGroupBox.setTitle( self.footerPositionGroupBox.setTitle(
translate('OpenLP.ThemeWizard', 'Footer Area')) translate('OpenLP.ThemeWizard', '&Footer Area'))
self.footerXLabel.setText( self.footerXLabel.setText(
translate('OpenLP.ThemeWizard', 'X position:')) translate('OpenLP.ThemeWizard', 'X position:'))
self.footerXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px')) self.footerXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
@ -752,7 +553,7 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Height:')) translate('OpenLP.ThemeWizard', 'Height:'))
self.footerHeightSpinBox.setSuffix( self.footerHeightSpinBox.setSuffix(
translate('OpenLP.ThemeWizard', 'px')) translate('OpenLP.ThemeWizard', 'px'))
self.footerDefaultPositionCheckBox.setText( self.footerPositionCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Use default location')) translate('OpenLP.ThemeWizard', 'Use default location'))
self.previewPage.setTitle( self.previewPage.setTitle(
translate('OpenLP.ThemeWizard', 'Save and Preview')) translate('OpenLP.ThemeWizard', 'Save and Preview'))
@ -761,4 +562,19 @@ class Ui_ThemeWizard(object):
'replacing the current one or change the name to create a ' 'replacing the current one or change the name to create a '
'new theme')) 'new theme'))
self.themeNameLabel.setText( self.themeNameLabel.setText(
translate('OpenLP.ThemeWizard', 'Theme name:')) translate('OpenLP.ThemeWizard', 'Theme name:'))
# Align all QFormLayouts towards each other.
width = max(self.backgroundLabel.minimumSizeHint().width(),
self.colorLabel.minimumSizeHint().width())
width = max(width, self.gradientStartLabel.minimumSizeHint().width())
width = max(width, self.gradientEndLabel.minimumSizeHint().width())
width = max(width, self.gradientTypeLabel.minimumSizeHint().width())
width = max(width, self.imageLabel.minimumSizeHint().width())
self.backgroundTypeSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.colorSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.gradientSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.imageSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)

View File

@ -65,7 +65,7 @@ class LanguageManager(object):
""" """
trans_dir = QtCore.QDir(AppLocation.get_directory( trans_dir = QtCore.QDir(AppLocation.get_directory(
AppLocation.LanguageDir)) AppLocation.LanguageDir))
file_names = trans_dir.entryList(QtCore.QStringList("*.qm"), file_names = trans_dir.entryList(QtCore.QStringList(u'*.qm'),
QtCore.QDir.Files, QtCore.QDir.Name) QtCore.QDir.Files, QtCore.QDir.Name)
for name in file_names: for name in file_names:
file_names.replaceInStrings(name, trans_dir.filePath(name)) file_names.replaceInStrings(name, trans_dir.filePath(name))
@ -143,4 +143,4 @@ class LanguageManager(object):
""" """
if not LanguageManager.__qm_list__: if not LanguageManager.__qm_list__:
LanguageManager.init_qm_list() LanguageManager.init_qm_list()
return LanguageManager.__qm_list__ return LanguageManager.__qm_list__

View File

@ -114,10 +114,10 @@ class AlertsPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('AlertsPlugin', 'Alert'), u'singular': translate('AlertsPlugin', 'Alert', 'name singular'),
u'plural': translate('AlertsPlugin', 'Alerts') u'plural': translate('AlertsPlugin', 'Alerts', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('AlertsPlugin', 'Alerts') u'title': translate('AlertsPlugin', 'Alerts', 'container title')
} }

View File

@ -126,53 +126,48 @@ class BiblePlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('BiblesPlugin', 'Bible'), u'singular': translate('BiblesPlugin', 'Bible', 'name singular'),
u'plural': translate('BiblesPlugin', 'Bibles') u'plural': translate('BiblesPlugin', 'Bibles', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('BiblesPlugin', 'Bibles') u'title': translate('BiblesPlugin', 'Bibles', 'container title')
} }
# Middle Header Bar # Middle Header Bar
## Import Button ## ## Import Action ##
self.textStrings[StringContent.Import] = { self.textStrings[StringContent.Import] = {
u'title': translate('BiblesPlugin', 'Import'), u'title': translate('BiblesPlugin', '&Import'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin', 'Import a Bible')
'Import a Bible')
} }
## New Button ## ## New Action ##
self.textStrings[StringContent.New] = { self.textStrings[StringContent.New] = {
u'title': translate('BiblesPlugin', 'Add'), u'title': translate('BiblesPlugin', '&Add'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin', 'Add a new Bible')
'Add a new Bible')
} }
## Edit Button ## ## Edit Action ##
self.textStrings[StringContent.Edit] = { self.textStrings[StringContent.Edit] = {
u'title': translate('BiblesPlugin', 'Edit'), u'title': translate('BiblesPlugin', '&Edit'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin', 'Edit the selected Bible')
'Edit the selected Bible')
} }
## Delete Button ## ## Delete Action ##
self.textStrings[StringContent.Delete] = { self.textStrings[StringContent.Delete] = {
u'title': translate('BiblesPlugin', 'Delete'), u'title': translate('BiblesPlugin', '&Delete'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin', 'Delete the selected Bible')
'Delete the selected Bible')
} }
## Preview ## ## Preview Action ##
self.textStrings[StringContent.Preview] = { self.textStrings[StringContent.Preview] = {
u'title': translate('BiblesPlugin', 'Preview'), u'title': translate('BiblesPlugin', 'Preview'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin', 'Preview the selected Bible')
'Preview the selected Bible')
} }
## Live Button ## ## Send Live Action ##
self.textStrings[StringContent.Live] = { self.textStrings[StringContent.Live] = {
u'title': translate('BiblesPlugin', 'Live'), u'title': translate('BiblesPlugin', 'Live'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin',
'Send the selected Bible live') 'Send the selected Bible live')
} }
## Add to service Button ## ## Add to Service Action ##
self.textStrings[StringContent.Service] = { self.textStrings[StringContent.Service] = {
u'title': translate('BiblesPlugin', 'Service'), u'title': translate('BiblesPlugin', 'Service'),
u'tooltip': translate('BiblesPlugin', u'tooltip': translate('BiblesPlugin',
'Add the selected Bible to the service') 'Add the selected Bible to the service')
} }

View File

@ -79,12 +79,12 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
QtGui.QWizard.__init__(self, parent) QtGui.QWizard.__init__(self, parent)
self.setupUi(self) self.setupUi(self)
self.registerFields() self.registerFields()
if not BibleFormat.get_availability(BibleFormat.OpenLP1): if BibleFormat.get_availability(BibleFormat.OpenLP1):
self.openlp1Page.setVisible(False) self.openlp1DisabledLabel.hide()
self.openlp1LocationLabel.setVisible(False) else:
self.openlp1LocationEdit.setVisible(False) self.openlp1FileLabel.hide()
self.openlp1FileButton.setVisible(False) self.openlp1FileEdit.hide()
self.openlp1DisabledLabel.setVisible(True) self.openlp1BrowseButton.hide()
self.finishButton = self.button(QtGui.QWizard.FinishButton) self.finishButton = self.button(QtGui.QWizard.FinishButton)
self.cancelButton = self.button(QtGui.QWizard.CancelButton) self.cancelButton = self.button(QtGui.QWizard.CancelButton)
self.manager = manager self.manager = manager
@ -92,24 +92,26 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.manager.set_process_dialog(self) self.manager.set_process_dialog(self)
self.web_bible_list = {} self.web_bible_list = {}
self.loadWebBibles() self.loadWebBibles()
QtCore.QObject.connect(self.locationComboBox, self.restart()
self.selectStack.setCurrentIndex(0)
QtCore.QObject.connect(self.webSourceComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.onLocationComboBoxChanged) self.onWebSourceComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.osisFileButton, QtCore.QObject.connect(self.osisBrowseButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onOsisFileButtonClicked) self.onOsisBrowseButtonClicked)
QtCore.QObject.connect(self.booksFileButton, QtCore.QObject.connect(self.csvBooksButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onBooksFileButtonClicked) self.onBooksBrowseButtonClicked)
QtCore.QObject.connect(self.csvVersesFileButton, QtCore.QObject.connect(self.csvVersesButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onCsvVersesFileButtonClicked) self.onCsvVersesBrowseButtonClicked)
QtCore.QObject.connect(self.openSongBrowseButton, QtCore.QObject.connect(self.openSongBrowseButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onOpenSongBrowseButtonClicked) self.onOpenSongBrowseButtonClicked)
QtCore.QObject.connect(self.openlp1FileButton, QtCore.QObject.connect(self.openlp1BrowseButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onOpenlp1FileButtonClicked) self.onOpenlp1BrowseButtonClicked)
QtCore.QObject.connect(self, QtCore.QObject.connect(self,
QtCore.SIGNAL(u'currentIdChanged(int)'), QtCore.SIGNAL(u'currentIdChanged(int)'),
self.onCurrentIdChanged) self.onCurrentIdChanged)
@ -125,8 +127,8 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
""" """
Stop the import on cancel button, close button or ESC key. Stop the import on cancel button, close button or ESC key.
""" """
log.debug('Import canceled by user.') log.debug(u'Import canceled by user.')
if self.currentId() == 3: if self.currentPage() == self.importPage:
Receiver.send_message(u'bibles_stop_import') Receiver.send_message(u'bibles_stop_import')
self.done(QtGui.QDialog.Rejected) self.done(QtGui.QDialog.Rejected)
@ -134,11 +136,9 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
""" """
Validate the current page before moving on to the next page. Validate the current page before moving on to the next page.
""" """
if self.currentId() == 0: if self.currentPage() == self.welcomePage:
# Welcome page
return True return True
elif self.currentId() == 1: elif self.currentPage() == self.selectPage:
# Select page
if self.field(u'source_format').toInt()[0] == BibleFormat.OSIS: if self.field(u'source_format').toInt()[0] == BibleFormat.OSIS:
if not self.field(u'osis_location').toString(): if not self.field(u'osis_location').toString():
QtGui.QMessageBox.critical(self, QtGui.QMessageBox.critical(self,
@ -147,7 +147,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file to import your ' 'You need to specify a file to import your '
'Bible from.')) 'Bible from.'))
self.OSISLocationEdit.setFocus() self.osisFileEdit.setFocus()
return False return False
elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV: elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV:
if not self.field(u'csv_booksfile').toString(): if not self.field(u'csv_booksfile').toString():
@ -157,7 +157,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file with books of ' 'You need to specify a file with books of '
'the Bible to use in the import.')) 'the Bible to use in the import.'))
self.booksLocationEdit.setFocus() self.csvBooksEdit.setFocus()
return False return False
elif not self.field(u'csv_versefile').toString(): elif not self.field(u'csv_versefile').toString():
QtGui.QMessageBox.critical(self, QtGui.QMessageBox.critical(self,
@ -166,7 +166,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file of Bible ' 'You need to specify a file of Bible '
'verses to import.')) 'verses to import.'))
self.csvVerseLocationEdit.setFocus() self.csvVersesEdit.setFocus()
return False return False
elif self.field(u'source_format').toInt()[0] == \ elif self.field(u'source_format').toInt()[0] == \
BibleFormat.OpenSong: BibleFormat.OpenSong:
@ -187,11 +187,10 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file to import your ' 'You need to specify a file to import your '
'Bible from.')) 'Bible from.'))
self.openlp1LocationEdit.setFocus() self.openlp1FileEdit.setFocus()
return False return False
return True return True
elif self.currentId() == 2: elif self.currentPage() == self.licenseDetailsPage:
# License details
license_version = unicode(self.field(u'license_version').toString()) license_version = unicode(self.field(u'license_version').toString())
license_copyright = \ license_copyright = \
unicode(self.field(u'license_copyright').toString()) unicode(self.field(u'license_copyright').toString())
@ -221,11 +220,10 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.versionNameEdit.setFocus() self.versionNameEdit.setFocus()
return False return False
return True return True
if self.currentId() == 3: if self.currentPage() == self.importPage:
# Progress page
return True return True
def onLocationComboBoxChanged(self, index): def onWebSourceComboBoxCurrentIndexChanged(self, index):
""" """
Setup the list of Bibles when you select a different source on the web Setup the list of Bibles when you select a different source on the web
download page. download page.
@ -233,35 +231,34 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
``index`` ``index``
The index of the combo box. The index of the combo box.
""" """
self.bibleComboBox.clear() self.webTranslationComboBox.clear()
bibles = self.web_bible_list[index].keys() bibles = self.web_bible_list[index].keys()
bibles.sort() bibles.sort()
for bible in bibles: self.webTranslationComboBox.addItems(bibles)
self.bibleComboBox.addItem(bible)
def onOsisFileButtonClicked(self): def onOsisBrowseButtonClicked(self):
""" """
Show the file open dialog for the OSIS file. Show the file open dialog for the OSIS file.
""" """
self.getFileName( self.getFileName(
translate('BiblesPlugin.ImportWizardForm', 'Open OSIS File'), translate('BiblesPlugin.ImportWizardForm', 'Open OSIS File'),
self.OSISLocationEdit) self.osisFileEdit)
def onBooksFileButtonClicked(self): def onBooksBrowseButtonClicked(self):
""" """
Show the file open dialog for the books CSV file. Show the file open dialog for the books CSV file.
""" """
self.getFileName( self.getFileName(
translate('BiblesPlugin.ImportWizardForm', 'Open Books CSV File'), translate('BiblesPlugin.ImportWizardForm', 'Open Books CSV File'),
self.booksLocationEdit, u'%s (*.csv)' self.csvBooksEdit, u'%s (*.csv)'
% translate('BiblesPlugin.ImportWizardForm', 'CSV File')) % translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
def onCsvVersesFileButtonClicked(self): def onCsvVersesBrowseButtonClicked(self):
""" """
Show the file open dialog for the verses CSV file. Show the file open dialog for the verses CSV file.
""" """
self.getFileName(translate('BiblesPlugin.ImportWizardForm', self.getFileName(translate('BiblesPlugin.ImportWizardForm',
'Open Verses CSV File'), self.csvVerseLocationEdit, u'%s (*.csv)' 'Open Verses CSV File'), self.csvVersesEdit, u'%s (*.csv)'
% translate('BiblesPlugin.ImportWizardForm', 'CSV File')) % translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
def onOpenSongBrowseButtonClicked(self): def onOpenSongBrowseButtonClicked(self):
@ -272,36 +269,35 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', 'Open OpenSong Bible'), translate('BiblesPlugin.ImportWizardForm', 'Open OpenSong Bible'),
self.openSongFileEdit) self.openSongFileEdit)
def onOpenlp1FileButtonClicked(self): def onOpenlp1BrowseButtonClicked(self):
""" """
Show the file open dialog for the openlp.org 1.x file. Show the file open dialog for the openlp.org 1.x file.
""" """
self.getFileName( self.getFileName(
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'Open openlp.org 1.x Bible'), self.openlp1LocationEdit, 'Open openlp.org 1.x Bible'), self.openlp1FileEdit,
u'%s (*.bible)' % translate('BiblesPlugin.ImportWizardForm', u'%s (*.bible)' % translate('BiblesPlugin.ImportWizardForm',
'openlp.org 1.x bible')) 'openlp.org 1.x bible'))
def onCurrentIdChanged(self, pageId): def onCurrentIdChanged(self, pageId):
if pageId == 3: if self.page(pageId) == self.importPage:
self.preImport() self.preImport()
self.performImport() self.performImport()
self.postImport() self.postImport()
def registerFields(self): def registerFields(self):
self.selectPage.registerField(u'source_format', self.formatComboBox) self.selectPage.registerField(u'source_format', self.formatComboBox)
self.selectPage.registerField(u'osis_location', self.OSISLocationEdit) self.selectPage.registerField(u'osis_location', self.osisFileEdit)
self.selectPage.registerField(u'csv_booksfile', self.booksLocationEdit) self.selectPage.registerField(u'csv_booksfile', self.csvBooksEdit)
self.selectPage.registerField( self.selectPage.registerField(u'csv_versefile', self.csvVersesEdit)
u'csv_versefile', self.csvVerseLocationEdit)
self.selectPage.registerField(u'opensong_file', self.openSongFileEdit) self.selectPage.registerField(u'opensong_file', self.openSongFileEdit)
self.selectPage.registerField(u'web_location', self.locationComboBox) self.selectPage.registerField(u'web_location', self.webSourceComboBox)
self.selectPage.registerField(u'web_biblename', self.bibleComboBox) self.selectPage.registerField(u'web_biblename',
self.selectPage.registerField(u'proxy_server', self.addressEdit) self.webTranslationComboBox)
self.selectPage.registerField(u'proxy_username', self.usernameEdit) self.selectPage.registerField(u'proxy_server', self.webServerEdit)
self.selectPage.registerField(u'proxy_password', self.passwordEdit) self.selectPage.registerField(u'proxy_username', self.webUserEdit)
self.selectPage.registerField( self.selectPage.registerField(u'proxy_password', self.webPasswordEdit)
u'openlp1_location', self.openlp1LocationEdit) self.selectPage.registerField(u'openlp1_location', self.openlp1FileEdit)
self.licenseDetailsPage.registerField( self.licenseDetailsPage.registerField(
u'license_version', self.versionNameEdit) u'license_version', self.versionNameEdit)
self.licenseDetailsPage.registerField( self.licenseDetailsPage.registerField(
@ -322,7 +318,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.setField(u'opensong_file', QtCore.QVariant('')) self.setField(u'opensong_file', QtCore.QVariant(''))
self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk)) self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk))
self.setField(u'web_biblename', self.setField(u'web_biblename',
QtCore.QVariant(self.bibleComboBox.currentIndex())) QtCore.QVariant(self.webTranslationComboBox.currentIndex()))
self.setField(u'proxy_server', self.setField(u'proxy_server',
settings.value(u'proxy address', QtCore.QVariant(u''))) settings.value(u'proxy address', QtCore.QVariant(u'')))
self.setField(u'proxy_username', self.setField(u'proxy_username',
@ -336,7 +332,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
QtCore.QVariant(self.copyrightEdit.text())) QtCore.QVariant(self.copyrightEdit.text()))
self.setField(u'license_permissions', self.setField(u'license_permissions',
QtCore.QVariant(self.permissionsEdit.text())) QtCore.QVariant(self.permissionsEdit.text()))
self.onLocationComboBoxChanged(WebDownload.Crosswalk) self.onWebSourceComboBoxCurrentIndexChanged(WebDownload.Crosswalk)
settings.endGroup() settings.endGroup()
def loadWebBibles(self): def loadWebBibles(self):
@ -491,7 +487,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
# Import a bible from the web. # Import a bible from the web.
self.importProgressBar.setMaximum(1) self.importProgressBar.setMaximum(1)
download_location = self.field(u'web_location').toInt()[0] download_location = self.field(u'web_location').toInt()[0]
bible_version = unicode(self.bibleComboBox.currentText()) bible_version = unicode(self.webTranslationComboBox.currentText())
if download_location == WebDownload.Crosswalk: if download_location == WebDownload.Crosswalk:
bible = \ bible = \
self.web_bible_list[WebDownload.Crosswalk][bible_version] self.web_bible_list[WebDownload.Crosswalk][bible_version]
@ -538,4 +534,4 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.importProgressBar.setValue(self.importProgressBar.maximum()) self.importProgressBar.setValue(self.importProgressBar.maximum())
self.finishButton.setVisible(True) self.finishButton.setVisible(True)
self.cancelButton.setVisible(False) self.cancelButton.setVisible(False)
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')

View File

@ -31,269 +31,216 @@ from openlp.core.lib import build_icon, translate
class Ui_BibleImportWizard(object): class Ui_BibleImportWizard(object):
def setupUi(self, bibleImportWizard): def setupUi(self, bibleImportWizard):
bibleImportWizard.setObjectName(u'bibleImportWizard') bibleImportWizard.setObjectName(u'bibleImportWizard')
bibleImportWizard.resize(550, 386)
bibleImportWizard.setModal(True) bibleImportWizard.setModal(True)
bibleImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle) bibleImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
bibleImportWizard.setOptions( bibleImportWizard.setOptions(
QtGui.QWizard.IndependentPages | QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage | QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.NoBackButtonOnLastPage) QtGui.QWizard.NoBackButtonOnLastPage)
# Welcome page # Welcome Page
self.welcomePage = QtGui.QWizardPage() self.welcomePage = QtGui.QWizardPage()
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap, self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_importbible.bmp')) QtGui.QPixmap(u':/wizards/wizard_importbible.bmp'))
self.welcomePage.setObjectName(u'WelcomePage') self.welcomePage.setObjectName(u'WelcomePage')
self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage) self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
self.welcomeLayout.setSpacing(8)
self.welcomeLayout.setMargin(0)
self.welcomeLayout.setObjectName(u'WelcomeLayout') self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage) self.titleLabel = QtGui.QLabel(self.welcomePage)
self.titleLabel.setObjectName(u'TitleLabel') self.titleLabel.setObjectName(u'TitleLabel')
self.welcomeLayout.addWidget(self.titleLabel) self.welcomeLayout.addWidget(self.titleLabel)
spacerItem = QtGui.QSpacerItem(20, 40, self.welcomeLayout.addSpacing(40)
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.welcomeLayout.addItem(spacerItem)
self.informationLabel = QtGui.QLabel(self.welcomePage) self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True) self.informationLabel.setWordWrap(True)
self.informationLabel.setMargin(10)
self.informationLabel.setObjectName(u'InformationLabel') self.informationLabel.setObjectName(u'InformationLabel')
self.welcomeLayout.addWidget(self.informationLabel) self.welcomeLayout.addWidget(self.informationLabel)
spacerItem1 = QtGui.QSpacerItem(20, 40, self.welcomeLayout.addStretch()
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.welcomeLayout.addItem(spacerItem1)
bibleImportWizard.addPage(self.welcomePage) bibleImportWizard.addPage(self.welcomePage)
# Select page # Select Page
self.selectPage = QtGui.QWizardPage() self.selectPage = QtGui.QWizardPage()
self.selectPage.setObjectName(u'SelectPage') self.selectPage.setObjectName(u'SelectPage')
self.selectPageLayout = QtGui.QVBoxLayout(self.selectPage) self.selectPageLayout = QtGui.QVBoxLayout(self.selectPage)
self.selectPageLayout.setSpacing(8) self.selectPageLayout.setObjectName(u'SelectPageLayout')
self.selectPageLayout.setMargin(20) self.formatLayout = QtGui.QFormLayout()
self.selectPageLayout.setObjectName(u'selectPageLayout') self.formatLayout.setObjectName(u'FormatLayout')
self.formatSelectLayout = QtGui.QHBoxLayout()
self.formatSelectLayout.setSpacing(8)
self.formatSelectLayout.setObjectName(u'FormatSelectLayout')
self.formatLabel = QtGui.QLabel(self.selectPage) self.formatLabel = QtGui.QLabel(self.selectPage)
self.formatLabel.setObjectName(u'FormatLabel') self.formatLabel.setObjectName(u'FormatLabel')
self.formatSelectLayout.addWidget(self.formatLabel)
self.formatComboBox = QtGui.QComboBox(self.selectPage) self.formatComboBox = QtGui.QComboBox(self.selectPage)
self.formatComboBox.addItems([u'', u'', u'', u'', u''])
self.formatComboBox.setObjectName(u'FormatComboBox') self.formatComboBox.setObjectName(u'FormatComboBox')
self.formatComboBox.addItem(u'') self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
self.formatComboBox.addItem(u'') self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.formatComboBox.addItem(u'') QtGui.QSizePolicy.Minimum)
self.formatComboBox.addItem(u'') self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.formatComboBox.addItem(u'') self.formatSpacer)
self.formatSelectLayout.addWidget(self.formatComboBox) self.selectPageLayout.addLayout(self.formatLayout)
spacerItem2 = QtGui.QSpacerItem(40, 20, self.selectStack = QtGui.QStackedLayout()
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.selectStack.setObjectName(u'SelectStack')
self.formatSelectLayout.addItem(spacerItem2) self.osisWidget = QtGui.QWidget(self.selectPage)
self.selectPageLayout.addLayout(self.formatSelectLayout) self.osisWidget.setObjectName(u'OsisWidget')
self.formatWidget = QtGui.QStackedWidget(self.selectPage) self.osisLayout = QtGui.QFormLayout(self.osisWidget)
self.formatWidget.setObjectName(u'FormatWidget')
generalIcon = build_icon(u':/general/general_open.png')
self.osisPage = QtGui.QWidget()
self.osisPage.setObjectName(u'OsisPage')
self.osisLayout = QtGui.QFormLayout(self.osisPage)
self.osisLayout.setFieldGrowthPolicy(
QtGui.QFormLayout.ExpandingFieldsGrow)
self.osisLayout.setMargin(0) self.osisLayout.setMargin(0)
self.osisLayout.setSpacing(8)
self.osisLayout.setObjectName(u'OsisLayout') self.osisLayout.setObjectName(u'OsisLayout')
self.osisLocationLabel = QtGui.QLabel(self.osisPage) self.osisFileLabel = QtGui.QLabel(self.osisWidget)
self.osisLocationLabel.setObjectName(u'OsisLocationLabel') self.osisFileLabel.setObjectName(u'OsisFileLabel')
self.osisLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.osisFileLayout = QtGui.QHBoxLayout()
self.osisLocationLabel) self.osisFileLayout.setObjectName(u'OsisFileLayout')
self.osisLocationLayout = QtGui.QHBoxLayout() self.osisFileEdit = QtGui.QLineEdit(self.osisWidget)
self.osisLocationLayout.setSpacing(8) self.osisFileEdit.setObjectName(u'OsisFileEdit')
self.osisLocationLayout.setObjectName(u'OsisLocationLayout') self.osisFileLayout.addWidget(self.osisFileEdit)
self.OSISLocationEdit = QtGui.QLineEdit(self.osisPage) self.osisBrowseButton = QtGui.QToolButton(self.osisWidget)
self.OSISLocationEdit.setObjectName(u'OSISLocationEdit') self.osisBrowseButton.setIcon(build_icon(u':/general/general_open.png'))
self.osisLocationLayout.addWidget(self.OSISLocationEdit) self.osisBrowseButton.setObjectName(u'OsisBrowseButton')
self.osisFileButton = QtGui.QToolButton(self.osisPage) self.osisFileLayout.addWidget(self.osisBrowseButton)
self.osisFileButton.setMaximumSize(QtCore.QSize(32, 16777215)) self.osisLayout.addRow(self.osisFileLabel, self.osisFileLayout)
self.osisFileButton.setIcon(generalIcon) self.osisSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.osisFileButton.setObjectName(u'OsisFileButton') QtGui.QSizePolicy.Minimum)
self.osisLocationLayout.addWidget(self.osisFileButton) self.osisLayout.setItem(1, QtGui.QFormLayout.LabelRole, self.osisSpacer)
self.osisLayout.setLayout(1, QtGui.QFormLayout.FieldRole, self.selectStack.addWidget(self.osisWidget)
self.osisLocationLayout) self.csvWidget = QtGui.QWidget(self.selectPage)
self.formatWidget.addWidget(self.osisPage) self.csvWidget.setObjectName(u'CsvWidget')
self.csvPage = QtGui.QWidget() self.csvLayout = QtGui.QFormLayout(self.csvWidget)
self.csvPage.setObjectName(u'CsvPage') self.csvLayout.setMargin(0)
self.csvSourceLayout = QtGui.QFormLayout(self.csvPage) self.csvLayout.setObjectName(u'CsvLayout')
self.csvSourceLayout.setFieldGrowthPolicy( self.csvBooksLabel = QtGui.QLabel(self.csvWidget)
QtGui.QFormLayout.ExpandingFieldsGrow) self.csvBooksLabel.setObjectName(u'CsvBooksLabel')
self.csvSourceLayout.setLabelAlignment(QtCore.Qt.AlignBottom |
QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing)
self.csvSourceLayout.setFormAlignment(QtCore.Qt.AlignLeading |
QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.csvSourceLayout.setMargin(0)
self.csvSourceLayout.setSpacing(8)
self.csvSourceLayout.setObjectName(u'CsvSourceLayout')
self.booksLocationLabel = QtGui.QLabel(self.csvPage)
self.booksLocationLabel.setObjectName(u'BooksLocationLabel')
self.csvSourceLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.booksLocationLabel)
self.csvBooksLayout = QtGui.QHBoxLayout() self.csvBooksLayout = QtGui.QHBoxLayout()
self.csvBooksLayout.setSpacing(8)
self.csvBooksLayout.setObjectName(u'CsvBooksLayout') self.csvBooksLayout.setObjectName(u'CsvBooksLayout')
self.booksLocationEdit = QtGui.QLineEdit(self.csvPage) self.csvBooksEdit = QtGui.QLineEdit(self.csvWidget)
self.booksLocationEdit.setObjectName(u'BooksLocationEdit') self.csvBooksEdit.setObjectName(u'CsvBooksEdit')
self.csvBooksLayout.addWidget(self.booksLocationEdit) self.csvBooksLayout.addWidget(self.csvBooksEdit)
self.booksFileButton = QtGui.QToolButton(self.csvPage) self.csvBooksButton = QtGui.QToolButton(self.csvWidget)
self.booksFileButton.setMaximumSize(QtCore.QSize(32, 16777215)) self.csvBooksButton.setIcon(build_icon(u':/general/general_open.png'))
self.booksFileButton.setIcon(generalIcon) self.csvBooksButton.setObjectName(u'CsvBooksButton')
self.booksFileButton.setObjectName(u'BooksFileButton') self.csvBooksLayout.addWidget(self.csvBooksButton)
self.csvBooksLayout.addWidget(self.booksFileButton) self.csvLayout.addRow(self.csvBooksLabel, self.csvBooksLayout)
self.csvSourceLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.csvVersesLabel = QtGui.QLabel(self.csvWidget)
self.csvBooksLayout) self.csvVersesLabel.setObjectName(u'CsvVersesLabel')
self.verseLocationLabel = QtGui.QLabel(self.csvPage) self.csvVersesLayout = QtGui.QHBoxLayout()
self.verseLocationLabel.setObjectName(u'VerseLocationLabel') self.csvVersesLayout.setObjectName(u'CsvVersesLayout')
self.csvSourceLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.csvVersesEdit = QtGui.QLineEdit(self.csvWidget)
self.verseLocationLabel) self.csvVersesEdit.setObjectName(u'CsvVersesEdit')
self.csvVerseLayout = QtGui.QHBoxLayout() self.csvVersesLayout.addWidget(self.csvVersesEdit)
self.csvVerseLayout.setSpacing(8) self.csvVersesButton = QtGui.QToolButton(self.csvWidget)
self.csvVerseLayout.setObjectName(u'CsvVerseLayout') self.csvVersesButton.setIcon(build_icon(u':/general/general_open.png'))
self.csvVerseLocationEdit = QtGui.QLineEdit(self.csvPage) self.csvVersesButton.setObjectName(u'CsvVersesButton')
self.csvVerseLocationEdit.setObjectName(u'CsvVerseLocationEdit') self.csvVersesLayout.addWidget(self.csvVersesButton)
self.csvVerseLayout.addWidget(self.csvVerseLocationEdit) self.csvLayout.addRow(self.csvVersesLabel, self.csvVersesLayout)
self.csvVersesFileButton = QtGui.QToolButton(self.csvPage) self.csvSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.csvVersesFileButton.setMaximumSize(QtCore.QSize(32, 16777215)) QtGui.QSizePolicy.Minimum)
self.csvVersesFileButton.setIcon(generalIcon) self.csvLayout.setItem(2, QtGui.QFormLayout.LabelRole, self.csvSpacer)
self.csvVersesFileButton.setObjectName(u'CsvVersesFileButton') self.selectStack.addWidget(self.csvWidget)
self.csvVerseLayout.addWidget(self.csvVersesFileButton) self.openSongWidget = QtGui.QWidget(self.selectPage)
self.csvSourceLayout.setLayout(1, QtGui.QFormLayout.FieldRole, self.openSongWidget.setObjectName(u'OpenSongWidget')
self.csvVerseLayout) self.openSongLayout = QtGui.QFormLayout(self.openSongWidget)
self.formatWidget.addWidget(self.csvPage)
self.openSongPage = QtGui.QWidget()
self.openSongPage.setObjectName(u'OpenSongPage')
self.openSongLayout = QtGui.QFormLayout(self.openSongPage)
self.openSongLayout.setMargin(0) self.openSongLayout.setMargin(0)
self.openSongLayout.setSpacing(8)
self.openSongLayout.setObjectName(u'OpenSongLayout') self.openSongLayout.setObjectName(u'OpenSongLayout')
self.openSongFileLabel = QtGui.QLabel(self.openSongPage) self.openSongFileLabel = QtGui.QLabel(self.openSongWidget)
self.openSongFileLabel.setObjectName(u'OpenSongFileLabel') self.openSongFileLabel.setObjectName(u'OpenSongFileLabel')
self.openSongLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.openSongFileLabel)
self.openSongFileLayout = QtGui.QHBoxLayout() self.openSongFileLayout = QtGui.QHBoxLayout()
self.openSongFileLayout.setSpacing(8)
self.openSongFileLayout.setObjectName(u'OpenSongFileLayout') self.openSongFileLayout.setObjectName(u'OpenSongFileLayout')
self.openSongFileEdit = QtGui.QLineEdit(self.openSongPage) self.openSongFileEdit = QtGui.QLineEdit(self.openSongWidget)
self.openSongFileEdit.setObjectName(u'OpenSongFileEdit') self.openSongFileEdit.setObjectName(u'OpenSongFileEdit')
self.openSongFileLayout.addWidget(self.openSongFileEdit) self.openSongFileLayout.addWidget(self.openSongFileEdit)
self.openSongBrowseButton = QtGui.QToolButton(self.openSongPage) self.openSongBrowseButton = QtGui.QToolButton(self.openSongWidget)
self.openSongBrowseButton.setIcon(generalIcon) self.openSongBrowseButton.setIcon(
build_icon(u':/general/general_open.png'))
self.openSongBrowseButton.setObjectName(u'OpenSongBrowseButton') self.openSongBrowseButton.setObjectName(u'OpenSongBrowseButton')
self.openSongFileLayout.addWidget(self.openSongBrowseButton) self.openSongFileLayout.addWidget(self.openSongBrowseButton)
self.openSongLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.openSongLayout.addRow(self.openSongFileLabel,
self.openSongFileLayout) self.openSongFileLayout)
self.formatWidget.addWidget(self.openSongPage) self.openSongSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
self.webDownloadPage = QtGui.QWidget() QtGui.QSizePolicy.Minimum)
self.webDownloadPage.setObjectName(u'WebDownloadPage') self.openSongLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.webDownloadLayout = QtGui.QVBoxLayout(self.webDownloadPage) self.openSongSpacer)
self.webDownloadLayout.setSpacing(8) self.selectStack.addWidget(self.openSongWidget)
self.webDownloadLayout.setMargin(0) self.webTabWidget = QtGui.QTabWidget(self.selectPage)
self.webDownloadLayout.setObjectName(u'WebDownloadLayout') self.webTabWidget.setObjectName(u'WebTabWidget')
self.webDownloadTabWidget = QtGui.QTabWidget(self.webDownloadPage) self.webBibleTab = QtGui.QWidget()
self.webDownloadTabWidget.setObjectName(u'WebDownloadTabWidget') self.webBibleTab.setObjectName(u'WebBibleTab')
self.downloadOptionsTab = QtGui.QWidget() self.webBibleLayout = QtGui.QFormLayout(self.webBibleTab)
self.downloadOptionsTab.setObjectName(u'DownloadOptionsTab') self.webBibleLayout.setObjectName(u'WebBibleLayout')
self.downloadOptionsLayout = QtGui.QFormLayout(self.downloadOptionsTab) self.webSourceLabel = QtGui.QLabel(self.webBibleTab)
self.downloadOptionsLayout.setMargin(8) self.webSourceLabel.setObjectName(u'WebSourceLabel')
self.downloadOptionsLayout.setSpacing(8) self.webBibleLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.downloadOptionsLayout.setObjectName(u'DownloadOptionsLayout') self.webSourceLabel)
self.locationLabel = QtGui.QLabel(self.downloadOptionsTab) self.webSourceComboBox = QtGui.QComboBox(self.webBibleTab)
self.locationLabel.setObjectName(u'LocationLabel') self.webSourceComboBox.setObjectName(u'WebSourceComboBox')
self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.webSourceComboBox.addItems([u'', u'', u''])
self.locationLabel) self.webBibleLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.locationComboBox = QtGui.QComboBox(self.downloadOptionsTab) self.webSourceComboBox)
self.locationComboBox.setObjectName(u'LocationComboBox') self.webTranslationLabel = QtGui.QLabel(self.webBibleTab)
self.locationComboBox.addItem(u'') self.webTranslationLabel.setObjectName(u'webTranslationLabel')
self.locationComboBox.addItem(u'') self.webBibleLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.locationComboBox.addItem(u'') self.webTranslationLabel)
self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.webTranslationComboBox = QtGui.QComboBox(self.webBibleTab)
self.locationComboBox) self.webTranslationComboBox.setSizeAdjustPolicy(
self.bibleLabel = QtGui.QLabel(self.downloadOptionsTab) QtGui.QComboBox.AdjustToContents)
self.bibleLabel.setObjectName(u'BibleLabel') self.webTranslationComboBox.setObjectName(u'WebTranslationComboBox')
self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.webBibleLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
self.bibleLabel) self.webTranslationComboBox)
self.bibleComboBox = QtGui.QComboBox(self.downloadOptionsTab) self.webTabWidget.addTab(self.webBibleTab, u'')
self.bibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents) self.webProxyTab = QtGui.QWidget()
self.bibleComboBox.setObjectName(u'BibleComboBox') self.webProxyTab.setObjectName(u'WebProxyTab')
self.bibleComboBox.addItem(u'') self.webProxyLayout = QtGui.QFormLayout(self.webProxyTab)
self.bibleComboBox.addItem(u'') self.webProxyLayout.setObjectName(u'WebProxyLayout')
self.bibleComboBox.addItem(u'') self.webServerLabel = QtGui.QLabel(self.webProxyTab)
self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.webServerLabel.setObjectName(u'WebServerLabel')
self.bibleComboBox) self.webProxyLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
self.webDownloadTabWidget.addTab(self.downloadOptionsTab, u'') self.webServerLabel)
self.proxyServerTab = QtGui.QWidget() self.webServerEdit = QtGui.QLineEdit(self.webProxyTab)
self.proxyServerTab.setObjectName(u'ProxyServerTab') self.webServerEdit.setObjectName(u'WebServerEdit')
self.proxyServerLayout = QtGui.QFormLayout(self.proxyServerTab) self.webProxyLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
self.proxyServerLayout.setObjectName(u'ProxyServerLayout') self.webServerEdit)
self.addressLabel = QtGui.QLabel(self.proxyServerTab) self.webUserLabel = QtGui.QLabel(self.webProxyTab)
self.addressLabel.setObjectName(u'AddressLabel') self.webUserLabel.setObjectName(u'WebUserLabel')
self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.webProxyLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
self.addressLabel) self.webUserLabel)
self.addressEdit = QtGui.QLineEdit(self.proxyServerTab) self.webUserEdit = QtGui.QLineEdit(self.webProxyTab)
self.addressEdit.setObjectName(u'AddressEdit') self.webUserEdit.setObjectName(u'WebUserEdit')
self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.webProxyLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
self.addressEdit) self.webUserEdit)
self.usernameLabel = QtGui.QLabel(self.proxyServerTab) self.webPasswordLabel = QtGui.QLabel(self.webProxyTab)
self.usernameLabel.setObjectName(u'UsernameLabel') self.webPasswordLabel.setObjectName(u'WebPasswordLabel')
self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.webProxyLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
self.usernameLabel) self.webPasswordLabel)
self.usernameEdit = QtGui.QLineEdit(self.proxyServerTab) self.webPasswordEdit = QtGui.QLineEdit(self.webProxyTab)
self.usernameEdit.setObjectName(u'UsernameEdit') self.webPasswordEdit.setObjectName(u'WebPasswordEdit')
self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.webProxyLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.usernameEdit) self.webPasswordEdit)
self.passwordLabel = QtGui.QLabel(self.proxyServerTab) self.webTabWidget.addTab(self.webProxyTab, u'')
self.passwordLabel.setObjectName(u'PasswordLabel') self.selectStack.addWidget(self.webTabWidget)
self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.openlp1Widget = QtGui.QWidget(self.selectPage)
self.passwordLabel) self.openlp1Widget.setObjectName(u'Openlp1Widget')
self.passwordEdit = QtGui.QLineEdit(self.proxyServerTab) self.openlp1Layout = QtGui.QFormLayout(self.openlp1Widget)
self.passwordEdit.setObjectName(u'PasswordEdit')
self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.passwordEdit)
self.webDownloadTabWidget.addTab(self.proxyServerTab, u'')
self.webDownloadLayout.addWidget(self.webDownloadTabWidget)
self.formatWidget.addWidget(self.webDownloadPage)
self.openlp1Page = QtGui.QWidget()
self.openlp1Page.setObjectName(u'Openlp1Page')
self.openlp1Layout = QtGui.QFormLayout(self.openlp1Page)
self.openlp1Layout.setFieldGrowthPolicy(
QtGui.QFormLayout.ExpandingFieldsGrow)
self.openlp1Layout.setMargin(0) self.openlp1Layout.setMargin(0)
self.openlp1Layout.setSpacing(8)
self.openlp1Layout.setObjectName(u'Openlp1Layout') self.openlp1Layout.setObjectName(u'Openlp1Layout')
self.openlp1LocationLabel = QtGui.QLabel(self.openlp1Page) self.openlp1FileLabel = QtGui.QLabel(self.openlp1Widget)
self.openlp1LocationLabel.setObjectName(u'Openlp1LocationLabel') self.openlp1FileLabel.setObjectName(u'Openlp1FileLabel')
self.openlp1Layout.setWidget(1, QtGui.QFormLayout.LabelRole, self.openlp1FileLayout = QtGui.QHBoxLayout()
self.openlp1LocationLabel) self.openlp1FileLayout.setObjectName(u'Openlp1FileLayout')
self.openlp1LocationLayout = QtGui.QHBoxLayout() self.openlp1FileEdit = QtGui.QLineEdit(self.openlp1Widget)
self.openlp1LocationLayout.setSpacing(8) self.openlp1FileEdit.setObjectName(u'Openlp1FileEdit')
self.openlp1LocationLayout.setObjectName(u'Openlp1LocationLayout') self.openlp1FileLayout.addWidget(self.openlp1FileEdit)
self.openlp1LocationEdit = QtGui.QLineEdit(self.openlp1Page) self.openlp1BrowseButton = QtGui.QToolButton(self.openlp1Widget)
self.openlp1LocationEdit.setObjectName(u'Openlp1LocationEdit') self.openlp1BrowseButton.setIcon(
self.openlp1LocationLayout.addWidget(self.openlp1LocationEdit) build_icon(u':/general/general_open.png'))
self.openlp1FileButton = QtGui.QToolButton(self.openlp1Page) self.openlp1BrowseButton.setObjectName(u'Openlp1BrowseButton')
self.openlp1FileButton.setMaximumSize(QtCore.QSize(32, 16777215)) self.openlp1FileLayout.addWidget(self.openlp1BrowseButton)
self.openlp1FileButton.setIcon(generalIcon) self.openlp1Layout.addRow(self.openlp1FileLabel, self.openlp1FileLayout)
self.openlp1FileButton.setObjectName(u'Openlp1FileButton') self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Widget)
self.openlp1LocationLayout.addWidget(self.openlp1FileButton)
self.openlp1Layout.setLayout(1, QtGui.QFormLayout.FieldRole,
self.openlp1LocationLayout)
self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Page)
self.openlp1DisabledLabel.setObjectName(u'openlp1DisabledLabel')
self.openlp1DisabledLabel.setVisible(False)
self.openlp1DisabledLabel.setWordWrap(True) self.openlp1DisabledLabel.setWordWrap(True)
self.openlp1Layout.addWidget(self.openlp1DisabledLabel) self.openlp1DisabledLabel.setObjectName(u'Openlp1DisabledLabel')
self.formatWidget.addWidget(self.openlp1Page) self.openlp1Layout.addRow(self.openlp1DisabledLabel)
self.selectPageLayout.addWidget(self.formatWidget) self.openlp1Spacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Minimum)
self.openlp1Layout.setItem(1, QtGui.QFormLayout.LabelRole,
self.openlp1Spacer)
self.selectStack.addWidget(self.openlp1Widget)
self.selectPageLayout.addLayout(self.selectStack)
bibleImportWizard.addPage(self.selectPage) bibleImportWizard.addPage(self.selectPage)
# License page # License Page
self.licenseDetailsPage = QtGui.QWizardPage() self.licenseDetailsPage = QtGui.QWizardPage()
self.licenseDetailsPage.setObjectName(u'LicenseDetailsPage') self.licenseDetailsPage.setObjectName(u'LicenseDetailsPage')
self.licenseDetailsLayout = QtGui.QFormLayout(self.licenseDetailsPage) self.licenseDetailsLayout = QtGui.QFormLayout(self.licenseDetailsPage)
self.licenseDetailsLayout.setMargin(20)
self.licenseDetailsLayout.setSpacing(8)
self.licenseDetailsLayout.setObjectName(u'LicenseDetailsLayout') self.licenseDetailsLayout.setObjectName(u'LicenseDetailsLayout')
self.versionNameLabel = QtGui.QLabel(self.licenseDetailsPage) self.versionNameLabel = QtGui.QLabel(self.licenseDetailsPage)
self.versionNameLabel.setObjectName(u'VersionNameLabel') self.versionNameLabel.setObjectName(u'VersionNameLabel')
@ -320,29 +267,24 @@ class Ui_BibleImportWizard(object):
self.licenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.licenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.permissionsEdit) self.permissionsEdit)
bibleImportWizard.addPage(self.licenseDetailsPage) bibleImportWizard.addPage(self.licenseDetailsPage)
# Progress page # Progress Page
self.importPage = QtGui.QWizardPage() self.importPage = QtGui.QWizardPage()
self.importPage.setObjectName(u'ImportPage') self.importPage.setObjectName(u'ImportPage')
self.importLayout = QtGui.QVBoxLayout(self.importPage) self.importLayout = QtGui.QVBoxLayout(self.importPage)
self.importLayout.setSpacing(8) self.importLayout.setMargin(48)
self.importLayout.setMargin(50)
self.importLayout.setObjectName(u'ImportLayout') self.importLayout.setObjectName(u'ImportLayout')
self.importProgressLabel = QtGui.QLabel(self.importPage) self.importProgressLabel = QtGui.QLabel(self.importPage)
self.importProgressLabel.setObjectName(u'ImportProgressLabel') self.importProgressLabel.setObjectName(u'ImportProgressLabel')
self.importLayout.addWidget(self.importProgressLabel) self.importLayout.addWidget(self.importProgressLabel)
self.importProgressBar = QtGui.QProgressBar(self.importPage) self.importProgressBar = QtGui.QProgressBar(self.importPage)
self.importProgressBar.setValue(0)
self.importProgressBar.setObjectName(u'ImportProgressBar') self.importProgressBar.setObjectName(u'ImportProgressBar')
self.importLayout.addWidget(self.importProgressBar) self.importLayout.addWidget(self.importProgressBar)
bibleImportWizard.addPage(self.importPage) bibleImportWizard.addPage(self.importPage)
self.retranslateUi(bibleImportWizard) self.retranslateUi(bibleImportWizard)
self.formatWidget.setCurrentIndex(0)
self.webDownloadTabWidget.setCurrentIndex(0)
QtCore.QObject.connect(self.formatComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.formatWidget.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(bibleImportWizard) QtCore.QMetaObject.connectSlotsByName(bibleImportWizard)
QtCore.QObject.connect(self.formatComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), self.selectStack,
QtCore.SLOT(u'setCurrentIndex(int)'))
def retranslateUi(self, bibleImportWizard): def retranslateUi(self, bibleImportWizard):
bibleImportWizard.setWindowTitle( bibleImportWizard.setWindowTitle(
@ -373,37 +315,37 @@ class Ui_BibleImportWizard(object):
translate('BiblesPlugin.ImportWizardForm', 'Web Download')) translate('BiblesPlugin.ImportWizardForm', 'Web Download'))
self.formatComboBox.setItemText(4, self.formatComboBox.setItemText(4,
translate('BiblesPlugin.ImportWizardForm', 'openlp.org 1.x')) translate('BiblesPlugin.ImportWizardForm', 'openlp.org 1.x'))
self.openlp1LocationLabel.setText( self.openlp1FileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'File location:')) translate('BiblesPlugin.ImportWizardForm', 'File location:'))
self.osisLocationLabel.setText( self.osisFileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'File location:')) translate('BiblesPlugin.ImportWizardForm', 'File location:'))
self.booksLocationLabel.setText( self.csvBooksLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Books location:')) translate('BiblesPlugin.ImportWizardForm', 'Books location:'))
self.verseLocationLabel.setText( self.csvVersesLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Verse location:')) translate('BiblesPlugin.ImportWizardForm', 'Verse location:'))
self.openSongFileLabel.setText( self.openSongFileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Bible filename:')) translate('BiblesPlugin.ImportWizardForm', 'Bible filename:'))
self.locationLabel.setText( self.webSourceLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Location:')) translate('BiblesPlugin.ImportWizardForm', 'Location:'))
self.locationComboBox.setItemText(0, self.webSourceComboBox.setItemText(0,
translate('BiblesPlugin.ImportWizardForm', 'Crosswalk')) translate('BiblesPlugin.ImportWizardForm', 'Crosswalk'))
self.locationComboBox.setItemText(1, self.webSourceComboBox.setItemText(1,
translate('BiblesPlugin.ImportWizardForm', 'BibleGateway')) translate('BiblesPlugin.ImportWizardForm', 'BibleGateway'))
self.locationComboBox.setItemText(2, self.webSourceComboBox.setItemText(2,
translate('BiblesPlugin.ImportWizardForm', 'Bibleserver')) translate('BiblesPlugin.ImportWizardForm', 'Bibleserver'))
self.bibleLabel.setText( self.webTranslationLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Bible:')) translate('BiblesPlugin.ImportWizardForm', 'Bible:'))
self.webDownloadTabWidget.setTabText( self.webTabWidget.setTabText(
self.webDownloadTabWidget.indexOf(self.downloadOptionsTab), self.webTabWidget.indexOf(self.webBibleTab),
translate('BiblesPlugin.ImportWizardForm', 'Download Options')) translate('BiblesPlugin.ImportWizardForm', 'Download Options'))
self.addressLabel.setText( self.webServerLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Server:')) translate('BiblesPlugin.ImportWizardForm', 'Server:'))
self.usernameLabel.setText( self.webUserLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Username:')) translate('BiblesPlugin.ImportWizardForm', 'Username:'))
self.passwordLabel.setText( self.webPasswordLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Password:')) translate('BiblesPlugin.ImportWizardForm', 'Password:'))
self.webDownloadTabWidget.setTabText( self.webTabWidget.setTabText(
self.webDownloadTabWidget.indexOf(self.proxyServerTab), self.webTabWidget.indexOf(self.webProxyTab),
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
'Proxy Server (Optional)')) 'Proxy Server (Optional)'))
self.licenseDetailsPage.setTitle( self.licenseDetailsPage.setTitle(
@ -429,4 +371,21 @@ class Ui_BibleImportWizard(object):
translate('BiblesPlugin.ImportWizardForm', 'The openlp.org 1.x ' translate('BiblesPlugin.ImportWizardForm', 'The openlp.org 1.x '
'importer has been disabled due to a missing Python module. If ' 'importer has been disabled due to a missing Python module. If '
'you want to use this importer, you will need to install the ' 'you want to use this importer, you will need to install the '
'"python-sqlite" module.')) '"python-sqlite" module.'))
# Align all QFormLayouts towards each other.
width = max(self.formatLabel.minimumSizeHint().width(),
self.osisFileLabel.minimumSizeHint().width())
width = max(width, self.csvBooksLabel.minimumSizeHint().width())
width = max(width, self.csvVersesLabel.minimumSizeHint().width())
width = max(width, self.openSongFileLabel.minimumSizeHint().width())
width = max(width, self.openlp1FileLabel.minimumSizeHint().width())
self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.osisSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.csvSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.openSongSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.openlp1Spacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)

View File

@ -77,9 +77,9 @@ def parse_reference(reference):
- After a verse reference all further single values are treat as verse in - After a verse reference all further single values are treat as verse in
the last selected chapter. the last selected chapter.
``John 3:16-18`` refers to John chapter 3 verses 16 to 18 ``John 3:16-18`` refers to John chapter 3 verses 16 to 18
- After a list separator it is possible to refer to additional verses. They - After a list separator it is possible to refer to additional verses. They
are build analog to the first ones. This way it is possible to define each are build analog to the first ones. This way it is possible to define
number of verse references. It is not possible to refer to verses in each number of verse references. It is not possible to refer to verses in
additional books. additional books.
``John 3:16,18`` refers to John chapter 3 verses 16 and 18 ``John 3:16,18`` refers to John chapter 3 verses 16 and 18
``John 3:16-18,20`` refers to John chapter 3 verses 16 to 18 and 20 ``John 3:16-18,20`` refers to John chapter 3 verses 16 to 18 and 20
@ -96,7 +96,7 @@ def parse_reference(reference):
a verse separator. a verse separator.
2. ``(?P<from_verse>[0-9]+)`` 2. ``(?P<from_verse>[0-9]+)``
The verse reference ``from_verse`` is manditory The verse reference ``from_verse`` is manditory
3. ``(?P<range_to>%(sep_r)s(?:`` ... ``|%(sep_e)s)?)?`` 3. ``(?P<range_to>%(sep_r)s(?:`` ... ``|%(sep_e)s)?)?``
A ``range_to`` declaration is optional. It starts with a range separator A ``range_to`` declaration is optional. It starts with a range separator
and contains optional a chapter and verse declaration or a end and contains optional a chapter and verse declaration or a end
separator. separator.
@ -105,15 +105,15 @@ def parse_reference(reference):
5. ``(?P<to_verse>[0-9]+)`` 5. ``(?P<to_verse>[0-9]+)``
The ``to_verse`` reference is equivalent to group 2. The ``to_verse`` reference is equivalent to group 2.
The full reference is matched against get_reference_match(u'full'). This The full reference is matched against get_reference_match(u'full'). This
regular expression looks like this: regular expression looks like this:
1. ``^\s*(?!\s)(?P<book>[\d]*[^\d]+)(?<!\s)\s*`` 1. ``^\s*(?!\s)(?P<book>[\d]*[^\d]+)(?<!\s)\s*``
The ``book`` group starts with the first non-whitespace character. There The ``book`` group starts with the first non-whitespace character. There
are optional leading digits followed by non-digits. The group ends are optional leading digits followed by non-digits. The group ends
before the whitspace in front of the next digit. before the whitspace in front of the next digit.
2. ``(?P<ranges>(?:`` + range_string + ``(?:%(sep_l)s|(?=\s*$)))+)\s*$`` 2. ``(?P<ranges>(?:`` + range_string + ``(?:%(sep_l)s|(?=\s*$)))+)\s*$``
The second group contains all ``ranges``. This can be multiple The second group contains all ``ranges``. This can be multiple
declarations of a range_string separated by a list separator. declarations of a range_string separated by a list separator.
The reference list is a list of tuples, with each tuple structured like The reference list is a list of tuples, with each tuple structured like
@ -126,7 +126,7 @@ def parse_reference(reference):
Returns None or a reference list. Returns None or a reference list.
""" """
log.debug('parse_reference("%s")', reference) log.debug(u'parse_reference("%s")', reference)
match = get_reference_match(u'full').match(reference) match = get_reference_match(u'full').match(reference)
if match: if match:
log.debug(u'Matched reference %s' % reference) log.debug(u'Matched reference %s' % reference)
@ -194,7 +194,7 @@ def parse_reference(reference):
class SearchResults(object): class SearchResults(object):
""" """
Encapsulate a set of search results. This is Bible-type independent. Encapsulate a set of search results. This is Bible-type independent.
""" """
def __init__(self, book, chapter, verselist): def __init__(self, book, chapter, verselist):
""" """
@ -222,4 +222,4 @@ class SearchResults(object):
from manager import BibleManager from manager import BibleManager
from biblestab import BiblesTab from biblestab import BiblesTab
from mediaitem import BibleMediaItem from mediaitem import BibleMediaItem

View File

@ -72,7 +72,7 @@ class CSVBible(BibleDB):
self.create_book(unicode(line[1], details['encoding']), self.create_book(unicode(line[1], details['encoding']),
line[2], int(line[0])) line[2], int(line[0]))
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
except IOError: except IOError, IndexError:
log.exception(u'Loading books from file failed') log.exception(u'Loading books from file failed')
success = False success = False
finally: finally:
@ -86,15 +86,17 @@ class CSVBible(BibleDB):
verse_file.seek(0) verse_file.seek(0)
verse_reader = csv.reader(verse_file, dialect) verse_reader = csv.reader(verse_file, dialect)
for line in verse_reader: for line in verse_reader:
if self.stop_import_flag: # cancel pressed if self.stop_import_flag:
# cancel pressed
break break
details = chardet.detect(line[3]) details = chardet.detect(line[3])
if book_ptr != line[0]: if book_ptr != line[0]:
book = self.get_book(line[0]) book = self.get_book(line[0])
book_ptr = book.name book_ptr = book.name
self.wizard.incrementProgressBar(u'%s %s %s...' % ( self.wizard.incrementProgressBar(unicode(translate(
translate('BiblesPlugin.CSVImport', 'Importing'), 'BiblesPlugin.CSVImport', 'Importing %s %s...',
book.name, line[1])) 'Importing <book name> <chapter>...')) %
(book.name, int(line[1])))
self.session.commit() self.session.commit()
self.create_verse(book.id, line[1], line[2], self.create_verse(book.id, line[1], line[2],
unicode(line[3], details['encoding'])) unicode(line[3], details['encoding']))
@ -109,4 +111,4 @@ class CSVBible(BibleDB):
if self.stop_import_flag: if self.stop_import_flag:
return False return False
else: else:
return success return success

View File

@ -166,7 +166,7 @@ class BibleDB(QtCore.QObject, Manager):
""" """
Stops the import of the Bible. Stops the import of the Bible.
""" """
log.debug('Stopping import') log.debug(u'Stopping import')
self.stop_import_flag = True self.stop_import_flag = True
def get_name(self): def get_name(self):
@ -430,9 +430,9 @@ class BibleDB(QtCore.QObject, Manager):
Utility debugging method to dump the contents of a bible. Utility debugging method to dump the contents of a bible.
""" """
log.debug(u'.........Dumping Bible Database') log.debug(u'.........Dumping Bible Database')
log.debug('...............................Books ') log.debug(u'...............................Books ')
books = self.session.query(Book).all() books = self.session.query(Book).all()
log.debug(books) log.debug(books)
log.debug(u'...............................Verses ') log.debug(u'...............................Verses ')
verses = self.session.query(Verse).all() verses = self.session.query(Verse).all()
log.debug(verses) log.debug(verses)

View File

@ -447,7 +447,7 @@ class HTTPBible(BibleDB):
[(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)]
""" """
for reference in reference_list: for reference in reference_list:
log.debug('Reference: %s', reference) log.debug(u'Reference: %s', reference)
book = reference[0] book = reference[0]
db_book = self.get_book(book) db_book = self.get_book(book)
if not db_book: if not db_book:
@ -522,4 +522,4 @@ class HTTPBible(BibleDB):
``chapter`` ``chapter``
The chapter whose verses are being counted. The chapter whose verses are being counted.
""" """
return HTTPBooks.get_verse_count(book, chapter) return HTTPBooks.get_verse_count(book, chapter)

View File

@ -912,7 +912,7 @@ class BibleMediaItem(MediaManagerItem):
old_chapter != chapter: old_chapter != chapter:
verse_text = unicode(chapter) + verse_separator + unicode(verse) verse_text = unicode(chapter) + verse_separator + unicode(verse)
else: else:
verse_text = u'%s' % verse verse_text = unicode(verse)
if self.parent.settings_tab.display_style == 1: if self.parent.settings_tab.display_style == 1:
verse_text = u'{su}(' + verse_text + u'){/su}' verse_text = u'{su}(' + verse_text + u'){/su}'
elif self.parent.settings_tab.display_style == 2: elif self.parent.settings_tab.display_style == 2:
@ -921,4 +921,4 @@ class BibleMediaItem(MediaManagerItem):
verse_text = u'{su}[' + verse_text + u']{/su}' verse_text = u'{su}[' + verse_text + u']{/su}'
else: else:
verse_text = u'{su}' + verse_text + u'{/su}' verse_text = u'{su}' + verse_text + u'{/su}'
return verse_text return verse_text

View File

@ -73,8 +73,8 @@ class OpenLP1Bible(BibleDB):
abbreviation = unicode(book[3], u'cp1252') abbreviation = unicode(book[3], u'cp1252')
self.create_book(name, abbreviation, testament_id) self.create_book(name, abbreviation, testament_id)
# Update the progess bar. # Update the progess bar.
self.wizard.incrementProgressBar(u'%s %s...' % (translate( self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.OpenLP1Import', 'Importing'), name)) 'BiblesPlugin.OpenLP1Import', 'Importing %s...')) % name)
# Import the verses for this book. # Import the verses for this book.
cursor.execute(u'SELECT chapter, verse, text || \'\' AS text FROM ' cursor.execute(u'SELECT chapter, verse, text || \'\' AS text FROM '
'verse WHERE book_id=%s' % book_id) 'verse WHERE book_id=%s' % book_id)
@ -90,4 +90,4 @@ class OpenLP1Bible(BibleDB):
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
self.session.commit() self.session.commit()
connection.close() connection.close()
return True return True

View File

@ -84,11 +84,12 @@ class OpenSongBible(BibleDB):
unicode(verse.text) unicode(verse.text)
) )
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
self.wizard.incrementProgressBar(u'%s %s %s...' % ( self.wizard.incrementProgressBar(unicode(translate(
translate('BiblesPlugin.Opensong', 'Importing'), 'BiblesPlugin.Opensong', 'Importing %s %s...',
db_book.name, chapter.attrib[u'n'])) 'Importing <book name> <chapter>...')) %
(db_book.name, int(chapter.attrib[u'n'])))
self.session.commit() self.session.commit()
except IOError: except IOError, AttributeError:
log.exception(u'Loading bible from OpenSong file failed') log.exception(u'Loading bible from OpenSong file failed')
success = False success = False
finally: finally:
@ -97,4 +98,4 @@ class OpenSongBible(BibleDB):
if self.stop_import_flag: if self.stop_import_flag:
return False return False
else: else:
return success return success

View File

@ -125,7 +125,7 @@ class OSISBible(BibleDB):
verse = int(match.group(3)) verse = int(match.group(3))
verse_text = match.group(4) verse_text = match.group(4)
if not db_book or db_book.name != self.books[book][0]: if not db_book or db_book.name != self.books[book][0]:
log.debug('New book: "%s"', self.books[book][0]) log.debug(u'New book: "%s"', self.books[book][0])
if book == u'Matt': if book == u'Matt':
testament += 1 testament += 1
db_book = self.create_book( db_book = self.create_book(
@ -140,9 +140,10 @@ class OSISBible(BibleDB):
if last_chapter != chapter: if last_chapter != chapter:
if last_chapter != 0: if last_chapter != 0:
self.session.commit() self.session.commit()
self.wizard.incrementProgressBar(u'%s %s %s...' % ( self.wizard.incrementProgressBar(unicode(translate(
translate('BiblesPlugin.OsisImport', 'Importing'), 'BiblesPlugin.OsisImport', 'Importing %s %s...',
self.books[match.group(1)][0], chapter)) 'Importing <book name> <chapter>...')) %
(self.books[match.group(1)][0], chapter))
last_chapter = chapter last_chapter = chapter
# All of this rigmarol below is because the mod2osis # All of this rigmarol below is because the mod2osis
# tool from the Sword library embeds XML in the OSIS # tool from the Sword library embeds XML in the OSIS
@ -180,4 +181,4 @@ class OSISBible(BibleDB):
if self.stop_import_flag: if self.stop_import_flag:
return False return False
else: else:
return success return success

View File

@ -104,57 +104,57 @@ class CustomPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('CustomsPlugin', 'Custom'), u'singular': translate('CustomsPlugin', 'Custom', 'name singular'),
u'plural': translate('CustomsPlugin', 'Customs') u'plural': translate('CustomsPlugin', 'Customs', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('CustomsPlugin', 'Custom') u'title': translate('CustomsPlugin', 'Custom', 'container title')
} }
# Middle Header Bar # Middle Header Bar
## Import Button ## ## Import Action ##
self.textStrings[StringContent.Import] = { self.textStrings[StringContent.Import] = {
u'title': translate('CustomsPlugin', 'Import'), u'title': translate('CustomsPlugin', 'Import'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Import a Custom') 'Import a Custom')
} }
## Load Button ## ## Load Action ##
self.textStrings[StringContent.Load] = { self.textStrings[StringContent.Load] = {
u'title': translate('CustomsPlugin', 'Load'), u'title': translate('CustomsPlugin', 'Load'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Load a new Custom') 'Load a new Custom')
} }
## New Button ## ## New Action ##
self.textStrings[StringContent.New] = { self.textStrings[StringContent.New] = {
u'title': translate('CustomsPlugin', 'Add'), u'title': translate('CustomsPlugin', 'Add'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Add a new Custom') 'Add a new Custom')
} }
## Edit Button ## ## Edit Action ##
self.textStrings[StringContent.Edit] = { self.textStrings[StringContent.Edit] = {
u'title': translate('CustomsPlugin', 'Edit'), u'title': translate('CustomsPlugin', 'Edit'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Edit the selected Custom') 'Edit the selected Custom')
} }
## Delete Button ## ## Delete Action ##
self.textStrings[StringContent.Delete] = { self.textStrings[StringContent.Delete] = {
u'title': translate('CustomsPlugin', 'Delete'), u'title': translate('CustomsPlugin', 'Delete'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Delete the selected Custom') 'Delete the selected Custom')
} }
## Preview ## ## Preview Action ##
self.textStrings[StringContent.Preview] = { self.textStrings[StringContent.Preview] = {
u'title': translate('CustomsPlugin', 'Preview'), u'title': translate('CustomsPlugin', 'Preview'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Preview the selected Custom') 'Preview the selected Custom')
} }
## Live Button ## ## Send Live Action ##
self.textStrings[StringContent.Live] = { self.textStrings[StringContent.Live] = {
u'title': translate('CustomsPlugin', 'Live'), u'title': translate('CustomsPlugin', 'Live'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
'Send the selected Custom live') 'Send the selected Custom live')
} }
## Add to service Button ## ## Add to Service Action ##
self.textStrings[StringContent.Service] = { self.textStrings[StringContent.Service] = {
u'title': translate('CustomsPlugin', 'Service'), u'title': translate('CustomsPlugin', 'Service'),
u'tooltip': translate('CustomsPlugin', u'tooltip': translate('CustomsPlugin',
@ -167,4 +167,4 @@ class CustomPlugin(Plugin):
""" """
log.info(u'Custom Finalising') log.info(u'Custom Finalising')
self.manager.finalise() self.manager.finalise()
Plugin.finalise(self) Plugin.finalise(self)

View File

@ -64,12 +64,12 @@ class ImagePlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('ImagePlugin', 'Image'), u'singular': translate('ImagePlugin', 'Image', 'name singular'),
u'plural': translate('ImagePlugin', 'Images') u'plural': translate('ImagePlugin', 'Images', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('ImagePlugin', 'Images') u'title': translate('ImagePlugin', 'Images', 'container title')
} }
# Middle Header Bar # Middle Header Bar
## Load Button ## ## Load Button ##
@ -113,4 +113,4 @@ class ImagePlugin(Plugin):
u'title': translate('ImagePlugin', 'Service'), u'title': translate('ImagePlugin', 'Service'),
u'tooltip': translate('ImagePlugin', u'tooltip': translate('ImagePlugin',
'Add the selected Image to the service') 'Add the selected Image to the service')
} }

View File

@ -109,7 +109,7 @@ class ImageMediaItem(MediaManagerItem):
translate('ImagePlugin.MediaItem', 'Replace Live Background'), translate('ImagePlugin.MediaItem', 'Replace Live Background'),
self.onReplaceClick, False) self.onReplaceClick, False)
self.resetButton = self.toolbar.addToolbarButton( self.resetButton = self.toolbar.addToolbarButton(
translate('ImagePlugin.MediaItem', u'Reset Background'), translate('ImagePlugin.MediaItem', 'Reset Background'),
u':/system/system_close.png', u':/system/system_close.png',
translate('ImagePlugin.MediaItem', 'Reset Live Background'), translate('ImagePlugin.MediaItem', 'Reset Live Background'),
self.onResetClick, False) self.onResetClick, False)

View File

@ -30,7 +30,7 @@ import os
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
ItemCapabilities, SettingsManager, translate, check_item_selected, \ ItemCapabilities, SettingsManager, translate, check_item_selected, \
context_menu_action context_menu_action
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -60,10 +60,9 @@ class MediaMediaItem(MediaManagerItem):
def retranslateUi(self): def retranslateUi(self):
self.OnNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') self.OnNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media')
self.OnNewFileMasks = translate('MediaPlugin.MediaItem', self.OnNewFileMasks = unicode(translate('MediaPlugin.MediaItem',
u'Videos (%s);;' 'Videos (%s);;Audio (%s);;All files (*)')) % \
u'Audio (%s);;' (self.parent.video_list, self.parent.audio_list)
u'All files (*)' % (self.parent.video_list, self.parent.audio_list))
def requiredIcons(self): def requiredIcons(self):
MediaManagerItem.requiredIcons(self) MediaManagerItem.requiredIcons(self)

View File

@ -65,7 +65,7 @@ class MediaPlugin(Plugin):
def _addToList(self, list, value, mimetype): def _addToList(self, list, value, mimetype):
# Is it a media type # Is it a media type
if len(value) == 2: if len(value) == 2:
extensions = mimetypes.guess_all_extensions(unicode(mimetype)) extensions = mimetypes.guess_all_extensions(unicode(mimetype))
# we have an extension # we have an extension
if extensions: if extensions:
for extension in extensions: for extension in extensions:
@ -93,53 +93,53 @@ class MediaPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('MediaPlugin', 'Media'), u'singular': translate('MediaPlugin', 'Media', 'name singular'),
u'plural': translate('MediaPlugin', 'Media') u'plural': translate('MediaPlugin', 'Media', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('MediaPlugin', 'Media') u'title': translate('MediaPlugin', 'Media', 'container title')
} }
# Middle Header Bar # Middle Header Bar
## Load Button ## ## Load Action ##
self.textStrings[StringContent.Load] = { self.textStrings[StringContent.Load] = {
u'title': translate('MediaPlugin', 'Load'), u'title': translate('MediaPlugin', 'Load'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Load a new Media') 'Load a new Media')
} }
## New Button ## ## New Action ##
self.textStrings[StringContent.New] = { self.textStrings[StringContent.New] = {
u'title': translate('MediaPlugin', 'Add'), u'title': translate('MediaPlugin', 'Add'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Add a new Media') 'Add a new Media')
} }
## Edit Button ## ## Edit Action ##
self.textStrings[StringContent.Edit] = { self.textStrings[StringContent.Edit] = {
u'title': translate('MediaPlugin', 'Edit'), u'title': translate('MediaPlugin', 'Edit'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Edit the selected Media') 'Edit the selected Media')
} }
## Delete Button ## ## Delete Action ##
self.textStrings[StringContent.Delete] = { self.textStrings[StringContent.Delete] = {
u'title': translate('MediaPlugin', 'Delete'), u'title': translate('MediaPlugin', 'Delete'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Delete the selected Media') 'Delete the selected Media')
} }
## Preview ## ## Preview Action ##
self.textStrings[StringContent.Preview] = { self.textStrings[StringContent.Preview] = {
u'title': translate('MediaPlugin', 'Preview'), u'title': translate('MediaPlugin', 'Preview'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Preview the selected Media') 'Preview the selected Media')
} }
## Live Button ## ## Send Live Action ##
self.textStrings[StringContent.Live] = { self.textStrings[StringContent.Live] = {
u'title': translate('MediaPlugin', 'Live'), u'title': translate('MediaPlugin', 'Live'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Send the selected Media live') 'Send the selected Media live')
} }
## Add to service Button ## ## Add to Service Action ##
self.textStrings[StringContent.Service] = { self.textStrings[StringContent.Service] = {
u'title': translate('MediaPlugin', 'Service'), u'title': translate('MediaPlugin', 'Service'),
u'tooltip': translate('MediaPlugin', u'tooltip': translate('MediaPlugin',
'Add the selected Media to the service') 'Add the selected Media to the service')
} }

View File

@ -30,7 +30,7 @@ import os
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
SettingsManager, translate, check_item_selected, Receiver SettingsManager, translate, check_item_selected, Receiver, ItemCapabilities
from openlp.plugins.presentations.lib import MessageListener from openlp.plugins.presentations.lib import MessageListener
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -90,8 +90,8 @@ class PresentationMediaItem(MediaManagerItem):
if fileType.find(type) == -1: if fileType.find(type) == -1:
fileType += u'*.%s ' % type fileType += u'*.%s ' % type
self.parent.serviceManager.supportedSuffixes(type) self.parent.serviceManager.supportedSuffixes(type)
self.OnNewFileMasks = translate('PresentationPlugin.MediaItem', self.OnNewFileMasks = unicode(translate('PresentationPlugin.MediaItem',
'Presentations (%s)' % fileType) 'Presentations (%s)')) % fileType
def requiredIcons(self): def requiredIcons(self):
""" """
@ -249,6 +249,7 @@ class PresentationMediaItem(MediaManagerItem):
return False return False
service_item.title = unicode(self.DisplayTypeComboBox.currentText()) service_item.title = unicode(self.DisplayTypeComboBox.currentText())
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText()) service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
shortname = service_item.shortname shortname = service_item.shortname
if shortname: if shortname:
for item in items: for item in items:

View File

@ -90,7 +90,7 @@ class Controller(object):
""" """
Go to a specific slide Go to a specific slide
""" """
log.debug(u'Live = %s, slide' % self.is_live) log.debug(u'Live = %s, slide' % self.is_live)
if not self.is_live: if not self.is_live:
return return
if self.doc.is_blank(): if self.doc.is_blank():
@ -249,7 +249,7 @@ class MessageListener(object):
self.timer = QtCore.QTimer() self.timer = QtCore.QTimer()
self.timer.setInterval(500) self.timer.setInterval(500)
QtCore.QObject.connect( QtCore.QObject.connect(
self.timer, QtCore.SIGNAL("timeout()"), self.timeout) self.timer, QtCore.SIGNAL(u'timeout()'), self.timeout)
def startup(self, message): def startup(self, message):
""" """
@ -367,4 +367,4 @@ class MessageListener(object):
to check which slide is currently displayed so the slidecontroller to check which slide is currently displayed so the slidecontroller
view can be updated view can be updated
""" """
self.live_handler.poll() self.live_handler.poll()

View File

@ -152,41 +152,44 @@ class PresentationPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('PresentationPlugin', 'Presentation'), u'singular': translate('PresentationPlugin', 'Presentation',
u'plural': translate('PresentationPlugin', 'Presentations') 'name singular'),
u'plural': translate('PresentationPlugin', 'Presentations',
'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('PresentationPlugin', 'Presentations') u'title': translate('PresentationPlugin', 'Presentations',
'container title')
} }
# Middle Header Bar # Middle Header Bar
## Load Button ## ## Load Action ##
self.textStrings[StringContent.Load] = { self.textStrings[StringContent.Load] = {
u'title': translate('PresentationPlugin', 'Load'), u'title': translate('PresentationPlugin', 'Load'),
u'tooltip': translate('PresentationPlugin', u'tooltip': translate('PresentationPlugin',
'Load a new Presentation') 'Load a new Presentation')
} }
## Delete Button ## ## Delete Action ##
self.textStrings[StringContent.Delete] = { self.textStrings[StringContent.Delete] = {
u'title': translate('PresentationPlugin', 'Delete'), u'title': translate('PresentationPlugin', 'Delete'),
u'tooltip': translate('PresentationPlugin', u'tooltip': translate('PresentationPlugin',
'Delete the selected Presentation') 'Delete the selected Presentation')
} }
## Preview ## ## Preview Action ##
self.textStrings[StringContent.Preview] = { self.textStrings[StringContent.Preview] = {
u'title': translate('PresentationPlugin', 'Preview'), u'title': translate('PresentationPlugin', 'Preview'),
u'tooltip': translate('PresentationPlugin', u'tooltip': translate('PresentationPlugin',
'Preview the selected Presentation') 'Preview the selected Presentation')
} }
## Live Button ## ## Send Live Action ##
self.textStrings[StringContent.Live] = { self.textStrings[StringContent.Live] = {
u'title': translate('PresentationPlugin', 'Live'), u'title': translate('PresentationPlugin', 'Live'),
u'tooltip': translate('PresentationPlugin', u'tooltip': translate('PresentationPlugin',
'Send the selected Presentation live') 'Send the selected Presentation live')
} }
## Add to service Button ## ## Add to Service Action ##
self.textStrings[StringContent.Service] = { self.textStrings[StringContent.Service] = {
u'title': translate('PresentationPlugin', 'Service'), u'title': translate('PresentationPlugin', 'Service'),
u'tooltip': translate('PresentationPlugin', u'tooltip': translate('PresentationPlugin',
'Add the selected Presentation to the service') 'Add the selected Presentation to the service')
} }

View File

@ -84,10 +84,10 @@ class RemotesPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('RemotePlugin', 'Remote'), u'singular': translate('RemotePlugin', 'Remote', 'name singular'),
u'plural': translate('RemotePlugin', 'Remotes') u'plural': translate('RemotePlugin', 'Remotes', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('RemotePlugin', 'Remote') u'title': translate('RemotePlugin', 'Remote', 'container title')
} }

View File

@ -133,8 +133,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
""" """
Stop the import on cancel button, close button or ESC key. Stop the import on cancel button, close button or ESC key.
""" """
log.debug('Import canceled by user.') log.debug(u'Import canceled by user.')
if self.currentId() == 2: if self.currentPage() == self.importPage:
Receiver.send_message(u'songs_stop_import') Receiver.send_message(u'songs_stop_import')
self.done(QtGui.QDialog.Rejected) self.done(QtGui.QDialog.Rejected)
@ -142,11 +142,9 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
""" """
Validate the current page before moving on to the next page. Validate the current page before moving on to the next page.
""" """
if self.currentId() == 0: if self.currentPage() == self.welcomePage:
# Welcome page
return True return True
elif self.currentId() == 1: elif self.currentPage() == self.sourcePage:
# Select page
source_format = self.formatComboBox.currentIndex() source_format = self.formatComboBox.currentIndex()
if source_format == SongFormat.OpenLP2: if source_format == SongFormat.OpenLP2:
if self.openLP2FilenameEdit.text().isEmpty(): if self.openLP2FilenameEdit.text().isEmpty():
@ -250,8 +248,7 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
self.songBeamerAddButton.setFocus() self.songBeamerAddButton.setFocus()
return False return False
return True return True
elif self.currentId() == 2: elif self.currentPage() == self.importPage:
# Progress page
return True return True
def getFileName(self, title, editbox, filters=u''): def getFileName(self, title, editbox, filters=u''):
@ -275,8 +272,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm', filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm',
'All Files') 'All Files')
filename = QtGui.QFileDialog.getOpenFileName(self, title, filename = QtGui.QFileDialog.getOpenFileName(self, title,
os.path.dirname(SettingsManager.get_last_dir( SettingsManager.get_last_dir(self.plugin.settingsSection, 1),
self.plugin.settingsSection, 1)), filters) filters)
if filename: if filename:
editbox.setText(filename) editbox.setText(filename)
SettingsManager.set_last_dir(self.plugin.settingsSection, SettingsManager.set_last_dir(self.plugin.settingsSection,
@ -303,8 +300,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm', filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm',
'All Files') 'All Files')
filenames = QtGui.QFileDialog.getOpenFileNames(self, title, filenames = QtGui.QFileDialog.getOpenFileNames(self, title,
os.path.dirname(SettingsManager.get_last_dir( SettingsManager.get_last_dir(self.plugin.settingsSection, 1),
self.plugin.settingsSection, 1)), filters) filters)
if filenames: if filenames:
listbox.addItems(filenames) listbox.addItems(filenames)
SettingsManager.set_last_dir( SettingsManager.set_last_dir(
@ -423,7 +420,7 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
self.removeSelectedItems(self.songBeamerFileListWidget) self.removeSelectedItems(self.songBeamerFileListWidget)
def onCurrentIdChanged(self, id): def onCurrentIdChanged(self, id):
if id == 2: if self.page(id) == self.importPage:
self.preImport() self.preImport()
self.performImport() self.performImport()
self.postImport() self.postImport()
@ -540,4 +537,4 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
self.importProgressBar.setValue(self.importProgressBar.maximum()) self.importProgressBar.setValue(self.importProgressBar.maximum())
self.finishButton.setVisible(True) self.finishButton.setVisible(True)
self.cancelButton.setVisible(False) self.cancelButton.setVisible(False)
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')

View File

@ -33,68 +33,48 @@ class Ui_SongImportWizard(object):
self.openIcon = build_icon(u':/general/general_open.png') self.openIcon = build_icon(u':/general/general_open.png')
self.deleteIcon = build_icon(u':/general/general_delete.png') self.deleteIcon = build_icon(u':/general/general_delete.png')
songImportWizard.setObjectName(u'songImportWizard') songImportWizard.setObjectName(u'songImportWizard')
songImportWizard.resize(550, 386)
songImportWizard.setModal(True) songImportWizard.setModal(True)
songImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle) songImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
songImportWizard.setOptions( songImportWizard.setOptions(
QtGui.QWizard.IndependentPages | QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage | QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.NoBackButtonOnLastPage) QtGui.QWizard.NoBackButtonOnLastPage)
# Welcome Page
self.welcomePage = QtGui.QWizardPage() self.welcomePage = QtGui.QWizardPage()
self.welcomePage.setObjectName(u'welcomePage')
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap, self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_importsong.bmp')) QtGui.QPixmap(u':/wizards/wizard_importsong.bmp'))
self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage) self.welcomePage.setObjectName(u'WelcomePage')
self.welcomeLayout.setSpacing(8) self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
self.welcomeLayout.setMargin(0) self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.welcomeLayout.setObjectName(u'welcomeLayout')
self.welcomeTextLayout = QtGui.QVBoxLayout()
self.welcomeTextLayout.setSpacing(8)
self.welcomeTextLayout.setObjectName(u'welcomeTextLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage) self.titleLabel = QtGui.QLabel(self.welcomePage)
self.titleLabel.setObjectName(u'TitleLabel') self.titleLabel.setObjectName(u'TitleLabel')
self.welcomeTextLayout.addWidget(self.titleLabel) self.welcomeLayout.addWidget(self.titleLabel)
self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40, self.welcomeLayout.addSpacing(40)
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.welcomeTextLayout.addItem(self.welcomeTopSpacer)
self.informationLabel = QtGui.QLabel(self.welcomePage) self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True) self.informationLabel.setWordWrap(True)
self.informationLabel.setMargin(10)
self.informationLabel.setObjectName(u'InformationLabel') self.informationLabel.setObjectName(u'InformationLabel')
self.welcomeTextLayout.addWidget(self.informationLabel) self.welcomeLayout.addWidget(self.informationLabel)
self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40, self.welcomeLayout.addStretch()
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.welcomeTextLayout.addItem(self.welcomeBottomSpacer)
self.welcomeLayout.addLayout(self.welcomeTextLayout)
songImportWizard.addPage(self.welcomePage) songImportWizard.addPage(self.welcomePage)
# Source Page
self.sourcePage = QtGui.QWizardPage() self.sourcePage = QtGui.QWizardPage()
self.sourcePage.setObjectName(u'SourcePage') self.sourcePage.setObjectName(u'SourcePage')
self.sourceLayout = QtGui.QVBoxLayout(self.sourcePage) self.sourceLayout = QtGui.QVBoxLayout(self.sourcePage)
self.sourceLayout.setSpacing(8)
self.sourceLayout.setMargin(20)
self.sourceLayout.setObjectName(u'SourceLayout') self.sourceLayout.setObjectName(u'SourceLayout')
self.formatLayout = QtGui.QHBoxLayout() self.formatLayout = QtGui.QFormLayout()
self.formatLayout.setSpacing(8)
self.formatLayout.setObjectName(u'FormatLayout') self.formatLayout.setObjectName(u'FormatLayout')
self.formatLabel = QtGui.QLabel(self.sourcePage) self.formatLabel = QtGui.QLabel(self.sourcePage)
self.formatLabel.setObjectName(u'FormatLabel') self.formatLabel.setObjectName(u'FormatLabel')
self.formatLayout.addWidget(self.formatLabel)
self.formatComboBox = QtGui.QComboBox(self.sourcePage) self.formatComboBox = QtGui.QComboBox(self.sourcePage)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, self.formatComboBox.setObjectName(u'FormatComboBox')
QtGui.QSizePolicy.Fixed) self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
sizePolicy.setHorizontalStretch(0) self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
sizePolicy.setVerticalStretch(0) QtGui.QSizePolicy.Minimum)
sizePolicy.setHeightForWidth( self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
self.formatComboBox.sizePolicy().hasHeightForWidth()) self.formatSpacer)
self.formatComboBox.setSizePolicy(sizePolicy)
self.formatComboBox.setObjectName(u'formatComboBox')
self.formatLayout.addWidget(self.formatComboBox)
self.formatSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.formatLayout.addItem(self.formatSpacer)
self.sourceLayout.addLayout(self.formatLayout) self.sourceLayout.addLayout(self.formatLayout)
self.formatStackedWidget = QtGui.QStackedWidget(self.sourcePage) self.formatStack = QtGui.QStackedLayout()
self.formatStackedWidget.setObjectName(u'FormatStackedWidget') self.formatStack.setObjectName(u'FormatStack')
# OpenLP 2.0 # OpenLP 2.0
self.addSingleFileSelectItem(u'openLP2') self.addSingleFileSelectItem(u'openLP2')
# openlp.org 1.x # openlp.org 1.x
@ -120,28 +100,26 @@ class Ui_SongImportWizard(object):
self.addMultiFileSelectItem(u'songBeamer') self.addMultiFileSelectItem(u'songBeamer')
# Commented out for future use. # Commented out for future use.
# self.addSingleFileSelectItem(u'csv', u'CSV') # self.addSingleFileSelectItem(u'csv', u'CSV')
self.sourceLayout.addWidget(self.formatStackedWidget) self.sourceLayout.addLayout(self.formatStack)
songImportWizard.addPage(self.sourcePage) songImportWizard.addPage(self.sourcePage)
# Import Page
self.importPage = QtGui.QWizardPage() self.importPage = QtGui.QWizardPage()
self.importPage.setObjectName(u'importPage') self.importPage.setObjectName(u'ImportPage')
self.importLayout = QtGui.QVBoxLayout(self.importPage) self.importLayout = QtGui.QVBoxLayout(self.importPage)
self.importLayout.setSpacing(8) self.importLayout.setMargin(48)
self.importLayout.setMargin(50) self.importLayout.setObjectName(u'ImportLayout')
self.importLayout.setObjectName(u'importLayout')
self.importProgressLabel = QtGui.QLabel(self.importPage) self.importProgressLabel = QtGui.QLabel(self.importPage)
self.importProgressLabel.setObjectName(u'importProgressLabel') self.importProgressLabel.setObjectName(u'ImportProgressLabel')
self.importLayout.addWidget(self.importProgressLabel) self.importLayout.addWidget(self.importProgressLabel)
self.importProgressBar = QtGui.QProgressBar(self.importPage) self.importProgressBar = QtGui.QProgressBar(self.importPage)
self.importProgressBar.setProperty(u'value', 0) self.importProgressBar.setObjectName(u'ImportProgressBar')
self.importProgressBar.setInvertedAppearance(False)
self.importProgressBar.setObjectName(u'importProgressBar')
self.importLayout.addWidget(self.importProgressBar) self.importLayout.addWidget(self.importProgressBar)
songImportWizard.addPage(self.importPage) songImportWizard.addPage(self.importPage)
self.retranslateUi(songImportWizard) self.retranslateUi(songImportWizard)
self.formatStackedWidget.setCurrentIndex(0) self.formatStack.setCurrentIndex(0)
QtCore.QObject.connect(self.formatComboBox, QtCore.QObject.connect(self.formatComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'), QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.formatStackedWidget.setCurrentIndex) self.formatStack.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(songImportWizard) QtCore.QMetaObject.connectSlotsByName(songImportWizard)
def retranslateUi(self, songImportWizard): def retranslateUi(self, songImportWizard):
@ -257,6 +235,19 @@ class Ui_SongImportWizard(object):
translate('SongsPlugin.ImportWizardForm', 'Ready.')) translate('SongsPlugin.ImportWizardForm', 'Ready.'))
self.importProgressBar.setFormat( self.importProgressBar.setFormat(
translate('SongsPlugin.ImportWizardForm', '%p%')) translate('SongsPlugin.ImportWizardForm', '%p%'))
# Align all QFormLayouts towards each other.
width = max(self.formatLabel.minimumSizeHint().width(),
self.openLP2FilenameLabel.minimumSizeHint().width())
self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
self.openLP2FormLabelSpacer.changeSize(width, 0,
QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
self.openLP1FormLabelSpacer.changeSize(width, 0,
QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
self.ewFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
# self.csvFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
# QtGui.QSizePolicy.Fixed)
def addSingleFileSelectItem(self, prefix, obj_prefix=None, def addSingleFileSelectItem(self, prefix, obj_prefix=None,
can_disable=False): can_disable=False):
@ -270,16 +261,13 @@ class Ui_SongImportWizard(object):
importWidget = page importWidget = page
importLayout = QtGui.QFormLayout(importWidget) importLayout = QtGui.QFormLayout(importWidget)
importLayout.setMargin(0) importLayout.setMargin(0)
importLayout.setSpacing(8)
if can_disable: if can_disable:
importLayout.setObjectName(obj_prefix + u'ImportLayout') importLayout.setObjectName(obj_prefix + u'ImportLayout')
else: else:
importLayout.setObjectName(obj_prefix + u'Layout') importLayout.setObjectName(obj_prefix + u'Layout')
filenameLabel = QtGui.QLabel(importWidget) filenameLabel = QtGui.QLabel(importWidget)
filenameLabel.setObjectName(obj_prefix + u'FilenameLabel') filenameLabel.setObjectName(obj_prefix + u'FilenameLabel')
importLayout.setWidget(0, QtGui.QFormLayout.LabelRole, filenameLabel)
fileLayout = QtGui.QHBoxLayout() fileLayout = QtGui.QHBoxLayout()
fileLayout.setSpacing(8)
fileLayout.setObjectName(obj_prefix + u'FileLayout') fileLayout.setObjectName(obj_prefix + u'FileLayout')
filenameEdit = QtGui.QLineEdit(importWidget) filenameEdit = QtGui.QLineEdit(importWidget)
filenameEdit.setObjectName(obj_prefix + u'FilenameEdit') filenameEdit.setObjectName(obj_prefix + u'FilenameEdit')
@ -288,10 +276,14 @@ class Ui_SongImportWizard(object):
browseButton.setIcon(self.openIcon) browseButton.setIcon(self.openIcon)
browseButton.setObjectName(obj_prefix + u'BrowseButton') browseButton.setObjectName(obj_prefix + u'BrowseButton')
fileLayout.addWidget(browseButton) fileLayout.addWidget(browseButton)
importLayout.setLayout(0, QtGui.QFormLayout.FieldRole, fileLayout) importLayout.addRow(filenameLabel, fileLayout)
self.formatStackedWidget.addWidget(page) formSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Minimum)
importLayout.setItem(1, QtGui.QFormLayout.LabelRole, formSpacer)
self.formatStack.addWidget(page)
setattr(self, prefix + u'Page', page) setattr(self, prefix + u'Page', page)
setattr(self, prefix + u'FilenameLabel', filenameLabel) setattr(self, prefix + u'FilenameLabel', filenameLabel)
setattr(self, prefix + u'FormLabelSpacer', formSpacer)
setattr(self, prefix + u'FileLayout', fileLayout) setattr(self, prefix + u'FileLayout', fileLayout)
setattr(self, prefix + u'FilenameEdit', filenameEdit) setattr(self, prefix + u'FilenameEdit', filenameEdit)
setattr(self, prefix + u'BrowseButton', browseButton) setattr(self, prefix + u'BrowseButton', browseButton)
@ -313,7 +305,6 @@ class Ui_SongImportWizard(object):
importWidget = page importWidget = page
importLayout = QtGui.QVBoxLayout(importWidget) importLayout = QtGui.QVBoxLayout(importWidget)
importLayout.setMargin(0) importLayout.setMargin(0)
importLayout.setSpacing(8)
if can_disable: if can_disable:
importLayout.setObjectName(obj_prefix + u'ImportLayout') importLayout.setObjectName(obj_prefix + u'ImportLayout')
else: else:
@ -324,25 +315,21 @@ class Ui_SongImportWizard(object):
fileListWidget.setObjectName(obj_prefix + u'FileListWidget') fileListWidget.setObjectName(obj_prefix + u'FileListWidget')
importLayout.addWidget(fileListWidget) importLayout.addWidget(fileListWidget)
buttonLayout = QtGui.QHBoxLayout() buttonLayout = QtGui.QHBoxLayout()
buttonLayout.setSpacing(8)
buttonLayout.setObjectName(obj_prefix + u'ButtonLayout') buttonLayout.setObjectName(obj_prefix + u'ButtonLayout')
addButton = QtGui.QPushButton(importWidget) addButton = QtGui.QPushButton(importWidget)
addButton.setIcon(self.openIcon) addButton.setIcon(self.openIcon)
addButton.setObjectName(obj_prefix + u'AddButton') addButton.setObjectName(obj_prefix + u'AddButton')
buttonLayout.addWidget(addButton) buttonLayout.addWidget(addButton)
buttonSpacer = QtGui.QSpacerItem(40, 20, buttonLayout.addStretch()
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
buttonLayout.addItem(buttonSpacer)
removeButton = QtGui.QPushButton(importWidget) removeButton = QtGui.QPushButton(importWidget)
removeButton.setIcon(self.deleteIcon) removeButton.setIcon(self.deleteIcon)
removeButton.setObjectName(obj_prefix + u'RemoveButton') removeButton.setObjectName(obj_prefix + u'RemoveButton')
buttonLayout.addWidget(removeButton) buttonLayout.addWidget(removeButton)
importLayout.addLayout(buttonLayout) importLayout.addLayout(buttonLayout)
self.formatStackedWidget.addWidget(page) self.formatStack.addWidget(page)
setattr(self, prefix + u'Page', page) setattr(self, prefix + u'Page', page)
setattr(self, prefix + u'FileListWidget', fileListWidget) setattr(self, prefix + u'FileListWidget', fileListWidget)
setattr(self, prefix + u'ButtonLayout', buttonLayout) setattr(self, prefix + u'ButtonLayout', buttonLayout)
setattr(self, prefix + u'ButtonSpacer', buttonSpacer)
setattr(self, prefix + u'AddButton', addButton) setattr(self, prefix + u'AddButton', addButton)
setattr(self, prefix + u'RemoveButton', removeButton) setattr(self, prefix + u'RemoveButton', removeButton)
if can_disable: if can_disable:
@ -361,7 +348,6 @@ class Ui_SongImportWizard(object):
disabledWidget.setObjectName(obj_prefix + u'DisabledWidget') disabledWidget.setObjectName(obj_prefix + u'DisabledWidget')
disabledLayout = QtGui.QVBoxLayout(disabledWidget) disabledLayout = QtGui.QVBoxLayout(disabledWidget)
disabledLayout.setMargin(0) disabledLayout.setMargin(0)
disabledLayout.setSpacing(8)
disabledLayout.setObjectName(obj_prefix + u'DisabledLayout') disabledLayout.setObjectName(obj_prefix + u'DisabledLayout')
disabledLabel = QtGui.QLabel(disabledWidget) disabledLabel = QtGui.QLabel(disabledWidget)
disabledLabel.setWordWrap(True) disabledLabel.setWordWrap(True)
@ -376,4 +362,4 @@ class Ui_SongImportWizard(object):
setattr(self, prefix + u'DisabledLayout', disabledLayout) setattr(self, prefix + u'DisabledLayout', disabledLayout)
setattr(self, prefix + u'DisabledLabel', disabledLabel) setattr(self, prefix + u'DisabledLabel', disabledLabel)
setattr(self, prefix + u'ImportWidget', importWidget) setattr(self, prefix + u'ImportWidget', importWidget)
return importWidget return importWidget

View File

@ -109,7 +109,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
author_name = QtGui.QListWidgetItem(author.display_name) author_name = QtGui.QListWidgetItem(author.display_name)
else: else:
author_name = QtGui.QListWidgetItem( author_name = QtGui.QListWidgetItem(
u'%s %s' % (author.first_name, author.last_name)) u' '.join(author.first_name, author.last_name))
author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id)) author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
self.AuthorsListWidget.addItem(author_name) self.AuthorsListWidget.addItem(author_name)
if self.AuthorsListWidget.count() == 0: if self.AuthorsListWidget.count() == 0:
@ -305,12 +305,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.')) 'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self, elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'), translate('SongsPlugin.SongMaintenanceForm', 'Error'),
translate('SongsPlugin.SongMaintenanceForm', 'The author %s' unicode(translate('SongsPlugin.SongMaintenanceForm',
' already exists. Would you like to make songs with author ' 'The author %s already exists. Would you like to make songs'
'%s use the existing author %s?' % (author.display_name, ' with author %s use the existing author %s?')) %
temp_display_name, author.display_name)), (author.display_name, temp_display_name,
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | author.display_name), QtGui.QMessageBox.StandardButtons(
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
QtGui.QMessageBox.Yes:
self.mergeAuthors(author) self.mergeAuthors(author)
self.resetAuthors() self.resetAuthors()
Receiver.send_message(u'songs_load_list') Receiver.send_message(u'songs_load_list')
@ -346,12 +347,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.')) 'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self, elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'), translate('SongsPlugin.SongMaintenanceForm', 'Error'),
translate('SongsPlugin.SongMaintenanceForm', 'The topic %s ' unicode(translate('SongsPlugin.SongMaintenanceForm',
'already exists. Would you like to make songs with topic %s' 'The topic %s already exists. Would you like to make songs '
' use the existing topic %s?' % (topic.name, temp_name, 'with topic %s use the existing topic %s?')) % (topic.name,
topic.name)), temp_name, topic.name), QtGui.QMessageBox.StandardButtons(
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: QtGui.QMessageBox.Yes:
self.mergeTopics(topic) self.mergeTopics(topic)
self.resetTopics() self.resetTopics()
else: else:
@ -389,12 +390,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.')) 'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self, elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'), translate('SongsPlugin.SongMaintenanceForm', 'Error'),
translate('SongsPlugin.SongMaintenanceForm', 'The book %s ' unicode(translate('SongsPlugin.SongMaintenanceForm',
'already exists. Would you like to make songs with book %s ' 'The book %s already exists. Would you like to make songs '
'use the existing book %s?' % (book.name, temp_name, 'with book %s use the existing book %s?')) % (book.name,
book.name)), temp_name, book.name), QtGui.QMessageBox.StandardButtons(
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: QtGui.QMessageBox.Yes:
self.mergeBooks(book) self.mergeBooks(book)
self.resetBooks() self.resetBooks()
else: else:
@ -498,4 +499,4 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
translate('SongsPlugin.SongMaintenanceForm', translate('SongsPlugin.SongMaintenanceForm',
'This book cannot be deleted, it is currently ' 'This book cannot be deleted, it is currently '
'assigned to at least one song.'), 'assigned to at least one song.'),
translate('SongsPlugin.SongMaintenanceForm', 'No book selected!')) translate('SongsPlugin.SongMaintenanceForm', 'No book selected!'))

View File

@ -29,6 +29,7 @@ import os
import chardet import chardet
import codecs import codecs
from openlp.core.lib import translate
from songimport import SongImport from songimport import SongImport
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -69,8 +70,9 @@ class CCLIFileImport(SongImport):
self.import_wizard.importProgressBar.setMaximum(song_total) self.import_wizard.importProgressBar.setMaximum(song_total)
song_count = 1 song_count = 1
for filename in self.filenames: for filename in self.filenames:
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(unicode(translate(
u'Importing song %s of %s' % (song_count, song_total)) 'SongsPlugin.CCLIFileImport', 'Importing song %d of %d')) %
(song_count, song_total))
filename = unicode(filename) filename = unicode(filename)
log.debug(u'Importing CCLI File: %s', filename) log.debug(u'Importing CCLI File: %s', filename)
lines = [] lines = []
@ -86,11 +88,11 @@ class CCLIFileImport(SongImport):
infile = codecs.open(filename, u'r', details['encoding']) infile = codecs.open(filename, u'r', details['encoding'])
lines = infile.readlines() lines = infile.readlines()
ext = os.path.splitext(filename)[1] ext = os.path.splitext(filename)[1]
if ext.lower() == ".usr": if ext.lower() == u'.usr':
log.info(u'SongSelect .usr format file found %s: ', log.info(u'SongSelect .usr format file found %s: ',
filename) filename)
self.do_import_usr_file(lines) self.do_import_usr_file(lines)
elif ext.lower() == ".txt": elif ext.lower() == u'.txt':
log.info(u'SongSelect .txt format file found %s: ', log.info(u'SongSelect .txt format file found %s: ',
filename) filename)
self.do_import_txt_file(lines) self.do_import_txt_file(lines)
@ -124,7 +126,7 @@ class CCLIFileImport(SongImport):
``Title=`` ``Title=``
Contains the song title (e.g. *Title=Above All*) Contains the song title (e.g. *Title=Above All*)
``Author=`` ``Author=``
Contains a | delimited list of the song authors Contains a | delimited list of the song authors
e.g. *Author=LeBlanc, Lenny | Baloche, Paul* e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
``Copyright=`` ``Copyright=``
Contains a | delimited list of the song copyrights Contains a | delimited list of the song copyrights
@ -184,8 +186,8 @@ class CCLIFileImport(SongImport):
verse_type = u'O' verse_type = u'O'
check_first_verse_line = True check_first_verse_line = True
verse_text = unicode(words_list[counter]) verse_text = unicode(words_list[counter])
verse_text = verse_text.replace("/n", "\n") verse_text = verse_text.replace(u'/n', u'\n')
verse_lines = verse_text.split(u'\n', 1) verse_lines = verse_text.split(u'\n', 1)
if check_first_verse_line: if check_first_verse_line:
if verse_lines[0].startswith(u'(PRE-CHORUS'): if verse_lines[0].startswith(u'(PRE-CHORUS'):
verse_type = u'P' verse_type = u'P'
@ -207,7 +209,7 @@ class CCLIFileImport(SongImport):
author_list = song_author.split(u'|') author_list = song_author.split(u'|')
for author in author_list: for author in author_list:
seperated = author.split(u',') seperated = author.split(u',')
self.add_author(seperated[1].strip() + " " + seperated[0].strip()) self.add_author(seperated[1].strip() + u' ' + seperated[0].strip())
self.title = song_name self.title = song_name
self.copyright = song_copyright self.copyright = song_copyright
self.ccli_number = song_ccli self.ccli_number = song_ccli
@ -337,4 +339,4 @@ class CCLIFileImport(SongImport):
self.copyright = song_copyright self.copyright = song_copyright
self.ccli_number = song_ccli self.ccli_number = song_ccli
self.comments = song_comments self.comments = song_comments
self.finish() self.finish()

View File

@ -232,7 +232,7 @@ class SongMediaItem(MediaManagerItem):
self.listView.clear() self.listView.clear()
for author in searchresults: for author in searchresults:
for song in author.songs: for song in author.songs:
song_detail = '%s (%s)' % (author.display_name, song.title) song_detail = u'%s (%s)' % (author.display_name, song.title)
song_name = QtGui.QListWidgetItem(song_detail) song_name = QtGui.QListWidgetItem(song_detail)
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
self.listView.addItem(song_name) self.listView.addItem(song_name)
@ -314,16 +314,11 @@ class SongMediaItem(MediaManagerItem):
translate('SongsPlugin.MediaItem', translate('SongsPlugin.MediaItem',
'You must select an item to delete.')): 'You must select an item to delete.')):
items = self.listView.selectedIndexes() items = self.listView.selectedIndexes()
if len(items) == 1:
del_message = translate('SongsPlugin.MediaItem',
'Are you sure you want to delete the selected song?')
else:
del_message = unicode(translate('SongsPlugin.MediaItem',
'Are you sure you want to delete the %d selected '
'songs?')) % len(items)
ans = QtGui.QMessageBox.question(self, ans = QtGui.QMessageBox.question(self,
translate('SongsPlugin.MediaItem', 'Delete Song(s)?'), translate('SongsPlugin.MediaItem', 'Delete Song(s)?'),
del_message, translate('SongsPlugin.MediaItem',
'Are you sure you want to delete the %n selected song(s)?', '',
QtCore.QCoreApplication.CodecForTr, len(items)),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok| QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok|
QtGui.QMessageBox.Cancel), QtGui.QMessageBox.Cancel),
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)

View File

@ -34,6 +34,7 @@ from sqlalchemy.orm import class_mapper, mapper, relation, scoped_session, \
sessionmaker sessionmaker
from sqlalchemy.orm.exc import UnmappedClassError from sqlalchemy.orm.exc import UnmappedClassError
from openlp.core.lib import translate
from openlp.core.lib.db import BaseModel from openlp.core.lib.db import BaseModel
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic #, MediaFile from openlp.plugins.songs.lib.db import Author, Book, Song, Topic #, MediaFile
from songimport import SongImport from songimport import SongImport
@ -148,8 +149,9 @@ class OpenLPSongImport(SongImport):
self.import_wizard.importProgressBar.setMaximum(song_total) self.import_wizard.importProgressBar.setMaximum(song_total)
song_count = 1 song_count = 1
for song in source_songs: for song in source_songs:
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(unicode(translate(
u'Importing song %s of %s' % (song_count, song_total)) 'SongsPlugin.OpenLPSongImport', 'Importing song %d of %d.')) %
(song_count, song_total))
new_song = Song() new_song = Song()
new_song.title = song.title new_song.title = song.title
if has_media_files and hasattr(song, 'alternate_title'): if has_media_files and hasattr(song, 'alternate_title'):
@ -220,4 +222,4 @@ class OpenLPSongImport(SongImport):
if self.stop_import_flag: if self.stop_import_flag:
return False return False
engine.dispose() engine.dispose()
return True return True

View File

@ -128,7 +128,7 @@ class OpenSongImport(SongImport):
numfiles += len(z.infolist()) numfiles += len(z.infolist())
else: else:
numfiles += 1 numfiles += 1
log.debug("Total number of files: %d", numfiles) log.debug(u'Total number of files: %d', numfiles)
self.import_wizard.importProgressBar.setMaximum(numfiles) self.import_wizard.importProgressBar.setMaximum(numfiles)
for filename in self.filenames: for filename in self.filenames:
if self.stop_import_flag: if self.stop_import_flag:
@ -159,7 +159,7 @@ class OpenSongImport(SongImport):
break break
else: else:
# not a zipfile # not a zipfile
log.info('Direct import %s', filename) log.info(u'Direct import %s', filename)
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(
unicode(translate('SongsPlugin.ImportWizardForm', unicode(translate('SongsPlugin.ImportWizardForm',
'Importing %s...')) % os.path.split(filename)[-1]) 'Importing %s...')) % os.path.split(filename)[-1])
@ -306,4 +306,4 @@ class OpenSongImport(SongImport):
log.info(u'Got order %s but not in versetags, dropping this' log.info(u'Got order %s but not in versetags, dropping this'
u'item from presentation order', tag) u'item from presentation order', tag)
else: else:
self.verse_order_list.append(tag) self.verse_order_list.append(tag)

View File

@ -85,7 +85,7 @@ class SongBeamerImport(SongImport):
""" """
Recieve a single file, or a list of files to import. Recieve a single file, or a list of files to import.
""" """
if isinstance(self.import_source, list): if isinstance(self.import_source, list):
self.import_wizard.importProgressBar.setMaximum( self.import_wizard.importProgressBar.setMaximum(
len(self.import_source)) len(self.import_source))
for file in self.import_source: for file in self.import_source:
@ -96,7 +96,7 @@ class SongBeamerImport(SongImport):
read_verses = False read_verses = False
self.file_name = os.path.split(file)[1] self.file_name = os.path.split(file)[1]
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(
"Importing %s" % (self.file_name), 0) u'Importing %s' % (self.file_name), 0)
if os.path.isfile(file): if os.path.isfile(file):
detect_file = open(file, u'r') detect_file = open(file, u'r')
details = chardet.detect(detect_file.read(2048)) details = chardet.detect(detect_file.read(2048))
@ -126,17 +126,17 @@ class SongBeamerImport(SongImport):
if verse_start: if verse_start:
verse_start = False verse_start = False
if not self.check_verse_marks(line): if not self.check_verse_marks(line):
self.current_verse = u'%s\n' % line self.current_verse = line + u'\n'
else: else:
self.current_verse += u'%s\n' % line self.current_verse += line + u'\n'
if self.current_verse: if self.current_verse:
self.replace_html_tags() self.replace_html_tags()
self.add_verse(self.current_verse, self.current_verse_type) self.add_verse(self.current_verse, self.current_verse_type)
if self.check_complete(): if self.check_complete():
self.finish() self.finish()
self.import_wizard.incrementProgressBar(u'%s %s...' % self.import_wizard.incrementProgressBar(unicode(translate(
(translate('SongsPlugin.SongBeamerImport', 'Importing'), 'SongsPlugin.SongBeamerImport', 'Importing %s...')) %
self.file_name)) self.file_name)
return True return True
def replace_html_tags(self): def replace_html_tags(self):
@ -252,7 +252,7 @@ class SongBeamerImport(SongImport):
elif tag_val[0] == u'#TextAlign': elif tag_val[0] == u'#TextAlign':
pass pass
elif tag_val[0] == u'#Title': elif tag_val[0] == u'#Title':
self.title = u'%s' % tag_val[1] self.title = unicode(tag_val[1])
elif tag_val[0] == u'#TitleAlign': elif tag_val[0] == u'#TitleAlign':
pass pass
elif tag_val[0] == u'#TitleFontSize': elif tag_val[0] == u'#TitleFontSize':
@ -292,4 +292,4 @@ class SongBeamerImport(SongImport):
self.current_verse_type += marks[1] self.current_verse_type += marks[1]
return True return True
else: else:
return False return False

View File

@ -32,7 +32,7 @@ import logging
from openlp.plugins.songs.lib.songimport import SongImport from openlp.plugins.songs.lib.songimport import SongImport
BLOCK_TYPES = (u'V', u'C', u'B') BLOCK_TYPES = (u'V', u'C', u'B')
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -111,7 +111,7 @@ class WowImport(SongImport):
Recieve a single file, or a list of files to import. Recieve a single file, or a list of files to import.
""" """
if isinstance(self.import_source, list): if isinstance(self.import_source, list):
self.import_wizard.importProgressBar.setMaximum( self.import_wizard.importProgressBar.setMaximum(
len(self.import_source)) len(self.import_source))
for file in self.import_source: for file in self.import_source:
@ -119,7 +119,7 @@ class WowImport(SongImport):
self.copyright = u'' self.copyright = u''
self.file_name = os.path.split(file)[1] self.file_name = os.path.split(file)[1]
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(
"Importing %s" % (self.file_name), 0) u'Importing %s' % (self.file_name), 0)
# Get the song title # Get the song title
self.title = self.file_name.rpartition(u'.')[0] self.title = self.file_name.rpartition(u'.')[0]
self.songData = open(file, 'rb') self.songData = open(file, 'rb')
@ -167,5 +167,5 @@ class WowImport(SongImport):
self.songData.close() self.songData.close()
self.finish() self.finish()
self.import_wizard.incrementProgressBar( self.import_wizard.incrementProgressBar(
"Importing %s" % (self.file_name)) u'Importing %s' % (self.file_name))
return True return True

View File

@ -213,45 +213,45 @@ class SongsPlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('SongsPlugin', 'Song'), u'singular': translate('SongsPlugin', 'Song', 'name singular'),
u'plural': translate('SongsPlugin', 'Songs') u'plural': translate('SongsPlugin', 'Songs', 'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('SongsPlugin', 'Songs') u'title': translate('SongsPlugin', 'Songs', 'container title')
} }
# Middle Header Bar # Middle Header Bar
## New Button ## ## New Action ##
self.textStrings[StringContent.New] = { self.textStrings[StringContent.New] = {
u'title': translate('SongsPlugin', 'Add'), u'title': translate('SongsPlugin', 'Add'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
'Add a new Song') 'Add a new Song')
} }
## Edit Button ## ## Edit Action ##
self.textStrings[StringContent.Edit] = { self.textStrings[StringContent.Edit] = {
u'title': translate('SongsPlugin', 'Edit'), u'title': translate('SongsPlugin', 'Edit'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
'Edit the selected Song') 'Edit the selected Song')
} }
## Delete Button ## ## Delete Action ##
self.textStrings[StringContent.Delete] = { self.textStrings[StringContent.Delete] = {
u'title': translate('SongsPlugin', 'Delete'), u'title': translate('SongsPlugin', 'Delete'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
'Delete the selected Song') 'Delete the selected Song')
} }
## Preview ## ## Preview Action ##
self.textStrings[StringContent.Preview] = { self.textStrings[StringContent.Preview] = {
u'title': translate('SongsPlugin', 'Preview'), u'title': translate('SongsPlugin', 'Preview'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
'Preview the selected Song') 'Preview the selected Song')
} }
## Live Button ## ## Send Live Action ##
self.textStrings[StringContent.Live] = { self.textStrings[StringContent.Live] = {
u'title': translate('SongsPlugin', 'Live'), u'title': translate('SongsPlugin', 'Live'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
'Send the selected Song live') 'Send the selected Song live')
} }
## Add to service Button ## ## Add to Service Action ##
self.textStrings[StringContent.Service] = { self.textStrings[StringContent.Service] = {
u'title': translate('SongsPlugin', 'Service'), u'title': translate('SongsPlugin', 'Service'),
u'tooltip': translate('SongsPlugin', u'tooltip': translate('SongsPlugin',
@ -265,4 +265,4 @@ class SongsPlugin(Plugin):
log.info(u'Songs Finalising') log.info(u'Songs Finalising')
self.manager.finalise() self.manager.finalise()
self.toolsReindexItem.setVisible(False) self.toolsReindexItem.setVisible(False)
Plugin.finalise(self) Plugin.finalise(self)

View File

@ -73,7 +73,8 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog):
def accept(self): def accept(self):
log.debug(u'Detailed report generated') log.debug(u'Detailed report generated')
filename = u'usage_detail_%s_%s.txt' % ( filename = unicode(translate('SongUsagePlugin.SongUsageDetailForm',
'usage_detail_%s_%s.txt')) % (
self.fromDate.selectedDate().toString(u'ddMMyyyy'), self.fromDate.selectedDate().toString(u'ddMMyyyy'),
self.toDate.selectedDate().toString(u'ddMMyyyy')) self.toDate.selectedDate().toString(u'ddMMyyyy'))
usage = self.plugin.manager.get_all_objects( usage = self.plugin.manager.get_all_objects(
@ -95,4 +96,4 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog):
finally: finally:
if file: if file:
file.close() file.close()
self.close() self.close()

View File

@ -175,10 +175,13 @@ class SongUsagePlugin(Plugin):
""" """
## Name PluginList ## ## Name PluginList ##
self.textStrings[StringContent.Name] = { self.textStrings[StringContent.Name] = {
u'singular': translate('SongUsagePlugin', 'SongUsage'), u'singular': translate('SongUsagePlugin', 'SongUsage',
u'plural': translate('SongUsagePlugin', 'SongUsage') 'name singular'),
u'plural': translate('SongUsagePlugin', 'SongUsage',
'name plural')
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('SongUsagePlugin', 'SongUsage') u'title': translate('SongUsagePlugin', 'SongUsage',
} 'container title')
}