Skip to content

Commit efefe6b

Browse files
committed
Data info displayed in the status bar
1 parent c488819 commit efefe6b

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

Orange/widgets/data/owselectcolumns.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from Orange.widgets.settings import ContextSetting, Setting
1515
from Orange.widgets.utils.listfilter import VariablesListItemView, slices, variables_filter
1616
from Orange.widgets.utils.widgetpreview import WidgetPreview
17+
from Orange.widgets.utils.state_summary import format_summary_details
1718
from Orange.widgets.widget import Input, Output, AttributeList, Msg
1819
from Orange.data.table import Table
1920
from Orange.widgets.utils import vartype
@@ -266,6 +267,9 @@ def dropcompleted(action):
266267
self.output_data = None
267268
self.original_completer_items = []
268269

270+
self.info.set_input_summary(self.info.NoInput)
271+
self.info.set_output_summary(self.info.NoOutput)
272+
269273
self.resize(600, 600)
270274

271275
@property
@@ -343,11 +347,13 @@ def set_data(self, data=None):
343347
self.class_attrs[:] = classes
344348
self.meta_attrs[:] = metas
345349
self.available_attrs[:] = available
350+
self.info.set_input_summary(len(data), format_summary_details(data))
346351
else:
347352
self.used_attrs[:] = []
348353
self.class_attrs[:] = []
349354
self.meta_attrs[:] = []
350355
self.available_attrs[:] = []
356+
self.info.set_input_summary(self.info.NoInput)
351357

352358
def update_domain_role_hints(self):
353359
""" Update the domain hints to be stored in the widgets settings.
@@ -522,10 +528,13 @@ def commit(self):
522528
self.output_data = newdata
523529
self.Outputs.data.send(newdata)
524530
self.Outputs.features.send(AttributeList(attributes))
531+
self.info.set_output_summary(len(newdata),
532+
format_summary_details(newdata))
525533
else:
526534
self.output_data = None
527535
self.Outputs.data.send(None)
528536
self.Outputs.features.send(None)
537+
self.info.set_output_summary(self.info.NoOutput)
529538

530539
def reset(self):
531540
self.enable_used_attrs()

Orange/widgets/data/tests/test_owselectcolumns.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# pylint: disable=unsubscriptable-object
12
from unittest import TestCase
23
from unittest.mock import Mock
34

@@ -9,6 +10,7 @@
910
SelectAttributesDomainContextHandler
1011
from Orange.widgets.settings import ContextSetting
1112
from Orange.widgets.utils import vartype
13+
from Orange.widgets.utils.state_summary import format_summary_details
1214
from Orange.widgets.tests.base import WidgetTest
1315
from Orange.widgets.data.owselectcolumns \
1416
import OWSelectAttributes, VariablesListItemModel
@@ -386,3 +388,23 @@ def test_move_rows(self):
386388
d1.domain.attributes,
387389
data.domain.attributes
388390
)
391+
392+
def test_summary(self):
393+
"""Check if status bar is updated when data is received"""
394+
input_sum = self.widget.info.set_input_summary = Mock()
395+
output_sum = self.widget.info.set_output_summary = Mock()
396+
397+
data = Table("iris")
398+
self.send_signal(self.widget.Inputs.data, data)
399+
input_sum.assert_called_with(len(data), format_summary_details(data))
400+
output = self.get_output(self.widget.Outputs.data)
401+
output_sum.assert_called_with(len(output),
402+
format_summary_details(output))
403+
404+
input_sum.reset_mock()
405+
output_sum.reset_mock()
406+
self.send_signal(self.widget.Inputs.data, None)
407+
input_sum.assert_called_once()
408+
self.assertEqual(input_sum.call_args[0][0].brief, "")
409+
output_sum.assert_called_once()
410+
self.assertEqual(output_sum.call_args[0][0].brief, "")

0 commit comments

Comments
 (0)