SelectionEncloser/ConfigurationPage/SelectionEncloserPage.py

changeset 1
a9f6842a18f6
child 3
b26df0282953
equal deleted inserted replaced
0:96fac1d8181f 1:a9f6842a18f6
1 # -*- coding: utf-8 -*-
2
3 """
4 Module implementing Selection Encloser configuration page.
5 """
6
7 from __future__ import unicode_literals # __IGNORE_WARNING__
8
9 import os
10
11 from PyQt4.QtCore import pyqtSlot, Qt
12 from PyQt4.QtGui import QTreeWidgetItem, QInputDialog, QLineEdit
13
14 from Preferences.ConfigurationPages.ConfigurationPageBase import \
15 ConfigurationPageBase
16 from .Ui_SelectionEncloserPage import Ui_SelectionEncloserPage
17
18 import UI.PixmapCache
19
20
21 class SelectionEncloserPage(ConfigurationPageBase, Ui_SelectionEncloserPage):
22 """
23 Class implementing Selection Encloser configuration page.
24 """
25 def __init__(self, plugin):
26 """
27 Constructor
28
29 @param plugin reference to the plugin object
30 """
31 super(SelectionEncloserPage, self).__init__()
32 self.setupUi(self)
33 self.setObjectName("SelectionEncloserPage")
34
35 self.addButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
36 self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
37 self.upButton.setIcon(UI.PixmapCache.getIcon("1uparrow.png"))
38 self.downButton.setIcon(UI.PixmapCache.getIcon("1downarrow.png"))
39 self.addMenuButton.setIcon(UI.PixmapCache.getIcon(
40 os.path.join("SelectionEncloser", "icons", "topAdd.png")))
41
42 self.addButton.setEnabled(False)
43 self.deleteButton.setEnabled(False)
44 self.upButton.setEnabled(False)
45 self.downButton.setEnabled(False)
46
47 self.__plugin = plugin
48
49 # set initial values
50 hierarchy = self.__plugin.getPreferences("MenuHierarchy")
51 for menuTitle, entries in hierarchy:
52 top = QTreeWidgetItem(self.menuTree, [menuTitle])
53 top.setFlags(top.flags() | Qt.ItemIsEditable)
54 for entry in entries:
55 itm = QTreeWidgetItem(top, [entry])
56 itm.setFlags(itm.flags() | Qt.ItemIsEditable)
57 top.setExpanded(True)
58
59 def save(self):
60 """
61 Public slot to save the Selection Encloser configuration.
62 """
63 hierarchy = []
64 for topIndex in range(self.menuTree.topLevelItemCount()):
65 topItem = self.menuTree.topLevelItem(topIndex)
66 topEntry = [topItem.text(0), []]
67 for index in range(topItem.childCount()):
68 itm = topItem.child(index)
69 topEntry[1].append(itm.text(0))
70 hierarchy.append(topEntry)
71 self.__plugin.setPreferences("MenuHierarchy", hierarchy)
72
73 @pyqtSlot()
74 def on_addMenuButton_clicked(self):
75 """
76 Private slot to add a top level menu item.
77 """
78 menuTitle, ok = QInputDialog.getText(
79 self,
80 self.tr("Menu Title"),
81 self.tr("Enter menu title:"),
82 QLineEdit.Normal)
83 if ok and menuTitle:
84 top = QTreeWidgetItem(self.menuTree, [menuTitle])
85 top.setFlags(top.flags() | Qt.ItemIsEditable)
86 top.setExpanded(True)
87
88 @pyqtSlot()
89 def on_addButton_clicked(self):
90 """
91 Private slot to add a menu entry.
92 """
93 entry, ok = QInputDialog.getText(
94 self,
95 self.tr("Menu Entry"),
96 self.tr("Enter menu entry text:"),
97 QLineEdit.Normal)
98 if ok and entry:
99 itm = QTreeWidgetItem(self.menuTree.selectedItems()[0], [entry])
100 itm.setFlags(itm.flags() | Qt.ItemIsEditable)
101
102 @pyqtSlot()
103 def on_deleteButton_clicked(self):
104 """
105 Private slot to delete the selected entry.
106 """
107 itm = self.menuTree.selectedItems()[0]
108 parent = itm.parent()
109 if parent is None:
110 index = self.menuTree.indexOfTopLevelItem(itm)
111 self.menuTree.takeTopLevelItem(index)
112 else:
113 index = parent.indexOfChild(itm)
114 parent.takeChild(index)
115 del itm
116
117 @pyqtSlot()
118 def on_upButton_clicked(self):
119 """
120 Slot documentation goes here.
121 """
122 # TODO: not implemented yet
123 raise NotImplementedError
124
125 @pyqtSlot()
126 def on_downButton_clicked(self):
127 """
128 Slot documentation goes here.
129 """
130 # TODO: not implemented yet
131 raise NotImplementedError
132
133 @pyqtSlot()
134 def on_menuTree_itemSelectionChanged(self):
135 """
136 Private slot handling the selection of an item.
137 """
138 if len(self.menuTree.selectedItems()) == 0:
139 self.addButton.setEnabled(False)
140 self.deleteButton.setEnabled(False)
141 self.upButton.setEnabled(False)
142 self.downButton.setEnabled(False)
143 else:
144 addEnable = True
145 upEnable = True
146 downEnable = True
147 itm = self.menuTree.selectedItems()[0]
148 parent = itm.parent()
149 if parent is None:
150 # top level item
151 if self.menuTree.indexOfTopLevelItem(itm) == 0:
152 upEnable = False
153 if self.menuTree.indexOfTopLevelItem(itm) == \
154 self.menuTree.topLevelItemCount() - 1:
155 downEnable = False
156 else:
157 # sub item
158 if parent.indexOfChild(itm) == 0:
159 upEnable = False
160 if parent.indexOfChild(itm) == \
161 parent.childCount() - 1:
162 downEnable = False
163 addEnable = False
164 self.addButton.setEnabled(addEnable)
165 self.deleteButton.setEnabled(True)
166 self.upButton.setEnabled(upEnable)
167 self.downButton.setEnabled(downEnable)

eric ide

mercurial