Fri, 18 Apr 2014 19:45:32 +0200
Implemented most of the functionality.
# -*- 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)