forked from openlp/openlp
HEAD
This commit is contained in:
commit
e06d26e743
@ -342,8 +342,7 @@ class Manager(object):
|
|||||||
if try_count >= 2:
|
if try_count >= 2:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def get_all_objects(self, object_class, filter_clause=None,
|
def get_all_objects(self, object_class, filter_clause=None, order_by_ref=None):
|
||||||
order_by_ref=None):
|
|
||||||
"""
|
"""
|
||||||
Returns all the objects from the database
|
Returns all the objects from the database
|
||||||
|
|
||||||
|
@ -28,8 +28,7 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Provide additional functionality required by OpenLP from the inherited
|
Provide additional functionality required by OpenLP from the inherited QDockWidget.
|
||||||
QDockWidget.
|
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -56,8 +55,8 @@ class OpenLPDockWidget(QtGui.QDockWidget):
|
|||||||
self.setWindowIcon(build_icon(icon))
|
self.setWindowIcon(build_icon(icon))
|
||||||
# Sort out the minimum width.
|
# Sort out the minimum width.
|
||||||
screens = ScreenList()
|
screens = ScreenList()
|
||||||
mainwindow_docbars = screens.current[u'size'].width() / 5
|
main_window_docbars = screens.current[u'size'].width() / 5
|
||||||
if mainwindow_docbars > 300:
|
if main_window_docbars > 300:
|
||||||
self.setMinimumWidth(300)
|
self.setMinimumWidth(300)
|
||||||
else:
|
else:
|
||||||
self.setMinimumWidth(mainwindow_docbars)
|
self.setMinimumWidth(main_window_docbars)
|
||||||
|
@ -164,8 +164,8 @@ sup {
|
|||||||
text.innerHTML = new_text;
|
text.innerHTML = new_text;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Fade text out. 0.2 to minimize the time "nothing" is shown on the screen.
|
// Fade text out. 0.1 to minimize the time "nothing" is shown on the screen.
|
||||||
text.style.opacity = '0.2';
|
text.style.opacity = '0.1';
|
||||||
// Fade new text in after the old text has finished fading out.
|
// Fade new text in after the old text has finished fading out.
|
||||||
timer = window.setTimeout(function(){_show_text(text, new_text)}, 400);
|
timer = window.setTimeout(function(){_show_text(text, new_text)}, 400);
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ class ImageManager(QtCore.QObject):
|
|||||||
self.image_thread = ImageThread(self)
|
self.image_thread = ImageThread(self)
|
||||||
self._conversion_queue = PriorityQueue()
|
self._conversion_queue = PriorityQueue()
|
||||||
self.stop_manager = False
|
self.stop_manager = False
|
||||||
Registry().register_function(u'config_updated', self.process_updates)
|
Registry().register_function(u'images_regenerate', self.process_updates)
|
||||||
|
|
||||||
def update_display(self):
|
def update_display(self):
|
||||||
"""
|
"""
|
||||||
|
@ -36,7 +36,7 @@ import re
|
|||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import OpenLPToolbar, ServiceItem, StringContent, ListWidgetWithDnD, \
|
from openlp.core.lib import OpenLPToolbar, ServiceItem, StringContent, ListWidgetWithDnD, \
|
||||||
ServiceItemContext, Settings, Registry, UiStrings, build_icon, translate
|
ServiceItemContext, Settings, Registry, UiStrings, translate
|
||||||
from openlp.core.lib.searchedit import SearchEdit
|
from openlp.core.lib.searchedit import SearchEdit
|
||||||
from openlp.core.lib.ui import create_widget_action, critical_error_message_box
|
from openlp.core.lib.ui import create_widget_action, critical_error_message_box
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ class Plugin(QtCore.QObject):
|
|||||||
you need, and return it for integration into OpenLP.
|
you need, and return it for integration into OpenLP.
|
||||||
"""
|
"""
|
||||||
if self.mediaItemClass:
|
if self.mediaItemClass:
|
||||||
self.mediaItem = self.mediaItemClass(self.main_window.mediaDockManager.media_dock, self)
|
self.mediaItem = self.mediaItemClass(self.main_window.media_dock_manager.media_dock, self)
|
||||||
|
|
||||||
def addImportMenuItem(self, importMenu):
|
def addImportMenuItem(self, importMenu):
|
||||||
"""
|
"""
|
||||||
@ -284,14 +284,14 @@ class Plugin(QtCore.QObject):
|
|||||||
"""
|
"""
|
||||||
if self.mediaItem:
|
if self.mediaItem:
|
||||||
self.mediaItem.initialise()
|
self.mediaItem.initialise()
|
||||||
self.main_window.mediaDockManager.insert_dock(self.mediaItem, self.icon, self.weight)
|
self.main_window.media_dock_manager.insert_dock(self.mediaItem, self.icon, self.weight)
|
||||||
|
|
||||||
def finalise(self):
|
def finalise(self):
|
||||||
"""
|
"""
|
||||||
Called by the plugin Manager to cleanup things.
|
Called by the plugin Manager to cleanup things.
|
||||||
"""
|
"""
|
||||||
if self.mediaItem:
|
if self.mediaItem:
|
||||||
self.main_window.mediaDockManager.remove_dock(self.mediaItem)
|
self.main_window.media_dock_manager.remove_dock(self.mediaItem)
|
||||||
|
|
||||||
def app_startup(self):
|
def app_startup(self):
|
||||||
"""
|
"""
|
||||||
@ -403,9 +403,11 @@ class Plugin(QtCore.QObject):
|
|||||||
|
|
||||||
def config_update(self):
|
def config_update(self):
|
||||||
"""
|
"""
|
||||||
The plugin's config has changed
|
Called when Config is changed to restart values dependent on configuration.
|
||||||
"""
|
"""
|
||||||
pass
|
log.info(u'config update processed')
|
||||||
|
if self.mediaItem:
|
||||||
|
self.mediaItem.config_update()
|
||||||
|
|
||||||
def new_service_created(self):
|
def new_service_created(self):
|
||||||
"""
|
"""
|
||||||
|
@ -114,7 +114,7 @@ class Registry(object):
|
|||||||
Register an event and associated function to be called
|
Register an event and associated function to be called
|
||||||
|
|
||||||
``event``
|
``event``
|
||||||
The function description like "config_updated" or "live_display_hide" where a number of places in the code
|
The function description like "live_display_hide" where a number of places in the code
|
||||||
will/may need to respond to a single action and the caller does not need to understand or know about the
|
will/may need to respond to a single action and the caller does not need to understand or know about the
|
||||||
recipients.
|
recipients.
|
||||||
|
|
||||||
|
@ -31,8 +31,8 @@ import logging
|
|||||||
|
|
||||||
from PyQt4 import QtGui, QtCore, QtWebKit
|
from PyQt4 import QtGui, QtCore, QtWebKit
|
||||||
|
|
||||||
from openlp.core.lib import FormattingTags, ImageSource, ItemCapabilities, Registry, ScreenList, ServiceItem, \
|
from openlp.core.lib import Settings, FormattingTags, ImageSource, ItemCapabilities, Registry, ScreenList, \
|
||||||
expand_tags, build_lyrics_format_css, build_lyrics_outline_css
|
ServiceItem, expand_tags, build_lyrics_format_css, build_lyrics_outline_css
|
||||||
from openlp.core.lib.theme import ThemeLevel
|
from openlp.core.lib.theme import ThemeLevel
|
||||||
from openlp.core.ui import MainDisplay
|
from openlp.core.ui import MainDisplay
|
||||||
|
|
||||||
@ -171,13 +171,14 @@ class Renderer(object):
|
|||||||
"""
|
"""
|
||||||
self.theme_level = theme_level
|
self.theme_level = theme_level
|
||||||
|
|
||||||
def set_global_theme(self, global_theme_name):
|
def set_global_theme(self):
|
||||||
"""
|
"""
|
||||||
Set the global-level theme name.
|
Set the global-level theme name.
|
||||||
|
|
||||||
``global_theme_name``
|
``global_theme_name``
|
||||||
The global-level theme's name.
|
The global-level theme's name.
|
||||||
"""
|
"""
|
||||||
|
global_theme_name = Settings().value(u'themes/global theme')
|
||||||
self._set_theme(global_theme_name)
|
self._set_theme(global_theme_name)
|
||||||
self.global_theme_name = global_theme_name
|
self.global_theme_name = global_theme_name
|
||||||
|
|
||||||
|
@ -636,14 +636,17 @@ class ServiceItem(object):
|
|||||||
for frame in self._raw_frames:
|
for frame in self._raw_frames:
|
||||||
if self.is_image() and not os.path.exists(frame[u'path']):
|
if self.is_image() and not os.path.exists(frame[u'path']):
|
||||||
self.is_valid = False
|
self.is_valid = False
|
||||||
|
break
|
||||||
elif self.is_command():
|
elif self.is_command():
|
||||||
file_name = os.path.join(frame[u'path'], frame[u'title'])
|
file_name = os.path.join(frame[u'path'], frame[u'title'])
|
||||||
if not os.path.exists(file_name):
|
if not os.path.exists(file_name):
|
||||||
self.is_valid = False
|
self.is_valid = False
|
||||||
|
break
|
||||||
if suffix_list and not self.is_text():
|
if suffix_list and not self.is_text():
|
||||||
file_suffix = frame[u'title'].split(u'.')[-1]
|
file_suffix = frame[u'title'].split(u'.')[-1]
|
||||||
if file_suffix.lower() not in suffix_list:
|
if file_suffix.lower() not in suffix_list:
|
||||||
self.is_valid = False
|
self.is_valid = False
|
||||||
|
break
|
||||||
|
|
||||||
def _get_renderer(self):
|
def _get_renderer(self):
|
||||||
"""
|
"""
|
||||||
|
@ -36,10 +36,10 @@ from PyQt4 import QtGui
|
|||||||
|
|
||||||
from openlp.core.lib import Registry
|
from openlp.core.lib import Registry
|
||||||
|
|
||||||
|
|
||||||
class SettingsTab(QtGui.QWidget):
|
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, parent, title, visible_title=None, icon_path=None):
|
def __init__(self, parent, title, visible_title=None, icon_path=None):
|
||||||
"""
|
"""
|
||||||
@ -52,11 +52,12 @@ class SettingsTab(QtGui.QWidget):
|
|||||||
The title of the tab, which is usually displayed on the tab.
|
The title of the tab, which is usually displayed on the tab.
|
||||||
"""
|
"""
|
||||||
QtGui.QWidget.__init__(self, parent)
|
QtGui.QWidget.__init__(self, parent)
|
||||||
self.tabTitle = title
|
self.tab_title = title
|
||||||
self.tabTitleVisible = visible_title
|
self.tab_title_visible = visible_title
|
||||||
self.settingsSection = self.tabTitle.lower()
|
self.settings_section = self.tab_title.lower()
|
||||||
|
self.tab_visited = False
|
||||||
if icon_path:
|
if icon_path:
|
||||||
self.iconPath = icon_path
|
self.icon_path = icon_path
|
||||||
self.setupUi()
|
self.setupUi()
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.initialise()
|
self.initialise()
|
||||||
@ -66,20 +67,20 @@ class SettingsTab(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
Setup the tab's interface.
|
Setup the tab's interface.
|
||||||
"""
|
"""
|
||||||
self.tabLayout = QtGui.QHBoxLayout(self)
|
self.tab_layout = QtGui.QHBoxLayout(self)
|
||||||
self.tabLayout.setObjectName(u'tabLayout')
|
self.tab_layout.setObjectName(u'tab_layout')
|
||||||
self.leftColumn = QtGui.QWidget(self)
|
self.left_column = QtGui.QWidget(self)
|
||||||
self.leftColumn.setObjectName(u'leftColumn')
|
self.left_column.setObjectName(u'left_column')
|
||||||
self.leftLayout = QtGui.QVBoxLayout(self.leftColumn)
|
self.left_layout = QtGui.QVBoxLayout(self.left_column)
|
||||||
self.leftLayout.setMargin(0)
|
self.left_layout.setMargin(0)
|
||||||
self.leftLayout.setObjectName(u'leftLayout')
|
self.left_layout.setObjectName(u'left_layout')
|
||||||
self.tabLayout.addWidget(self.leftColumn)
|
self.tab_layout.addWidget(self.left_column)
|
||||||
self.rightColumn = QtGui.QWidget(self)
|
self.right_column = QtGui.QWidget(self)
|
||||||
self.rightColumn.setObjectName(u'rightColumn')
|
self.right_column.setObjectName(u'right_column')
|
||||||
self.rightLayout = QtGui.QVBoxLayout(self.rightColumn)
|
self.right_layout = QtGui.QVBoxLayout(self.right_column)
|
||||||
self.rightLayout.setMargin(0)
|
self.right_layout.setMargin(0)
|
||||||
self.rightLayout.setObjectName(u'rightLayout')
|
self.right_layout.setObjectName(u'right_layout')
|
||||||
self.tabLayout.addWidget(self.rightColumn)
|
self.tab_layout.addWidget(self.right_column)
|
||||||
|
|
||||||
def resizeEvent(self, event=None):
|
def resizeEvent(self, event=None):
|
||||||
"""
|
"""
|
||||||
@ -87,11 +88,11 @@ class SettingsTab(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
if event:
|
if event:
|
||||||
QtGui.QWidget.resizeEvent(self, event)
|
QtGui.QWidget.resizeEvent(self, event)
|
||||||
width = self.width() - self.tabLayout.spacing() - \
|
width = self.width() - self.tab_layout.spacing() - \
|
||||||
self.tabLayout.contentsMargins().left() - self.tabLayout.contentsMargins().right()
|
self.tab_layout.contentsMargins().left() - self.tab_layout.contentsMargins().right()
|
||||||
left_width = min(width - self.rightColumn.minimumSizeHint().width(), width / 2)
|
left_width = min(width - self.right_column.minimumSizeHint().width(), width / 2)
|
||||||
left_width = max(left_width, self.leftColumn.minimumSizeHint().width())
|
left_width = max(left_width, self.left_column.minimumSizeHint().width())
|
||||||
self.leftColumn.setFixedWidth(left_width)
|
self.left_column.setFixedWidth(left_width)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
@ -133,11 +134,11 @@ class SettingsTab(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tabVisible(self):
|
def tab_visible(self):
|
||||||
"""
|
"""
|
||||||
Tab has just been made visible to the user
|
Tab has just been made visible to the user
|
||||||
"""
|
"""
|
||||||
pass
|
self.tab_visited = True
|
||||||
|
|
||||||
def _get_service_manager(self):
|
def _get_service_manager(self):
|
||||||
"""
|
"""
|
||||||
@ -189,3 +190,12 @@ class SettingsTab(QtGui.QWidget):
|
|||||||
|
|
||||||
media_controller = property(_get_media_controller)
|
media_controller = property(_get_media_controller)
|
||||||
|
|
||||||
|
def _get_settings_form(self):
|
||||||
|
"""
|
||||||
|
Adds the plugin manager to the class dynamically
|
||||||
|
"""
|
||||||
|
if not hasattr(self, u'_settings_form'):
|
||||||
|
self._settings_form = Registry().get(u'settings_form')
|
||||||
|
return self._settings_form
|
||||||
|
|
||||||
|
settings_form = property(_get_settings_form)
|
||||||
|
@ -36,7 +36,7 @@ import sys
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Registry, SettingsTab, Settings, UiStrings, translate, build_icon
|
from openlp.core.lib import SettingsTab, Settings, UiStrings, translate, build_icon
|
||||||
from openlp.core.utils import AppLocation, format_time, get_images_filter
|
from openlp.core.utils import AppLocation, format_time, get_images_filter
|
||||||
from openlp.core.lib import SlideLimits
|
from openlp.core.lib import SlideLimits
|
||||||
|
|
||||||
@ -52,11 +52,10 @@ class AdvancedTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
Initialise the settings tab
|
Initialise the settings tab
|
||||||
"""
|
"""
|
||||||
self.display_changed = False
|
|
||||||
self.default_image = u':/graphics/openlp-splash-screen.png'
|
self.default_image = u':/graphics/openlp-splash-screen.png'
|
||||||
self.default_color = u'#ffffff'
|
self.default_color = u'#ffffff'
|
||||||
self.data_exists = False
|
self.data_exists = False
|
||||||
self.iconPath = u':/system/system_settings.png'
|
self.icon_path = u':/system/system_settings.png'
|
||||||
advanced_translated = translate('OpenLP.AdvancedTab', 'Advanced')
|
advanced_translated = translate('OpenLP.AdvancedTab', 'Advanced')
|
||||||
SettingsTab.__init__(self, parent, u'Advanced', advanced_translated)
|
SettingsTab.__init__(self, parent, u'Advanced', advanced_translated)
|
||||||
|
|
||||||
@ -66,7 +65,7 @@ class AdvancedTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'AdvancedTab')
|
self.setObjectName(u'AdvancedTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.ui_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.ui_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.ui_group_box.setObjectName(u'ui_group_box')
|
self.ui_group_box.setObjectName(u'ui_group_box')
|
||||||
self.ui_layout = QtGui.QFormLayout(self.ui_group_box)
|
self.ui_layout = QtGui.QFormLayout(self.ui_group_box)
|
||||||
self.ui_layout.setObjectName(u'ui_layout')
|
self.ui_layout.setObjectName(u'ui_layout')
|
||||||
@ -91,9 +90,9 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.enable_auto_close_check_box = QtGui.QCheckBox(self.ui_group_box)
|
self.enable_auto_close_check_box = QtGui.QCheckBox(self.ui_group_box)
|
||||||
self.enable_auto_close_check_box.setObjectName(u'enable_auto_close_check_box')
|
self.enable_auto_close_check_box.setObjectName(u'enable_auto_close_check_box')
|
||||||
self.ui_layout.addRow(self.enable_auto_close_check_box)
|
self.ui_layout.addRow(self.enable_auto_close_check_box)
|
||||||
self.leftLayout.addWidget(self.ui_group_box)
|
self.left_layout.addWidget(self.ui_group_box)
|
||||||
# Default service name
|
# Default service name
|
||||||
self.service_name_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.service_name_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.service_name_group_box.setObjectName(u'service_name_group_box')
|
self.service_name_group_box.setObjectName(u'service_name_group_box')
|
||||||
self.service_name_layout = QtGui.QFormLayout(self.service_name_group_box)
|
self.service_name_layout = QtGui.QFormLayout(self.service_name_group_box)
|
||||||
self.service_name_check_box = QtGui.QCheckBox(self.service_name_group_box)
|
self.service_name_check_box = QtGui.QCheckBox(self.service_name_group_box)
|
||||||
@ -130,9 +129,9 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.service_name_example = QtGui.QLabel(self.service_name_group_box)
|
self.service_name_example = QtGui.QLabel(self.service_name_group_box)
|
||||||
self.service_name_example.setObjectName(u'service_name_example')
|
self.service_name_example.setObjectName(u'service_name_example')
|
||||||
self.service_name_layout.addRow(self.service_name_example_label, self.service_name_example)
|
self.service_name_layout.addRow(self.service_name_example_label, self.service_name_example)
|
||||||
self.leftLayout.addWidget(self.service_name_group_box)
|
self.left_layout.addWidget(self.service_name_group_box)
|
||||||
# Data Directory
|
# Data Directory
|
||||||
self.data_directory_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.data_directory_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.data_directory_group_box.setObjectName(u'data_directory_group_box')
|
self.data_directory_group_box.setObjectName(u'data_directory_group_box')
|
||||||
self.data_directory_layout = QtGui.QFormLayout(self.data_directory_group_box)
|
self.data_directory_layout = QtGui.QFormLayout(self.data_directory_group_box)
|
||||||
self.data_directory_layout.setObjectName(u'data_directory_layout')
|
self.data_directory_layout.setObjectName(u'data_directory_layout')
|
||||||
@ -173,10 +172,10 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.data_directory_layout.addRow(self.data_directory_new_label, self.new_data_directory_label_layout)
|
self.data_directory_layout.addRow(self.data_directory_new_label, self.new_data_directory_label_layout)
|
||||||
self.data_directory_layout.addRow(self.data_directory_copy_check_layout)
|
self.data_directory_layout.addRow(self.data_directory_copy_check_layout)
|
||||||
self.data_directory_layout.addRow(self.new_data_directory_has_files_label)
|
self.data_directory_layout.addRow(self.new_data_directory_has_files_label)
|
||||||
self.leftLayout.addWidget(self.data_directory_group_box)
|
self.left_layout.addWidget(self.data_directory_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
# Default Image
|
# Default Image
|
||||||
self.default_image_group_box = QtGui.QGroupBox(self.rightColumn)
|
self.default_image_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.default_image_group_box.setObjectName(u'default_image_group_box')
|
self.default_image_group_box.setObjectName(u'default_image_group_box')
|
||||||
self.default_image_layout = QtGui.QFormLayout(self.default_image_group_box)
|
self.default_image_layout = QtGui.QFormLayout(self.default_image_group_box)
|
||||||
self.default_image_layout.setObjectName(u'default_image_layout')
|
self.default_image_layout.setObjectName(u'default_image_layout')
|
||||||
@ -201,18 +200,18 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.default_file_layout.addWidget(self.default_browse_button)
|
self.default_file_layout.addWidget(self.default_browse_button)
|
||||||
self.default_file_layout.addWidget(self.default_revert_button)
|
self.default_file_layout.addWidget(self.default_revert_button)
|
||||||
self.default_image_layout.addRow(self.default_file_label, self.default_file_layout)
|
self.default_image_layout.addRow(self.default_file_label, self.default_file_layout)
|
||||||
self.rightLayout.addWidget(self.default_image_group_box)
|
self.right_layout.addWidget(self.default_image_group_box)
|
||||||
# Hide mouse
|
# Hide mouse
|
||||||
self.hide_mouse_group_box = QtGui.QGroupBox(self.rightColumn)
|
self.hide_mouse_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.hide_mouse_group_box.setObjectName(u'hide_mouse_group_box')
|
self.hide_mouse_group_box.setObjectName(u'hide_mouse_group_box')
|
||||||
self.hide_mouse_layout = QtGui.QVBoxLayout(self.hide_mouse_group_box)
|
self.hide_mouse_layout = QtGui.QVBoxLayout(self.hide_mouse_group_box)
|
||||||
self.hide_mouse_layout.setObjectName(u'hide_mouse_layout')
|
self.hide_mouse_layout.setObjectName(u'hide_mouse_layout')
|
||||||
self.hide_mouse_check_box = QtGui.QCheckBox(self.hide_mouse_group_box)
|
self.hide_mouse_check_box = QtGui.QCheckBox(self.hide_mouse_group_box)
|
||||||
self.hide_mouse_check_box.setObjectName(u'hide_mouse_check_box')
|
self.hide_mouse_check_box.setObjectName(u'hide_mouse_check_box')
|
||||||
self.hide_mouse_layout.addWidget(self.hide_mouse_check_box)
|
self.hide_mouse_layout.addWidget(self.hide_mouse_check_box)
|
||||||
self.rightLayout.addWidget(self.hide_mouse_group_box)
|
self.right_layout.addWidget(self.hide_mouse_group_box)
|
||||||
# Service Item Slide Limits
|
# Service Item Slide Limits
|
||||||
self.slide_group_box = QtGui.QGroupBox(self.rightColumn)
|
self.slide_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.slide_group_box.setObjectName(u'slide_group_box')
|
self.slide_group_box.setObjectName(u'slide_group_box')
|
||||||
self.slide_layout = QtGui.QVBoxLayout(self.slide_group_box)
|
self.slide_layout = QtGui.QVBoxLayout(self.slide_group_box)
|
||||||
self.slide_layout.setObjectName(u'slide_layout')
|
self.slide_layout.setObjectName(u'slide_layout')
|
||||||
@ -228,9 +227,9 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.next_item_radio_button = QtGui.QRadioButton(self.slide_group_box)
|
self.next_item_radio_button = QtGui.QRadioButton(self.slide_group_box)
|
||||||
self.next_item_radio_button.setObjectName(u'next_item_radio_button')
|
self.next_item_radio_button.setObjectName(u'next_item_radio_button')
|
||||||
self.slide_layout.addWidget(self.next_item_radio_button)
|
self.slide_layout.addWidget(self.next_item_radio_button)
|
||||||
self.rightLayout.addWidget(self.slide_group_box)
|
self.right_layout.addWidget(self.slide_group_box)
|
||||||
# Display Workarounds
|
# Display Workarounds
|
||||||
self.display_workaround_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.display_workaround_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.display_workaround_group_box.setObjectName(u'display_workaround_group_box')
|
self.display_workaround_group_box.setObjectName(u'display_workaround_group_box')
|
||||||
self.display_workaround_layout = QtGui.QVBoxLayout(self.display_workaround_group_box)
|
self.display_workaround_layout = QtGui.QVBoxLayout(self.display_workaround_group_box)
|
||||||
self.display_workaround_layout.setObjectName(u'display_workaround_layout')
|
self.display_workaround_layout.setObjectName(u'display_workaround_layout')
|
||||||
@ -240,8 +239,8 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.alternate_rows_check_box = QtGui.QCheckBox(self.display_workaround_group_box)
|
self.alternate_rows_check_box = QtGui.QCheckBox(self.display_workaround_group_box)
|
||||||
self.alternate_rows_check_box.setObjectName(u'alternate_rows_check_box')
|
self.alternate_rows_check_box.setObjectName(u'alternate_rows_check_box')
|
||||||
self.display_workaround_layout.addWidget(self.alternate_rows_check_box)
|
self.display_workaround_layout.addWidget(self.alternate_rows_check_box)
|
||||||
self.rightLayout.addWidget(self.display_workaround_group_box)
|
self.right_layout.addWidget(self.display_workaround_group_box)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.should_update_service_name_example = False
|
self.should_update_service_name_example = False
|
||||||
self.service_name_check_box.toggled.connect(self.service_name_check_box_toggled)
|
self.service_name_check_box.toggled.connect(self.service_name_check_box_toggled)
|
||||||
self.service_name_day.currentIndexChanged.connect(self.on_service_name_day_changed)
|
self.service_name_day.currentIndexChanged.connect(self.on_service_name_day_changed)
|
||||||
@ -251,7 +250,6 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.default_color_button.clicked.connect(self.on_default_color_button_clicked)
|
self.default_color_button.clicked.connect(self.on_default_color_button_clicked)
|
||||||
self.default_browse_button.clicked.connect(self.on_default_browse_button_clicked)
|
self.default_browse_button.clicked.connect(self.on_default_browse_button_clicked)
|
||||||
self.default_revert_button.clicked.connect(self.on_default_revert_button_clicked)
|
self.default_revert_button.clicked.connect(self.on_default_revert_button_clicked)
|
||||||
self.x11_bypass_check_box.toggled.connect(self.on_X11_bypass_check_box_toggled)
|
|
||||||
self.alternate_rows_check_box.toggled.connect(self.on_alternate_rows_check_box_toggled)
|
self.alternate_rows_check_box.toggled.connect(self.on_alternate_rows_check_box_toggled)
|
||||||
self.data_directory_browse_button.clicked.connect(self.on_data_directory_browse_button_clicked)
|
self.data_directory_browse_button.clicked.connect(self.on_data_directory_browse_button_clicked)
|
||||||
self.data_directory_default_button.clicked.connect(self.on_data_directory_default_button_clicked)
|
self.data_directory_default_button.clicked.connect(self.on_data_directory_default_button_clicked)
|
||||||
@ -261,7 +259,6 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.wrap_slide_radio_button.clicked.connect(self.on_wrap_slide_button_clicked)
|
self.wrap_slide_radio_button.clicked.connect(self.on_wrap_slide_button_clicked)
|
||||||
self.next_item_radio_button.clicked.connect(self.on_next_item_button_clicked)
|
self.next_item_radio_button.clicked.connect(self.on_next_item_button_clicked)
|
||||||
|
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
Setup the interface translation strings.
|
Setup the interface translation strings.
|
||||||
@ -336,7 +333,7 @@ class AdvancedTab(SettingsTab):
|
|||||||
Load settings from disk.
|
Load settings from disk.
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
# The max recent files value does not have an interface and so never
|
# The max recent files value does not have an interface and so never
|
||||||
# gets actually stored in the settings therefore the default value of
|
# gets actually stored in the settings therefore the default value of
|
||||||
# 20 will always be used.
|
# 20 will always be used.
|
||||||
@ -408,7 +405,7 @@ class AdvancedTab(SettingsTab):
|
|||||||
Save settings to disk.
|
Save settings to disk.
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'default service enabled', self.service_name_check_box.isChecked())
|
settings.setValue(u'default service enabled', self.service_name_check_box.isChecked())
|
||||||
service_name = self.service_name_edit.text()
|
service_name = self.service_name_edit.text()
|
||||||
preset_is_valid = self.generate_service_name_example()[0]
|
preset_is_valid = self.generate_service_name_example()[0]
|
||||||
@ -427,16 +424,15 @@ class AdvancedTab(SettingsTab):
|
|||||||
settings.setValue(u'expand service item', self.expand_service_item_check_box.isChecked())
|
settings.setValue(u'expand service item', self.expand_service_item_check_box.isChecked())
|
||||||
settings.setValue(u'enable exit confirmation', self.enable_auto_close_check_box.isChecked())
|
settings.setValue(u'enable exit confirmation', self.enable_auto_close_check_box.isChecked())
|
||||||
settings.setValue(u'hide mouse', self.hide_mouse_check_box.isChecked())
|
settings.setValue(u'hide mouse', self.hide_mouse_check_box.isChecked())
|
||||||
settings.setValue(u'x11 bypass wm', self.x11_bypass_check_box.isChecked())
|
|
||||||
settings.setValue(u'alternate rows', self.alternate_rows_check_box.isChecked())
|
settings.setValue(u'alternate rows', self.alternate_rows_check_box.isChecked())
|
||||||
settings.setValue(u'default color', self.default_color)
|
settings.setValue(u'default color', self.default_color)
|
||||||
settings.setValue(u'default image', self.default_file_edit.text())
|
settings.setValue(u'default image', self.default_file_edit.text())
|
||||||
settings.setValue(u'slide limits', self.slide_limits)
|
settings.setValue(u'slide limits', self.slide_limits)
|
||||||
|
if self.x11_bypass_check_box.isChecked() != settings.value(u'x11 bypass wm'):
|
||||||
|
settings.setValue(u'x11 bypass wm', self.x11_bypass_check_box.isChecked())
|
||||||
|
self.settings_form.register_post_process(u'config_screen_changed')
|
||||||
|
self.settings_form.register_post_process(u'slidecontroller_update_slide_limits')
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
if self.display_changed:
|
|
||||||
Registry().execute(u'config_screen_changed')
|
|
||||||
self.display_changed = False
|
|
||||||
Registry().execute(u'slidecontroller_update_slide_limits')
|
|
||||||
|
|
||||||
def cancel(self):
|
def cancel(self):
|
||||||
"""
|
"""
|
||||||
@ -516,8 +512,8 @@ class AdvancedTab(SettingsTab):
|
|||||||
Select an image for the default display screen.
|
Select an image for the default display screen.
|
||||||
"""
|
"""
|
||||||
file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(), UiStrings().AllFiles)
|
file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(), UiStrings().AllFiles)
|
||||||
filename = QtGui.QFileDialog.getOpenFileName(self,
|
filename = QtGui.QFileDialog.getOpenFileName(self, translate('OpenLP.AdvancedTab', 'Open File'), '',
|
||||||
translate('OpenLP.AdvancedTab', 'Open File'), '', file_filters)
|
file_filters)
|
||||||
if filename:
|
if filename:
|
||||||
self.default_file_edit.setText(filename)
|
self.default_file_edit.setText(filename)
|
||||||
self.default_file_edit.setFocus()
|
self.default_file_edit.setFocus()
|
||||||
@ -635,15 +631,6 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.default_file_edit.setText(u':/graphics/openlp-splash-screen.png')
|
self.default_file_edit.setText(u':/graphics/openlp-splash-screen.png')
|
||||||
self.default_file_edit.setFocus()
|
self.default_file_edit.setFocus()
|
||||||
|
|
||||||
def on_X11_bypass_check_box_toggled(self, checked):
|
|
||||||
"""
|
|
||||||
Toggle X11 bypass flag on maindisplay depending on check box state.
|
|
||||||
|
|
||||||
``checked``
|
|
||||||
The state of the check box (boolean).
|
|
||||||
"""
|
|
||||||
self.display_changed = True
|
|
||||||
|
|
||||||
def on_alternate_rows_check_box_toggled(self, checked):
|
def on_alternate_rows_check_box_toggled(self, checked):
|
||||||
"""
|
"""
|
||||||
Notify user about required restart.
|
Notify user about required restart.
|
||||||
|
@ -86,6 +86,11 @@ try:
|
|||||||
WEBKIT_VERSION = QtWebKit.qWebKitVersion()
|
WEBKIT_VERSION = QtWebKit.qWebKitVersion()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
WEBKIT_VERSION = u'-'
|
WEBKIT_VERSION = u'-'
|
||||||
|
try:
|
||||||
|
from openlp.core.ui.media.vlcplayer import VERSION
|
||||||
|
VLC_VERSION = VERSION
|
||||||
|
except ImportError:
|
||||||
|
VLC_VERSION = u'-'
|
||||||
|
|
||||||
|
|
||||||
from openlp.core.lib import UiStrings, Settings, translate
|
from openlp.core.lib import UiStrings, Settings, translate
|
||||||
@ -138,12 +143,15 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
u'PyEnchant: %s\n' % ENCHANT_VERSION + \
|
u'PyEnchant: %s\n' % ENCHANT_VERSION + \
|
||||||
u'PySQLite: %s\n' % SQLITE_VERSION + \
|
u'PySQLite: %s\n' % SQLITE_VERSION + \
|
||||||
u'Mako: %s\n' % MAKO_VERSION + \
|
u'Mako: %s\n' % MAKO_VERSION + \
|
||||||
u'pyUNO bridge: %s\n' % UNO_VERSION
|
u'pyUNO bridge: %s\n' % UNO_VERSION + \
|
||||||
|
u'VLC: %s\n' % VLC_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 += u'Desktop: KDE SC\n'
|
system += u'Desktop: KDE SC\n'
|
||||||
elif os.environ.get(u'GNOME_DESKTOP_SESSION_ID'):
|
elif os.environ.get(u'GNOME_DESKTOP_SESSION_ID'):
|
||||||
system += u'Desktop: GNOME\n'
|
system += u'Desktop: GNOME\n'
|
||||||
|
elif os.environ.get(u'DESKTOP_SESSION') == u'xfce':
|
||||||
|
system += u'Desktop: Xfce\n'
|
||||||
return (openlp_version, description, traceback, system, libraries)
|
return (openlp_version, description, traceback, system, libraries)
|
||||||
|
|
||||||
def on_save_report_button_clicked(self):
|
def on_save_report_button_clicked(self):
|
||||||
@ -182,8 +190,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
|
|
||||||
def on_send_report_button_clicked(self):
|
def on_send_report_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Opening systems default email client and inserting exception log and
|
Opening systems default email client and inserting exception log and system information.
|
||||||
system informations.
|
|
||||||
"""
|
"""
|
||||||
body = translate('OpenLP.ExceptionForm',
|
body = translate('OpenLP.ExceptionForm',
|
||||||
'*OpenLP Bug Report*\n'
|
'*OpenLP Bug Report*\n'
|
||||||
|
@ -47,9 +47,9 @@ class GeneralTab(SettingsTab):
|
|||||||
Initialise the general settings tab
|
Initialise the general settings tab
|
||||||
"""
|
"""
|
||||||
self.screens = ScreenList()
|
self.screens = ScreenList()
|
||||||
self.iconPath = u':/icon/openlp-logo-16x16.png'
|
self.icon_path = u':/icon/openlp-logo-16x16.png'
|
||||||
generalTranslated = translate('OpenLP.GeneralTab', 'General')
|
general_translated = translate('OpenLP.GeneralTab', 'General')
|
||||||
SettingsTab.__init__(self, parent, u'General', generalTranslated)
|
SettingsTab.__init__(self, parent, u'General', general_translated)
|
||||||
|
|
||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
"""
|
"""
|
||||||
@ -57,296 +57,294 @@ class GeneralTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'GeneralTab')
|
self.setObjectName(u'GeneralTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.tabLayout.setStretch(1, 1)
|
self.tab_layout.setStretch(1, 1)
|
||||||
# Monitors
|
# Monitors
|
||||||
self.monitorGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.monitor_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.monitorGroupBox.setObjectName(u'monitorGroupBox')
|
self.monitor_group_box.setObjectName(u'monitor_group_box')
|
||||||
self.monitorLayout = QtGui.QGridLayout(self.monitorGroupBox)
|
self.monitor_layout = QtGui.QGridLayout(self.monitor_group_box)
|
||||||
self.monitorLayout.setObjectName(u'monitorLayout')
|
self.monitor_layout.setObjectName(u'monitor_layout')
|
||||||
self.monitorRadioButton = QtGui.QRadioButton(self.monitorGroupBox)
|
self.monitor_radio_button = QtGui.QRadioButton(self.monitor_group_box)
|
||||||
self.monitorRadioButton.setObjectName(u'monitorRadioButton')
|
self.monitor_radio_button.setObjectName(u'monitor_radio_button')
|
||||||
self.monitorLayout.addWidget(self.monitorRadioButton, 0, 0, 1, 5)
|
self.monitor_layout.addWidget(self.monitor_radio_button, 0, 0, 1, 5)
|
||||||
self.monitorComboBox = QtGui.QComboBox(self.monitorGroupBox)
|
self.monitor_combo_box = QtGui.QComboBox(self.monitor_group_box)
|
||||||
self.monitorComboBox.setObjectName(u'monitorComboBox')
|
self.monitor_combo_box.setObjectName(u'monitor_combo_box')
|
||||||
self.monitorLayout.addWidget(self.monitorComboBox, 1, 1, 1, 4)
|
self.monitor_layout.addWidget(self.monitor_combo_box, 1, 1, 1, 4)
|
||||||
# Display Position
|
# Display Position
|
||||||
self.overrideRadioButton = QtGui.QRadioButton(self.monitorGroupBox)
|
self.override_radio_button = QtGui.QRadioButton(self.monitor_group_box)
|
||||||
self.overrideRadioButton.setObjectName(u'overrideRadioButton')
|
self.override_radio_button.setObjectName(u'override_radio_button')
|
||||||
self.monitorLayout.addWidget(self.overrideRadioButton, 2, 0, 1, 5)
|
self.monitor_layout.addWidget(self.override_radio_button, 2, 0, 1, 5)
|
||||||
# Custom position
|
# Custom position
|
||||||
self.customXLabel = QtGui.QLabel(self.monitorGroupBox)
|
self.custom_x_label = QtGui.QLabel(self.monitor_group_box)
|
||||||
self.customXLabel.setObjectName(u'customXLabel')
|
self.custom_x_label.setObjectName(u'custom_x_label')
|
||||||
self.monitorLayout.addWidget(self.customXLabel, 3, 1)
|
self.monitor_layout.addWidget(self.custom_x_label, 3, 1)
|
||||||
self.customXValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
|
self.custom_X_value_edit = QtGui.QSpinBox(self.monitor_group_box)
|
||||||
self.customXValueEdit.setObjectName(u'customXValueEdit')
|
self.custom_X_value_edit.setObjectName(u'custom_X_value_edit')
|
||||||
self.customXValueEdit.setRange(-9999, 9999)
|
self.custom_X_value_edit.setRange(-9999, 9999)
|
||||||
self.monitorLayout.addWidget(self.customXValueEdit, 4, 1)
|
self.monitor_layout.addWidget(self.custom_X_value_edit, 4, 1)
|
||||||
self.customYLabel = QtGui.QLabel(self.monitorGroupBox)
|
self.custom_y_label = QtGui.QLabel(self.monitor_group_box)
|
||||||
self.customYLabel.setObjectName(u'customYLabel')
|
self.custom_y_label.setObjectName(u'custom_y_label')
|
||||||
self.monitorLayout.addWidget(self.customYLabel, 3, 2)
|
self.monitor_layout.addWidget(self.custom_y_label, 3, 2)
|
||||||
self.customYValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
|
self.custom_Y_value_edit = QtGui.QSpinBox(self.monitor_group_box)
|
||||||
self.customYValueEdit.setObjectName(u'customYValueEdit')
|
self.custom_Y_value_edit.setObjectName(u'custom_Y_value_edit')
|
||||||
self.customYValueEdit.setRange(-9999, 9999)
|
self.custom_Y_value_edit.setRange(-9999, 9999)
|
||||||
self.monitorLayout.addWidget(self.customYValueEdit, 4, 2)
|
self.monitor_layout.addWidget(self.custom_Y_value_edit, 4, 2)
|
||||||
self.customWidthLabel = QtGui.QLabel(self.monitorGroupBox)
|
self.custom_width_label = QtGui.QLabel(self.monitor_group_box)
|
||||||
self.customWidthLabel.setObjectName(u'customWidthLabel')
|
self.custom_width_label.setObjectName(u'custom_width_label')
|
||||||
self.monitorLayout.addWidget(self.customWidthLabel, 3, 3)
|
self.monitor_layout.addWidget(self.custom_width_label, 3, 3)
|
||||||
self.customWidthValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
|
self.custom_width_value_edit = QtGui.QSpinBox(self.monitor_group_box)
|
||||||
self.customWidthValueEdit.setObjectName(u'customWidthValueEdit')
|
self.custom_width_value_edit.setObjectName(u'custom_width_value_edit')
|
||||||
self.customWidthValueEdit.setMaximum(9999)
|
self.custom_width_value_edit.setMaximum(9999)
|
||||||
self.monitorLayout.addWidget(self.customWidthValueEdit, 4, 3)
|
self.monitor_layout.addWidget(self.custom_width_value_edit, 4, 3)
|
||||||
self.customHeightLabel = QtGui.QLabel(self.monitorGroupBox)
|
self.custom_height_label = QtGui.QLabel(self.monitor_group_box)
|
||||||
self.customHeightLabel.setObjectName(u'customHeightLabel')
|
self.custom_height_label.setObjectName(u'custom_height_label')
|
||||||
self.monitorLayout.addWidget(self.customHeightLabel, 3, 4)
|
self.monitor_layout.addWidget(self.custom_height_label, 3, 4)
|
||||||
self.customHeightValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
|
self.custom_height_value_edit = QtGui.QSpinBox(self.monitor_group_box)
|
||||||
self.customHeightValueEdit.setObjectName(u'customHeightValueEdit')
|
self.custom_height_value_edit.setObjectName(u'custom_height_value_edit')
|
||||||
self.customHeightValueEdit.setMaximum(9999)
|
self.custom_height_value_edit.setMaximum(9999)
|
||||||
self.monitorLayout.addWidget(self.customHeightValueEdit, 4, 4)
|
self.monitor_layout.addWidget(self.custom_height_value_edit, 4, 4)
|
||||||
self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox)
|
self.display_on_monitor_check = QtGui.QCheckBox(self.monitor_group_box)
|
||||||
self.displayOnMonitorCheck.setObjectName(u'monitorComboBox')
|
self.display_on_monitor_check.setObjectName(u'monitor_combo_box')
|
||||||
self.monitorLayout.addWidget(self.displayOnMonitorCheck, 5, 0, 1, 5)
|
self.monitor_layout.addWidget(self.display_on_monitor_check, 5, 0, 1, 5)
|
||||||
# Set up the stretchiness of each column, so that the first column
|
# Set up the stretchiness of each column, so that the first column
|
||||||
# less stretchy (and therefore smaller) than the others
|
# less stretchy (and therefore smaller) than the others
|
||||||
self.monitorLayout.setColumnStretch(0, 1)
|
self.monitor_layout.setColumnStretch(0, 1)
|
||||||
self.monitorLayout.setColumnStretch(1, 3)
|
self.monitor_layout.setColumnStretch(1, 3)
|
||||||
self.monitorLayout.setColumnStretch(2, 3)
|
self.monitor_layout.setColumnStretch(2, 3)
|
||||||
self.monitorLayout.setColumnStretch(3, 3)
|
self.monitor_layout.setColumnStretch(3, 3)
|
||||||
self.monitorLayout.setColumnStretch(4, 3)
|
self.monitor_layout.setColumnStretch(4, 3)
|
||||||
self.leftLayout.addWidget(self.monitorGroupBox)
|
self.left_layout.addWidget(self.monitor_group_box)
|
||||||
# CCLI Details
|
# CCLI Details
|
||||||
self.ccliGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.ccli_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.ccliGroupBox.setObjectName(u'ccliGroupBox')
|
self.ccli_group_box.setObjectName(u'ccli_group_box')
|
||||||
self.ccliLayout = QtGui.QFormLayout(self.ccliGroupBox)
|
self.ccli_layout = QtGui.QFormLayout(self.ccli_group_box)
|
||||||
self.ccliLayout.setObjectName(u'ccliLayout')
|
self.ccli_layout.setObjectName(u'ccli_layout')
|
||||||
self.numberLabel = QtGui.QLabel(self.ccliGroupBox)
|
self.number_label = QtGui.QLabel(self.ccli_group_box)
|
||||||
self.numberLabel.setObjectName(u'numberLabel')
|
self.number_label.setObjectName(u'number_label')
|
||||||
self.numberEdit = QtGui.QLineEdit(self.ccliGroupBox)
|
self.number_edit = QtGui.QLineEdit(self.ccli_group_box)
|
||||||
self.numberEdit.setValidator(QtGui.QIntValidator())
|
self.number_edit.setValidator(QtGui.QIntValidator())
|
||||||
self.numberEdit.setObjectName(u'numberEdit')
|
self.number_edit.setObjectName(u'number_edit')
|
||||||
self.ccliLayout.addRow(self.numberLabel, self.numberEdit)
|
self.ccli_layout.addRow(self.number_label, self.number_edit)
|
||||||
self.usernameLabel = QtGui.QLabel(self.ccliGroupBox)
|
self.username_label = QtGui.QLabel(self.ccli_group_box)
|
||||||
self.usernameLabel.setObjectName(u'usernameLabel')
|
self.username_label.setObjectName(u'username_label')
|
||||||
self.usernameEdit = QtGui.QLineEdit(self.ccliGroupBox)
|
self.username_edit = QtGui.QLineEdit(self.ccli_group_box)
|
||||||
self.usernameEdit.setObjectName(u'usernameEdit')
|
self.username_edit.setObjectName(u'username_edit')
|
||||||
self.ccliLayout.addRow(self.usernameLabel, self.usernameEdit)
|
self.ccli_layout.addRow(self.username_label, self.username_edit)
|
||||||
self.passwordLabel = QtGui.QLabel(self.ccliGroupBox)
|
self.password_label = QtGui.QLabel(self.ccli_group_box)
|
||||||
self.passwordLabel.setObjectName(u'passwordLabel')
|
self.password_label.setObjectName(u'password_label')
|
||||||
self.passwordEdit = QtGui.QLineEdit(self.ccliGroupBox)
|
self.password_edit = QtGui.QLineEdit(self.ccli_group_box)
|
||||||
self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password)
|
self.password_edit.setEchoMode(QtGui.QLineEdit.Password)
|
||||||
self.passwordEdit.setObjectName(u'passwordEdit')
|
self.password_edit.setObjectName(u'password_edit')
|
||||||
self.ccliLayout.addRow(self.passwordLabel, self.passwordEdit)
|
self.ccli_layout.addRow(self.password_label, self.password_edit)
|
||||||
self.leftLayout.addWidget(self.ccliGroupBox)
|
self.left_layout.addWidget(self.ccli_group_box)
|
||||||
# Background audio
|
# Background audio
|
||||||
self.audioGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.audio_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.audioGroupBox.setObjectName(u'audioGroupBox')
|
self.audio_group_box.setObjectName(u'audio_group_box')
|
||||||
self.audioLayout = QtGui.QVBoxLayout(self.audioGroupBox)
|
self.audio_layout = QtGui.QVBoxLayout(self.audio_group_box)
|
||||||
self.audioLayout.setObjectName(u'audioLayout')
|
self.audio_layout.setObjectName(u'audio_layout')
|
||||||
self.startPausedCheckBox = QtGui.QCheckBox(self.audioGroupBox)
|
self.start_paused_check_box = QtGui.QCheckBox(self.audio_group_box)
|
||||||
self.startPausedCheckBox.setObjectName(u'startPausedCheckBox')
|
self.start_paused_check_box.setObjectName(u'start_paused_check_box')
|
||||||
self.audioLayout.addWidget(self.startPausedCheckBox)
|
self.audio_layout.addWidget(self.start_paused_check_box)
|
||||||
self.repeatListCheckBox = QtGui.QCheckBox(self.audioGroupBox)
|
self.repeat_list_check_box = QtGui.QCheckBox(self.audio_group_box)
|
||||||
self.repeatListCheckBox.setObjectName(u'repeatListCheckBox')
|
self.repeat_list_check_box.setObjectName(u'repeat_list_check_box')
|
||||||
self.audioLayout.addWidget(self.repeatListCheckBox)
|
self.audio_layout.addWidget(self.repeat_list_check_box)
|
||||||
self.leftLayout.addWidget(self.audioGroupBox)
|
self.left_layout.addWidget(self.audio_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
# Application Startup
|
# Application Startup
|
||||||
self.startupGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.startup_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.startupGroupBox.setObjectName(u'startupGroupBox')
|
self.startup_group_box.setObjectName(u'startup_group_box')
|
||||||
self.startupLayout = QtGui.QVBoxLayout(self.startupGroupBox)
|
self.startup_layout = QtGui.QVBoxLayout(self.startup_group_box)
|
||||||
self.startupLayout.setObjectName(u'startupLayout')
|
self.startup_layout.setObjectName(u'startup_layout')
|
||||||
self.warningCheckBox = QtGui.QCheckBox(self.startupGroupBox)
|
self.warning_check_box = QtGui.QCheckBox(self.startup_group_box)
|
||||||
self.warningCheckBox.setObjectName(u'warningCheckBox')
|
self.warning_check_box.setObjectName(u'warning_check_box')
|
||||||
self.startupLayout.addWidget(self.warningCheckBox)
|
self.startup_layout.addWidget(self.warning_check_box)
|
||||||
self.autoOpenCheckBox = QtGui.QCheckBox(self.startupGroupBox)
|
self.auto_open_check_box = QtGui.QCheckBox(self.startup_group_box)
|
||||||
self.autoOpenCheckBox.setObjectName(u'autoOpenCheckBox')
|
self.auto_open_check_box.setObjectName(u'auto_open_check_box')
|
||||||
self.startupLayout.addWidget(self.autoOpenCheckBox)
|
self.startup_layout.addWidget(self.auto_open_check_box)
|
||||||
self.showSplashCheckBox = QtGui.QCheckBox(self.startupGroupBox)
|
self.show_splash_check_box = QtGui.QCheckBox(self.startup_group_box)
|
||||||
self.showSplashCheckBox.setObjectName(u'showSplashCheckBox')
|
self.show_splash_check_box.setObjectName(u'show_splash_check_box')
|
||||||
self.startupLayout.addWidget(self.showSplashCheckBox)
|
self.startup_layout.addWidget(self.show_splash_check_box)
|
||||||
self.checkForUpdatesCheckBox = QtGui.QCheckBox(self.startupGroupBox)
|
self.check_for_updates_check_box = QtGui.QCheckBox(self.startup_group_box)
|
||||||
self.checkForUpdatesCheckBox.setObjectName(u'checkForUpdatesCheckBox')
|
self.check_for_updates_check_box.setObjectName(u'check_for_updates_check_box')
|
||||||
self.startupLayout.addWidget(self.checkForUpdatesCheckBox)
|
self.startup_layout.addWidget(self.check_for_updates_check_box)
|
||||||
self.rightLayout.addWidget(self.startupGroupBox)
|
self.right_layout.addWidget(self.startup_group_box)
|
||||||
# Application Settings
|
# Application Settings
|
||||||
self.settingsGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.settings_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.settingsGroupBox.setObjectName(u'settingsGroupBox')
|
self.settings_group_box.setObjectName(u'settings_group_box')
|
||||||
self.settingsLayout = QtGui.QFormLayout(self.settingsGroupBox)
|
self.settings_layout = QtGui.QFormLayout(self.settings_group_box)
|
||||||
self.settingsLayout.setObjectName(u'settingsLayout')
|
self.settings_layout.setObjectName(u'settings_layout')
|
||||||
self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
self.save_check_service_check_box = QtGui.QCheckBox(self.settings_group_box)
|
||||||
self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox')
|
self.save_check_service_check_box.setObjectName(u'save_check_service_check_box')
|
||||||
self.settingsLayout.addRow(self.saveCheckServiceCheckBox)
|
self.settings_layout.addRow(self.save_check_service_check_box)
|
||||||
self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
self.auto_unblank_check_box = QtGui.QCheckBox(self.settings_group_box)
|
||||||
self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox')
|
self.auto_unblank_check_box.setObjectName(u'auto_unblank_check_box')
|
||||||
self.settingsLayout.addRow(self.autoUnblankCheckBox)
|
self.settings_layout.addRow(self.auto_unblank_check_box)
|
||||||
self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
self.auto_preview_check_box = QtGui.QCheckBox(self.settings_group_box)
|
||||||
self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox')
|
self.auto_preview_check_box.setObjectName(u'auto_preview_check_box')
|
||||||
self.settingsLayout.addRow(self.autoPreviewCheckBox)
|
self.settings_layout.addRow(self.auto_preview_check_box)
|
||||||
# Moved here from image tab
|
# Moved here from image tab
|
||||||
self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox)
|
self.timeout_label = QtGui.QLabel(self.settings_group_box)
|
||||||
self.timeoutLabel.setObjectName(u'timeoutLabel')
|
self.timeout_label.setObjectName(u'timeout_label')
|
||||||
self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox)
|
self.timeout_spin_box = QtGui.QSpinBox(self.settings_group_box)
|
||||||
self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
|
self.timeout_spin_box.setObjectName(u'timeout_spin_box')
|
||||||
self.timeoutSpinBox.setRange(1, 180)
|
self.timeout_spin_box.setRange(1, 180)
|
||||||
self.settingsLayout.addRow(self.timeoutLabel, self.timeoutSpinBox)
|
self.settings_layout.addRow(self.timeout_label, self.timeout_spin_box)
|
||||||
self.rightLayout.addWidget(self.settingsGroupBox)
|
self.right_layout.addWidget(self.settings_group_box)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
self.overrideRadioButton.toggled.connect(self.onOverrideRadioButtonPressed)
|
self.override_radio_button.toggled.connect(self.on_override_radio_button_pressed)
|
||||||
self.customHeightValueEdit.valueChanged.connect(self.onDisplayChanged)
|
self.custom_height_value_edit.valueChanged.connect(self.on_display_changed)
|
||||||
self.customWidthValueEdit.valueChanged.connect(self.onDisplayChanged)
|
self.custom_width_value_edit.valueChanged.connect(self.on_display_changed)
|
||||||
self.customYValueEdit.valueChanged.connect(self.onDisplayChanged)
|
self.custom_Y_value_edit.valueChanged.connect(self.on_display_changed)
|
||||||
self.customXValueEdit.valueChanged.connect(self.onDisplayChanged)
|
self.custom_X_value_edit.valueChanged.connect(self.on_display_changed)
|
||||||
self.monitorComboBox.currentIndexChanged.connect(self.onDisplayChanged)
|
self.monitor_combo_box.currentIndexChanged.connect(self.on_display_changed)
|
||||||
# Reload the tab, as the screen resolution/count may have changed.
|
# Reload the tab, as the screen resolution/count may have changed.
|
||||||
Registry().register_function(u'config_screen_changed', self.load)
|
Registry().register_function(u'config_screen_changed', self.load)
|
||||||
# Remove for now
|
# Remove for now
|
||||||
self.usernameLabel.setVisible(False)
|
self.username_label.setVisible(False)
|
||||||
self.usernameEdit.setVisible(False)
|
self.username_edit.setVisible(False)
|
||||||
self.passwordLabel.setVisible(False)
|
self.password_label.setVisible(False)
|
||||||
self.passwordEdit.setVisible(False)
|
self.password_edit.setVisible(False)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
Translate the general settings tab to the currently selected language
|
Translate the general settings tab to the currently selected language
|
||||||
"""
|
"""
|
||||||
self.tabTitleVisible = translate('OpenLP.GeneralTab', 'General')
|
self.tab_title_visible = translate('OpenLP.GeneralTab', 'General')
|
||||||
self.monitorGroupBox.setTitle(translate('OpenLP.GeneralTab', 'Monitors'))
|
self.monitor_group_box.setTitle(translate('OpenLP.GeneralTab', 'Monitors'))
|
||||||
self.monitorRadioButton.setText(translate('OpenLP.GeneralTab', 'Select monitor for output display:'))
|
self.monitor_radio_button.setText(translate('OpenLP.GeneralTab', 'Select monitor for output display:'))
|
||||||
self.displayOnMonitorCheck.setText(translate('OpenLP.GeneralTab', 'Display if a single screen'))
|
self.display_on_monitor_check.setText(translate('OpenLP.GeneralTab', 'Display if a single screen'))
|
||||||
self.startupGroupBox.setTitle(translate('OpenLP.GeneralTab', 'Application Startup'))
|
self.startup_group_box.setTitle(translate('OpenLP.GeneralTab', 'Application Startup'))
|
||||||
self.warningCheckBox.setText(translate('OpenLP.GeneralTab', 'Show blank screen warning'))
|
self.warning_check_box.setText(translate('OpenLP.GeneralTab', 'Show blank screen warning'))
|
||||||
self.autoOpenCheckBox.setText(translate('OpenLP.GeneralTab', 'Automatically open the last service'))
|
self.auto_open_check_box.setText(translate('OpenLP.GeneralTab', 'Automatically open the last service'))
|
||||||
self.showSplashCheckBox.setText(translate('OpenLP.GeneralTab', 'Show the splash screen'))
|
self.show_splash_check_box.setText(translate('OpenLP.GeneralTab', 'Show the splash screen'))
|
||||||
self.checkForUpdatesCheckBox.setText(translate('OpenLP.GeneralTab', 'Check for updates to OpenLP'))
|
self.check_for_updates_check_box.setText(translate('OpenLP.GeneralTab', 'Check for updates to OpenLP'))
|
||||||
self.settingsGroupBox.setTitle(translate('OpenLP.GeneralTab', 'Application Settings'))
|
self.settings_group_box.setTitle(translate('OpenLP.GeneralTab', 'Application Settings'))
|
||||||
self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab',
|
self.save_check_service_check_box.setText(translate('OpenLP.GeneralTab',
|
||||||
'Prompt to save before starting a new service'))
|
'Prompt to save before starting a new service'))
|
||||||
self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', 'Unblank display when adding new live item'))
|
self.auto_unblank_check_box.setText(translate('OpenLP.GeneralTab', 'Unblank display when adding new live item'))
|
||||||
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service'))
|
self.auto_preview_check_box.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service'))
|
||||||
self.timeoutLabel.setText(translate('OpenLP.GeneralTab', 'Timed slide interval:'))
|
self.timeout_label.setText(translate('OpenLP.GeneralTab', 'Timed slide interval:'))
|
||||||
self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec'))
|
self.timeout_spin_box.setSuffix(translate('OpenLP.GeneralTab', ' sec'))
|
||||||
self.ccliGroupBox.setTitle(translate('OpenLP.GeneralTab', 'CCLI Details'))
|
self.ccli_group_box.setTitle(translate('OpenLP.GeneralTab', 'CCLI Details'))
|
||||||
self.numberLabel.setText(UiStrings().CCLINumberLabel)
|
self.number_label.setText(UiStrings().CCLINumberLabel)
|
||||||
self.usernameLabel.setText(translate('OpenLP.GeneralTab', 'SongSelect username:'))
|
self.username_label.setText(translate('OpenLP.GeneralTab', 'SongSelect username:'))
|
||||||
self.passwordLabel.setText(translate('OpenLP.GeneralTab', 'SongSelect password:'))
|
self.password_label.setText(translate('OpenLP.GeneralTab', 'SongSelect password:'))
|
||||||
# Moved from display tab
|
# Moved from display tab
|
||||||
self.overrideRadioButton.setText(translate('OpenLP.GeneralTab', 'Override display position:'))
|
self.override_radio_button.setText(translate('OpenLP.GeneralTab', 'Override display position:'))
|
||||||
self.customXLabel.setText(translate('OpenLP.GeneralTab', 'X'))
|
self.custom_x_label.setText(translate('OpenLP.GeneralTab', 'X'))
|
||||||
self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y'))
|
self.custom_y_label.setText(translate('OpenLP.GeneralTab', 'Y'))
|
||||||
self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height'))
|
self.custom_height_label.setText(translate('OpenLP.GeneralTab', 'Height'))
|
||||||
self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width'))
|
self.custom_width_label.setText(translate('OpenLP.GeneralTab', 'Width'))
|
||||||
self.audioGroupBox.setTitle(translate('OpenLP.GeneralTab', 'Background Audio'))
|
self.audio_group_box.setTitle(translate('OpenLP.GeneralTab', 'Background Audio'))
|
||||||
self.startPausedCheckBox.setText(translate('OpenLP.GeneralTab', 'Start background audio paused'))
|
self.start_paused_check_box.setText(translate('OpenLP.GeneralTab', 'Start background audio paused'))
|
||||||
self.repeatListCheckBox.setText(translate('OpenLP.GeneralTab', 'Repeat track list'))
|
self.repeat_list_check_box.setText(translate('OpenLP.GeneralTab', 'Repeat track list'))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
"""
|
"""
|
||||||
Load the settings to populate the form
|
Load the settings to populate the form
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.monitorComboBox.clear()
|
self.monitor_combo_box.clear()
|
||||||
self.monitorComboBox.addItems(self.screens.get_screen_list())
|
self.monitor_combo_box.addItems(self.screens.get_screen_list())
|
||||||
monitorNumber = settings.value(u'monitor')
|
monitorNumber = settings.value(u'monitor')
|
||||||
self.monitorComboBox.setCurrentIndex(monitorNumber)
|
self.monitor_combo_box.setCurrentIndex(monitorNumber)
|
||||||
self.numberEdit.setText(settings.value(u'ccli number'))
|
self.number_edit.setText(settings.value(u'ccli number'))
|
||||||
self.usernameEdit.setText(settings.value(u'songselect username'))
|
self.username_edit.setText(settings.value(u'songselect username'))
|
||||||
self.passwordEdit.setText(settings.value(u'songselect password'))
|
self.password_edit.setText(settings.value(u'songselect password'))
|
||||||
self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt'))
|
self.save_check_service_check_box.setChecked(settings.value(u'save prompt'))
|
||||||
self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank'))
|
self.auto_unblank_check_box.setChecked(settings.value(u'auto unblank'))
|
||||||
self.displayOnMonitorCheck.setChecked(self.screens.display)
|
self.display_on_monitor_check.setChecked(self.screens.display)
|
||||||
self.warningCheckBox.setChecked(settings.value(u'blank warning'))
|
self.warning_check_box.setChecked(settings.value(u'blank warning'))
|
||||||
self.autoOpenCheckBox.setChecked(settings.value(u'auto open'))
|
self.auto_open_check_box.setChecked(settings.value(u'auto open'))
|
||||||
self.showSplashCheckBox.setChecked(settings.value(u'show splash'))
|
self.show_splash_check_box.setChecked(settings.value(u'show splash'))
|
||||||
self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check'))
|
self.check_for_updates_check_box.setChecked(settings.value(u'update check'))
|
||||||
self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview'))
|
self.auto_preview_check_box.setChecked(settings.value(u'auto preview'))
|
||||||
self.timeoutSpinBox.setValue(settings.value(u'loop delay'))
|
self.timeout_spin_box.setValue(settings.value(u'loop delay'))
|
||||||
self.monitorRadioButton.setChecked(not settings.value(u'override position',))
|
self.monitor_radio_button.setChecked(not settings.value(u'override position',))
|
||||||
self.overrideRadioButton.setChecked(settings.value(u'override position'))
|
self.override_radio_button.setChecked(settings.value(u'override position'))
|
||||||
self.customXValueEdit.setValue(settings.value(u'x position'))
|
self.custom_X_value_edit.setValue(settings.value(u'x position'))
|
||||||
self.customYValueEdit.setValue(settings.value(u'y position'))
|
self.custom_Y_value_edit.setValue(settings.value(u'y position'))
|
||||||
self.customHeightValueEdit.setValue(settings.value(u'height'))
|
self.custom_height_value_edit.setValue(settings.value(u'height'))
|
||||||
self.customWidthValueEdit.setValue(settings.value(u'width'))
|
self.custom_width_value_edit.setValue(settings.value(u'width'))
|
||||||
self.startPausedCheckBox.setChecked(settings.value(u'audio start paused'))
|
self.start_paused_check_box.setChecked(settings.value(u'audio start paused'))
|
||||||
self.repeatListCheckBox.setChecked(settings.value(u'audio repeat list'))
|
self.repeat_list_check_box.setChecked(settings.value(u'audio repeat list'))
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.monitorComboBox.setDisabled(self.overrideRadioButton.isChecked())
|
self.monitor_combo_box.setDisabled(self.override_radio_button.isChecked())
|
||||||
self.customXValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.custom_X_value_edit.setEnabled(self.override_radio_button.isChecked())
|
||||||
self.customYValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.custom_Y_value_edit.setEnabled(self.override_radio_button.isChecked())
|
||||||
self.customHeightValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.custom_height_value_edit.setEnabled(self.override_radio_button.isChecked())
|
||||||
self.customWidthValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.custom_width_value_edit.setEnabled(self.override_radio_button.isChecked())
|
||||||
self.display_changed = False
|
self.display_changed = False
|
||||||
settings.beginGroup(self.settingsSection)
|
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Save the settings from the form
|
Save the settings from the form
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'monitor', self.monitorComboBox.currentIndex())
|
settings.setValue(u'monitor', self.monitor_combo_box.currentIndex())
|
||||||
settings.setValue(u'display on monitor', self.displayOnMonitorCheck.isChecked())
|
settings.setValue(u'display on monitor', self.display_on_monitor_check.isChecked())
|
||||||
settings.setValue(u'blank warning', self.warningCheckBox.isChecked())
|
settings.setValue(u'blank warning', self.warning_check_box.isChecked())
|
||||||
settings.setValue(u'auto open', self.autoOpenCheckBox.isChecked())
|
settings.setValue(u'auto open', self.auto_open_check_box.isChecked())
|
||||||
settings.setValue(u'show splash', self.showSplashCheckBox.isChecked())
|
settings.setValue(u'show splash', self.show_splash_check_box.isChecked())
|
||||||
settings.setValue(u'update check', self.checkForUpdatesCheckBox.isChecked())
|
settings.setValue(u'update check', self.check_for_updates_check_box.isChecked())
|
||||||
settings.setValue(u'save prompt', self.saveCheckServiceCheckBox.isChecked())
|
settings.setValue(u'save prompt', self.save_check_service_check_box.isChecked())
|
||||||
settings.setValue(u'auto unblank', self.autoUnblankCheckBox.isChecked())
|
settings.setValue(u'auto unblank', self.auto_unblank_check_box.isChecked())
|
||||||
settings.setValue(u'auto preview', self.autoPreviewCheckBox.isChecked())
|
settings.setValue(u'auto preview', self.auto_preview_check_box.isChecked())
|
||||||
settings.setValue(u'loop delay', self.timeoutSpinBox.value())
|
settings.setValue(u'loop delay', self.timeout_spin_box.value())
|
||||||
settings.setValue(u'ccli number', self.numberEdit.displayText())
|
settings.setValue(u'ccli number', self.number_edit.displayText())
|
||||||
settings.setValue(u'songselect username', self.usernameEdit.displayText())
|
settings.setValue(u'songselect username', self.username_edit.displayText())
|
||||||
settings.setValue(u'songselect password', self.passwordEdit.displayText())
|
settings.setValue(u'songselect password', self.password_edit.displayText())
|
||||||
settings.setValue(u'x position', self.customXValueEdit.value())
|
settings.setValue(u'x position', self.custom_X_value_edit.value())
|
||||||
settings.setValue(u'y position', self.customYValueEdit.value())
|
settings.setValue(u'y position', self.custom_Y_value_edit.value())
|
||||||
settings.setValue(u'height', self.customHeightValueEdit.value())
|
settings.setValue(u'height', self.custom_height_value_edit.value())
|
||||||
settings.setValue(u'width', self.customWidthValueEdit.value())
|
settings.setValue(u'width', self.custom_width_value_edit.value())
|
||||||
settings.setValue(u'override position', self.overrideRadioButton.isChecked())
|
settings.setValue(u'override position', self.override_radio_button.isChecked())
|
||||||
settings.setValue(u'audio start paused', self.startPausedCheckBox.isChecked())
|
settings.setValue(u'audio start paused', self.start_paused_check_box.isChecked())
|
||||||
settings.setValue(u'audio repeat list', self.repeatListCheckBox.isChecked())
|
settings.setValue(u'audio repeat list', self.repeat_list_check_box.isChecked())
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
# On save update the screens as well
|
# On save update the screens as well
|
||||||
self.post_set_up(True)
|
self.post_set_up(True)
|
||||||
|
|
||||||
def post_set_up(self, postUpdate=False):
|
def post_set_up(self, postUpdate=False):
|
||||||
"""
|
"""
|
||||||
Apply settings after settings tab has loaded and most of the
|
Apply settings after settings tab has loaded and most of the system so must be delayed
|
||||||
system so must be delayed
|
|
||||||
"""
|
"""
|
||||||
Registry().execute(u'slidecontroller_live_spin_delay', self.timeoutSpinBox.value())
|
self.settings_form.register_post_process(u'slidecontroller_live_spin_delay')
|
||||||
# Do not continue on start up.
|
# Do not continue on start up.
|
||||||
if not postUpdate:
|
if not postUpdate:
|
||||||
return
|
return
|
||||||
self.screens.set_current_display(self.monitorComboBox.currentIndex())
|
self.screens.set_current_display(self.monitor_combo_box.currentIndex())
|
||||||
self.screens.display = self.displayOnMonitorCheck.isChecked()
|
self.screens.display = self.display_on_monitor_check.isChecked()
|
||||||
self.screens.override[u'size'] = QtCore.QRect(
|
self.screens.override[u'size'] = QtCore.QRect(
|
||||||
self.customXValueEdit.value(),
|
self.custom_X_value_edit.value(),
|
||||||
self.customYValueEdit.value(),
|
self.custom_Y_value_edit.value(),
|
||||||
self.customWidthValueEdit.value(),
|
self.custom_width_value_edit.value(),
|
||||||
self.customHeightValueEdit.value())
|
self.custom_height_value_edit.value())
|
||||||
if self.overrideRadioButton.isChecked():
|
if self.override_radio_button.isChecked():
|
||||||
self.screens.set_override_display()
|
self.screens.set_override_display()
|
||||||
else:
|
else:
|
||||||
self.screens.reset_current_display()
|
self.screens.reset_current_display()
|
||||||
if self.display_changed:
|
if self.display_changed:
|
||||||
Registry().execute(u'config_screen_changed')
|
self.settings_form.register_post_process(u'config_screen_changed')
|
||||||
self.display_changed = False
|
self.display_changed = False
|
||||||
|
|
||||||
def onOverrideRadioButtonPressed(self, checked):
|
def on_override_radio_button_pressed(self, checked):
|
||||||
"""
|
"""
|
||||||
Toggle screen state depending on check box state.
|
Toggle screen state depending on check box state.
|
||||||
|
|
||||||
``checked``
|
``checked``
|
||||||
The state of the check box (boolean).
|
The state of the check box (boolean).
|
||||||
"""
|
"""
|
||||||
self.monitorComboBox.setDisabled(checked)
|
self.monitor_combo_box.setDisabled(checked)
|
||||||
self.customXValueEdit.setEnabled(checked)
|
self.custom_X_value_edit.setEnabled(checked)
|
||||||
self.customYValueEdit.setEnabled(checked)
|
self.custom_Y_value_edit.setEnabled(checked)
|
||||||
self.customHeightValueEdit.setEnabled(checked)
|
self.custom_height_value_edit.setEnabled(checked)
|
||||||
self.customWidthValueEdit.setEnabled(checked)
|
self.custom_width_value_edit.setEnabled(checked)
|
||||||
self.display_changed = True
|
self.display_changed = True
|
||||||
|
|
||||||
def onDisplayChanged(self):
|
def on_display_changed(self):
|
||||||
"""
|
"""
|
||||||
Called when the width, height, x position or y position has changed.
|
Called when the width, height, x position or y position has changed.
|
||||||
"""
|
"""
|
||||||
|
@ -158,7 +158,6 @@ class MainDisplay(Display):
|
|||||||
Registry().register_function(u'live_display_hide', self.hide_display)
|
Registry().register_function(u'live_display_hide', self.hide_display)
|
||||||
Registry().register_function(u'live_display_show', self.show_display)
|
Registry().register_function(u'live_display_show', self.show_display)
|
||||||
Registry().register_function(u'update_display_css', self.css_changed)
|
Registry().register_function(u'update_display_css', self.css_changed)
|
||||||
Registry().register_function(u'config_updated', self.config_changed)
|
|
||||||
|
|
||||||
def set_transparency(self, enabled):
|
def set_transparency(self, enabled):
|
||||||
"""
|
"""
|
||||||
@ -173,19 +172,10 @@ class MainDisplay(Display):
|
|||||||
|
|
||||||
def css_changed(self):
|
def css_changed(self):
|
||||||
"""
|
"""
|
||||||
We may need to rebuild the CSS on the live display.
|
We need to rebuild the CSS on the live display.
|
||||||
"""
|
"""
|
||||||
self.rebuild_css = True
|
for plugin in self.plugin_manager.plugins:
|
||||||
|
plugin.refreshCss(self.frame)
|
||||||
def config_changed(self):
|
|
||||||
"""
|
|
||||||
Call the plugins to rebuild the Live display CSS as the screen has
|
|
||||||
not been rebuild on exit of config.
|
|
||||||
"""
|
|
||||||
if self.rebuild_css and self.plugin_manager.plugins:
|
|
||||||
for plugin in self.plugin_manager.plugins:
|
|
||||||
plugin.refreshCss(self.frame)
|
|
||||||
self.rebuild_css = False
|
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -40,7 +40,7 @@ class MediaQCheckBox(QtGui.QCheckBox):
|
|||||||
"""
|
"""
|
||||||
MediaQCheckBox adds an extra property, playerName to the QCheckBox class.
|
MediaQCheckBox adds an extra property, playerName to the QCheckBox class.
|
||||||
"""
|
"""
|
||||||
def setPlayerName(self, name):
|
def set_player_name(self, name):
|
||||||
"""
|
"""
|
||||||
Set the player name
|
Set the player name
|
||||||
"""
|
"""
|
||||||
@ -56,8 +56,8 @@ class PlayerTab(SettingsTab):
|
|||||||
Constructor
|
Constructor
|
||||||
"""
|
"""
|
||||||
self.media_players = self.media_controller.media_players
|
self.media_players = self.media_controller.media_players
|
||||||
self.savedUsedPlayers = None
|
self.saved_used_players = None
|
||||||
self.iconPath = u':/media/multimedia-player.png'
|
self.icon_path = u':/media/multimedia-player.png'
|
||||||
player_translated = translate('OpenLP.PlayerTab', 'Players')
|
player_translated = translate('OpenLP.PlayerTab', 'Players')
|
||||||
SettingsTab.__init__(self, parent, u'Players', player_translated)
|
SettingsTab.__init__(self, parent, u'Players', player_translated)
|
||||||
|
|
||||||
@ -67,200 +67,197 @@ class PlayerTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'MediaTab')
|
self.setObjectName(u'MediaTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.bgColorGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.background_color_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.bgColorGroupBox.setObjectName(u'FontGroupBox')
|
self.background_color_group_box.setObjectName(u'background_color_group_box')
|
||||||
self.formLayout = QtGui.QFormLayout(self.bgColorGroupBox)
|
self.form_layout = QtGui.QFormLayout(self.background_color_group_box)
|
||||||
self.formLayout.setObjectName(u'FormLayout')
|
self.form_layout.setObjectName(u'form_layout')
|
||||||
self.colorLayout = QtGui.QHBoxLayout()
|
self.color_layout = QtGui.QHBoxLayout()
|
||||||
self.backgroundColorLabel = QtGui.QLabel(self.bgColorGroupBox)
|
self.background_color_label = QtGui.QLabel(self.background_color_group_box)
|
||||||
self.backgroundColorLabel.setObjectName(u'BackgroundColorLabel')
|
self.background_color_label.setObjectName(u'background_color_label')
|
||||||
self.colorLayout.addWidget(self.backgroundColorLabel)
|
self.color_layout.addWidget(self.background_color_label)
|
||||||
self.backgroundColorButton = QtGui.QPushButton(self.bgColorGroupBox)
|
self.background_color_button = QtGui.QPushButton(self.background_color_group_box)
|
||||||
self.backgroundColorButton.setObjectName(u'BackgroundColorButton')
|
self.background_color_button.setObjectName(u'background_color_button')
|
||||||
self.colorLayout.addWidget(self.backgroundColorButton)
|
self.color_layout.addWidget(self.background_color_button)
|
||||||
self.formLayout.addRow(self.colorLayout)
|
self.form_layout.addRow(self.color_layout)
|
||||||
self.information_label = QtGui.QLabel(self.bgColorGroupBox)
|
self.information_label = QtGui.QLabel(self.background_color_group_box)
|
||||||
self.information_label.setObjectName(u'information_label')
|
self.information_label.setObjectName(u'information_label')
|
||||||
self.information_label.setWordWrap(True)
|
self.information_label.setWordWrap(True)
|
||||||
self.formLayout.addRow(self.information_label)
|
self.form_layout.addRow(self.information_label)
|
||||||
self.leftLayout.addWidget(self.bgColorGroupBox)
|
self.left_layout.addWidget(self.background_color_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightColumn.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
self.right_column.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.mediaPlayerGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.media_player_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.mediaPlayerGroupBox.setObjectName(u'mediaPlayerGroupBox')
|
self.media_player_group_box.setObjectName(u'media_player_group_box')
|
||||||
self.mediaPlayerLayout = QtGui.QVBoxLayout(self.mediaPlayerGroupBox)
|
self.media_player_layout = QtGui.QVBoxLayout(self.media_player_group_box)
|
||||||
self.mediaPlayerLayout.setObjectName(u'mediaPlayerLayout')
|
self.media_player_layout.setObjectName(u'media_player_layout')
|
||||||
self.playerCheckBoxes = {}
|
self.player_check_boxes = {}
|
||||||
self.leftLayout.addWidget(self.mediaPlayerGroupBox)
|
self.left_layout.addWidget(self.media_player_group_box)
|
||||||
self.playerOrderGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.player_order_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.playerOrderGroupBox.setObjectName(u'playerOrderGroupBox')
|
self.player_order_group_box.setObjectName(u'player_order_group_box')
|
||||||
self.playerOrderLayout = QtGui.QHBoxLayout(self.playerOrderGroupBox)
|
self.player_order_layout = QtGui.QHBoxLayout(self.player_order_group_box)
|
||||||
self.playerOrderLayout.setObjectName(u'playerOrderLayout')
|
self.player_order_layout.setObjectName(u'player_order_layout')
|
||||||
self.playerOrderlistWidget = QtGui.QListWidget(self.playerOrderGroupBox)
|
self.player_order_list_widget = QtGui.QListWidget(self.player_order_group_box)
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.playerOrderlistWidget.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.player_order_list_widget.sizePolicy().hasHeightForWidth())
|
||||||
self.playerOrderlistWidget.setSizePolicy(sizePolicy)
|
self.player_order_list_widget.setSizePolicy(sizePolicy)
|
||||||
self.playerOrderlistWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
|
self.player_order_list_widget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
|
||||||
self.playerOrderlistWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
self.player_order_list_widget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||||
self.playerOrderlistWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
|
self.player_order_list_widget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
|
||||||
self.playerOrderlistWidget.setObjectName(u'playerOrderlistWidget')
|
self.player_order_list_widget.setObjectName(u'player_order_list_widget')
|
||||||
self.playerOrderLayout.addWidget(self.playerOrderlistWidget)
|
self.player_order_layout.addWidget(self.player_order_list_widget)
|
||||||
self.orderingButtonLayout = QtGui.QVBoxLayout()
|
self.ordering_button_layout = QtGui.QVBoxLayout()
|
||||||
self.orderingButtonLayout.setObjectName(u'orderingButtonLayout')
|
self.ordering_button_layout.setObjectName(u'ordering_button_layout')
|
||||||
self.orderingButtonLayout.addStretch(1)
|
self.ordering_button_layout.addStretch(1)
|
||||||
self.orderingUpButton = create_button(self, u'orderingUpButton', role=u'up', click=self.onUpButtonClicked)
|
self.ordering_up_button = create_button(self, u'ordering_up_button', role=u'up',
|
||||||
self.orderingDownButton = create_button(self, u'orderingDownButton', role=u'down',
|
click=self.on_up_button_clicked)
|
||||||
click=self.onDownButtonClicked)
|
self.ordering_down_button = create_button(self, u'ordering_down_button', role=u'down',
|
||||||
self.orderingButtonLayout.addWidget(self.orderingUpButton)
|
click=self.on_down_button_clicked)
|
||||||
self.orderingButtonLayout.addWidget(self.orderingDownButton)
|
self.ordering_button_layout.addWidget(self.ordering_up_button)
|
||||||
self.orderingButtonLayout.addStretch(1)
|
self.ordering_button_layout.addWidget(self.ordering_down_button)
|
||||||
self.playerOrderLayout.addLayout(self.orderingButtonLayout)
|
self.ordering_button_layout.addStretch(1)
|
||||||
self.leftLayout.addWidget(self.playerOrderGroupBox)
|
self.player_order_layout.addLayout(self.ordering_button_layout)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addWidget(self.player_order_group_box)
|
||||||
self.rightLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
|
self.right_layout.addStretch()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
self.backgroundColorButton.clicked.connect(self.onbackgroundColorButtonClicked)
|
self.background_color_button.clicked.connect(self.on_background_color_button_clicked)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
Translate the UI on the fly
|
Translate the UI on the fly
|
||||||
"""
|
"""
|
||||||
self.mediaPlayerGroupBox.setTitle(translate('OpenLP.PlayerTab', 'Available Media Players'))
|
self.media_player_group_box.setTitle(translate('OpenLP.PlayerTab', 'Available Media Players'))
|
||||||
self.playerOrderGroupBox.setTitle(translate('OpenLP.PlayerTab', 'Player Search Order'))
|
self.player_order_group_box.setTitle(translate('OpenLP.PlayerTab', 'Player Search Order'))
|
||||||
self.bgColorGroupBox.setTitle(UiStrings().BackgroundColor)
|
self.background_color_group_box.setTitle(UiStrings().BackgroundColor)
|
||||||
self.backgroundColorLabel.setText(UiStrings().DefaultColor)
|
self.background_color_label.setText(UiStrings().DefaultColor)
|
||||||
self.information_label.setText(translate('OpenLP.PlayerTab',
|
self.information_label.setText(translate('OpenLP.PlayerTab',
|
||||||
'Visible background for videos with aspect ratio different to screen.'))
|
'Visible background for videos with aspect ratio different to screen.'))
|
||||||
self.retranslatePlayers()
|
self.retranslatePlayers()
|
||||||
|
|
||||||
def onbackgroundColorButtonClicked(self):
|
def on_background_color_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Set the background color
|
Set the background color
|
||||||
"""
|
"""
|
||||||
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.bg_color), self)
|
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.background_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.bg_color = new_color.name()
|
self.background_color = new_color.name()
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
|
|
||||||
def onPlayerCheckBoxChanged(self, check_state):
|
def on_player_check_box_changed(self, check_state):
|
||||||
"""
|
"""
|
||||||
Add or remove players depending on their status
|
Add or remove players depending on their status
|
||||||
"""
|
"""
|
||||||
player = self.sender().playerName
|
player = self.sender().playerName
|
||||||
if check_state == QtCore.Qt.Checked:
|
if check_state == QtCore.Qt.Checked:
|
||||||
if player not in self.usedPlayers:
|
if player not in self.used_players:
|
||||||
self.usedPlayers.append(player)
|
self.used_players.append(player)
|
||||||
else:
|
else:
|
||||||
if player in self.usedPlayers:
|
if player in self.used_players:
|
||||||
self.usedPlayers.remove(player)
|
self.used_players.remove(player)
|
||||||
self.updatePlayerList()
|
self.update_player_list()
|
||||||
|
|
||||||
def updatePlayerList(self):
|
def update_player_list(self):
|
||||||
"""
|
"""
|
||||||
Update the list of media players
|
Update the list of media players
|
||||||
"""
|
"""
|
||||||
self.playerOrderlistWidget.clear()
|
self.player_order_list_widget.clear()
|
||||||
for player in self.usedPlayers:
|
for player in self.used_players:
|
||||||
if player in self.playerCheckBoxes.keys():
|
if player in self.player_check_boxes.keys():
|
||||||
if len(self.usedPlayers) == 1:
|
if len(self.used_players) == 1:
|
||||||
# At least one media player has to stay active
|
# At least one media player has to stay active
|
||||||
self.playerCheckBoxes[u'%s' % player].setEnabled(False)
|
self.player_check_boxes[u'%s' % player].setEnabled(False)
|
||||||
else:
|
else:
|
||||||
self.playerCheckBoxes[u'%s' % player].setEnabled(True)
|
self.player_check_boxes[u'%s' % player].setEnabled(True)
|
||||||
self.playerOrderlistWidget.addItem(self.media_players[unicode(player)].original_name)
|
self.player_order_list_widget.addItem(self.media_players[unicode(player)].original_name)
|
||||||
|
|
||||||
def onUpButtonClicked(self):
|
def on_up_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Move a media player up in the order
|
Move a media player up in the order
|
||||||
"""
|
"""
|
||||||
row = self.playerOrderlistWidget.currentRow()
|
row = self.player_order_list_widget.currentRow()
|
||||||
if row <= 0:
|
if row <= 0:
|
||||||
return
|
return
|
||||||
item = self.playerOrderlistWidget.takeItem(row)
|
item = self.player_order_list_widget.takeItem(row)
|
||||||
self.playerOrderlistWidget.insertItem(row - 1, item)
|
self.player_order_list_widget.insertItem(row - 1, item)
|
||||||
self.playerOrderlistWidget.setCurrentRow(row - 1)
|
self.player_order_list_widget.setCurrentRow(row - 1)
|
||||||
self.usedPlayers.insert(row - 1, self.usedPlayers.pop(row))
|
self.used_players.insert(row - 1, self.used_players.pop(row))
|
||||||
|
|
||||||
def onDownButtonClicked(self):
|
def on_down_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Move a media player down in the order
|
Move a media player down in the order
|
||||||
"""
|
"""
|
||||||
row = self.playerOrderlistWidget.currentRow()
|
row = self.player_order_list_widget.currentRow()
|
||||||
if row == -1 or row > self.playerOrderlistWidget.count() - 1:
|
if row == -1 or row > self.player_order_list_widget.count() - 1:
|
||||||
return
|
return
|
||||||
item = self.playerOrderlistWidget.takeItem(row)
|
item = self.player_order_list_widget.takeItem(row)
|
||||||
self.playerOrderlistWidget.insertItem(row + 1, item)
|
self.player_order_list_widget.insertItem(row + 1, item)
|
||||||
self.playerOrderlistWidget.setCurrentRow(row + 1)
|
self.player_order_list_widget.setCurrentRow(row + 1)
|
||||||
self.usedPlayers.insert(row + 1, self.usedPlayers.pop(row))
|
self.used_players.insert(row + 1, self.used_players.pop(row))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
"""
|
"""
|
||||||
Load the settings
|
Load the settings
|
||||||
"""
|
"""
|
||||||
if self.savedUsedPlayers:
|
if self.saved_used_players:
|
||||||
self.usedPlayers = self.savedUsedPlayers
|
self.used_players = self.saved_used_players
|
||||||
self.usedPlayers = get_media_players()[0]
|
self.used_players = get_media_players()[0]
|
||||||
self.savedUsedPlayers = self.usedPlayers
|
self.saved_used_players = self.used_players
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.updatePlayerList()
|
self.update_player_list()
|
||||||
self.bg_color = settings.value(u'background color')
|
self.background_color = settings.value(u'background color')
|
||||||
self.initial_color = self.bg_color
|
self.initial_color = self.background_color
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Save the settings
|
Save the settings
|
||||||
"""
|
"""
|
||||||
player_string_changed = False
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'background color', self.bg_color)
|
settings.setValue(u'background color', self.background_color)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
old_players, override_player = get_media_players()
|
old_players, override_player = get_media_players()
|
||||||
if self.usedPlayers != old_players:
|
if self.used_players != old_players:
|
||||||
# clean old Media stuff
|
# clean old Media stuff
|
||||||
set_media_players(self.usedPlayers, override_player)
|
set_media_players(self.used_players, override_player)
|
||||||
player_string_changed = True
|
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||||
if player_string_changed:
|
self.settings_form.register_post_process(u'mediaitem_media_rebuild')
|
||||||
self.service_manager.reset_supported_suffixes()
|
self.settings_form.register_post_process(u'config_screen_changed')
|
||||||
Registry().execute(u'mediaitem_media_rebuild')
|
|
||||||
Registry().execute(u'config_screen_changed')
|
|
||||||
|
|
||||||
def post_set_up(self):
|
def post_set_up(self):
|
||||||
"""
|
"""
|
||||||
Late setup for players as the MediaController has to be initialised
|
Late setup for players as the MediaController has to be initialised first.
|
||||||
first.
|
|
||||||
"""
|
"""
|
||||||
for key, player in self.media_players.iteritems():
|
for key, player in self.media_players.iteritems():
|
||||||
player = self.media_players[key]
|
player = self.media_players[key]
|
||||||
checkbox = MediaQCheckBox(self.mediaPlayerGroupBox)
|
checkbox = MediaQCheckBox(self.media_player_group_box)
|
||||||
checkbox.setEnabled(player.available)
|
checkbox.setEnabled(player.available)
|
||||||
checkbox.setObjectName(player.name + u'CheckBox')
|
checkbox.setObjectName(player.name + u'_check_box')
|
||||||
checkbox.setToolTip(player.get_info())
|
checkbox.setToolTip(player.get_info())
|
||||||
checkbox.setPlayerName(player.name)
|
checkbox.set_player_name(player.name)
|
||||||
self.playerCheckBoxes[player.name] = checkbox
|
self.player_check_boxes[player.name] = checkbox
|
||||||
checkbox.stateChanged.connect(self.onPlayerCheckBoxChanged)
|
checkbox.stateChanged.connect(self.on_player_check_box_changed)
|
||||||
self.mediaPlayerLayout.addWidget(checkbox)
|
self.media_player_layout.addWidget(checkbox)
|
||||||
if player.available and player.name in self.usedPlayers:
|
if player.available and player.name in self.used_players:
|
||||||
checkbox.setChecked(True)
|
checkbox.setChecked(True)
|
||||||
else:
|
else:
|
||||||
checkbox.setChecked(False)
|
checkbox.setChecked(False)
|
||||||
self.updatePlayerList()
|
self.update_player_list()
|
||||||
self.retranslatePlayers()
|
self.retranslatePlayers()
|
||||||
|
|
||||||
def retranslatePlayers(self):
|
def retranslatePlayers(self):
|
||||||
"""
|
"""
|
||||||
Translations for players is dependent on their setup as well
|
Translations for players is dependent on their setup as well
|
||||||
"""
|
"""
|
||||||
for key in self.media_players:
|
for key in self.media_players and self.player_check_boxes:
|
||||||
player = self.media_players[key]
|
player = self.media_players[key]
|
||||||
checkbox = self.playerCheckBoxes[player.name]
|
checkbox = self.player_check_boxes[player.name]
|
||||||
checkbox.setPlayerName(player.name)
|
checkbox.set_player_name(player.name)
|
||||||
if player.available:
|
if player.available:
|
||||||
checkbox.setText(player.display_name)
|
checkbox.setText(player.display_name)
|
||||||
else:
|
else:
|
||||||
|
@ -58,12 +58,12 @@ except OSError, e:
|
|||||||
|
|
||||||
if VLC_AVAILABLE:
|
if VLC_AVAILABLE:
|
||||||
try:
|
try:
|
||||||
version = vlc.libvlc_get_version()
|
VERSION = vlc.libvlc_get_version()
|
||||||
except:
|
except:
|
||||||
version = u'0.0.0'
|
VERSION = u'0.0.0'
|
||||||
if LooseVersion(version) < LooseVersion('1.1.0'):
|
if LooseVersion(VERSION) < LooseVersion('1.1.0'):
|
||||||
VLC_AVAILABLE = False
|
VLC_AVAILABLE = False
|
||||||
log.debug(u'VLC could not be loaded: %s' % version)
|
log.debug(u'VLC could not be loaded, because the vlc version is too old: %s' % VERSION)
|
||||||
|
|
||||||
AUDIO_EXT = [u'*.mp3', u'*.wav', u'*.wma', u'*.ogg']
|
AUDIO_EXT = [u'*.mp3', u'*.wav', u'*.wma', u'*.ogg']
|
||||||
|
|
||||||
|
@ -113,10 +113,12 @@ class ServiceManagerDialog(object):
|
|||||||
self.toolbar = OpenLPToolbar(self)
|
self.toolbar = OpenLPToolbar(self)
|
||||||
self.toolbar.add_toolbar_action(u'newService', text=UiStrings().NewService, icon=u':/general/general_new.png',
|
self.toolbar.add_toolbar_action(u'newService', text=UiStrings().NewService, icon=u':/general/general_new.png',
|
||||||
tooltip=UiStrings().CreateService, triggers=self.on_new_service_clicked)
|
tooltip=UiStrings().CreateService, triggers=self.on_new_service_clicked)
|
||||||
self.toolbar.add_toolbar_action(u'openService', text=UiStrings().OpenService, icon=u':/general/general_open.png',
|
self.toolbar.add_toolbar_action(u'openService', text=UiStrings().OpenService,
|
||||||
|
icon=u':/general/general_open.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Load an existing service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Load an existing service.'),
|
||||||
triggers=self.on_load_service_clicked)
|
triggers=self.on_load_service_clicked)
|
||||||
self.toolbar.add_toolbar_action(u'saveService', text=UiStrings().SaveService, icon=u':/general/general_save.png',
|
self.toolbar.add_toolbar_action(u'saveService', text=UiStrings().SaveService,
|
||||||
|
icon=u':/general/general_save.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Save this service.'), triggers=self.decide_save_method)
|
tooltip=translate('OpenLP.ServiceManager', 'Save this service.'), triggers=self.decide_save_method)
|
||||||
self.toolbar.addSeparator()
|
self.toolbar.addSeparator()
|
||||||
self.theme_label = QtGui.QLabel(u'%s:' % UiStrings().Theme, self)
|
self.theme_label = QtGui.QLabel(u'%s:' % UiStrings().Theme, self)
|
||||||
@ -206,7 +208,7 @@ class ServiceManagerDialog(object):
|
|||||||
self.service_manager_list.itemCollapsed.connect(self.collapsed)
|
self.service_manager_list.itemCollapsed.connect(self.collapsed)
|
||||||
self.service_manager_list.itemExpanded.connect(self.expanded)
|
self.service_manager_list.itemExpanded.connect(self.expanded)
|
||||||
# Last little bits of setting up
|
# Last little bits of setting up
|
||||||
self.service_theme = Settings().value(self.main_window.serviceManagerSettingsSection + u'/service theme')
|
self.service_theme = Settings().value(self.main_window.service_manager_settings_section + u'/service theme')
|
||||||
self.servicePath = AppLocation.get_section_data_path(u'servicemanager')
|
self.servicePath = AppLocation.get_section_data_path(u'servicemanager')
|
||||||
# build the drag and drop context menu
|
# build the drag and drop context menu
|
||||||
self.dndMenu = QtGui.QMenu()
|
self.dndMenu = QtGui.QMenu()
|
||||||
@ -265,9 +267,10 @@ class ServiceManagerDialog(object):
|
|||||||
self.service_manager_list.collapse
|
self.service_manager_list.collapse
|
||||||
])
|
])
|
||||||
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
||||||
Registry().register_function(u'config_updated', self.config_updated)
|
|
||||||
Registry().register_function(u'config_screen_changed', self.regenerate_service_Items)
|
Registry().register_function(u'config_screen_changed', self.regenerate_service_Items)
|
||||||
Registry().register_function(u'theme_update_global', self.theme_change)
|
Registry().register_function(u'theme_update_global', self.theme_change)
|
||||||
|
Registry().register_function(u'mediaitem_suffix_reset', self.reset_supported_suffixes)
|
||||||
|
Registry().register_function(u'servicemanager_set_item', self.on_set_item)
|
||||||
|
|
||||||
def drag_enter_event(self, event):
|
def drag_enter_event(self, event):
|
||||||
"""
|
"""
|
||||||
@ -297,7 +300,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.service_items = []
|
self.service_items = []
|
||||||
self.suffixes = []
|
self.suffixes = []
|
||||||
self.drop_position = 0
|
self.drop_position = 0
|
||||||
self.expand_tabs = False
|
|
||||||
self.service_id = 0
|
self.service_id = 0
|
||||||
# is a new service and has not been saved
|
# is a new service and has not been saved
|
||||||
self._modified = False
|
self._modified = False
|
||||||
@ -311,7 +313,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.layout.setSpacing(0)
|
self.layout.setSpacing(0)
|
||||||
self.layout.setMargin(0)
|
self.layout.setMargin(0)
|
||||||
self.setup_ui(self)
|
self.setup_ui(self)
|
||||||
self.config_updated()
|
|
||||||
|
|
||||||
def set_modified(self, modified=True):
|
def set_modified(self, modified=True):
|
||||||
"""
|
"""
|
||||||
@ -322,7 +323,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.service_id += 1
|
self.service_id += 1
|
||||||
self._modified = modified
|
self._modified = modified
|
||||||
service_file = self.short_file_name() or translate('OpenLP.ServiceManager', 'Untitled Service')
|
service_file = self.short_file_name() or translate('OpenLP.ServiceManager', 'Untitled Service')
|
||||||
self.main_window.setServiceModified(modified, service_file)
|
self.main_window.set_service_modified(modified, service_file)
|
||||||
|
|
||||||
def is_modified(self):
|
def is_modified(self):
|
||||||
"""
|
"""
|
||||||
@ -335,7 +336,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
Setter for service file.
|
Setter for service file.
|
||||||
"""
|
"""
|
||||||
self._file_name = unicode(file_name)
|
self._file_name = unicode(file_name)
|
||||||
self.main_window.setServiceModified(self.is_modified(), self.short_file_name())
|
self.main_window.set_service_modified(self.is_modified(), self.short_file_name())
|
||||||
Settings().setValue(u'servicemanager/last file', file_name)
|
Settings().setValue(u'servicemanager/last file', file_name)
|
||||||
self._save_lite = self._file_name.endswith(u'.oszl')
|
self._save_lite = self._file_name.endswith(u'.oszl')
|
||||||
|
|
||||||
@ -351,12 +352,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
"""
|
"""
|
||||||
return split_filename(self._file_name)[1]
|
return split_filename(self._file_name)[1]
|
||||||
|
|
||||||
def config_updated(self):
|
|
||||||
"""
|
|
||||||
Triggered when Config dialog is updated.
|
|
||||||
"""
|
|
||||||
self.expand_tabs = Settings().value(u'advanced/expand service item')
|
|
||||||
|
|
||||||
def reset_supported_suffixes(self):
|
def reset_supported_suffixes(self):
|
||||||
"""
|
"""
|
||||||
Resets the Suffixes list.
|
Resets the Suffixes list.
|
||||||
@ -406,14 +401,14 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
file_name = QtGui.QFileDialog.getOpenFileName(
|
file_name = QtGui.QFileDialog.getOpenFileName(
|
||||||
self.main_window,
|
self.main_window,
|
||||||
translate('OpenLP.ServiceManager', 'Open File'),
|
translate('OpenLP.ServiceManager', 'Open File'),
|
||||||
Settings().value(self.main_window.serviceManagerSettingsSection + u'/last directory'),
|
Settings().value(self.main_window.service_manager_settings_section + u'/last directory'),
|
||||||
translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz *.oszl)')
|
translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz *.oszl)')
|
||||||
)
|
)
|
||||||
if not file_name:
|
if not file_name:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
file_name = load_file
|
file_name = load_file
|
||||||
Settings().setValue(self.main_window.serviceManagerSettingsSection + u'/last directory',
|
Settings().setValue(self.main_window.service_manager_settings_section + u'/last directory',
|
||||||
split_filename(file_name)[0])
|
split_filename(file_name)[0])
|
||||||
self.load_file(file_name)
|
self.load_file(file_name)
|
||||||
|
|
||||||
@ -466,7 +461,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
base_name = os.path.splitext(file_name)[0]
|
base_name = os.path.splitext(file_name)[0]
|
||||||
service_file_name = '%s.osd' % base_name
|
service_file_name = '%s.osd' % base_name
|
||||||
log.debug(u'ServiceManager.save_file - %s', path_file_name)
|
log.debug(u'ServiceManager.save_file - %s', path_file_name)
|
||||||
Settings().setValue(self.main_window.serviceManagerSettingsSection + u'/last directory', path)
|
Settings().setValue(self.main_window.service_manager_settings_section + u'/last directory', path)
|
||||||
service = []
|
service = []
|
||||||
write_list = []
|
write_list = []
|
||||||
missing_list = []
|
missing_list = []
|
||||||
@ -474,7 +469,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
total_size = 0
|
total_size = 0
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
# Number of items + 1 to zip it
|
# Number of items + 1 to zip it
|
||||||
self.main_window.displayProgressBar(len(self.service_items) + 1)
|
self.main_window.display_progress_bar(len(self.service_items) + 1)
|
||||||
# Get list of missing files, and list of files to write
|
# Get list of missing files, and list of files to write
|
||||||
for item in self.service_items:
|
for item in self.service_items:
|
||||||
if not item[u'service_item'].uses_file():
|
if not item[u'service_item'].uses_file():
|
||||||
@ -496,7 +491,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
answer = QtGui.QMessageBox.critical(self, title, message,
|
answer = QtGui.QMessageBox.critical(self, title, message,
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel))
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel))
|
||||||
if answer == QtGui.QMessageBox.Cancel:
|
if answer == QtGui.QMessageBox.Cancel:
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
return False
|
return False
|
||||||
# Check if item contains a missing file.
|
# Check if item contains a missing file.
|
||||||
for item in list(self.service_items):
|
for item in list(self.service_items):
|
||||||
@ -556,14 +551,14 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
finally:
|
finally:
|
||||||
if zip_file:
|
if zip_file:
|
||||||
zip_file.close()
|
zip_file.close()
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
if success:
|
if success:
|
||||||
try:
|
try:
|
||||||
shutil.copy(temp_file_name, path_file_name)
|
shutil.copy(temp_file_name, path_file_name)
|
||||||
except shutil.Error:
|
except shutil.Error:
|
||||||
return self.save_file_as()
|
return self.save_file_as()
|
||||||
self.main_window.addRecentFile(path_file_name)
|
self.main_window.add_recent_file(path_file_name)
|
||||||
self.set_modified(False)
|
self.set_modified(False)
|
||||||
delete_file(temp_file_name)
|
delete_file(temp_file_name)
|
||||||
return success
|
return success
|
||||||
@ -584,11 +579,11 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
base_name = os.path.splitext(file_name)[0]
|
base_name = os.path.splitext(file_name)[0]
|
||||||
service_file_name = '%s.osd' % base_name
|
service_file_name = '%s.osd' % base_name
|
||||||
log.debug(u'ServiceManager.save_file - %s', path_file_name)
|
log.debug(u'ServiceManager.save_file - %s', path_file_name)
|
||||||
Settings().setValue(self.main_window.serviceManagerSettingsSection + u'/last directory', path)
|
Settings().setValue(self.main_window.service_manager_settings_section + u'/last directory', path)
|
||||||
service = []
|
service = []
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
# Number of items + 1 to zip it
|
# Number of items + 1 to zip it
|
||||||
self.main_window.displayProgressBar(len(self.service_items) + 1)
|
self.main_window.display_progress_bar(len(self.service_items) + 1)
|
||||||
for item in self.service_items:
|
for item in self.service_items:
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
service_item = item[u'service_item'].get_service_repr(self._save_lite)
|
service_item = item[u'service_item'].get_service_repr(self._save_lite)
|
||||||
@ -613,14 +608,14 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
finally:
|
finally:
|
||||||
if zip_file:
|
if zip_file:
|
||||||
zip_file.close()
|
zip_file.close()
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
if success:
|
if success:
|
||||||
try:
|
try:
|
||||||
shutil.copy(temp_file_name, path_file_name)
|
shutil.copy(temp_file_name, path_file_name)
|
||||||
except shutil.Error:
|
except shutil.Error:
|
||||||
return self.save_file_as()
|
return self.save_file_as()
|
||||||
self.main_window.addRecentFile(path_file_name)
|
self.main_window.add_recent_file(path_file_name)
|
||||||
self.set_modified(False)
|
self.set_modified(False)
|
||||||
delete_file(temp_file_name)
|
delete_file(temp_file_name)
|
||||||
return success
|
return success
|
||||||
@ -648,7 +643,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
default_file_name = format_time(default_pattern, local_time)
|
default_file_name = format_time(default_pattern, local_time)
|
||||||
else:
|
else:
|
||||||
default_file_name = u''
|
default_file_name = u''
|
||||||
directory = Settings().value(self.main_window.serviceManagerSettingsSection + u'/last directory')
|
directory = Settings().value(self.main_window.service_manager_settings_section + u'/last directory')
|
||||||
path = os.path.join(directory, default_file_name)
|
path = os.path.join(directory, default_file_name)
|
||||||
# SaveAs from osz to oszl is not valid as the files will be deleted
|
# SaveAs from osz to oszl is not valid as the files will be deleted
|
||||||
# on exit which is not sensible or usable in the long term.
|
# on exit which is not sensible or usable in the long term.
|
||||||
@ -717,7 +712,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
file_to.close()
|
file_to.close()
|
||||||
self.new_file()
|
self.new_file()
|
||||||
self.set_file_name(file_name)
|
self.set_file_name(file_name)
|
||||||
self.main_window.displayProgressBar(len(items))
|
self.main_window.display_progress_bar(len(items))
|
||||||
for item in items:
|
for item in items:
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
service_item = ServiceItem()
|
service_item = ServiceItem()
|
||||||
@ -735,7 +730,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
service_item.temporary_edit = self.load_item_temporary
|
service_item.temporary_edit = self.load_item_temporary
|
||||||
self.add_service_item(service_item, repaint=False)
|
self.add_service_item(service_item, repaint=False)
|
||||||
delete_file(p_file)
|
delete_file(p_file)
|
||||||
self.main_window.addRecentFile(file_name)
|
self.main_window.add_recent_file(file_name)
|
||||||
self.set_modified(False)
|
self.set_modified(False)
|
||||||
Settings().setValue('servicemanager/last file', file_name)
|
Settings().setValue('servicemanager/last file', file_name)
|
||||||
else:
|
else:
|
||||||
@ -763,7 +758,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
file_to.close()
|
file_to.close()
|
||||||
if zip_file:
|
if zip_file:
|
||||||
zip_file.close()
|
zip_file.close()
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
self.repaint_service_list(-1, -1)
|
self.repaint_service_list(-1, -1)
|
||||||
|
|
||||||
@ -876,7 +871,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.auto_play_slides_loop.setChecked(False)
|
self.auto_play_slides_loop.setChecked(False)
|
||||||
if service_item.auto_play_slides_once and service_item.timed_slide_interval == 0:
|
if service_item.auto_play_slides_once and service_item.timed_slide_interval == 0:
|
||||||
service_item.timed_slide_interval = Settings().value(
|
service_item.timed_slide_interval = Settings().value(
|
||||||
self.main_window.generalSettingsSection + u'/loop delay')
|
self.main_window.general_settings_section + u'/loop delay')
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
|
|
||||||
def toggle_auto_play_slides_loop(self):
|
def toggle_auto_play_slides_loop(self):
|
||||||
@ -891,7 +886,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.auto_play_slides_once.setChecked(False)
|
self.auto_play_slides_once.setChecked(False)
|
||||||
if service_item.auto_play_slides_loop and service_item.timed_slide_interval == 0:
|
if service_item.auto_play_slides_loop and service_item.timed_slide_interval == 0:
|
||||||
service_item.timed_slide_interval = Settings().value(
|
service_item.timed_slide_interval = Settings().value(
|
||||||
self.main_window.generalSettingsSection + u'/loop delay')
|
self.main_window.general_settings_section + u'/loop delay')
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
|
|
||||||
def on_timed_slide_interval(self):
|
def on_timed_slide_interval(self):
|
||||||
@ -1158,6 +1153,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.service_has_all_original_files = False
|
self.service_has_all_original_files = False
|
||||||
# Repaint the screen
|
# Repaint the screen
|
||||||
self.service_manager_list.clear()
|
self.service_manager_list.clear()
|
||||||
|
self.service_manager_list.clearSelection()
|
||||||
for item_count, item in enumerate(self.service_items):
|
for item_count, item in enumerate(self.service_items):
|
||||||
serviceitem = item[u'service_item']
|
serviceitem = item[u'service_item']
|
||||||
treewidgetitem = QtGui.QTreeWidgetItem(self.service_manager_list)
|
treewidgetitem = QtGui.QTreeWidgetItem(self.service_manager_list)
|
||||||
@ -1232,10 +1228,10 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
log.debug(u'on_theme_combo_box_selected')
|
log.debug(u'on_theme_combo_box_selected')
|
||||||
self.service_theme = self.theme_combo_box.currentText()
|
self.service_theme = self.theme_combo_box.currentText()
|
||||||
self.renderer.set_service_theme(self.service_theme)
|
self.renderer.set_service_theme(self.service_theme)
|
||||||
Settings().setValue(self.main_window.serviceManagerSettingsSection + u'/service theme', self.service_theme)
|
Settings().setValue(self.main_window.service_manager_settings_section + u'/service theme', self.service_theme)
|
||||||
self.regenerate_service_Items(True)
|
self.regenerate_service_Items(True)
|
||||||
|
|
||||||
def theme_change(self, global_theme):
|
def theme_change(self):
|
||||||
"""
|
"""
|
||||||
The theme may have changed in the settings dialog so make
|
The theme may have changed in the settings dialog so make
|
||||||
sure the theme combo box is in the correct state.
|
sure the theme combo box is in the correct state.
|
||||||
@ -1319,7 +1315,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
"""
|
"""
|
||||||
# if not passed set to config value
|
# if not passed set to config value
|
||||||
if expand is None:
|
if expand is None:
|
||||||
expand = self.expand_tabs
|
expand = Settings().value(u'advanced/expand service item')
|
||||||
item.from_service = True
|
item.from_service = True
|
||||||
if replace:
|
if replace:
|
||||||
sitem, child = self.find_service_item()
|
sitem, child = self.find_service_item()
|
||||||
@ -1401,7 +1397,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
|||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
if self.service_items[item][u'service_item'].is_valid:
|
if self.service_items[item][u'service_item'].is_valid:
|
||||||
self.live_controller.addServiceManagerItem(self.service_items[item][u'service_item'], child)
|
self.live_controller.addServiceManagerItem(self.service_items[item][u'service_item'], child)
|
||||||
if Settings().value(self.main_window.generalSettingsSection + u'/auto preview'):
|
if Settings().value(self.main_window.general_settings_section + u'/auto preview'):
|
||||||
item += 1
|
item += 1
|
||||||
if self.service_items and item < len(self.service_items) and \
|
if self.service_items and item < len(self.service_items) and \
|
||||||
self.service_items[item][u'service_item'].is_capable(ItemCapabilities.CanPreview):
|
self.service_items[item][u'service_item'].is_capable(ItemCapabilities.CanPreview):
|
||||||
|
@ -39,32 +39,32 @@ class Ui_SettingsDialog(object):
|
|||||||
"""
|
"""
|
||||||
The UI widgets of the settings dialog.
|
The UI widgets of the settings dialog.
|
||||||
"""
|
"""
|
||||||
def setupUi(self, settingsDialog):
|
def setupUi(self, settings_dialog):
|
||||||
"""
|
"""
|
||||||
Set up the UI
|
Set up the UI
|
||||||
"""
|
"""
|
||||||
settingsDialog.setObjectName(u'settingsDialog')
|
settings_dialog.setObjectName(u'settings_dialog')
|
||||||
settingsDialog.resize(800, 500)
|
settings_dialog.resize(800, 500)
|
||||||
settingsDialog.setWindowIcon(build_icon(u':/system/system_settings.png'))
|
settings_dialog.setWindowIcon(build_icon(u':/system/system_settings.png'))
|
||||||
self.dialogLayout = QtGui.QGridLayout(settingsDialog)
|
self.dialog_layout = QtGui.QGridLayout(settings_dialog)
|
||||||
self.dialogLayout.setObjectName(u'dialog_layout')
|
self.dialog_layout.setObjectName(u'dialog_layout')
|
||||||
self.dialogLayout.setMargin(8)
|
self.dialog_layout.setMargin(8)
|
||||||
self.settingListWidget = QtGui.QListWidget(settingsDialog)
|
self.setting_list_widget = QtGui.QListWidget(settings_dialog)
|
||||||
self.settingListWidget.setUniformItemSizes(True)
|
self.setting_list_widget.setUniformItemSizes(True)
|
||||||
self.settingListWidget.setMinimumSize(QtCore.QSize(150, 0))
|
self.setting_list_widget.setMinimumSize(QtCore.QSize(150, 0))
|
||||||
self.settingListWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
self.setting_list_widget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||||
self.settingListWidget.setObjectName(u'settingListWidget')
|
self.setting_list_widget.setObjectName(u'setting_list_widget')
|
||||||
self.dialogLayout.addWidget(self.settingListWidget, 0, 0, 1, 1)
|
self.dialog_layout.addWidget(self.setting_list_widget, 0, 0, 1, 1)
|
||||||
self.stackedLayout = QtGui.QStackedLayout()
|
self.stacked_layout = QtGui.QStackedLayout()
|
||||||
self.stackedLayout.setObjectName(u'stacked_layout')
|
self.stacked_layout.setObjectName(u'stacked_layout')
|
||||||
self.dialogLayout.addLayout(self.stackedLayout, 0, 1, 1, 1)
|
self.dialog_layout.addLayout(self.stacked_layout, 0, 1, 1, 1)
|
||||||
self.button_box = create_button_box(settingsDialog, u'button_box', [u'cancel', u'ok'])
|
self.button_box = create_button_box(settings_dialog, u'button_box', [u'cancel', u'ok'])
|
||||||
self.dialogLayout.addWidget(self.button_box, 1, 1, 1, 1)
|
self.dialog_layout.addWidget(self.button_box, 1, 1, 1, 1)
|
||||||
self.retranslateUi(settingsDialog)
|
self.retranslateUi(settings_dialog)
|
||||||
self.settingListWidget.currentRowChanged.connect(self.tabChanged)
|
self.setting_list_widget.currentRowChanged.connect(self.tab_changed)
|
||||||
|
|
||||||
def retranslateUi(self, settingsDialog):
|
def retranslateUi(self, settings_dialog):
|
||||||
"""
|
"""
|
||||||
Translate the UI on the fly
|
Translate the UI on the fly
|
||||||
"""
|
"""
|
||||||
settingsDialog.setWindowTitle(translate('OpenLP.SettingsForm', 'Configure OpenLP'))
|
settings_dialog.setWindowTitle(translate('OpenLP.SettingsForm', 'Configure OpenLP'))
|
||||||
|
@ -52,101 +52,105 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
|||||||
Registry().register(u'settings_form', self)
|
Registry().register(u'settings_form', self)
|
||||||
Registry().register_function(u'bootstrap_post_set_up', self.post_set_up)
|
Registry().register_function(u'bootstrap_post_set_up', self.post_set_up)
|
||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, parent)
|
||||||
|
self.processes = []
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
# General tab
|
|
||||||
self.generalTab = GeneralTab(self)
|
|
||||||
# Themes tab
|
|
||||||
self.themesTab = ThemesTab(self)
|
|
||||||
# Advanced tab
|
|
||||||
self.advancedTab = AdvancedTab(self)
|
|
||||||
# Advanced tab
|
|
||||||
self.playerTab = PlayerTab(self)
|
|
||||||
|
|
||||||
def exec_(self):
|
def exec_(self):
|
||||||
"""
|
"""
|
||||||
Execute the form
|
Execute the form
|
||||||
"""
|
"""
|
||||||
# load all the settings
|
# load all the settings
|
||||||
self.settingListWidget.clear()
|
self.setting_list_widget.clear()
|
||||||
while self.stackedLayout.count():
|
while self.stacked_layout.count():
|
||||||
# take at 0 and the rest shuffle up.
|
# take at 0 and the rest shuffle up.
|
||||||
self.stackedLayout.takeAt(0)
|
self.stacked_layout.takeAt(0)
|
||||||
self.insertTab(self.generalTab, 0, PluginStatus.Active)
|
self.insert_tab(self.general_tab, 0, PluginStatus.Active)
|
||||||
self.insertTab(self.themesTab, 1, PluginStatus.Active)
|
self.insert_tab(self.themes_tab, 1, PluginStatus.Active)
|
||||||
self.insertTab(self.advancedTab, 2, PluginStatus.Active)
|
self.insert_tab(self.advanced_tab, 2, PluginStatus.Active)
|
||||||
self.insertTab(self.playerTab, 3, PluginStatus.Active)
|
self.insert_tab(self.player_tab, 3, PluginStatus.Active)
|
||||||
count = 4
|
count = 4
|
||||||
for plugin in self.plugin_manager.plugins:
|
for plugin in self.plugin_manager.plugins:
|
||||||
if plugin.settingsTab:
|
if plugin.settingsTab:
|
||||||
self.insertTab(plugin.settingsTab, count, plugin.status)
|
self.insert_tab(plugin.settingsTab, count, plugin.status)
|
||||||
count += 1
|
count += 1
|
||||||
self.settingListWidget.setCurrentRow(0)
|
self.setting_list_widget.setCurrentRow(0)
|
||||||
return QtGui.QDialog.exec_(self)
|
return QtGui.QDialog.exec_(self)
|
||||||
|
|
||||||
def insertTab(self, tab, location, is_active):
|
def insert_tab(self, tab, location, is_active):
|
||||||
"""
|
"""
|
||||||
Add a tab to the form at a specific location
|
Add a tab to the form at a specific location
|
||||||
"""
|
"""
|
||||||
log.debug(u'Inserting %s tab' % tab.tabTitle)
|
log.debug(u'Inserting %s tab' % tab.tab_title)
|
||||||
# add the tab to get it to display in the correct part of the screen
|
# add the tab to get it to display in the correct part of the screen
|
||||||
pos = self.stackedLayout.addWidget(tab)
|
pos = self.stacked_layout.addWidget(tab)
|
||||||
if is_active:
|
if is_active:
|
||||||
item_name = QtGui.QListWidgetItem(tab.tabTitleVisible)
|
item_name = QtGui.QListWidgetItem(tab.tab_title_visible)
|
||||||
icon = build_icon(tab.iconPath)
|
icon = build_icon(tab.icon_path)
|
||||||
item_name.setIcon(icon)
|
item_name.setIcon(icon)
|
||||||
self.settingListWidget.insertItem(location, item_name)
|
self.setting_list_widget.insertItem(location, item_name)
|
||||||
else:
|
else:
|
||||||
# then remove tab to stop the UI displaying it even if
|
# then remove tab to stop the UI displaying it even if it is not required.
|
||||||
# it is not required.
|
self.stacked_layout.takeAt(pos)
|
||||||
self.stackedLayout.takeAt(pos)
|
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
"""
|
"""
|
||||||
Process the form saving the settings
|
Process the form saving the settings
|
||||||
"""
|
"""
|
||||||
self.resetSuffixes = True
|
for tabIndex in range(self.stacked_layout.count()):
|
||||||
for tabIndex in range(self.stackedLayout.count()):
|
self.stacked_layout.widget(tabIndex).save()
|
||||||
self.stackedLayout.widget(tabIndex).save()
|
# if the display of image background are changing we need to regenerate the image cache
|
||||||
# Must go after all settings are save
|
if u'images_config_updated' in self.processes or u'config_screen_changed' in self.processes:
|
||||||
Registry().execute(u'config_updated')
|
self.register_post_process(u'images_regenerate')
|
||||||
|
# Now lets process all the post save handlers
|
||||||
|
while self.processes:
|
||||||
|
Registry().execute(self.processes.pop(0))
|
||||||
return QtGui.QDialog.accept(self)
|
return QtGui.QDialog.accept(self)
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
"""
|
"""
|
||||||
Process the form saving the settings
|
Process the form saving the settings
|
||||||
"""
|
"""
|
||||||
for tabIndex in range(self.stackedLayout.count()):
|
self.processes = []
|
||||||
self.stackedLayout.widget(tabIndex).cancel()
|
for tabIndex in range(self.stacked_layout.count()):
|
||||||
|
self.stacked_layout.widget(tabIndex).cancel()
|
||||||
return QtGui.QDialog.reject(self)
|
return QtGui.QDialog.reject(self)
|
||||||
|
|
||||||
def post_set_up(self):
|
def post_set_up(self):
|
||||||
"""
|
"""
|
||||||
Run any post-setup code for the tabs on the form
|
Run any post-setup code for the tabs on the form
|
||||||
"""
|
"""
|
||||||
self.generalTab.post_set_up()
|
# General tab
|
||||||
self.themesTab.post_set_up()
|
self.general_tab = GeneralTab(self)
|
||||||
self.advancedTab.post_set_up()
|
# Themes tab
|
||||||
self.playerTab.post_set_up()
|
self.themes_tab = ThemesTab(self)
|
||||||
|
# Advanced tab
|
||||||
|
self.advanced_tab = AdvancedTab(self)
|
||||||
|
# Advanced tab
|
||||||
|
self.player_tab = PlayerTab(self)
|
||||||
|
self.general_tab.post_set_up()
|
||||||
|
self.themes_tab.post_set_up()
|
||||||
|
self.advanced_tab.post_set_up()
|
||||||
|
self.player_tab.post_set_up()
|
||||||
for plugin in self.plugin_manager.plugins:
|
for plugin in self.plugin_manager.plugins:
|
||||||
if plugin.settingsTab:
|
if plugin.settingsTab:
|
||||||
plugin.settingsTab.post_set_up()
|
plugin.settingsTab.post_set_up()
|
||||||
|
|
||||||
def tabChanged(self, tabIndex):
|
def tab_changed(self, tabIndex):
|
||||||
"""
|
"""
|
||||||
A different settings tab is selected
|
A different settings tab is selected
|
||||||
"""
|
"""
|
||||||
self.stackedLayout.setCurrentIndex(tabIndex)
|
self.stacked_layout.setCurrentIndex(tabIndex)
|
||||||
self.stackedLayout.currentWidget().tabVisible()
|
self.stacked_layout.currentWidget().tab_visible()
|
||||||
|
|
||||||
def resetSupportedSuffixes(self):
|
def register_post_process(self, function):
|
||||||
"""
|
"""
|
||||||
Control the resetting of the serviceManager suffix list as can be
|
Register for updates to be done on save removing duplicate functions
|
||||||
called by a number of settings tab and only needs to be called once
|
|
||||||
per save.
|
``function``
|
||||||
|
The function to be called
|
||||||
"""
|
"""
|
||||||
if self.resetSuffixes:
|
if not function in self.processes:
|
||||||
self.service_manager.reset_supported_suffixes()
|
self.processes.append(function)
|
||||||
self.resetSuffixes = False
|
|
||||||
|
|
||||||
def _get_main_window(self):
|
def _get_main_window(self):
|
||||||
"""
|
"""
|
||||||
|
@ -238,7 +238,7 @@ class SlideController(DisplayController):
|
|||||||
self.play_slides_once = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
self.play_slides_once = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
||||||
icon=u':/media/media_time.png', checked=False, can_shortcuts=True,
|
icon=u':/media/media_time.png', checked=False, can_shortcuts=True,
|
||||||
category=self.category, triggers=self.onPlaySlidesOnce)
|
category=self.category, triggers=self.onPlaySlidesOnce)
|
||||||
if Settings().value(self.main_window.advancedSettingsSection + u'/slide limits') == SlideLimits.Wrap:
|
if Settings().value(self.main_window.advanced_settings_section + u'/slide limits') == SlideLimits.Wrap:
|
||||||
self.play_slides_menu.setDefaultAction(self.play_slides_loop)
|
self.play_slides_menu.setDefaultAction(self.play_slides_loop)
|
||||||
else:
|
else:
|
||||||
self.play_slides_menu.setDefaultAction(self.play_slides_once)
|
self.play_slides_menu.setDefaultAction(self.play_slides_once)
|
||||||
@ -605,17 +605,17 @@ class SlideController(DisplayController):
|
|||||||
self.__updatePreviewSelection(slide_no)
|
self.__updatePreviewSelection(slide_no)
|
||||||
self.slideSelected()
|
self.slideSelected()
|
||||||
|
|
||||||
def receive_spin_delay(self, value):
|
def receive_spin_delay(self):
|
||||||
"""
|
"""
|
||||||
Adjusts the value of the ``delay_spin_box`` to the given one.
|
Adjusts the value of the ``delay_spin_box`` to the given one.
|
||||||
"""
|
"""
|
||||||
self.delay_spin_box.setValue(int(value))
|
self.delay_spin_box.setValue(Settings().value(u'general/loop delay'))
|
||||||
|
|
||||||
def update_slide_limits(self):
|
def update_slide_limits(self):
|
||||||
"""
|
"""
|
||||||
Updates the Slide Limits variable from the settings.
|
Updates the Slide Limits variable from the settings.
|
||||||
"""
|
"""
|
||||||
self.slide_limits = Settings().value(self.main_window.advancedSettingsSection + u'/slide limits')
|
self.slide_limits = Settings().value(self.main_window.advanced_settings_section + u'/slide limits')
|
||||||
|
|
||||||
def enableToolBar(self, item):
|
def enableToolBar(self, item):
|
||||||
"""
|
"""
|
||||||
@ -644,7 +644,7 @@ class SlideController(DisplayController):
|
|||||||
self.play_slides_loop.setChecked(False)
|
self.play_slides_loop.setChecked(False)
|
||||||
self.play_slides_loop.setIcon(build_icon(u':/media/media_time.png'))
|
self.play_slides_loop.setIcon(build_icon(u':/media/media_time.png'))
|
||||||
if item.is_text():
|
if item.is_text():
|
||||||
if Settings().value(self.main_window.songsSettingsSection + u'/display songbar') and self.slideList:
|
if Settings().value(self.main_window.songs_settings_section + u'/display songbar') and self.slideList:
|
||||||
self.toolbar.set_widget_visible([u'song_menu'], True)
|
self.toolbar.set_widget_visible([u'song_menu'], True)
|
||||||
if item.is_capable(ItemCapabilities.CanLoop) and len(item.get_frames()) > 1:
|
if item.is_capable(ItemCapabilities.CanLoop) and len(item.get_frames()) > 1:
|
||||||
self.toolbar.set_widget_visible(self.loop_list)
|
self.toolbar.set_widget_visible(self.loop_list)
|
||||||
@ -765,8 +765,8 @@ class SlideController(DisplayController):
|
|||||||
action.setData(counter)
|
action.setData(counter)
|
||||||
action.triggered.connect(self.onTrackTriggered)
|
action.triggered.connect(self.onTrackTriggered)
|
||||||
self.display.audio_player.repeat = Settings().value(
|
self.display.audio_player.repeat = Settings().value(
|
||||||
self.main_window.generalSettingsSection + u'/audio repeat list')
|
self.main_window.general_settings_section + u'/audio repeat list')
|
||||||
if Settings().value(self.main_window.generalSettingsSection + u'/audio start paused'):
|
if Settings().value(self.main_window.general_settings_section + u'/audio start paused'):
|
||||||
self.audio_pause_item.setChecked(True)
|
self.audio_pause_item.setChecked(True)
|
||||||
self.display.audio_player.pause()
|
self.display.audio_player.pause()
|
||||||
else:
|
else:
|
||||||
@ -874,7 +874,7 @@ class SlideController(DisplayController):
|
|||||||
Allow the main display to blank the main display at startup time
|
Allow the main display to blank the main display at startup time
|
||||||
"""
|
"""
|
||||||
log.debug(u'mainDisplaySetBackground live = %s' % self.is_live)
|
log.debug(u'mainDisplaySetBackground live = %s' % self.is_live)
|
||||||
display_type = Settings().value(self.main_window.generalSettingsSection + u'/screen blank')
|
display_type = Settings().value(self.main_window.general_settings_section + u'/screen blank')
|
||||||
if self.screens.which_screen(self.window()) != self.screens.which_screen(self.display):
|
if self.screens.which_screen(self.window()) != self.screens.which_screen(self.display):
|
||||||
# Order done to handle initial conversion
|
# Order done to handle initial conversion
|
||||||
if display_type == u'themed':
|
if display_type == u'themed':
|
||||||
|
@ -60,9 +60,10 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
QtGui.QWidget.__init__(self, parent)
|
QtGui.QWidget.__init__(self, parent)
|
||||||
Registry().register(u'theme_manager', self)
|
Registry().register(u'theme_manager', self)
|
||||||
Registry().register_function(u'bootstrap_initialise', self.load_first_time_themes)
|
Registry().register_function(u'bootstrap_initialise', self.load_first_time_themes)
|
||||||
|
Registry().register_function(u'bootstrap_post_set_up', self._push_themes)
|
||||||
self.settingsSection = u'themes'
|
self.settingsSection = u'themes'
|
||||||
self.themeForm = ThemeForm(self)
|
self.theme_form = ThemeForm(self)
|
||||||
self.fileRenameForm = FileRenameForm()
|
self.file_rename_form = FileRenameForm()
|
||||||
# start with the layout
|
# start with the layout
|
||||||
self.layout = QtGui.QVBoxLayout(self)
|
self.layout = QtGui.QVBoxLayout(self)
|
||||||
self.layout.setSpacing(0)
|
self.layout.setSpacing(0)
|
||||||
@ -73,13 +74,13 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.toolbar.add_toolbar_action(u'newTheme',
|
self.toolbar.add_toolbar_action(u'newTheme',
|
||||||
text=UiStrings().NewTheme, icon=u':/themes/theme_new.png',
|
text=UiStrings().NewTheme, icon=u':/themes/theme_new.png',
|
||||||
tooltip=translate('OpenLP.ThemeManager', 'Create a new theme.'),
|
tooltip=translate('OpenLP.ThemeManager', 'Create a new theme.'),
|
||||||
triggers=self.onAddTheme)
|
triggers=self.on_add_theme)
|
||||||
self.toolbar.add_toolbar_action(u'editTheme',
|
self.toolbar.add_toolbar_action(u'editTheme',
|
||||||
text=translate('OpenLP.ThemeManager', 'Edit Theme'),
|
text=translate('OpenLP.ThemeManager', 'Edit Theme'),
|
||||||
icon=u':/themes/theme_edit.png',
|
icon=u':/themes/theme_edit.png',
|
||||||
tooltip=translate('OpenLP.ThemeManager', 'Edit a theme.'),
|
tooltip=translate('OpenLP.ThemeManager', 'Edit a theme.'),
|
||||||
triggers=self.on_edit_theme)
|
triggers=self.on_edit_theme)
|
||||||
self.deleteToolbarAction = self.toolbar.add_toolbar_action(u'delete_theme',
|
self.delete_toolbar_action = self.toolbar.add_toolbar_action(u'delete_theme',
|
||||||
text=translate('OpenLP.ThemeManager', 'Delete Theme'),
|
text=translate('OpenLP.ThemeManager', 'Delete Theme'),
|
||||||
icon=u':/general/general_delete.png',
|
icon=u':/general/general_delete.png',
|
||||||
tooltip=translate('OpenLP.ThemeManager', 'Delete a theme.'),
|
tooltip=translate('OpenLP.ThemeManager', 'Delete a theme.'),
|
||||||
@ -132,24 +133,16 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.theme_list_widget.doubleClicked.connect(self.change_global_from_screen)
|
self.theme_list_widget.doubleClicked.connect(self.change_global_from_screen)
|
||||||
self.theme_list_widget.currentItemChanged.connect(self.check_list_state)
|
self.theme_list_widget.currentItemChanged.connect(self.check_list_state)
|
||||||
Registry().register_function(u'theme_update_global', self.change_global_from_tab)
|
Registry().register_function(u'theme_update_global', self.change_global_from_tab)
|
||||||
Registry().register_function(u'config_updated', self.config_updated)
|
|
||||||
# Variables
|
# Variables
|
||||||
self.theme_list = []
|
self.theme_list = []
|
||||||
self.path = AppLocation.get_section_data_path(self.settingsSection)
|
self.path = AppLocation.get_section_data_path(self.settingsSection)
|
||||||
check_directory_exists(self.path)
|
check_directory_exists(self.path)
|
||||||
self.thumbPath = os.path.join(self.path, u'thumbnails')
|
self.thumb_path = os.path.join(self.path, u'thumbnails')
|
||||||
check_directory_exists(self.thumbPath)
|
check_directory_exists(self.thumb_path)
|
||||||
self.themeForm.path = self.path
|
self.theme_form.path = self.path
|
||||||
self.oldBackgroundImage = None
|
self.old_background_image = None
|
||||||
self.badV1NameChars = re.compile(r'[%+\[\]]')
|
self.bad_v1_name_chars = re.compile(r'[%+\[\]]')
|
||||||
# Last little bits of setting up
|
# Last little bits of setting up
|
||||||
self.config_updated()
|
|
||||||
|
|
||||||
def config_updated(self):
|
|
||||||
"""
|
|
||||||
Triggered when Config dialog is updated.
|
|
||||||
"""
|
|
||||||
log.debug(u'config_updated')
|
|
||||||
self.global_theme = Settings().value(self.settingsSection + u'/global theme')
|
self.global_theme = Settings().value(self.settingsSection + u'/global theme')
|
||||||
|
|
||||||
def check_list_state(self, item):
|
def check_list_state(self, item):
|
||||||
@ -162,9 +155,9 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
theme_name = item.text()
|
theme_name = item.text()
|
||||||
# If default theme restrict actions
|
# If default theme restrict actions
|
||||||
if real_theme_name == theme_name:
|
if real_theme_name == theme_name:
|
||||||
self.deleteToolbarAction.setVisible(True)
|
self.delete_toolbar_action.setVisible(True)
|
||||||
else:
|
else:
|
||||||
self.deleteToolbarAction.setVisible(False)
|
self.delete_toolbar_action.setVisible(False)
|
||||||
|
|
||||||
def context_menu(self, point):
|
def context_menu(self, point):
|
||||||
"""
|
"""
|
||||||
@ -182,12 +175,12 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.global_action.setVisible(visible)
|
self.global_action.setVisible(visible)
|
||||||
self.menu.exec_(self.theme_list_widget.mapToGlobal(point))
|
self.menu.exec_(self.theme_list_widget.mapToGlobal(point))
|
||||||
|
|
||||||
def change_global_from_tab(self, theme_name):
|
def change_global_from_tab(self):
|
||||||
"""
|
"""
|
||||||
Change the global theme when it is changed through the Themes settings
|
Change the global theme when it is changed through the Themes settings tab
|
||||||
tab
|
|
||||||
"""
|
"""
|
||||||
log.debug(u'change_global_from_tab %s', theme_name)
|
self.global_theme = Settings().value(self.settingsSection + u'/global theme')
|
||||||
|
log.debug(u'change_global_from_tab %s', self.global_theme)
|
||||||
for count in range(0, self.theme_list_widget.count()):
|
for count in range(0, self.theme_list_widget.count()):
|
||||||
# reset the old name
|
# reset the old name
|
||||||
item = self.theme_list_widget.item(count)
|
item = self.theme_list_widget.item(count)
|
||||||
@ -196,10 +189,10 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
if old_name != new_name:
|
if old_name != new_name:
|
||||||
self.theme_list_widget.item(count).setText(new_name)
|
self.theme_list_widget.item(count).setText(new_name)
|
||||||
# Set the new name
|
# Set the new name
|
||||||
if theme_name == new_name:
|
if self.global_theme == new_name:
|
||||||
name = translate('OpenLP.ThemeManager', '%s (default)') % new_name
|
name = translate('OpenLP.ThemeManager', '%s (default)') % new_name
|
||||||
self.theme_list_widget.item(count).setText(name)
|
self.theme_list_widget.item(count).setText(name)
|
||||||
self.deleteToolbarAction.setVisible(item not in self.theme_list_widget.selectedItems())
|
self.delete_toolbar_action.setVisible(item not in self.theme_list_widget.selectedItems())
|
||||||
|
|
||||||
def change_global_from_screen(self, index=-1):
|
def change_global_from_screen(self, index=-1):
|
||||||
"""
|
"""
|
||||||
@ -220,18 +213,18 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
name = translate('OpenLP.ThemeManager', '%s (default)') % self.global_theme
|
name = translate('OpenLP.ThemeManager', '%s (default)') % self.global_theme
|
||||||
self.theme_list_widget.item(count).setText(name)
|
self.theme_list_widget.item(count).setText(name)
|
||||||
Settings().setValue(self.settingsSection + u'/global theme', self.global_theme)
|
Settings().setValue(self.settingsSection + u'/global theme', self.global_theme)
|
||||||
Registry().execute(u'theme_update_global', self.global_theme)
|
Registry().execute(u'theme_update_global')
|
||||||
self._push_themes()
|
self._push_themes()
|
||||||
|
|
||||||
def onAddTheme(self):
|
def on_add_theme(self):
|
||||||
"""
|
"""
|
||||||
Loads a new theme with the default settings and then launches the theme
|
Loads a new theme with the default settings and then launches the theme
|
||||||
editing form for the user to make their customisations.
|
editing form for the user to make their customisations.
|
||||||
"""
|
"""
|
||||||
theme = ThemeXML()
|
theme = ThemeXML()
|
||||||
theme.set_default_header_footer()
|
theme.set_default_header_footer()
|
||||||
self.themeForm.theme = theme
|
self.theme_form.theme = theme
|
||||||
self.themeForm.exec_()
|
self.theme_form.exec_()
|
||||||
self.load_themes()
|
self.load_themes()
|
||||||
|
|
||||||
def on_rename_theme(self):
|
def on_rename_theme(self):
|
||||||
@ -243,14 +236,14 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
translate('OpenLP.ThemeManager', 'Rename %s theme?'), False, False):
|
translate('OpenLP.ThemeManager', 'Rename %s theme?'), False, False):
|
||||||
item = self.theme_list_widget.currentItem()
|
item = self.theme_list_widget.currentItem()
|
||||||
old_theme_name = item.data(QtCore.Qt.UserRole)
|
old_theme_name = item.data(QtCore.Qt.UserRole)
|
||||||
self.fileRenameForm.file_name_edit.setText(old_theme_name)
|
self.file_rename_form.file_name_edit.setText(old_theme_name)
|
||||||
if self.fileRenameForm.exec_():
|
if self.file_rename_form.exec_():
|
||||||
new_theme_name = self.fileRenameForm.file_name_edit.text()
|
new_theme_name = self.file_rename_form.file_name_edit.text()
|
||||||
if old_theme_name == new_theme_name:
|
if old_theme_name == new_theme_name:
|
||||||
return
|
return
|
||||||
if self.check_if_theme_exists(new_theme_name):
|
if self.check_if_theme_exists(new_theme_name):
|
||||||
old_theme_data = self.get_theme_data(old_theme_name)
|
old_theme_data = self.get_theme_data(old_theme_name)
|
||||||
self.cloneThemeData(old_theme_data, new_theme_name)
|
self.clone_theme_data(old_theme_data, new_theme_name)
|
||||||
self.delete_theme(old_theme_name)
|
self.delete_theme(old_theme_name)
|
||||||
for plugin in self.plugin_manager.plugins:
|
for plugin in self.plugin_manager.plugins:
|
||||||
if plugin.uses_theme(old_theme_name):
|
if plugin.uses_theme(old_theme_name):
|
||||||
@ -264,19 +257,19 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
item = self.theme_list_widget.currentItem()
|
item = self.theme_list_widget.currentItem()
|
||||||
old_theme_name = item.data(QtCore.Qt.UserRole)
|
old_theme_name = item.data(QtCore.Qt.UserRole)
|
||||||
self.fileRenameForm.file_name_edit.setText(translate('OpenLP.ThemeManager',
|
self.file_rename_form.file_name_edit.setText(translate('OpenLP.ThemeManager',
|
||||||
'Copy of %s', 'Copy of <theme name>') % old_theme_name)
|
'Copy of %s', 'Copy of <theme name>') % old_theme_name)
|
||||||
if self.fileRenameForm.exec_(True):
|
if self.file_rename_form.exec_(True):
|
||||||
new_theme_name = self.fileRenameForm.file_name_edit.text()
|
new_theme_name = self.file_rename_form.file_name_edit.text()
|
||||||
if self.check_if_theme_exists(new_theme_name):
|
if self.check_if_theme_exists(new_theme_name):
|
||||||
theme_data = self.get_theme_data(old_theme_name)
|
theme_data = self.get_theme_data(old_theme_name)
|
||||||
self.cloneThemeData(theme_data, new_theme_name)
|
self.clone_theme_data(theme_data, new_theme_name)
|
||||||
|
|
||||||
def cloneThemeData(self, theme_data, new_theme_name):
|
def clone_theme_data(self, theme_data, new_theme_name):
|
||||||
"""
|
"""
|
||||||
Takes a theme and makes a new copy of it as well as saving it.
|
Takes a theme and makes a new copy of it as well as saving it.
|
||||||
"""
|
"""
|
||||||
log.debug(u'cloneThemeData')
|
log.debug(u'clone_theme_data')
|
||||||
save_to = None
|
save_to = None
|
||||||
save_from = None
|
save_from = None
|
||||||
if theme_data.background_type == u'image':
|
if theme_data.background_type == u'image':
|
||||||
@ -297,10 +290,10 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
item = self.theme_list_widget.currentItem()
|
item = self.theme_list_widget.currentItem()
|
||||||
theme = self.get_theme_data(item.data(QtCore.Qt.UserRole))
|
theme = self.get_theme_data(item.data(QtCore.Qt.UserRole))
|
||||||
if theme.background_type == u'image':
|
if theme.background_type == u'image':
|
||||||
self.oldBackgroundImage = theme.background_filename
|
self.old_background_image = theme.background_filename
|
||||||
self.themeForm.theme = theme
|
self.theme_form.theme = theme
|
||||||
self.themeForm.exec_(True)
|
self.theme_form.exec_(True)
|
||||||
self.oldBackgroundImage = None
|
self.old_background_image = None
|
||||||
self.renderer.update_theme(theme.theme_name)
|
self.renderer.update_theme(theme.theme_name)
|
||||||
self.load_themes()
|
self.load_themes()
|
||||||
|
|
||||||
@ -331,7 +324,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.theme_list.remove(theme)
|
self.theme_list.remove(theme)
|
||||||
thumb = u'%s.png' % theme
|
thumb = u'%s.png' % theme
|
||||||
delete_file(os.path.join(self.path, thumb))
|
delete_file(os.path.join(self.path, thumb))
|
||||||
delete_file(os.path.join(self.thumbPath, thumb))
|
delete_file(os.path.join(self.thumb_path, thumb))
|
||||||
try:
|
try:
|
||||||
encoding = get_filesystem_encoding()
|
encoding = get_filesystem_encoding()
|
||||||
shutil.rmtree(os.path.join(self.path, theme).encode(encoding))
|
shutil.rmtree(os.path.join(self.path, theme).encode(encoding))
|
||||||
@ -377,9 +370,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
|
|
||||||
def on_import_theme(self):
|
def on_import_theme(self):
|
||||||
"""
|
"""
|
||||||
Opens a file dialog to select the theme file(s) to import before
|
Opens a file dialog to select the theme file(s) to import before attempting to extract OpenLP themes from
|
||||||
attempting to extract OpenLP themes from those files. This process
|
those files. This process will load both OpenLP version 1 and version 2 themes.
|
||||||
will load both OpenLP version 1 and version 2 themes.
|
|
||||||
"""
|
"""
|
||||||
files = QtGui.QFileDialog.getOpenFileNames(self,
|
files = QtGui.QFileDialog.getOpenFileNames(self,
|
||||||
translate('OpenLP.ThemeManager', 'Select Theme Import File'),
|
translate('OpenLP.ThemeManager', 'Select Theme Import File'),
|
||||||
@ -412,7 +404,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
theme.theme_name = UiStrings().Default
|
theme.theme_name = UiStrings().Default
|
||||||
self._write_theme(theme, None, None)
|
self._write_theme(theme, None, None)
|
||||||
Settings().setValue(self.settingsSection + u'/global theme', theme.theme_name)
|
Settings().setValue(self.settingsSection + u'/global theme', theme.theme_name)
|
||||||
self.config_updated()
|
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
self.load_themes()
|
self.load_themes()
|
||||||
|
|
||||||
@ -438,7 +429,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
name = translate('OpenLP.ThemeManager', '%s (default)') % text_name
|
name = translate('OpenLP.ThemeManager', '%s (default)') % text_name
|
||||||
else:
|
else:
|
||||||
name = text_name
|
name = text_name
|
||||||
thumb = os.path.join(self.thumbPath, u'%s.png' % text_name)
|
thumb = os.path.join(self.thumb_path, u'%s.png' % text_name)
|
||||||
item_name = QtGui.QListWidgetItem(name)
|
item_name = QtGui.QListWidgetItem(name)
|
||||||
if validate_thumb(theme, thumb):
|
if validate_thumb(theme, thumb):
|
||||||
icon = build_icon(thumb)
|
icon = build_icon(thumb)
|
||||||
@ -511,8 +502,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
xml_tree = ElementTree(element=XML(theme_zip.read(xml_file[0]))).getroot()
|
xml_tree = ElementTree(element=XML(theme_zip.read(xml_file[0]))).getroot()
|
||||||
v1_background = xml_tree.find(u'BackgroundType')
|
v1_background = xml_tree.find(u'BackgroundType')
|
||||||
if v1_background is not None:
|
if v1_background is not None:
|
||||||
theme_name, file_xml, out_file, abort_import = self.unzip_version_122(
|
theme_name, file_xml, out_file, abort_import = \
|
||||||
directory, theme_zip, xml_file[0], xml_tree, v1_background, out_file)
|
self.unzip_version_122(directory, theme_zip, xml_file[0], xml_tree, v1_background, out_file)
|
||||||
else:
|
else:
|
||||||
theme_name = xml_tree.find(u'name').text.strip()
|
theme_name = xml_tree.find(u'name').text.strip()
|
||||||
theme_folder = os.path.join(directory, theme_name)
|
theme_folder = os.path.join(directory, theme_name)
|
||||||
@ -578,7 +569,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
this method, please keep in mind, that some parameters are redundant.
|
this method, please keep in mind, that some parameters are redundant.
|
||||||
"""
|
"""
|
||||||
theme_name = xml_tree.find(u'Name').text.strip()
|
theme_name = xml_tree.find(u'Name').text.strip()
|
||||||
theme_name = self.badV1NameChars.sub(u'', theme_name)
|
theme_name = self.bad_v1_name_chars.sub(u'', theme_name)
|
||||||
theme_folder = os.path.join(dir_name, theme_name)
|
theme_folder = os.path.join(dir_name, theme_name)
|
||||||
theme_exists = os.path.exists(theme_folder)
|
theme_exists = os.path.exists(theme_folder)
|
||||||
if theme_exists and not self.over_write_message_box(theme_name):
|
if theme_exists and not self.over_write_message_box(theme_name):
|
||||||
@ -641,8 +632,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
theme_dir = os.path.join(self.path, name)
|
theme_dir = os.path.join(self.path, name)
|
||||||
check_directory_exists(theme_dir)
|
check_directory_exists(theme_dir)
|
||||||
theme_file = os.path.join(theme_dir, name + u'.xml')
|
theme_file = os.path.join(theme_dir, name + u'.xml')
|
||||||
if self.oldBackgroundImage and image_to != self.oldBackgroundImage:
|
if self.old_background_image and image_to != self.old_background_image:
|
||||||
delete_file(self.oldBackgroundImage)
|
delete_file(self.old_background_image)
|
||||||
out_file = None
|
out_file = None
|
||||||
try:
|
try:
|
||||||
out_file = open(theme_file, u'w')
|
out_file = open(theme_file, u'w')
|
||||||
@ -670,7 +661,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
if os.path.exists(sample_path_name):
|
if os.path.exists(sample_path_name):
|
||||||
os.unlink(sample_path_name)
|
os.unlink(sample_path_name)
|
||||||
frame.save(sample_path_name, u'png')
|
frame.save(sample_path_name, u'png')
|
||||||
thumb = os.path.join(self.thumbPath, u'%s.png' % name)
|
thumb = os.path.join(self.thumb_path, u'%s.png' % name)
|
||||||
create_thumb(sample_path_name, thumb, False)
|
create_thumb(sample_path_name, thumb, False)
|
||||||
log.debug(u'Theme image written to %s', sample_path_name)
|
log.debug(u'Theme image written to %s', sample_path_name)
|
||||||
|
|
||||||
@ -679,11 +670,11 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
Called to update the themes' preview images.
|
Called to update the themes' preview images.
|
||||||
"""
|
"""
|
||||||
log.debug('update_preview_images')
|
log.debug('update_preview_images')
|
||||||
self.main_window.displayProgressBar(len(self.theme_list))
|
self.main_window.display_progress_bar(len(self.theme_list))
|
||||||
for theme in self.theme_list:
|
for theme in self.theme_list:
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
self.generate_and_save_image(self.path, theme, self.get_theme_data(theme))
|
self.generate_and_save_image(self.path, theme, self.get_theme_data(theme))
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.load_themes()
|
self.load_themes()
|
||||||
|
|
||||||
def generate_image(self, theme_data, forcePage=False):
|
def generate_image(self, theme_data, forcePage=False):
|
||||||
@ -766,7 +757,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
theme = Theme(xml_data)
|
theme = Theme(xml_data)
|
||||||
new_theme = ThemeXML()
|
new_theme = ThemeXML()
|
||||||
new_theme.theme_name = self.badV1NameChars.sub(u'', theme.Name)
|
new_theme.theme_name = self.bad_v1_name_chars.sub(u'', theme.Name)
|
||||||
if theme.BackgroundType == BackgroundType.Solid:
|
if theme.BackgroundType == BackgroundType.Solid:
|
||||||
new_theme.background_type = BackgroundType.to_string(BackgroundType.Solid)
|
new_theme.background_type = BackgroundType.to_string(BackgroundType.Solid)
|
||||||
new_theme.background_color = unicode(theme.BackgroundParameter1.name())
|
new_theme.background_color = unicode(theme.BackgroundParameter1.name())
|
||||||
|
@ -44,9 +44,9 @@ class ThemesTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
Constructor
|
Constructor
|
||||||
"""
|
"""
|
||||||
generalTranslated = translate('OpenLP.ThemesTab', 'Themes')
|
self.icon_path = u':/themes/theme_new.png'
|
||||||
SettingsTab.__init__(self, parent, u'Themes', generalTranslated)
|
theme_translated = translate('OpenLP.ThemesTab', 'Themes')
|
||||||
self.iconPath = u':/themes/theme_new.png'
|
SettingsTab.__init__(self, parent, u'Themes', theme_translated)
|
||||||
|
|
||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
"""
|
"""
|
||||||
@ -54,74 +54,74 @@ class ThemesTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'ThemesTab')
|
self.setObjectName(u'ThemesTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.GlobalGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.global_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.GlobalGroupBox.setObjectName(u'GlobalGroupBox')
|
self.global_group_box.setObjectName(u'global_group_box')
|
||||||
self.GlobalGroupBoxLayout = QtGui.QVBoxLayout(self.GlobalGroupBox)
|
self.global_group_box_layout = QtGui.QVBoxLayout(self.global_group_box)
|
||||||
self.GlobalGroupBoxLayout.setObjectName(u'GlobalGroupBoxLayout')
|
self.global_group_box_layout.setObjectName(u'global_group_box_layout')
|
||||||
self.DefaultComboBox = QtGui.QComboBox(self.GlobalGroupBox)
|
self.default_combo_box = QtGui.QComboBox(self.global_group_box)
|
||||||
self.DefaultComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
self.default_combo_box.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
||||||
self.DefaultComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
self.default_combo_box.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
||||||
self.DefaultComboBox.setObjectName(u'DefaultComboBox')
|
self.default_combo_box.setObjectName(u'default_combo_box')
|
||||||
self.GlobalGroupBoxLayout.addWidget(self.DefaultComboBox)
|
self.global_group_box_layout.addWidget(self.default_combo_box)
|
||||||
self.DefaultListView = QtGui.QLabel(self.GlobalGroupBox)
|
self.default_list_view = QtGui.QLabel(self.global_group_box)
|
||||||
self.DefaultListView.setObjectName(u'DefaultListView')
|
self.default_list_view.setObjectName(u'default_list_view')
|
||||||
self.GlobalGroupBoxLayout.addWidget(self.DefaultListView)
|
self.global_group_box_layout.addWidget(self.default_list_view)
|
||||||
self.leftLayout.addWidget(self.GlobalGroupBox)
|
self.left_layout.addWidget(self.global_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.LevelGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.level_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.LevelGroupBox.setObjectName(u'LevelGroupBox')
|
self.level_group_box.setObjectName(u'level_group_box')
|
||||||
self.LevelLayout = QtGui.QFormLayout(self.LevelGroupBox)
|
self.level_layout = QtGui.QFormLayout(self.level_group_box)
|
||||||
self.LevelLayout.setLabelAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
|
self.level_layout.setLabelAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
|
||||||
self.LevelLayout.setFormAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
|
self.level_layout.setFormAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
|
||||||
self.LevelLayout.setObjectName(u'LevelLayout')
|
self.level_layout.setObjectName(u'level_layout')
|
||||||
self.SongLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox)
|
self.song_level_radio_button = QtGui.QRadioButton(self.level_group_box)
|
||||||
self.SongLevelRadioButton.setObjectName(u'SongLevelRadioButton')
|
self.song_level_radio_button.setObjectName(u'song_level_radio_button')
|
||||||
self.SongLevelLabel = QtGui.QLabel(self.LevelGroupBox)
|
self.song_level_label = QtGui.QLabel(self.level_group_box)
|
||||||
self.SongLevelLabel.setObjectName(u'SongLevelLabel')
|
self.song_level_label.setObjectName(u'song_level_label')
|
||||||
self.LevelLayout.addRow(self.SongLevelRadioButton, self.SongLevelLabel)
|
self.level_layout.addRow(self.song_level_radio_button, self.song_level_label)
|
||||||
self.ServiceLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox)
|
self.service_level_radio_button = QtGui.QRadioButton(self.level_group_box)
|
||||||
self.ServiceLevelRadioButton.setObjectName(u'ServiceLevelRadioButton')
|
self.service_level_radio_button.setObjectName(u'service_level_radio_button')
|
||||||
self.ServiceLevelLabel = QtGui.QLabel(self.LevelGroupBox)
|
self.service_level_label = QtGui.QLabel(self.level_group_box)
|
||||||
self.ServiceLevelLabel.setObjectName(u'ServiceLevelLabel')
|
self.service_level_label.setObjectName(u'service_level_label')
|
||||||
self.LevelLayout.addRow(self.ServiceLevelRadioButton, self.ServiceLevelLabel)
|
self.level_layout.addRow(self.service_level_radio_button, self.service_level_label)
|
||||||
self.GlobalLevelRadioButton = QtGui.QRadioButton(self.LevelGroupBox)
|
self.global_level_radio_button = QtGui.QRadioButton(self.level_group_box)
|
||||||
self.GlobalLevelRadioButton.setObjectName(u'GlobalLevelRadioButton')
|
self.global_level_radio_button.setObjectName(u'global_level_radio_button')
|
||||||
self.GlobalLevelLabel = QtGui.QLabel(self.LevelGroupBox)
|
self.global_level_label = QtGui.QLabel(self.level_group_box)
|
||||||
self.GlobalLevelLabel.setObjectName(u'GlobalLevelLabel')
|
self.global_level_label.setObjectName(u'global_level_label')
|
||||||
self.LevelLayout.addRow(self.GlobalLevelRadioButton, self.GlobalLevelLabel)
|
self.level_layout.addRow(self.global_level_radio_button, self.global_level_label)
|
||||||
label_top_margin = (self.SongLevelRadioButton.sizeHint().height() -
|
label_top_margin = (self.song_level_radio_button.sizeHint().height() -
|
||||||
self.SongLevelLabel.sizeHint().height()) / 2
|
self.song_level_label.sizeHint().height()) / 2
|
||||||
for label in [self.SongLevelLabel, self.ServiceLevelLabel, self.GlobalLevelLabel]:
|
for label in [self.song_level_label, self.service_level_label, self.global_level_label]:
|
||||||
rect = label.rect()
|
rect = label.rect()
|
||||||
rect.setTop(rect.top() + label_top_margin)
|
rect.setTop(rect.top() + label_top_margin)
|
||||||
label.setFrameRect(rect)
|
label.setFrameRect(rect)
|
||||||
label.setWordWrap(True)
|
label.setWordWrap(True)
|
||||||
self.rightLayout.addWidget(self.LevelGroupBox)
|
self.right_layout.addWidget(self.level_group_box)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.SongLevelRadioButton.clicked.connect(self.onSongLevelButtonClicked)
|
self.song_level_radio_button.clicked.connect(self.on_song_level_button_clicked)
|
||||||
self.ServiceLevelRadioButton.clicked.connect(self.onServiceLevelButtonClicked)
|
self.service_level_radio_button.clicked.connect(self.on_service_level_button_clicked)
|
||||||
self.GlobalLevelRadioButton.clicked.connect(self.onGlobalLevelButtonClicked)
|
self.global_level_radio_button.clicked.connect(self.on_global_level_button_clicked)
|
||||||
self.DefaultComboBox.activated.connect(self.onDefaultComboBoxChanged)
|
self.default_combo_box.activated.connect(self.on_default_combo_box_changed)
|
||||||
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
Translate the UI on the fly
|
Translate the UI on the fly
|
||||||
"""
|
"""
|
||||||
self.tabTitleVisible = UiStrings().Themes
|
self.tab_title_visible = UiStrings().Themes
|
||||||
self.GlobalGroupBox.setTitle(translate('OpenLP.ThemesTab', 'Global Theme'))
|
self.global_group_box.setTitle(translate('OpenLP.ThemesTab', 'Global Theme'))
|
||||||
self.LevelGroupBox.setTitle(translate('OpenLP.ThemesTab', 'Theme Level'))
|
self.level_group_box.setTitle(translate('OpenLP.ThemesTab', 'Theme Level'))
|
||||||
self.SongLevelRadioButton.setText(translate('OpenLP.ThemesTab', 'S&ong Level'))
|
self.song_level_radio_button.setText(translate('OpenLP.ThemesTab', 'S&ong Level'))
|
||||||
self.SongLevelLabel.setText(translate('OpenLP.ThemesTab', 'Use the theme from each song '
|
self.song_level_label.setText(translate('OpenLP.ThemesTab', 'Use the theme from each song '
|
||||||
'in the database. If a song doesn\'t have a theme associated with '
|
'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 '
|
'it, then use the service\'s theme. If the service doesn\'t have '
|
||||||
'a theme, then use the global theme.'))
|
'a theme, then use the global theme.'))
|
||||||
self.ServiceLevelRadioButton.setText(translate('OpenLP.ThemesTab', '&Service Level'))
|
self.service_level_radio_button.setText(translate('OpenLP.ThemesTab', '&Service Level'))
|
||||||
self.ServiceLevelLabel.setText(translate('OpenLP.ThemesTab', 'Use the theme from the service, '
|
self.service_level_label.setText(translate('OpenLP.ThemesTab', 'Use the theme from the service, '
|
||||||
'overriding any of the individual songs\' themes. If the '
|
'overriding any of the individual songs\' themes. If the '
|
||||||
'service doesn\'t have a theme, then use the global theme.'))
|
'service doesn\'t have a theme, then use the global theme.'))
|
||||||
self.GlobalLevelRadioButton.setText(translate('OpenLP.ThemesTab', '&Global Level'))
|
self.global_level_radio_button.setText(translate('OpenLP.ThemesTab', '&Global Level'))
|
||||||
self.GlobalLevelLabel.setText(translate('OpenLP.ThemesTab', 'Use the global theme, overriding '
|
self.global_level_label.setText(translate('OpenLP.ThemesTab', 'Use the global theme, overriding '
|
||||||
'any themes associated with either the service or the songs.'))
|
'any themes associated with either the service or the songs.'))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
@ -129,61 +129,62 @@ class ThemesTab(SettingsTab):
|
|||||||
Load the theme settings into the tab
|
Load the theme settings into the tab
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.theme_level = settings.value(u'theme level')
|
self.theme_level = settings.value(u'theme level')
|
||||||
self.global_theme = settings.value(u'global theme')
|
self.global_theme = settings.value(u'global theme')
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
if self.theme_level == ThemeLevel.Global:
|
if self.theme_level == ThemeLevel.Global:
|
||||||
self.GlobalLevelRadioButton.setChecked(True)
|
self.global_level_radio_button.setChecked(True)
|
||||||
elif self.theme_level == ThemeLevel.Service:
|
elif self.theme_level == ThemeLevel.Service:
|
||||||
self.ServiceLevelRadioButton.setChecked(True)
|
self.service_level_radio_button.setChecked(True)
|
||||||
else:
|
else:
|
||||||
self.SongLevelRadioButton.setChecked(True)
|
self.song_level_radio_button.setChecked(True)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Save the settings
|
Save the settings
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'theme level', self.theme_level)
|
settings.setValue(u'theme level', self.theme_level)
|
||||||
settings.setValue(u'global theme', self.global_theme)
|
settings.setValue(u'global theme', self.global_theme)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.renderer.set_global_theme(self.global_theme)
|
|
||||||
self.renderer.set_theme_level(self.theme_level)
|
self.renderer.set_theme_level(self.theme_level)
|
||||||
Registry().execute(u'theme_update_global', self.global_theme)
|
if self.tab_visited:
|
||||||
|
self.settings_form.register_post_process(u'theme_update_global')
|
||||||
|
self.tab_visited = False
|
||||||
|
|
||||||
def post_set_up(self):
|
def post_set_up(self):
|
||||||
"""
|
"""
|
||||||
After setting things up...
|
After setting things up...
|
||||||
"""
|
"""
|
||||||
Registry().execute(u'theme_update_global', self.global_theme)
|
Registry().execute(u'theme_update_global')
|
||||||
|
|
||||||
def onSongLevelButtonClicked(self):
|
def on_song_level_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Set the theme level
|
Set the theme level
|
||||||
"""
|
"""
|
||||||
self.theme_level = ThemeLevel.Song
|
self.theme_level = ThemeLevel.Song
|
||||||
|
|
||||||
def onServiceLevelButtonClicked(self):
|
def on_service_level_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Set the theme level
|
Set the theme level
|
||||||
"""
|
"""
|
||||||
self.theme_level = ThemeLevel.Service
|
self.theme_level = ThemeLevel.Service
|
||||||
|
|
||||||
def onGlobalLevelButtonClicked(self):
|
def on_global_level_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Set the theme level
|
Set the theme level
|
||||||
"""
|
"""
|
||||||
self.theme_level = ThemeLevel.Global
|
self.theme_level = ThemeLevel.Global
|
||||||
|
|
||||||
def onDefaultComboBoxChanged(self, value):
|
def on_default_combo_box_changed(self, value):
|
||||||
"""
|
"""
|
||||||
Set the global default theme
|
Set the global default theme
|
||||||
"""
|
"""
|
||||||
self.global_theme = self.DefaultComboBox.currentText()
|
self.global_theme = self.default_combo_box.currentText()
|
||||||
self.renderer.set_global_theme(self.global_theme)
|
self.renderer.set_global_theme()
|
||||||
self.__previewGlobalTheme()
|
self._previewGlobalTheme()
|
||||||
|
|
||||||
def update_theme_list(self, theme_list):
|
def update_theme_list(self, theme_list):
|
||||||
"""
|
"""
|
||||||
@ -195,16 +196,16 @@ class ThemesTab(SettingsTab):
|
|||||||
[u'Bible Theme', u'Song Theme']
|
[u'Bible Theme', u'Song Theme']
|
||||||
"""
|
"""
|
||||||
# Reload as may have been triggered by the ThemeManager.
|
# Reload as may have been triggered by the ThemeManager.
|
||||||
self.global_theme = Settings().value(self.settingsSection + u'/global theme')
|
self.global_theme = Settings().value(self.settings_section + u'/global theme')
|
||||||
self.DefaultComboBox.clear()
|
self.default_combo_box.clear()
|
||||||
self.DefaultComboBox.addItems(theme_list)
|
self.default_combo_box.addItems(theme_list)
|
||||||
find_and_set_in_combo_box(self.DefaultComboBox, self.global_theme)
|
find_and_set_in_combo_box(self.default_combo_box, self.global_theme)
|
||||||
self.renderer.set_global_theme(self.global_theme)
|
self.renderer.set_global_theme()
|
||||||
self.renderer.set_theme_level(self.theme_level)
|
self.renderer.set_theme_level(self.theme_level)
|
||||||
if self.global_theme is not u'':
|
if self.global_theme is not u'':
|
||||||
self.__previewGlobalTheme()
|
self._preview_global_theme()
|
||||||
|
|
||||||
def __previewGlobalTheme(self):
|
def _preview_global_theme(self):
|
||||||
"""
|
"""
|
||||||
Utility method to update the global theme preview image.
|
Utility method to update the global theme preview image.
|
||||||
"""
|
"""
|
||||||
@ -212,4 +213,4 @@ class ThemesTab(SettingsTab):
|
|||||||
preview = QtGui.QPixmap(unicode(image))
|
preview = QtGui.QPixmap(unicode(image))
|
||||||
if not preview.isNull():
|
if not preview.isNull():
|
||||||
preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||||
self.DefaultListView.setPixmap(preview)
|
self.default_list_view.setPixmap(preview)
|
||||||
|
@ -153,7 +153,6 @@ class AlertsPlugin(Plugin):
|
|||||||
visible=False, can_shortcuts=True, triggers=self.onAlertsTrigger)
|
visible=False, can_shortcuts=True, triggers=self.onAlertsTrigger)
|
||||||
self.main_window.tools_menu.addAction(self.toolsAlertItem)
|
self.main_window.tools_menu.addAction(self.toolsAlertItem)
|
||||||
|
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
log.info(u'Alerts Initialising')
|
log.info(u'Alerts Initialising')
|
||||||
Plugin.initialise(self)
|
Plugin.initialise(self)
|
||||||
@ -211,7 +210,7 @@ class AlertsPlugin(Plugin):
|
|||||||
"""
|
"""
|
||||||
align = VerticalType.Names[self.settingsTab.location]
|
align = VerticalType.Names[self.settingsTab.location]
|
||||||
return CSS % (align, self.settingsTab.font_face, self.settingsTab.font_size, self.settingsTab.font_color,
|
return CSS % (align, self.settingsTab.font_face, self.settingsTab.font_size, self.settingsTab.font_color,
|
||||||
self.settingsTab.bg_color)
|
self.settingsTab.background_color)
|
||||||
|
|
||||||
def getDisplayHtml(self):
|
def getDisplayHtml(self):
|
||||||
"""
|
"""
|
||||||
@ -229,4 +228,4 @@ class AlertsPlugin(Plugin):
|
|||||||
align = VerticalType.Names[self.settingsTab.location]
|
align = VerticalType.Names[self.settingsTab.location]
|
||||||
frame.evaluateJavaScript(u'update_css("%s", "%s", "%s", "%s", "%s")' %
|
frame.evaluateJavaScript(u'update_css("%s", "%s", "%s", "%s", "%s")' %
|
||||||
(align, self.settingsTab.font_face, self.settingsTab.font_size,
|
(align, self.settingsTab.font_face, self.settingsTab.font_size,
|
||||||
self.settingsTab.font_color, self.settingsTab.bg_color))
|
self.settingsTab.font_color, self.settingsTab.background_color))
|
||||||
|
@ -198,10 +198,8 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
|
|||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
||||||
self.parameter_edit.setFocus()
|
self.parameter_edit.setFocus()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
text = text.replace(u'<>', self.parameter_edit.text())
|
text = text.replace(u'<>', self.parameter_edit.text())
|
||||||
self.plugin.alerts_manager.display_alert(text)
|
self.plugin.alerts_manager.display_alert(text)
|
||||||
self.plugin.alertsmanager.display_alert(text)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def on_current_row_changed(self, row):
|
def on_current_row_changed(self, row):
|
||||||
|
@ -27,11 +27,12 @@
|
|||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Registry, SettingsTab, Settings, UiStrings, translate
|
from openlp.core.lib import SettingsTab, Settings, UiStrings, translate
|
||||||
from openlp.core.lib.ui import create_valign_selection_widgets
|
from openlp.core.lib.ui import create_valign_selection_widgets
|
||||||
|
|
||||||
|
|
||||||
class AlertsTab(SettingsTab):
|
class AlertsTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
AlertsTab is the alerts settings tab in the settings dialog.
|
AlertsTab is the alerts settings tab in the settings dialog.
|
||||||
@ -42,146 +43,145 @@ class AlertsTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'AlertsTab')
|
self.setObjectName(u'AlertsTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.fontGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.font_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.fontGroupBox.setObjectName(u'fontGroupBox')
|
self.font_group_box.setObjectName(u'font_group_box')
|
||||||
self.fontLayout = QtGui.QFormLayout(self.fontGroupBox)
|
self.font_layout = QtGui.QFormLayout(self.font_group_box)
|
||||||
self.fontLayout.setObjectName(u'fontLayout')
|
self.font_layout.setObjectName(u'font_layout')
|
||||||
self.fontLabel = QtGui.QLabel(self.fontGroupBox)
|
self.font_label = QtGui.QLabel(self.font_group_box)
|
||||||
self.fontLabel.setObjectName(u'fontLabel')
|
self.font_label.setObjectName(u'font_label')
|
||||||
self.fontComboBox = QtGui.QFontComboBox(self.fontGroupBox)
|
self.font_combo_box = QtGui.QFontComboBox(self.font_group_box)
|
||||||
self.fontComboBox.setObjectName(u'fontComboBox')
|
self.font_combo_box.setObjectName(u'font_combo_box')
|
||||||
self.fontLayout.addRow(self.fontLabel, self.fontComboBox)
|
self.font_layout.addRow(self.font_label, self.font_combo_box)
|
||||||
self.fontColorLabel = QtGui.QLabel(self.fontGroupBox)
|
self.font_color_label = QtGui.QLabel(self.font_group_box)
|
||||||
self.fontColorLabel.setObjectName(u'fontColorLabel')
|
self.font_color_label.setObjectName(u'font_color_label')
|
||||||
self.colorLayout = QtGui.QHBoxLayout()
|
self.color_layout = QtGui.QHBoxLayout()
|
||||||
self.colorLayout.setObjectName(u'colorLayout')
|
self.color_layout.setObjectName(u'color_layout')
|
||||||
self.fontColorButton = QtGui.QPushButton(self.fontGroupBox)
|
self.font_color_button = QtGui.QPushButton(self.font_group_box)
|
||||||
self.fontColorButton.setObjectName(u'fontColorButton')
|
self.font_color_button.setObjectName(u'font_color_button')
|
||||||
self.colorLayout.addWidget(self.fontColorButton)
|
self.color_layout.addWidget(self.font_color_button)
|
||||||
self.colorLayout.addSpacing(20)
|
self.color_layout.addSpacing(20)
|
||||||
self.backgroundColorLabel = QtGui.QLabel(self.fontGroupBox)
|
self.background_color_label = QtGui.QLabel(self.font_group_box)
|
||||||
self.backgroundColorLabel.setObjectName(u'backgroundColorLabel')
|
self.background_color_label.setObjectName(u'background_color_label')
|
||||||
self.colorLayout.addWidget(self.backgroundColorLabel)
|
self.color_layout.addWidget(self.background_color_label)
|
||||||
self.backgroundColorButton = QtGui.QPushButton(self.fontGroupBox)
|
self.background_color_button = QtGui.QPushButton(self.font_group_box)
|
||||||
self.backgroundColorButton.setObjectName(u'backgroundColorButton')
|
self.background_color_button.setObjectName(u'background_color_button')
|
||||||
self.colorLayout.addWidget(self.backgroundColorButton)
|
self.color_layout.addWidget(self.background_color_button)
|
||||||
self.fontLayout.addRow(self.fontColorLabel, self.colorLayout)
|
self.font_layout.addRow(self.font_color_label, self.color_layout)
|
||||||
self.fontSizeLabel = QtGui.QLabel(self.fontGroupBox)
|
self.font_size_label = QtGui.QLabel(self.font_group_box)
|
||||||
self.fontSizeLabel.setObjectName(u'fontSizeLabel')
|
self.font_size_label.setObjectName(u'font_size_label')
|
||||||
self.fontSizeSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
self.font_size_spin_box = QtGui.QSpinBox(self.font_group_box)
|
||||||
self.fontSizeSpinBox.setObjectName(u'fontSizeSpinBox')
|
self.font_size_spin_box.setObjectName(u'font_size_spin_box')
|
||||||
self.fontLayout.addRow(self.fontSizeLabel, self.fontSizeSpinBox)
|
self.font_layout.addRow(self.font_size_label, self.font_size_spin_box)
|
||||||
self.timeoutLabel = QtGui.QLabel(self.fontGroupBox)
|
self.timeout_label = QtGui.QLabel(self.font_group_box)
|
||||||
self.timeoutLabel.setObjectName(u'timeoutLabel')
|
self.timeout_label.setObjectName(u'timeout_label')
|
||||||
self.timeoutSpinBox = QtGui.QSpinBox(self.fontGroupBox)
|
self.timeout_spin_box = QtGui.QSpinBox(self.font_group_box)
|
||||||
self.timeoutSpinBox.setMaximum(180)
|
self.timeout_spin_box.setMaximum(180)
|
||||||
self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
|
self.timeout_spin_box.setObjectName(u'timeout_spin_box')
|
||||||
self.fontLayout.addRow(self.timeoutLabel, self.timeoutSpinBox)
|
self.font_layout.addRow(self.timeout_label, self.timeout_spin_box)
|
||||||
self.verticalLabel, self.verticalComboBox = create_valign_selection_widgets(self.fontGroupBox)
|
self.vertical_label, self.vertical_combo_box = create_valign_selection_widgets(self.font_group_box)
|
||||||
self.verticalLabel.setObjectName(u'verticalLabel')
|
self.vertical_label.setObjectName(u'vertical_label')
|
||||||
self.verticalComboBox.setObjectName(u'verticalComboBox')
|
self.vertical_combo_box.setObjectName(u'vertical_combo_box')
|
||||||
self.fontLayout.addRow(self.verticalLabel, self.verticalComboBox)
|
self.font_layout.addRow(self.vertical_label, self.vertical_combo_box)
|
||||||
self.leftLayout.addWidget(self.fontGroupBox)
|
self.left_layout.addWidget(self.font_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.previewGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.preview_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.previewGroupBox.setObjectName(u'previewGroupBox')
|
self.preview_group_box.setObjectName(u'preview_group_box')
|
||||||
self.previewLayout = QtGui.QVBoxLayout(self.previewGroupBox)
|
self.preview_layout = QtGui.QVBoxLayout(self.preview_group_box)
|
||||||
self.previewLayout.setObjectName(u'previewLayout')
|
self.preview_layout.setObjectName(u'preview_layout')
|
||||||
self.fontPreview = QtGui.QLineEdit(self.previewGroupBox)
|
self.font_preview = QtGui.QLineEdit(self.preview_group_box)
|
||||||
self.fontPreview.setObjectName(u'fontPreview')
|
self.font_preview.setObjectName(u'font_preview')
|
||||||
self.previewLayout.addWidget(self.fontPreview)
|
self.preview_layout.addWidget(self.font_preview)
|
||||||
self.rightLayout.addWidget(self.previewGroupBox)
|
self.right_layout.addWidget(self.preview_group_box)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
self.backgroundColorButton.clicked.connect(self.onBackgroundColorButtonClicked)
|
self.background_color_button.clicked.connect(self.on_background_color_button_clicked)
|
||||||
self.fontColorButton.clicked.connect(self.onFontColorButtonClicked)
|
self.font_color_button.clicked.connect(self.on_font_color_button_clicked)
|
||||||
self.fontComboBox.activated.connect(self.onFontComboBoxClicked)
|
self.font_combo_box.activated.connect(self.on_font_combo_box_clicked)
|
||||||
self.timeoutSpinBox.valueChanged.connect(self.onTimeoutSpinBoxChanged)
|
self.timeout_spin_box.valueChanged.connect(self.on_timeout_spin_box_changed)
|
||||||
self.fontSizeSpinBox.valueChanged.connect(self.onFontSizeSpinBoxChanged)
|
self.font_size_spin_box.valueChanged.connect(self.on_font_size_spin_box_changed)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.fontGroupBox.setTitle(translate('AlertsPlugin.AlertsTab', 'Font'))
|
self.font_group_box.setTitle(translate('AlertsPlugin.AlertsTab', 'Font'))
|
||||||
self.fontLabel.setText(translate('AlertsPlugin.AlertsTab', 'Font name:'))
|
self.font_label.setText(translate('AlertsPlugin.AlertsTab', 'Font name:'))
|
||||||
self.fontColorLabel.setText(translate('AlertsPlugin.AlertsTab', 'Font color:'))
|
self.font_color_label.setText(translate('AlertsPlugin.AlertsTab', 'Font color:'))
|
||||||
self.backgroundColorLabel.setText(translate('AlertsPlugin.AlertsTab', 'Background color:'))
|
self.background_color_label.setText(translate('AlertsPlugin.AlertsTab', 'Background color:'))
|
||||||
self.fontSizeLabel.setText(translate('AlertsPlugin.AlertsTab', 'Font size:'))
|
self.font_size_label.setText(translate('AlertsPlugin.AlertsTab', 'Font size:'))
|
||||||
self.fontSizeSpinBox.setSuffix(UiStrings().FontSizePtUnit)
|
self.font_size_spin_box.setSuffix(UiStrings().FontSizePtUnit)
|
||||||
self.timeoutLabel.setText(translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
self.timeout_label.setText(translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
||||||
self.timeoutSpinBox.setSuffix(UiStrings().Seconds)
|
self.timeout_spin_box.setSuffix(UiStrings().Seconds)
|
||||||
self.previewGroupBox.setTitle(UiStrings().Preview)
|
self.preview_group_box.setTitle(UiStrings().Preview)
|
||||||
self.fontPreview.setText(UiStrings().OLPV2x)
|
self.font_preview.setText(UiStrings().OLPV2x)
|
||||||
|
|
||||||
def onBackgroundColorButtonClicked(self):
|
def on_background_color_button_clicked(self):
|
||||||
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.bg_color), self)
|
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.background_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.bg_color = new_color.name()
|
self.background_color = new_color.name()
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
self.updateDisplay()
|
self.update_display()
|
||||||
|
|
||||||
def onFontComboBoxClicked(self):
|
def on_font_combo_box_clicked(self):
|
||||||
self.updateDisplay()
|
self.update_display()
|
||||||
|
|
||||||
def onFontColorButtonClicked(self):
|
def on_font_color_button_clicked(self):
|
||||||
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.font_color), self)
|
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.font_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.font_color = new_color.name()
|
self.font_color = new_color.name()
|
||||||
self.fontColorButton.setStyleSheet(u'background-color: %s' % self.font_color)
|
self.font_color_button.setStyleSheet(u'background-color: %s' % self.font_color)
|
||||||
self.updateDisplay()
|
self.update_display()
|
||||||
|
|
||||||
def onTimeoutSpinBoxChanged(self):
|
def on_timeout_spin_box_changed(self):
|
||||||
self.timeout = self.timeoutSpinBox.value()
|
self.timeout = self.timeout_spin_box.value()
|
||||||
self.changed = True
|
self.changed = True
|
||||||
|
|
||||||
def onFontSizeSpinBoxChanged(self):
|
def on_font_size_spin_box_changed(self):
|
||||||
self.font_size = self.fontSizeSpinBox.value()
|
self.font_size = self.font_size_spin_box.value()
|
||||||
self.updateDisplay()
|
self.update_display()
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.timeout = settings.value(u'timeout')
|
self.timeout = settings.value(u'timeout')
|
||||||
self.font_color = settings.value(u'font color')
|
self.font_color = settings.value(u'font color')
|
||||||
self.font_size = settings.value(u'font size')
|
self.font_size = settings.value(u'font size')
|
||||||
self.bg_color = settings.value(u'background color')
|
self.background_color = settings.value(u'background color')
|
||||||
self.font_face = settings.value(u'font face')
|
self.font_face = settings.value(u'font face')
|
||||||
self.location = settings.value(u'location')
|
self.location = settings.value(u'location')
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.fontSizeSpinBox.setValue(self.font_size)
|
self.font_size_spin_box.setValue(self.font_size)
|
||||||
self.timeoutSpinBox.setValue(self.timeout)
|
self.timeout_spin_box.setValue(self.timeout)
|
||||||
self.fontColorButton.setStyleSheet(u'background-color: %s' % self.font_color)
|
self.font_color_button.setStyleSheet(u'background-color: %s' % self.font_color)
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
self.verticalComboBox.setCurrentIndex(self.location)
|
self.vertical_combo_box.setCurrentIndex(self.location)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily(self.font_face)
|
font.setFamily(self.font_face)
|
||||||
self.fontComboBox.setCurrentFont(font)
|
self.font_combo_box.setCurrentFont(font)
|
||||||
self.updateDisplay()
|
self.update_display()
|
||||||
self.changed = False
|
self.changed = False
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
# Check value has changed as no event handles this field
|
# Check value has changed as no event handles this field
|
||||||
if settings.value(u'location') != self.verticalComboBox.currentIndex():
|
if settings.value(u'location') != self.vertical_combo_box.currentIndex():
|
||||||
self.changed = True
|
self.changed = True
|
||||||
settings.setValue(u'background color', self.bg_color)
|
settings.setValue(u'background color', self.background_color)
|
||||||
settings.setValue(u'font color', self.font_color)
|
settings.setValue(u'font color', self.font_color)
|
||||||
settings.setValue(u'font size', self.font_size)
|
settings.setValue(u'font size', self.font_size)
|
||||||
self.font_face = self.fontComboBox.currentFont().family()
|
self.font_face = self.font_combo_box.currentFont().family()
|
||||||
settings.setValue(u'font face', self.font_face)
|
settings.setValue(u'font face', self.font_face)
|
||||||
settings.setValue(u'timeout', self.timeout)
|
settings.setValue(u'timeout', self.timeout)
|
||||||
self.location = self.verticalComboBox.currentIndex()
|
self.location = self.vertical_combo_box.currentIndex()
|
||||||
settings.setValue(u'location', self.location)
|
settings.setValue(u'location', self.location)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
if self.changed:
|
if self.changed:
|
||||||
Registry().execute(u'update_display_css')
|
self.settings_form.register_post_process(u'update_display_css')
|
||||||
self.changed = False
|
self.changed = False
|
||||||
|
|
||||||
def updateDisplay(self):
|
def update_display(self):
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily(self.fontComboBox.currentFont().family())
|
font.setFamily(self.font_combo_box.currentFont().family())
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setPointSize(self.font_size)
|
font.setPointSize(self.font_size)
|
||||||
self.fontPreview.setFont(font)
|
self.font_preview.setFont(font)
|
||||||
self.fontPreview.setStyleSheet(u'background-color: %s; color: %s' % (self.bg_color, self.font_color))
|
self.font_preview.setStyleSheet(u'background-color: %s; color: %s' % (self.background_color, self.font_color))
|
||||||
self.changed = True
|
self.changed = True
|
||||||
|
|
||||||
|
@ -38,13 +38,14 @@ from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, update_referenc
|
|||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class BiblesTab(SettingsTab):
|
class BiblesTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
BiblesTab is the Bibles settings tab in the settings dialog.
|
BiblesTab is the Bibles settings tab in the settings dialog.
|
||||||
"""
|
"""
|
||||||
log.info(u'Bible Tab loaded')
|
log.info(u'Bible Tab loaded')
|
||||||
|
|
||||||
def __init__(self, parent, title, visible_title, icon_path):
|
def _init_(self, parent, title, visible_title, icon_path):
|
||||||
self.paragraph_style = True
|
self.paragraph_style = True
|
||||||
self.show_new_chapters = False
|
self.show_new_chapters = False
|
||||||
self.display_style = 0
|
self.display_style = 0
|
||||||
@ -53,343 +54,332 @@ class BiblesTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'BiblesTab')
|
self.setObjectName(u'BiblesTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.verseDisplayGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.verse_display_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.verseDisplayGroupBox.setObjectName(u'verseDisplayGroupBox')
|
self.verse_display_group_box.setObjectName(u'verse_display_group_box')
|
||||||
self.verseDisplayLayout = QtGui.QFormLayout(self.verseDisplayGroupBox)
|
self.verse_display_layout = QtGui.QFormLayout(self.verse_display_group_box)
|
||||||
self.verseDisplayLayout.setObjectName(u'verseDisplayLayout')
|
self.verse_display_layout.setObjectName(u'verse_display_layout')
|
||||||
self.newChaptersCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
|
self.new_chapters_check_box = QtGui.QCheckBox(self.verse_display_group_box)
|
||||||
self.newChaptersCheckBox.setObjectName(u'newChaptersCheckBox')
|
self.new_chapters_check_box.setObjectName(u'new_chapters_check_box')
|
||||||
self.verseDisplayLayout.addRow(self.newChaptersCheckBox)
|
self.verse_display_layout.addRow(self.new_chapters_check_box)
|
||||||
self.displayStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
self.display_style_label = QtGui.QLabel(self.verse_display_group_box)
|
||||||
self.displayStyleLabel.setObjectName(u'displayStyleLabel')
|
self.display_style_label.setObjectName(u'display_style_label')
|
||||||
self.displayStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
self.display_style_combo_box = QtGui.QComboBox(self.verse_display_group_box)
|
||||||
self.displayStyleComboBox.addItems([u'', u'', u'', u''])
|
self.display_style_combo_box.addItems([u'', u'', u'', u''])
|
||||||
self.displayStyleComboBox.setObjectName(u'displayStyleComboBox')
|
self.display_style_combo_box.setObjectName(u'display_style_combo_box')
|
||||||
self.verseDisplayLayout.addRow(self.displayStyleLabel, self.displayStyleComboBox)
|
self.verse_display_layout.addRow(self.display_style_label, self.display_style_combo_box)
|
||||||
self.layoutStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
self.layout_style_label = QtGui.QLabel(self.verse_display_group_box)
|
||||||
self.layoutStyleLabel.setObjectName(u'layoutStyleLabel')
|
self.layout_style_label.setObjectName(u'layout_style_label')
|
||||||
self.layoutStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
self.layout_style_combo_box = QtGui.QComboBox(self.verse_display_group_box)
|
||||||
self.layoutStyleComboBox.setObjectName(u'layoutStyleComboBox')
|
self.layout_style_combo_box.setObjectName(u'layout_style_combo_box')
|
||||||
self.layoutStyleComboBox.addItems([u'', u'', u''])
|
self.layout_style_combo_box.addItems([u'', u'', u''])
|
||||||
self.verseDisplayLayout.addRow(self.layoutStyleLabel, self.layoutStyleComboBox)
|
self.verse_display_layout.addRow(self.layout_style_label, self.layout_style_combo_box)
|
||||||
self.bibleSecondCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
|
self.bible_second_check_box = QtGui.QCheckBox(self.verse_display_group_box)
|
||||||
self.bibleSecondCheckBox.setObjectName(u'bibleSecondCheckBox')
|
self.bible_second_check_box.setObjectName(u'bible_second_check_box')
|
||||||
self.verseDisplayLayout.addRow(self.bibleSecondCheckBox)
|
self.verse_display_layout.addRow(self.bible_second_check_box)
|
||||||
self.bibleThemeLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
self.bible_theme_label = QtGui.QLabel(self.verse_display_group_box)
|
||||||
self.bibleThemeLabel.setObjectName(u'BibleThemeLabel')
|
self.bible_theme_label.setObjectName(u'BibleTheme_label')
|
||||||
self.bibleThemeComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
self.bible_theme_combo_box = QtGui.QComboBox(self.verse_display_group_box)
|
||||||
self.bibleThemeComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
self.bible_theme_combo_box.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
||||||
self.bibleThemeComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
self.bible_theme_combo_box.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
||||||
self.bibleThemeComboBox.addItem(u'')
|
self.bible_theme_combo_box.addItem(u'')
|
||||||
self.bibleThemeComboBox.setObjectName(u'BibleThemeComboBox')
|
self.bible_theme_combo_box.setObjectName(u'BibleThemecombo_box')
|
||||||
self.verseDisplayLayout.addRow(self.bibleThemeLabel, self.bibleThemeComboBox)
|
self.verse_display_layout.addRow(self.bible_theme_label, self.bible_theme_combo_box)
|
||||||
self.changeNoteLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
self.change_note_label = QtGui.QLabel(self.verse_display_group_box)
|
||||||
self.changeNoteLabel.setWordWrap(True)
|
self.change_note_label.setWordWrap(True)
|
||||||
self.changeNoteLabel.setObjectName(u'changeNoteLabel')
|
self.change_note_label.setObjectName(u'change_note_label')
|
||||||
self.verseDisplayLayout.addRow(self.changeNoteLabel)
|
self.verse_display_layout.addRow(self.change_note_label)
|
||||||
self.leftLayout.addWidget(self.verseDisplayGroupBox)
|
self.left_layout.addWidget(self.verse_display_group_box)
|
||||||
self.scriptureReferenceGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.scripture_reference_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.scriptureReferenceGroupBox.setObjectName(u'scriptureReferenceGroupBox')
|
self.scripture_reference_group_box.setObjectName(u'scripture_reference_group_box')
|
||||||
self.scriptureReferenceLayout = QtGui.QGridLayout(self.scriptureReferenceGroupBox)
|
self.scripture_reference_layout = QtGui.QGridLayout(self.scripture_reference_group_box)
|
||||||
self.verseSeparatorCheckBox = QtGui.QCheckBox(self.scriptureReferenceGroupBox)
|
self.verse_separator_check_box = QtGui.QCheckBox(self.scripture_reference_group_box)
|
||||||
self.verseSeparatorCheckBox.setObjectName(u'verseSeparatorCheckBox')
|
self.verse_separator_check_box.setObjectName(u'verse_separator_check_box')
|
||||||
self.scriptureReferenceLayout.addWidget(self.verseSeparatorCheckBox, 0, 0)
|
self.scripture_reference_layout.addWidget(self.verse_separator_check_box, 0, 0)
|
||||||
self.verseSeparatorLineEdit = QtGui.QLineEdit(self.scriptureReferenceGroupBox)
|
self.verse_separator_line_edit = QtGui.QLineEdit(self.scripture_reference_group_box)
|
||||||
# self.verseSeparatorLineEdit.setPalette
|
self.verse_separator_line_edit.setObjectName(u'verse_separator_line_edit')
|
||||||
self.verseSeparatorLineEdit.setObjectName(u'verseSeparatorLineEdit')
|
self.scripture_reference_layout.addWidget(self.verse_separator_line_edit, 0, 1)
|
||||||
self.scriptureReferenceLayout.addWidget(self.verseSeparatorLineEdit, 0, 1)
|
self.range_separator_check_box = QtGui.QCheckBox(self.scripture_reference_group_box)
|
||||||
self.rangeSeparatorCheckBox = QtGui.QCheckBox(self.scriptureReferenceGroupBox)
|
self.range_separator_check_box.setObjectName(u'range_separator_check_box')
|
||||||
self.rangeSeparatorCheckBox.setObjectName(u'rangeSeparatorCheckBox')
|
self.scripture_reference_layout.addWidget(self.range_separator_check_box, 1, 0)
|
||||||
self.scriptureReferenceLayout.addWidget(self.rangeSeparatorCheckBox, 1, 0)
|
self.range_separator_line_edit = QtGui.QLineEdit(self.scripture_reference_group_box)
|
||||||
self.rangeSeparatorLineEdit = QtGui.QLineEdit(self.scriptureReferenceGroupBox)
|
self.range_separator_line_edit.setObjectName(u'range_separator_line_edit')
|
||||||
self.rangeSeparatorLineEdit.setObjectName(u'rangeSeparatorLineEdit')
|
self.scripture_reference_layout.addWidget(self.range_separator_line_edit, 1, 1)
|
||||||
self.scriptureReferenceLayout.addWidget(self.rangeSeparatorLineEdit, 1, 1)
|
self.list_separator_check_box = QtGui.QCheckBox(self.scripture_reference_group_box)
|
||||||
self.listSeparatorCheckBox = QtGui.QCheckBox(self.scriptureReferenceGroupBox)
|
self.list_separator_check_box.setObjectName(u'list_separator_check_box')
|
||||||
self.listSeparatorCheckBox.setObjectName(u'listSeparatorCheckBox')
|
self.scripture_reference_layout.addWidget(self.list_separator_check_box, 2, 0)
|
||||||
self.scriptureReferenceLayout.addWidget(self.listSeparatorCheckBox, 2, 0)
|
self.list_separator_line_edit = QtGui.QLineEdit(self.scripture_reference_group_box)
|
||||||
self.listSeparatorLineEdit = QtGui.QLineEdit(self.scriptureReferenceGroupBox)
|
self.list_separator_line_edit.setObjectName(u'list_separator_line_edit')
|
||||||
self.listSeparatorLineEdit.setObjectName(u'listSeparatorLineEdit')
|
self.scripture_reference_layout.addWidget(self.list_separator_line_edit, 2, 1)
|
||||||
self.scriptureReferenceLayout.addWidget(self.listSeparatorLineEdit, 2, 1)
|
self.end_separator_check_box = QtGui.QCheckBox(self.scripture_reference_group_box)
|
||||||
self.endSeparatorCheckBox = QtGui.QCheckBox(self.scriptureReferenceGroupBox)
|
self.end_separator_check_box.setObjectName(u'end_separator_check_box')
|
||||||
self.endSeparatorCheckBox.setObjectName(u'endSeparatorCheckBox')
|
self.scripture_reference_layout.addWidget(self.end_separator_check_box, 3, 0)
|
||||||
self.scriptureReferenceLayout.addWidget(self.endSeparatorCheckBox, 3, 0)
|
self.end_separator_line_edit = QtGui.QLineEdit(self.scripture_reference_group_box)
|
||||||
self.endSeparatorLineEdit = QtGui.QLineEdit(self.scriptureReferenceGroupBox)
|
self.end_separator_line_edit.setObjectName(u'end_separator_line_edit')
|
||||||
self.endSeparatorLineEdit.setObjectName(u'endSeparatorLineEdit')
|
self.end_separator_line_edit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'[^0-9]*'),
|
||||||
self.endSeparatorLineEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'[^0-9]*'),
|
self.end_separator_line_edit))
|
||||||
self.endSeparatorLineEdit))
|
self.scripture_reference_layout.addWidget(self.end_separator_line_edit, 3, 1)
|
||||||
self.scriptureReferenceLayout.addWidget(self.endSeparatorLineEdit, 3, 1)
|
self.left_layout.addWidget(self.scripture_reference_group_box)
|
||||||
self.leftLayout.addWidget(self.scriptureReferenceGroupBox)
|
self.right_column.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
||||||
self.rightColumn.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
self.language_selection_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.languageSelectionGroupBox = QtGui.QGroupBox(self.rightColumn)
|
self.language_selection_group_box.setObjectName(u'language_selection_group_box')
|
||||||
self.languageSelectionGroupBox.setObjectName(u'languageSelectionGroupBox')
|
self.language_selection_layout = QtGui.QVBoxLayout(self.language_selection_group_box)
|
||||||
self.languageSelectionLayout = QtGui.QVBoxLayout(self.languageSelectionGroupBox)
|
self.language_selection_label = QtGui.QLabel(self.language_selection_group_box)
|
||||||
self.languageSelectionLabel = QtGui.QLabel(self.languageSelectionGroupBox)
|
self.language_selection_label.setObjectName(u'language_selection_label')
|
||||||
self.languageSelectionLabel.setObjectName(u'languageSelectionLabel')
|
self.language_selection_combo_box = QtGui.QComboBox(self.language_selection_group_box)
|
||||||
self.languageSelectionComboBox = QtGui.QComboBox(self.languageSelectionGroupBox)
|
self.language_selection_combo_box.setObjectName(u'language_selection_combo_box')
|
||||||
self.languageSelectionComboBox.setObjectName(u'languageSelectionComboBox')
|
self.language_selection_combo_box.addItems([u'', u'', u''])
|
||||||
self.languageSelectionComboBox.addItems([u'', u'', u''])
|
self.language_selection_layout.addWidget(self.language_selection_label)
|
||||||
self.languageSelectionLayout.addWidget(self.languageSelectionLabel)
|
self.language_selection_layout.addWidget(self.language_selection_combo_box)
|
||||||
self.languageSelectionLayout.addWidget(self.languageSelectionComboBox)
|
self.right_layout.addWidget(self.language_selection_group_box)
|
||||||
self.rightLayout.addWidget(self.languageSelectionGroupBox)
|
self.left_layout.addStretch()
|
||||||
self.leftLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
self.newChaptersCheckBox.stateChanged.connect(self.onNewChaptersCheckBoxChanged)
|
self.new_chapters_check_box.stateChanged.connect(self.on_new_chapters_check_box_changed)
|
||||||
self.displayStyleComboBox.activated.connect(self.onDisplayStyleComboBoxChanged)
|
self.display_style_combo_box.activated.connect(self.on_display_style_combo_box_changed)
|
||||||
self.bibleThemeComboBox.activated.connect(self.onBibleThemeComboBoxChanged)
|
self.bible_theme_combo_box.activated.connect(self.on_bible_theme_combo_box_changed)
|
||||||
self.layoutStyleComboBox.activated.connect(self.onLayoutStyleComboBoxChanged)
|
self.layout_style_combo_box.activated.connect(self.on_layout_style_combo_boxChanged)
|
||||||
self.bibleSecondCheckBox.stateChanged.connect(self.onBibleSecondCheckBox)
|
self.bible_second_check_box.stateChanged.connect(self.on_bible_second_check_box)
|
||||||
self.verseSeparatorCheckBox.clicked.connect(self.onVerseSeparatorCheckBoxClicked)
|
self.verse_separator_check_box.clicked.connect(self.on_verse_separator_check_box_clicked)
|
||||||
self.verseSeparatorLineEdit.textEdited.connect(self.onVerseSeparatorLineEditEdited)
|
self.verse_separator_line_edit.textEdited.connect(self.on_verse_separator_line_edit_edited)
|
||||||
self.verseSeparatorLineEdit.editingFinished.connect(self.onVerseSeparatorLineEditFinished)
|
self.verse_separator_line_edit.editingFinished.connect(self.on_verse_separator_line_edit_finished)
|
||||||
self.rangeSeparatorCheckBox.clicked.connect(self.onRangeSeparatorCheckBoxClicked)
|
self.range_separator_check_box.clicked.connect(self.on_range_separator_check_box_clicked)
|
||||||
self.rangeSeparatorLineEdit.textEdited.connect(self.onRangeSeparatorLineEditEdited)
|
self.range_separator_line_edit.textEdited.connect(self.on_range_separator_line_edit_edited)
|
||||||
self.rangeSeparatorLineEdit.editingFinished.connect(self.onRangeSeparatorLineEditFinished)
|
self.range_separator_line_edit.editingFinished.connect(self.on_range_separator_line_edit_finished)
|
||||||
self.listSeparatorCheckBox.clicked.connect(self.onListSeparatorCheckBoxClicked)
|
self.list_separator_check_box.clicked.connect(self.on_list_separator_check_box_clicked)
|
||||||
self.listSeparatorLineEdit.textEdited.connect(self.onListSeparatorLineEditEdited)
|
self.list_separator_line_edit.textEdited.connect(self.on_list_separator_line_edit_edited)
|
||||||
self.listSeparatorLineEdit.editingFinished.connect(self.onListSeparatorLineEditFinished)
|
self.list_separator_line_edit.editingFinished.connect(self.on_list_separator_line_edit_finished)
|
||||||
self.endSeparatorCheckBox.clicked.connect(self.onEndSeparatorCheckBoxClicked)
|
self.end_separator_check_box.clicked.connect(self.on_end_separator_check_box_clicked)
|
||||||
self.endSeparatorLineEdit.textEdited.connect(self.onEndSeparatorLineEditEdited)
|
self.end_separator_line_edit.textEdited.connect(self.on_end_separator_line_edit_edited)
|
||||||
self.endSeparatorLineEdit.editingFinished.connect(self.onEndSeparatorLineEditFinished)
|
self.end_separator_line_edit.editingFinished.connect(self.on_end_separator_line_edit_finished)
|
||||||
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
Registry().register_function(u'theme_update_list', self.update_theme_list)
|
||||||
self.languageSelectionComboBox.activated.connect(self.onLanguageSelectionComboBoxChanged)
|
self.language_selection_combo_box.activated.connect(self.on_language_selection_combo_box_changed)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.verseDisplayGroupBox.setTitle(translate('BiblesPlugin.BiblesTab', 'Verse Display'))
|
self.verse_display_group_box.setTitle(translate('BiblesPlugin.BiblesTab', 'Verse Display'))
|
||||||
self.newChaptersCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'Only show new chapter numbers'))
|
self.new_chapters_check_box.setText(translate('BiblesPlugin.BiblesTab', 'Only show new chapter numbers'))
|
||||||
self.layoutStyleLabel.setText(UiStrings().LayoutStyle)
|
self.layout_style_label.setText(UiStrings().LayoutStyle)
|
||||||
self.displayStyleLabel.setText(UiStrings().DisplayStyle)
|
self.display_style_label.setText(UiStrings().DisplayStyle)
|
||||||
self.bibleThemeLabel.setText(translate('BiblesPlugin.BiblesTab', 'Bible theme:'))
|
self.bible_theme_label.setText(translate('BiblesPlugin.BiblesTab', 'Bible theme:'))
|
||||||
self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerSlide, UiStrings().VersePerSlide)
|
self.layout_style_combo_box.setItemText(LayoutStyle.VersePerSlide, UiStrings().VersePerSlide)
|
||||||
self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerLine, UiStrings().VersePerLine)
|
self.layout_style_combo_box.setItemText(LayoutStyle.VersePerLine, UiStrings().VersePerLine)
|
||||||
self.layoutStyleComboBox.setItemText(LayoutStyle.Continuous, UiStrings().Continuous)
|
self.layout_style_combo_box.setItemText(LayoutStyle.Continuous, UiStrings().Continuous)
|
||||||
self.displayStyleComboBox.setItemText(DisplayStyle.NoBrackets,
|
self.display_style_combo_box.setItemText(DisplayStyle.NoBrackets,
|
||||||
translate('BiblesPlugin.BiblesTab', 'No Brackets'))
|
translate('BiblesPlugin.BiblesTab', 'No Brackets'))
|
||||||
self.displayStyleComboBox.setItemText(DisplayStyle.Round,
|
self.display_style_combo_box.setItemText(DisplayStyle.Round,
|
||||||
translate('BiblesPlugin.BiblesTab', '( And )'))
|
translate('BiblesPlugin.BiblesTab', '( And )'))
|
||||||
self.displayStyleComboBox.setItemText(DisplayStyle.Curly,
|
self.display_style_combo_box.setItemText(DisplayStyle.Curly,
|
||||||
translate('BiblesPlugin.BiblesTab', '{ And }'))
|
translate('BiblesPlugin.BiblesTab', '{ And }'))
|
||||||
self.displayStyleComboBox.setItemText(DisplayStyle.Square,
|
self.display_style_combo_box.setItemText(DisplayStyle.Square,
|
||||||
translate('BiblesPlugin.BiblesTab', '[ And ]'))
|
translate('BiblesPlugin.BiblesTab', '[ And ]'))
|
||||||
self.changeNoteLabel.setText(translate('BiblesPlugin.BiblesTab',
|
self.change_note_label.setText(translate('BiblesPlugin.BiblesTab',
|
||||||
'Note:\nChanges do not affect verses already in the service.'))
|
'Note:\nChanges do not affect verses already in the service.'))
|
||||||
self.bibleSecondCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'Display second Bible verses'))
|
self.bible_second_check_box.setText(translate('BiblesPlugin.BiblesTab', 'Display second Bible verses'))
|
||||||
self.scriptureReferenceGroupBox.setTitle(translate('BiblesPlugin.BiblesTab', 'Custom Scripture References'))
|
self.scripture_reference_group_box.setTitle(translate('BiblesPlugin.BiblesTab', 'Custom Scripture References'))
|
||||||
self.verseSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'Verse Separator:'))
|
self.verse_separator_check_box.setText(translate('BiblesPlugin.BiblesTab', 'Verse Separator:'))
|
||||||
self.rangeSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'Range Separator:'))
|
self.range_separator_check_box.setText(translate('BiblesPlugin.BiblesTab', 'Range Separator:'))
|
||||||
self.listSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'List Separator:'))
|
self.list_separator_check_box.setText(translate('BiblesPlugin.BiblesTab', 'List Separator:'))
|
||||||
self.endSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'End Mark:'))
|
self.end_separator_check_box.setText(translate('BiblesPlugin.BiblesTab', 'End Mark:'))
|
||||||
#@todo these are common so move to StringsUI and reuse.
|
tip_text = translate('BiblesPlugin.BiblesTab',
|
||||||
self.verseSeparatorLineEdit.setToolTip(
|
'Multiple alternative verse separators may be defined.\nThey have to be separated by a vertical bar "|".'
|
||||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
'\nPlease clear this edit line to use the default value.')
|
||||||
'verse separators may be defined.\nThey have to be separated '
|
self.verse_separator_line_edit.setToolTip(tip_text)
|
||||||
'by a vertical bar "|".\nPlease clear this edit line to use '
|
self.range_separator_line_edit.setToolTip(tip_text)
|
||||||
'the default value.'))
|
self.list_separator_line_edit.setToolTip(tip_text)
|
||||||
self.rangeSeparatorLineEdit.setToolTip(
|
self.end_separator_line_edit.setToolTip(tip_text)
|
||||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
self.language_selection_group_box.setTitle(translate('BiblesPlugin.BiblesTab', 'Default Bible Language'))
|
||||||
'range separators may be defined.\nThey have to be separated '
|
self.language_selection_label.setText(translate('BiblesPlugin.BiblesTab',
|
||||||
'by a vertical bar "|".\nPlease clear this edit line to use '
|
|
||||||
'the default value.'))
|
|
||||||
self.listSeparatorLineEdit.setToolTip(
|
|
||||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
|
||||||
'list separators may be defined.\nThey have to be separated '
|
|
||||||
'by a vertical bar "|".\nPlease clear this edit line to use '
|
|
||||||
'the default value.'))
|
|
||||||
self.endSeparatorLineEdit.setToolTip(
|
|
||||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
|
||||||
'end marks may be defined.\nThey have to be separated by a '
|
|
||||||
'vertical bar "|".\nPlease clear this edit line to use the '
|
|
||||||
'default value.'))
|
|
||||||
self.languageSelectionGroupBox.setTitle(translate('BiblesPlugin.BiblesTab', 'Default Bible Language'))
|
|
||||||
self.languageSelectionLabel.setText(translate('BiblesPlugin.BiblesTab',
|
|
||||||
'Book name language in search field,\nsearch results and on display:'))
|
'Book name language in search field,\nsearch results and on display:'))
|
||||||
self.languageSelectionComboBox.setItemText(LanguageSelection.Bible,
|
self.language_selection_combo_box.setItemText(LanguageSelection.Bible,
|
||||||
translate('BiblesPlugin.BiblesTab', 'Bible Language'))
|
translate('BiblesPlugin.BiblesTab', 'Bible Language'))
|
||||||
self.languageSelectionComboBox.setItemText(LanguageSelection.Application,
|
self.language_selection_combo_box.setItemText(LanguageSelection.Application,
|
||||||
translate('BiblesPlugin.BiblesTab', 'Application Language'))
|
translate('BiblesPlugin.BiblesTab', 'Application Language'))
|
||||||
self.languageSelectionComboBox.setItemText(LanguageSelection.English,
|
self.language_selection_combo_box.setItemText(LanguageSelection.English,
|
||||||
translate('BiblesPlugin.BiblesTab', 'English'))
|
translate('BiblesPlugin.BiblesTab', 'English'))
|
||||||
|
|
||||||
def onBibleThemeComboBoxChanged(self):
|
def on_bible_theme_combo_box_changed(self):
|
||||||
self.bible_theme = self.bibleThemeComboBox.currentText()
|
self.bible_theme = self.bible_theme_combo_box.currentText()
|
||||||
|
|
||||||
def onDisplayStyleComboBoxChanged(self):
|
def on_display_style_combo_box_changed(self):
|
||||||
self.display_style = self.displayStyleComboBox.currentIndex()
|
self.display_style = self.display_style_combo_box.currentIndex()
|
||||||
|
|
||||||
def onLayoutStyleComboBoxChanged(self):
|
def on_layout_style_combo_boxChanged(self):
|
||||||
self.layout_style = self.layoutStyleComboBox.currentIndex()
|
self.layout_style = self.layout_style_combo_box.currentIndex()
|
||||||
|
|
||||||
def onLanguageSelectionComboBoxChanged(self):
|
def on_language_selection_combo_box_changed(self):
|
||||||
self.language_selection = self.languageSelectionComboBox.currentIndex()
|
self.language_selection = self.language_selectioncombo_box.currentIndex()
|
||||||
|
|
||||||
def onNewChaptersCheckBoxChanged(self, check_state):
|
def on_new_chapters_check_box_changed(self, check_state):
|
||||||
self.show_new_chapters = False
|
self.show_new_chapters = False
|
||||||
# We have a set value convert to True/False.
|
# We have a set value convert to True/False.
|
||||||
if check_state == QtCore.Qt.Checked:
|
if check_state == QtCore.Qt.Checked:
|
||||||
self.show_new_chapters = True
|
self.show_new_chapters = True
|
||||||
|
|
||||||
def onBibleSecondCheckBox(self, check_state):
|
def on_bible_second_check_box(self, check_state):
|
||||||
self.second_bibles = False
|
self.second_bibles = False
|
||||||
# We have a set value convert to True/False.
|
# We have a set value convert to True/False.
|
||||||
if check_state == QtCore.Qt.Checked:
|
if check_state == QtCore.Qt.Checked:
|
||||||
self.second_bibles = True
|
self.second_bibles = True
|
||||||
|
|
||||||
def onVerseSeparatorCheckBoxClicked(self, checked):
|
def on_verse_separator_check_box_clicked(self, checked):
|
||||||
if checked:
|
if checked:
|
||||||
self.verseSeparatorLineEdit.setFocus()
|
self.verse_separator_line_edit.setFocus()
|
||||||
else:
|
else:
|
||||||
self.verseSeparatorLineEdit.setText(get_reference_separator(u'sep_v_default'))
|
self.verse_separator_line_edit.setText(get_reference_separator(u'sep_v_default'))
|
||||||
self.verseSeparatorLineEdit.setPalette(self.getGreyTextPalette(not checked))
|
self.verse_separator_line_edit.setPalette(self.getGreyTextPalette(not checked))
|
||||||
|
|
||||||
def onVerseSeparatorLineEditEdited(self, text):
|
def on_verse_separator_line_edit_edited(self, text):
|
||||||
self.verseSeparatorCheckBox.setChecked(True)
|
self.verse_separator_check_box.setChecked(True)
|
||||||
self.verseSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.verse_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
|
|
||||||
def onVerseSeparatorLineEditFinished(self):
|
def on_verse_separator_line_edit_finished(self):
|
||||||
if self.verseSeparatorLineEdit.isModified():
|
if self.verse_separator_line_edit.isModified():
|
||||||
text = self.verseSeparatorLineEdit.text()
|
text = self.verse_separator_line_edit.text()
|
||||||
if text == get_reference_separator(u'sep_v_default') or not text.replace(u'|', u''):
|
if text == get_reference_separator(u'sep_v_default') or not text.replace(u'|', u''):
|
||||||
self.verseSeparatorCheckBox.setChecked(False)
|
self.verse_separator_check_box.setChecked(False)
|
||||||
self.verseSeparatorLineEdit.setText(get_reference_separator(u'sep_v_default'))
|
self.verse_separator_line_edit.setText(get_reference_separator(u'sep_v_default'))
|
||||||
self.verseSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.verse_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
|
|
||||||
def onRangeSeparatorCheckBoxClicked(self, checked):
|
def on_range_separator_check_box_clicked(self, checked):
|
||||||
if checked:
|
if checked:
|
||||||
self.rangeSeparatorLineEdit.setFocus()
|
self.range_separator_line_edit.setFocus()
|
||||||
else:
|
else:
|
||||||
self.rangeSeparatorLineEdit.setText(get_reference_separator(u'sep_r_default'))
|
self.range_separator_line_edit.setText(get_reference_separator(u'sep_r_default'))
|
||||||
self.rangeSeparatorLineEdit.setPalette(self.getGreyTextPalette(not checked))
|
self.range_separator_line_edit.setPalette(self.getGreyTextPalette(not checked))
|
||||||
|
|
||||||
def onRangeSeparatorLineEditEdited(self, text):
|
def on_range_separator_line_edit_edited(self, text):
|
||||||
self.rangeSeparatorCheckBox.setChecked(True)
|
self.range_separator_check_box.setChecked(True)
|
||||||
self.rangeSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.range_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
|
|
||||||
def onRangeSeparatorLineEditFinished(self):
|
def on_range_separator_line_edit_finished(self):
|
||||||
if self.rangeSeparatorLineEdit.isModified():
|
if self.range_separator_line_edit.isModified():
|
||||||
text = self.rangeSeparatorLineEdit.text()
|
text = self.range_separator_line_edit.text()
|
||||||
if text == get_reference_separator(u'sep_r_default') or not text.replace(u'|', u''):
|
if text == get_reference_separator(u'sep_r_default') or not text.replace(u'|', u''):
|
||||||
self.rangeSeparatorCheckBox.setChecked(False)
|
self.range_separator_check_box.setChecked(False)
|
||||||
self.rangeSeparatorLineEdit.setText(get_reference_separator(u'sep_r_default'))
|
self.range_separator_line_edit.setText(get_reference_separator(u'sep_r_default'))
|
||||||
self.rangeSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.range_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
|
|
||||||
def onListSeparatorCheckBoxClicked(self, checked):
|
def on_list_separator_check_box_clicked(self, checked):
|
||||||
if checked:
|
if checked:
|
||||||
self.listSeparatorLineEdit.setFocus()
|
self.list_separator_line_edit.setFocus()
|
||||||
else:
|
else:
|
||||||
self.listSeparatorLineEdit.setText(get_reference_separator(u'sep_l_default'))
|
self.list_separator_line_edit.setText(get_reference_separator(u'sep_l_default'))
|
||||||
self.listSeparatorLineEdit.setPalette(self.getGreyTextPalette(not checked))
|
self.list_separator_line_edit.setPalette(self.getGreyTextPalette(not checked))
|
||||||
|
|
||||||
def onListSeparatorLineEditEdited(self, text):
|
def on_list_separator_line_edit_edited(self, text):
|
||||||
self.listSeparatorCheckBox.setChecked(True)
|
self.list_separator_check_box.setChecked(True)
|
||||||
self.listSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.list_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
|
|
||||||
def onListSeparatorLineEditFinished(self):
|
def on_list_separator_line_edit_finished(self):
|
||||||
if self.listSeparatorLineEdit.isModified():
|
if self.list_separator_line_edit.isModified():
|
||||||
text = self.listSeparatorLineEdit.text()
|
text = self.list_separator_line_edit.text()
|
||||||
if text == get_reference_separator(u'sep_l_default') or not text.replace(u'|', u''):
|
if text == get_reference_separator(u'sep_l_default') or not text.replace(u'|', u''):
|
||||||
self.listSeparatorCheckBox.setChecked(False)
|
self.list_separator_check_box.setChecked(False)
|
||||||
self.listSeparatorLineEdit.setText(get_reference_separator(u'sep_l_default'))
|
self.list_separator_line_edit.setText(get_reference_separator(u'sep_l_default'))
|
||||||
self.listSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.list_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
|
|
||||||
def onEndSeparatorCheckBoxClicked(self, checked):
|
def on_end_separator_check_box_clicked(self, checked):
|
||||||
if checked:
|
if checked:
|
||||||
self.endSeparatorLineEdit.setFocus()
|
self.end_separator_line_edit.setFocus()
|
||||||
else:
|
else:
|
||||||
self.endSeparatorLineEdit.setText(get_reference_separator(u'sep_e_default'))
|
self.end_separator_line_edit.setText(get_reference_separator(u'sep_e_default'))
|
||||||
self.endSeparatorLineEdit.setPalette(self.getGreyTextPalette(not checked))
|
self.end_separator_line_edit.setPalette(self.getGreyTextPalette(not checked))
|
||||||
|
|
||||||
def onEndSeparatorLineEditEdited(self, text):
|
def on_end_separator_line_edit_edited(self, text):
|
||||||
self.endSeparatorCheckBox.setChecked(True)
|
self.end_separator_check_box.setChecked(True)
|
||||||
self.endSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.end_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
|
|
||||||
def onEndSeparatorLineEditFinished(self):
|
def on_end_separator_line_edit_finished(self):
|
||||||
if self.endSeparatorLineEdit.isModified():
|
if self.end_separator_line_edit.isModified():
|
||||||
text = self.endSeparatorLineEdit.text()
|
text = self.end_separator_line_edit.text()
|
||||||
if text == get_reference_separator(u'sep_e_default') or not text.replace(u'|', u''):
|
if text == get_reference_separator(u'sep_e_default') or not text.replace(u'|', u''):
|
||||||
self.endSeparatorCheckBox.setChecked(False)
|
self.end_separator_check_box.setChecked(False)
|
||||||
self.endSeparatorLineEdit.setText(get_reference_separator(u'sep_e_default'))
|
self.end_separator_line_edit.setText(get_reference_separator(u'sep_e_default'))
|
||||||
self.endSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.end_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.show_new_chapters = settings.value(u'display new chapter')
|
self.show_new_chapters = settings.value(u'display new chapter')
|
||||||
self.display_style = settings.value(u'display brackets')
|
self.display_style = settings.value(u'display brackets')
|
||||||
self.layout_style = settings.value(u'verse layout style')
|
self.layout_style = settings.value(u'verse layout style')
|
||||||
self.bible_theme = settings.value(u'bible theme')
|
self.bible_theme = settings.value(u'bible theme')
|
||||||
self.second_bibles = settings.value(u'second bibles')
|
self.second_bibles = settings.value(u'second bibles')
|
||||||
self.newChaptersCheckBox.setChecked(self.show_new_chapters)
|
self.new_chapters_check_box.setChecked(self.show_new_chapters)
|
||||||
self.displayStyleComboBox.setCurrentIndex(self.display_style)
|
self.display_style_combo_box.setCurrentIndex(self.display_style)
|
||||||
self.layoutStyleComboBox.setCurrentIndex(self.layout_style)
|
self.layout_style_combo_box.setCurrentIndex(self.layout_style)
|
||||||
self.bibleSecondCheckBox.setChecked(self.second_bibles)
|
self.bible_second_check_box.setChecked(self.second_bibles)
|
||||||
verse_separator = settings.value(u'verse separator')
|
verse_separator = settings.value(u'verse separator')
|
||||||
if (verse_separator.strip(u'|') == u'') or (verse_separator == get_reference_separator(u'sep_v_default')):
|
if (verse_separator.strip(u'|') == u'') or (verse_separator == get_reference_separator(u'sep_v_default')):
|
||||||
self.verseSeparatorLineEdit.setText(get_reference_separator(u'sep_v_default'))
|
self.verse_separator_line_edit.setText(get_reference_separator(u'sep_v_default'))
|
||||||
self.verseSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.verse_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
self.verseSeparatorCheckBox.setChecked(False)
|
self.verse_separator_check_box.setChecked(False)
|
||||||
else:
|
else:
|
||||||
self.verseSeparatorLineEdit.setText(verse_separator)
|
self.verse_separator_line_edit.setText(verse_separator)
|
||||||
self.verseSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.verse_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
self.verseSeparatorCheckBox.setChecked(True)
|
self.verse_separator_check_box.setChecked(True)
|
||||||
range_separator = settings.value(u'range separator')
|
range_separator = settings.value(u'range separator')
|
||||||
if (range_separator.strip(u'|') == u'') or (range_separator == get_reference_separator(u'sep_r_default')):
|
if (range_separator.strip(u'|') == u'') or (range_separator == get_reference_separator(u'sep_r_default')):
|
||||||
self.rangeSeparatorLineEdit.setText(get_reference_separator(u'sep_r_default'))
|
self.range_separator_line_edit.setText(get_reference_separator(u'sep_r_default'))
|
||||||
self.rangeSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.range_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
self.rangeSeparatorCheckBox.setChecked(False)
|
self.range_separator_check_box.setChecked(False)
|
||||||
else:
|
else:
|
||||||
self.rangeSeparatorLineEdit.setText(range_separator)
|
self.range_separator_line_edit.setText(range_separator)
|
||||||
self.rangeSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.range_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
self.rangeSeparatorCheckBox.setChecked(True)
|
self.range_separator_check_box.setChecked(True)
|
||||||
list_separator = settings.value(u'list separator')
|
list_separator = settings.value(u'list separator')
|
||||||
if (list_separator.strip(u'|') == u'') or (list_separator == get_reference_separator(u'sep_l_default')):
|
if (list_separator.strip(u'|') == u'') or (list_separator == get_reference_separator(u'sep_l_default')):
|
||||||
self.listSeparatorLineEdit.setText(get_reference_separator(u'sep_l_default'))
|
self.list_separator_line_edit.setText(get_reference_separator(u'sep_l_default'))
|
||||||
self.listSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.list_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
self.listSeparatorCheckBox.setChecked(False)
|
self.list_separator_check_box.setChecked(False)
|
||||||
else:
|
else:
|
||||||
self.listSeparatorLineEdit.setText(list_separator)
|
self.list_separator_line_edit.setText(list_separator)
|
||||||
self.listSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.list_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
self.listSeparatorCheckBox.setChecked(True)
|
self.list_separator_check_box.setChecked(True)
|
||||||
end_separator = settings.value(u'end separator')
|
end_separator = settings.value(u'end separator')
|
||||||
if (end_separator.strip(u'|') == u'') or (end_separator == get_reference_separator(u'sep_e_default')):
|
if (end_separator.strip(u'|') == u'') or (end_separator == get_reference_separator(u'sep_e_default')):
|
||||||
self.endSeparatorLineEdit.setText(get_reference_separator(u'sep_e_default'))
|
self.end_separator_line_edit.setText(get_reference_separator(u'sep_e_default'))
|
||||||
self.endSeparatorLineEdit.setPalette(self.getGreyTextPalette(True))
|
self.end_separator_line_edit.setPalette(self.getGreyTextPalette(True))
|
||||||
self.endSeparatorCheckBox.setChecked(False)
|
self.end_separator_check_box.setChecked(False)
|
||||||
else:
|
else:
|
||||||
self.endSeparatorLineEdit.setText(end_separator)
|
self.end_separator_line_edit.setText(end_separator)
|
||||||
self.endSeparatorLineEdit.setPalette(self.getGreyTextPalette(False))
|
self.end_separator_line_edit.setPalette(self.getGreyTextPalette(False))
|
||||||
self.endSeparatorCheckBox.setChecked(True)
|
self.end_separator_check_box.setChecked(True)
|
||||||
self.language_selection = settings.value(u'book name language')
|
self.language_selection = settings.value(u'book name language')
|
||||||
self.languageSelectionComboBox.setCurrentIndex(self.language_selection)
|
self.language_selection_combo_box.setCurrentIndex(self.language_selection)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'display new chapter', self.show_new_chapters)
|
settings.setValue(u'display new chapter', self.show_new_chapters)
|
||||||
settings.setValue(u'display brackets', self.display_style)
|
settings.setValue(u'display brackets', self.display_style)
|
||||||
settings.setValue(u'verse layout style', self.layout_style)
|
settings.setValue(u'verse layout style', self.layout_style)
|
||||||
settings.setValue(u'book name language', self.language_selection)
|
|
||||||
settings.setValue(u'second bibles', self.second_bibles)
|
settings.setValue(u'second bibles', self.second_bibles)
|
||||||
settings.setValue(u'bible theme', self.bible_theme)
|
settings.setValue(u'bible theme', self.bible_theme)
|
||||||
if self.verseSeparatorCheckBox.isChecked():
|
if self.verse_separator_check_box.isChecked():
|
||||||
settings.setValue(u'verse separator', self.verseSeparatorLineEdit.text())
|
settings.setValue(u'verse separator', self.verse_separator_line_edit.text())
|
||||||
else:
|
else:
|
||||||
settings.remove(u'verse separator')
|
settings.remove(u'verse separator')
|
||||||
if self.rangeSeparatorCheckBox.isChecked():
|
if self.range_separator_check_box.isChecked():
|
||||||
settings.setValue(u'range separator', self.rangeSeparatorLineEdit.text())
|
settings.setValue(u'range separator', self.range_separator_line_edit.text())
|
||||||
else:
|
else:
|
||||||
settings.remove(u'range separator')
|
settings.remove(u'range separator')
|
||||||
if self.listSeparatorCheckBox.isChecked():
|
if self.list_separator_check_box.isChecked():
|
||||||
settings.setValue(u'list separator', self.listSeparatorLineEdit.text())
|
settings.setValue(u'list separator', self.list_separator_line_edit.text())
|
||||||
else:
|
else:
|
||||||
settings.remove(u'list separator')
|
settings.remove(u'list separator')
|
||||||
if self.endSeparatorCheckBox.isChecked():
|
if self.end_separator_check_box.isChecked():
|
||||||
settings.setValue(u'end separator', self.endSeparatorLineEdit.text())
|
settings.setValue(u'end separator', self.end_separator_line_edit.text())
|
||||||
else:
|
else:
|
||||||
settings.remove(u'end separator')
|
settings.remove(u'end separator')
|
||||||
update_reference_separators()
|
update_reference_separators()
|
||||||
Registry().execute(u'bibles_load_list')
|
if self.language_selection != settings.value(u'book name language'):
|
||||||
|
settings.setValue(u'book name language', self.language_selection)
|
||||||
|
self.settings_form.register_post_process(u'bibles_load_list')
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
if self.tab_visited:
|
||||||
|
self.settings_form.register_post_process(u'bibles_config_updated')
|
||||||
|
self.tab_visited = False
|
||||||
|
|
||||||
def update_theme_list(self, theme_list):
|
def update_theme_list(self, theme_list):
|
||||||
"""
|
"""
|
||||||
@ -400,10 +390,10 @@ class BiblesTab(SettingsTab):
|
|||||||
|
|
||||||
[u'Bible Theme', u'Song Theme']
|
[u'Bible Theme', u'Song Theme']
|
||||||
"""
|
"""
|
||||||
self.bibleThemeComboBox.clear()
|
self.bible_theme_combo_box.clear()
|
||||||
self.bibleThemeComboBox.addItem(u'')
|
self.bible_theme_combo_box.addItem(u'')
|
||||||
self.bibleThemeComboBox.addItems(theme_list)
|
self.bible_theme_combo_box.addItems(theme_list)
|
||||||
find_and_set_in_combo_box(self.bibleThemeComboBox, self.bible_theme)
|
find_and_set_in_combo_box(self.bible_theme_combo_box, self.bible_theme)
|
||||||
|
|
||||||
def getGreyTextPalette(self, greyed):
|
def getGreyTextPalette(self, greyed):
|
||||||
"""
|
"""
|
||||||
@ -415,4 +405,3 @@ class BiblesTab(SettingsTab):
|
|||||||
color.setAlpha(128)
|
color.setAlpha(128)
|
||||||
palette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Text, color)
|
palette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Text, color)
|
||||||
return palette
|
return palette
|
||||||
|
|
||||||
|
@ -353,8 +353,7 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
book, book_id, language_id)
|
book, book_id, language_id)
|
||||||
return book_id
|
return book_id
|
||||||
|
|
||||||
def get_book_ref_id_by_localised_name(self, book,
|
def get_book_ref_id_by_localised_name(self, book, language_selection):
|
||||||
language_selection):
|
|
||||||
"""
|
"""
|
||||||
Return the id of a named book.
|
Return the id of a named book.
|
||||||
|
|
||||||
@ -362,19 +361,15 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
The name of the book, according to the selected language.
|
The name of the book, according to the selected language.
|
||||||
|
|
||||||
``language_selection``
|
``language_selection``
|
||||||
The language selection the user has chosen in the settings
|
The language selection the user has chosen in the settings section of the Bible.
|
||||||
section of the Bible.
|
|
||||||
"""
|
"""
|
||||||
log.debug(u'get_book_ref_id_by_localised_name("%s", "%s")',
|
log.debug(u'get_book_ref_id_by_localised_name("%s", "%s")', book, language_selection)
|
||||||
book, language_selection)
|
from openlp.plugins.bibles.lib import LanguageSelection, BibleStrings
|
||||||
from openlp.plugins.bibles.lib import LanguageSelection, \
|
|
||||||
BibleStrings
|
|
||||||
book_names = BibleStrings().BookNames
|
book_names = BibleStrings().BookNames
|
||||||
# escape reserved characters
|
# escape reserved characters
|
||||||
book_escaped = book
|
book_escaped = book
|
||||||
for character in RESERVED_CHARACTERS:
|
for character in RESERVED_CHARACTERS:
|
||||||
book_escaped = book_escaped.replace(
|
book_escaped = book_escaped.replace(character, u'\\' + character)
|
||||||
character, u'\\' + character)
|
|
||||||
regex_book = re.compile(u'\s*%s\s*' % u'\s*'.join(
|
regex_book = re.compile(u'\s*%s\s*' % u'\s*'.join(
|
||||||
book_escaped.split()), re.UNICODE | re.IGNORECASE)
|
book_escaped.split()), re.UNICODE | re.IGNORECASE)
|
||||||
if language_selection == LanguageSelection.Bible:
|
if language_selection == LanguageSelection.Bible:
|
||||||
@ -382,8 +377,7 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
if db_book:
|
if db_book:
|
||||||
return db_book.book_reference_id
|
return db_book.book_reference_id
|
||||||
elif language_selection == LanguageSelection.Application:
|
elif language_selection == LanguageSelection.Application:
|
||||||
books = filter(lambda key:
|
books = filter(lambda key: regex_book.match(unicode(book_names[key])), book_names.keys())
|
||||||
regex_book.match(unicode(book_names[key])), book_names.keys())
|
|
||||||
books = filter(None, map(BiblesResourcesDB.get_book, books))
|
books = filter(None, map(BiblesResourcesDB.get_book, books))
|
||||||
for value in books:
|
for value in books:
|
||||||
if self.get_book_by_book_ref_id(value[u'id']):
|
if self.get_book_by_book_ref_id(value[u'id']):
|
||||||
@ -391,8 +385,7 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
elif language_selection == LanguageSelection.English:
|
elif language_selection == LanguageSelection.English:
|
||||||
books = BiblesResourcesDB.get_books_like(book)
|
books = BiblesResourcesDB.get_books_like(book)
|
||||||
if books:
|
if books:
|
||||||
book_list = filter(
|
book_list = filter(lambda value: regex_book.match(value[u'name']), books)
|
||||||
lambda value: regex_book.match(value[u'name']), books)
|
|
||||||
if not book_list:
|
if not book_list:
|
||||||
book_list = books
|
book_list = books
|
||||||
for value in book_list:
|
for value in book_list:
|
||||||
@ -428,12 +421,12 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
log.debug(u'Book name corrected to "%s"', db_book.name)
|
log.debug(u'Book name corrected to "%s"', db_book.name)
|
||||||
if end_verse == -1:
|
if end_verse == -1:
|
||||||
end_verse = self.get_verse_count(book_id, chapter)
|
end_verse = self.get_verse_count(book_id, chapter)
|
||||||
verses = self.session.query(Verse)\
|
verses = self.session.query(Verse) \
|
||||||
.filter_by(book_id=db_book.id)\
|
.filter_by(book_id=db_book.id) \
|
||||||
.filter_by(chapter=chapter)\
|
.filter_by(chapter=chapter) \
|
||||||
.filter(Verse.verse >= start_verse)\
|
.filter(Verse.verse >= start_verse) \
|
||||||
.filter(Verse.verse <= end_verse)\
|
.filter(Verse.verse <= end_verse) \
|
||||||
.order_by(Verse.verse)\
|
.order_by(Verse.verse) \
|
||||||
.all()
|
.all()
|
||||||
verse_list.extend(verses)
|
verse_list.extend(verses)
|
||||||
else:
|
else:
|
||||||
@ -496,9 +489,9 @@ class BibleDB(QtCore.QObject, Manager):
|
|||||||
The chapter to get the verse count for.
|
The chapter to get the verse count for.
|
||||||
"""
|
"""
|
||||||
log.debug(u'BibleDB.get_verse_count("%s", "%s")', book_ref_id, chapter)
|
log.debug(u'BibleDB.get_verse_count("%s", "%s")', book_ref_id, chapter)
|
||||||
count = self.session.query(func.max(Verse.verse)).join(Book)\
|
count = self.session.query(func.max(Verse.verse)).join(Book) \
|
||||||
.filter(Book.book_reference_id==book_ref_id)\
|
.filter(Book.book_reference_id == book_ref_id) \
|
||||||
.filter(Verse.chapter==chapter)\
|
.filter(Verse.chapter == chapter) \
|
||||||
.scalar()
|
.scalar()
|
||||||
if not count:
|
if not count:
|
||||||
return 0
|
return 0
|
||||||
|
@ -44,6 +44,7 @@ from openlp.plugins.bibles.lib.db import BiblesResourcesDB
|
|||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class BibleSearch(object):
|
class BibleSearch(object):
|
||||||
"""
|
"""
|
||||||
Enumeration class for the different search methods for the "quick search".
|
Enumeration class for the different search methods for the "quick search".
|
||||||
@ -71,7 +72,6 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
self.second_search_results = {}
|
self.second_search_results = {}
|
||||||
self.checkSearchResult()
|
self.checkSearchResult()
|
||||||
Registry().register_function(u'bibles_load_list', self.reload_bibles)
|
Registry().register_function(u'bibles_load_list', self.reload_bibles)
|
||||||
Registry().register_function(u'config_updated', self.config_update)
|
|
||||||
|
|
||||||
def __checkSecondBible(self, bible, second_bible):
|
def __checkSecondBible(self, bible, second_bible):
|
||||||
"""
|
"""
|
||||||
|
@ -37,6 +37,7 @@ from sqlalchemy import Table, func, select, insert
|
|||||||
__version__ = 1
|
__version__ = 1
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def upgrade_setup(metadata):
|
def upgrade_setup(metadata):
|
||||||
"""
|
"""
|
||||||
Set up the latest revision all tables, with reflection, needed for the
|
Set up the latest revision all tables, with reflection, needed for the
|
||||||
@ -56,7 +57,7 @@ def upgrade_1(session, metadata, tables):
|
|||||||
"""
|
"""
|
||||||
Version 1 upgrade.
|
Version 1 upgrade.
|
||||||
|
|
||||||
This upgrade renames a number of keys to a single naming convention..
|
This upgrade renames a number of keys to a single naming convention.
|
||||||
"""
|
"""
|
||||||
metadata_table = metadata.tables[u'metadata']
|
metadata_table = metadata.tables[u'metadata']
|
||||||
# Copy "Version" to "name" ("version" used by upgrade system)
|
# Copy "Version" to "name" ("version" used by upgrade system)
|
||||||
|
@ -46,7 +46,7 @@ __default_settings__ = {
|
|||||||
u'custom/last search type': CustomSearch.Titles,
|
u'custom/last search type': CustomSearch.Titles,
|
||||||
u'custom/display footer': True,
|
u'custom/display footer': True,
|
||||||
u'custom/add custom from service': True
|
u'custom/add custom from service': True
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class CustomPlugin(Plugin):
|
class CustomPlugin(Plugin):
|
||||||
|
@ -35,6 +35,7 @@ from PyQt4 import QtCore, QtGui
|
|||||||
|
|
||||||
from openlp.core.lib import SettingsTab, Settings, translate
|
from openlp.core.lib import SettingsTab, Settings, translate
|
||||||
|
|
||||||
|
|
||||||
class CustomTab(SettingsTab):
|
class CustomTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
CustomTab is the Custom settings tab in the settings dialog.
|
CustomTab is the Custom settings tab in the settings dialog.
|
||||||
@ -45,7 +46,7 @@ class CustomTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'CustomTab')
|
self.setObjectName(u'CustomTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.custom_mode_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.custom_mode_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.custom_mode_group_box.setObjectName(u'custom_mode_group_box')
|
self.custom_mode_group_box.setObjectName(u'custom_mode_group_box')
|
||||||
self.custom_mode_layout = QtGui.QFormLayout(self.custom_mode_group_box)
|
self.custom_mode_layout = QtGui.QFormLayout(self.custom_mode_group_box)
|
||||||
self.custom_mode_layout.setObjectName(u'custom_mode_layout')
|
self.custom_mode_layout.setObjectName(u'custom_mode_layout')
|
||||||
@ -55,9 +56,9 @@ class CustomTab(SettingsTab):
|
|||||||
self.add_from_service_checkbox = QtGui.QCheckBox(self.custom_mode_group_box)
|
self.add_from_service_checkbox = QtGui.QCheckBox(self.custom_mode_group_box)
|
||||||
self.add_from_service_checkbox.setObjectName(u'add_from_service_checkbox')
|
self.add_from_service_checkbox.setObjectName(u'add_from_service_checkbox')
|
||||||
self.custom_mode_layout.addRow(self.add_from_service_checkbox)
|
self.custom_mode_layout.addRow(self.add_from_service_checkbox)
|
||||||
self.leftLayout.addWidget(self.custom_mode_group_box)
|
self.left_layout.addWidget(self.custom_mode_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.display_footer_check_box.stateChanged.connect(self.on_display_footer_check_box_changed)
|
self.display_footer_check_box.stateChanged.connect(self.on_display_footer_check_box_changed)
|
||||||
self.add_from_service_checkbox.stateChanged.connect(self.on_add_from_service_check_box_changed)
|
self.add_from_service_checkbox.stateChanged.connect(self.on_add_from_service_check_box_changed)
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ class CustomTab(SettingsTab):
|
|||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.display_footer = settings.value(u'display footer')
|
self.display_footer = settings.value(u'display footer')
|
||||||
self.update_load = settings.value(u'add custom from service')
|
self.update_load = settings.value(u'add custom from service')
|
||||||
self.display_footer_check_box.setChecked(self.display_footer)
|
self.display_footer_check_box.setChecked(self.display_footer)
|
||||||
@ -90,7 +91,10 @@ class CustomTab(SettingsTab):
|
|||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'display footer', self.display_footer)
|
settings.setValue(u'display footer', self.display_footer)
|
||||||
settings.setValue(u'add custom from service', self.update_load)
|
settings.setValue(u'add custom from service', self.update_load)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
if self.tab_visited:
|
||||||
|
self.settings_form.register_post_process(u'custom_config_updated')
|
||||||
|
self.tab_visited = False
|
@ -75,10 +75,13 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
self.onSearchTextButtonClicked)
|
self.onSearchTextButtonClicked)
|
||||||
Registry().register_function(u'custom_load_list', self.loadList)
|
Registry().register_function(u'custom_load_list', self.loadList)
|
||||||
Registry().register_function(u'custom_preview', self.onPreviewClick)
|
Registry().register_function(u'custom_preview', self.onPreviewClick)
|
||||||
Registry().register_function(u'config_updated', self.config_updated)
|
|
||||||
Registry().register_function(u'custom_create_from_service', self.create_from_service_item)
|
Registry().register_function(u'custom_create_from_service', self.create_from_service_item)
|
||||||
|
|
||||||
def config_updated(self):
|
def config_update(self):
|
||||||
|
"""
|
||||||
|
Config has been updated so reload values
|
||||||
|
"""
|
||||||
|
log.debug(u'Config loaded')
|
||||||
self.add_custom_from_service = Settings().value(self.settingsSection + u'/add custom from service')
|
self.add_custom_from_service = Settings().value(self.settingsSection + u'/add custom from service')
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
@ -92,9 +95,9 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
translate('SongsPlugin.MediaItem', 'Search Titles...')),
|
translate('SongsPlugin.MediaItem', 'Search Titles...')),
|
||||||
(CustomSearch.Themes, u':/slides/slide_theme.png', UiStrings().Themes, UiStrings().SearchThemes)
|
(CustomSearch.Themes, u':/slides/slide_theme.png', UiStrings().Themes, UiStrings().SearchThemes)
|
||||||
])
|
])
|
||||||
|
self.searchTextEdit.set_current_search_type(Settings().value(u'%s/last search type' % self.settingsSection))
|
||||||
self.loadList(self.manager.get_all_objects(CustomSlide, order_by_ref=CustomSlide.title))
|
self.loadList(self.manager.get_all_objects(CustomSlide, order_by_ref=CustomSlide.title))
|
||||||
self.searchTextEdit.set_current_search_type(Settings().value( u'%s/last search type' % self.settingsSection))
|
self.config_update()
|
||||||
self.config_updated()
|
|
||||||
|
|
||||||
def loadList(self, custom_slides):
|
def loadList(self, custom_slides):
|
||||||
# Sort out what custom we want to select after loading the list.
|
# Sort out what custom we want to select after loading the list.
|
||||||
|
@ -49,7 +49,6 @@ class ImagePlugin(Plugin):
|
|||||||
self.weight = -7
|
self.weight = -7
|
||||||
self.iconPath = u':/plugins/plugin_images.png'
|
self.iconPath = u':/plugins/plugin_images.png'
|
||||||
self.icon = build_icon(self.iconPath)
|
self.icon = build_icon(self.iconPath)
|
||||||
Registry().execute(u'image_updated', self.image_updated)
|
|
||||||
|
|
||||||
def about(self):
|
def about(self):
|
||||||
about_text = translate('ImagePlugin', '<strong>Image Plugin</strong>'
|
about_text = translate('ImagePlugin', '<strong>Image Plugin</strong>'
|
||||||
@ -90,12 +89,12 @@ class ImagePlugin(Plugin):
|
|||||||
}
|
}
|
||||||
self.setPluginUiTextStrings(tooltips)
|
self.setPluginUiTextStrings(tooltips)
|
||||||
|
|
||||||
def image_updated(self):
|
def config_update(self):
|
||||||
"""
|
"""
|
||||||
Triggered by saving and changing the image border. Sets the images in
|
Triggered by saving and changing the image border. Sets the images in image manager to require updates.
|
||||||
image manager to require updates. Actual update is triggered by the
|
Actual update is triggered by the last part of saving the config.
|
||||||
last part of saving the config.
|
|
||||||
"""
|
"""
|
||||||
|
log.info(u'Images config_update')
|
||||||
background = QtGui.QColor(Settings().value(self.settingsSection + u'/background color'))
|
background = QtGui.QColor(Settings().value(self.settingsSection + u'/background color'))
|
||||||
self.image_manager.update_images_border(ImageSource.ImagePlugin, background)
|
self.image_manager.update_images_border(ImageSource.ImagePlugin, background)
|
||||||
|
|
||||||
|
@ -27,9 +27,10 @@
|
|||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
|
from openlp.core.lib import Registry, SettingsTab, Settings, UiStrings, translate
|
||||||
|
|
||||||
from openlp.core.lib import SettingsTab, Registry, Settings, UiStrings, translate
|
|
||||||
|
|
||||||
class ImageTab(SettingsTab):
|
class ImageTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
@ -41,54 +42,53 @@ class ImageTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'ImagesTab')
|
self.setObjectName(u'ImagesTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.bgColorGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.background_color_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.bgColorGroupBox.setObjectName(u'FontGroupBox')
|
self.background_color_group_box.setObjectName(u'background_color_group_box')
|
||||||
self.formLayout = QtGui.QFormLayout(self.bgColorGroupBox)
|
self.form_layout = QtGui.QFormLayout(self.background_color_group_box)
|
||||||
self.formLayout.setObjectName(u'FormLayout')
|
self.form_layout.setObjectName(u'form_layout')
|
||||||
self.colorLayout = QtGui.QHBoxLayout()
|
self.color_layout = QtGui.QHBoxLayout()
|
||||||
self.backgroundColorLabel = QtGui.QLabel(self.bgColorGroupBox)
|
self.background_color_label = QtGui.QLabel(self.background_color_group_box)
|
||||||
self.backgroundColorLabel.setObjectName(u'BackgroundColorLabel')
|
self.background_color_label.setObjectName(u'background_color_label')
|
||||||
self.colorLayout.addWidget(self.backgroundColorLabel)
|
self.color_layout.addWidget(self.background_color_label)
|
||||||
self.backgroundColorButton = QtGui.QPushButton(self.bgColorGroupBox)
|
self.background_color_button = QtGui.QPushButton(self.background_color_group_box)
|
||||||
self.backgroundColorButton.setObjectName(u'BackgroundColorButton')
|
self.background_color_button.setObjectName(u'background_color_button')
|
||||||
self.colorLayout.addWidget(self.backgroundColorButton)
|
self.color_layout.addWidget(self.background_color_button)
|
||||||
self.formLayout.addRow(self.colorLayout)
|
self.form_layout.addRow(self.color_layout)
|
||||||
self.information_label = QtGui.QLabel(self.bgColorGroupBox)
|
self.information_label = QtGui.QLabel(self.background_color_group_box)
|
||||||
self.information_label.setObjectName(u'information_label')
|
self.information_label.setObjectName(u'information_label')
|
||||||
self.information_label.setWordWrap(True)
|
self.information_label.setWordWrap(True)
|
||||||
self.formLayout.addRow(self.information_label)
|
self.form_layout.addRow(self.information_label)
|
||||||
self.leftLayout.addWidget(self.bgColorGroupBox)
|
self.left_layout.addWidget(self.background_color_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightColumn.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
self.right_column.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
self.backgroundColorButton.clicked.connect(self.onbackgroundColorButtonClicked)
|
self.background_color_button.clicked.connect(self.on_background_color_button_clicked)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.bgColorGroupBox.setTitle(UiStrings().BackgroundColor)
|
self.background_color_group_box.setTitle(UiStrings().BackgroundColor)
|
||||||
self.backgroundColorLabel.setText(UiStrings().DefaultColor)
|
self.background_color_label.setText(UiStrings().DefaultColor)
|
||||||
self.information_label.setText(
|
self.information_label.setText(
|
||||||
translate('ImagesPlugin.ImageTab', 'Visible background for images with aspect ratio different to screen.'))
|
translate('ImagesPlugin.ImageTab', 'Visible background for images with aspect ratio different to screen.'))
|
||||||
|
|
||||||
def onbackgroundColorButtonClicked(self):
|
def on_background_color_button_clicked(self):
|
||||||
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.bg_color), self)
|
new_color = QtGui.QColorDialog.getColor(QtGui.QColor(self.background_color), self)
|
||||||
if new_color.isValid():
|
if new_color.isValid():
|
||||||
self.bg_color = new_color.name()
|
self.background_color = new_color.name()
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.bg_color = settings.value(u'background color')
|
self.background_color = settings.value(u'background color')
|
||||||
self.initial_color = self.bg_color
|
self.initial_color = self.background_color
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.backgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
|
self.background_color_button.setStyleSheet(u'background-color: %s' % self.background_color)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'background color', self.bg_color)
|
settings.setValue(u'background color', self.background_color)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
if self.initial_color != self.bg_color:
|
if self.initial_color != self.background_color:
|
||||||
Registry().execute(u'image_updated')
|
self.settings_form.register_post_process(u'images_config_updated')
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
row_list = [item.row() for item in self.listView.selectedIndexes()]
|
row_list = [item.row() for item in self.listView.selectedIndexes()]
|
||||||
row_list.sort(reverse=True)
|
row_list.sort(reverse=True)
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
self.main_window.displayProgressBar(len(row_list))
|
self.main_window.display_progress_bar(len(row_list))
|
||||||
for row in row_list:
|
for row in row_list:
|
||||||
text = self.listView.item(row)
|
text = self.listView.item(row)
|
||||||
if text:
|
if text:
|
||||||
@ -107,14 +107,14 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
self.listView.takeItem(row)
|
self.listView.takeItem(row)
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
Settings.setValue(self.settingsSection + u'/images files', self.getFileList())
|
Settings.setValue(self.settingsSection + u'/images files', self.getFileList())
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
self.listView.blockSignals(False)
|
self.listView.blockSignals(False)
|
||||||
|
|
||||||
def loadList(self, images, initialLoad=False):
|
def loadList(self, images, initialLoad=False):
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
if not initialLoad:
|
if not initialLoad:
|
||||||
self.main_window.displayProgressBar(len(images))
|
self.main_window.display_progress_bar(len(images))
|
||||||
# Sort the images by its filename considering language specific
|
# Sort the images by its filename considering language specific
|
||||||
# characters.
|
# characters.
|
||||||
images.sort(cmp=locale_compare, key=lambda filename: os.path.split(unicode(filename))[1])
|
images.sort(cmp=locale_compare, key=lambda filename: os.path.split(unicode(filename))[1])
|
||||||
@ -136,7 +136,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
if not initialLoad:
|
if not initialLoad:
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
if not initialLoad:
|
if not initialLoad:
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
|
|
||||||
def generateSlideData(self, service_item, item=None, xmlVersion=False,
|
def generateSlideData(self, service_item, item=None, xmlVersion=False,
|
||||||
|
@ -29,11 +29,12 @@
|
|||||||
|
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Registry, Settings, SettingsTab, UiStrings, translate
|
from openlp.core.lib import Settings, SettingsTab, UiStrings, translate
|
||||||
|
|
||||||
class MediaQCheckBox(QtGui.QCheckBox):
|
|
||||||
|
class MediaQ_check_box(QtGui.QCheckBox):
|
||||||
"""
|
"""
|
||||||
MediaQCheckBox adds an extra property, playerName to the QCheckBox class.
|
MediaQ_check_box adds an extra property, playerName to the Q_check_box class.
|
||||||
"""
|
"""
|
||||||
def setPlayerName(self, name):
|
def setPlayerName(self, name):
|
||||||
self.playerName = name
|
self.playerName = name
|
||||||
@ -50,39 +51,36 @@ class MediaTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'MediaTab')
|
self.setObjectName(u'MediaTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.advancedGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.advanced_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.advancedGroupBox.setObjectName(u'advancedGroupBox')
|
self.advanced_group_box.setObjectName(u'advanced_group_box')
|
||||||
self.advancedLayout = QtGui.QVBoxLayout(self.advancedGroupBox)
|
self.advanced_layout = QtGui.QVBoxLayout(self.advanced_group_box)
|
||||||
self.advancedLayout.setObjectName(u'advancedLayout')
|
self.advanced_layout.setObjectName(u'advanced_layout')
|
||||||
self.overridePlayerCheckBox = QtGui.QCheckBox(self.advancedGroupBox)
|
self.override_player_check_box = QtGui.QCheckBox(self.advanced_group_box)
|
||||||
self.overridePlayerCheckBox.setObjectName(u'overridePlayerCheckBox')
|
self.override_player_check_box.setObjectName(u'override_player_check_box')
|
||||||
self.advancedLayout.addWidget(self.overridePlayerCheckBox)
|
self.advanced_layout.addWidget(self.override_player_check_box)
|
||||||
self.autoStartCheckBox = QtGui.QCheckBox(self.advancedGroupBox)
|
self.auto_start_check_box = QtGui.QCheckBox(self.advanced_group_box)
|
||||||
self.autoStartCheckBox.setObjectName(u'autoStartCheckBox')
|
self.auto_start_check_box.setObjectName(u'auto_start_check_box')
|
||||||
self.advancedLayout.addWidget(self.autoStartCheckBox)
|
self.advanced_layout.addWidget(self.auto_start_check_box)
|
||||||
self.leftLayout.addWidget(self.advancedGroupBox)
|
self.left_layout.addWidget(self.advanced_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.advancedGroupBox.setTitle(UiStrings().Advanced)
|
self.advanced_group_box.setTitle(UiStrings().Advanced)
|
||||||
self.overridePlayerCheckBox.setText(translate('MediaPlugin.MediaTab', 'Allow media player to be overridden'))
|
self.override_player_check_box.setText(translate('MediaPlugin.MediaTab', 'Allow media player to be overridden'))
|
||||||
self.autoStartCheckBox.setText(translate('MediaPlugin.MediaTab', 'Start Live items automatically'))
|
self.auto_start_check_box.setText(translate('MediaPlugin.MediaTab', 'Start Live items automatically'))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
self.overridePlayerCheckBox.setChecked(Settings().value(self.settingsSection + u'/override player'))
|
self.override_player_check_box.setChecked(Settings().value(self.settings_section + u'/override player'))
|
||||||
self.autoStartCheckBox.setChecked(Settings().value(self.settingsSection + u'/media auto start'))
|
self.auto_start_check_box.setChecked(Settings().value(self.settings_section + u'/media auto start'))
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
override_changed = False
|
setting_key = self.settings_section + u'/override player'
|
||||||
setting_key = self.settingsSection + u'/override player'
|
if Settings().value(setting_key) != self.override_player_check_box.checkState():
|
||||||
if Settings().value(setting_key) != self.overridePlayerCheckBox.checkState():
|
Settings().setValue(setting_key, self.override_player_check_box.checkState())
|
||||||
Settings().setValue(setting_key, self.overridePlayerCheckBox.checkState())
|
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||||
override_changed = True
|
self.settings_form.register_post_process(u'mediaitem_media_rebuild')
|
||||||
setting_key = self.settingsSection + u'/media auto start'
|
self.settings_form.register_post_process(u'mediaitem_suffixes')
|
||||||
if Settings().value(setting_key) != self.autoStartCheckBox.checkState():
|
setting_key = self.settings_section + u'/media auto start'
|
||||||
Settings().setValue(setting_key, self.autoStartCheckBox.checkState())
|
if Settings().value(setting_key) != self.auto_start_check_box.checkState():
|
||||||
if override_changed:
|
Settings().setValue(setting_key, self.auto_start_check_box.checkState())
|
||||||
self.parent.reset_supported_suffixes()
|
|
||||||
Registry().execute(u'mediaitem_media_rebuild')
|
|
||||||
Registry().execute(u'mediaitem_suffixes')
|
|
||||||
|
@ -151,7 +151,7 @@ class PresentationMediaItem(MediaManagerItem):
|
|||||||
titles = [os.path.split(file)[1] for file in currlist]
|
titles = [os.path.split(file)[1] for file in currlist]
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
if not initialLoad:
|
if not initialLoad:
|
||||||
self.main_window.displayProgressBar(len(files))
|
self.main_window.display_progress_bar(len(files))
|
||||||
# Sort the presentations by its filename considering language specific characters.
|
# Sort the presentations by its filename considering language specific characters.
|
||||||
files.sort(cmp=locale_compare,
|
files.sort(cmp=locale_compare,
|
||||||
key=lambda filename: os.path.split(unicode(filename))[1])
|
key=lambda filename: os.path.split(unicode(filename))[1])
|
||||||
@ -205,7 +205,7 @@ class PresentationMediaItem(MediaManagerItem):
|
|||||||
item_name.setToolTip(file)
|
item_name.setToolTip(file)
|
||||||
self.listView.addItem(item_name)
|
self.listView.addItem(item_name)
|
||||||
if not initialLoad:
|
if not initialLoad:
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
|
|
||||||
def onDeleteClick(self):
|
def onDeleteClick(self):
|
||||||
@ -217,7 +217,7 @@ class PresentationMediaItem(MediaManagerItem):
|
|||||||
row_list = [item.row() for item in items]
|
row_list = [item.row() for item in items]
|
||||||
row_list.sort(reverse=True)
|
row_list.sort(reverse=True)
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
self.main_window.displayProgressBar(len(row_list))
|
self.main_window.display_progress_bar(len(row_list))
|
||||||
for item in items:
|
for item in items:
|
||||||
filepath = unicode(item.data(QtCore.Qt.UserRole))
|
filepath = unicode(item.data(QtCore.Qt.UserRole))
|
||||||
for cidx in self.controllers:
|
for cidx in self.controllers:
|
||||||
@ -225,7 +225,7 @@ class PresentationMediaItem(MediaManagerItem):
|
|||||||
doc.presentation_deleted()
|
doc.presentation_deleted()
|
||||||
doc.close_presentation()
|
doc.close_presentation()
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
for row in row_list:
|
for row in row_list:
|
||||||
self.listView.takeItem(row)
|
self.listView.takeItem(row)
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
|
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Registry, Settings, SettingsTab, UiStrings, translate
|
from openlp.core.lib import Settings, SettingsTab, UiStrings, translate
|
||||||
|
|
||||||
|
|
||||||
class PresentationTab(SettingsTab):
|
class PresentationTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
@ -50,43 +51,43 @@ class PresentationTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'PresentationTab')
|
self.setObjectName(u'PresentationTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.ControllersGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.controllers_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.ControllersGroupBox.setObjectName(u'ControllersGroupBox')
|
self.controllers_group_box.setObjectName(u'controllers_group_box')
|
||||||
self.ControllersLayout = QtGui.QVBoxLayout(self.ControllersGroupBox)
|
self.controllers_layout = QtGui.QVBoxLayout(self.controllers_group_box)
|
||||||
self.ControllersLayout.setObjectName(u'ControllersLayout')
|
self.controllers_layout.setObjectName(u'ccontrollers_layout')
|
||||||
self.PresenterCheckboxes = {}
|
self.presenter_check_boxes = {}
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = QtGui.QCheckBox(self.ControllersGroupBox)
|
checkbox = QtGui.QCheckBox(self.controllers_group_box)
|
||||||
checkbox.setObjectName(controller.name + u'CheckBox')
|
checkbox.setObjectName(controller.name + u'CheckBox')
|
||||||
self.PresenterCheckboxes[controller.name] = checkbox
|
self.presenter_check_boxes[controller.name] = checkbox
|
||||||
self.ControllersLayout.addWidget(checkbox)
|
self.controllers_layout.addWidget(checkbox)
|
||||||
self.leftLayout.addWidget(self.ControllersGroupBox)
|
self.left_layout.addWidget(self.controllers_group_box)
|
||||||
self.AdvancedGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.advanced_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.AdvancedGroupBox.setObjectName(u'AdvancedGroupBox')
|
self.advanced_group_box.setObjectName(u'advanced_group_box')
|
||||||
self.AdvancedLayout = QtGui.QVBoxLayout(self.AdvancedGroupBox)
|
self.advanced_layout = QtGui.QVBoxLayout(self.advanced_group_box)
|
||||||
self.AdvancedLayout.setObjectName(u'AdvancedLayout')
|
self.advanced_layout.setObjectName(u'advanced_layout')
|
||||||
self.OverrideAppCheckBox = QtGui.QCheckBox(self.AdvancedGroupBox)
|
self.override_app_check_box = QtGui.QCheckBox(self.advanced_group_box)
|
||||||
self.OverrideAppCheckBox.setObjectName(u'OverrideAppCheckBox')
|
self.override_app_check_box.setObjectName(u'override_app_check_box')
|
||||||
self.AdvancedLayout.addWidget(self.OverrideAppCheckBox)
|
self.advanced_layout.addWidget(self.override_app_check_box)
|
||||||
self.leftLayout.addWidget(self.AdvancedGroupBox)
|
self.left_layout.addWidget(self.advanced_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
"""
|
"""
|
||||||
Make any translation changes
|
Make any translation changes
|
||||||
"""
|
"""
|
||||||
self.ControllersGroupBox.setTitle(translate('PresentationPlugin.PresentationTab', 'Available Controllers'))
|
self.controllers_group_box.setTitle(translate('PresentationPlugin.PresentationTab', 'Available Controllers'))
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.presenter_check_boxes[controller.name]
|
||||||
self.setControllerText(checkbox, controller)
|
self.set_controller_text(checkbox, controller)
|
||||||
self.AdvancedGroupBox.setTitle(UiStrings().Advanced)
|
self.advanced_group_box.setTitle(UiStrings().Advanced)
|
||||||
self.OverrideAppCheckBox.setText(
|
self.override_app_check_box.setText(
|
||||||
translate('PresentationPlugin.PresentationTab', 'Allow presentation application to be overridden'))
|
translate('PresentationPlugin.PresentationTab', 'Allow presentation application to be overridden'))
|
||||||
|
|
||||||
def setControllerText(self, checkbox, controller):
|
def set_controller_text(self, checkbox, controller):
|
||||||
if checkbox.isEnabled():
|
if checkbox.isEnabled():
|
||||||
checkbox.setText(controller.name)
|
checkbox.setText(controller.name)
|
||||||
else:
|
else:
|
||||||
@ -99,15 +100,14 @@ class PresentationTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.presenter_check_boxes[controller.name]
|
||||||
checkbox.setChecked(Settings().value(self.settingsSection + u'/' + controller.name))
|
checkbox.setChecked(Settings().value(self.settings_section + u'/' + controller.name))
|
||||||
self.OverrideAppCheckBox.setChecked(Settings().value(self.settingsSection + u'/override app'))
|
self.override_app_check_box.setChecked(Settings().value(self.settings_section + u'/override app'))
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Save the settings. If the tab hasn't been made visible to the user
|
Save the settings. If the tab hasn't been made visible to the user then there is nothing to do,
|
||||||
then there is nothing to do, so exit. This removes the need to
|
so exit. This removes the need to start presentation applications unnecessarily.
|
||||||
start presentation applications unnecessarily.
|
|
||||||
"""
|
"""
|
||||||
if not self.activated:
|
if not self.activated:
|
||||||
return
|
return
|
||||||
@ -115,8 +115,8 @@ class PresentationTab(SettingsTab):
|
|||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
if controller.is_available():
|
if controller.is_available():
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.presenter_check_boxes[controller.name]
|
||||||
setting_key = self.settingsSection + u'/' + controller.name
|
setting_key = self.settings_section + u'/' + controller.name
|
||||||
if Settings().value(setting_key) != checkbox.checkState():
|
if Settings().value(setting_key) != checkbox.checkState():
|
||||||
changed = True
|
changed = True
|
||||||
Settings().setValue(setting_key, checkbox.checkState())
|
Settings().setValue(setting_key, checkbox.checkState())
|
||||||
@ -124,22 +124,22 @@ class PresentationTab(SettingsTab):
|
|||||||
controller.start_process()
|
controller.start_process()
|
||||||
else:
|
else:
|
||||||
controller.kill()
|
controller.kill()
|
||||||
setting_key = self.settingsSection + u'/override app'
|
setting_key = self.settings_section + u'/override app'
|
||||||
if Settings().value(setting_key) != self.OverrideAppCheckBox.checkState():
|
if Settings().value(setting_key) != self.override_app_check_box.checkState():
|
||||||
Settings().setValue(setting_key, self.OverrideAppCheckBox.checkState())
|
Settings().setValue(setting_key, self.override_app_check_box.checkState())
|
||||||
changed = True
|
changed = True
|
||||||
if changed:
|
if changed:
|
||||||
self.parent.reset_supported_suffixes()
|
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||||
Registry().execute(u'mediaitem_presentation_rebuild')
|
self.settings_form.register_post_process(u'mediaitem_presentation_rebuild')
|
||||||
Registry().execute(u'mediaitem_suffixes')
|
self.settings_form.register_post_process(u'mediaitem_suffixes')
|
||||||
|
|
||||||
def tabVisible(self):
|
def tab_visible(self):
|
||||||
"""
|
"""
|
||||||
Tab has just been made visible to the user
|
Tab has just been made visible to the user
|
||||||
"""
|
"""
|
||||||
self.activated = True
|
self.activated = True
|
||||||
for key in self.controllers:
|
for key in self.controllers:
|
||||||
controller = self.controllers[key]
|
controller = self.controllers[key]
|
||||||
checkbox = self.PresenterCheckboxes[controller.name]
|
checkbox = self.presenter_check_boxes[controller.name]
|
||||||
checkbox.setEnabled(controller.is_available())
|
checkbox.setEnabled(controller.is_available())
|
||||||
self.setControllerText(checkbox, controller)
|
self.set_controller_text(checkbox, controller)
|
||||||
|
@ -110,7 +110,7 @@ class PresentationPlugin(Plugin):
|
|||||||
Create the Media Manager List
|
Create the Media Manager List
|
||||||
"""
|
"""
|
||||||
self.mediaItem = PresentationMediaItem(
|
self.mediaItem = PresentationMediaItem(
|
||||||
self.main_window.mediaDockManager.media_dock, self, self.icon, self.controllers)
|
self.main_window.media_dock_manager.media_dock, self, self.icon, self.controllers)
|
||||||
|
|
||||||
def registerControllers(self, controller):
|
def registerControllers(self, controller):
|
||||||
"""
|
"""
|
||||||
@ -132,13 +132,12 @@ class PresentationPlugin(Plugin):
|
|||||||
if filename.endswith(u'controller.py') and not filename == 'presentationcontroller.py':
|
if filename.endswith(u'controller.py') and not filename == 'presentationcontroller.py':
|
||||||
path = os.path.join(controller_dir, filename)
|
path = os.path.join(controller_dir, filename)
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
modulename = u'openlp.plugins.presentations.lib.' + os.path.splitext(filename)[0]
|
module_name = u'openlp.plugins.presentations.lib.' + os.path.splitext(filename)[0]
|
||||||
log.debug(u'Importing controller %s', modulename)
|
log.debug(u'Importing controller %s', module_name)
|
||||||
try:
|
try:
|
||||||
__import__(modulename, globals(), locals(), [])
|
__import__(module_name, globals(), locals(), [])
|
||||||
except ImportError:
|
except ImportError:
|
||||||
log.warn(u'Failed to import %s on path %s',
|
log.warn(u'Failed to import %s on path %s', module_name, path)
|
||||||
modulename, path)
|
|
||||||
controller_classes = PresentationController.__subclasses__()
|
controller_classes = PresentationController.__subclasses__()
|
||||||
for controller_class in controller_classes:
|
for controller_class in controller_classes:
|
||||||
controller = controller_class(self)
|
controller = controller_class(self)
|
||||||
|
@ -162,8 +162,6 @@ class HttpServer(object):
|
|||||||
self.plugin = plugin
|
self.plugin = plugin
|
||||||
self.html_dir = os.path.join(AppLocation.get_directory(AppLocation.PluginsDir), u'remotes', u'html')
|
self.html_dir = os.path.join(AppLocation.get_directory(AppLocation.PluginsDir), u'remotes', u'html')
|
||||||
self.connections = []
|
self.connections = []
|
||||||
self.current_item = None
|
|
||||||
self.current_slide = None
|
|
||||||
self.start_tcp()
|
self.start_tcp()
|
||||||
|
|
||||||
def start_tcp(self):
|
def start_tcp(self):
|
||||||
@ -177,23 +175,9 @@ class HttpServer(object):
|
|||||||
address = Settings().value(self.plugin.settingsSection + u'/ip address')
|
address = Settings().value(self.plugin.settingsSection + u'/ip address')
|
||||||
self.server = QtNetwork.QTcpServer()
|
self.server = QtNetwork.QTcpServer()
|
||||||
self.server.listen(QtNetwork.QHostAddress(address), port)
|
self.server.listen(QtNetwork.QHostAddress(address), port)
|
||||||
Registry().register_function(u'slidecontroller_live_changed', self.slide_change)
|
|
||||||
Registry().register_function(u'slidecontroller_live_started', self.item_change)
|
|
||||||
self.server.newConnection.connect(self.new_connection)
|
self.server.newConnection.connect(self.new_connection)
|
||||||
log.debug(u'TCP listening on port %d' % port)
|
log.debug(u'TCP listening on port %d' % port)
|
||||||
|
|
||||||
def slide_change(self, row):
|
|
||||||
"""
|
|
||||||
Slide change listener. Store the item and tell the clients.
|
|
||||||
"""
|
|
||||||
self.current_slide = row
|
|
||||||
|
|
||||||
def item_change(self, items):
|
|
||||||
"""
|
|
||||||
Item (song) change listener. Store the slide and tell the clients.
|
|
||||||
"""
|
|
||||||
self.current_item = items[0]
|
|
||||||
|
|
||||||
def new_connection(self):
|
def new_connection(self):
|
||||||
"""
|
"""
|
||||||
A new http connection has been made. Create a client object to handle
|
A new http connection has been made. Create a client object to handle
|
||||||
@ -252,8 +236,8 @@ class HttpConnection(object):
|
|||||||
|
|
||||||
def _get_service_items(self):
|
def _get_service_items(self):
|
||||||
service_items = []
|
service_items = []
|
||||||
if self.parent.current_item:
|
if self.live_controller.service_item:
|
||||||
current_unique_identifier = self.parent.current_item.unique_identifier
|
current_unique_identifier = self.live_controller.service_item.unique_identifier
|
||||||
else:
|
else:
|
||||||
current_unique_identifier = None
|
current_unique_identifier = None
|
||||||
for item in self.service_manager.service_items:
|
for item in self.service_manager.service_items:
|
||||||
@ -388,8 +372,8 @@ class HttpConnection(object):
|
|||||||
"""
|
"""
|
||||||
result = {
|
result = {
|
||||||
u'service': self.service_manager.service_id,
|
u'service': self.service_manager.service_id,
|
||||||
u'slide': self.parent.current_slide or 0,
|
u'slide': self.live_controller.selected_row or 0,
|
||||||
u'item': self.parent.current_item.unique_identifier if self.parent.current_item else u'',
|
u'item': self.live_controller.service_item.unique_identifier if self.live_controller.service_item else u'',
|
||||||
u'twelve': Settings().value(u'remotes/twelve hour'),
|
u'twelve': Settings().value(u'remotes/twelve hour'),
|
||||||
u'blank': self.live_controller.blank_screen.isChecked(),
|
u'blank': self.live_controller.blank_screen.isChecked(),
|
||||||
u'theme': self.live_controller.theme_screen.isChecked(),
|
u'theme': self.live_controller.theme_screen.isChecked(),
|
||||||
@ -438,7 +422,7 @@ class HttpConnection(object):
|
|||||||
"""
|
"""
|
||||||
event = u'slidecontroller_%s_%s' % (display_type, action)
|
event = u'slidecontroller_%s_%s' % (display_type, action)
|
||||||
if action == u'text':
|
if action == u'text':
|
||||||
current_item = self.parent.current_item
|
current_item = self.live_controller.service_item
|
||||||
data = []
|
data = []
|
||||||
if current_item:
|
if current_item:
|
||||||
for index, frame in enumerate(current_item.get_frames()):
|
for index, frame in enumerate(current_item.get_frames()):
|
||||||
@ -454,11 +438,11 @@ class HttpConnection(object):
|
|||||||
item[u'tag'] = unicode(index + 1)
|
item[u'tag'] = unicode(index + 1)
|
||||||
item[u'text'] = unicode(frame[u'title'])
|
item[u'text'] = unicode(frame[u'title'])
|
||||||
item[u'html'] = unicode(frame[u'title'])
|
item[u'html'] = unicode(frame[u'title'])
|
||||||
item[u'selected'] = (self.parent.current_slide == index)
|
item[u'selected'] = (self.live_controller.selected_row == index)
|
||||||
data.append(item)
|
data.append(item)
|
||||||
json_data = {u'results': {u'slides': data}}
|
json_data = {u'results': {u'slides': data}}
|
||||||
if current_item:
|
if current_item:
|
||||||
json_data[u'results'][u'item'] = self.parent.current_item.unique_identifier
|
json_data[u'results'][u'item'] = self.live_controller.service_item.unique_identifier
|
||||||
else:
|
else:
|
||||||
if self.url_params and self.url_params.get(u'data'):
|
if self.url_params and self.url_params.get(u'data'):
|
||||||
try:
|
try:
|
||||||
|
@ -45,7 +45,7 @@ class RemoteTab(SettingsTab):
|
|||||||
def setupUi(self):
|
def setupUi(self):
|
||||||
self.setObjectName(u'RemoteTab')
|
self.setObjectName(u'RemoteTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.server_settings_group_box = QtGui.QGroupBox(self.leftColumn)
|
self.server_settings_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.server_settings_group_box.setObjectName(u'server_settings_group_box')
|
self.server_settings_group_box.setObjectName(u'server_settings_group_box')
|
||||||
self.server_settings_layout = QtGui.QFormLayout(self.server_settings_group_box)
|
self.server_settings_layout = QtGui.QFormLayout(self.server_settings_group_box)
|
||||||
self.server_settings_layout.setObjectName(u'server_settings_layout')
|
self.server_settings_layout.setObjectName(u'server_settings_layout')
|
||||||
@ -78,10 +78,10 @@ class RemoteTab(SettingsTab):
|
|||||||
self.stage_url.setObjectName(u'stage_url')
|
self.stage_url.setObjectName(u'stage_url')
|
||||||
self.stage_url.setOpenExternalLinks(True)
|
self.stage_url.setOpenExternalLinks(True)
|
||||||
self.server_settings_layout.addRow(self.stage_url_label, self.stage_url)
|
self.server_settings_layout.addRow(self.stage_url_label, self.stage_url)
|
||||||
self.leftLayout.addWidget(self.server_settings_group_box)
|
self.left_layout.addWidget(self.server_settings_group_box)
|
||||||
self.android_app_group_box = QtGui.QGroupBox(self.rightColumn)
|
self.android_app_group_box = QtGui.QGroupBox(self.right_column)
|
||||||
self.android_app_group_box.setObjectName(u'android_app_group_box')
|
self.android_app_group_box.setObjectName(u'android_app_group_box')
|
||||||
self.rightLayout.addWidget(self.android_app_group_box)
|
self.right_layout.addWidget(self.android_app_group_box)
|
||||||
self.qr_layout = QtGui.QVBoxLayout(self.android_app_group_box)
|
self.qr_layout = QtGui.QVBoxLayout(self.android_app_group_box)
|
||||||
self.qr_layout.setObjectName(u'qr_layout')
|
self.qr_layout.setObjectName(u'qr_layout')
|
||||||
self.qr_code_label = QtGui.QLabel(self.android_app_group_box)
|
self.qr_code_label = QtGui.QLabel(self.android_app_group_box)
|
||||||
@ -94,8 +94,8 @@ class RemoteTab(SettingsTab):
|
|||||||
self.qr_description_label.setOpenExternalLinks(True)
|
self.qr_description_label.setOpenExternalLinks(True)
|
||||||
self.qr_description_label.setWordWrap(True)
|
self.qr_description_label.setWordWrap(True)
|
||||||
self.qr_layout.addWidget(self.qr_description_label)
|
self.qr_layout.addWidget(self.qr_description_label)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.twelve_hour_check_box.stateChanged.connect(self.onTwelveHourCheckBoxChanged)
|
self.twelve_hour_check_box.stateChanged.connect(self.onTwelveHourCheckBoxChanged)
|
||||||
self.address_edit.textChanged.connect(self.set_urls)
|
self.address_edit.textChanged.connect(self.set_urls)
|
||||||
self.port_spin_box.valueChanged.connect(self.set_urls)
|
self.port_spin_box.valueChanged.connect(self.set_urls)
|
||||||
@ -135,20 +135,20 @@ class RemoteTab(SettingsTab):
|
|||||||
self.stage_url.setText(u'<a href="%s">%s</a>' % (url, url))
|
self.stage_url.setText(u'<a href="%s">%s</a>' % (url, url))
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
self.port_spin_box.setValue(Settings().value(self.settingsSection + u'/port'))
|
self.port_spin_box.setValue(Settings().value(self.settings_section + u'/port'))
|
||||||
self.address_edit.setText(Settings().value(self.settingsSection + u'/ip address'))
|
self.address_edit.setText(Settings().value(self.settings_section + u'/ip address'))
|
||||||
self.twelve_hour = Settings().value(self.settingsSection + u'/twelve hour')
|
self.twelve_hour = Settings().value(self.settings_section + u'/twelve hour')
|
||||||
self.twelve_hour_check_box.setChecked(self.twelve_hour)
|
self.twelve_hour_check_box.setChecked(self.twelve_hour)
|
||||||
self.set_urls()
|
self.set_urls()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
changed = False
|
changed = False
|
||||||
if Settings().value(self.settingsSection + u'/ip address') != self.address_edit.text() or \
|
if Settings().value(self.settings_section + u'/ip address') != self.address_edit.text() or \
|
||||||
Settings().value(self.settingsSection + u'/port') != self.port_spin_box.value():
|
Settings().value(self.settings_section + u'/port') != self.port_spin_box.value():
|
||||||
changed = True
|
changed = True
|
||||||
Settings().setValue(self.settingsSection + u'/port', self.port_spin_box.value())
|
Settings().setValue(self.settings_section + u'/port', self.port_spin_box.value())
|
||||||
Settings().setValue(self.settingsSection + u'/ip address', self.address_edit.text())
|
Settings().setValue(self.settings_section + u'/ip address', self.address_edit.text())
|
||||||
Settings().setValue(self.settingsSection + u'/twelve hour', self.twelve_hour)
|
Settings().setValue(self.settings_section + u'/twelve hour', self.twelve_hour)
|
||||||
if changed:
|
if changed:
|
||||||
Registry().register_function(u'remotes_config_updated')
|
Registry().register_function(u'remotes_config_updated')
|
||||||
|
|
||||||
|
@ -97,8 +97,7 @@ class RemotesPlugin(Plugin):
|
|||||||
|
|
||||||
def config_update(self):
|
def config_update(self):
|
||||||
"""
|
"""
|
||||||
Called when Config is changed to restart the server on new address or
|
Called when Config is changed to restart the server on new address or port
|
||||||
port
|
|
||||||
"""
|
"""
|
||||||
self.finalise()
|
self.finalise()
|
||||||
self.initialise()
|
self.initialise()
|
||||||
|
@ -84,7 +84,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verse_delete_button.clicked.connect(self.on_verse_delete_button_clicked)
|
self.verse_delete_button.clicked.connect(self.on_verse_delete_button_clicked)
|
||||||
self.verse_list_widget.itemClicked.connect(self.on_verse_list_view_clicked)
|
self.verse_list_widget.itemClicked.connect(self.on_verse_list_view_clicked)
|
||||||
self.verse_order_edit.textChanged.connect(self.on_verse_order_text_changed)
|
self.verse_order_edit.textChanged.connect(self.on_verse_order_text_changed)
|
||||||
self.theme_add_button.clicked.connect(self.theme_manager.onAddTheme)
|
self.theme_add_button.clicked.connect(self.theme_manager.on_add_theme)
|
||||||
self.maintenance_button.clicked.connect(self.on_maintenance_button_clicked)
|
self.maintenance_button.clicked.connect(self.on_maintenance_button_clicked)
|
||||||
self.from_file_button.clicked.connect(self.on_audio_add_from_file_button_clicked)
|
self.from_file_button.clicked.connect(self.on_audio_add_from_file_button_clicked)
|
||||||
self.from_media_button.clicked.connect(self.on_audio_add_from_media_button_clicked)
|
self.from_media_button.clicked.connect(self.on_audio_add_from_media_button_clicked)
|
||||||
|
@ -104,7 +104,6 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
self.addSearchToToolBar()
|
self.addSearchToToolBar()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
Registry().register_function(u'songs_load_list', self.on_song_list_load)
|
Registry().register_function(u'songs_load_list', self.on_song_list_load)
|
||||||
Registry().register_function(u'config_updated', self.config_update)
|
|
||||||
Registry().register_function(u'songs_preview', self.onPreviewClick)
|
Registry().register_function(u'songs_preview', self.onPreviewClick)
|
||||||
QtCore.QObject.connect(self.searchTextEdit, QtCore.SIGNAL(u'cleared()'), self.onClearTextButtonClick)
|
QtCore.QObject.connect(self.searchTextEdit, QtCore.SIGNAL(u'cleared()'), self.onClearTextButtonClick)
|
||||||
QtCore.QObject.connect(self.searchTextEdit, QtCore.SIGNAL(u'searchTypeChanged(int)'),
|
QtCore.QObject.connect(self.searchTextEdit, QtCore.SIGNAL(u'searchTypeChanged(int)'),
|
||||||
@ -120,6 +119,10 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
self.searchTextEdit.setFocus()
|
self.searchTextEdit.setFocus()
|
||||||
|
|
||||||
def config_update(self):
|
def config_update(self):
|
||||||
|
"""
|
||||||
|
IS triggered when the songs config is updated
|
||||||
|
"""
|
||||||
|
log.debug(u'config_updated')
|
||||||
self.searchAsYouType = Settings().value(self.settingsSection + u'/search as type')
|
self.searchAsYouType = Settings().value(self.settingsSection + u'/search as type')
|
||||||
self.updateServiceOnEdit = Settings().value(self.settingsSection + u'/update service on edit')
|
self.updateServiceOnEdit = Settings().value(self.settingsSection + u'/update service on edit')
|
||||||
self.addSongFromService = Settings().value(self.settingsSection + u'/add song from service',)
|
self.addSongFromService = Settings().value(self.settingsSection + u'/add song from service',)
|
||||||
@ -366,7 +369,7 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
QtGui.QMessageBox.Yes) == QtGui.QMessageBox.No:
|
QtGui.QMessageBox.Yes) == QtGui.QMessageBox.No:
|
||||||
return
|
return
|
||||||
self.application.set_busy_cursor()
|
self.application.set_busy_cursor()
|
||||||
self.main_window.displayProgressBar(len(items))
|
self.main_window.display_progress_bar(len(items))
|
||||||
for item in items:
|
for item in items:
|
||||||
item_id = item.data(QtCore.Qt.UserRole)
|
item_id = item.data(QtCore.Qt.UserRole)
|
||||||
media_files = self.plugin.manager.get_all_objects(MediaFile, MediaFile.song_id == item_id)
|
media_files = self.plugin.manager.get_all_objects(MediaFile, MediaFile.song_id == item_id)
|
||||||
@ -383,7 +386,7 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
log.exception(u'Could not remove directory: %s', save_path)
|
log.exception(u'Could not remove directory: %s', save_path)
|
||||||
self.plugin.manager.delete_object(Song, item_id)
|
self.plugin.manager.delete_object(Song, item_id)
|
||||||
self.main_window.increment_progress_bar()
|
self.main_window.increment_progress_bar()
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finished_progress_bar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
self.onSearchTextButtonClicked()
|
self.onSearchTextButtonClicked()
|
||||||
|
|
||||||
|
@ -42,69 +42,72 @@ class SongsTab(SettingsTab):
|
|||||||
"""
|
"""
|
||||||
self.setObjectName(u'SongsTab')
|
self.setObjectName(u'SongsTab')
|
||||||
SettingsTab.setupUi(self)
|
SettingsTab.setupUi(self)
|
||||||
self.modeGroupBox = QtGui.QGroupBox(self.leftColumn)
|
self.mode_group_box = QtGui.QGroupBox(self.left_column)
|
||||||
self.modeGroupBox.setObjectName(u'modeGroupBox')
|
self.mode_group_box.setObjectName(u'mode_group_box')
|
||||||
self.modeLayout = QtGui.QVBoxLayout(self.modeGroupBox)
|
self.mode_layout = QtGui.QVBoxLayout(self.mode_group_box)
|
||||||
self.modeLayout.setObjectName(u'modeLayout')
|
self.mode_layout.setObjectName(u'mode_layout')
|
||||||
self.searchAsTypeCheckBox = QtGui.QCheckBox(self.modeGroupBox)
|
self.search_as_type_check_box = QtGui.QCheckBox(self.mode_group_box)
|
||||||
self.searchAsTypeCheckBox.setObjectName(u'SearchAsTypeCheckBox')
|
self.search_as_type_check_box.setObjectName(u'SearchAsType_check_box')
|
||||||
self.modeLayout.addWidget(self.searchAsTypeCheckBox)
|
self.mode_layout.addWidget(self.search_as_type_check_box)
|
||||||
self.toolBarActiveCheckBox = QtGui.QCheckBox(self.modeGroupBox)
|
self.tool_bar_active_check_box = QtGui.QCheckBox(self.mode_group_box)
|
||||||
self.toolBarActiveCheckBox.setObjectName(u'toolBarActiveCheckBox')
|
self.tool_bar_active_check_box.setObjectName(u'tool_bar_active_check_box')
|
||||||
self.modeLayout.addWidget(self.toolBarActiveCheckBox)
|
self.mode_layout.addWidget(self.tool_bar_active_check_box)
|
||||||
self.updateOnEditCheckBox = QtGui.QCheckBox(self.modeGroupBox)
|
self.update_on_edit_check_box = QtGui.QCheckBox(self.mode_group_box)
|
||||||
self.updateOnEditCheckBox.setObjectName(u'updateOnEditCheckBox')
|
self.update_on_edit_check_box.setObjectName(u'update_on_edit_check_box')
|
||||||
self.modeLayout.addWidget(self.updateOnEditCheckBox)
|
self.mode_layout.addWidget(self.update_on_edit_check_box)
|
||||||
self.addFromServiceCheckBox = QtGui.QCheckBox(self.modeGroupBox)
|
self.add_from_service_check_box = QtGui.QCheckBox(self.mode_group_box)
|
||||||
self.addFromServiceCheckBox.setObjectName(u'addFromServiceCheckBox')
|
self.add_from_service_check_box.setObjectName(u'add_from_service_check_box')
|
||||||
self.modeLayout.addWidget(self.addFromServiceCheckBox)
|
self.mode_layout.addWidget(self.add_from_service_check_box)
|
||||||
self.leftLayout.addWidget(self.modeGroupBox)
|
self.left_layout.addWidget(self.mode_group_box)
|
||||||
self.leftLayout.addStretch()
|
self.left_layout.addStretch()
|
||||||
self.rightLayout.addStretch()
|
self.right_layout.addStretch()
|
||||||
self.searchAsTypeCheckBox.stateChanged.connect(self.onSearchAsTypeCheckBoxChanged)
|
self.search_as_type_check_box.stateChanged.connect(self.on_search_as_type_check_box_changed)
|
||||||
self.toolBarActiveCheckBox.stateChanged.connect(self.onToolBarActiveCheckBoxChanged)
|
self.tool_bar_active_check_box.stateChanged.connect(self.on_tool_bar_active_check_box_changed)
|
||||||
self.updateOnEditCheckBox.stateChanged.connect(self.onUpdateOnEditCheckBoxChanged)
|
self.update_on_edit_check_box.stateChanged.connect(self.on_update_on_edit_check_box_changed)
|
||||||
self.addFromServiceCheckBox.stateChanged.connect(self.onAddFromServiceCheckBoxChanged)
|
self.add_from_service_check_box.stateChanged.connect(self.on_add_from_service_check_box_changed)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.modeGroupBox.setTitle(translate('SongsPlugin.SongsTab', 'Songs Mode'))
|
self.mode_group_box.setTitle(translate('SongsPlugin.SongsTab', 'Songs Mode'))
|
||||||
self.searchAsTypeCheckBox.setText(translate('SongsPlugin.SongsTab', 'Enable search as you type'))
|
self.search_as_type_check_box.setText(translate('SongsPlugin.SongsTab', 'Enable search as you type'))
|
||||||
self.toolBarActiveCheckBox.setText(translate('SongsPlugin.SongsTab',
|
self.tool_bar_active_check_box.setText(translate('SongsPlugin.SongsTab',
|
||||||
'Display verses on live tool bar'))
|
'Display verses on live tool bar'))
|
||||||
self.updateOnEditCheckBox.setText(translate('SongsPlugin.SongsTab', 'Update service from song edit'))
|
self.update_on_edit_check_box.setText(translate('SongsPlugin.SongsTab', 'Update service from song edit'))
|
||||||
self.addFromServiceCheckBox.setText(translate('SongsPlugin.SongsTab',
|
self.add_from_service_check_box.setText(translate('SongsPlugin.SongsTab',
|
||||||
'Import missing songs from service files'))
|
'Import missing songs from service files'))
|
||||||
|
|
||||||
def onSearchAsTypeCheckBoxChanged(self, check_state):
|
def on_search_as_type_check_box_changed(self, check_state):
|
||||||
self.song_search = (check_state == QtCore.Qt.Checked)
|
self.song_search = (check_state == QtCore.Qt.Checked)
|
||||||
|
|
||||||
def onToolBarActiveCheckBoxChanged(self, check_state):
|
def on_tool_bar_active_check_box_changed(self, check_state):
|
||||||
self.tool_bar = (check_state == QtCore.Qt.Checked)
|
self.tool_bar = (check_state == QtCore.Qt.Checked)
|
||||||
|
|
||||||
def onUpdateOnEditCheckBoxChanged(self, check_state):
|
def on_update_on_edit_check_box_changed(self, check_state):
|
||||||
self.update_edit = (check_state == QtCore.Qt.Checked)
|
self.update_edit = (check_state == QtCore.Qt.Checked)
|
||||||
|
|
||||||
def onAddFromServiceCheckBoxChanged(self, check_state):
|
def on_add_from_service_check_box_changed(self, check_state):
|
||||||
self.update_load = (check_state == QtCore.Qt.Checked)
|
self.update_load = (check_state == QtCore.Qt.Checked)
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
self.song_search = settings.value(u'search as type')
|
self.song_search = settings.value(u'search as type')
|
||||||
self.tool_bar = settings.value(u'display songbar')
|
self.tool_bar = settings.value(u'display songbar')
|
||||||
self.update_edit = settings.value(u'update service on edit')
|
self.update_edit = settings.value(u'update service on edit')
|
||||||
self.update_load = settings.value(u'add song from service')
|
self.update_load = settings.value(u'add song from service')
|
||||||
self.searchAsTypeCheckBox.setChecked(self.song_search)
|
self.search_as_type_check_box.setChecked(self.song_search)
|
||||||
self.toolBarActiveCheckBox.setChecked(self.tool_bar)
|
self.tool_bar_active_check_box.setChecked(self.tool_bar)
|
||||||
self.updateOnEditCheckBox.setChecked(self.update_edit)
|
self.update_on_edit_check_box.setChecked(self.update_edit)
|
||||||
self.addFromServiceCheckBox.setChecked(self.update_load)
|
self.add_from_service_check_box.setChecked(self.update_load)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settings_section)
|
||||||
settings.setValue(u'search as type', self.song_search)
|
settings.setValue(u'search as type', self.song_search)
|
||||||
settings.setValue(u'display songbar', self.tool_bar)
|
settings.setValue(u'display songbar', self.tool_bar)
|
||||||
settings.setValue(u'update service on edit', self.update_edit)
|
settings.setValue(u'update service on edit', self.update_edit)
|
||||||
settings.setValue(u'add song from service', self.update_load)
|
settings.setValue(u'add song from service', self.update_load)
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
if self.tab_visited:
|
||||||
|
self.settings_form.register_post_process(u'songs_config_updated')
|
||||||
|
self.tab_visited = False
|
||||||
|
@ -106,12 +106,12 @@ class SongUsagePlugin(Plugin):
|
|||||||
self.song_usage_menu.addSeparator()
|
self.song_usage_menu.addSeparator()
|
||||||
self.song_usage_menu.addAction(self.song_usage_report)
|
self.song_usage_menu.addAction(self.song_usage_report)
|
||||||
self.song_usage_menu.addAction(self.song_usage_delete)
|
self.song_usage_menu.addAction(self.song_usage_delete)
|
||||||
self.song_usage_active_button = QtGui.QToolButton(self.main_window.statusBar)
|
self.song_usage_active_button = QtGui.QToolButton(self.main_window.status_bar)
|
||||||
self.song_usage_active_button.setCheckable(True)
|
self.song_usage_active_button.setCheckable(True)
|
||||||
self.song_usage_active_button.setAutoRaise(True)
|
self.song_usage_active_button.setAutoRaise(True)
|
||||||
self.song_usage_active_button.setStatusTip(translate('SongUsagePlugin', 'Toggle the tracking of song usage.'))
|
self.song_usage_active_button.setStatusTip(translate('SongUsagePlugin', 'Toggle the tracking of song usage.'))
|
||||||
self.song_usage_active_button.setObjectName(u'song_usage_active_button')
|
self.song_usage_active_button.setObjectName(u'song_usage_active_button')
|
||||||
self.main_window.statusBar.insertPermanentWidget(1, self.song_usage_active_button)
|
self.main_window.status_bar.insertPermanentWidget(1, self.song_usage_active_button)
|
||||||
self.song_usage_active_button.hide()
|
self.song_usage_active_button.hide()
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
QtCore.QObject.connect(self.song_usage_status, QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
QtCore.QObject.connect(self.song_usage_status, QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
||||||
|
@ -40,7 +40,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
|
|
||||||
# If we try to import uno before nose this will greate a warning. Just try to import nose first to supress the warning.
|
# If we try to import uno before nose this will create a warning. Just try to import nose first to suppress the warning.
|
||||||
try:
|
try:
|
||||||
import nose
|
import nose
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
--- openlp/core/resources.py.old Mon Jun 21 23:16:19 2010
|
=== modified file 'openlp/core/resources.py'
|
||||||
+++ openlp/core/resources.py Mon Jun 21 23:27:48 2010
|
--- openlp/core/resources.py 2013-03-12 08:44:54 +0000
|
||||||
|
+++ openlp/core/resources.py 2013-03-12 08:45:42 +0000
|
||||||
@@ -1,10 +1,35 @@
|
@@ -1,10 +1,35 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
-
|
||||||
|
|
||||||
-# Resource object code
|
-# Resource object code
|
||||||
-#
|
-#
|
||||||
-#
|
-#
|
||||||
-# WARNING! All changes made in this file will be lost!
|
-# WARNING! All changes made in this file will be lost!
|
||||||
-
|
-
|
||||||
|
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
+
|
||||||
+###############################################################################
|
+###############################################################################
|
||||||
+# OpenLP - Open Source Lyrics Projection #
|
+# OpenLP - Open Source Lyrics Projection #
|
||||||
+# --------------------------------------------------------------------------- #
|
+# --------------------------------------------------------------------------- #
|
||||||
@ -41,23 +43,21 @@
|
|||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
|
|
||||||
qt_resource_data = "\
|
qt_resource_data = "\
|
||||||
@@ -48643,9 +48664,16 @@
|
@@ -71953,9 +71978,14 @@
|
||||||
"
|
"
|
||||||
|
|
||||||
def qInitResources():
|
def qInitResources():
|
||||||
- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
+ """
|
+ """
|
||||||
+ Initialise OpenLP resources at application startup.
|
+ Initialise OpenLP resources at application startup.
|
||||||
+ """
|
+ """
|
||||||
+ QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name,
|
QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||||
+ qt_resource_data)
|
|
||||||
|
|
||||||
def qCleanupResources():
|
def qCleanupResources():
|
||||||
- QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
+ """
|
+ """
|
||||||
+ Cleanup OpenLP resources when the application shuts down.
|
+ Cleanup OpenLP resources when the application shuts down.
|
||||||
+ """
|
+ """
|
||||||
+ QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name,
|
QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||||
+ qt_resource_data)
|
|
||||||
|
|
||||||
-qInitResources()
|
-qInitResources()
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ from openlp.core.lib import Registry
|
|||||||
from openlp.core.ui import servicenoteform
|
from openlp.core.ui import servicenoteform
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestStartNoteDialog(TestCase):
|
class TestStartNoteDialog(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -41,8 +40,8 @@ class TestStartNoteDialog(TestCase):
|
|||||||
# WHEN displaying the UI and pressing enter
|
# WHEN displaying the UI and pressing enter
|
||||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||||
self.form.exec_()
|
self.form.exec_()
|
||||||
okWidget = self.form.button_box.button(self.form.button_box.Save)
|
ok_widget = self.form.button_box.button(self.form.button_box.Save)
|
||||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
# THEN the following input text is returned
|
# THEN the following input text is returned
|
||||||
self.assertEqual(self.form.text_edit.toPlainText(), u'', u'The returned text should be empty')
|
self.assertEqual(self.form.text_edit.toPlainText(), u'', u'The returned text should be empty')
|
||||||
@ -52,8 +51,8 @@ class TestStartNoteDialog(TestCase):
|
|||||||
self.form.text_edit.setPlainText(text)
|
self.form.text_edit.setPlainText(text)
|
||||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||||
self.form.exec_()
|
self.form.exec_()
|
||||||
okWidget = self.form.button_box.button(self.form.button_box.Save)
|
ok_widget = self.form.button_box.button(self.form.button_box.Save)
|
||||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
# THEN the following text is returned
|
# THEN the following text is returned
|
||||||
self.assertEqual(self.form.text_edit.toPlainText(), text, u'The text originally entered should still be there')
|
self.assertEqual(self.form.text_edit.toPlainText(), text, u'The text originally entered should still be there')
|
||||||
|
169
tests/interfaces/openlp_core_ui/test_settings_form.py
Normal file
169
tests/interfaces/openlp_core_ui/test_settings_form.py
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
"""
|
||||||
|
Package to test the openlp.core.lib.settingsform package.
|
||||||
|
"""
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from mock import MagicMock, patch
|
||||||
|
|
||||||
|
from PyQt4 import QtCore, QtTest
|
||||||
|
|
||||||
|
from openlp.core.ui import settingsform
|
||||||
|
from openlp.core.lib import Registry, ScreenList
|
||||||
|
|
||||||
|
|
||||||
|
SCREEN = {
|
||||||
|
u'primary': False,
|
||||||
|
u'number': 1,
|
||||||
|
u'size': QtCore.QRect(0, 0, 1024, 768)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class TestSettingsForm(TestCase):
|
||||||
|
"""
|
||||||
|
Test the PluginManager class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
Some pre-test setup required.
|
||||||
|
"""
|
||||||
|
self.dummy1 = MagicMock()
|
||||||
|
self.dummy2 = MagicMock()
|
||||||
|
self.dummy3 = MagicMock()
|
||||||
|
self.desktop = MagicMock()
|
||||||
|
self.desktop.primaryScreen.return_value = SCREEN[u'primary']
|
||||||
|
self.desktop.screenCount.return_value = SCREEN[u'number']
|
||||||
|
self.desktop.screenGeometry.return_value = SCREEN[u'size']
|
||||||
|
self.screens = ScreenList.create(self.desktop)
|
||||||
|
Registry.create()
|
||||||
|
self.form = settingsform.SettingsForm()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
"""
|
||||||
|
Delete all the C++ objects at the end so that we don't have a segfault
|
||||||
|
"""
|
||||||
|
del self.form
|
||||||
|
|
||||||
|
def basic_cancel_test(self):
|
||||||
|
"""
|
||||||
|
Test running the settings form and pressing Cancel
|
||||||
|
"""
|
||||||
|
# GIVEN: An initial form
|
||||||
|
|
||||||
|
# WHEN displaying the UI and pressing cancel
|
||||||
|
with patch(u'PyQt4.QtGui.QDialog.reject') as mocked_reject:
|
||||||
|
cancel_widget = self.form.button_box.button(self.form.button_box.Cancel)
|
||||||
|
QtTest.QTest.mouseClick(cancel_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN the dialog reject should have been called
|
||||||
|
assert mocked_reject.call_count == 1, u'The QDialog.reject should have been called'
|
||||||
|
|
||||||
|
def basic_accept_test(self):
|
||||||
|
"""
|
||||||
|
Test running the settings form and pressing Ok
|
||||||
|
"""
|
||||||
|
# GIVEN: An initial form
|
||||||
|
|
||||||
|
# WHEN displaying the UI and pressing Ok
|
||||||
|
with patch(u'PyQt4.QtGui.QDialog.accept') as mocked_accept:
|
||||||
|
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||||
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN the dialog reject should have been called
|
||||||
|
assert mocked_accept.call_count == 1, u'The QDialog.accept should have been called'
|
||||||
|
|
||||||
|
def basic_register_test(self):
|
||||||
|
"""
|
||||||
|
Test running the settings form and adding a single function
|
||||||
|
"""
|
||||||
|
# GIVEN: An initial form add a register function
|
||||||
|
self.form.register_post_process(u'function1')
|
||||||
|
|
||||||
|
# WHEN displaying the UI and pressing Ok
|
||||||
|
with patch(u'PyQt4.QtGui.QDialog.accept'):
|
||||||
|
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||||
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN the processing stack should be empty
|
||||||
|
assert len(self.form.processes) == 0, u'The one requested process should have been removed from the stack'
|
||||||
|
|
||||||
|
def register_multiple_functions_test(self):
|
||||||
|
"""
|
||||||
|
Test running the settings form and adding multiple functions
|
||||||
|
"""
|
||||||
|
# GIVEN: Registering a single function
|
||||||
|
self.form.register_post_process(u'function1')
|
||||||
|
|
||||||
|
# WHEN testing the processing stack
|
||||||
|
# THEN the processing stack should have one item
|
||||||
|
assert len(self.form.processes) == 1, u'The one requested process should have been added to the stack'
|
||||||
|
|
||||||
|
# GIVEN: Registering a new function
|
||||||
|
self.form.register_post_process(u'function2')
|
||||||
|
|
||||||
|
# WHEN testing the processing stack
|
||||||
|
# THEN the processing stack should have two items
|
||||||
|
assert len(self.form.processes) == 2, u'The two requested processes should have been added to the stack'
|
||||||
|
|
||||||
|
# GIVEN: Registering a process for the second time
|
||||||
|
self.form.register_post_process(u'function1')
|
||||||
|
|
||||||
|
# WHEN testing the processing stack
|
||||||
|
# THEN the processing stack should still have two items
|
||||||
|
assert len(self.form.processes) == 2, u'No new processes should have been added to the stack'
|
||||||
|
|
||||||
|
def register_image_manager_trigger_test_one(self):
|
||||||
|
"""
|
||||||
|
Test the triggering of the image manager rebuild event from image background change
|
||||||
|
"""
|
||||||
|
# GIVEN: Three functions registered to be call
|
||||||
|
Registry().register_function(u'images_config_updated', self.dummy1)
|
||||||
|
Registry().register_function(u'config_screen_changed', self.dummy2)
|
||||||
|
Registry().register_function(u'images_regenerate', self.dummy3)
|
||||||
|
|
||||||
|
# WHEN: The Images have been changed and the form submitted
|
||||||
|
self.form.register_post_process(u'images_config_updated')
|
||||||
|
self.form.accept()
|
||||||
|
|
||||||
|
# THEN: images_regenerate should have been added.
|
||||||
|
assert self.dummy1.call_count == 1, u'dummy1 should have been called once'
|
||||||
|
assert self.dummy2.call_count == 0, u'dummy2 should not have been called at all'
|
||||||
|
assert self.dummy3.call_count == 1, u'dummy3 should have been called once'
|
||||||
|
|
||||||
|
def register_image_manager_trigger_test_two(self):
|
||||||
|
"""
|
||||||
|
Test the triggering of the image manager rebuild event from screen dimension change
|
||||||
|
"""
|
||||||
|
# GIVEN: Three functions registered to be call
|
||||||
|
Registry().register_function(u'images_config_updated', self.dummy1)
|
||||||
|
Registry().register_function(u'config_screen_changed', self.dummy2)
|
||||||
|
Registry().register_function(u'images_regenerate', self.dummy3)
|
||||||
|
|
||||||
|
# WHEN: The Images have been changed and the form submitted
|
||||||
|
self.form.register_post_process(u'config_screen_changed')
|
||||||
|
self.form.accept()
|
||||||
|
|
||||||
|
# THEN: images_regenerate should have been added.
|
||||||
|
assert self.dummy1.call_count == 0, u'dummy1 should not have been called at all'
|
||||||
|
assert self.dummy2.call_count == 1, u'dummy2 should have been called once'
|
||||||
|
assert self.dummy3.call_count == 1, u'dummy3 should have been called once'
|
||||||
|
|
||||||
|
def register_image_manager_trigger_test_three(self):
|
||||||
|
"""
|
||||||
|
Test the triggering of the image manager rebuild event from image background change and a change to the
|
||||||
|
screen dimension.
|
||||||
|
"""
|
||||||
|
# GIVEN: Three functions registered to be call
|
||||||
|
Registry().register_function(u'images_config_updated', self.dummy1)
|
||||||
|
Registry().register_function(u'config_screen_changed', self.dummy2)
|
||||||
|
Registry().register_function(u'images_regenerate', self.dummy3)
|
||||||
|
|
||||||
|
# WHEN: The Images have been changed and the form submitted
|
||||||
|
self.form.register_post_process(u'config_screen_changed')
|
||||||
|
self.form.register_post_process(u'images_config_updated')
|
||||||
|
self.form.accept()
|
||||||
|
|
||||||
|
# THEN: Images_regenerate should have been added.
|
||||||
|
assert self.dummy1.call_count == 1, u'dummy1 should have been called once'
|
||||||
|
assert self.dummy2.call_count == 1, u'dummy2 should have been called once'
|
||||||
|
assert self.dummy3.call_count == 1, u'dummy3 should have been called once'
|
@ -72,8 +72,8 @@ class TestStartTimeDialog(TestCase):
|
|||||||
self.form.item = {u'service_item': mocked_serviceitem}
|
self.form.item = {u'service_item': mocked_serviceitem}
|
||||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||||
self.form.exec_()
|
self.form.exec_()
|
||||||
okWidget = self.form.button_box.button(self.form.button_box.Ok)
|
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
# THEN the following input values are returned
|
# THEN the following input values are returned
|
||||||
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
||||||
@ -87,8 +87,8 @@ class TestStartTimeDialog(TestCase):
|
|||||||
self.form.exec_()
|
self.form.exec_()
|
||||||
self.form.minuteSpinBox.setValue(2)
|
self.form.minuteSpinBox.setValue(2)
|
||||||
self.form.secondSpinBox.setValue(3)
|
self.form.secondSpinBox.setValue(3)
|
||||||
okWidget = self.form.button_box.button(self.form.button_box.Ok)
|
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
# THEN the following values are returned
|
# THEN the following values are returned
|
||||||
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user