← Back to team overview

openlp-core team mailing list archive

[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