1- from AnyQt .QtCore import Qt
2-
31from Orange .data import Table , StringVariable
42from Orange .widgets .settings import (Setting , ContextSetting ,
53 DomainContextHandler )
@@ -45,8 +43,7 @@ def __init__(self):
4543 gui .indentedBox (
4644 box , gui .checkButtonOffsetHint (self .feature_radio .buttons [0 ])),
4745 self , "feature_names_column" , callback = self ._feature_combo_changed ,
48- model = self .feature_model , sendSelectedValue = True ,
49- labelWidth = 100 , contentsLength = 12 , orientation = Qt .Horizontal )
46+ model = self .feature_model )
5047
5148 self .apply_button = gui .auto_commit (
5249 self .controlArea , self , "auto_apply" , "&Apply" ,
@@ -57,20 +54,23 @@ def _feature_combo_changed(self):
5754 self .apply ()
5855
5956 def set_data (self , data ):
60- self .closeContext ()
57+ # Skip the context if the combo is empty: a context with
58+ # feature_model == None would then match all domains
59+ if self .feature_model :
60+ self .closeContext ()
6161 self .data = data
6262 self .update_controls ()
63- self .openContext (data )
63+ if self .data is not None and self .feature_model :
64+ self .openContext (data )
6465 self .apply ()
6566
6667 def update_controls (self ):
6768 self .feature_model .set_domain (None )
6869 if self .data :
6970 self .feature_model .set_domain (self .data .domain )
70- if len (self .feature_model ):
71- _names = [m .name for m in self .data .domain .metas if m .is_string ]
72- self .feature_names_column = _names [0 ]
73- enabled = bool (len (self .feature_model ))
71+ if self .feature_model :
72+ self .feature_names_column = self .feature_model [0 ]
73+ enabled = bool (self .feature_model )
7474 self .feature_radio .buttons [1 ].setEnabled (enabled )
7575 self .feature_combo .setEnabled (enabled )
7676 self .feature_type = int (enabled )
@@ -79,11 +79,9 @@ def apply(self):
7979 self .clear_messages ()
8080 transposed = None
8181 if self .data :
82- options = dict ()
83- if self .feature_type :
84- options ["feature_names_column" ] = self .feature_names_column
8582 try :
86- transposed = Table .transpose (self .data , ** options )
83+ transposed = Table .transpose (
84+ self .data , self .feature_type and self .feature_names_column )
8785 except ValueError as e :
8886 self .Error .value_error (e )
8987 self .send ("Data" , transposed )
@@ -101,6 +99,8 @@ def send_report(self):
10199
102100 app = QApplication ([])
103101 ow = OWTranspose ()
102+ d = Table ("iris" )
103+ ow .set_data (d )
104104 d = Table ("zoo" )
105105 ow .set_data (d )
106106 ow .show ()
0 commit comments