openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #24855
[Merge] lp:~alisonken1/openlp/bug-1386913 into lp:openlp
Ken Roberts has proposed merging lp:~alisonken1/openlp/bug-1386913 into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
Related bugs:
Bug #1386913 in OpenLP: "Remove "Discard" option when selecting source input"
https://bugs.launchpad.net/openlp/+bug/1386913
For more details, see:
https://code.launchpad.net/~alisonken1/openlp/bug-1386913/+merge/241157
bugfix 1386913
Fix "Discard" and "Reset" dialog buttons calling wrong functions (swapped)
Added basic test for openlp.core.ui.projector.sourceselectform
--
https://code.launchpad.net/~alisonken1/openlp/bug-1386913/+merge/241157
Your team OpenLP Core is requested to review the proposed merge of lp:~alisonken1/openlp/bug-1386913 into lp:openlp.
=== modified file 'openlp/core/ui/projector/sourceselectform.py'
--- openlp/core/ui/projector/sourceselectform.py 2014-10-23 21:00:06 +0000
+++ openlp/core/ui/projector/sourceselectform.py 2014-11-07 22:50:20 +0000
@@ -152,16 +152,15 @@
"""
for button in bar.buttons():
if bar.standardButton(button) == QDialogButtonBox.Cancel:
- tip = "Ignoring current changes and return to OpenLP"
+ button.setToolTip("Ignoring current changes and return to OpenLP")
elif bar.standardButton(button) == QDialogButtonBox.Reset:
- tip = "Delete all user-defined text and revert to PJLink default text"
+ button.setToolTip("Delete all user-defined text and revert to PJLink default text")
elif bar.standardButton(button) == QDialogButtonBox.Discard:
- tip = "Discard changes and reset to previous user-defined text"
+ button.setToolTip("Discard changes and reset to previous user-defined text")
elif bar.standardButton(button) == QDialogButtonBox.Ok:
- tip = "Save changes and return to OpenLP"
+ button.setToolTip("Save changes and return to OpenLP")
else:
- tip = ""
- button.setToolTip(tip)
+ log.debug('No tooltip for button {}'.format(button.text()))
class FingerTabBarWidget(QTabBar):
@@ -286,6 +285,10 @@
thistab = self.tabwidget.addTab(tab, PJLINK_DEFAULT_SOURCES[key])
if buttonchecked:
self.tabwidget.setCurrentIndex(thistab)
+ self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Reset |
+ QtGui.QDialogButtonBox.Discard |
+ QtGui.QDialogButtonBox.Ok |
+ QtGui.QDialogButtonBox.Cancel)
else:
for key in keys:
(tab, button_count, buttonchecked) = Build_Tab(group=self.button_group,
@@ -297,10 +300,8 @@
thistab = self.tabwidget.addTab(tab, PJLINK_DEFAULT_SOURCES[key])
if buttonchecked:
self.tabwidget.setCurrentIndex(thistab)
- self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Reset |
- QtGui.QDialogButtonBox.Discard |
- QtGui.QDialogButtonBox.Ok |
- QtGui.QDialogButtonBox.Cancel)
+ self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Ok |
+ QtGui.QDialogButtonBox.Cancel)
self.button_box.clicked.connect(self.button_clicked)
self.layout.addWidget(self.button_box)
set_button_tooltip(self.button_box)
@@ -321,9 +322,9 @@
if self.button_box.standardButton(button) == self.button_box.Cancel:
self.done(0)
elif self.button_box.standardButton(button) == self.button_box.Reset:
+ self.done(100)
+ elif self.button_box.standardButton(button) == self.button_box.Discard:
self.delete_sources()
- elif self.button_box.standardButton(button) == self.button_box.Discard:
- self.done(100)
elif self.button_box.standardButton(button) == self.button_box.Ok:
return self.accept_me()
else:
@@ -418,6 +419,10 @@
item.setText(source_item.text)
self.layout.addRow(PJLINK_DEFAULT_CODES[key], item)
self.button_group.append(item)
+ self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Reset |
+ QtGui.QDialogButtonBox.Discard |
+ QtGui.QDialogButtonBox.Ok |
+ QtGui.QDialogButtonBox.Cancel)
else:
for key in keys:
source_text = self.projectordb.get_source_by_code(code=key, projector_id=self.projector.db_item.id)
@@ -427,10 +432,8 @@
self.layout.addWidget(button)
self.button_group.addButton(button, int(key))
button_list.append(key)
- self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Reset |
- QtGui.QDialogButtonBox.Discard |
- QtGui.QDialogButtonBox.Ok |
- QtGui.QDialogButtonBox.Cancel)
+ self.button_box = QDialogButtonBox(QtGui.QDialogButtonBox.Ok |
+ QtGui.QDialogButtonBox.Cancel)
self.button_box.clicked.connect(self.button_clicked)
self.layout.addWidget(self.button_box)
self.setMinimumHeight(key_count*25)
@@ -452,9 +455,9 @@
if self.button_box.standardButton(button) == self.button_box.Cancel:
self.done(0)
elif self.button_box.standardButton(button) == self.button_box.Reset:
+ self.done(100)
+ elif self.button_box.standardButton(button) == self.button_box.Discard:
self.delete_sources()
- elif self.button_box.standardButton(button) == self.button_box.Discard:
- self.done(100)
elif self.button_box.standardButton(button) == self.button_box.Ok:
return self.accept_me()
else:
=== added file 'tests/interfaces/openlp_core_ui/test_projectorsourceform.py'
--- tests/interfaces/openlp_core_ui/test_projectorsourceform.py 1970-01-01 00:00:00 +0000
+++ tests/interfaces/openlp_core_ui/test_projectorsourceform.py 2014-11-07 22:50:20 +0000
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2014 Raoul Snyman #
+# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
+# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
+# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
+# Christian Richter, Philip Ridout, Ken Roberts, Simon Scudder, #
+# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
+# Dave Warnock, Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
+# --------------------------------------------------------------------------- #
+# 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 #
+###############################################################################
+"""
+ :mod: `tests.interfaces.openlp_core_ui.test_projectorsourceform` module
+
+ Tests for the Projector Source Select form.
+"""
+import logging
+log = logging.getLogger(__name__)
+log.debug('test_projectorsourceform loaded')
+
+from unittest import TestCase
+
+from tests.helpers.testmixin import TestMixin
+from openlp.core.lib.projector.constants import PJLINK_DEFAULT_CODES, PJLINK_DEFAULT_SOURCES
+
+from openlp.core.ui.projector.sourceselectform import source_group
+
+
+def build_source_dict():
+ """
+ Builds a source dictionary to verify source_group returns a valid dictionary of dictionary items
+
+ :returns: dictionary of valid PJLink source codes grouped by PJLink source group
+ """
+ test_group = {}
+ for group in PJLINK_DEFAULT_SOURCES.keys():
+ test_group[group] = {}
+ for key in PJLINK_DEFAULT_CODES:
+ test_group[key[0]][key] = PJLINK_DEFAULT_CODES[key]
+ return test_group
+
+
+class ProjectorSourceFormTest(TestCase, TestMixin):
+ """
+ Test class for the Projector Source Select form module
+ """
+ def source_dict_test(self):
+ """
+ Test that source list dict returned from sourceselectform module is a valid dict with proper entries
+ """
+ # GIVEN: A list of inputs
+ codes = []
+ for item in PJLINK_DEFAULT_CODES.keys():
+ codes.append(item)
+ codes.sort()
+
+ # WHEN: projector.sourceselectform.source_select() is called
+ check = source_group(codes, PJLINK_DEFAULT_CODES)
+
+ # THEN: return dictionary should match test dictionary
+ self.assertEquals(check, build_source_dict(),
+ "Source group dictionary should match test dictionary")
Follow ups