forked from openlp/openlp
Merge branch 'improve-help' into 'master'
Improve help Closes #777 See merge request openlp/openlp!344
This commit is contained in:
commit
b5a5cf82c4
@ -87,6 +87,8 @@ def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
|||||||
buttons |= QtWidgets.QDialogButtonBox.Cancel
|
buttons |= QtWidgets.QDialogButtonBox.Cancel
|
||||||
if 'close' in standard_buttons:
|
if 'close' in standard_buttons:
|
||||||
buttons |= QtWidgets.QDialogButtonBox.Close
|
buttons |= QtWidgets.QDialogButtonBox.Close
|
||||||
|
if 'help' in standard_buttons and hasattr(dialog, 'provide_help'):
|
||||||
|
buttons |= QtWidgets.QDialogButtonBox.Help
|
||||||
if 'defaults' in standard_buttons:
|
if 'defaults' in standard_buttons:
|
||||||
buttons |= QtWidgets.QDialogButtonBox.RestoreDefaults
|
buttons |= QtWidgets.QDialogButtonBox.RestoreDefaults
|
||||||
button_box = QtWidgets.QDialogButtonBox(dialog)
|
button_box = QtWidgets.QDialogButtonBox(dialog)
|
||||||
@ -99,6 +101,8 @@ def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
|||||||
button_box.addButton(*button)
|
button_box.addButton(*button)
|
||||||
button_box.accepted.connect(dialog.accept)
|
button_box.accepted.connect(dialog.accept)
|
||||||
button_box.rejected.connect(dialog.reject)
|
button_box.rejected.connect(dialog.reject)
|
||||||
|
if 'help' in standard_buttons and hasattr(dialog, 'provide_help'):
|
||||||
|
button_box.helpRequested.connect(dialog.provide_help)
|
||||||
return button_box
|
return button_box
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import urllib.request
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from tempfile import gettempdir
|
from tempfile import gettempdir
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.api.deploy import get_latest_size, download_and_check
|
from openlp.core.api.deploy import get_latest_size, download_and_check
|
||||||
from openlp.core.common import trace_error_handler
|
from openlp.core.common import trace_error_handler
|
||||||
@ -100,7 +100,8 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties):
|
|||||||
"""
|
"""
|
||||||
Create and set up the first time wizard.
|
Create and set up the first time wizard.
|
||||||
"""
|
"""
|
||||||
super(FirstTimeForm, self).__init__(parent)
|
super(FirstTimeForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
|
||||||
|
QtCore.Qt.WindowCloseButtonHint)
|
||||||
self.has_web_access = True
|
self.has_web_access = True
|
||||||
self.web = ''
|
self.web = ''
|
||||||
self.is_index_downloaded = False
|
self.is_index_downloaded = False
|
||||||
@ -109,6 +110,14 @@ class FirstTimeForm(QtWidgets.QWizard, UiFirstTimeWizard, RegistryProperties):
|
|||||||
self.themes_list_widget.itemSelectionChanged.connect(self.on_themes_list_widget_selection_changed)
|
self.themes_list_widget.itemSelectionChanged.connect(self.on_themes_list_widget_selection_changed)
|
||||||
self.themes_deselect_all_button.clicked.connect(self.themes_list_widget.clearSelection)
|
self.themes_deselect_all_button.clicked.connect(self.themes_list_widget.clearSelection)
|
||||||
self.themes_select_all_button.clicked.connect(self.themes_list_widget.selectAll)
|
self.themes_select_all_button.clicked.connect(self.themes_list_widget.selectAll)
|
||||||
|
self.setOption(QtWidgets.QWizard.HaveHelpButton, True)
|
||||||
|
self.helpRequested.connect(self.provide_help)
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the wizard by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/wizard.html"))
|
||||||
|
|
||||||
def get_next_page_id(self):
|
def get_next_page_id(self):
|
||||||
"""
|
"""
|
||||||
|
@ -51,7 +51,7 @@ class Ui_SettingsDialog(object):
|
|||||||
self.stacked_layout = QtWidgets.QStackedLayout()
|
self.stacked_layout = QtWidgets.QStackedLayout()
|
||||||
self.stacked_layout.setObjectName('stacked_layout')
|
self.stacked_layout.setObjectName('stacked_layout')
|
||||||
self.dialog_layout.addLayout(self.stacked_layout, 0, 1, 1, 1)
|
self.dialog_layout.addLayout(self.stacked_layout, 0, 1, 1, 1)
|
||||||
self.button_box = create_button_box(settings_dialog, 'button_box', ['cancel', 'ok'])
|
self.button_box = create_button_box(settings_dialog, 'button_box', ['cancel', 'ok', 'help'])
|
||||||
self.dialog_layout.addWidget(self.button_box, 1, 1, 1, 1)
|
self.dialog_layout.addWidget(self.button_box, 1, 1, 1, 1)
|
||||||
self.retranslate_ui(settings_dialog)
|
self.retranslate_ui(settings_dialog)
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ The :mod:`settingsform` provides a user interface for the OpenLP settings
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.state import State
|
from openlp.core.state import State
|
||||||
from openlp.core.api.tab import ApiTab
|
from openlp.core.api.tab import ApiTab
|
||||||
@ -210,3 +210,9 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties):
|
|||||||
"""
|
"""
|
||||||
if function not in self.processes:
|
if function not in self.processes:
|
||||||
self.processes.append(function)
|
self.processes.append(function)
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/configure.html"))
|
||||||
|
@ -52,7 +52,8 @@ class ThemeForm(QtWidgets.QWizard, Ui_ThemeWizard, RegistryProperties):
|
|||||||
|
|
||||||
:param parent: The QWidget-derived parent of the wizard.
|
:param parent: The QWidget-derived parent of the wizard.
|
||||||
"""
|
"""
|
||||||
super(ThemeForm, self).__init__(parent)
|
super(ThemeForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint |
|
||||||
|
QtCore.Qt.WindowCloseButtonHint)
|
||||||
self._setup()
|
self._setup()
|
||||||
|
|
||||||
def _setup(self):
|
def _setup(self):
|
||||||
@ -75,6 +76,14 @@ class ThemeForm(QtWidgets.QWizard, Ui_ThemeWizard, RegistryProperties):
|
|||||||
self.main_area_page.shadow_size_changed.connect(self.calculate_lines)
|
self.main_area_page.shadow_size_changed.connect(self.calculate_lines)
|
||||||
self.footer_area_page.font_name_changed.connect(self.update_theme)
|
self.footer_area_page.font_name_changed.connect(self.update_theme)
|
||||||
self.footer_area_page.font_size_changed.connect(self.update_theme)
|
self.footer_area_page.font_size_changed.connect(self.update_theme)
|
||||||
|
self.setOption(QtWidgets.QWizard.HaveHelpButton, True)
|
||||||
|
self.helpRequested.connect(self.provide_help)
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the wizard by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/themes.html"))
|
||||||
|
|
||||||
def set_defaults(self):
|
def set_defaults(self):
|
||||||
"""
|
"""
|
||||||
|
@ -125,6 +125,10 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties):
|
|||||||
self.setModal(True)
|
self.setModal(True)
|
||||||
self.setOptions(QtWidgets.QWizard.IndependentPages |
|
self.setOptions(QtWidgets.QWizard.IndependentPages |
|
||||||
QtWidgets.QWizard.NoBackButtonOnStartPage | QtWidgets.QWizard.NoBackButtonOnLastPage)
|
QtWidgets.QWizard.NoBackButtonOnStartPage | QtWidgets.QWizard.NoBackButtonOnLastPage)
|
||||||
|
# Set up a help button if the class of this instance has overridden the provide_help method
|
||||||
|
if (self.provide_help.__module__ != __name__):
|
||||||
|
self.setOption(QtWidgets.QWizard.HaveHelpButton, True)
|
||||||
|
self.helpRequested.connect(self.provide_help)
|
||||||
if is_macosx():
|
if is_macosx():
|
||||||
self.setPixmap(QtWidgets.QWizard.BackgroundPixmap, QtGui.QPixmap(':/wizards/openlp-osx-wizard.png'))
|
self.setPixmap(QtWidgets.QWizard.BackgroundPixmap, QtGui.QPixmap(':/wizards/openlp-osx-wizard.png'))
|
||||||
else:
|
else:
|
||||||
@ -277,3 +281,9 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties):
|
|||||||
self.finish_button.setVisible(True)
|
self.finish_button.setVisible(True)
|
||||||
self.cancel_button.setVisible(False)
|
self.cancel_button.setVisible(False)
|
||||||
self.application.process_events()
|
self.application.process_events()
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help - usually by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
@ -79,7 +79,7 @@ class AlertDialog(object):
|
|||||||
self.display_button = create_button(alert_dialog, 'display_button', icon=UiIcons().live, enabled=False)
|
self.display_button = create_button(alert_dialog, 'display_button', icon=UiIcons().live, enabled=False)
|
||||||
self.display_close_button = create_button(alert_dialog, 'display_close_button', icon=UiIcons().live,
|
self.display_close_button = create_button(alert_dialog, 'display_close_button', icon=UiIcons().live,
|
||||||
enabled=False)
|
enabled=False)
|
||||||
self.button_box = create_button_box(alert_dialog, 'button_box', ['close'],
|
self.button_box = create_button_box(alert_dialog, 'button_box', ['close', 'help'],
|
||||||
[self.display_button, self.display_close_button])
|
[self.display_button, self.display_close_button])
|
||||||
self.alert_dialog_layout.addWidget(self.button_box, 2, 0, 1, 2)
|
self.alert_dialog_layout.addWidget(self.button_box, 2, 0, 1, 2)
|
||||||
self.retranslate_ui(alert_dialog)
|
self.retranslate_ui(alert_dialog)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import translate
|
from openlp.core.common.i18n import translate
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
@ -217,3 +217,9 @@ class AlertForm(QtWidgets.QDialog, AlertDialog):
|
|||||||
self.delete_button.setEnabled(True)
|
self.delete_button.setEnabled(True)
|
||||||
# We do not need to enable the save button, as it is only enabled
|
# We do not need to enable the save button, as it is only enabled
|
||||||
# when typing text in the "alert_text_edit".
|
# when typing text in the "alert_text_edit".
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/alert.html"))
|
||||||
|
@ -25,7 +25,7 @@ import logging
|
|||||||
import urllib.error
|
import urllib.error
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets, QtGui, QtCore
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from pysword import modules
|
from pysword import modules
|
||||||
@ -773,3 +773,9 @@ class BibleImportForm(OpenLPWizard):
|
|||||||
# Don't delete the db if it wasen't created
|
# Don't delete the db if it wasen't created
|
||||||
if hasattr(importer, 'file'):
|
if hasattr(importer, 'file'):
|
||||||
delete_database(self.plugin.settings_section, importer.file)
|
delete_database(self.plugin.settings_section, importer.file)
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the wizard by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/bibles.html"))
|
||||||
|
@ -123,7 +123,7 @@ class Ui_EditBibleDialog(object):
|
|||||||
self.bible_tab_widget.addTab(self.book_name_tab, '')
|
self.bible_tab_widget.addTab(self.book_name_tab, '')
|
||||||
# Last few bits
|
# Last few bits
|
||||||
self.dialog_layout.addWidget(self.bible_tab_widget)
|
self.dialog_layout.addWidget(self.bible_tab_widget)
|
||||||
self.button_box = create_button_box(edit_bible_dialog, 'button_box', ['cancel', 'save'])
|
self.button_box = create_button_box(edit_bible_dialog, 'button_box', ['cancel', 'save', 'help'])
|
||||||
self.dialog_layout.addWidget(self.button_box)
|
self.dialog_layout.addWidget(self.button_box)
|
||||||
self.retranslate_ui(edit_bible_dialog)
|
self.retranslate_ui(edit_bible_dialog)
|
||||||
QtCore.QMetaObject.connectSlotsByName(edit_bible_dialog)
|
QtCore.QMetaObject.connectSlotsByName(edit_bible_dialog)
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import UiStrings, translate
|
from openlp.core.common.i18n import UiStrings, translate
|
||||||
from openlp.core.common.mixins import RegistryProperties
|
from openlp.core.common.mixins import RegistryProperties
|
||||||
@ -213,3 +213,9 @@ class EditBibleForm(QtWidgets.QDialog, Ui_EditBibleDialog, RegistryProperties):
|
|||||||
'The Book Name "{name}" has been entered more than once.').format(name=new_book_name))
|
'The Book Name "{name}" has been entered more than once.').format(name=new_book_name))
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/bibles.html#edit-bible-data"))
|
||||||
|
@ -94,7 +94,7 @@ class Ui_CustomEditDialog(object):
|
|||||||
self.bottom_form_layout.addRow(self.credit_label, self.credit_edit)
|
self.bottom_form_layout.addRow(self.credit_label, self.credit_edit)
|
||||||
self.dialog_layout.addLayout(self.bottom_form_layout)
|
self.dialog_layout.addLayout(self.bottom_form_layout)
|
||||||
self.preview_button = QtWidgets.QPushButton()
|
self.preview_button = QtWidgets.QPushButton()
|
||||||
self.button_box = create_button_box(custom_edit_dialog, 'button_box', ['cancel', 'save'],
|
self.button_box = create_button_box(custom_edit_dialog, 'button_box', ['cancel', 'save', 'help'],
|
||||||
[self.preview_button])
|
[self.preview_button])
|
||||||
self.save_button = self.button_box.button(QtWidgets.QDialogButtonBox.Save)
|
self.save_button = self.button_box.button(QtWidgets.QDialogButtonBox.Save)
|
||||||
self.dialog_layout.addWidget(self.button_box)
|
self.dialog_layout.addWidget(self.button_box)
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import translate
|
from openlp.core.common.i18n import translate
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
@ -244,3 +244,9 @@ class EditCustomForm(QtWidgets.QDialog, Ui_CustomEditDialog):
|
|||||||
'You need to add at least one slide.'))
|
'You need to add at least one slide.'))
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/custom_slides.html"))
|
||||||
|
@ -289,7 +289,7 @@ class Ui_EditSongDialog(object):
|
|||||||
self.warning_label = QtWidgets.QLabel(edit_song_dialog)
|
self.warning_label = QtWidgets.QLabel(edit_song_dialog)
|
||||||
self.warning_label.setObjectName('warning_label')
|
self.warning_label.setObjectName('warning_label')
|
||||||
self.bottom_layout.addWidget(self.warning_label)
|
self.bottom_layout.addWidget(self.warning_label)
|
||||||
self.button_box = create_button_box(edit_song_dialog, 'button_box', ['cancel', 'save'])
|
self.button_box = create_button_box(edit_song_dialog, 'button_box', ['cancel', 'save', 'help'])
|
||||||
self.bottom_layout.addWidget(self.button_box)
|
self.bottom_layout.addWidget(self.button_box)
|
||||||
self.dialog_layout.addLayout(self.bottom_layout)
|
self.dialog_layout.addLayout(self.bottom_layout)
|
||||||
self.retranslate_ui(edit_song_dialog)
|
self.retranslate_ui(edit_song_dialog)
|
||||||
|
@ -26,7 +26,7 @@ import logging
|
|||||||
import re
|
import re
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.state import State
|
from openlp.core.state import State
|
||||||
from openlp.core.common.applocation import AppLocation
|
from openlp.core.common.applocation import AppLocation
|
||||||
@ -1099,3 +1099,10 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
clean_song(self.manager, self.song)
|
clean_song(self.manager, self.song)
|
||||||
self.manager.save_object(self.song)
|
self.manager.save_object(self.song)
|
||||||
self.media_item.auto_select_id = self.song.id
|
self.media_item.auto_select_id = self.song.id
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/songs.html#creating-or-editing-a-song"
|
||||||
|
"-slide"))
|
||||||
|
@ -24,7 +24,7 @@ OpenLyrics format.
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import UiStrings, translate
|
from openlp.core.common.i18n import UiStrings, translate
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
@ -290,6 +290,12 @@ class SongExportForm(OpenLPWizard):
|
|||||||
if not item.isHidden():
|
if not item.isHidden():
|
||||||
item.setCheckState(QtCore.Qt.Checked)
|
item.setCheckState(QtCore.Qt.Checked)
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the wizard by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/export_songs.html"))
|
||||||
|
|
||||||
|
|
||||||
def find_list_widget_items(list_widget, text=''):
|
def find_list_widget_items(list_widget, text=''):
|
||||||
"""
|
"""
|
||||||
|
@ -23,7 +23,7 @@ The song import functions for OpenLP.
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import UiStrings, translate
|
from openlp.core.common.i18n import UiStrings, translate
|
||||||
from openlp.core.common.mixins import RegistryProperties
|
from openlp.core.common.mixins import RegistryProperties
|
||||||
@ -463,6 +463,12 @@ class SongImportForm(OpenLPWizard, RegistryProperties):
|
|||||||
self.format_widgets[this_format]['import_widget'] = import_widget
|
self.format_widgets[this_format]['import_widget'] = import_widget
|
||||||
return import_widget
|
return import_widget
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the wizard by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/songs.html#song-importer"))
|
||||||
|
|
||||||
|
|
||||||
class SongImportSourcePage(QtWidgets.QWizardPage):
|
class SongImportSourcePage(QtWidgets.QWizardPage):
|
||||||
"""
|
"""
|
||||||
|
@ -52,7 +52,7 @@ class Ui_SongUsageDeleteDialog(object):
|
|||||||
self.delete_calendar.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader)
|
self.delete_calendar.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader)
|
||||||
self.delete_calendar.setObjectName('delete_calendar')
|
self.delete_calendar.setObjectName('delete_calendar')
|
||||||
self.vertical_layout.addWidget(self.delete_calendar)
|
self.vertical_layout.addWidget(self.delete_calendar)
|
||||||
self.button_box = create_button_box(song_usage_delete_dialog, 'button_box', ['cancel', 'ok'])
|
self.button_box = create_button_box(song_usage_delete_dialog, 'button_box', ['cancel', 'ok', 'help'])
|
||||||
self.vertical_layout.addWidget(self.button_box)
|
self.vertical_layout.addWidget(self.button_box)
|
||||||
self.retranslate_ui(song_usage_delete_dialog)
|
self.retranslate_ui(song_usage_delete_dialog)
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
|
||||||
from openlp.core.common.i18n import translate
|
from openlp.core.common.i18n import translate
|
||||||
from openlp.core.common.mixins import RegistryProperties
|
from openlp.core.common.mixins import RegistryProperties
|
||||||
@ -65,3 +65,9 @@ class SongUsageDeleteForm(QtWidgets.QDialog, Ui_SongUsageDeleteDialog, RegistryP
|
|||||||
self.accept()
|
self.accept()
|
||||||
else:
|
else:
|
||||||
self.reject()
|
self.reject()
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/song_usage.html"))
|
||||||
|
@ -71,7 +71,7 @@ class Ui_SongUsageDetailDialog(object):
|
|||||||
self.report_path_edit = PathEdit(self.file_group_box, path_type=PathEditType.Directories, show_revert=False)
|
self.report_path_edit = PathEdit(self.file_group_box, path_type=PathEditType.Directories, show_revert=False)
|
||||||
self.file_horizontal_layout.addWidget(self.report_path_edit)
|
self.file_horizontal_layout.addWidget(self.report_path_edit)
|
||||||
self.vertical_layout.addWidget(self.file_group_box)
|
self.vertical_layout.addWidget(self.file_group_box)
|
||||||
self.button_box = create_button_box(song_usage_detail_dialog, 'button_box', ['cancel', 'ok'])
|
self.button_box = create_button_box(song_usage_detail_dialog, 'button_box', ['cancel', 'ok', 'help'])
|
||||||
self.vertical_layout.addWidget(self.button_box)
|
self.vertical_layout.addWidget(self.button_box)
|
||||||
self.retranslate_ui(song_usage_detail_dialog)
|
self.retranslate_ui(song_usage_detail_dialog)
|
||||||
self.report_path_edit.pathChanged.connect(song_usage_detail_dialog.on_report_path_edit_path_changed)
|
self.report_path_edit.pathChanged.connect(song_usage_detail_dialog.on_report_path_edit_path_changed)
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
##########################################################################
|
##########################################################################
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
from sqlalchemy.sql import and_
|
from sqlalchemy.sql import and_
|
||||||
|
|
||||||
from openlp.core.common.i18n import translate
|
from openlp.core.common.i18n import translate
|
||||||
@ -119,3 +119,9 @@ class SongUsageDetailForm(QtWidgets.QDialog, Ui_SongUsageDetailDialog, RegistryP
|
|||||||
'An error occurred while creating the report: {error}'
|
'An error occurred while creating the report: {error}'
|
||||||
).format(error=ose.strerror))
|
).format(error=ose.strerror))
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
def provide_help(self):
|
||||||
|
"""
|
||||||
|
Provide help within the form by opening the appropriate page of the openlp manual in the user's browser
|
||||||
|
"""
|
||||||
|
QtGui.QDesktopServices.openUrl(QtCore.QUrl("https://manual.openlp.org/song_usage.html"))
|
||||||
|
@ -25,7 +25,7 @@ import pytest
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from unittest.mock import MagicMock, call, patch, DEFAULT
|
from unittest.mock import MagicMock, call, patch, DEFAULT
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtTest
|
||||||
|
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
from openlp.core.ui.firsttimeform import FirstTimeForm, ThemeListWidgetItem
|
from openlp.core.ui.firsttimeform import FirstTimeForm, ThemeListWidgetItem
|
||||||
@ -482,3 +482,18 @@ def test_successful_download(mocked_build_icon, mocked_set_icon):
|
|||||||
# THEN: An icon should have been built from the downloaded file and used to replace the loading icon
|
# THEN: An icon should have been built from the downloaded file and used to replace the loading icon
|
||||||
mocked_build_icon.assert_called_once_with(test_path)
|
mocked_build_icon.assert_called_once_with(test_path)
|
||||||
mocked_set_icon.assert_has_calls([call(UiIcons().picture), call(mocked_build_icon())])
|
mocked_set_icon.assert_has_calls([call(UiIcons().picture), call(mocked_build_icon())])
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(FirstTimeForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: A First Time Wizard and a patched help function
|
||||||
|
frw = FirstTimeForm(None)
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(frw.button(QtWidgets.QWizard.HelpButton), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
||||||
|
@ -23,7 +23,7 @@ Package to test the openlp.core.ui.settingsform package.
|
|||||||
"""
|
"""
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtCore, QtWidgets, QtTest
|
||||||
|
|
||||||
from openlp.core.ui.settingsform import SettingsForm
|
from openlp.core.ui.settingsform import SettingsForm
|
||||||
|
|
||||||
@ -167,3 +167,18 @@ def test_register_post_process(registry):
|
|||||||
|
|
||||||
# THEN: The fake function should be in the settings form's list
|
# THEN: The fake function should be in the settings form's list
|
||||||
assert fake_function in settings_form.processes
|
assert fake_function in settings_form.processes
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(SettingsForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: An initialised Settings form and a patched help function
|
||||||
|
settings_form = SettingsForm(None)
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(settings_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
||||||
|
43
tests/openlp_plugins/alerts/forms/test_alertform.py
Normal file
43
tests/openlp_plugins/alerts/forms/test_alertform.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2021 OpenLP Developers #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# This program is free software: you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License #
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
|
##########################################################################
|
||||||
|
"""
|
||||||
|
Package to test the openlp.plugins.alerts.forms.alertform package.
|
||||||
|
"""
|
||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
|
from openlp.plugins.alerts.forms.alertform import AlertForm
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(AlertForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: An alert form and a patched help function
|
||||||
|
alert_form = AlertForm(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(alert_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
@ -24,7 +24,7 @@ Package to test the openlp.plugins.bibles.forms.bibleimportform package.
|
|||||||
from unittest import TestCase, skip
|
from unittest import TestCase, skip
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
from openlp.plugins.bibles.forms.bibleimportform import BibleImportForm
|
from openlp.plugins.bibles.forms.bibleimportform import BibleImportForm
|
||||||
@ -89,3 +89,17 @@ class TestBibleImportForm(TestCase, TestMixin):
|
|||||||
|
|
||||||
# THEN: sword_tab_widget.setDisabled(True) should have been called
|
# THEN: sword_tab_widget.setDisabled(True) should have been called
|
||||||
self.form.sword_tab_widget.setDisabled.assert_called_with(True)
|
self.form.sword_tab_widget.setDisabled.assert_called_with(True)
|
||||||
|
|
||||||
|
@patch.object(BibleImportForm, 'provide_help')
|
||||||
|
def test_help(self, mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: A bible import wizard and a patched help function
|
||||||
|
bible_import_form = BibleImportForm(None, MagicMock(), None)
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(bible_import_form.button(QtWidgets.QWizard.HelpButton), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
||||||
|
44
tests/openlp_plugins/bibles/forms/test_editbibleform.py
Normal file
44
tests/openlp_plugins/bibles/forms/test_editbibleform.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2021 OpenLP Developers #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# This program is free software: you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License #
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
|
##########################################################################
|
||||||
|
"""
|
||||||
|
Package to test the openlp.plugins.bibles.forms.editbibleform package.
|
||||||
|
"""
|
||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
|
from openlp.plugins.bibles.forms.editbibleform import EditBibleForm
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(EditBibleForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: An edit bible form and a patched help function
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
edit_bible_form = EditBibleForm(MagicMock(), main_window, MagicMock())
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(edit_bible_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
@ -132,3 +132,19 @@ def test_update_slide_list(form):
|
|||||||
|
|
||||||
# THEN: The slides should be created in correct order
|
# THEN: The slides should be created in correct order
|
||||||
form.slide_list_view.addItems.assert_called_with(['1st Slide', '2nd Slide', '3rd Slide'])
|
form.slide_list_view.addItems.assert_called_with(['1st Slide', '2nd Slide', '3rd Slide'])
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(EditCustomForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: An edit custom slide form and a patched help function
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
custom_form = EditCustomForm(MagicMock(), main_window, MagicMock())
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(custom_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
||||||
|
@ -22,9 +22,9 @@
|
|||||||
Package to test the openlp.plugins.songs.forms.editsongform package.
|
Package to test the openlp.plugins.songs.forms.editsongform package.
|
||||||
"""
|
"""
|
||||||
import pytest
|
import pytest
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from PyQt5 import QtWidgets
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
from openlp.core.common.i18n import UiStrings
|
from openlp.core.common.i18n import UiStrings
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
@ -143,3 +143,21 @@ def test_verse_order_lowercase(form):
|
|||||||
|
|
||||||
# THEN: The verse order should be converted to uppercase
|
# THEN: The verse order should be converted to uppercase
|
||||||
assert form.verse_order_edit.text() == 'V1 V2 C1 V3 C1 V4 C1'
|
assert form.verse_order_edit.text() == 'V1 V2 C1 V3 C1 V4 C1'
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(EditSongForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: An edit song form and a patched help function
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
Registry().register('main_window', main_window)
|
||||||
|
Registry().register('theme_manager', MagicMock())
|
||||||
|
edit_song_form = EditSongForm(MagicMock(), main_window, MagicMock())
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(edit_song_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2021 OpenLP Developers #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# This program is free software: you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License #
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
|
##########################################################################
|
||||||
|
"""
|
||||||
|
Package to test the openlp.plugins.songusage.forms.songusagedeleteform package.
|
||||||
|
"""
|
||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
|
from openlp.plugins.songusage.forms.songusagedeleteform import SongUsageDeleteForm
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(SongUsageDeleteForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: A songusage delete form and a patched help function
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
delete_form = SongUsageDeleteForm(MagicMock(), main_window)
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(delete_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
@ -0,0 +1,44 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2021 OpenLP Developers #
|
||||||
|
# ---------------------------------------------------------------------- #
|
||||||
|
# This program is free software: you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License #
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
||||||
|
##########################################################################
|
||||||
|
"""
|
||||||
|
Package to test the openlp.plugins.songusage.forms.songusagedetailform package.
|
||||||
|
"""
|
||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
||||||
|
|
||||||
|
from openlp.plugins.songusage.forms.songusagedetailform import SongUsageDetailForm
|
||||||
|
|
||||||
|
|
||||||
|
@patch.object(SongUsageDetailForm, 'provide_help')
|
||||||
|
def test_help(mocked_help, settings):
|
||||||
|
"""
|
||||||
|
Test the help button
|
||||||
|
"""
|
||||||
|
# GIVEN: A songusage detail form and a patched help function
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
detail_form = SongUsageDetailForm(MagicMock(), main_window)
|
||||||
|
|
||||||
|
# WHEN: The Help button is clicked
|
||||||
|
QtTest.QTest.mouseClick(detail_form.button_box.button(QtWidgets.QDialogButtonBox.Help), QtCore.Qt.LeftButton)
|
||||||
|
|
||||||
|
# THEN: The Help function should be called
|
||||||
|
mocked_help.assert_called_once()
|
Loading…
Reference in New Issue
Block a user