SelectionEncloser/ConfigurationPage/SelectionEncloserPage.py

Mon, 26 Apr 2021 19:57:50 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 26 Apr 2021 19:57:50 +0200
changeset 46
c12f1feea96a
parent 45
896b66ba45f0
child 51
318d7ebbdce2
permissions
-rw-r--r--

Implemented some code simplifications.

1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
45
896b66ba45f0 Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
4 #
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
5
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing Selection Encloser configuration page.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
16
d5eee7835f33 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
12 from PyQt5.QtCore import pyqtSlot, Qt
d5eee7835f33 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
13 from PyQt5.QtWidgets import QTreeWidgetItem, QInputDialog, QLineEdit, QDialog
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
15 from E5Gui.E5Application import e5App
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
16
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
17 from Preferences.ConfigurationPages.ConfigurationPageBase import (
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 ConfigurationPageBase
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
19 )
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from .Ui_SelectionEncloserPage import Ui_SelectionEncloserPage
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import UI.PixmapCache
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 class SelectionEncloserPage(ConfigurationPageBase, Ui_SelectionEncloserPage):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 Class implementing Selection Encloser configuration page.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, plugin):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param plugin reference to the plugin object
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
35 super().__init__()
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.setupUi(self)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setObjectName("SelectionEncloserPage")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
39 try:
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
40 usesDarkPalette = e5App().usesDarkPalette()
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
41 except AttributeError:
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
42 # for eric6 < 20.4
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
43 from PyQt5.QtGui import QPalette
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
44 palette = e5App().palette()
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
45 lightness = palette.color(QPalette.Window).lightness()
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
46 usesDarkPalette = lightness <= 128
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
47 iconSuffix = "dark" if usesDarkPalette else "light"
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
48
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
49 self.editButton.setIcon(UI.PixmapCache.getIcon(
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
50 os.path.join("SelectionEncloser", "icons",
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
51 "edit-{0}".format(iconSuffix))))
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
52 self.addButton.setIcon(UI.PixmapCache.getIcon("plus"))
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
53 self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus"))
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
54 self.upButton.setIcon(UI.PixmapCache.getIcon("1uparrow"))
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
55 self.downButton.setIcon(UI.PixmapCache.getIcon("1downarrow"))
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.addMenuButton.setIcon(UI.PixmapCache.getIcon(
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
57 os.path.join("SelectionEncloser", "icons",
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
58 "topAdd-{0}".format(iconSuffix))))
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
59 self.addSeparatorButton.setIcon(UI.PixmapCache.getIcon(
39
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
60 os.path.join("SelectionEncloser", "icons",
401d0bab970d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
61 "separatorAdd-{0}".format(iconSuffix))))
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
63 self.editButton.setEnabled(False)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.addButton.setEnabled(False)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
65 self.addSeparatorButton.setEnabled(False)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.deleteButton.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.upButton.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.downButton.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__plugin = plugin
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 # set initial values
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 hierarchy = self.__plugin.getPreferences("MenuHierarchy")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 for menuTitle, entries in hierarchy:
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
75 if menuTitle == '--Separator--':
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
76 menuTitle = self.tr('--Separator--')
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 top = QTreeWidgetItem(self.menuTree, [menuTitle])
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
78 for title, encString in entries:
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
79 if title == '--Separator--':
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
80 title = self.tr('--Separator--')
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
81 itm = QTreeWidgetItem(top, [title])
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
82 itm.setData(0, Qt.UserRole, encString)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 top.setExpanded(True)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def save(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Public slot to save the Selection Encloser configuration.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 hierarchy = []
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 for topIndex in range(self.menuTree.topLevelItemCount()):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 topItem = self.menuTree.topLevelItem(topIndex)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
92 menuTitle = topItem.text(0)
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 if menuTitle == self.tr('--Separator--'):
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
94 menuTitle = '--Separator--'
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 topEntry = [menuTitle, []]
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 for index in range(topItem.childCount()):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 itm = topItem.child(index)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
98 title = itm.text(0)
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
99 if title == self.tr('--Separator--'):
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
100 title = '--Separator--'
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
101 topEntry[1].append([title, itm.data(0, Qt.UserRole)])
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 hierarchy.append(topEntry)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__plugin.setPreferences("MenuHierarchy", hierarchy)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 @pyqtSlot()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 def on_addMenuButton_clicked(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 Private slot to add a top level menu item.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 menuTitle, ok = QInputDialog.getText(
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self,
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.tr("Menu Title"),
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.tr("Enter menu title:"),
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 QLineEdit.Normal)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if ok and menuTitle:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 top = QTreeWidgetItem(self.menuTree, [menuTitle])
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 top.setExpanded(True)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @pyqtSlot()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def on_addButton_clicked(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Private slot to add a menu entry.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
124 from .SelectionEncloserEditDialog import SelectionEncloserEditDialog
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
125 dlg = SelectionEncloserEditDialog(parent=self)
43
135907873e65 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
126 if dlg.exec() == QDialog.Accepted:
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
127 title, encString = dlg.getData()
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
128 itm = QTreeWidgetItem(self.menuTree.selectedItems()[0], [title])
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
129 itm.setData(0, Qt.UserRole, encString)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 @pyqtSlot()
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
132 def on_addSeparatorButton_clicked(self):
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
133 """
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
134 Private slot to add a separator entry below the selected entry.
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
135 """
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
136 selItm = self.menuTree.selectedItems()[0]
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
137 parent = selItm.parent()
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
138 itm = QTreeWidgetItem([self.tr('--Separator--')])
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
139 if parent is None:
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
140 # top level item
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
141 index = self.menuTree.indexOfTopLevelItem(selItm) + 1
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
142 self.menuTree.insertTopLevelItem(index, itm)
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
143 else:
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
144 # sub item
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
145 index = parent.indexOfChild(selItm) + 1
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
146 parent.insertChild(index, itm)
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
147
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
148 @pyqtSlot()
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def on_deleteButton_clicked(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Private slot to delete the selected entry.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 itm = self.menuTree.selectedItems()[0]
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 parent = itm.parent()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 if parent is None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 index = self.menuTree.indexOfTopLevelItem(itm)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.menuTree.takeTopLevelItem(index)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 index = parent.indexOfChild(itm)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 parent.takeChild(index)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 del itm
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @pyqtSlot()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def on_upButton_clicked(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
166 Private slot to move an entry up.
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
168 self.__moveSelectedEntry(True)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @pyqtSlot()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 def on_downButton_clicked(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
173 Private slot to move an entry down.
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
174 """
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
175 self.__moveSelectedEntry(False)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
176
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
177 def __moveSelectedEntry(self, moveUp):
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
178 """
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
179 Private method to move the selected entry up or down.
11
7c821731282a Fixed a bug and added some missing source docu strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
180
7c821731282a Fixed a bug and added some missing source docu strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
181 @param moveUp flag indicating to move the entry up (boolean)
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
182 """
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
183 itm = self.menuTree.selectedItems()[0]
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
184 parent = itm.parent()
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
185 if parent is None:
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
186 # top level item
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
187 index = self.menuTree.indexOfTopLevelItem(itm)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
188 newIndex = index - 1 if moveUp else index + 1
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
189 self.menuTree.takeTopLevelItem(index)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
190 self.menuTree.insertTopLevelItem(newIndex, itm)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
191 itm.setExpanded(True)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
192 else:
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
193 # sub item
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
194 index = parent.indexOfChild(itm)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
195 newIndex = index - 1 if moveUp else index + 1
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
196 parent.takeChild(index)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
197 parent.insertChild(newIndex, itm)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
198 for sitm in self.menuTree.selectedItems():
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
199 sitm.setSelected(False)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
200 itm.setSelected(True)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
201
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
202 @pyqtSlot()
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
203 def on_editButton_clicked(self):
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
204 """
11
7c821731282a Fixed a bug and added some missing source docu strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
205 Private slot to edit the selected entry.
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
207 itm = self.menuTree.selectedItems()[0]
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
208 parent = itm.parent()
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
209 if parent is None:
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
210 menuTitle, ok = QInputDialog.getText(
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
211 self,
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
212 self.tr("Menu Entry"),
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
213 self.tr("Enter menu entry text:"),
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
214 QLineEdit.Normal,
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
215 itm.text(0))
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
216 if ok and menuTitle:
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
217 itm.setText(0, menuTitle)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
218 else:
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
219 from .SelectionEncloserEditDialog import (
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
220 SelectionEncloserEditDialog
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
221 )
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
222 dlg = SelectionEncloserEditDialog(
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
223 itm.text(0), itm.data(0, Qt.UserRole), self)
43
135907873e65 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
224 if dlg.exec() == QDialog.Accepted:
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
225 title, encString = dlg.getData()
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
226 itm.setText(0, title)
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
227 itm.setData(0, Qt.UserRole, encString)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 @pyqtSlot()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 def on_menuTree_itemSelectionChanged(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 Private slot handling the selection of an item.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 if len(self.menuTree.selectedItems()) == 0:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.addButton.setEnabled(False)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
236 self.addSeparatorButton.setEnabled(False)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 self.deleteButton.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.upButton.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.downButton.setEnabled(False)
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
240 self.editButton.setEnabled(False)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 else:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 addEnable = True
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 upEnable = True
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 downEnable = True
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 itm = self.menuTree.selectedItems()[0]
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 parent = itm.parent()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 if parent is None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 # top level item
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 if self.menuTree.indexOfTopLevelItem(itm) == 0:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 upEnable = False
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
251 if (
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
252 self.menuTree.indexOfTopLevelItem(itm) ==
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
253 self.menuTree.topLevelItemCount() - 1
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
254 ):
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 downEnable = False
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 else:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 # sub item
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if parent.indexOfChild(itm) == 0:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 upEnable = False
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
260 if parent.indexOfChild(itm) == parent.childCount() - 1:
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 downEnable = False
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 addEnable = False
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 self.addButton.setEnabled(addEnable)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
264 self.addSeparatorButton.setEnabled(True)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 self.deleteButton.setEnabled(True)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self.upButton.setEnabled(upEnable)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 self.downButton.setEnabled(downEnable)
11
7c821731282a Fixed a bug and added some missing source docu strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
268 self.editButton.setEnabled(itm.text(0) != self.tr("--Separator--"))

eric ide

mercurial