Simon Hanna has proposed merging 
lp:~thelinuxguy/openlp/change-dropdown-to-checkbox into lp:openlp.

Requested reviews:
  Tim Bentley (trb143)
Related bugs:
  Bug #1530073 in OpenLP: "Dropdown in 'Manage plugins' should be a checkbox"
  https://bugs.launchpad.net/openlp/+bug/1530073

For more details, see:
https://code.launchpad.net/~thelinuxguy/openlp/change-dropdown-to-checkbox/+merge/294957

* Change the Combobox used for the state of plugins to a checkbox.
* Do not show the plugins version numbers as they provide no additional 
information
* Show the plugin details (about text) even if the plugin is disabled

-- 
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/plugindialog.py'
--- openlp/core/ui/plugindialog.py	2015-12-31 22:46:06 +0000
+++ openlp/core/ui/plugindialog.py	2016-05-17 19:32:55 +0000
@@ -53,15 +53,9 @@
         self.plugin_info_layout.setObjectName('plugin_info_layout')
         self.status_label = QtWidgets.QLabel(self.plugin_info_group_box)
         self.status_label.setObjectName('status_label')
-        self.status_combo_box = QtWidgets.QComboBox(self.plugin_info_group_box)
-        self.status_combo_box.addItems(('', ''))
-        self.status_combo_box.setObjectName('status_combo_box')
-        self.plugin_info_layout.addRow(self.status_label, self.status_combo_box)
-        self.version_label = QtWidgets.QLabel(self.plugin_info_group_box)
-        self.version_label.setObjectName('version_label')
-        self.version_number_label = QtWidgets.QLabel(self.plugin_info_group_box)
-        self.version_number_label.setObjectName('version_number_label')
-        self.plugin_info_layout.addRow(self.version_label, self.version_number_label)
+        self.status_checkbox = QtWidgets.QCheckBox(self.plugin_info_group_box)
+        self.status_checkbox.setObjectName('status_checkbox')
+        self.plugin_info_layout.addRow(self.status_label, self.status_checkbox)
         self.about_label = QtWidgets.QLabel(self.plugin_info_group_box)
         self.about_label.setObjectName('about_label')
         self.about_text_browser = QtWidgets.QTextBrowser(self.plugin_info_group_box)
@@ -80,8 +74,6 @@
         """
         plugin_view_dialog.setWindowTitle(translate('OpenLP.PluginForm', 'Manage Plugins'))
         self.plugin_info_group_box.setTitle(translate('OpenLP.PluginForm', 'Plugin Details'))
-        self.version_label.setText('%s:' % UiStrings().Version)
         self.about_label.setText('%s:' % UiStrings().About)
         self.status_label.setText(translate('OpenLP.PluginForm', 'Status:'))
-        self.status_combo_box.setItemText(0, translate('OpenLP.PluginForm', 'Active'))
-        self.status_combo_box.setItemText(1, translate('OpenLP.PluginForm', 'Inactive'))
+        self.status_checkbox.setText(translate('OpenLP.PluginForm', 'Active'))

=== modified file 'openlp/core/ui/pluginform.py'
--- openlp/core/ui/pluginform.py	2016-01-09 16:26:14 +0000
+++ openlp/core/ui/pluginform.py	2016-05-17 19:32:55 +0000
@@ -49,7 +49,7 @@
         self._clear_details()
         # Right, now let's put some signals and slots together!
         self.plugin_list_widget.itemSelectionChanged.connect(self.on_plugin_list_widget_selection_changed)
-        self.status_combo_box.currentIndexChanged.connect(self.on_status_combo_box_changed)
+        self.status_checkbox.stateChanged.connect(self.on_status_checkbox_changed)
 
     def load(self):
         """
@@ -86,24 +86,23 @@
         """
         Clear the plugin details widgets
         """
-        self.status_combo_box.setCurrentIndex(-1)
-        self.version_number_label.setText('')
+        self.status_checkbox.setChecked(False)
         self.about_text_browser.setHtml('')
-        self.status_combo_box.setEnabled(False)
+        self.status_checkbox.setEnabled(False)
 
     def _set_details(self):
         """
         Set the details of the currently selected plugin
         """
         log.debug('PluginStatus: %s', str(self.active_plugin.status))
-        self.version_number_label.setText(self.active_plugin.version)
         self.about_text_browser.setHtml(self.active_plugin.about())
         self.programatic_change = True
-        status = PluginStatus.Active
-        if self.active_plugin.status == PluginStatus.Active:
-            status = PluginStatus.Inactive
-        self.status_combo_box.setCurrentIndex(status)
-        self.status_combo_box.setEnabled(True)
+        if self.active_plugin.status != PluginStatus.Disabled:
+            self.status_checkbox.setChecked(self.active_plugin.status == PluginStatus.Active)
+            self.status_checkbox.setEnabled(True)
+        else:
+            self.status_checkbox.setChecked(False)
+            self.status_checkbox.setEnabled(False)
         self.programatic_change = False
 
     def on_plugin_list_widget_selection_changed(self):
@@ -116,22 +115,21 @@
         plugin_name_singular = self.plugin_list_widget.currentItem().text().split('(')[0][:-1]
         self.active_plugin = None
         for plugin in self.plugin_manager.plugins:
-            if plugin.status != PluginStatus.Disabled:
-                if plugin.name_strings['singular'] == plugin_name_singular:
-                    self.active_plugin = plugin
-                    break
+            if plugin.name_strings['singular'] == plugin_name_singular:
+                self.active_plugin = plugin
+                break
         if self.active_plugin:
             self._set_details()
         else:
             self._clear_details()
 
-    def on_status_combo_box_changed(self, status):
+    def on_status_checkbox_changed(self, status):
         """
         If the status of a plugin is altered, apply the change
         """
-        if self.programatic_change or status == PluginStatus.Disabled:
+        if self.programatic_change or self.active_plugin is None:
             return
-        if status == PluginStatus.Inactive:
+        if status:
             self.application.set_busy_cursor()
             self.active_plugin.toggle_status(PluginStatus.Active)
             self.application.set_normal_cursor()

=== modified file 'tests/functional/openlp_core_common/test_actions.py'
--- tests/functional/openlp_core_common/test_actions.py	2016-03-31 16:34:22 +0000
+++ tests/functional/openlp_core_common/test_actions.py	2016-05-17 19:32:55 +0000
@@ -111,6 +111,17 @@
         self.assertEqual(self.list.actions[0], (41, self.action2))
         self.assertEqual(self.list.actions[1], (42, self.action1))
 
+    def iterator_test(self):
+        """
+        Test the __iter__ and __next__ methods
+        """
+        self.list.add(self.action1)
+        self.list.add(self.action2)
+
+        l = [a for a in self.list]
+        self.assertIs(l[0], self.action1)
+        self.assertIs(l[1], self.action2)
+
     def remove_test(self):
         """
         Test the remove() method

_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to     : openlp-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openlp-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to