SelectionEncloser/ConfigurationPage/SelectionEncloserPage.py

changeset 1
a9f6842a18f6
child 3
b26df0282953
diff -r 96fac1d8181f -r a9f6842a18f6 SelectionEncloser/ConfigurationPage/SelectionEncloserPage.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SelectionEncloser/ConfigurationPage/SelectionEncloserPage.py	Fri Apr 18 19:45:32 2014 +0200
@@ -0,0 +1,167 @@
+# -*- coding: utf-8 -*-
+
+"""
+Module implementing Selection Encloser configuration page.
+"""
+
+from __future__ import unicode_literals    # __IGNORE_WARNING__
+
+import os
+
+from PyQt4.QtCore import pyqtSlot, Qt
+from PyQt4.QtGui import QTreeWidgetItem, QInputDialog, QLineEdit
+
+from Preferences.ConfigurationPages.ConfigurationPageBase import \
+    ConfigurationPageBase
+from .Ui_SelectionEncloserPage import Ui_SelectionEncloserPage
+
+import UI.PixmapCache
+
+
+class SelectionEncloserPage(ConfigurationPageBase, Ui_SelectionEncloserPage):
+    """
+    Class implementing Selection Encloser configuration page.
+    """
+    def __init__(self, plugin):
+        """
+        Constructor
+        
+        @param plugin reference to the plugin object
+        """
+        super(SelectionEncloserPage, self).__init__()
+        self.setupUi(self)
+        self.setObjectName("SelectionEncloserPage")
+        
+        self.addButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
+        self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
+        self.upButton.setIcon(UI.PixmapCache.getIcon("1uparrow.png"))
+        self.downButton.setIcon(UI.PixmapCache.getIcon("1downarrow.png"))
+        self.addMenuButton.setIcon(UI.PixmapCache.getIcon(
+            os.path.join("SelectionEncloser", "icons", "topAdd.png")))
+        
+        self.addButton.setEnabled(False)
+        self.deleteButton.setEnabled(False)
+        self.upButton.setEnabled(False)
+        self.downButton.setEnabled(False)
+        
+        self.__plugin = plugin
+        
+        # set initial values
+        hierarchy = self.__plugin.getPreferences("MenuHierarchy")
+        for menuTitle, entries in hierarchy:
+            top = QTreeWidgetItem(self.menuTree, [menuTitle])
+            top.setFlags(top.flags() | Qt.ItemIsEditable)
+            for entry in entries:
+                itm = QTreeWidgetItem(top, [entry])
+                itm.setFlags(itm.flags() | Qt.ItemIsEditable)
+            top.setExpanded(True)
+    
+    def save(self):
+        """
+        Public slot to save the Selection Encloser configuration.
+        """
+        hierarchy = []
+        for topIndex in range(self.menuTree.topLevelItemCount()):
+            topItem = self.menuTree.topLevelItem(topIndex)
+            topEntry = [topItem.text(0), []]
+            for index in range(topItem.childCount()):
+                itm = topItem.child(index)
+                topEntry[1].append(itm.text(0))
+            hierarchy.append(topEntry)
+        self.__plugin.setPreferences("MenuHierarchy", hierarchy)
+    
+    @pyqtSlot()
+    def on_addMenuButton_clicked(self):
+        """
+        Private slot to add a top level menu item.
+        """
+        menuTitle, ok = QInputDialog.getText(
+            self,
+            self.tr("Menu Title"),
+            self.tr("Enter menu title:"),
+            QLineEdit.Normal)
+        if ok and menuTitle:
+            top = QTreeWidgetItem(self.menuTree, [menuTitle])
+            top.setFlags(top.flags() | Qt.ItemIsEditable)
+            top.setExpanded(True)
+    
+    @pyqtSlot()
+    def on_addButton_clicked(self):
+        """
+        Private slot to add a menu entry.
+        """
+        entry, ok = QInputDialog.getText(
+            self,
+            self.tr("Menu Entry"),
+            self.tr("Enter menu entry text:"),
+            QLineEdit.Normal)
+        if ok and entry:
+            itm = QTreeWidgetItem(self.menuTree.selectedItems()[0], [entry])
+            itm.setFlags(itm.flags() | Qt.ItemIsEditable)
+    
+    @pyqtSlot()
+    def on_deleteButton_clicked(self):
+        """
+        Private slot to delete the selected entry.
+        """
+        itm = self.menuTree.selectedItems()[0]
+        parent = itm.parent()
+        if parent is None:
+            index = self.menuTree.indexOfTopLevelItem(itm)
+            self.menuTree.takeTopLevelItem(index)
+        else:
+            index = parent.indexOfChild(itm)
+            parent.takeChild(index)
+        del itm
+    
+    @pyqtSlot()
+    def on_upButton_clicked(self):
+        """
+        Slot documentation goes here.
+        """
+        # TODO: not implemented yet
+        raise NotImplementedError
+    
+    @pyqtSlot()
+    def on_downButton_clicked(self):
+        """
+        Slot documentation goes here.
+        """
+        # TODO: not implemented yet
+        raise NotImplementedError
+    
+    @pyqtSlot()
+    def on_menuTree_itemSelectionChanged(self):
+        """
+        Private slot handling the selection of an item.
+        """
+        if len(self.menuTree.selectedItems()) == 0:
+            self.addButton.setEnabled(False)
+            self.deleteButton.setEnabled(False)
+            self.upButton.setEnabled(False)
+            self.downButton.setEnabled(False)
+        else:
+            addEnable = True
+            upEnable = True
+            downEnable = True
+            itm = self.menuTree.selectedItems()[0]
+            parent = itm.parent()
+            if parent is None:
+                # top level item
+                if self.menuTree.indexOfTopLevelItem(itm) == 0:
+                    upEnable = False
+                if self.menuTree.indexOfTopLevelItem(itm) == \
+                        self.menuTree.topLevelItemCount() - 1:
+                    downEnable = False
+            else:
+                # sub item
+                if parent.indexOfChild(itm) == 0:
+                    upEnable = False
+                if parent.indexOfChild(itm) == \
+                        parent.childCount() - 1:
+                    downEnable = False
+                addEnable = False
+            self.addButton.setEnabled(addEnable)
+            self.deleteButton.setEnabled(True)
+            self.upButton.setEnabled(upEnable)
+            self.downButton.setEnabled(downEnable)

eric ide

mercurial