eric7/Debugger/VariablesFilterDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2002 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the variables filter dialog.
8 """
9
10 from PyQt5.QtCore import Qt
11 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QListWidgetItem
12
13 from Debugger.Config import ConfigVarTypeDispStrings
14 import Preferences
15
16 from .Ui_VariablesFilterDialog import Ui_VariablesFilterDialog
17
18
19 class VariablesFilterDialog(QDialog, Ui_VariablesFilterDialog):
20 """
21 Class implementing the variables filter dialog.
22
23 It opens a dialog window for the configuration of the variables type
24 filter to be applied during a debugging session.
25 """
26 def __init__(self, parent=None, name=None, modal=False):
27 """
28 Constructor
29
30 @param parent parent widget of this dialog (QWidget)
31 @param name name of this dialog (string)
32 @param modal flag to indicate a modal dialog (boolean)
33 """
34 super().__init__(parent)
35 if name:
36 self.setObjectName(name)
37 self.setModal(modal)
38 self.setupUi(self)
39
40 self.defaultButton = self.buttonBox.addButton(
41 self.tr("Save Default"), QDialogButtonBox.ButtonRole.ActionRole)
42
43 #populate the list widgets and set the default selection
44 for widget in self.localsList, self.globalsList:
45 for varType, varTypeStr in ConfigVarTypeDispStrings.items():
46 itm = QListWidgetItem(self.tr(varTypeStr), widget)
47 itm.setData(Qt.ItemDataRole.UserRole, varType)
48 itm.setFlags(Qt.ItemFlag.ItemIsEnabled |
49 Qt.ItemFlag.ItemIsUserCheckable)
50 itm.setCheckState(Qt.CheckState.Unchecked)
51 widget.addItem(itm)
52
53 lDefaultFilter, gDefaultFilter = Preferences.getVarFilters()
54 self.setSelection(lDefaultFilter, gDefaultFilter)
55
56 def getSelection(self):
57 """
58 Public slot to retrieve the current selections.
59
60 @return tuple of lists containing the variable filters. The first list
61 is the locals variables filter, the second the globals variables
62 filter.
63 @rtype tuple of (list of str, list of str)
64 """
65 lList = []
66 for row in range(self.localsList.count()):
67 itm = self.localsList.item(row)
68 if itm.checkState() == Qt.CheckState.Unchecked:
69 lList.append(itm.data(Qt.ItemDataRole.UserRole))
70
71 gList = []
72 for row in range(self.globalsList.count()):
73 itm = self.globalsList.item(row)
74 if itm.checkState() == Qt.CheckState.Unchecked:
75 gList.append(itm.data(Qt.ItemDataRole.UserRole))
76 return (lList, gList)
77
78 def setSelection(self, lList, gList):
79 """
80 Public slot to set the current selection.
81
82 @param lList local variables filter
83 @type list of str
84 @param gList global variables filter
85 @type list of str
86 """
87 for row in range(self.localsList.count()):
88 itm = self.localsList.item(row)
89 if itm.data(Qt.ItemDataRole.UserRole) in lList:
90 itm.setCheckState(Qt.CheckState.Unchecked)
91 else:
92 itm.setCheckState(Qt.CheckState.Checked)
93
94 for row in range(self.globalsList.count()):
95 itm = self.globalsList.item(row)
96 if itm.data(Qt.ItemDataRole.UserRole) in gList:
97 itm.setCheckState(Qt.CheckState.Unchecked)
98 else:
99 itm.setCheckState(Qt.CheckState.Checked)
100
101 def on_buttonBox_clicked(self, button):
102 """
103 Private slot called by a button of the button box clicked.
104
105 @param button button that was clicked (QAbstractButton)
106 """
107 if button == self.defaultButton:
108 Preferences.setVarFilters(self.getSelection())

eric ide

mercurial