forked from openlp/openlp
Improve usability of image plugin choosegroupform
bzr-revno: 2834
This commit is contained in:
commit
f325f8d6da
@ -58,6 +58,7 @@ class Ui_ChooseGroupDialog(object):
|
|||||||
self.choose_group_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.existing_radio_button)
|
self.choose_group_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.existing_radio_button)
|
||||||
self.group_combobox = QtWidgets.QComboBox(choose_group_dialog)
|
self.group_combobox = QtWidgets.QComboBox(choose_group_dialog)
|
||||||
self.group_combobox.setObjectName('group_combobox')
|
self.group_combobox.setObjectName('group_combobox')
|
||||||
|
self.group_combobox.activated.connect(self.on_group_combobox_selected)
|
||||||
self.choose_group_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.group_combobox)
|
self.choose_group_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.group_combobox)
|
||||||
self.new_radio_button = QtWidgets.QRadioButton(choose_group_dialog)
|
self.new_radio_button = QtWidgets.QRadioButton(choose_group_dialog)
|
||||||
self.new_radio_button.setChecked(False)
|
self.new_radio_button.setChecked(False)
|
||||||
@ -65,6 +66,7 @@ class Ui_ChooseGroupDialog(object):
|
|||||||
self.choose_group_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.new_radio_button)
|
self.choose_group_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.new_radio_button)
|
||||||
self.new_group_edit = QtWidgets.QLineEdit(choose_group_dialog)
|
self.new_group_edit = QtWidgets.QLineEdit(choose_group_dialog)
|
||||||
self.new_group_edit.setObjectName('new_group_edit')
|
self.new_group_edit.setObjectName('new_group_edit')
|
||||||
|
self.new_group_edit.textEdited.connect(self.on_new_group_edit_changed)
|
||||||
self.choose_group_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.new_group_edit)
|
self.choose_group_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.new_group_edit)
|
||||||
self.group_button_box = create_button_box(choose_group_dialog, 'buttonBox', ['ok'])
|
self.group_button_box = create_button_box(choose_group_dialog, 'buttonBox', ['ok'])
|
||||||
self.choose_group_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.group_button_box)
|
self.choose_group_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.group_button_box)
|
||||||
@ -83,3 +85,22 @@ class Ui_ChooseGroupDialog(object):
|
|||||||
self.nogroup_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'No group'))
|
self.nogroup_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'No group'))
|
||||||
self.existing_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'Existing group'))
|
self.existing_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'Existing group'))
|
||||||
self.new_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'New group'))
|
self.new_radio_button.setText(translate('ImagePlugin.ChooseGroupForm', 'New group'))
|
||||||
|
|
||||||
|
def on_group_combobox_selected(self, index):
|
||||||
|
"""
|
||||||
|
Handles the activated signal from the existing group combobox when the
|
||||||
|
user makes a selection
|
||||||
|
|
||||||
|
:param index: position of the selected item in the combobox
|
||||||
|
"""
|
||||||
|
self.existing_radio_button.setChecked(True)
|
||||||
|
self.group_combobox.setFocus()
|
||||||
|
|
||||||
|
def on_new_group_edit_changed(self, new_group):
|
||||||
|
"""
|
||||||
|
Handles the textEdited signal from the new group text input field
|
||||||
|
when the user enters a new group name
|
||||||
|
|
||||||
|
:param new_group: new text entered by the user
|
||||||
|
"""
|
||||||
|
self.new_radio_button.setChecked(True)
|
||||||
|
@ -48,4 +48,5 @@ class ChooseGroupForm(QtWidgets.QDialog, Ui_ChooseGroupDialog):
|
|||||||
for index in range(self.group_combobox.count()):
|
for index in range(self.group_combobox.count()):
|
||||||
if self.group_combobox.itemData(index) == selected_group:
|
if self.group_combobox.itemData(index) == selected_group:
|
||||||
self.group_combobox.setCurrentIndex(index)
|
self.group_combobox.setCurrentIndex(index)
|
||||||
|
self.existing_radio_button.setChecked(True)
|
||||||
return QtWidgets.QDialog.exec(self)
|
return QtWidgets.QDialog.exec(self)
|
||||||
|
@ -430,16 +430,6 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
if isinstance(selected_item.data(0, QtCore.Qt.UserRole), ImageGroups):
|
if isinstance(selected_item.data(0, QtCore.Qt.UserRole), ImageGroups):
|
||||||
preselect_group = selected_item.data(0, QtCore.Qt.UserRole).id
|
preselect_group = selected_item.data(0, QtCore.Qt.UserRole).id
|
||||||
# Enable and disable parts of the 'choose group' form
|
# Enable and disable parts of the 'choose group' form
|
||||||
if preselect_group is None:
|
|
||||||
self.choose_group_form.nogroup_radio_button.setChecked(True)
|
|
||||||
self.choose_group_form.nogroup_radio_button.setFocus()
|
|
||||||
self.choose_group_form.existing_radio_button.setChecked(False)
|
|
||||||
self.choose_group_form.new_radio_button.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.choose_group_form.nogroup_radio_button.setChecked(False)
|
|
||||||
self.choose_group_form.existing_radio_button.setChecked(True)
|
|
||||||
self.choose_group_form.new_radio_button.setChecked(False)
|
|
||||||
self.choose_group_form.group_combobox.setFocus()
|
|
||||||
if self.manager.get_object_count(ImageGroups) == 0:
|
if self.manager.get_object_count(ImageGroups) == 0:
|
||||||
self.choose_group_form.existing_radio_button.setDisabled(True)
|
self.choose_group_form.existing_radio_button.setDisabled(True)
|
||||||
self.choose_group_form.group_combobox.setDisabled(True)
|
self.choose_group_form.group_combobox.setDisabled(True)
|
||||||
|
@ -162,6 +162,7 @@ def test_check_same_instance():
|
|||||||
def test_get_language_from_settings():
|
def test_get_language_from_settings():
|
||||||
assert LanguageManager.get_language() == 'en'
|
assert LanguageManager.get_language() == 'en'
|
||||||
|
|
||||||
|
|
||||||
def test_get_language_from_settings_returns_unchanged_if_unknown_format():
|
def test_get_language_from_settings_returns_unchanged_if_unknown_format():
|
||||||
Settings().setValue('core/language', '(foobar)')
|
Settings().setValue('core/language', '(foobar)')
|
||||||
assert LanguageManager.get_language() == '(foobar)'
|
assert LanguageManager.get_language() == '(foobar)'
|
||||||
|
21
tests/interfaces/openlp_plugins/images/__init__.py
Normal file
21
tests/interfaces/openlp_plugins/images/__init__.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2018 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 #
|
||||||
|
###############################################################################
|
@ -0,0 +1,103 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OpenLP - Open Source Lyrics Projection #
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# Copyright (c) 2008-2018 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 #
|
||||||
|
###############################################################################
|
||||||
|
"""
|
||||||
|
Tests for choosegroupform from the openlp.plugins.images.forms package.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from unittest import TestCase
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets
|
||||||
|
|
||||||
|
from openlp.core.common.registry import Registry
|
||||||
|
from openlp.plugins.images.forms.choosegroupform import ChooseGroupForm
|
||||||
|
from tests.helpers.testmixin import TestMixin
|
||||||
|
|
||||||
|
|
||||||
|
class TestImageChooseGroupForm(TestCase, TestMixin):
|
||||||
|
"""
|
||||||
|
Test the ChooseGroupForm class
|
||||||
|
"""
|
||||||
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
Create the UI
|
||||||
|
"""
|
||||||
|
Registry.create()
|
||||||
|
self.setup_application()
|
||||||
|
self.main_window = QtWidgets.QMainWindow()
|
||||||
|
Registry().register('main_window', self.main_window)
|
||||||
|
self.form = ChooseGroupForm(self.main_window)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
"""
|
||||||
|
Cleanup
|
||||||
|
"""
|
||||||
|
del self.form
|
||||||
|
del self.main_window
|
||||||
|
|
||||||
|
def test_no_group_selected_by_default(self):
|
||||||
|
"""
|
||||||
|
Tests that the No Group option is the default selection
|
||||||
|
"""
|
||||||
|
assert self.form.nogroup_radio_button.isChecked()
|
||||||
|
|
||||||
|
def test_provided_group_is_selected(self):
|
||||||
|
"""
|
||||||
|
Tests preselected group initialization
|
||||||
|
"""
|
||||||
|
# GIVEN: There are some existing groups
|
||||||
|
QtWidgets.QDialog.exec = MagicMock(return_value=QtWidgets.QDialog.Accepted)
|
||||||
|
self.form.group_combobox.addItem('Group 1', 0)
|
||||||
|
self.form.group_combobox.addItem('Group 2', 1)
|
||||||
|
|
||||||
|
# WHEN: The form is displayed with preselected group index 1
|
||||||
|
self.form.exec(1)
|
||||||
|
|
||||||
|
# THEN: The Existing Group should be selected along with the radio button
|
||||||
|
assert self.form.group_combobox.currentIndex() == 1
|
||||||
|
assert self.form.existing_radio_button.isChecked()
|
||||||
|
|
||||||
|
def test_auto_select_existing_group_on_combo_selection(self):
|
||||||
|
"""
|
||||||
|
Tests that the Existing Group option becomes selected when changing the combobox
|
||||||
|
"""
|
||||||
|
# GIVEN: No preselected group was provided during initialization
|
||||||
|
assert not self.form.existing_radio_button.isChecked()
|
||||||
|
|
||||||
|
# WHEN: An existing group is selected from the combo box
|
||||||
|
self.form.on_group_combobox_selected(0)
|
||||||
|
|
||||||
|
# THEN: The Existing Group radio button should also be selected
|
||||||
|
assert self.form.existing_radio_button.isChecked()
|
||||||
|
|
||||||
|
def test_auto_select_new_group_on_edit(self):
|
||||||
|
"""
|
||||||
|
Tests that the New Group option becomes selected when changing the text field
|
||||||
|
"""
|
||||||
|
# GIVEN: The New Group option has not already been selected
|
||||||
|
assert not self.form.new_radio_button.isChecked()
|
||||||
|
|
||||||
|
# WHEN: The user enters text into the new group name text field
|
||||||
|
self.form.on_new_group_edit_changed('Test Group')
|
||||||
|
|
||||||
|
# THEN: The New Group radio button should also be selected
|
||||||
|
assert self.form.new_radio_button.isChecked()
|
Loading…
Reference in New Issue
Block a user