Skip to content

Commit 399099d

Browse files
committed
Implement support for deleting a previously added widget. Only QListBox and QButtonGroup are currently supported.
1 parent 8880938 commit 399099d

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

src/cwizard.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,12 +901,23 @@ def processKey(self, key) :
901901
def __registerField(self, name, widget) :
902902
self.fields[name] = widget
903903

904+
def __unregisterField(self, name) :
905+
w = None
906+
if name and name in self.fields :
907+
w = self.fields[name]
908+
del self.fields[name]
909+
return w
910+
904911
def __registerFocus(self, widget) :
905912
self.focusWidgets.append(widget)
906913
if self.focus == -1 :
907914
self.focus = 0
908915
widget.inside = True
909916

917+
def __unregisterFocus(self, widget) :
918+
if widget and widget in self.focusWidgets :
919+
self.focusWidgets.remove(widget)
920+
910921
def setTitle(self, title) :
911922
self.title = title
912923

@@ -917,6 +928,12 @@ def __addWidget(self, fieldName, w = None, focus = True):
917928
self.__registerFocus(w)
918929
self.widgets.append(w)
919930

931+
def delWidget(self, fieldName) :
932+
w = self.__unregisterField(fieldName)
933+
if w :
934+
self.__unregisterFocus(w)
935+
self.widgets.remove(w)
936+
920937
def addLabel(self, fieldName, label, defaultValue = '', tooltip = "I DON'T HAVE A TOOLTIP", callBack = None) :
921938
w = CursesLabel(label)
922939
self.__addWidget(fieldName, w, False)

src/qtwizard.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,25 @@ def __init__(self, title = "I DON'T HAVE A NAME"):
106106
self.rowsCount = 0
107107
self.setTitle(title)
108108
self.fieldsTypes = {}
109+
self.fieldsContainer = {}
109110

110111
self.widget.setTitle(title)
111112

112113
self.nextCB = None
113114

114-
def __registerField(self, name, widget, fieldType):
115+
def __registerField(self, name, widget, fieldType, container=None):
115116
self.fields[name] = widget
116117
self.fieldsTypes[name] = fieldType
118+
self.fieldsContainer[name] = container
119+
120+
def __unregisterField(self, name):
121+
container = None
122+
if name and name in self.fields:
123+
container = self.fieldsContainer[name]
124+
del self.fields[name]
125+
del self.fieldsTypes[name]
126+
del self.fieldsContainer[name]
127+
return container
117128

118129
def onValidate(self, nextCB):
119130
self.nextCB = nextCB
@@ -266,6 +277,11 @@ def __addWidget(self, widget, row=-1, column=-1):
266277
if row >= self.rowsCount:
267278
self.rowsCount = row + 1
268279

280+
def delWidget(self, fieldName):
281+
# Not supported on every QtWidget
282+
container = self.__unregisterField(fieldName)
283+
if container:
284+
self.pageLayout.removeWidget(container)
269285

270286
def setTitle(self,title):
271287
self.widget.setWindowTitle(title)
@@ -422,7 +438,7 @@ def addBoxList(self, fieldName, label='', defaultValueTuple=([],''), toolTip='',
422438
tableView.item(selectedIndex, 0).setSelected(True)
423439

424440
if fieldName:
425-
self.__registerField(fieldName, tableView, 'QListBox')
441+
self.__registerField(fieldName, tableView, 'QListBox', w)
426442

427443
self.__addWidget(w)
428444

@@ -478,7 +494,7 @@ def addRadioList(self, fieldName, label='', defaultValueTuple=([],''), toolTip='
478494
buttonGroup.buttonReleased.connect(self.widget.completeChanged)
479495

480496
if fieldName:
481-
self.__registerField(fieldName, buttonGroup, 'QButtonGroup')
497+
self.__registerField(fieldName, buttonGroup, 'QButtonGroup', w)
482498

483499
self.__addWidget(w)
484500

0 commit comments

Comments
 (0)