diff --git a/.eric4project/openlp.org 2.0.e4q b/.eric4project/openlp.org 2.0.e4q index c6ed798c5..569d1cd77 100644 --- a/.eric4project/openlp.org 2.0.e4q +++ b/.eric4project/openlp.org 2.0.e4q @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/.eric4project/openlp.org 2.0.e4t b/.eric4project/openlp.org 2.0.e4t index 3b80600ce..cf20b900e 100644 --- a/.eric4project/openlp.org 2.0.e4t +++ b/.eric4project/openlp.org 2.0.e4t @@ -1,7 +1,7 @@ - + TODO: what is the tags for bridge, pre-chorus? @@ -111,4 +111,31 @@ 534 + + TODO: need some way to make this geometry work properly! + + 2009-03-01, 01:09:34 + + openlp/core/ui/mainwindow.py + 96 + + + + TODO: need to get rid of this once all plugins are up to date + + 2009-03-01, 01:10:29 + + openlp/core/pluginmanager.py + 86 + + + + TODO: These shouldn't be called here... + + 2009-03-01, 01:10:29 + + openlp/core/pluginmanager.py + 108 + + \ No newline at end of file diff --git a/openlp.org 2.0.e4p b/openlp.org 2.0.e4p index cb6b4b928..1d3344b93 100644 --- a/openlp.org 2.0.e4p +++ b/openlp.org 2.0.e4p @@ -1,7 +1,7 @@ - + Python @@ -26,7 +26,6 @@ openlp/core/ui/__init__.py openlp/core/ui/mainwindow.py openlp/core/ui/splashscreen.py - openlp/core/ui/settings.py openlp/core/ui/alertform.py openlp/core/ui/about.py openlp/plugins/songs/songsplugin.py @@ -48,7 +47,6 @@ openlp/core/resources.py openlp/core/lib/__init__.py openlp/core/lib/xmlrootclass.py - openlp/core/lib/settingstab.py openlp/core/lib/plugin.py openlp/core/lib/mediamanageritem.py openlp/core/lib/event.py @@ -122,6 +120,17 @@ openlp/core/lib/imageserviceitem.py openlp/plugins/bibles/forms/bibleeditdialog.py resources/forms/Ui_editsongdialog.py + openlp/core/ui/servicemanager.py + openlp/core/lib/toolbar.py + resources/forms/bibleimportdialog.py + openlp/core/ui/settingsform.py + openlp/core/ui/generalform.py + openlp/core/lib/settingstabitem.py + openlp/core/ui/generaltab.py + openlp/core/ui/themestab.py + openlp/core/ui/alertstab.py + resources/forms/Ui_settings.py + openlp/core/ui/settingsdialog.py
resources/forms/openlpexportform.ui
@@ -140,7 +149,8 @@
resources/forms/songbookdialog.ui
resources/forms/topicsdialog.ui
resources/forms/editsongdialog.ui
-
resources/forms/bibleeditdialog.ui
+
openlp/plugins/bibles/forms/bibleeditdialog.ui
+
resources/forms/settings2.ui
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 82bd7bea9..a149b42d8 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -17,9 +17,13 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ +from PyQt4 import QtCore, QtGui from render import Renderer from settingsmanager import SettingsManager from pluginmanager import PluginManager -__all__ = ['Renderer', 'SettingsManager', 'PluginManager'] +__all__ = ['Renderer', 'SettingsManager', 'PluginManager', 'translate'] + +def translate(context, text): + return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 4d43b3856..563b6d387 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -20,7 +20,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA from pluginutils import PluginUtils from pluginconfig import PluginConfig from plugin import Plugin -from settingstabitem import SettingsTabItem +from settingstab import SettingsTab from mediamanageritem import MediaManagerItem from event import Event from xmlrootclass import XmlRootClass diff --git a/openlp/core/lib/settingstabitem.py b/openlp/core/lib/settingstab.py similarity index 64% rename from openlp/core/lib/settingstabitem.py rename to openlp/core/lib/settingstab.py index 5c56eea76..96323fb56 100644 --- a/openlp/core/lib/settingstabitem.py +++ b/openlp/core/lib/settingstab.py @@ -21,26 +21,27 @@ Place, Suite 330, Boston, MA 02111-1307 USA from PyQt4 import QtCore, QtGui from openlp.core.resources import * -class SettingsTabItem(QtGui.QWidget): +class SettingsTab(QtGui.QWidget): """ - SettingsTabItem is a helper widget for plugins to define Tabs for the settings dialog. + SettingsTab is a helper widget for plugins to define Tabs for the settings dialog. """ - def __init__(self): + def __init__(self, title=None): """ Constructor to create the Steetings tab item. """ QtGui.QWidget.__init__(self) - self.TabLayout = QtGui.QVBoxLayout(self) - self.TabLayout.setSpacing(0) - self.TabLayout.setMargin(0) - self.tabText = None + self.tabTitle = title + self.setupUi() + self.retranslateUi() - def setTabText(self, text): - self.tabText = text - - def add_items(self, items): - if type(items).__name__ == "QWidget": - self.TabLayout.addWidget(items) - else: - for item in items: - self.TabLayout.addWidget(item) + def setTitle(self, title): + self.tabTitle = title + + def title(self): + return self.tabTitle + + def setupUi(self): + pass + + def retranslateUi(self): + pass diff --git a/openlp/core/pluginmanager.py b/openlp/core/pluginmanager.py index c0439d799..85a33e39f 100644 --- a/openlp/core/pluginmanager.py +++ b/openlp/core/pluginmanager.py @@ -47,7 +47,7 @@ class PluginManager(object): self.plugins = [] # this has to happen after the UI is sroted self.find_plugins(dir) log.info("Plugin manager done init") - + def find_plugins(self, dir, preview_controller, live_controller): # xxx shouldn't dir come from self.basepath """ Scan the directory dir for objects inheriting from openlp.plugin @@ -56,7 +56,7 @@ class PluginManager(object): self.live_controller=live_controller startdepth=len(os.path.abspath(dir).split(os.sep)) log.debug("find plugins %s at depth %d" %( str(dir), startdepth)) - + for root, dirs, files in os.walk(dir): for name in files: if name.endswith(".py") and not name.startswith("__"): @@ -82,7 +82,8 @@ class PluginManager(object): try: plugin = p(self.preview_controller, self.live_controller) log.debug('loaded plugin' + str(p) + ' with controllers'+str(self.preview_controller)+str(self.live_controller)) - except TypeError: # TODO: need to get rid of this once all plugins are up to date + except TypeError: + # TODO: need to get rid of this once all plugins are up to date plugin = p() log.debug('loaded plugin' + str(p) + ' with no controllers') log.debug("Plugin="+str(p)) @@ -104,23 +105,22 @@ class PluginManager(object): if media_manager_item is not None: log.debug('Inserting media manager item from %s' % plugin.name) mediatoolbox.addItem(media_manager_item, plugin.icon, media_manager_item.title) + # TODO: These shouldn't be called here... plugin.initialise() plugin.load_settings() - - def hook_settings_tabs(self, mediatoolbox=None): + + def hook_settings_tabs(self, settingsform=None): """ Loop through all the plugins. If a plugin has a valid settings tab item, add it to the settings tab. """ - want_settings = [] for plugin in self.plugins: - settings_tab_item = plugin.has_settings_tab_item() - #print plugin , settings_tab_item - if settings_tab_item: + settings_tab = plugin.get_settings_tab() + if settings_tab is not None: log.debug('Inserting settings tab item from %s' % plugin.name) - want_settings.append(plugin) - #mediatoolbox.addItem(media_manager_item, plugin.icon, media_manager_item.title) - return want_settings + settingsform.addTab(settings_tab) + else: + log.debug('No settings in %s' % plugin.name) def hook_import_menu(self, import_menu): """ @@ -138,5 +138,5 @@ class PluginManager(object): for plugin in self.plugins: plugin.add_export_menu_item(export_menu) - def hook_handle_event(self, event): + def hook_handle_event(self, event): pass diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index eede4d081..279bc1861 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -20,12 +20,15 @@ Place, Suite 330, Boston, MA 02111-1307 USA from slidecontroller import SlideController from splashscreen import SplashScreen +from alertstab import AlertsTab +from generaltab import GeneralTab +from themestab import ThemesTab from about import AboutForm -from alertform import AlertForm +#from alertform import AlertForm from generalform import GeneralForm from settingsform import SettingsForm from servicemanager import ServiceManager from mainwindow import MainWindow -__all__ = ['SplashScreen', 'AboutForm', 'AlertForm', 'SettingsForm', +__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'MainWindow', 'SlideController', 'ServiceManager,GeneralForm'] diff --git a/openlp/core/ui/alertstab.py b/openlp/core/ui/alertstab.py new file mode 100644 index 000000000..cbd5ea794 --- /dev/null +++ b/openlp/core/ui/alertstab.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 +""" +OpenLP - Open Source Lyrics Projection +Copyright (c) 2008 Raoul Snyman +Portions copyright (c) 2008 Martin Thompson, Tim Bentley, + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from PyQt4 import QtCore, QtGui + +from openlp.core import translate +from openlp.core.lib import SettingsTab +from openlp.core.resources import * + +class AlertsTab(SettingsTab): + """ + AlertsTab is the alerts settings tab in the settings dialog. + """ + def __init__(self): + SettingsTab.__init__(self, u'Alerts') + + def setupUi(self): + self.setObjectName(u'AlertsTab') + self.AlertsLayout = QtGui.QHBoxLayout(self) + self.AlertsLayout.setSpacing(8) + self.AlertsLayout.setMargin(8) + self.AlertsLayout.setObjectName(u'AlertsLayout') + self.AlertLeftColumn = QtGui.QWidget(self) + self.AlertLeftColumn.setObjectName(u'AlertLeftColumn') + self.SlideLeftLayout = QtGui.QVBoxLayout(self.AlertLeftColumn) + self.SlideLeftLayout.setSpacing(8) + self.SlideLeftLayout.setMargin(0) + self.SlideLeftLayout.setObjectName(u'SlideLeftLayout') + self.FontGroupBox = QtGui.QGroupBox(self.AlertLeftColumn) + self.FontGroupBox.setObjectName(u'FontGroupBox') + self.FontLayout = QtGui.QVBoxLayout(self.FontGroupBox) + self.FontLayout.setSpacing(8) + self.FontLayout.setMargin(8) + self.FontLayout.setObjectName(u'FontLayout') + self.FontLabel = QtGui.QLabel(self.FontGroupBox) + self.FontLabel.setObjectName(u'FontLabel') + self.FontLayout.addWidget(self.FontLabel) + self.FontComboBox = QtGui.QFontComboBox(self.FontGroupBox) + self.FontComboBox.setObjectName(u'FontComboBox') + self.FontLayout.addWidget(self.FontComboBox) + self.ColorWidget = QtGui.QWidget(self.FontGroupBox) + self.ColorWidget.setObjectName(u'ColorWidget') + self.ColorLayout = QtGui.QHBoxLayout(self.ColorWidget) + self.ColorLayout.setSpacing(8) + self.ColorLayout.setMargin(0) + self.ColorLayout.setObjectName(u'ColorLayout') + self.FontColorLabel = QtGui.QLabel(self.ColorWidget) + self.FontColorLabel.setObjectName(u'FontColorLabel') + self.ColorLayout.addWidget(self.FontColorLabel) + self.FontColorPanel = QtGui.QGraphicsView(self.ColorWidget) + self.FontColorPanel.setMinimumSize(QtCore.QSize(24, 24)) + self.FontColorPanel.setMaximumSize(QtCore.QSize(24, 24)) + self.FontColorPanel.setObjectName(u'FontColorPanel') + self.ColorLayout.addWidget(self.FontColorPanel) + self.ColorSpacerItem = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.ColorLayout.addItem(self.ColorSpacerItem) + self.BackgroundColorLabel = QtGui.QLabel(self.ColorWidget) + self.BackgroundColorLabel.setObjectName(u'BackgroundColorLabel') + self.ColorLayout.addWidget(self.BackgroundColorLabel) + self.BackgroundColorPanel = QtGui.QGraphicsView(self.ColorWidget) + self.BackgroundColorPanel.setMinimumSize(QtCore.QSize(24, 24)) + self.BackgroundColorPanel.setMaximumSize(QtCore.QSize(24, 24)) + self.BackgroundColorPanel.setObjectName(u'BackgroundColorPanel') + self.ColorLayout.addWidget(self.BackgroundColorPanel) + self.FontLayout.addWidget(self.ColorWidget) + self.LengthWidget = QtGui.QWidget(self.FontGroupBox) + self.LengthWidget.setObjectName(u'LengthWidget') + self.LengthLayout = QtGui.QHBoxLayout(self.LengthWidget) + self.LengthLayout.setSpacing(8) + self.LengthLayout.setMargin(0) + self.LengthLayout.setObjectName(u'LengthLayout') + self.LengthLabel = QtGui.QLabel(self.LengthWidget) + self.LengthLabel.setObjectName(u'LengthLabel') + self.LengthLayout.addWidget(self.LengthLabel) + self.LengthSpinBox = QtGui.QSpinBox(self.LengthWidget) + self.LengthSpinBox.setMaximum(180) + self.LengthSpinBox.setProperty(u'value', QtCore.QVariant(5)) + self.LengthSpinBox.setObjectName(u'LengthSpinBox') + self.LengthLayout.addWidget(self.LengthSpinBox) + self.LengthSpacer = QtGui.QSpacerItem(147, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.LengthLayout.addItem(self.LengthSpacer) + self.FontLayout.addWidget(self.LengthWidget) + self.SlideLeftLayout.addWidget(self.FontGroupBox) + self.SlideLeftSpacer = QtGui.QSpacerItem(20, 94, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.SlideLeftLayout.addItem(self.SlideLeftSpacer) + self.AlertsLayout.addWidget(self.AlertLeftColumn) + self.SlideRightColumn = QtGui.QWidget(self) + self.SlideRightColumn.setObjectName(u'SlideRightColumn') + self.SlideRightLayout = QtGui.QVBoxLayout(self.SlideRightColumn) + self.SlideRightLayout.setSpacing(8) + self.SlideRightLayout.setMargin(0) + self.SlideRightLayout.setObjectName(u'SlideRightLayout') + self.PreviewGroupBox = QtGui.QGroupBox(self.SlideRightColumn) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.PreviewGroupBox.sizePolicy().hasHeightForWidth()) + self.PreviewGroupBox.setSizePolicy(sizePolicy) + self.PreviewGroupBox.setObjectName(u'PreviewGroupBox') + self.PreviewLayout = QtGui.QVBoxLayout(self.PreviewGroupBox) + self.PreviewLayout.setSpacing(8) + self.PreviewLayout.setMargin(8) + self.PreviewLayout.setObjectName(u'PreviewLayout') + self.FontPreview = QtGui.QGraphicsView(self.PreviewGroupBox) + self.FontPreview.setMaximumSize(QtCore.QSize(16777215, 64)) + self.FontPreview.setObjectName(u'FontPreview') + self.PreviewLayout.addWidget(self.FontPreview) + self.SlideRightLayout.addWidget(self.PreviewGroupBox) + self.SlideRightSpacer = QtGui.QSpacerItem(20, 40, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.SlideRightLayout.addItem(self.SlideRightSpacer) + + def retranslateUi(self): + self.FontGroupBox.setTitle(translate(u'AlertsTab', u'Font')) + self.FontLabel.setText(translate(u'AlertsTab', u'Font Name:')) + self.FontColorLabel.setText(translate(u'AlertsTab', u'Font Color:')) + self.BackgroundColorLabel.setText(translate(u'AlertsTab', u'Background Color:')) + self.LengthLabel.setText(translate(u'AlertsTab', u'Display length:')) + self.LengthSpinBox.setSuffix(translate(u'AlertsTab', u's')) + self.PreviewGroupBox.setTitle(translate(u'AlertsTab', u'Preview')) diff --git a/openlp/core/ui/generalform.py b/openlp/core/ui/generalform.py index a3505538a..14b6649bb 100644 --- a/openlp/core/ui/generalform.py +++ b/openlp/core/ui/generalform.py @@ -21,7 +21,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA from PyQt4 import QtCore, QtGui from openlp.core.resources import * -from openlp.core.lib import SettingsTabItem +from openlp.core.lib import SettingsTab class GeneralForm(object): """ @@ -32,9 +32,9 @@ class GeneralForm(object): def __init__(self): pass def get_settings_tab_item(self): - + self.SettingsTabItem= SettingsTabItem() - + self.DisplayTab = QtGui.QWidget() self.DisplayTab.setObjectName("DisplayTab") self.DisplayTabLayout = QtGui.QHBoxLayout(self.DisplayTab) @@ -122,22 +122,22 @@ class GeneralForm(object): self.MonitorComboBox.setItemText(1, QtGui.QApplication.translate("SettingsForm", "Monitor 2 on X11 Windowing System", None, QtGui.QApplication.UnicodeUTF8)) self.FontSizeGroupBox.setTitle(QtGui.QApplication.translate("SettingsForm", "Font Size", None, QtGui.QApplication.UnicodeUTF8)) self.AutoResizeRadioButton.setText(QtGui.QApplication.translate("SettingsForm", "Automatically resize font to fit text to slide", None, QtGui.QApplication.UnicodeUTF8)) - self.WrapLinesRadioButton.setText(QtGui.QApplication.translate("SettingsForm", "Wrap long lines to keep desired font", None, QtGui.QApplication.UnicodeUTF8)) + self.WrapLinesRadioButton.setText(QtGui.QApplication.translate("SettingsForm", "Wrap long lines to keep desired font", None, QtGui.QApplication.UnicodeUTF8)) self.SongDisplayGroupBox.setTitle(QtGui.QApplication.translate("SettingsForm", "Song Display", None, QtGui.QApplication.UnicodeUTF8)) self.EnableCreditsCheckBox.setText(QtGui.QApplication.translate("SettingsForm", "Enable displaying of song credits", None, QtGui.QApplication.UnicodeUTF8)) self.BlankScreenGroupBox.setTitle(QtGui.QApplication.translate("SettingsForm", "Blank Screen", None, QtGui.QApplication.UnicodeUTF8)) self.WarningCheckBox.setText(QtGui.QApplication.translate("SettingsForm", "Show warning on startup", None, QtGui.QApplication.UnicodeUTF8)) self.AutoOpenGroupBox.setTitle(QtGui.QApplication.translate("SettingsForm", "Auto Open Last Service", None, QtGui.QApplication.UnicodeUTF8)) self.AutoOpenCheckBox.setText(QtGui.QApplication.translate("SettingsForm", "Automatically open the last service at startup", None, QtGui.QApplication.UnicodeUTF8)) - + self.SettingsTabItem.setTabText(QtGui.QApplication.translate("SettingsForm", "General", None, QtGui.QApplication.UnicodeUTF8)) self.SettingsTabItem.add_items(self.DisplayTab) return self.SettingsTabItem - + def load_settings(self): pass - + def save_settings(self): pass diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py new file mode 100644 index 000000000..4e5f1c09d --- /dev/null +++ b/openlp/core/ui/generaltab.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 +""" +OpenLP - Open Source Lyrics Projection +Copyright (c) 2008 Raoul Snyman +Portions copyright (c) 2008 Martin Thompson, Tim Bentley, + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from PyQt4 import QtCore, QtGui + +from openlp.core import translate +from openlp.core.lib import SettingsTab +from openlp.core.resources import * + +class GeneralTab(SettingsTab): + """ + GeneralTab is the general settings tab in the settings dialog. + """ + def __init__(self): + SettingsTab.__init__(self, translate(u'GeneralTab', u'General')) + + def setupUi(self): + self.setObjectName(u'GeneralTab') + self.GeneralLayout = QtGui.QHBoxLayout(self) + self.GeneralLayout.setSpacing(8) + self.GeneralLayout.setMargin(8) + self.GeneralLayout.setObjectName(u'GeneralLayout') + self.GeneralLeftWidget = QtGui.QWidget(self) + self.GeneralLeftWidget.setObjectName(u'GeneralLeftWidget') + self.GeneralLeftLayout = QtGui.QVBoxLayout(self.GeneralLeftWidget) + self.GeneralLeftLayout.setObjectName(u'GeneralLeftLayout') + self.MonitorGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget) + self.MonitorGroupBox.setObjectName(u'MonitorGroupBox') + self.MonitorLayout = QtGui.QVBoxLayout(self.MonitorGroupBox) + self.MonitorLayout.setSpacing(8) + self.MonitorLayout.setMargin(8) + self.MonitorLayout.setObjectName(u'MonitorLayout') + self.MonitorLabel = QtGui.QLabel(self.MonitorGroupBox) + self.MonitorLabel.setObjectName(u'MonitorLabel') + self.MonitorLayout.addWidget(self.MonitorLabel) + self.MonitorComboBox = QtGui.QComboBox(self.MonitorGroupBox) + self.MonitorComboBox.setObjectName(u'MonitorComboBox') + self.MonitorComboBox.addItem(QtCore.QString()) + self.MonitorComboBox.addItem(QtCore.QString()) + self.MonitorLayout.addWidget(self.MonitorComboBox) + self.GeneralLeftLayout.addWidget(self.MonitorGroupBox) + self.BlankScreenGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget) + self.BlankScreenGroupBox.setObjectName(u'BlankScreenGroupBox') + self.BlankScreenLayout = QtGui.QVBoxLayout(self.BlankScreenGroupBox) + self.BlankScreenLayout.setSpacing(8) + self.BlankScreenLayout.setMargin(8) + self.BlankScreenLayout.setObjectName(u'BlankScreenLayout') + self.WarningCheckBox = QtGui.QCheckBox(self.BlankScreenGroupBox) + self.WarningCheckBox.setObjectName(u'WarningCheckBox') + self.BlankScreenLayout.addWidget(self.WarningCheckBox) + self.GeneralLeftLayout.addWidget(self.BlankScreenGroupBox) + self.AutoOpenGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget) + self.AutoOpenGroupBox.setObjectName(u'AutoOpenGroupBox') + self.AutoOpenLayout = QtGui.QVBoxLayout(self.AutoOpenGroupBox) + self.AutoOpenLayout.setObjectName(u'AutoOpenLayout') + self.AutoOpenCheckBox = QtGui.QCheckBox(self.AutoOpenGroupBox) + self.AutoOpenCheckBox.setObjectName(u'AutoOpenCheckBox') + self.AutoOpenLayout.addWidget(self.AutoOpenCheckBox) + self.GeneralLeftLayout.addWidget(self.AutoOpenGroupBox) + self.GeneralLeftSpacer = QtGui.QSpacerItem(20, 40, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.GeneralLeftLayout.addItem(self.GeneralLeftSpacer) + self.GeneralLayout.addWidget(self.GeneralLeftWidget) + self.GeneralRightWidget = QtGui.QWidget(self) + self.GeneralRightWidget.setObjectName(u'GeneralRightWidget') + self.GeneralRightLayout = QtGui.QVBoxLayout(self.GeneralRightWidget) + self.GeneralRightLayout.setSpacing(8) + self.GeneralRightLayout.setMargin(0) + self.GeneralRightLayout.setObjectName(u'GeneralRightLayout') + self.CCLIGroupBox = QtGui.QGroupBox(self.GeneralRightWidget) + self.CCLIGroupBox.setObjectName(u'CCLIGroupBox') + self.CCLILayout = QtGui.QGridLayout(self.CCLIGroupBox) + self.CCLILayout.setMargin(8) + self.CCLILayout.setSpacing(8) + self.CCLILayout.setObjectName(u'CCLILayout') + self.NumberLabel = QtGui.QLabel(self.CCLIGroupBox) + self.NumberLabel.setObjectName(u'NumberLabel') + self.CCLILayout.addWidget(self.NumberLabel, 0, 0, 1, 1) + self.NumberEdit = QtGui.QLineEdit(self.CCLIGroupBox) + self.NumberEdit.setObjectName(u'NumberEdit') + self.CCLILayout.addWidget(self.NumberEdit, 0, 1, 1, 1) + self.UsernameLabel = QtGui.QLabel(self.CCLIGroupBox) + self.UsernameLabel.setObjectName(u'UsernameLabel') + self.CCLILayout.addWidget(self.UsernameLabel, 1, 0, 1, 1) + self.UsernameEdit = QtGui.QLineEdit(self.CCLIGroupBox) + self.UsernameEdit.setObjectName(u'UsernameEdit') + self.CCLILayout.addWidget(self.UsernameEdit, 1, 1, 1, 1) + self.PasswordLabel = QtGui.QLabel(self.CCLIGroupBox) + self.PasswordLabel.setObjectName(u'PasswordLabel') + self.CCLILayout.addWidget(self.PasswordLabel, 2, 0, 1, 1) + self.PasswordEdit = QtGui.QLineEdit(self.CCLIGroupBox) + self.PasswordEdit.setEchoMode(QtGui.QLineEdit.Password) + self.PasswordEdit.setObjectName(u'PasswordEdit') + self.CCLILayout.addWidget(self.PasswordEdit, 2, 1, 1, 1) + self.GeneralRightLayout.addWidget(self.CCLIGroupBox) + self.GeneralRightSpacer = QtGui.QSpacerItem(20, 40, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.GeneralRightLayout.addItem(self.GeneralRightSpacer) + self.GeneralLayout.addWidget(self.GeneralRightWidget) + + def retranslateUi(self): + self.MonitorGroupBox.setTitle(translate(u'GeneralTab', u'Monitors')) + self.MonitorLabel.setText(translate(u'GeneralTab', u'Select monitor for output display:')) + self.MonitorComboBox.setItemText(0, translate(u'GeneralTab', u'Monitor 1 on X11 Windowing System')) + self.MonitorComboBox.setItemText(1, translate(u'GeneralTab', u'Monitor 2 on X11 Windowing System')) + self.BlankScreenGroupBox.setTitle(translate(u'GeneralTab', u'Blank Screen')) + self.WarningCheckBox.setText(translate(u'GeneralTab', u'Show warning on startup')) + self.AutoOpenGroupBox.setTitle(translate(u'GeneralTab', u'Auto Open Last Service')) + self.AutoOpenCheckBox.setText(translate(u'GeneralTab', u'Automatically open the last service at startup')) + self.CCLIGroupBox.setTitle(translate(u'GeneralTab', u'CCLI Details')) + self.NumberLabel.setText(translate(u'GeneralTab', u'CCLI Number:')) + self.UsernameLabel.setText(translate(u'GeneralTab', u'SongSelect Username:')) + self.PasswordLabel.setText(translate(u'GeneralTab', u'SongSelect Password:')) + diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index f4deeeae4..5c72d5fc9 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -25,9 +25,9 @@ from PyQt4 import QtCore, QtGui from openlp.core.resources import * -from openlp.core.ui import SlideController, ServiceManager -from openlp.core.ui import AboutForm, AlertForm, SettingsForm, SlideController, GeneralForm -from openlp.core.lib import Plugin, MediaManagerItem, SettingsTabItem +from openlp.core.ui import AboutForm, SettingsForm, \ + SlideController, ServiceManager, GeneralForm +from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab from openlp.core import PluginManager import logging @@ -39,35 +39,33 @@ class MainWindow(object): def __init__(self): self.main_window = QtGui.QMainWindow() self.about_form = AboutForm() - self.alert_form = AlertForm() + #self.alert_form = AlertForm() self.settings_form = SettingsForm() - self.general_form = GeneralForm() + #self.general_form = GeneralForm() pluginpath = os.path.split(os.path.abspath(__file__))[0] pluginpath = os.path.abspath(os.path.join(pluginpath, '..', '..','plugins')) self.plugin_manager = PluginManager(pluginpath) self.setupUi() - + + log.info('') self.plugin_manager.find_plugins(pluginpath, self.PreviewController, self.LiveController) - log.info("hook Settings") - #Add Core Componets who provide Settings tabs - self.settings_form.add_virtual_plugin(self.general_form) - self.settings_form.add_virtual_plugin(self.alert_form) - #Call hook method to see which plugins have setting tabs. - self.settings_form.receive_plugins(self.plugin_manager.hook_settings_tabs()) - self.settings_form.generateUi() - # hook methods have to happen after find_plugins. Find plugins needs the controllers - # hence the hooks have moved front setupUI() to here - # Call the hook method to pull in import menus. - log.info("hook menus") - self.plugin_manager.hook_import_menu(self.FileImportMenu) - # - # Call the hook method to pull in export menus. - self.plugin_manager.hook_import_menu(self.FileExportMenu) - # + # hence the hooks have moved from setupUI() to here + + # Find and insert media manager items log.info("hook media") self.plugin_manager.hook_media_manager(self.MediaToolBox) - # End adding media manager items. + + # Find and insert settings tabs + log.info("hook settings") + self.plugin_manager.hook_settings_tabs(self.settings_form) + + # Call the hook method to pull in import menus. + log.info("hook menus") + self.plugin_manager.hook_import_menu(self.FileImportMenu) + + # Call the hook method to pull in export menus. + self.plugin_manager.hook_import_menu(self.FileExportMenu) def setupUi(self): self.main_window.setObjectName("main_window") @@ -133,7 +131,7 @@ class MainWindow(object): self.MediaManagerDock.setSizePolicy(sizePolicy) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/system/system_mediamanager.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - + self.MediaManagerDock.setWindowIcon(icon) self.MediaManagerDock.setFloating(False) self.MediaManagerDock.setObjectName("MediaManagerDock") @@ -155,7 +153,7 @@ class MainWindow(object): self.MediaManagerLayout.addWidget(self.MediaToolBox) self.MediaManagerDock.setWidget(self.MediaManagerContents) self.main_window.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock) - + self.ServiceManagerDock = QtGui.QDockWidget(self.main_window) ServiceManagerIcon = QtGui.QIcon() ServiceManagerIcon.addPixmap(QtGui.QPixmap(":/system/system_servicemanager.png"), @@ -428,10 +426,10 @@ class MainWindow(object): self.main_window.showMaximized() def onHelpAboutItemClicked(self): - self.about_form.show() + self.about_form.exec_() def onToolsAlertItemClicked(self): - self.alert_form.show() + self.alert_form.exec_() def onOptionsSettingsItemClicked(self): self.settings_form.exec_() diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py new file mode 100644 index 000000000..7dad3b6b5 --- /dev/null +++ b/openlp/core/ui/settingsdialog.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/home/raoul/Projects/openlp-2/resources/forms/settings.ui' +# +# Created: Sat Feb 28 23:59:58 2009 +# by: PyQt4 UI code generator 4.4.4 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +class Ui_SettingsDialog(object): + def setupUi(self, SettingsDialog): + SettingsDialog.setObjectName(u'SettingsDialog') + SettingsDialog.resize(724, 502) + #icon = QtGui.QIcon() + #icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + #SettingsDialog.setWindowIcon(icon) + self.SettingsLayout = QtGui.QVBoxLayout(SettingsDialog) + self.SettingsLayout.setSpacing(8) + self.SettingsLayout.setMargin(8) + self.SettingsLayout.setObjectName(u'SettingsLayout') + self.SettingsTabWidget = QtGui.QTabWidget(SettingsDialog) + self.SettingsTabWidget.setObjectName(u'SettingsTabWidget') + self.SettingsLayout.addWidget(self.SettingsTabWidget) + self.ButtonsBox = QtGui.QDialogButtonBox(SettingsDialog) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ButtonsBox.sizePolicy().hasHeightForWidth()) + self.ButtonsBox.setSizePolicy(sizePolicy) + self.ButtonsBox.setMaximumSize(QtCore.QSize(16777215, 16777215)) + self.ButtonsBox.setOrientation(QtCore.Qt.Horizontal) + self.ButtonsBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) + self.ButtonsBox.setObjectName("ButtonsBox") + self.SettingsLayout.addWidget(self.ButtonsBox) + + self.retranslateUi(SettingsDialog) + self.SettingsTabWidget.setCurrentIndex(0) + QtCore.QObject.connect(self.ButtonsBox, QtCore.SIGNAL("accepted()"), SettingsDialog.accept) + QtCore.QObject.connect(self.ButtonsBox, QtCore.SIGNAL("rejected()"), SettingsDialog.reject) + QtCore.QMetaObject.connectSlotsByName(SettingsDialog) + + def retranslateUi(self, SettingsDialog): + SettingsDialog.setWindowTitle(QtGui.QApplication.translate("SettingsDialog", "Settings", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 65fa1bf53..737180e66 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -17,62 +17,53 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ +import logging from PyQt4 import QtCore, QtGui -from PyQt4.QtGui import QDialog -from openlp.core.lib import SettingsTabItem +from openlp.core.lib import SettingsTab from openlp.core.resources import * -from openlp.core.ui import AlertForm +from openlp.core.ui import GeneralTab, ThemesTab, AlertsTab -class SettingsForm(QDialog): +from settingsdialog import Ui_SettingsDialog + +log = logging.getLogger('SettingsForm') + +class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): def __init__(self, parent=None): - QDialog.__init__(self, parent) - self.first_time = True - self.plugin_list = [] - - def add_virtual_plugin(self, plugin): - """ - Method to allow Core to register screens to behave like plugins - """ - self.plugin_list.append(plugin) - - def receive_plugins(self, plugins): - """ - Method to allow Plugin Manager to add plugins which want settings - """ - print "got plugins ", plugins - for plugin in plugins: - self.plugin_list.append(plugin) - print plugins - - def generateUi(self): - """ - Method build UI. - Called by mainmenu AFTER all plugins have been installed. - """ - if self.first_time: - self.setupUi(self) - self.first_time = False + QtGui.QDialog.__init__(self, parent) + self.setupUi(self) + # General tab + self.GeneralTab = GeneralTab() + self.addTab(self.GeneralTab) + # Themes tab + self.ThemesTab = ThemesTab() + self.addTab(self.ThemesTab) + # Alerts tab + self.AlertsTab = AlertsTab() + self.addTab(self.AlertsTab) - def onSaveButton(self): - pass - def onResetButton(self): + def addTab(self, tab): + log.info(u'Inserting %s' % tab.title()) + self.SettingsTabWidget.addTab(tab, tab.title()) + + def onSaveButtonClick(self): pass + def onResetButtonClick(self): + pass + + """ def setupUi(self, SettingsDialog): SettingsDialog.setObjectName("SettingsDialog") SettingsDialog.resize(602, 502) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off) SettingsDialog.setWindowIcon(icon) - self.SettingsTabWidget = QtGui.QTabWidget(SettingsDialog) self.SettingsTabWidget.setGeometry(QtCore.QRect(0, 0, 669, 500)) self.SettingsTabWidget.setObjectName("SettingsTabWidget") - - self.ThemesTab = QtGui.QWidget() self.ThemesTab.setObjectName("ThemesTab") self.ThemesTabLayout = QtGui.QHBoxLayout(self.ThemesTab) @@ -127,7 +118,7 @@ class SettingsForm(QDialog): self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.GlobalLevelLabel) self.ThemesTabLayout.addWidget(self.LevelGroupBox) self.SettingsTabWidget.addTab(self.ThemesTab, "") - + self.SlideTab = QtGui.QWidget() self.SlideTab.setObjectName("SlideTab") self.SlideLayout = QtGui.QHBoxLayout(self.SlideTab) @@ -236,14 +227,14 @@ class SettingsForm(QDialog): self.SlideRightLayout.addItem(spacerItem5) self.SlideLayout.addWidget(self.widget) self.SettingsTabWidget.addTab(self.SlideTab, "") - + #### Core Code below here - + for plugin in self.plugin_list: settings_tab_item = plugin.get_settings_tab_item() if settings_tab_item is not None: self.SettingsTabWidget.addTab(settings_tab_item, settings_tab_item.tabText) - + self.SaveButton = QtGui.QPushButton(SettingsDialog) self.SaveButton.setGeometry(QtCore.QRect(490, 470, 81, 26)) self.SaveButton.setObjectName("SaveButton") @@ -253,15 +244,15 @@ class SettingsForm(QDialog): self.ResetButton = QtGui.QPushButton(SettingsDialog) self.ResetButton.setGeometry(QtCore.QRect(310, 470, 81, 26)) self.ResetButton.setObjectName("ResetButton") - - QtCore.QObject.connect(self.CancelButton, QtCore.SIGNAL("clicked()"), self.close) + + QtCore.QObject.connect(self.CancelButton, QtCore.SIGNAL("clicked()"), self.close) self.retranslateUi(SettingsDialog) self.SettingsTabWidget.setCurrentIndex(5) QtCore.QMetaObject.connectSlotsByName(SettingsDialog) def retranslateUi(self, SettingsDialog): - SettingsDialog.setWindowTitle(QtGui.QApplication.translate("SettingsDialog", "Settings", None, QtGui.QApplication.UnicodeUTF8)) + SettingsDialog.setWindowTitle(QtGui.QApplication.translate("SettingsDialog", "Settings", None, QtGui.QApplication.UnicodeUTF8)) self.GlobalGroupBox.setTitle(QtGui.QApplication.translate("SettingsDialog", "Global theme", None, QtGui.QApplication.UnicodeUTF8)) self.DefaultComboBox.setItemText(0, QtGui.QApplication.translate("SettingsDialog", "African Sunset", None, QtGui.QApplication.UnicodeUTF8)) @@ -290,8 +281,8 @@ class SettingsForm(QDialog): self.SearchGroupBox_3.setTitle(QtGui.QApplication.translate("SettingsDialog", "Search", None, QtGui.QApplication.UnicodeUTF8)) self.SearchCheckBox_3.setText(QtGui.QApplication.translate("SettingsDialog", "Enabled search-as-you-type", None, QtGui.QApplication.UnicodeUTF8)) self.SettingsTabWidget.setTabText(self.SettingsTabWidget.indexOf(self.SlideTab), QtGui.QApplication.translate("SettingsDialog", "Songs", None, QtGui.QApplication.UnicodeUTF8)) - + self.SaveButton.setText(QtGui.QApplication.translate("SettingsDialog", "Save", None, QtGui.QApplication.UnicodeUTF8)) self.CancelButton.setText(QtGui.QApplication.translate("SettingsDialog", "Cancel", None, QtGui.QApplication.UnicodeUTF8)) self.ResetButton.setText(QtGui.QApplication.translate("SettingsDialog", "Reset", None, QtGui.QApplication.UnicodeUTF8)) - + """ diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py new file mode 100644 index 000000000..98b3f0e73 --- /dev/null +++ b/openlp/core/ui/themestab.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 +""" +OpenLP - Open Source Lyrics Projection +Copyright (c) 2008 Raoul Snyman +Portions copyright (c) 2008 Martin Thompson, Tim Bentley, + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from PyQt4 import QtCore, QtGui + +from openlp.core import translate +from openlp.core.lib import SettingsTab +from openlp.core.resources import * + +class ThemesTab(SettingsTab): + """ + ThemesTab is the theme settings tab in the settings dialog. + """ + def __init__(self): + SettingsTab.__init__(self, u'Themes') + + def setupUi(self): + self.setObjectName(u'ThemesTab') + self.ThemesTabLayout = QtGui.QHBoxLayout(self) + self.ThemesTabLayout.setSpacing(8) + self.ThemesTabLayout.setMargin(8) + self.ThemesTabLayout.setObjectName(u'ThemesTabLayout') + self.GlobalGroupBox = QtGui.QGroupBox(self) + self.GlobalGroupBox.setObjectName(u'GlobalGroupBox') + self.GlobalGroupBoxLayout = QtGui.QVBoxLayout(self.GlobalGroupBox) + self.GlobalGroupBoxLayout.setSpacing(8) + self.GlobalGroupBoxLayout.setMargin(8) + self.GlobalGroupBoxLayout.setObjectName(u'GlobalGroupBoxLayout') + self.DefaultComboBox = QtGui.QComboBox(self.GlobalGroupBox) + self.DefaultComboBox.setObjectName(u'DefaultComboBox') + self.DefaultComboBox.addItem(QtCore.QString()) + self.DefaultComboBox.addItem(QtCore.QString()) + self.DefaultComboBox.addItem(QtCore.QString()) + self.GlobalGroupBoxLayout.addWidget(self.DefaultComboBox) + self.DefaultListView = QtGui.QListView(self.GlobalGroupBox) + self.DefaultListView.setObjectName(u'DefaultListView') + self.GlobalGroupBoxLayout.addWidget(self.DefaultListView) + self.ThemesTabLayout.addWidget(self.GlobalGroupBox) + self.LevelGroupBox = QtGui.QGroupBox(self) + self.LevelGroupBox.setObjectName(u'LevelGroupBox') + self.LevelLayout = QtGui.QFormLayout(self.LevelGroupBox) + self.LevelLayout.setLabelAlignment( + QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.LevelLayout.setFormAlignment( + QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.LevelLayout.setMargin(8) + self.LevelLayout.setSpacing(8) + self.LevelLayout.setObjectName(u'LevelLayout') + self.SongLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox) + self.SongLevelRadioButton.setObjectName(u'SongLevelRadioButton') + self.LevelLayout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.SongLevelRadioButton) + self.SongLevelLabel = QtGui.QLabel(self.LevelGroupBox) + self.SongLevelLabel.setWordWrap(True) + self.SongLevelLabel.setObjectName(u'SongLevelLabel') + self.LevelLayout.setWidget(0, QtGui.QFormLayout.FieldRole, + self.SongLevelLabel) + self.ServiceLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox) + self.ServiceLevelRadioButton.setObjectName(u'ServiceLevelRadioButton') + self.LevelLayout.setWidget(1, QtGui.QFormLayout.LabelRole, + self.ServiceLevelRadioButton) + self.ServiceLevelLabel = QtGui.QLabel(self.LevelGroupBox) + self.ServiceLevelLabel.setWordWrap(True) + self.ServiceLevelLabel.setObjectName(u'ServiceLevelLabel') + self.LevelLayout.setWidget(1, QtGui.QFormLayout.FieldRole, + self.ServiceLevelLabel) + self.GlobalLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox) + self.GlobalLevelRadioButton.setChecked(True) + self.GlobalLevelRadioButton.setObjectName(u'GlobalLevelRadioButton') + self.LevelLayout.setWidget(2, QtGui.QFormLayout.LabelRole, + self.GlobalLevelRadioButton) + self.GlobalLevelLabel = QtGui.QLabel(self.LevelGroupBox) + self.GlobalLevelLabel.setWordWrap(True) + self.GlobalLevelLabel.setObjectName(u'GlobalLevelLabel') + self.LevelLayout.setWidget(2, QtGui.QFormLayout.FieldRole, + self.GlobalLevelLabel) + self.ThemesTabLayout.addWidget(self.LevelGroupBox) + + def retranslateUi(self): + self.GlobalGroupBox.setTitle(translate(u'ThemesTab', u'Global theme')) + self.DefaultComboBox.setItemText(0, translate(u'ThemesTab', u'African Sunset')) + self.DefaultComboBox.setItemText(1, translate(u'ThemesTab', u'Snowy Mountains')) + self.DefaultComboBox.setItemText(2, translate(u'ThemesTab', u'Wilderness')) + self.LevelGroupBox.setTitle(translate(u'ThemesTab', u'Theme level')) + self.SongLevelRadioButton.setText(translate(u'ThemesTab', u'Song level')) + self.SongLevelLabel.setText(translate(u'ThemesTab', u'Use the theme from each song in the database. If a song doesn\'t have a theme associated with it, then use the service\'s theme. If the service doesn\'t have a theme, then use the global theme.')) + self.ServiceLevelRadioButton.setText(translate(u'ThemesTab', u'Service level')) + self.ServiceLevelLabel.setText(translate(u'ThemesTab', u'Use the theme from the service , overriding any of the individual songs\' themes. If the service doesn\'t have a theme, then use the global theme.')) + self.GlobalLevelRadioButton.setText(translate(u'ThemesTab', u'Global level')) + self.GlobalLevelLabel.setText(translate(u'ThemesTab', u'Use the global theme, overriding any themes associated wither either the service or the songs.')) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 8c298c99b..dec6b9ecb 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -24,9 +24,9 @@ from PyQt4.QtCore import * from PyQt4.QtGui import * from openlp.core.resources import * -from openlp.core.lib import Plugin,PluginUtils, MediaManagerItem, Receiver, SettingsTabItem +from openlp.core.lib import Plugin,PluginUtils, MediaManagerItem, Receiver -from openlp.plugins.bibles.lib import BibleManager +from openlp.plugins.bibles.lib import BibleManager, BiblesTab from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib.tables import * @@ -47,15 +47,12 @@ class BiblePlugin(Plugin, PluginUtils): #Register the bible Manager self.biblemanager = BibleManager(self.config) self.search_results = {} # place to store the search results - QtCore.QObject.connect(Receiver().get_receiver(),QtCore.SIGNAL("openlpreloadbibles"),self.reload_bibles) + QtCore.QObject.connect(Receiver().get_receiver(), + QtCore.SIGNAL("openlpreloadbibles"), self.reload_bibles) - def has_settings_tab_item(self): - return True - - def get_settings_tab_item(self): - - self.SettingsTabItem= SettingsTabItem() - + def get_settings_tab(self): + self.BiblesTab = BiblesTab() + """ self.Bibles = QtGui.QWidget() self.Bibles.setObjectName("Bibles") self.formLayout_3 = QtGui.QFormLayout(self.Bibles) @@ -131,11 +128,11 @@ class BiblePlugin(Plugin, PluginUtils): "

Changes don\'t affect verses already in the service

", None, QtGui.QApplication.UnicodeUTF8)) self.SearchGroupBox_2.setTitle(QtGui.QApplication.translate("SettingsForm", "Search", None, QtGui.QApplication.UnicodeUTF8)) self.SearchCheckBox_2.setText(QtGui.QApplication.translate("SettingsForm", "Enabled search-as-you-type", None, QtGui.QApplication.UnicodeUTF8)) - + self.SettingsTabItem.add_items(self.Bibles) self.SettingsTabItem.setTabText(QtGui.QApplication.translate("SettingsForm", "Bibles", None, QtGui.QApplication.UnicodeUTF8)) - - return self.SettingsTabItem + """ + return self.BiblesTab def get_media_manager_item(self): # Create the MediaManagerItem object @@ -213,7 +210,7 @@ class BiblePlugin(Plugin, PluginUtils): self.SearchTabWidget.addTab(self.QuickTab, 'Quick') QuickSpacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.QuickLayout.addItem(QuickSpacerItem, 4, 2, 1, 1) - + # Add the Advanced Search tab self.AdvancedTab = QtGui.QWidget() self.AdvancedTab.setObjectName('AdvancedTab') @@ -271,13 +268,13 @@ class BiblePlugin(Plugin, PluginUtils): self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab) self.ClearAdvancedSearchComboBox.setObjectName('ClearAdvancedSearchComboBox') self.AdvancedLayout.addWidget(self.ClearAdvancedSearchComboBox, 5, 2, 1, 1) - + self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab) self.AdvancedSearchButton.setObjectName('AdvancedSearchButton') self.AdvancedSearchButton.setText('Search') self.AdvancedLayout.addWidget(self.AdvancedSearchButton, 5, 3, 1, 1) self.SearchTabWidget.addTab(self.AdvancedTab, 'Advanced') - + # Add the search tab widget to the page layout self.MediaManagerItem.PageLayout.addWidget(self.SearchTabWidget) @@ -306,7 +303,7 @@ class BiblePlugin(Plugin, PluginUtils): ##############Buttons QtCore.QObject.connect(self.AdvancedSearchButton, QtCore.SIGNAL("pressed()"), self.onAdvancedSearchButton) QtCore.QObject.connect(self.QuickSearchButton, QtCore.SIGNAL("pressed()"), self.onQuickSearchButton) - + ##############Context Menus self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) @@ -322,7 +319,7 @@ class BiblePlugin(Plugin, PluginUtils): self.ImportBibleItem.setText(QtGui.QApplication.translate("main_window", "&Bible", None, QtGui.QApplication.UnicodeUTF8)) # Signals and slots QtCore.QObject.connect(self.ImportBibleItem, QtCore.SIGNAL("triggered()"), self.onBibleNewClick) - + def add_export_menu_item(self, export_menu): self.ExportBibleItem = QtGui.QAction(export_menu) self.ExportBibleItem.setObjectName("ExportBibleItem") @@ -331,35 +328,35 @@ class BiblePlugin(Plugin, PluginUtils): def initialise(self): self._initialise_form() # build the form - + def _initialise_form(self): log.debug("_initialise_form") self.QuickSearchComboBox.clear() self.QuickVersionComboBox.clear() self.AdvancedVersionComboBox.clear() self.ClearQuickSearchComboBox.clear() - self.ClearAdvancedSearchComboBox.clear() - - self.QuickSearchComboBox.addItem(u"Verse Search") + self.ClearAdvancedSearchComboBox.clear() + + self.QuickSearchComboBox.addItem(u"Verse Search") self.QuickSearchComboBox.addItem(u"Text Search") - self.ClearQuickSearchComboBox.addItem(u"Clear") - self.ClearQuickSearchComboBox.addItem(u"Keep") - self.ClearAdvancedSearchComboBox.addItem(u"Clear") + self.ClearQuickSearchComboBox.addItem(u"Clear") + self.ClearQuickSearchComboBox.addItem(u"Keep") + self.ClearAdvancedSearchComboBox.addItem(u"Clear") self.ClearAdvancedSearchComboBox.addItem(u"Keep") bibles = self.biblemanager.get_bibles("full") for b in bibles: # load bibles into the combo boxes self.QuickVersionComboBox.addItem(b) - + bibles = self.biblemanager.get_bibles("partial") # Without HTTP first = True for b in bibles: # load bibles into the combo boxes - self.AdvancedVersionComboBox.addItem(b) + self.AdvancedVersionComboBox.addItem(b) if first: first = False - self._initialise_bible_advanced(b) # use the first bible as the trigger - + self._initialise_bible_advanced(b) # use the first bible as the trigger + def onAdvancedVersionComboBox(self): self._initialise_bible_advanced(str(self.AdvancedVersionComboBox.currentText())) # restet the bible info pass @@ -374,7 +371,7 @@ class BiblePlugin(Plugin, PluginUtils): def onBibleLiveClick(self): pass - + def onBibleAddClick(self): pass @@ -382,7 +379,7 @@ class BiblePlugin(Plugin, PluginUtils): self._save_settings() def onSettingsResetButton(self): - self._load_reset_settings() + self._load_reset_settings() def onAdvancedFromVerse(self): frm = self.AdvancedFromVerse.currentText() @@ -407,7 +404,7 @@ class BiblePlugin(Plugin, PluginUtils): self.search_results = self.biblemanager.get_verse_text(bible, book, chapter_from, chapter_to, verse_from, verse_to) if self.ClearAdvancedSearchComboBox.currentText() == u"Clear": self.BibleListView.clear() # clear the results - self.BibleListView.setRowCount(0) + self.BibleListView.setRowCount(0) self._display_results(bible) def onAdvancedFromChapter(self): @@ -423,11 +420,11 @@ class BiblePlugin(Plugin, PluginUtils): self.log.debug("onQuickSearchButton") bible = str(self.QuickVersionComboBox.currentText()) text = str(self.QuickSearchEdit.displayText()) - + if self.ClearQuickSearchComboBox.currentText() == u"Clear": self.BibleListView.clear() # clear the results - self.BibleListView.setRowCount(0) - + self.BibleListView.setRowCount(0) + if self.QuickSearchComboBox.currentText() == u"Text Search": self.search_results = self.biblemanager.get_verse_from_text(bible,text) else: @@ -469,11 +466,11 @@ class BiblePlugin(Plugin, PluginUtils): loc += verse loc += closing return loc - + def reload_bibles(self): self.biblemanager.reload_bibles() self._initialise_form() - + def _initialise_bible_advanced(self, bible): log.debug("_initialise_bible_advanced %s ", bible) currentBook = str(self.AdvancedBookComboBox.currentText()) @@ -512,7 +509,7 @@ class BiblePlugin(Plugin, PluginUtils): self.BibleListView.setItem(row_count , 0, table_data) table_data = QtGui.QTableWidgetItem(str(book + " " +str(chap) + ":"+ str(vse)) + " ("+str(bible)+")") self.BibleListView.setItem(row_count , 1, table_data) - self.BibleListView.setRowHeight(row_count, 20) + self.BibleListView.setRowHeight(row_count, 20) def _search_using_bible_reference(self, bible, search): book = "" @@ -528,7 +525,7 @@ class BiblePlugin(Plugin, PluginUtils): for i in range (len(search)-1, 0, -1): # 0 index arrays if search[i] == " ": book = search[:i] - search = search[i:] # remove book from string + search = search[i:] # remove book from string break search = search.replace("v", ":") # allow V or v for verse instead of : search = search.replace("V", ":") # allow V or v for verse instead of : @@ -551,7 +548,7 @@ class BiblePlugin(Plugin, PluginUtils): sp = search.split("-") #find first #print sp, len(sp) sp1 = sp[0].split(":") - #print sp1, len(sp1) + #print sp1, len(sp1) if len(sp1) == 1: start_chapter = sp1[0] start_verse = 1 @@ -563,7 +560,7 @@ class BiblePlugin(Plugin, PluginUtils): end_verse = start_verse else: sp1 = sp[1].split(":") - #print sp1, len(sp1) + #print sp1, len(sp1) if len(sp1) == 1: end_chapter = sp1[0] end_verse = 1 @@ -584,13 +581,13 @@ class BiblePlugin(Plugin, PluginUtils): #print "message = " + str(message) #print "search = " + str(original) #print "results = " + str(book) + " @ "+ str(start_chapter)+" @ "+ str(end_chapter)+" @ "+ str(start_verse)+ " @ "+ str(end_verse) - + if message == None: self.search_results = None self.search_results = self.biblemanager.get_verse_text(bible, book,int(start_chapter), int(end_chapter), int(start_verse), int(end_verse)) else: reply = QtGui.QMessageBox.information(self.MediaManagerItem,"Information",message) - + def load_settings(self): pass # self.SettingsOutputStyleComboBox.setCurrentIndex(int(self.config.get_config("bible_output_style", 0))) @@ -599,7 +596,7 @@ class BiblePlugin(Plugin, PluginUtils): # self.SettingsNewChapterCheck.setCheckState(int(self.config.get_config("bible_new_chapter", 0))) # except: # pass - + def save_settings(self): pass # self.config.set_config("bible_output_style", str(self.SettingsOutputStyleComboBox.currentIndex())) @@ -607,10 +604,10 @@ class BiblePlugin(Plugin, PluginUtils): # self.config.set_config("bible_new_chapter", str(self.SettingsNewChapterCheck.checkState())) # self.SettingsOutputStyleComboBox.clear() -# self.SettingsVerseStyleComboBox.clear() +# self.SettingsVerseStyleComboBox.clear() # self.SettingsOutputStyleComboBox.addItem(u"Continuous") -# self.SettingsOutputStyleComboBox.addItem(u"Paragraph") +# self.SettingsOutputStyleComboBox.addItem(u"Paragraph") # self.SettingsVerseStyleComboBox.addItem(u"No Brackets") # self.SettingsVerseStyleComboBox.addItem(u"( and )") # self.SettingsVerseStyleComboBox.addItem(u"{ and }") @@ -620,4 +617,4 @@ class BiblePlugin(Plugin, PluginUtils): def define_tab(self): pass # QtCore.QObject.connect(self.SettingsResetButton, QtCore.SIGNAL("pressed()"), self.onSettingsResetButton) -# QtCore.QObject.connect(self.SettingsSaveButton, QtCore.SIGNAL("pressed()"), self.onSettingsSaveButton) +# QtCore.QObject.connect(self.SettingsSaveButton, QtCore.SIGNAL("pressed()"), self.onSettingsSaveButton) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index ad6a0c0b3..12bfd011b 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -20,5 +20,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA from common import BibleCommon from manager import BibleManager +from biblestab import BiblesTab -__all__ = ['BibleCommon', 'BibleManager'] +__all__ = ['BibleCommon', 'BibleManager', 'BiblesTab'] diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py new file mode 100644 index 000000000..9632c67fe --- /dev/null +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 +""" +OpenLP - Open Source Lyrics Projection +Copyright (c) 2008 Raoul Snyman +Portions copyright (c) 2008 Martin Thompson, Tim Bentley, + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from PyQt4 import QtCore, QtGui + +from openlp.core import translate +from openlp.core.lib import SettingsTab +from openlp.core.resources import * + +class BiblesTab(SettingsTab): + """ + BiblesTab is the Bibles settings tab in the settings dialog. + """ + def __init__(self): + SettingsTab.__init__(self, u'Bibles') + + def setupUi(self): + self.setObjectName(u'BiblesTab') diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index d4b824ac2..e249c23fd 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -18,8 +18,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ from PyQt4 import Qt, QtCore, QtGui -from PyQt4.QtGui import QDialog -from PyQt4.QtCore import pyqtSignature from authorsform import AuthorsForm from topicsform import TopicsForm @@ -27,7 +25,7 @@ from songbookform import SongBookForm from editsongdialog import Ui_EditSongDialog -class EditSongForm(QDialog, Ui_EditSongDialog): +class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): """ Class documentation goes here. """ @@ -35,11 +33,12 @@ class EditSongForm(QDialog, Ui_EditSongDialog): """ Constructor """ - QDialog.__init__(self, parent) + QtGui.QDialog.__init__(self, parent) self.setupUi(self) # Connecting signals and slots QtCore.QObject.connect(self.AddAuthorsButton, QtCore.SIGNAL('clicked()'), self.onAddAuthorsButtonClicked) QtCore.QObject.connect(self.AddTopicButton, QtCore.SIGNAL('clicked()'), self.onAddTopicButtonClicked) + QtCore.QObject.connect(self.AddSongBookButton, QtCore.SIGNAL('clicked()'), self.onAddSongBookButtonClicked) QtCore.QObject.connect(self.CopyrightInsertItem, QtCore.SIGNAL('clicked()'), self.onCopyrightInsertItemTriggered) # Create other objects and forms self.songmanager = songmanager @@ -98,8 +97,7 @@ class EditSongForm(QDialog, Ui_EditSongDialog): self.topics_form.load_form() self.topics_form.exec_() - @pyqtSignature("") - def on_AddSongBookButton_clicked(self): + def onAddSongBookButtonClicked(self): """ Slot documentation goes here. """ diff --git a/openlp/plugins/videos/videoplugin.py b/openlp/plugins/videos/videoplugin.py index 2568fac17..0f0d3af28 100644 --- a/openlp/plugins/videos/videoplugin.py +++ b/openlp/plugins/videos/videoplugin.py @@ -21,7 +21,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.resources import * -from openlp.core.lib import Plugin,PluginUtils, MediaManagerItem, SettingsTabItem +from openlp.core.lib import Plugin, PluginUtils, MediaManagerItem, SettingsTab class VideoPlugin(Plugin, PluginUtils): def __init__(self): @@ -32,14 +32,10 @@ class VideoPlugin(Plugin, PluginUtils): self.icon = QtGui.QIcon() self.icon.addPixmap(QtGui.QPixmap(':/media/media_video.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - - def has_settings_tab_item(self): - return True - def get_settings_tab_item(self): - - self.SettingsTabItem= SettingsTabItem() - + def get_settings_tab(self): + self.VideosTab = SettingsTab(u'Videos') + """ self.Videos = QtGui.QWidget() self.Videos.setObjectName("Videos") @@ -58,13 +54,13 @@ class VideoPlugin(Plugin, PluginUtils): self.UseVMRLabel = QtGui.QLabel(self.VideoModeGroupBox) self.UseVMRLabel.setObjectName("UseVMRLabel") self.VideoModeLayout.addWidget(self.UseVMRLabel) - + self.VideoLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.VideoModeGroupBox) - + self.SettingsTabItem.add_items(self.Videos) - + self.SettingsTabItem.setTabText(QtGui.QApplication.translate("SettingsForm", "Videos", None, QtGui.QApplication.UnicodeUTF8)) - + self.VideoModeGroupBox.setTitle(QtGui.QApplication.translate("SettingsForm", "Video Mode", None, QtGui.QApplication.UnicodeUTF8)) self.UseVMRCheckBox.setText(QtGui.QApplication.translate("SettingsForm", "Use Video Mode Rendering", None, QtGui.QApplication.UnicodeUTF8)) self.UseVMRLabel.setText(QtGui.QApplication.translate("SettingsForm", "\n" @@ -72,9 +68,9 @@ class VideoPlugin(Plugin, PluginUtils): "p, li { white-space: pre-wrap; }\n" "\n" "

No video preview available with VMR enabled

", None, QtGui.QApplication.UnicodeUTF8)) - - return self.SettingsTabItem - + """ + return self.VideosTab + def get_media_manager_item(self): # Create the MediaManagerItem object self.MediaManagerItem = MediaManagerItem(self.icon, 'Videos') @@ -105,49 +101,49 @@ class VideoPlugin(Plugin, PluginUtils): self.VideoListView.setColumnHidden(0, True) self.VideoListView.setColumnWidth(1, 275) self.VideoListView.setShowGrid(False) - self.VideoListView.setSortingEnabled(False) + self.VideoListView.setSortingEnabled(False) self.VideoListView.setAlternatingRowColors(True) self.VideoListView.verticalHeader().setVisible(False) - self.VideoListView.horizontalHeader().setVisible(False) + self.VideoListView.horizontalHeader().setVisible(False) self.VideoListView.setAlternatingRowColors(True) self.VideoListView.setGeometry(QtCore.QRect(10, 100, 256, 591)) self.VideoListView.setObjectName("VideoListView") self.MediaManagerItem.PageLayout.addWidget(self.VideoListView) - + #define and add the context menu self.VideoListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) - self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_preview.png', "&Preview Video", self.onVideoPreviewClick)) - self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_live.png', "&Show Live", self.onVideoLiveClick)) - self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_add.png', "&Add to Service", self.onVideoAddClick)) + self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_preview.png', "&Preview Video", self.onVideoPreviewClick)) + self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_live.png', "&Show Live", self.onVideoLiveClick)) + self.VideoListView.addAction(self.add_to_context_menu(self.VideoListView, ':/system/system_add.png', "&Add to Service", self.onVideoAddClick)) return self.MediaManagerItem def initialise(self): list = self._load_display_list() - self._load_video_list(list) + self._load_video_list(list) def onVideoNewClick(self): files = QtGui.QFileDialog.getOpenFileNames(None, "Select Image(s)", self._get_last_dir(), "Images (*.avi *.mpeg)") if len(files) > 0: self._load_video_list(files) self._save_last_directory(files[0]) - self._save_display_list(self.VideoListView) + self._save_display_list(self.VideoListView) def _load_video_list(self, list): for f in list: - file_path , file_name = os.path.split(str(f)) + file_path , file_name = os.path.split(str(f)) count = self.VideoListView.rowCount() self.VideoListView.setRowCount(count+1) row_item = QtGui.QTableWidgetItem(str(f)) self.VideoListView.setItem(count , 0, row_item) row_item = QtGui.QTableWidgetItem(str(file_name)) self.VideoListView.setItem(count , 1, row_item) - self.VideoListView.setRowHeight(count, 20) - + self.VideoListView.setRowHeight(count, 20) + def onVideoDeleteClick(self): cr = self.VideoListView.currentRow() self.VideoListView.removeRow(int(cr)) - self._save_display_list(self.VideoListView) + self._save_display_list(self.VideoListView) def onVideoPreviewClick(self): pass diff --git a/resources/forms/settings.ui b/resources/forms/settings.ui index 748b36b85..ea4b773b7 100644 --- a/resources/forms/settings.ui +++ b/resources/forms/settings.ui @@ -28,6 +28,186 @@ 0 + + + General + + + + 8 + + + 8 + + + + + + + + Monitors + + + + 8 + + + 8 + + + + + Select monitor for output display: + + + + + + + + Monitor 1 on X11 Windowing System + + + + + Monitor 2 on X11 Windowing System + + + + + + + + + + + Blank Screen + + + + 8 + + + 8 + + + + + Show warning on startup + + + + + + + + + + Auto Open Last Service + + + + + + Automatically open the last service at startup + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + 8 + + + 0 + + + + + CCLI Details + + + + 8 + + + 8 + + + + + CCLI Number: + + + + + + + + + + SongSelect Username: + + + + + + + + + + SongSelect Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Themes @@ -156,11 +336,11 @@ - + - Display + Alerts - + 8 @@ -168,336 +348,7 @@ 8 - - - - 8 - - - 0 - - - - - Monitors - - - - 8 - - - 8 - - - - - Select monitor for output display: - - - - - - - - Monitor 1 on X11 Windowing System - - - - - Monitor 2 on X11 Windowing System - - - - - - - - - - - Font Size - - - - 8 - - - 8 - - - - - Automatically resize font to fit text to slide - - - true - - - - - - - Wrap long lines to keep desired font - - - - - - - - - - Song Display - - - - 8 - - - 8 - - - - - Enable displaying of song credits - - - true - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - 8 - - - 0 - - - - - Verse Display - - - - 8 - - - 8 - - - - - - 8 - - - 0 - - - - - Verse style - - - - - - - Paragraph style - - - true - - - - - - - - - - Only show new chapter numbers - - - - - - - - 8 - - - 0 - - - - - Display Style: - - - - - - - - No brackets - - - - - ( and ) - - - - - { and } - - - - - [ and ] - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Changes don't affect verses already in the service</span></p></body></html> - - - - - - - - - - Blank Screen - - - - 8 - - - 8 - - - - - Show warning on startup - - - - - - - - - - Video Mode - - - - 8 - - - 8 - - - - - Use Video Mode Rendering - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">No video preview available with VMR enabled</span></p></body></html> - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Slide - - - - 8 - - - 8 - - - + 8 @@ -506,11 +357,11 @@ p, li { white-space: pre-wrap; } 0 - + - Alerts + Font - + 8 @@ -598,16 +449,6 @@ p, li { white-space: pre-wrap; } - - - - - 16777215 - 64 - - - - @@ -673,7 +514,7 @@ p, li { white-space: pre-wrap; } - + 8 @@ -682,11 +523,17 @@ p, li { white-space: pre-wrap; } 0 - - - Song Wizard + + + + 0 + 0 + - + + Preview + + 8 @@ -694,101 +541,12 @@ p, li { white-space: pre-wrap; } 8 - - - Use the Song Wizard to add songs - - - true - - - - - - - - - - Slide Wrap Around - - - - 8 - - - 8 - - - - - Enable slide wrap around - - - - - - - - - - Timed Cycling - - - - 8 - - - 8 - - - - - - 8 - - - 0 - - - - - Update interval: - - - - - - - s - - - 600 - - - 30 - - - - - - - Qt::Horizontal - - - - 139 - 20 - - - - - - - - - - - Enable timed cycling + + + + 16777215 + 64 + @@ -813,153 +571,6 @@ p, li { white-space: pre-wrap; } - - - General - - - - 8 - - - 8 - - - - - - 8 - - - 0 - - - - - CCLI Details - - - - 8 - - - 8 - - - - - CCLI Number: - - - - - - - - - - SongSelect Username: - - - - - - - - - - SongSelect Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - 8 - - - 0 - - - - - Auto Open Last Service - - - - - - Automatically open the last service at startup - - - - - - - - - - Search - - - - - - Enabled search-as-you-type - - - true - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - -