Skip to content

Commit a5dd7cb

Browse files
authored
Merge pull request #1497 from VesnaT/heat_map_fix
[FIX] OWHeatMap: Fix crash when creating an instance of the widget
2 parents f370866 + 8d87170 commit a5dd7cb

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

Orange/widgets/visualize/owheatmap.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,9 @@ class Information(widget.OWWidget.Information):
459459
row_clust = Msg("{}")
460460
col_clust = Msg("{}")
461461

462+
class Error(widget.OWWidget.Error):
463+
no_continuous = Msg("No continuous feature columns")
464+
462465
def __init__(self):
463466
super().__init__()
464467

@@ -684,7 +687,7 @@ def set_dataset(self, data=None):
684687
data.domain.metas),
685688
data)
686689
if not data.domain.attributes:
687-
self.error("No continuous feature columns")
690+
self.Error.no_continuous()
688691
input_data = data = None
689692
else:
690693
self.Information.discrete_ignored(
@@ -1292,8 +1295,12 @@ def enable(item, state):
12921295
col_clust_msg = "Column clustering was disabled due to the " \
12931296
"input matrix being to big"
12941297

1295-
self.Information.row_clust(row_clust_msg)
1296-
self.Information.col_clust(col_clust_msg)
1298+
self.Information.row_clust.clear()
1299+
self.Information.col_clust.clear()
1300+
if row_clust_msg:
1301+
self.Information.row_clust(row_clust_msg)
1302+
if col_clust_msg:
1303+
self.Information.col_clust(col_clust_msg)
12971304

12981305
self.sort_rows = sort_rows
12991306
self.sort_columns = sort_cols
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Test methods with long descriptive names can omit docstrings
2+
# pylint: disable=missing-docstring
3+
from Orange.data import Table
4+
from Orange.preprocess import Continuize
5+
from Orange.widgets.visualize.owheatmap import OWHeatMap
6+
from Orange.widgets.tests.base import WidgetTest
7+
8+
9+
class TestOWHeatMap(WidgetTest):
10+
def setUp(self):
11+
self.widget = self.create_widget(OWHeatMap)
12+
self.iris = Table("iris")
13+
self.housing = Table("housing")
14+
self.titanic = Table("titanic")
15+
16+
def test_input_data(self):
17+
"""Check widget's data with data on the input"""
18+
for data in (self.iris, self.housing):
19+
self.assertEqual(self.widget.data, None)
20+
self.send_signal("Data", data)
21+
self.assertEqual(self.widget.data, data)
22+
self.assertFalse(self.widget.Error.active)
23+
self.assertFalse(self.widget.Warning.active)
24+
self.assertFalse(self.widget.Information.active)
25+
self.send_signal("Data", None)
26+
27+
def test_error_message(self):
28+
self.send_signal("Data", self.titanic)
29+
self.assertTrue(self.widget.Error.active)
30+
self.send_signal("Data", self.iris)
31+
self.assertFalse(self.widget.Error.active)
32+
33+
def test_information_message(self):
34+
self.widget.sort_rows = self.widget.OrderedClustering
35+
continuizer = Continuize()
36+
cont_titanic = continuizer(self.titanic)
37+
self.send_signal("Data", cont_titanic)
38+
self.assertTrue(self.widget.Information.active)
39+
self.send_signal("Data", self.iris)
40+
self.assertFalse(self.widget.Information.active)

Orange/widgets/widget.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,13 @@ class OWWidget(QDialog, Report, ProgressBarMixin, WidgetMessagesMixin,
162162
def __new__(cls, *args, **kwargs):
163163
self = super().__new__(cls, None, cls.get_flags())
164164
QDialog.__init__(self, None, self.get_flags())
165-
WidgetMessagesMixin.__init__(self)
166165

167166
stored_settings = kwargs.get('stored_settings', None)
168167
if self.settingsHandler:
169168
self.settingsHandler.initialize(self, stored_settings)
170169

170+
WidgetMessagesMixin.__init__(self)
171+
171172
self.signalManager = kwargs.get('signal_manager', None)
172173
self.__env = _asmappingproxy(kwargs.get("env", {}))
173174

0 commit comments

Comments
 (0)