forked from openlp/openlp
Add slide numbers in footers
This commit is contained in:
parent
911a3528b7
commit
3bbb46cdd3
@ -168,6 +168,7 @@ class Settings(QtCore.QSettings):
|
|||||||
'advanced/save current plugin': False,
|
'advanced/save current plugin': False,
|
||||||
'advanced/slide limits': SlideLimits.End,
|
'advanced/slide limits': SlideLimits.End,
|
||||||
'advanced/slide max height': -4,
|
'advanced/slide max height': -4,
|
||||||
|
'advanced/slide numbers in footer': False,
|
||||||
'advanced/single click preview': False,
|
'advanced/single click preview': False,
|
||||||
'advanced/single click service preview': False,
|
'advanced/single click service preview': False,
|
||||||
'advanced/x11 bypass wm': X11_BYPASS_DEFAULT,
|
'advanced/x11 bypass wm': X11_BYPASS_DEFAULT,
|
||||||
|
@ -282,6 +282,10 @@ var Display = {
|
|||||||
let isDisplay = options.isDisplay || false;
|
let isDisplay = options.isDisplay || false;
|
||||||
let doItemTransitions = options.doItemTransitions || false;
|
let doItemTransitions = options.doItemTransitions || false;
|
||||||
let hideMouse = options.hideMouse || false;
|
let hideMouse = options.hideMouse || false;
|
||||||
|
if (options.slideNumbersInFooter) {
|
||||||
|
Display._revealConfig.slideNumber = "c/t";
|
||||||
|
}
|
||||||
|
|
||||||
// Now continue to initialisation
|
// Now continue to initialisation
|
||||||
if (!isDisplay) {
|
if (!isDisplay) {
|
||||||
document.body.classList.add('checkerboard');
|
document.body.classList.add('checkerboard');
|
||||||
@ -566,9 +570,7 @@ var Display = {
|
|||||||
* Display the next alert in the queue
|
* Display the next alert in the queue
|
||||||
*/
|
*/
|
||||||
showNextAlert: function () {
|
showNextAlert: function () {
|
||||||
console.log("showNextAlert");
|
|
||||||
if (Display._alerts.length > 0) {
|
if (Display._alerts.length > 0) {
|
||||||
console.log("Showing next alert");
|
|
||||||
var alertObject = Display._alerts.shift();
|
var alertObject = Display._alerts.shift();
|
||||||
Display._alertState = AlertState.DisplayingFromQueue;
|
Display._alertState = AlertState.DisplayingFromQueue;
|
||||||
Display.showAlert(alertObject.text, alertObject.settings);
|
Display.showAlert(alertObject.text, alertObject.settings);
|
||||||
|
@ -212,13 +212,15 @@ class DisplayWindow(QtWidgets.QWidget, RegistryProperties, LogMixin):
|
|||||||
js_is_display = str(self.is_display).lower()
|
js_is_display = str(self.is_display).lower()
|
||||||
item_transitions = str(self.settings.value('themes/item transitions')).lower()
|
item_transitions = str(self.settings.value('themes/item transitions')).lower()
|
||||||
hide_mouse = str(self.settings.value('advanced/hide mouse') and self.is_display).lower()
|
hide_mouse = str(self.settings.value('advanced/hide mouse') and self.is_display).lower()
|
||||||
|
slide_numbers_in_footer = str(self.settings.value('advanced/slide numbers in footer')).lower()
|
||||||
self.run_javascript('Display.init({{'
|
self.run_javascript('Display.init({{'
|
||||||
'isDisplay: {is_display},'
|
'isDisplay: {is_display},'
|
||||||
'doItemTransitions: {do_item_transitions},'
|
'doItemTransitions: {do_item_transitions},'
|
||||||
|
'slideNumbersInFooter: {slide_numbers_in_footer},'
|
||||||
'hideMouse: {hide_mouse}'
|
'hideMouse: {hide_mouse}'
|
||||||
'}});'
|
'}});'
|
||||||
.format(is_display=js_is_display, do_item_transitions=item_transitions,
|
.format(is_display=js_is_display, do_item_transitions=item_transitions,
|
||||||
hide_mouse=hide_mouse))
|
slide_numbers_in_footer=slide_numbers_in_footer, hide_mouse=hide_mouse))
|
||||||
wait_for(lambda: self._is_initialised)
|
wait_for(lambda: self._is_initialised)
|
||||||
if self.scale != 1:
|
if self.scale != 1:
|
||||||
self.set_scale(self.scale)
|
self.set_scale(self.scale)
|
||||||
|
@ -157,6 +157,9 @@ class GeneralTab(SettingsTab):
|
|||||||
self.autoscroll_combo_box.setObjectName('autoscroll_combo_box')
|
self.autoscroll_combo_box.setObjectName('autoscroll_combo_box')
|
||||||
self.ui_layout.addRow(self.autoscroll_label)
|
self.ui_layout.addRow(self.autoscroll_label)
|
||||||
self.ui_layout.addRow(self.autoscroll_combo_box)
|
self.ui_layout.addRow(self.autoscroll_combo_box)
|
||||||
|
self.slide_no_in_footer_checkbox = QtWidgets.QCheckBox(self.ui_group_box)
|
||||||
|
self.slide_no_in_footer_checkbox.setObjectName('SlideNumbersInFooter_check_box')
|
||||||
|
self.ui_layout.addRow(self.slide_no_in_footer_checkbox)
|
||||||
self.search_as_type_check_box = QtWidgets.QCheckBox(self.ui_group_box)
|
self.search_as_type_check_box = QtWidgets.QCheckBox(self.ui_group_box)
|
||||||
self.search_as_type_check_box.setObjectName('SearchAsType_check_box')
|
self.search_as_type_check_box.setObjectName('SearchAsType_check_box')
|
||||||
self.ui_layout.addRow(self.search_as_type_check_box)
|
self.ui_layout.addRow(self.search_as_type_check_box)
|
||||||
@ -241,6 +244,7 @@ class GeneralTab(SettingsTab):
|
|||||||
'Auto-scroll the next slide to bottom'))
|
'Auto-scroll the next slide to bottom'))
|
||||||
self.enable_auto_close_check_box.setText(translate('OpenLP.AdvancedTab',
|
self.enable_auto_close_check_box.setText(translate('OpenLP.AdvancedTab',
|
||||||
'Enable application exit confirmation'))
|
'Enable application exit confirmation'))
|
||||||
|
self.slide_no_in_footer_checkbox.setText(translate('SongsPlugin.GeneralTab', 'Include slide number in footer'))
|
||||||
self.search_as_type_check_box.setText(translate('SongsPlugin.GeneralTab', 'Enable search as you type'))
|
self.search_as_type_check_box.setText(translate('SongsPlugin.GeneralTab', 'Enable search as you type'))
|
||||||
if not is_win() and HAS_DARK_STYLE:
|
if not is_win() and HAS_DARK_STYLE:
|
||||||
self.use_dark_style_checkbox.setText(translate('OpenLP.AdvancedTab', 'Use dark style (needs restart)'))
|
self.use_dark_style_checkbox.setText(translate('OpenLP.AdvancedTab', 'Use dark style (needs restart)'))
|
||||||
@ -280,6 +284,7 @@ class GeneralTab(SettingsTab):
|
|||||||
if self.autoscroll_map[i] == autoscroll_value and i < self.autoscroll_combo_box.count():
|
if self.autoscroll_map[i] == autoscroll_value and i < self.autoscroll_combo_box.count():
|
||||||
self.autoscroll_combo_box.setCurrentIndex(i)
|
self.autoscroll_combo_box.setCurrentIndex(i)
|
||||||
self.enable_auto_close_check_box.setChecked(self.settings.value('advanced/enable exit confirmation'))
|
self.enable_auto_close_check_box.setChecked(self.settings.value('advanced/enable exit confirmation'))
|
||||||
|
self.slide_no_in_footer_checkbox.setChecked(self.settings.value('advanced/slide numbers in footer'))
|
||||||
if not is_win() and HAS_DARK_STYLE:
|
if not is_win() and HAS_DARK_STYLE:
|
||||||
self.use_dark_style_checkbox.setChecked(self.settings.value('advanced/use_dark_style'))
|
self.use_dark_style_checkbox.setChecked(self.settings.value('advanced/use_dark_style'))
|
||||||
self.hide_mouse_check_box.setChecked(self.settings.value('advanced/hide mouse'))
|
self.hide_mouse_check_box.setChecked(self.settings.value('advanced/hide mouse'))
|
||||||
@ -310,6 +315,7 @@ class GeneralTab(SettingsTab):
|
|||||||
slide_max_height_value = self.slide_max_height_combo_box.itemData(slide_max_height_index)
|
slide_max_height_value = self.slide_max_height_combo_box.itemData(slide_max_height_index)
|
||||||
self.settings.setValue('advanced/slide max height', slide_max_height_value)
|
self.settings.setValue('advanced/slide max height', slide_max_height_value)
|
||||||
self.settings.setValue('advanced/autoscrolling', self.autoscroll_map[self.autoscroll_combo_box.currentIndex()])
|
self.settings.setValue('advanced/autoscrolling', self.autoscroll_map[self.autoscroll_combo_box.currentIndex()])
|
||||||
|
self.settings.setValue('advanced/slide numbers in footer', self.slide_no_in_footer_checkbox.isChecked())
|
||||||
self.settings.setValue('advanced/enable exit confirmation', self.enable_auto_close_check_box.isChecked())
|
self.settings.setValue('advanced/enable exit confirmation', self.enable_auto_close_check_box.isChecked())
|
||||||
self.settings.setValue('advanced/hide mouse', self.hide_mouse_check_box.isChecked())
|
self.settings.setValue('advanced/hide mouse', self.hide_mouse_check_box.isChecked())
|
||||||
self.settings.setValue('advanced/search as type', self.is_search_as_you_type_enabled)
|
self.settings.setValue('advanced/search as type', self.is_search_as_you_type_enabled)
|
||||||
|
@ -255,6 +255,7 @@ def test_after_loaded(display_window_env, mock_settings):
|
|||||||
display_window.run_javascript.assert_called_once_with('Display.init({'
|
display_window.run_javascript.assert_called_once_with('Display.init({'
|
||||||
'isDisplay: true,'
|
'isDisplay: true,'
|
||||||
'doItemTransitions: true,'
|
'doItemTransitions: true,'
|
||||||
|
'slideNumbersInFooter: true,'
|
||||||
'hideMouse: true'
|
'hideMouse: true'
|
||||||
'});')
|
'});')
|
||||||
display_window.set_scale.assert_called_once_with(2)
|
display_window.set_scale.assert_called_once_with(2)
|
||||||
@ -282,6 +283,7 @@ def test_after_loaded_hide_mouse_not_display(display_window_env, mock_settings):
|
|||||||
display_window.run_javascript.assert_called_once_with('Display.init({'
|
display_window.run_javascript.assert_called_once_with('Display.init({'
|
||||||
'isDisplay: false,'
|
'isDisplay: false,'
|
||||||
'doItemTransitions: true,'
|
'doItemTransitions: true,'
|
||||||
|
'slideNumbersInFooter: true,'
|
||||||
'hideMouse: false'
|
'hideMouse: false'
|
||||||
'});')
|
'});')
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ Package to test the openlp.core.ui.generaltab package.
|
|||||||
from openlp.core.ui.generaltab import GeneralTab
|
from openlp.core.ui.generaltab import GeneralTab
|
||||||
from openlp.core.ui.settingsform import SettingsForm
|
from openlp.core.ui.settingsform import SettingsForm
|
||||||
|
|
||||||
|
from PyQt5 import QtCore, QtTest
|
||||||
|
|
||||||
|
|
||||||
def test_creation(settings):
|
def test_creation(settings):
|
||||||
"""
|
"""
|
||||||
@ -54,3 +56,21 @@ def test_change_search_as_type(settings):
|
|||||||
assert 2 == len(settings_form.processes), 'Two post save processes should be created'
|
assert 2 == len(settings_form.processes), 'Two post save processes should be created'
|
||||||
assert "songs_config_updated" in settings_form.processes, 'The songs plugin should be called'
|
assert "songs_config_updated" in settings_form.processes, 'The songs plugin should be called'
|
||||||
assert "custom_config_updated" in settings_form.processes, 'The custom plugin should be called'
|
assert "custom_config_updated" in settings_form.processes, 'The custom plugin should be called'
|
||||||
|
|
||||||
|
|
||||||
|
def test_slide_numbers_in_footer(settings):
|
||||||
|
"""
|
||||||
|
Test that when the slide number in footers option is changed then the settings are updated
|
||||||
|
"""
|
||||||
|
# GIVEN: Settings, a settings form and a general tab
|
||||||
|
settings.setValue('advanced/slide numbers in footer', False)
|
||||||
|
settings_form = SettingsForm(None)
|
||||||
|
general_tab = GeneralTab(settings_form)
|
||||||
|
settings_form.insert_tab(general_tab, is_visible=True)
|
||||||
|
|
||||||
|
# WHEN: I click the checkbox and then save
|
||||||
|
QtTest.QTest.mouseClick(general_tab.slide_no_in_footer_checkbox, QtCore.Qt.LeftButton)
|
||||||
|
settings_form.accept()
|
||||||
|
|
||||||
|
# THEN: the settings should be updated
|
||||||
|
assert settings.value('advanced/slide numbers in footer') is True
|
||||||
|
Loading…
Reference in New Issue
Block a user