Skip to content

Commit 3d4050f

Browse files
authored
Merge pull request #4693 from aturanjanin/ownomogram
Nomogram: data info displayed in the status bar
2 parents b5e910f + e30be7d commit 3d4050f

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

Orange/widgets/visualize/ownomogram.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from Orange.widgets.settings import Setting, ContextSetting, \
2626
ClassValuesContextHandler
2727
from Orange.widgets.utils.widgetpreview import WidgetPreview
28+
from Orange.widgets.utils.state_summary import format_summary_details
2829
from Orange.widgets.widget import OWWidget, Msg, Input, Output, AttributeList
2930
from Orange.widgets import gui
3031

@@ -640,6 +641,8 @@ def __init__(self):
640641
self.old_target_class_index = self.target_class_index
641642
self.repaint = False
642643

644+
self.info.set_input_summary(self.info.NoInput)
645+
643646
# GUI
644647
box = gui.vBox(self.controlArea, "Target class")
645648
self.class_combo = gui.comboBox(
@@ -784,6 +787,9 @@ def update_controls(self):
784787
@Inputs.data
785788
def set_data(self, data):
786789
self.instances = data
790+
summary = len(data) if data else self.info.NoInput
791+
details = format_summary_details(data) if data else ""
792+
self.info.set_input_summary(summary, details)
787793
self.feature_marker_values = []
788794
self.set_feature_marker_values()
789795
self.update_scene()

Orange/widgets/visualize/tests/test_ownomogram.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
)
1414
from Orange.tests import test_filename
1515
from Orange.widgets.tests.base import WidgetTest
16+
from Orange.widgets.utils.state_summary import format_summary_details
1617
from Orange.widgets.visualize.ownomogram import (
1718
OWNomogram, DiscreteFeatureItem, ContinuousFeatureItem, ProbabilitiesDotItem,
1819
MovableToolTip
@@ -278,6 +279,20 @@ def mocked_width():
278279
# most left text at 3. iteration is the same -> stop
279280
self.assertEqual(mocked_item.call_args_list[15][0][0], "foo3")
280281

282+
def test_summary(self):
283+
"""Check if status bar is updated when data is received"""
284+
data = self.data
285+
info = self.widget.info
286+
no_input = "No data on input"
287+
288+
self.send_signal(self.widget.Inputs.data, data)
289+
summary, details = f"{len(data)}", format_summary_details(data)
290+
self.assertEqual(info._StateInfo__input_summary.brief, summary)
291+
self.assertEqual(info._StateInfo__input_summary.details, details)
292+
self.send_signal(self.widget.Inputs.data, None)
293+
self.assertEqual(info._StateInfo__input_summary.brief, "")
294+
self.assertEqual(info._StateInfo__input_summary.details, no_input)
295+
281296

282297
if __name__ == "__main__":
283298
unittest.main()

0 commit comments

Comments
 (0)