This commit is contained in:
Tim Bentley 2016-01-08 17:44:47 +00:00
commit 7fd37c1033
40 changed files with 214 additions and 58 deletions

View File

@ -43,3 +43,5 @@ __pycache__
.coverage .coverage
cover cover
*.kdev4 *.kdev4
./.coveragerc
./coverage

View File

@ -24,7 +24,7 @@ The About dialog.
""" """
import webbrowser import webbrowser
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.lib import translate from openlp.core.lib import translate
from openlp.core.utils import get_application_version from openlp.core.utils import get_application_version
@ -40,7 +40,8 @@ class AboutForm(QtWidgets.QDialog, UiAboutDialog):
""" """
Do some initialisation stuff Do some initialisation stuff
""" """
super(AboutForm, self).__init__(parent) super(AboutForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self._setup() self._setup()
def _setup(self): def _setup(self):

View File

@ -89,7 +89,8 @@ class ExceptionForm(QtWidgets.QDialog, Ui_ExceptionDialog, RegistryProperties):
""" """
Constructor. Constructor.
""" """
super(ExceptionForm, self).__init__() super(ExceptionForm, self).__init__(None, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.settings_section = 'crashreport' self.settings_section = 'crashreport'
self.report_text = '**OpenLP Bug Report**\n' \ self.report_text = '**OpenLP Bug Report**\n' \

View File

@ -23,7 +23,7 @@
The file rename dialog. The file rename dialog.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from .filerenamedialog import Ui_FileRenameDialog from .filerenamedialog import Ui_FileRenameDialog
@ -38,7 +38,8 @@ class FileRenameForm(QtWidgets.QDialog, Ui_FileRenameDialog, RegistryProperties)
""" """
Constructor Constructor
""" """
super(FileRenameForm, self).__init__(Registry().get('main_window')) super(FileRenameForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self._setup() self._setup()
def _setup(self): def _setup(self):

View File

@ -22,7 +22,7 @@
""" """
The language selection dialog. The language selection dialog.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.lib.ui import create_action from openlp.core.lib.ui import create_action
from openlp.core.utils import LanguageManager from openlp.core.utils import LanguageManager
@ -37,7 +37,8 @@ class FirstTimeLanguageForm(QtWidgets.QDialog, Ui_FirstTimeLanguageDialog):
""" """
Constructor Constructor
""" """
super(FirstTimeLanguageForm, self).__init__(parent) super(FirstTimeLanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.qm_list = LanguageManager.get_qm_list() self.qm_list = LanguageManager.get_qm_list()
self.language_combo_box.addItem('Autodetect') self.language_combo_box.addItem('Autodetect')

View File

@ -25,7 +25,7 @@ Custom tags can be defined and saved. The Custom Tag arrays are saved in a json
Base Tags cannot be changed. Base Tags cannot be changed.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import translate from openlp.core.common import translate
from openlp.core.lib import FormattingTags from openlp.core.lib import FormattingTags
@ -51,7 +51,8 @@ class FormattingTagForm(QtWidgets.QDialog, Ui_FormattingTagDialog, FormattingTag
""" """
Constructor Constructor
""" """
super(FormattingTagForm, self).__init__(parent) super(FormattingTagForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self._setup() self._setup()

View File

@ -24,7 +24,7 @@ The actual plugin view form
""" """
import logging import logging
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import RegistryProperties, translate from openlp.core.common import RegistryProperties, translate
from openlp.core.lib import PluginStatus from openlp.core.lib import PluginStatus
@ -41,7 +41,8 @@ class PluginForm(QtWidgets.QDialog, Ui_PluginViewDialog, RegistryProperties):
""" """
Constructor Constructor
""" """
super(PluginForm, self).__init__(parent) super(PluginForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.active_plugin = None self.active_plugin = None
self.programatic_change = False self.programatic_change = False
self.setupUi(self) self.setupUi(self)

View File

@ -112,7 +112,8 @@ class PrintServiceForm(QtWidgets.QDialog, Ui_PrintServiceDialog, RegistryPropert
""" """
Constructor Constructor
""" """
super(PrintServiceForm, self).__init__(Registry().get('main_window')) super(PrintServiceForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self.printer = QtPrintSupport.QPrinter() self.printer = QtPrintSupport.QPrinter()
self.print_dialog = QtPrintSupport.QPrintDialog(self.printer, self) self.print_dialog = QtPrintSupport.QPrintDialog(self.printer, self)
self.document = QtGui.QTextDocument() self.document = QtGui.QTextDocument()

View File

@ -144,7 +144,8 @@ class ProjectorEditForm(QDialog, Ui_ProjectorEditForm):
editProjector = pyqtSignal(object) editProjector = pyqtSignal(object)
def __init__(self, parent=None, projectordb=None): def __init__(self, parent=None, projectordb=None):
super(ProjectorEditForm, self).__init__(parent=parent) super(ProjectorEditForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.projectordb = projectordb self.projectordb = projectordb
self.setupUi(self) self.setupUi(self)
self.button_box.accepted.connect(self.accept_me) self.button_box.accepted.connect(self.accept_me)

View File

@ -236,7 +236,8 @@ class SourceSelectTabs(QDialog):
:param projectordb: ProjectorDB session to use :param projectordb: ProjectorDB session to use
""" """
log.debug('Initializing SourceSelectTabs()') log.debug('Initializing SourceSelectTabs()')
super(SourceSelectTabs, self).__init__(parent) super(SourceSelectTabs, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setMinimumWidth(350) self.setMinimumWidth(350)
self.projectordb = projectordb self.projectordb = projectordb
self.edit = edit self.edit = edit
@ -385,7 +386,8 @@ class SourceSelectSingle(QDialog):
""" """
log.debug('Initializing SourceSelectSingle()') log.debug('Initializing SourceSelectSingle()')
self.projectordb = projectordb self.projectordb = projectordb
super(SourceSelectSingle, self).__init__(parent) super(SourceSelectSingle, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.edit = edit self.edit = edit
if self.edit: if self.edit:
title = translate('OpenLP.SourceSelectForm', 'Edit Projector Source Text') title = translate('OpenLP.SourceSelectForm', 'Edit Projector Source Text')

View File

@ -22,7 +22,7 @@
""" """
The service item edit dialog The service item edit dialog
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import Registry, RegistryProperties from openlp.core.common import Registry, RegistryProperties
@ -37,7 +37,8 @@ class ServiceItemEditForm(QtWidgets.QDialog, Ui_ServiceItemEditDialog, RegistryP
""" """
Constructor Constructor
""" """
super(ServiceItemEditForm, self).__init__(Registry().get('main_window')) super(ServiceItemEditForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.item_list = [] self.item_list = []
self.list_widget.currentRowChanged.connect(self.on_current_row_changed) self.list_widget.currentRowChanged.connect(self.on_current_row_changed)

View File

@ -22,7 +22,7 @@
""" """
The :mod:`~openlp.core.ui.servicenoteform` module contains the `ServiceNoteForm` class. The :mod:`~openlp.core.ui.servicenoteform` module contains the `ServiceNoteForm` class.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import Registry, RegistryProperties, translate from openlp.core.common import Registry, RegistryProperties, translate
from openlp.core.lib import SpellTextEdit from openlp.core.lib import SpellTextEdit
@ -37,7 +37,8 @@ class ServiceNoteForm(QtWidgets.QDialog, RegistryProperties):
""" """
Constructor Constructor
""" """
super(ServiceNoteForm, self).__init__(Registry().get('main_window')) super(ServiceNoteForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self.setupUi() self.setupUi()
self.retranslateUi() self.retranslateUi()

View File

@ -46,7 +46,8 @@ class SettingsForm(QtWidgets.QDialog, Ui_SettingsDialog, RegistryProperties):
""" """
Registry().register('settings_form', self) Registry().register('settings_form', self)
Registry().register_function('bootstrap_post_set_up', self.bootstrap_post_set_up) Registry().register_function('bootstrap_post_set_up', self.bootstrap_post_set_up)
super(SettingsForm, self).__init__(parent) super(SettingsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.processes = [] self.processes = []
self.setupUi(self) self.setupUi(self)
self.setting_list_widget.currentRowChanged.connect(self.list_item_changed) self.setting_list_widget.currentRowChanged.connect(self.list_item_changed)

View File

@ -44,7 +44,8 @@ class ShortcutListForm(QtWidgets.QDialog, Ui_ShortcutListDialog, RegistryPropert
""" """
Constructor Constructor
""" """
super(ShortcutListForm, self).__init__(parent) super(ShortcutListForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.changed_actions = {} self.changed_actions = {}
self.action_list = ActionList.get_instance() self.action_list = ActionList.get_instance()

View File

@ -22,7 +22,7 @@
""" """
The actual start time form. The actual start time form.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from .starttimedialog import Ui_StartTimeDialog from .starttimedialog import Ui_StartTimeDialog
@ -38,7 +38,8 @@ class StartTimeForm(QtWidgets.QDialog, Ui_StartTimeDialog, RegistryProperties):
""" """
Constructor Constructor
""" """
super(StartTimeForm, self).__init__(Registry().get('main_window')) super(StartTimeForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self): def exec(self):

View File

@ -36,10 +36,11 @@ class AlertForm(QtWidgets.QDialog, Ui_AlertDialog):
""" """
Initialise the alert form Initialise the alert form
""" """
super(AlertForm, self).__init__(Registry().get('main_window'),
QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
self.manager = plugin.manager self.manager = plugin.manager
self.plugin = plugin self.plugin = plugin
self.item_id = None self.item_id = None
super(AlertForm, self).__init__(Registry().get('main_window'))
self.setupUi(self) self.setupUi(self)
self.display_button.clicked.connect(self.on_display_clicked) self.display_button.clicked.connect(self.on_display_clicked)
self.display_close_button.clicked.connect(self.on_display_close_clicked) self.display_close_button.clicked.connect(self.on_display_close_clicked)

View File

@ -49,7 +49,8 @@ class BookNameForm(QDialog, Ui_BookNameDialog):
""" """
Constructor Constructor
""" """
super(BookNameForm, self).__init__(parent) super(BookNameForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.custom_signals() self.custom_signals()
self.book_names = BibleStrings().BookNames self.book_names = BibleStrings().BookNames

View File

@ -24,7 +24,7 @@ import logging
import os import os
import re import re
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import RegistryProperties, UiStrings, translate from openlp.core.common import RegistryProperties, UiStrings, translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -45,7 +45,8 @@ class EditBibleForm(QtWidgets.QDialog, Ui_EditBibleDialog, RegistryProperties):
""" """
Constructor Constructor
""" """
super(EditBibleForm, self).__init__(parent) super(EditBibleForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.media_item = media_item self.media_item = media_item
self.book_names = BibleStrings().BookNames self.book_names = BibleStrings().BookNames
self.setupUi(self) self.setupUi(self)

View File

@ -26,6 +26,7 @@ Module implementing LanguageForm.
import logging import logging
from PyQt5.QtWidgets import QDialog from PyQt5.QtWidgets import QDialog
from PyQt5 import QtCore
from openlp.core.common import translate from openlp.core.common import translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -46,7 +47,8 @@ class LanguageForm(QDialog, Ui_LanguageDialog):
""" """
Constructor Constructor
""" """
super(LanguageForm, self).__init__(parent) super(LanguageForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self, bible_name): def exec(self, bible_name):

View File

@ -254,6 +254,7 @@ class BibleMediaItem(MediaManagerItem):
def on_focus(self): def on_focus(self):
if self.quickTab.isVisible(): if self.quickTab.isVisible():
self.quick_search_edit.setFocus() self.quick_search_edit.setFocus()
self.quick_search_edit.selectAll()
else: else:
self.advanced_book_combo_box.setFocus() self.advanced_book_combo_box.setFocus()

View File

@ -22,7 +22,7 @@
import logging import logging
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import Registry, translate from openlp.core.common import Registry, translate
from openlp.core.lib.ui import critical_error_message_box, find_and_set_in_combo_box from openlp.core.lib.ui import critical_error_message_box, find_and_set_in_combo_box
@ -44,7 +44,8 @@ class EditCustomForm(QtWidgets.QDialog, Ui_CustomEditDialog):
""" """
Constructor Constructor
""" """
super(EditCustomForm, self).__init__(parent) super(EditCustomForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.manager = manager self.manager = manager
self.media_item = media_item self.media_item = media_item
self.setupUi(self) self.setupUi(self)

View File

@ -22,7 +22,7 @@
import logging import logging
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from .editcustomslidedialog import Ui_CustomSlideEditDialog from .editcustomslidedialog import Ui_CustomSlideEditDialog
@ -39,7 +39,8 @@ class EditCustomSlideForm(QtWidgets.QDialog, Ui_CustomSlideEditDialog):
""" """
Constructor Constructor
""" """
super(EditCustomSlideForm, self).__init__(parent) super(EditCustomSlideForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
# Connecting signals and slots # Connecting signals and slots
self.insert_button.clicked.connect(self.on_insert_button_clicked) self.insert_button.clicked.connect(self.on_insert_button_clicked)

View File

@ -190,8 +190,7 @@ class CustomMediaItem(MediaManagerItem):
if QtWidgets.QMessageBox.question( if QtWidgets.QMessageBox.question(
self, UiStrings().ConfirmDelete, self, UiStrings().ConfirmDelete,
translate('CustomPlugin.MediaItem', translate('CustomPlugin.MediaItem',
'Are you sure you want to delete the %n selected custom slide(s)?', 'Are you sure you want to delete the "%d" selected custom slide(s)?') %len(items),
'', QtCore.QCoreApplication.CodecForTr, len(items)),
QtWidgets.QMessageBox.StandardButtons( QtWidgets.QMessageBox.StandardButtons(
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No),
QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.No: QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.No:
@ -208,6 +207,7 @@ class CustomMediaItem(MediaManagerItem):
Set the focus Set the focus
""" """
self.search_text_edit.setFocus() self.search_text_edit.setFocus()
self.search_text_edit.selectAll()
def generate_slide_data(self, service_item, item=None, xml_version=False, def generate_slide_data(self, service_item, item=None, xml_version=False,
remote=False, context=ServiceItemContext.Service): remote=False, context=ServiceItemContext.Service):

View File

@ -20,7 +20,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import translate from openlp.core.common import translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -35,7 +35,8 @@ class AddGroupForm(QtWidgets.QDialog, Ui_AddGroupDialog):
""" """
Constructor Constructor
""" """
super(AddGroupForm, self).__init__(parent) super(AddGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self, clear=True, show_top_level_group=False, selected_group=None): def exec(self, clear=True, show_top_level_group=False, selected_group=None):

View File

@ -20,7 +20,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.plugins.images.forms.choosegroupdialog import Ui_ChooseGroupDialog from openlp.plugins.images.forms.choosegroupdialog import Ui_ChooseGroupDialog
@ -33,7 +33,8 @@ class ChooseGroupForm(QtWidgets.QDialog, Ui_ChooseGroupDialog):
""" """
Constructor Constructor
""" """
super(ChooseGroupForm, self).__init__(parent) super(ChooseGroupForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self, selected_group=None): def exec(self, selected_group=None):

View File

@ -52,7 +52,8 @@ class MediaClipSelectorForm(QtWidgets.QDialog, Ui_MediaClipSelector, RegistryPro
""" """
Constructor Constructor
""" """
super(MediaClipSelectorForm, self).__init__(parent) super(MediaClipSelectorForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.vlc_instance = None self.vlc_instance = None
self.vlc_media_player = None self.vlc_media_player = None
self.vlc_media = None self.vlc_media = None

View File

@ -20,7 +20,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.lib import translate from openlp.core.lib import translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -35,7 +35,8 @@ class AuthorsForm(QtWidgets.QDialog, Ui_AuthorsDialog):
""" """
Set up the screen and common data Set up the screen and common data
""" """
super(AuthorsForm, self).__init__(parent) super(AuthorsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.auto_display_name = False self.auto_display_name = False
self.first_name_edit.textEdited.connect(self.on_first_name_edited) self.first_name_edit.textEdited.connect(self.on_first_name_edited)

View File

@ -55,7 +55,8 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties):
""" """
Constructor Constructor
""" """
super(EditSongForm, self).__init__(parent) super(EditSongForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.media_item = media_item self.media_item = media_item
self.song = None self.song = None
# can this be automated? # can this be automated?
@ -76,7 +77,7 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties):
self.verse_edit_all_button.clicked.connect(self.on_verse_edit_all_button_clicked) self.verse_edit_all_button.clicked.connect(self.on_verse_edit_all_button_clicked)
self.verse_delete_button.clicked.connect(self.on_verse_delete_button_clicked) self.verse_delete_button.clicked.connect(self.on_verse_delete_button_clicked)
self.verse_list_widget.itemClicked.connect(self.on_verse_list_view_clicked) self.verse_list_widget.itemClicked.connect(self.on_verse_list_view_clicked)
self.verse_order_edit.textChanged.connect(self.on_verse_order_text_changed) self.verse_order_edit.textEdited.connect(self.on_verse_order_text_changed)
self.theme_add_button.clicked.connect(self.theme_manager.on_add_theme) self.theme_add_button.clicked.connect(self.theme_manager.on_add_theme)
self.maintenance_button.clicked.connect(self.on_maintenance_button_clicked) self.maintenance_button.clicked.connect(self.on_maintenance_button_clicked)
self.from_file_button.clicked.connect(self.on_audio_add_from_file_button_clicked) self.from_file_button.clicked.connect(self.on_audio_add_from_file_button_clicked)
@ -803,6 +804,8 @@ class EditSongForm(QtWidgets.QDialog, Ui_EditSongDialog, RegistryProperties):
:param text: The text of the verse order edit (ignored). :param text: The text of the verse order edit (ignored).
""" """
# First make sure that all letters entered in the verse order field are uppercase
self.verse_order_edit.setText(text.upper())
# Extract all verses which were used in the order. # Extract all verses which were used in the order.
verses_in_order = self._extract_verse_order(self.verse_order_edit.text()) verses_in_order = self._extract_verse_order(self.verse_order_edit.text())
# Find the verses which were not used in the order. # Find the verses which were not used in the order.

View File

@ -23,7 +23,7 @@
import re import re
import logging import logging
from PyQt5 import QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib import VerseType
from .editversedialog import Ui_EditVerseDialog from .editversedialog import Ui_EditVerseDialog
@ -41,7 +41,8 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog):
""" """
Constructor Constructor
""" """
super(EditVerseForm, self).__init__(parent) super(EditVerseForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.has_single_verse = False self.has_single_verse = False
self.insert_button.clicked.connect(self.on_insert_button_clicked) self.insert_button.clicked.connect(self.on_insert_button_clicked)

View File

@ -37,7 +37,8 @@ class MediaFilesForm(QtWidgets.QDialog, Ui_MediaFilesDialog):
log.info('%s MediaFilesForm loaded', __name__) log.info('%s MediaFilesForm loaded', __name__)
def __init__(self, parent): def __init__(self, parent):
super(MediaFilesForm, self).__init__() super(MediaFilesForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def populate_files(self, files): def populate_files(self, files):

View File

@ -23,7 +23,7 @@
This module contains the song book form This module contains the song book form
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.lib import translate from openlp.core.lib import translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -38,7 +38,8 @@ class SongBookForm(QtWidgets.QDialog, Ui_SongBookDialog):
""" """
Constructor Constructor
""" """
super(SongBookForm, self).__init__(parent) super(SongBookForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self, clear=True): def exec(self, clear=True):

View File

@ -44,7 +44,8 @@ class SongMaintenanceForm(QtWidgets.QDialog, Ui_SongMaintenanceDialog, RegistryP
""" """
Constructor Constructor
""" """
super(SongMaintenanceForm, self).__init__(parent) super(SongMaintenanceForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.manager = manager self.manager = manager
self.author_form = AuthorsForm(self) self.author_form = AuthorsForm(self)

View File

@ -81,7 +81,8 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog):
""" """
def __init__(self, parent=None, plugin=None, db_manager=None): def __init__(self, parent=None, plugin=None, db_manager=None):
QtWidgets.QDialog.__init__(self, parent) QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.plugin = plugin self.plugin = plugin
self.db_manager = db_manager self.db_manager = db_manager
self.setup_ui(self) self.setup_ui(self)

View File

@ -23,7 +23,7 @@
This module contains the topic edit form. This module contains the topic edit form.
""" """
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.lib import translate from openlp.core.lib import translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
@ -38,7 +38,8 @@ class TopicsForm(QtWidgets.QDialog, Ui_TopicsDialog):
""" """
Constructor Constructor
""" """
super(TopicsForm, self).__init__(parent) super(TopicsForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
def exec(self, clear=True): def exec(self, clear=True):

View File

@ -112,6 +112,7 @@ class SongMediaItem(MediaManagerItem):
def on_focus(self): def on_focus(self):
self.search_text_edit.setFocus() self.search_text_edit.setFocus()
self.search_text_edit.selectAll()
def config_update(self): def config_update(self):
""" """
@ -363,8 +364,8 @@ class SongMediaItem(MediaManagerItem):
items = self.list_view.selectedIndexes() items = self.list_view.selectedIndexes()
if QtWidgets.QMessageBox.question( if QtWidgets.QMessageBox.question(
self, UiStrings().ConfirmDelete, self, UiStrings().ConfirmDelete,
translate('SongsPlugin.MediaItem', 'Are you sure you want to delete the %n selected song(s)?', '', translate('SongsPlugin.MediaItem',
QtCore.QCoreApplication.CodecForTr, len(items)), 'Are you sure you want to delete the "%d" selected song(s)?') % len(items),
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No), QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No),
QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.No: QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.No:
return return

View File

@ -20,7 +20,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from openlp.core.common import RegistryProperties, translate from openlp.core.common import RegistryProperties, translate
from openlp.plugins.songusage.lib.db import SongUsageItem from openlp.plugins.songusage.lib.db import SongUsageItem
@ -36,7 +36,8 @@ class SongUsageDeleteForm(QtWidgets.QDialog, Ui_SongUsageDeleteDialog, RegistryP
Constructor Constructor
""" """
self.manager = manager self.manager = manager
super(SongUsageDeleteForm, self).__init__(parent) super(SongUsageDeleteForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.setupUi(self) self.setupUi(self)
self.button_box.clicked.connect(self.on_button_box_clicked) self.button_box.clicked.connect(self.on_button_box_clicked)

View File

@ -23,7 +23,7 @@
import logging import logging
import os import os
from PyQt5 import QtWidgets from PyQt5 import QtCore, QtWidgets
from sqlalchemy.sql import and_ from sqlalchemy.sql import and_
from openlp.core.common import RegistryProperties, Settings, check_directory_exists, translate from openlp.core.common import RegistryProperties, Settings, check_directory_exists, translate
@ -44,7 +44,8 @@ class SongUsageDetailForm(QtWidgets.QDialog, Ui_SongUsageDetailDialog, RegistryP
""" """
Initialise the form Initialise the form
""" """
super(SongUsageDetailForm, self).__init__(parent) super(SongUsageDetailForm, self).__init__(parent, QtCore.Qt.WindowSystemMenuHint
| QtCore.Qt.WindowTitleHint)
self.plugin = plugin self.plugin = plugin
self.setupUi(self) self.setupUi(self)

View File

@ -60,6 +60,22 @@ class TestMediaManagerItem(TestCase, TestMixin):
# THEN: on_preview_click() should have been called # THEN: on_preview_click() should have been called
mocked_on_preview_click.assert_called_with() mocked_on_preview_click.assert_called_with()
def required_icons_test(self):
"""
Test the default icons for plugins
"""
# GIVEN: A MediaManagerItem
mmi = MediaManagerItem(None)
# WHEN: Object is created
mmi.required_icons()
# THEN: Default icons should be populated
self.assertFalse(mmi.has_import_icon, 'There should be no import icon by default')
self.assertTrue(mmi.has_new_icon, 'By default a new icon should be present')
self.assertFalse(mmi.has_file_icon, 'There should be no file icon by default')
self.assertTrue(mmi.has_delete_icon, 'By default a delete icon should be present')
self.assertFalse(mmi.add_to_service_item, 'There should be no add_to_service icon by default')
@patch(u'openlp.core.lib.mediamanageritem.Settings') @patch(u'openlp.core.lib.mediamanageritem.Settings')
@patch(u'openlp.core.lib.mediamanageritem.MediaManagerItem.on_live_click') @patch(u'openlp.core.lib.mediamanageritem.MediaManagerItem.on_live_click')
def on_double_clicked_go_live_test(self, mocked_on_live_click, MockedSettings): def on_double_clicked_go_live_test(self, mocked_on_live_click, MockedSettings):

View File

@ -0,0 +1,84 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2015 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; version 2 of the License. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
This module contains tests for the SongFormat class
"""
from unittest import TestCase
from openlp.plugins.songs.lib.importer import SongFormat
class TestSongFormat(TestCase):
"""
Test the functions in the :class:`SongFormat` class.
"""
def test_get_format_list(self):
"""
Test that get_format_list() returns all available formats
"""
# GIVEN: The SongFormat class
# WHEN: Retrieving the format list
# THEN: All SongFormats should be returned
self.assertEquals(len(SongFormat.get_format_list()), len(SongFormat.__attributes__),
"The returned SongFormats don't match the stored ones")
def test_get_attributed_no_attributes(self):
"""
Test that SongFormat.get(song_format) returns all attributes associated with the given song_format
"""
# GIVEN: A SongFormat
# WHEN: Retrieving all attributes of a SongFormat
for song_format in SongFormat.get_format_list():
# THEN: All attributes associated with the SongFormat should be returned
self.assertEquals(SongFormat.get(song_format), SongFormat.__attributes__[song_format],
"The returned attributes don't match the stored ones")
def test_get_attributed_single_attribute(self):
"""
Test that SongFormat.get(song_format, attribute) returns only one -and the correct- attribute
"""
# GIVEN: A SongFormat
for song_format in SongFormat.get_format_list():
# WHEN: Retrieving an attribute that overrides the default values
for attribute in SongFormat.get(song_format).keys():
# THEN: Return the attribute
self.assertEquals(SongFormat.get(song_format, attribute), SongFormat.get(song_format)[attribute],
"The returned attribute doesn't match the stored one")
# WHEN: Retrieving an attribute that was not overridden
for attribute in SongFormat.__defaults__.keys():
if attribute not in SongFormat.get(song_format).keys():
# THEN: Return the default value
self.assertEquals(SongFormat.get(song_format, attribute), SongFormat.__defaults__[attribute],
"The returned attribute does not match the default values stored")
def test_get_attributed_multiple_attributes(self):
"""
Test that multiple attributes can be retrieved for a song_format
"""
# GIVEN: A SongFormat
# WHEN: Retrieving multiple attributes at the same time
for song_format in SongFormat.get_format_list():
# THEN: Return all attributes that were specified
self.assertEquals(len(SongFormat.get(song_format, 'canDisable', 'availability')), 2,
"Did not return the correct number of attributes when retrieving multiple attributes at once")

View File

@ -142,3 +142,18 @@ class TestEditSongForm(TestCase, TestMixin):
'CCLI label should not be "{}"'.format(UiStrings().CCLINumberLabel)) 'CCLI label should not be "{}"'.format(UiStrings().CCLINumberLabel))
self.assertEquals(form.ccli_label.text(), UiStrings().CCLISongNumberLabel, self.assertEquals(form.ccli_label.text(), UiStrings().CCLISongNumberLabel,
'CCLI label text should be "{}"'.format(UiStrings().CCLISongNumberLabel)) 'CCLI label text should be "{}"'.format(UiStrings().CCLISongNumberLabel))
def verse_order_lowercase_test(self):
"""
Test that entering a verse order in lowercase automatically converts to uppercase
"""
# GIVEN; Mocked methods
form = self.form
# WHEN: We enter a verse order in lowercase
form.verse_order_edit.setText('v1 v2 c1 v3 c1 v4 c1')
# Need to manually trigger this method as it is only triggered by manual input
form.on_verse_order_text_changed(form.verse_order_edit.text())
# THEN: The verse order should be converted to uppercase
self.assertEqual(form.verse_order_edit.text(), 'V1 V2 C1 V3 C1 V4 C1')