Skip to content

Commit

Permalink
OWDataTable: Do not override widget's inputs
Browse files Browse the repository at this point in the history
They should not be overriden, unless there is some non-obvious reason,
in order to make report unittest work for this widget.
  • Loading branch information
VesnaT authored and kernc committed Sep 19, 2016
1 parent 852345a commit 19f4071
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 10 deletions.
16 changes: 8 additions & 8 deletions Orange/widgets/data/owtable.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ class OWDataTable(widget.OWWidget):
def __init__(self):
super().__init__()

self.inputs = OrderedDict()
self._inputs = OrderedDict()

self.dist_color = QtGui.QColor(*self.dist_color_RGB)

Expand Down Expand Up @@ -436,9 +436,9 @@ def set_dataset(self, data, tid=None):
"""Set the input dataset."""
self.closeContext()
if data is not None:
if tid in self.inputs:
if tid in self._inputs:
# update existing input slot
slot = self.inputs[tid]
slot = self._inputs[tid]
view = slot.view
# reset the (header) view state.
view.setModel(None)
Expand Down Expand Up @@ -472,7 +472,7 @@ def sort_reset(index, order):
self._setup_table_view(view, data)
slot = TableSlot(tid, data, table_summary(data), view)
view._input_slot = slot
self.inputs[tid] = slot
self._inputs[tid] = slot

self.tabs.setCurrentIndex(self.tabs.indexOf(view))

Expand All @@ -485,8 +485,8 @@ def update(f):

slot.summary.len.add_done_callback(update)

elif tid in self.inputs:
slot = self.inputs.pop(tid)
elif tid in self._inputs:
slot = self._inputs.pop(tid)
view = slot.view
view.hide()
view.deleteLater()
Expand Down Expand Up @@ -657,7 +657,7 @@ def _update_variable_labels(self, view):

def _on_show_variable_labels_changed(self):
"""The variable labels (var.attribues) visibility was changed."""
for slot in self.inputs.values():
for slot in self._inputs.values():
self._update_variable_labels(slot.view)

def _on_distribution_color_changed(self):
Expand All @@ -683,7 +683,7 @@ def _on_distribution_color_changed(self):
tab.reset()

def _on_select_rows_changed(self):
for slot in self.inputs.values():
for slot in self._inputs.values():
selection_model = slot.view.selectionModel()
selection_model.setSelectBlocks(not self.select_rows)
if self.select_rows:
Expand Down
22 changes: 22 additions & 0 deletions Orange/widgets/data/tests/test_owtable.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from Orange.data import Table
from Orange.widgets.data.owtable import OWDataTable
from Orange.widgets.tests.base import WidgetTest


class TestOWDataTable(WidgetTest):
def setUp(self):
self.widget = self.create_widget(OWDataTable)
self.iris = Table("iris")

def test_input_data(self):
"""Check number of tabs with data on the input"""
self.send_signal("Data", self.iris, 1)
self.assertEqual(self.widget.tabs.count(), 1)
self.send_signal("Data", self.iris, 2)
self.assertEqual(self.widget.tabs.count(), 2)
self.send_signal("Data", None, 1)
self.assertEqual(self.widget.tabs.count(), 1)

def test_data_model(self):
self.send_signal("Data", self.iris, 1)
self.assertEqual(self.widget.tabs.widget(0).model().rowCount(), len(self.iris))
4 changes: 2 additions & 2 deletions Orange/widgets/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ def show(self, widget=None):
widget.show()
app.exec()

def send_signal(self, input_name, value, id=None, widget=None):
def send_signal(self, input_name, value, *args, widget=None):
""" Send signal to widget by calling appropriate triggers.
Parameters
Expand All @@ -167,7 +167,7 @@ def send_signal(self, input_name, value, id=None, widget=None):
widget = self.widget
for input_signal in widget.inputs:
if input_signal.name == input_name:
getattr(widget, input_signal.handler)(value)
getattr(widget, input_signal.handler)(value, *args)
break
widget.handleNewSignals()

Expand Down

0 comments on commit 19f4071

Please sign in to comment.