99from AnyQt .QtCore import Qt , QPointF , QSizeF , QRectF
1010
1111from Orange .base import TreeModel , SklModel
12+ from Orange .widgets .utils .signals import Input , Output
1213from Orange .widgets .visualize .owtreeviewer2d import \
1314 GraphicsNode , GraphicsEdge , OWTreeViewer2D
1415from Orange .widgets .utils import to_html
1516from Orange .data import Table
1617
1718from Orange .widgets .settings import ContextSetting , ClassValuesContextHandler , \
1819 Setting
19- from Orange .widgets import gui , widget
20+ from Orange .widgets import gui
2021from Orange .widgets .utils .colorpalette import ContinuousPaletteGenerator
2122from Orange .widgets .utils .annotated_data import (create_annotated_table ,
2223 ANNOTATED_DATA_SIGNAL_NAME )
@@ -158,21 +159,15 @@ class OWTreeGraph(OWTreeViewer2D):
158159 name = "Tree Viewer"
159160 icon = "icons/TreeViewer.svg"
160161 priority = 35
161- inputs = [
162- widget .InputSignal (
163- "Tree" , TreeModel , "ctree" ,
164- # Had different input names before merging from
165- # Classification/Regression tree variants
166- replaces = ["Classification Tree" , "Regression Tree" ])
167- ]
168- outputs = [
169- widget .OutputSignal (
170- "Selected Data" , Table , widget .Default , id = "selected-data" ,
171- ),
172- widget .OutputSignal (
173- ANNOTATED_DATA_SIGNAL_NAME , Table , id = "annotated-data" )
174- ]
175162
163+ class Inputs :
164+ # Had different input names before merging from
165+ # Classification/Regression tree variants
166+ tree = Input ("Tree" , TreeModel , replaces = ["Classification Tree" , "Regression Tree" ])
167+
168+ class Outputs :
169+ selected_data = Output ("Selected Data" , Table , default = True , id = "selected-data" )
170+ annotated_data = Output (ANNOTATED_DATA_SIGNAL_NAME , Table , id = "annotated-data" )
176171
177172 settingsHandler = ClassValuesContextHandler ()
178173 target_class_index = ContextSetting (0 )
@@ -257,6 +252,7 @@ def toggle_color_reg(self):
257252 self .set_node_info ()
258253 self .scene .update ()
259254
255+ @Inputs .tree
260256 def ctree (self , model = None ):
261257 """Input signal handler"""
262258 self .clear_scene ()
@@ -297,9 +293,8 @@ def ctree(self, model=None):
297293 self .tree_adapter .num_nodes ,
298294 len (self .tree_adapter .leaves (self .tree_adapter .root ))))
299295 self .setup_scene ()
300- self .send ("Selected Data" , None )
301- self .send (ANNOTATED_DATA_SIGNAL_NAME ,
302- create_annotated_table (self .dataset , []))
296+ self .Outputs .selected_data .send (None )
297+ self .Outputs .annotated_data .send (create_annotated_table (self .dataset , []))
303298
304299 def walkcreate (self , node , parent = None ):
305300 """Create a structure of tree nodes from the given model"""
@@ -324,10 +319,9 @@ def update_selection(self):
324319 nodes = [item .node_inst for item in self .scene .selectedItems ()
325320 if isinstance (item , TreeNode )]
326321 data = self .tree_adapter .get_instances_in_nodes (nodes )
327- self .send ("Selected Data" , data )
328- self .send (ANNOTATED_DATA_SIGNAL_NAME , create_annotated_table (
329- self .dataset ,
330- self .tree_adapter .get_indices (nodes )))
322+ self .Outputs .selected_data .send (data )
323+ self .Outputs .annotated_data .send (create_annotated_table (
324+ self .dataset , self .tree_adapter .get_indices (nodes )))
331325
332326 def send_report (self ):
333327 if not self .model :
0 commit comments