This commit is contained in:
Andreas Preikschat 2010-12-26 14:29:25 +01:00
commit 0ad9aeb5cd
11 changed files with 119 additions and 65 deletions

View File

@ -214,7 +214,7 @@ class RenderManager(object):
if self.force_page: if self.force_page:
verse = verse + verse + verse verse = verse + verse + verse
else: else:
self.image_manager.del_image(self.theme_data.theme_name) self.image_manager.del_image(theme_data.theme_name)
footer = [] footer = []
footer.append(u'Arky Arky (Unknown)' ) footer.append(u'Arky Arky (Unknown)' )
footer.append(u'Public Domain') footer.append(u'Public Domain')

View File

@ -53,7 +53,5 @@ class Ui_FileRenameDialog(object):
QtCore.QMetaObject.connectSlotsByName(FileRenameDialog) QtCore.QMetaObject.connectSlotsByName(FileRenameDialog)
def retranslateUi(self, FileRenameDialog): def retranslateUi(self, FileRenameDialog):
FileRenameDialog.setWindowTitle(translate('OpenLP.FileRenameForm',
'File Rename'))
self.fileRenameLabel.setText(translate('OpenLP.FileRenameForm', self.fileRenameLabel.setText(translate('OpenLP.FileRenameForm',
'New File Name:')) 'New File Name:'))

View File

@ -28,6 +28,8 @@ from PyQt4 import QtCore, QtGui
from filerenamedialog import Ui_FileRenameDialog from filerenamedialog import Ui_FileRenameDialog
from openlp.core.lib import translate
class FileRenameForm(QtGui.QDialog, Ui_FileRenameDialog): class FileRenameForm(QtGui.QDialog, Ui_FileRenameDialog):
""" """
The exception dialog The exception dialog
@ -39,3 +41,15 @@ class FileRenameForm(QtGui.QDialog, Ui_FileRenameDialog):
self.accept) self.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
self.reject) self.reject)
def exec_(self, copy=False):
"""
Run the Dialog with correct heading.
"""
if copy:
self.setWindowTitle(translate('OpenLP.FileRenameForm',
'File Copy'))
else:
self.setWindowTitle(translate('OpenLP.FileRenameForm',
'File Rename'))
return QtGui.QDialog.exec_(self)

View File

@ -312,6 +312,18 @@ class GeneralTab(SettingsTab):
# Signals and slots # Signals and slots
QtCore.QObject.connect(self.overrideCheckBox, QtCore.QObject.connect(self.overrideCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled)
QtCore.QObject.connect(self.customHeightValueEdit,
QtCore.SIGNAL(u'textEdited(const QString&)'),
self.onDisplayPositionChanged)
QtCore.QObject.connect(self.customWidthValueEdit,
QtCore.SIGNAL(u'textEdited(const QString&)'),
self.onDisplayPositionChanged)
QtCore.QObject.connect(self.customYValueEdit,
QtCore.SIGNAL(u'textEdited(const QString&)'),
self.onDisplayPositionChanged)
QtCore.QObject.connect(self.customXValueEdit,
QtCore.SIGNAL(u'textEdited(const QString&)'),
self.onDisplayPositionChanged)
def retranslateUi(self): def retranslateUi(self):
""" """
@ -503,10 +515,19 @@ class GeneralTab(SettingsTab):
def onOverrideCheckBoxToggled(self, checked): def onOverrideCheckBoxToggled(self, checked):
""" """
Toggle screen state depending on check box state Toggle screen state depending on check box state.
``checked``
The state of the check box (boolean).
""" """
self.customXValueEdit.setEnabled(checked) self.customXValueEdit.setEnabled(checked)
self.customYValueEdit.setEnabled(checked) self.customYValueEdit.setEnabled(checked)
self.customHeightValueEdit.setEnabled(checked) self.customHeightValueEdit.setEnabled(checked)
self.customWidthValueEdit.setEnabled(checked) self.customWidthValueEdit.setEnabled(checked)
self.overrideChanged = True self.overrideChanged = True
def onDisplayPositionChanged(self):
"""
Called when the width, height, x position or y position has changed.
"""
self.overrideChanged = True

View File

@ -148,7 +148,7 @@ class Ui_MainWindow(object):
self.MediaManagerDock.setMinimumWidth( self.MediaManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_left) self.settingsmanager.mainwindow_left)
self.MediaManagerDock.setObjectName(u'MediaManagerDock') self.MediaManagerDock.setObjectName(u'MediaManagerDock')
self.MediaManagerContents = QtGui.QWidget() self.MediaManagerContents = QtGui.QWidget(MainWindow)
self.MediaManagerContents.setObjectName(u'MediaManagerContents') self.MediaManagerContents.setObjectName(u'MediaManagerContents')
self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents) self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents)
self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0) self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0)

View File

@ -79,7 +79,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
status_text = unicode( status_text = unicode(
translate('OpenLP.PluginForm', '%s (Disabled)')) translate('OpenLP.PluginForm', '%s (Disabled)'))
name_string = plugin.getString(StringContent.Name) name_string = plugin.getString(StringContent.Name)
item.setText(status_text % name_string[u'plural']) item.setText(status_text % name_string[u'singular'])
# If the plugin has an icon, set it! # If the plugin has an icon, set it!
if plugin.icon: if plugin.icon:
item.setIcon(plugin.icon) item.setIcon(plugin.icon)
@ -107,12 +107,12 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
if self.pluginListWidget.currentItem() is None: if self.pluginListWidget.currentItem() is None:
self._clearDetails() self._clearDetails()
return return
plugin_name_plural = \ plugin_name_singular = \
self.pluginListWidget.currentItem().text().split(u' ')[0] self.pluginListWidget.currentItem().text().split(u' ')[0]
self.activePlugin = None self.activePlugin = None
for plugin in self.parent.pluginManager.plugins: for plugin in self.parent.pluginManager.plugins:
name_string = plugin.getString(StringContent.Name) name_string = plugin.getString(StringContent.Name)
if name_string[u'plural'] == plugin_name_plural: if name_string[u'singular'] == plugin_name_singular:
self.activePlugin = plugin self.activePlugin = plugin
break break
if self.activePlugin: if self.activePlugin:
@ -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'plural']) status_text % name_string[u'singular'])

View File

@ -223,15 +223,17 @@ class ThemeManager(QtGui.QWidget):
""" """
Renames an existing theme to a new name Renames an existing theme to a new name
""" """
item = self.themeListWidget.currentItem() action = unicode(translate('OpenLP.ThemeManager', 'Rename'))
oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString()) if self._validate_theme_action(action, False):
self.fileRenameForm.fileNameEdit.setText(oldThemeName) item = self.themeListWidget.currentItem()
self.saveThemeName = u'' oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
if self.fileRenameForm.exec_(): self.fileRenameForm.fileNameEdit.setText(oldThemeName)
newThemeName = unicode(self.fileRenameForm.fileNameEdit.text()) self.saveThemeName = oldThemeName
oldThemeData = self.getThemeData(oldThemeName) if self.fileRenameForm.exec_():
self.deleteTheme(oldThemeName) newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
self.cloneThemeData(oldThemeData, newThemeName) oldThemeData = self.getThemeData(oldThemeName)
self.deleteTheme(oldThemeName)
self.cloneThemeData(oldThemeData, newThemeName)
def onCopyTheme(self): def onCopyTheme(self):
""" """
@ -241,7 +243,7 @@ class ThemeManager(QtGui.QWidget):
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 = u'' self.saveThemeName = u''
if self.fileRenameForm.exec_(): 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)
@ -286,47 +288,13 @@ class ThemeManager(QtGui.QWidget):
""" """
Delete a theme Delete a theme
""" """
self.global_theme = unicode(QtCore.QSettings().value( action = unicode(translate('OpenLP.ThemeManager', 'Delete'))
self.settingsSection + u'/global theme', if self._validate_theme_action(action):
QtCore.QVariant(u'')).toString())
if check_item_selected(self.themeListWidget,
translate('OpenLP.ThemeManager',
'You must select a theme to delete.')):
item = self.themeListWidget.currentItem() item = self.themeListWidget.currentItem()
theme = unicode(item.text()) theme = unicode(item.text())
# confirm deletion row = self.themeListWidget.row(item)
answer = QtGui.QMessageBox.question(self, self.themeListWidget.takeItem(row)
translate('OpenLP.ThemeManager', 'Delete Confirmation'), self.deleteTheme(theme)
unicode(translate('OpenLP.ThemeManager', 'Delete %s theme?'))
% theme,
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.No:
return
# should be the same unless default
if theme != unicode(item.data(QtCore.Qt.UserRole).toString()):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
translate('OpenLP.ThemeManager',
'You are unable to delete the default theme.'))
else:
for plugin in self.parent.pluginManager.plugins:
if plugin.usesTheme(theme):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
unicode(translate('OpenLP.ThemeManager',
'Theme %s is used in the %s plugin.')) % \
(theme, plugin.name))
return
if unicode(self.serviceComboBox.currentText()) == theme:
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
unicode(translate('OpenLP.ThemeManager',
'Theme %s is used by the service manager.')) % theme)
return
row = self.themeListWidget.row(item)
self.themeListWidget.takeItem(row)
self.deleteTheme(theme)
def deleteTheme(self, theme): def deleteTheme(self, theme):
""" """
@ -668,7 +636,6 @@ class ThemeManager(QtGui.QWidget):
plugin.renameTheme(self.saveThemeName, name) plugin.renameTheme(self.saveThemeName, name)
if unicode(self.serviceComboBox.currentText()) == name: if unicode(self.serviceComboBox.currentText()) == name:
editedServiceTheme = True editedServiceTheme = True
self.deleteTheme(self.saveThemeName)
if result == QtGui.QMessageBox.Yes: if result == QtGui.QMessageBox.Yes:
# Save the theme, overwriting the existing theme if necessary. # Save the theme, overwriting the existing theme if necessary.
if imageTo and self.oldBackgroundImage and \ if imageTo and self.oldBackgroundImage and \
@ -782,3 +749,50 @@ class ThemeManager(QtGui.QWidget):
theme.parse(themeXml) theme.parse(themeXml)
theme.extend_image_filename(path) theme.extend_image_filename(path)
return theme return theme
def _validate_theme_action(self, action, testPlugin=True):
"""
Check to see if theme has been selected and the destructive action
is allowed.
"""
self.global_theme = unicode(QtCore.QSettings().value(
self.settingsSection + u'/global theme',
QtCore.QVariant(u'')).toString())
if check_item_selected(self.themeListWidget,
unicode(translate('OpenLP.ThemeManager',
'You must select a theme to %s.')) % action):
item = self.themeListWidget.currentItem()
theme = unicode(item.text())
# confirm deletion
answer = QtGui.QMessageBox.question(self,
unicode(translate('OpenLP.ThemeManager', '%s Confirmation'))
% action,
unicode(translate('OpenLP.ThemeManager', '%s %s theme?'))
% (action, theme),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.No:
return False
# should be the same unless default
if theme != unicode(item.data(QtCore.Qt.UserRole).toString()):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
translate('OpenLP.ThemeManager',
'You are unable to delete the default theme.'))
else:
if testPlugin:
for plugin in self.parent.pluginManager.plugins:
if plugin.usesTheme(theme):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
unicode(translate('OpenLP.ThemeManager',
'Theme %s is used in the %s plugin.')) % \
(theme, plugin.name))
return False
if unicode(self.serviceComboBox.currentText()) == theme:
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeManager', 'Error'),
unicode(translate('OpenLP.ThemeManager',
'Theme %s is used by the service manager.')) % theme)
return False
return True

View File

@ -284,6 +284,7 @@ class BSExtract(object):
if not soup: if not soup:
return None return None
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
content = None
try: try:
content = soup.find(u'div', u'content').find(u'div').findAll(u'div') content = soup.find(u'div', u'content').find(u'div').findAll(u'div')
except: except:

View File

@ -206,8 +206,12 @@ OpenLP.Namespace.create("OpenLP.Remote", {
}, },
sendLiveSet: function (e) sendLiveSet: function (e)
{ {
var id = OpenLP.Events.getElement(e).parent().attr("value"); var tr = OpenLP.Events.getElement(e).parent();
OpenLP.Remote.sendEvent("slidecontroller_live_set", id); if (tr[0].tagName != "TR")
{
tr = tr.parent();
}
OpenLP.Remote.sendEvent("slidecontroller_live_set", tr.attr("value"));
return false; return false;
}, },
sendSetItem: function (e) sendSetItem: function (e)

View File

@ -89,5 +89,5 @@ class RemotesPlugin(Plugin):
} }
## Name for MediaDockManager, SettingsManager ## ## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = { self.textStrings[StringContent.VisibleName] = {
u'title': translate('RemotePlugin', 'Remotes') u'title': translate('RemotePlugin', 'Remote')
} }

View File

@ -146,8 +146,7 @@ class Ui_EditSongDialog(object):
self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth()) self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth())
self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy) self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy)
self.AuthorsSelectionComboItem.setEditable(True) self.AuthorsSelectionComboItem.setEditable(True)
self.AuthorsSelectionComboItem.setInsertPolicy( self.AuthorsSelectionComboItem.setInsertPolicy(QtGui.QComboBox.NoInsert)
QtGui.QComboBox.InsertAlphabetically)
self.AuthorsSelectionComboItem.setSizeAdjustPolicy( self.AuthorsSelectionComboItem.setSizeAdjustPolicy(
QtGui.QComboBox.AdjustToMinimumContentsLength) QtGui.QComboBox.AdjustToMinimumContentsLength)
self.AuthorsSelectionComboItem.setMinimumContentsLength(8) self.AuthorsSelectionComboItem.setMinimumContentsLength(8)
@ -224,6 +223,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHeightForWidth( sizePolicy.setHeightForWidth(
self.SongTopicCombo.sizePolicy().hasHeightForWidth()) self.SongTopicCombo.sizePolicy().hasHeightForWidth())
self.SongTopicCombo.setEditable(True) self.SongTopicCombo.setEditable(True)
self.SongTopicCombo.setInsertPolicy(QtGui.QComboBox.NoInsert)
self.SongTopicCombo.setSizePolicy(sizePolicy) self.SongTopicCombo.setSizePolicy(sizePolicy)
self.SongTopicCombo.setObjectName(u'SongTopicCombo') self.SongTopicCombo.setObjectName(u'SongTopicCombo')
self.TopicAddLayout.addWidget(self.SongTopicCombo) self.TopicAddLayout.addWidget(self.SongTopicCombo)
@ -271,6 +271,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHeightForWidth( sizePolicy.setHeightForWidth(
self.SongbookCombo.sizePolicy().hasHeightForWidth()) self.SongbookCombo.sizePolicy().hasHeightForWidth())
self.SongbookCombo.setEditable(True) self.SongbookCombo.setEditable(True)
self.SongbookCombo.setInsertPolicy(QtGui.QComboBox.NoInsert)
self.SongbookCombo.setSizePolicy(sizePolicy) self.SongbookCombo.setSizePolicy(sizePolicy)
self.SongbookCombo.setObjectName(u'SongbookCombo') self.SongbookCombo.setObjectName(u'SongbookCombo')
self.SongbookLayout.addRow(self.SongbookNameLabel, self.SongbookCombo) self.SongbookLayout.addRow(self.SongbookNameLabel, self.SongbookCombo)
@ -315,6 +316,7 @@ class Ui_EditSongDialog(object):
self.ThemeLayout.setObjectName(u'ThemeLayout') self.ThemeLayout.setObjectName(u'ThemeLayout')
self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox) self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
self.ThemeSelectionComboItem.setEditable(True) self.ThemeSelectionComboItem.setEditable(True)
self.ThemeSelectionComboItem.setInsertPolicy(QtGui.QComboBox.NoInsert)
self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem') self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem')
self.ThemeLayout.addWidget(self.ThemeSelectionComboItem) self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox) self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox)