Skip to content

Commit 8221fd3

Browse files
committed
Clear editor when data is disconnected
1 parent 6e010ef commit 8221fd3

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

Orange/widgets/data/oweditdomain.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,9 +1382,9 @@ def decorate(editor: VariableEditor) -> VariableEditor:
13821382
typecb.activated[int].connect(self.__reinterpret_activated)
13831383
form.insertRow(1, "Type:", typecb)
13841384
# Insert the typecb after name edit in the focus chain
1385-
nameedit = editor.findChild(QLineEdit, )
1386-
if nameedit is not None:
1387-
QWidget.setTabOrder(nameedit, typecb)
1385+
name_edit = editor.findChild(QLineEdit, )
1386+
if name_edit is not None:
1387+
QWidget.setTabOrder(name_edit, typecb)
13881388
return editor
13891389
# This is ugly. Create an editor for each type and insert a type
13901390
# selection combo box into its layout. Switch between widgets
@@ -1632,6 +1632,7 @@ def clear(self):
16321632
"""Clear the widget state."""
16331633
self.data = None
16341634
self.variables_model.clear()
1635+
self.clear_editor()
16351636
assert self.selected_index == -1
16361637
self.selected_index = -1
16371638

@@ -1751,6 +1752,7 @@ def clear_editor(self):
17511752
except TypeError:
17521753
pass
17531754
current.set_data(None)
1755+
current.layout().currentWidget().clear()
17541756

17551757
@Slot()
17561758
def _on_variable_changed(self):

Orange/widgets/data/tests/test_oweditdomain.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,54 @@ def test_input_data_disconnect(self):
112112
self.send_signal(self.widget.Inputs.data, None)
113113
self.assertEqual(self.widget.data, None)
114114

115+
def test_widget_state(self):
116+
"""Check if widget clears its state when the input is disconnected"""
117+
editor = self.widget.findChild(ContinuousVariableEditor)
118+
self.send_signal(self.widget.Inputs.data, self.iris)
119+
self.assertEqual(editor.name_edit.text(), "sepal length")
120+
self.send_signal(self.widget.Inputs.data, None)
121+
self.assertEqual(editor.name_edit.text(), "")
122+
self.assertEqual(
123+
self.widget.variables_model.index(0).data(Qt.EditRole), None)
124+
125+
editor = self.widget.findChild(DiscreteVariableEditor)
126+
self.send_signal(self.widget.Inputs.data, self.iris)
127+
index = self.widget.domain_view.model().index(4)
128+
self.widget.variables_view.setCurrentIndex(index)
129+
self.assertEqual(editor.name_edit.text(), "iris")
130+
self.assertEqual(editor.labels_model.get_dict(), {})
131+
self.assertNotEqual(
132+
self.widget.variables_model.index(0).data(Qt.EditRole), None)
133+
model = editor.values_edit.selectionModel().model()
134+
self.assertEqual(model.index(0).data(Qt.EditRole), "Iris-setosa")
135+
self.send_signal(self.widget.Inputs.data, None)
136+
self.assertEqual(editor.name_edit.text(), "")
137+
self.assertEqual(editor.labels_model.get_dict(), {})
138+
self.assertEqual(model.index(0).data(Qt.EditRole), None)
139+
self.assertEqual(
140+
self.widget.variables_model.index(0).data(Qt.EditRole), None)
141+
142+
editor = self.widget.findChild(TimeVariableEditor)
143+
table = Table(test_filename("datasets/cyber-security-breaches.tab"))
144+
self.send_signal(self.widget.Inputs.data, table)
145+
index = self.widget.domain_view.model().index(4)
146+
self.widget.variables_view.setCurrentIndex(index)
147+
self.assertEqual(editor.name_edit.text(), "Date_Posted_or_Updated")
148+
self.send_signal(self.widget.Inputs.data, None)
149+
self.assertEqual(editor.name_edit.text(), "")
150+
self.assertEqual(
151+
self.widget.variables_model.index(0).data(Qt.EditRole), None)
152+
153+
editor = self.widget.findChild(VariableEditor)
154+
self.send_signal(self.widget.Inputs.data, table)
155+
index = self.widget.domain_view.model().index(8)
156+
self.widget.variables_view.setCurrentIndex(index)
157+
self.assertEqual(editor.var.name, "Business_Associate_Involved")
158+
self.send_signal(self.widget.Inputs.data, None)
159+
self.assertEqual(editor.var, None)
160+
self.assertEqual(
161+
self.widget.variables_model.index(0).data(Qt.EditRole), None)
162+
115163
def test_output_data(self):
116164
"""Check data on the output after apply"""
117165
self.send_signal(self.widget.Inputs.data, self.iris)

0 commit comments

Comments
 (0)