Skip to content

Commit

Permalink
Clear editor when data is disconnected
Browse files Browse the repository at this point in the history
  • Loading branch information
aturanjanin committed Mar 17, 2020
1 parent 6e010ef commit 8221fd3
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
8 changes: 5 additions & 3 deletions Orange/widgets/data/oweditdomain.py
Original file line number Diff line number Diff line change
Expand Up @@ -1382,9 +1382,9 @@ def decorate(editor: VariableEditor) -> VariableEditor:
typecb.activated[int].connect(self.__reinterpret_activated)
form.insertRow(1, "Type:", typecb)
# Insert the typecb after name edit in the focus chain
nameedit = editor.findChild(QLineEdit, )
if nameedit is not None:
QWidget.setTabOrder(nameedit, typecb)
name_edit = editor.findChild(QLineEdit, )
if name_edit is not None:
QWidget.setTabOrder(name_edit, typecb)
return editor
# This is ugly. Create an editor for each type and insert a type
# selection combo box into its layout. Switch between widgets
Expand Down Expand Up @@ -1632,6 +1632,7 @@ def clear(self):
"""Clear the widget state."""
self.data = None
self.variables_model.clear()
self.clear_editor()
assert self.selected_index == -1
self.selected_index = -1

Expand Down Expand Up @@ -1751,6 +1752,7 @@ def clear_editor(self):
except TypeError:
pass
current.set_data(None)
current.layout().currentWidget().clear()

@Slot()
def _on_variable_changed(self):
Expand Down
48 changes: 48 additions & 0 deletions Orange/widgets/data/tests/test_oweditdomain.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,54 @@ def test_input_data_disconnect(self):
self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(self.widget.data, None)

def test_widget_state(self):
"""Check if widget clears its state when the input is disconnected"""
editor = self.widget.findChild(ContinuousVariableEditor)
self.send_signal(self.widget.Inputs.data, self.iris)
self.assertEqual(editor.name_edit.text(), "sepal length")
self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(editor.name_edit.text(), "")
self.assertEqual(
self.widget.variables_model.index(0).data(Qt.EditRole), None)

editor = self.widget.findChild(DiscreteVariableEditor)
self.send_signal(self.widget.Inputs.data, self.iris)
index = self.widget.domain_view.model().index(4)
self.widget.variables_view.setCurrentIndex(index)
self.assertEqual(editor.name_edit.text(), "iris")
self.assertEqual(editor.labels_model.get_dict(), {})
self.assertNotEqual(
self.widget.variables_model.index(0).data(Qt.EditRole), None)
model = editor.values_edit.selectionModel().model()
self.assertEqual(model.index(0).data(Qt.EditRole), "Iris-setosa")
self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(editor.name_edit.text(), "")
self.assertEqual(editor.labels_model.get_dict(), {})
self.assertEqual(model.index(0).data(Qt.EditRole), None)
self.assertEqual(
self.widget.variables_model.index(0).data(Qt.EditRole), None)

editor = self.widget.findChild(TimeVariableEditor)
table = Table(test_filename("datasets/cyber-security-breaches.tab"))
self.send_signal(self.widget.Inputs.data, table)
index = self.widget.domain_view.model().index(4)
self.widget.variables_view.setCurrentIndex(index)
self.assertEqual(editor.name_edit.text(), "Date_Posted_or_Updated")
self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(editor.name_edit.text(), "")
self.assertEqual(
self.widget.variables_model.index(0).data(Qt.EditRole), None)

editor = self.widget.findChild(VariableEditor)
self.send_signal(self.widget.Inputs.data, table)
index = self.widget.domain_view.model().index(8)
self.widget.variables_view.setCurrentIndex(index)
self.assertEqual(editor.var.name, "Business_Associate_Involved")
self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(editor.var, None)
self.assertEqual(
self.widget.variables_model.index(0).data(Qt.EditRole), None)

def test_output_data(self):
"""Check data on the output after apply"""
self.send_signal(self.widget.Inputs.data, self.iris)
Expand Down

0 comments on commit 8221fd3

Please sign in to comment.