forked from openlp/openlp
Head
This commit is contained in:
commit
919f86789f
@ -164,8 +164,8 @@ sup {
|
||||
text.innerHTML = new_text;
|
||||
return;
|
||||
}
|
||||
// Fade text out. 0.2 to minimize the time "nothing" is shown on the screen.
|
||||
text.style.opacity = '0.2';
|
||||
// Fade text out. 0.1 to minimize the time "nothing" is shown on the screen.
|
||||
text.style.opacity = '0.1';
|
||||
// Fade new text in after the old text has finished fading out.
|
||||
timer = window.setTimeout(function(){_show_text(text, new_text)}, 400);
|
||||
}
|
||||
|
@ -636,14 +636,17 @@ class ServiceItem(object):
|
||||
for frame in self._raw_frames:
|
||||
if self.is_image() and not os.path.exists(frame[u'path']):
|
||||
self.is_valid = False
|
||||
break
|
||||
elif self.is_command():
|
||||
file_name = os.path.join(frame[u'path'], frame[u'title'])
|
||||
if not os.path.exists(file_name):
|
||||
self.is_valid = False
|
||||
break
|
||||
if suffix_list and not self.is_text():
|
||||
file_suffix = frame[u'title'].split(u'.')[-1]
|
||||
if file_suffix.lower() not in suffix_list:
|
||||
self.is_valid = False
|
||||
break
|
||||
|
||||
def _get_renderer(self):
|
||||
"""
|
||||
|
@ -190,3 +190,12 @@ class SettingsTab(QtGui.QWidget):
|
||||
|
||||
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 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.lib import SlideLimits
|
||||
|
||||
@ -52,7 +52,6 @@ class AdvancedTab(SettingsTab):
|
||||
"""
|
||||
Initialise the settings tab
|
||||
"""
|
||||
self.display_changed = False
|
||||
self.default_image = u':/graphics/openlp-splash-screen.png'
|
||||
self.default_color = u'#ffffff'
|
||||
self.data_exists = False
|
||||
@ -251,7 +250,6 @@ class AdvancedTab(SettingsTab):
|
||||
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_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.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)
|
||||
@ -427,16 +425,15 @@ class AdvancedTab(SettingsTab):
|
||||
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'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'default color', self.default_color)
|
||||
settings.setValue(u'default image', self.default_file_edit.text())
|
||||
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()
|
||||
if self.display_changed:
|
||||
Registry().execute(u'config_screen_changed')
|
||||
self.display_changed = False
|
||||
Registry().execute(u'slidecontroller_update_slide_limits')
|
||||
|
||||
def cancel(self):
|
||||
"""
|
||||
@ -516,8 +513,8 @@ class AdvancedTab(SettingsTab):
|
||||
Select an image for the default display screen.
|
||||
"""
|
||||
file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(), UiStrings().AllFiles)
|
||||
filename = QtGui.QFileDialog.getOpenFileName(self,
|
||||
translate('OpenLP.AdvancedTab', 'Open File'), '', file_filters)
|
||||
filename = QtGui.QFileDialog.getOpenFileName(self, translate('OpenLP.AdvancedTab', 'Open File'), '',
|
||||
file_filters)
|
||||
if filename:
|
||||
self.default_file_edit.setText(filename)
|
||||
self.default_file_edit.setFocus()
|
||||
@ -635,15 +632,6 @@ class AdvancedTab(SettingsTab):
|
||||
self.default_file_edit.setText(u':/graphics/openlp-splash-screen.png')
|
||||
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):
|
||||
"""
|
||||
Notify user about required restart.
|
||||
|
@ -313,7 +313,7 @@ class GeneralTab(SettingsTab):
|
||||
Apply settings after settings tab has loaded and most of the
|
||||
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.
|
||||
if not postUpdate:
|
||||
return
|
||||
@ -329,7 +329,7 @@ class GeneralTab(SettingsTab):
|
||||
else:
|
||||
self.screens.reset_current_display()
|
||||
if self.display_changed:
|
||||
Registry().execute(u'config_screen_changed')
|
||||
self.settings_form.register_post_process(u'config_screen_changed')
|
||||
self.display_changed = False
|
||||
|
||||
def onOverrideRadioButtonPressed(self, checked):
|
||||
|
@ -158,7 +158,6 @@ class MainDisplay(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'update_display_css', self.css_changed)
|
||||
Registry().register_function(u'config_updated', self.config_changed)
|
||||
|
||||
def set_transparency(self, enabled):
|
||||
"""
|
||||
@ -173,19 +172,10 @@ class MainDisplay(Display):
|
||||
|
||||
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
|
||||
|
||||
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):
|
||||
"""
|
||||
|
@ -653,11 +653,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
self.activePlugin.app_startup()
|
||||
else:
|
||||
self.activePlugin.toggleStatus(PluginStatus.Inactive)
|
||||
self.themeManagerContents.config_updated()
|
||||
self.themeManagerContents.load_themes(True)
|
||||
# Set global theme and
|
||||
Registry().execute(u'theme_update_global', self.themeManagerContents.global_theme)
|
||||
# Check if any Bibles downloaded. If there are, they will be
|
||||
# processed.
|
||||
self.themeManagerContents.load_first_time_themes()
|
||||
# Check if any Bibles downloaded. If there are, they will be processed.
|
||||
Registry().execute(u'bibles_load_list', True)
|
||||
self.application.set_normal_cursor()
|
||||
|
||||
@ -1105,11 +1104,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
"""
|
||||
self.statusBar.showMessage(message)
|
||||
|
||||
def default_theme_changed(self, theme):
|
||||
def default_theme_changed(self):
|
||||
"""
|
||||
Update the default theme indicator in the status bar
|
||||
"""
|
||||
self.defaultThemeLabel.setText(translate('OpenLP.MainWindow', 'Default Theme: %s') % theme)
|
||||
self.defaultThemeLabel.setText(translate('OpenLP.MainWindow', 'Default Theme: %s') %
|
||||
Settings().value(u'themes/global theme'))
|
||||
|
||||
def toggleMediaManager(self):
|
||||
"""
|
||||
|
@ -440,7 +440,7 @@ class MediaController(object):
|
||||
controller.media_info = MediaInfo()
|
||||
controller.media_info.volume = 0
|
||||
controller.media_info.file_info = QtCore.QFileInfo(service_item.get_frame_path())
|
||||
display = controller._display
|
||||
display = controller.preview_display
|
||||
if not self._check_file_type(controller, display, service_item):
|
||||
# Media could not be loaded correctly
|
||||
critical_error_message_box(translate('MediaPlugin.MediaItem', 'Unsupported File'),
|
||||
|
@ -216,7 +216,6 @@ class PlayerTab(SettingsTab):
|
||||
"""
|
||||
Save the settings
|
||||
"""
|
||||
player_string_changed = False
|
||||
settings = Settings()
|
||||
settings.beginGroup(self.settingsSection)
|
||||
settings.setValue(u'background color', self.bg_color)
|
||||
@ -225,16 +224,13 @@ class PlayerTab(SettingsTab):
|
||||
if self.usedPlayers != old_players:
|
||||
# clean old Media stuff
|
||||
set_media_players(self.usedPlayers, override_player)
|
||||
player_string_changed = True
|
||||
if player_string_changed:
|
||||
self.service_manager.reset_supported_suffixes()
|
||||
Registry().execute(u'mediaitem_media_rebuild')
|
||||
Registry().execute(u'config_screen_changed')
|
||||
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||
self.settings_form.register_post_process(u'mediaitem_media_rebuild')
|
||||
self.settings_form.register_post_process(u'config_screen_changed')
|
||||
|
||||
def post_set_up(self):
|
||||
"""
|
||||
Late setup for players as the MediaController has to be initialised
|
||||
first.
|
||||
Late setup for players as the MediaController has to be initialised first.
|
||||
"""
|
||||
for key, player in self.media_players.iteritems():
|
||||
player = self.media_players[key]
|
||||
@ -257,7 +253,7 @@ class PlayerTab(SettingsTab):
|
||||
"""
|
||||
Translations for players is dependent on their setup as well
|
||||
"""
|
||||
for key in self.media_players:
|
||||
for key in self.media_players and self.playerCheckBoxes:
|
||||
player = self.media_players[key]
|
||||
checkbox = self.playerCheckBoxes[player.name]
|
||||
checkbox.setPlayerName(player.name)
|
||||
|
@ -450,7 +450,7 @@ class WebkitPlayer(MediaPlayer):
|
||||
currentTime = display.frame.evaluateJavaScript(u'show_flash("currentTime");')
|
||||
length = display.frame.evaluateJavaScript(u'show_flash("length");')
|
||||
else:
|
||||
if display.frame.evaluateJavaScript(u'show_video("isEnded");') == 'true':
|
||||
if display.frame.evaluateJavaScript(u'show_video("isEnded");'):
|
||||
self.stop(display)
|
||||
currentTime = display.frame.evaluateJavaScript(u'show_video("currentTime");')
|
||||
# check if conversion was ok and value is not 'NaN'
|
||||
|
@ -113,10 +113,12 @@ class ServiceManagerDialog(object):
|
||||
self.toolbar = OpenLPToolbar(self)
|
||||
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)
|
||||
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.'),
|
||||
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)
|
||||
self.toolbar.addSeparator()
|
||||
self.theme_label = QtGui.QLabel(u'%s:' % UiStrings().Theme, self)
|
||||
@ -265,9 +267,10 @@ class ServiceManagerDialog(object):
|
||||
self.service_manager_list.collapse
|
||||
])
|
||||
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'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):
|
||||
"""
|
||||
@ -297,7 +300,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.service_items = []
|
||||
self.suffixes = []
|
||||
self.drop_position = 0
|
||||
self.expand_tabs = False
|
||||
self.service_id = 0
|
||||
# is a new service and has not been saved
|
||||
self._modified = False
|
||||
@ -311,7 +313,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.layout.setSpacing(0)
|
||||
self.layout.setMargin(0)
|
||||
self.setup_ui(self)
|
||||
self.config_updated()
|
||||
|
||||
def set_modified(self, modified=True):
|
||||
"""
|
||||
@ -351,12 +352,6 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
"""
|
||||
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):
|
||||
"""
|
||||
Resets the Suffixes list.
|
||||
@ -1158,6 +1153,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.service_has_all_original_files = False
|
||||
# Repaint the screen
|
||||
self.service_manager_list.clear()
|
||||
self.service_manager_list.clearSelection()
|
||||
for item_count, item in enumerate(self.service_items):
|
||||
serviceitem = item[u'service_item']
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.service_manager_list)
|
||||
@ -1319,7 +1315,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
"""
|
||||
# if not passed set to config value
|
||||
if expand is None:
|
||||
expand = self.expand_tabs
|
||||
expand = Settings().value(u'advanced/expand service item')
|
||||
item.from_service = True
|
||||
if replace:
|
||||
sitem, child = self.find_service_item()
|
||||
|
@ -52,15 +52,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||
Registry().register(u'settings_form', self)
|
||||
Registry().register_function(u'bootstrap_post_set_up', self.post_set_up)
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.processes = []
|
||||
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):
|
||||
"""
|
||||
@ -108,6 +101,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||
for tabIndex in range(self.stackedLayout.count()):
|
||||
self.stackedLayout.widget(tabIndex).save()
|
||||
# Must go after all settings are save
|
||||
while self.processes:
|
||||
Registry().execute(self.processes.pop(0))
|
||||
Registry().execute(u'config_updated')
|
||||
return QtGui.QDialog.accept(self)
|
||||
|
||||
@ -115,6 +110,7 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||
"""
|
||||
Process the form saving the settings
|
||||
"""
|
||||
self.processes = []
|
||||
for tabIndex in range(self.stackedLayout.count()):
|
||||
self.stackedLayout.widget(tabIndex).cancel()
|
||||
return QtGui.QDialog.reject(self)
|
||||
@ -123,6 +119,14 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||
"""
|
||||
Run any post-setup code for the tabs on the form
|
||||
"""
|
||||
# General tab
|
||||
self.generalTab = GeneralTab(self)
|
||||
# Themes tab
|
||||
self.themesTab = ThemesTab(self)
|
||||
# Advanced tab
|
||||
self.advancedTab = AdvancedTab(self)
|
||||
# Advanced tab
|
||||
self.playerTab = PlayerTab(self)
|
||||
self.generalTab.post_set_up()
|
||||
self.themesTab.post_set_up()
|
||||
self.advancedTab.post_set_up()
|
||||
@ -138,15 +142,15 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
||||
self.stackedLayout.setCurrentIndex(tabIndex)
|
||||
self.stackedLayout.currentWidget().tabVisible()
|
||||
|
||||
def resetSupportedSuffixes(self):
|
||||
def register_post_process(self, function):
|
||||
"""
|
||||
Control the resetting of the serviceManager suffix list as can be
|
||||
called by a number of settings tab and only needs to be called once
|
||||
per save.
|
||||
Register for updates to be done on save removing duplicate functions
|
||||
|
||||
``function``
|
||||
The function to be called
|
||||
"""
|
||||
if self.resetSuffixes:
|
||||
self.service_manager.reset_supported_suffixes()
|
||||
self.resetSuffixes = False
|
||||
if not function in self.processes:
|
||||
self.processes.append(function)
|
||||
|
||||
def _get_main_window(self):
|
||||
"""
|
||||
|
@ -60,6 +60,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
Registry().register(u'theme_manager', self)
|
||||
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.themeForm = ThemeForm(self)
|
||||
self.fileRenameForm = FileRenameForm()
|
||||
@ -132,7 +133,6 @@ class ThemeManager(QtGui.QWidget):
|
||||
self.theme_list_widget.doubleClicked.connect(self.change_global_from_screen)
|
||||
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'config_updated', self.config_updated)
|
||||
# Variables
|
||||
self.theme_list = []
|
||||
self.path = AppLocation.get_section_data_path(self.settingsSection)
|
||||
@ -143,13 +143,6 @@ class ThemeManager(QtGui.QWidget):
|
||||
self.oldBackgroundImage = None
|
||||
self.badV1NameChars = re.compile(r'[%+\[\]]')
|
||||
# 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')
|
||||
|
||||
def check_list_state(self, item):
|
||||
@ -182,12 +175,12 @@ class ThemeManager(QtGui.QWidget):
|
||||
self.global_action.setVisible(visible)
|
||||
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
|
||||
tab
|
||||
Change the global theme when it is changed through the Themes settings 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()):
|
||||
# reset the old name
|
||||
item = self.theme_list_widget.item(count)
|
||||
@ -196,7 +189,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
if old_name != new_name:
|
||||
self.theme_list_widget.item(count).setText(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
|
||||
self.theme_list_widget.item(count).setText(name)
|
||||
self.deleteToolbarAction.setVisible(item not in self.theme_list_widget.selectedItems())
|
||||
@ -220,7 +213,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
name = translate('OpenLP.ThemeManager', '%s (default)') % self.global_theme
|
||||
self.theme_list_widget.item(count).setText(name)
|
||||
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()
|
||||
|
||||
def onAddTheme(self):
|
||||
|
@ -151,13 +151,13 @@ class ThemesTab(SettingsTab):
|
||||
settings.endGroup()
|
||||
self.renderer.set_global_theme(self.global_theme)
|
||||
self.renderer.set_theme_level(self.theme_level)
|
||||
Registry().execute(u'theme_update_global', self.global_theme)
|
||||
self.settings_form.register_post_process(u'theme_update_global')
|
||||
|
||||
def post_set_up(self):
|
||||
"""
|
||||
After setting things up...
|
||||
"""
|
||||
Registry().execute(u'theme_update_global', self.global_theme)
|
||||
Registry().execute(u'theme_update_global')
|
||||
|
||||
def onSongLevelButtonClicked(self):
|
||||
"""
|
||||
|
@ -153,7 +153,6 @@ class AlertsPlugin(Plugin):
|
||||
visible=False, can_shortcuts=True, triggers=self.onAlertsTrigger)
|
||||
self.main_window.tools_menu.addAction(self.toolsAlertItem)
|
||||
|
||||
|
||||
def initialise(self):
|
||||
log.info(u'Alerts Initialising')
|
||||
Plugin.initialise(self)
|
||||
|
@ -198,10 +198,8 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
|
||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
|
||||
self.parameter_edit.setFocus()
|
||||
return False
|
||||
|
||||
text = text.replace(u'<>', self.parameter_edit.text())
|
||||
self.plugin.alerts_manager.display_alert(text)
|
||||
self.plugin.alertsmanager.display_alert(text)
|
||||
return True
|
||||
|
||||
def on_current_row_changed(self, row):
|
||||
|
@ -27,11 +27,12 @@
|
||||
# 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
|
||||
|
||||
|
||||
class AlertsTab(SettingsTab):
|
||||
"""
|
||||
AlertsTab is the alerts settings tab in the settings dialog.
|
||||
@ -173,7 +174,7 @@ class AlertsTab(SettingsTab):
|
||||
settings.setValue(u'location', self.location)
|
||||
settings.endGroup()
|
||||
if self.changed:
|
||||
Registry().execute(u'update_display_css')
|
||||
self.settings_form.register_post_process(u'update_display_css')
|
||||
self.changed = False
|
||||
|
||||
def updateDisplay(self):
|
||||
@ -184,4 +185,3 @@ class AlertsTab(SettingsTab):
|
||||
self.fontPreview.setFont(font)
|
||||
self.fontPreview.setStyleSheet(u'background-color: %s; color: %s' % (self.bg_color, self.font_color))
|
||||
self.changed = True
|
||||
|
||||
|
@ -179,27 +179,13 @@ class BiblesTab(SettingsTab):
|
||||
self.rangeSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'Range Separator:'))
|
||||
self.listSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'List Separator:'))
|
||||
self.endSeparatorCheckBox.setText(translate('BiblesPlugin.BiblesTab', 'End Mark:'))
|
||||
#@todo these are common so move to StringsUI and reuse.
|
||||
self.verseSeparatorLineEdit.setToolTip(
|
||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
||||
'verse separators may be defined.\nThey have to be separated '
|
||||
'by a vertical bar "|".\nPlease clear this edit line to use '
|
||||
'the default value.'))
|
||||
self.rangeSeparatorLineEdit.setToolTip(
|
||||
translate('BiblesPlugin.BiblesTab', 'Multiple alternative '
|
||||
'range separators may be defined.\nThey have to be separated '
|
||||
'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.'))
|
||||
tip_text = translate('BiblesPlugin.BiblesTab',
|
||||
'Multiple alternative verse separators may be defined.\nThey have to be separated by a vertical bar "|".'
|
||||
'\nPlease clear this edit line to use the default value.')
|
||||
self.verseSeparatorLineEdit.setToolTip(tip_text)
|
||||
self.rangeSeparatorLineEdit.setToolTip(tip_text)
|
||||
self.listSeparatorLineEdit.setToolTip(tip_text)
|
||||
self.endSeparatorLineEdit.setToolTip(tip_text)
|
||||
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:'))
|
||||
@ -368,7 +354,6 @@ class BiblesTab(SettingsTab):
|
||||
settings.setValue(u'display new chapter', self.show_new_chapters)
|
||||
settings.setValue(u'display brackets', self.display_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'bible theme', self.bible_theme)
|
||||
if self.verseSeparatorCheckBox.isChecked():
|
||||
@ -388,7 +373,10 @@ class BiblesTab(SettingsTab):
|
||||
else:
|
||||
settings.remove(u'end separator')
|
||||
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',
|
||||
translate('OpenLP.BibleTab', 'Bibles Lists updating.'))
|
||||
settings.endGroup()
|
||||
|
||||
def update_theme_list(self, theme_list):
|
||||
|
@ -365,16 +365,13 @@ class BibleDB(QtCore.QObject, Manager):
|
||||
The language selection the user has chosen in the settings
|
||||
section of the Bible.
|
||||
"""
|
||||
log.debug(u'get_book_ref_id_by_localised_name("%s", "%s")',
|
||||
book, language_selection)
|
||||
from openlp.plugins.bibles.lib import LanguageSelection, \
|
||||
BibleStrings
|
||||
log.debug(u'get_book_ref_id_by_localised_name("%s", "%s")', book, language_selection)
|
||||
from openlp.plugins.bibles.lib import LanguageSelection, BibleStrings
|
||||
book_names = BibleStrings().BookNames
|
||||
# escape reserved characters
|
||||
book_escaped = book
|
||||
for character in RESERVED_CHARACTERS:
|
||||
book_escaped = book_escaped.replace(
|
||||
character, u'\\' + character)
|
||||
book_escaped = book_escaped.replace(character, u'\\' + character)
|
||||
regex_book = re.compile(u'\s*%s\s*' % u'\s*'.join(
|
||||
book_escaped.split()), re.UNICODE | re.IGNORECASE)
|
||||
if language_selection == LanguageSelection.Bible:
|
||||
@ -382,8 +379,7 @@ class BibleDB(QtCore.QObject, Manager):
|
||||
if db_book:
|
||||
return db_book.book_reference_id
|
||||
elif language_selection == LanguageSelection.Application:
|
||||
books = filter(lambda key:
|
||||
regex_book.match(unicode(book_names[key])), book_names.keys())
|
||||
books = filter(lambda key: regex_book.match(unicode(book_names[key])), book_names.keys())
|
||||
books = filter(None, map(BiblesResourcesDB.get_book, books))
|
||||
for value in books:
|
||||
if self.get_book_by_book_ref_id(value[u'id']):
|
||||
@ -391,8 +387,7 @@ class BibleDB(QtCore.QObject, Manager):
|
||||
elif language_selection == LanguageSelection.English:
|
||||
books = BiblesResourcesDB.get_books_like(book)
|
||||
if books:
|
||||
book_list = filter(
|
||||
lambda value: regex_book.match(value[u'name']), books)
|
||||
book_list = filter(lambda value: regex_book.match(value[u'name']), books)
|
||||
if not book_list:
|
||||
book_list = books
|
||||
for value in book_list:
|
||||
|
@ -90,5 +90,4 @@ class ImageTab(SettingsTab):
|
||||
settings.setValue(u'background color', self.bg_color)
|
||||
settings.endGroup()
|
||||
if self.initial_color != self.bg_color:
|
||||
Registry().execute(u'image_updated')
|
||||
|
||||
self.settings_form.register_post_process(u'image_updated')
|
||||
|
@ -29,7 +29,8 @@
|
||||
|
||||
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):
|
||||
"""
|
||||
@ -74,15 +75,12 @@ class MediaTab(SettingsTab):
|
||||
self.autoStartCheckBox.setChecked(Settings().value(self.settingsSection + u'/media auto start'))
|
||||
|
||||
def save(self):
|
||||
override_changed = False
|
||||
setting_key = self.settingsSection + u'/override player'
|
||||
if Settings().value(setting_key) != self.overridePlayerCheckBox.checkState():
|
||||
Settings().setValue(setting_key, self.overridePlayerCheckBox.checkState())
|
||||
override_changed = True
|
||||
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||
self.settings_form.register_post_process(u'mediaitem_media_rebuild')
|
||||
self.settings_form.register_post_process(u'mediaitem_suffixes')
|
||||
setting_key = self.settingsSection + u'/media auto start'
|
||||
if Settings().value(setting_key) != self.autoStartCheckBox.checkState():
|
||||
Settings().setValue(setting_key, self.autoStartCheckBox.checkState())
|
||||
if override_changed:
|
||||
self.parent.reset_supported_suffixes()
|
||||
Registry().execute(u'mediaitem_media_rebuild')
|
||||
Registry().execute(u'mediaitem_suffixes')
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
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):
|
||||
"""
|
||||
@ -129,9 +129,9 @@ class PresentationTab(SettingsTab):
|
||||
Settings().setValue(setting_key, self.OverrideAppCheckBox.checkState())
|
||||
changed = True
|
||||
if changed:
|
||||
self.parent.reset_supported_suffixes()
|
||||
Registry().execute(u'mediaitem_presentation_rebuild')
|
||||
Registry().execute(u'mediaitem_suffixes')
|
||||
self.settings_form.register_post_process(u'mediaitem_suffix_reset')
|
||||
self.settings_form.register_post_process(u'mediaitem_presentation_rebuild')
|
||||
self.settings_form.register_post_process(u'mediaitem_suffixes')
|
||||
|
||||
def tabVisible(self):
|
||||
"""
|
||||
|
@ -181,18 +181,6 @@ class HttpServer(object):
|
||||
Registry().register_function(u'slidecontroller_live_started', self.item_change)
|
||||
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 close(self):
|
||||
"""
|
||||
Close down the http server.
|
||||
@ -292,8 +280,8 @@ class HttpConnection(object):
|
||||
Read the service item in use and return the data as a json object
|
||||
"""
|
||||
service_items = []
|
||||
if self.parent.current_item:
|
||||
current_unique_identifier = self.parent.current_item.unique_identifier
|
||||
if self.live_controller.service_item:
|
||||
current_unique_identifier = self.live_controller.service_item.unique_identifier
|
||||
else:
|
||||
current_unique_identifier = None
|
||||
for item in self.service_manager.service_items:
|
||||
@ -395,8 +383,8 @@ class HttpConnection(object):
|
||||
"""
|
||||
result = {
|
||||
u'service': self.service_manager.service_id,
|
||||
u'slide': self.parent.current_slide or 0,
|
||||
u'item': self.parent.current_item.unique_identifier if self.parent.current_item else u'',
|
||||
u'slide': self.live_controller.selected_row or 0,
|
||||
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'blank': self.live_controller.blank_screen.isChecked(),
|
||||
u'theme': self.live_controller.theme_screen.isChecked(),
|
||||
@ -447,7 +435,7 @@ class HttpConnection(object):
|
||||
"""
|
||||
event = u'slidecontroller_%s_%s' % (display_type, action)
|
||||
if action == u'text':
|
||||
current_item = self.parent.current_item
|
||||
current_item = self.live_controller.service_item
|
||||
data = []
|
||||
if current_item:
|
||||
for index, frame in enumerate(current_item.get_frames()):
|
||||
@ -463,11 +451,11 @@ class HttpConnection(object):
|
||||
item[u'tag'] = unicode(index + 1)
|
||||
item[u'text'] = 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)
|
||||
json_data = {u'results': {u'slides': data}}
|
||||
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:
|
||||
if self.url_params and self.url_params.get(u'data'):
|
||||
try:
|
||||
|
@ -1,14 +1,16 @@
|
||||
--- openlp/core/resources.py.old Mon Jun 21 23:16:19 2010
|
||||
+++ openlp/core/resources.py Mon Jun 21 23:27:48 2010
|
||||
=== modified file 'openlp/core/resources.py'
|
||||
--- 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 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
||||
|
||||
-
|
||||
-# Resource object code
|
||||
-#
|
||||
-#
|
||||
-# 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 #
|
||||
+# --------------------------------------------------------------------------- #
|
||||
@ -41,23 +43,21 @@
|
||||
from PyQt4 import QtCore
|
||||
|
||||
qt_resource_data = "\
|
||||
@@ -48643,9 +48664,16 @@
|
||||
@@ -71953,9 +71978,14 @@
|
||||
"
|
||||
|
||||
def qInitResources():
|
||||
- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
+ """
|
||||
+ Initialise OpenLP resources at application startup.
|
||||
+ """
|
||||
+ QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name,
|
||||
+ qt_resource_data)
|
||||
QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
- QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
+ """
|
||||
+ Cleanup OpenLP resources when the application shuts down.
|
||||
+ """
|
||||
+ QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name,
|
||||
+ qt_resource_data)
|
||||
QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
-qInitResources()
|
||||
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
import os
|
||||
from unittest import TestCase
|
||||
|
||||
from PyQt4 import QtGui
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Registry, ImageManager, ScreenList
|
||||
|
||||
@ -43,6 +43,12 @@ class TestImageManager(TestCase):
|
||||
# THEN returned record is a type of image
|
||||
self.assertEqual(isinstance(image, QtGui.QImage), True, u'The returned object should be a QImage')
|
||||
|
||||
# WHEN: The image bytes are requested.
|
||||
byte_array = self.image_manager.get_image_bytes(TEST_PATH, u'church.jpg')
|
||||
|
||||
# THEN: Type should be a byte array.
|
||||
self.assertEqual(isinstance(byte_array, QtCore.QByteArray), True, u'The returned object should be a QByteArray')
|
||||
|
||||
# WHEN the image is retrieved has not been loaded
|
||||
# THEN a KeyError is thrown
|
||||
with self.assertRaises(KeyError) as context:
|
||||
|
@ -8,6 +8,7 @@ from openlp.core.lib import Registry
|
||||
from openlp.core.ui import filerenameform
|
||||
from PyQt4 import QtGui, QtTest
|
||||
|
||||
|
||||
class TestStartFileRenameForm(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -10,7 +10,6 @@ from openlp.core.lib import Registry
|
||||
from openlp.core.ui import servicenoteform
|
||||
|
||||
|
||||
|
||||
class TestStartNoteDialog(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -41,8 +40,8 @@ class TestStartNoteDialog(TestCase):
|
||||
# WHEN displaying the UI and pressing enter
|
||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||
self.form.exec_()
|
||||
okWidget = self.form.button_box.button(self.form.button_box.Save)
|
||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
||||
ok_widget = self.form.button_box.button(self.form.button_box.Save)
|
||||
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||
|
||||
# THEN the following input text is returned
|
||||
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)
|
||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||
self.form.exec_()
|
||||
okWidget = self.form.button_box.button(self.form.button_box.Save)
|
||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
||||
ok_widget = self.form.button_box.button(self.form.button_box.Save)
|
||||
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||
|
||||
# THEN the following text is returned
|
||||
self.assertEqual(self.form.text_edit.toPlainText(), text, u'The text originally entered should still be there')
|
||||
|
110
tests/interfaces/openlp_core_ui/test_settings_form.py
Normal file
110
tests/interfaces/openlp_core_ui/test_settings_form.py
Normal file
@ -0,0 +1,110 @@
|
||||
"""
|
||||
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.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'
|
@ -72,8 +72,8 @@ class TestStartTimeDialog(TestCase):
|
||||
self.form.item = {u'service_item': mocked_serviceitem}
|
||||
with patch(u'PyQt4.QtGui.QDialog.exec_'):
|
||||
self.form.exec_()
|
||||
okWidget = self.form.button_box.button(self.form.button_box.Ok)
|
||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
||||
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||
|
||||
# THEN the following input values are returned
|
||||
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
||||
@ -87,8 +87,8 @@ class TestStartTimeDialog(TestCase):
|
||||
self.form.exec_()
|
||||
self.form.minuteSpinBox.setValue(2)
|
||||
self.form.secondSpinBox.setValue(3)
|
||||
okWidget = self.form.button_box.button(self.form.button_box.Ok)
|
||||
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
|
||||
ok_widget = self.form.button_box.button(self.form.button_box.Ok)
|
||||
QtTest.QTest.mouseClick(ok_widget, QtCore.Qt.LeftButton)
|
||||
|
||||
# THEN the following values are returned
|
||||
self.assertEqual(self.form.hourSpinBox.value(), 0)
|
||||
|
Loading…
Reference in New Issue
Block a user