Changeset 7882:2c36ab9962ce in orange


Ignore:
Timestamp:
04/28/11 13:42:31 (3 years ago)
Author:
janezd <janez.demsar@…>
Branch:
default
Convert:
0497591845aa46c6825698a6c4117ecc956aef6f
Message:

Simplified user interface and nicer rendering for tree viewers

Location:
orange/OrangeWidgets
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Classify/OWClassificationTreeGraph.py

    r6977 r7882  
    100100            painter.save() 
    101101            painter.setBrush(QBrush(QColor(125, 162, 206, 192))) 
    102             painter.drawRoundedRect(self.boundingRect().adjusted(1, 1, -1, -1), self.borderRadius, self.borderRadius) 
     102            painter.drawRoundedRect(self.boundingRect().adjusted(-2, 1, -1, -1), 10, 10)#self.borderRadius, self.borderRadius) 
    103103            painter.restore() 
    104104        painter.setFont(self.document().defaultFont()) 
     
    107107        painter.setBrush(self.backgroundBrush) 
    108108        rect = self.rect() 
    109         painter.drawRoundedRect(rect, self.borderRadius, self.borderRadius) 
     109        painter.drawRoundedRect(rect.adjusted(-3, 0, 0, 0), 10, 10)#self.borderRadius, self.borderRadius) 
    110110        painter.restore() 
    111111        if self.truncateText: 
     
    197197        self.selectedColorSettingsIndex = 0 
    198198        self.showNodeInfoText = False 
     199        self.NodeColorMethod = 2 
    199200         
    200201        OWTreeViewer2D.__init__(self, parent, signalManager, name) 
     
    222223        self.setMouseTracking(True) 
    223224         
    224         OWGUI.button(self.NodeTab, self, "Set Colors", callback=self.setColors, debuggingEnabled = 0) 
     225        colorbox = OWGUI.widgetBox(self.NodeTab, "Node Color", addSpace=True) 
     226         
     227        OWGUI.comboBox(colorbox, self, 'NodeColorMethod', items=self.nodeColorOpts, 
     228                                callback=self.toggleNodeColor) 
     229        self.targetCombo=OWGUI.comboBox(colorbox,self, "TargetClassIndex", orientation=0, items=[],label="Target class",callback=self.toggleTargetClass) 
     230 
     231        OWGUI.checkBox(colorbox, self, 'ShowPies', 'Show distribution pie charts', tooltip='Show pie graph with class distribution?', callback=self.togglePies) 
     232        OWGUI.separator(colorbox) 
     233        OWGUI.button(colorbox, self, "Set Colors", callback=self.setColors, debuggingEnabled = 0) 
    225234 
    226235        nodeInfoBox = OWGUI.widgetBox(self.NodeTab, "Show Info") 
     
    232241                               self.nodeInfoButtons[i], callback=self.setNodeInfo, getwidget=1, id=i) 
    233242            self.NodeInfoW.append(w) 
    234 #        OWGUI.checkBox(nodeInfoBox, self, "showNodeInfoText", "Show info text", callback=self.setNodeInfo) 
    235  
    236         OWGUI.comboBox(self.NodeTab, self, 'NodeColorMethod', items=self.nodeColorOpts, box='Node Color', 
    237                                 callback=self.toggleNodeColor) 
    238  
    239         OWGUI.checkBox(self.NodeTab, self, 'ShowPies', 'Show pies', box='Pies', tooltip='Show pie graph with class distribution?', callback=self.togglePies) 
    240         self.targetCombo=OWGUI.comboBox(self.NodeTab,self, "TargetClassIndex",items=[],box="Target Class",callback=self.toggleTargetClass) 
    241          
    242         OWGUI.rubber(self.NodeTab) 
    243          
     243 
    244244#        OWGUI.button(self.controlArea, self, "Save as", callback=self.saveGraph, debuggingEnabled = 0) 
    245245        self.NodeInfoSorted=list(self.NodeInfo) 
     
    249249        self.scene.colorPalette = dlg.getDiscretePalette("colorPalette") 
    250250 
     251        OWGUI.rubber(self.NodeTab) 
     252         
    251253 
    252254    def sendReport(self): 
  • orange/OrangeWidgets/OWTreeViewer2D.py

    r7050 r7882  
    362362        self.ToolTipsEnabled = 1 
    363363        self.MaxTreeDepth = 5; self.MaxTreeDepthB = 0 
    364         self.LineWidth = 5; self.LineWidthMethod = 0 
     364        self.LineWidth = 5; self.LineWidthMethod = 2 
    365365        self.NodeSize = 5 
    366366        self.MaxNodeWidth = 150 
     
    368368        self.NodeInfo = [0, 1] 
    369369 
    370         self.NodeColorMethod = 0 
    371370        self.Zoom = 5 
    372371        self.VSpacing = 5; self.HSpacing = 5 
     
    376375        self.NodeInfo.sort() 
    377376 
     377# Changed when the GUI was simplified - added here to override any saved settings 
     378        self.VSpacing = 1; self.HSpacing = 1 
     379        self.ToolTipsEnabled = 1 
     380        self.LineWidth = 15  # Also reset when the LineWidthMethod is changed! 
     381         
    378382        # GUI definition 
    379         self.tabs = OWGUI.tabWidget(self.controlArea) 
     383#        self.tabs = OWGUI.tabWidget(self.controlArea) 
    380384 
    381385        # GENERAL TAB 
    382         GeneralTab = OWGUI.createTabPage(self.tabs, "General") 
    383         TreeTab = OWGUI.createTabPage(self.tabs, "Tree") 
    384         NodeTab = OWGUI.createTabPage(self.tabs, "Node") 
    385  
    386         OWGUI.hSlider(GeneralTab, self, 'Zoom', box='Zoom', minValue=1, maxValue=10, step=1, 
    387                       callback=self.toggleZoomSlider, ticks=1) 
    388         OWGUI.hSlider(GeneralTab, self, 'VSpacing', box='Vertical spacing', minValue=1, maxValue=10, step=1, 
    389                       callback=self.toggleVSpacing, ticks=1) 
    390         OWGUI.hSlider(GeneralTab, self, 'HSpacing', box='Horizontal spacing', minValue=1, maxValue=10, step=1, 
    391                       callback=self.toggleHSpacing, ticks=1) 
    392  
    393         OWGUI.checkBox(GeneralTab, self, 'ToolTipsEnabled', 'Show node tool tips', 
    394                        tooltip='When mouse over the node show tool tip', callback=self.updateNodeToolTips) 
    395 #        OWGUI.checkBox(GeneralTab, self, 'TruncateText', 'Truncate text to fit margins', 
    396 #                       tooltip='Truncate any text to fit the node width', 
    397 #                       callback=self.toggleTruncateText) 
    398  
    399         self.infBox = OWGUI.widgetBox(GeneralTab, 'Tree Size', sizePolicy = QSizePolicy(QSizePolicy.Minimum , QSizePolicy.Fixed )) 
     386        # GeneralTab = OWGUI.createTabPage(self.tabs, "General") 
     387#        GeneralTab = TreeTab = OWGUI.createTabPage(self.tabs, "Tree") 
     388#        NodeTab = OWGUI.createTabPage(self.tabs, "Node") 
     389 
     390        GeneralTab = NodeTab = TreeTab = self.controlArea 
     391         
     392        self.infBox = OWGUI.widgetBox(GeneralTab, 'Info', sizePolicy = QSizePolicy(QSizePolicy.Minimum , QSizePolicy.Fixed ), addSpace=True) 
    400393        self.infoa = OWGUI.widgetLabel(self.infBox, 'No tree.') 
    401394        self.infob = OWGUI.widgetLabel(self.infBox, " ") 
    402395 
    403         # TREE TAB 
    404         OWGUI.checkWithSpin(TreeTab, self, 'Max tree depth:', 1, 20, 'MaxTreeDepthB', "MaxTreeDepth", 
    405                             tooltip='Defines the depth of the tree displayed', 
    406                             checkCallback=self.toggleTreeDepth, 
    407                             spinCallback=self.toggleTreeDepth) 
    408         OWGUI.spin(TreeTab, self, 'LineWidth', min=1, max=10, step=1, label='Max line width:', 
    409                    tooltip='Defines max width of the edges that connect tree nodes', 
    410                    callback=self.toggleLineWidth) 
    411         OWGUI.radioButtonsInBox(TreeTab, self,  'LineWidthMethod', 
    412                                 ['No dependency', 'Root node', 'Parent node'], 
    413                                 box='Reference for Line Width', 
    414                                 tooltips=['All edges are of the same width', 
    415                                           'Line width is relative to number of cases in root node', 
    416                                           'Line width is relative to number of cases in parent node'], 
    417                                 callback=self.toggleLineWidth) 
    418  
    419         # NODE TAB 
    420 #        # Node size options 
    421  
    422         cb, sb = OWGUI.checkWithSpin(NodeTab, self, "Max node width:", 50, 200, "LimitNodeWidth", "MaxNodeWidth", 
     396        self.sizebox = OWGUI.widgetBox(GeneralTab, "Size", addSpace=True) 
     397        OWGUI.hSlider(self.sizebox, self, 'Zoom', label='Zoom', minValue=1, maxValue=10, step=1, 
     398                      callback=self.toggleZoomSlider, ticks=1) 
     399        OWGUI.separator(self.sizebox) 
     400         
     401        cb, sb = OWGUI.checkWithSpin(self.sizebox, self, "Max node width:", 50, 200, "LimitNodeWidth", "MaxNodeWidth", 
    423402                                     tooltip="Limit the width of tree nodes", 
    424403                                     checkCallback=self.toggleNodeSize, 
    425404                                     spinCallback=self.toggleNodeSize, 
    426405                                     step=10) 
    427         b = OWGUI.checkBox(OWGUI.indentedBox(NodeTab, sep=OWGUI.checkButtonOffsetHint(cb)), self, "TruncateText", "Truncate text", callback=self.toggleTruncateText) 
     406        b = OWGUI.checkBox(OWGUI.indentedBox(self.sizebox, sep=OWGUI.checkButtonOffsetHint(cb)), self, "TruncateText", "Truncate text", callback=self.toggleTruncateText) 
    428407        cb.disables.append(b) 
    429408        cb.makeConsistent()  
    430 #        w = OWGUI.widgetBox(NodeTab, orientation="horizontal") 
    431 #        cb = OWGUI.checkBox(w, self, "LimitNodeWidth", "Max node width", callback=self.toggleNodeSize) 
    432 #        sl = OWGUI.hSlider(w, self, 'MaxNodeWidth', #box='Max node width', 
    433 #                      minValue=50, maxValue=200, step=10, 
    434 #                      callback=self.toggleNodeSize, ticks=50) 
    435 #        cb.disables.append(sl) 
    436 #        cb.makeConsistent() 
    437  
     409 
     410        OWGUI.checkWithSpin(self.sizebox, self, 'Max tree depth:', 1, 20, 'MaxTreeDepthB', "MaxTreeDepth", 
     411                            tooltip='Defines the depth of the tree displayed', 
     412                            checkCallback=self.toggleTreeDepth, 
     413                            spinCallback=self.toggleTreeDepth) 
     414         
     415         
     416        self.edgebox = OWGUI.widgetBox(GeneralTab, "Edge Widths", addSpace=True) 
     417        OWGUI.comboBox(self.edgebox, self,  'LineWidthMethod', 
     418                                items=['Equal width', 'Root node', 'Parent node'], 
     419                                callback=self.toggleLineWidth) 
    438420        # Node information 
    439421        grid = QGridLayout() 
     
    456438        self.TreeTab=TreeTab 
    457439        self.GeneralTab=GeneralTab 
    458         OWGUI.rubber(GeneralTab) 
    459         OWGUI.rubber(TreeTab) 
    460440#        OWGUI.rubber(NodeTab) 
    461441        self.rootNode=None 
     
    514494        for edge in self.scene.edges(): 
    515495            if self.LineWidthMethod==0: 
    516                 width=self.LineWidth 
     496                width=5 # self.LineWidth 
    517497            elif self.LineWidthMethod == 1: 
    518                 width = (edge.node2.tree.distribution.cases/self.tree.distribution.cases) * self.LineWidth 
     498                width = (edge.node2.tree.distribution.cases/self.tree.distribution.cases) * 20 # self.LineWidth 
    519499            elif self.LineWidthMethod == 2: 
    520                 width = (edge.node2.tree.distribution.cases/edge.node1.tree.distribution.cases) * self.LineWidth 
     500                width = (edge.node2.tree.distribution.cases/edge.node1.tree.distribution.cases) * 10 # self.LineWidth 
    521501 
    522502            edge.setPen(QPen(Qt.gray, width, Qt.SolidLine, Qt.RoundCap)) 
     
    573553    def walkcreate(self, tree, parent=None, level=0): 
    574554        node = GraphicsNode(tree, parent, None, self.scene) 
     555        node.borderRadius = 10 
    575556        if parent: 
    576557            parent.graph_add_edge(GraphicsEdge(None, self.scene, node1=parent, node2=node)) 
  • orange/OrangeWidgets/Regression/OWRegressionTreeViewer2D.py

    r6823 r7882  
    4141            painter.save() 
    4242            painter.setBrush(QBrush(QColor(125, 162, 206, 192))) 
    43             painter.drawRoundedRect(self.boundingRect().adjusted(1, 1, -1, -1), self.borderRadius, self.borderRadius) 
     43            painter.drawRoundedRect(self.boundingRect().adjusted(-2, 1, -1, -1), 10, 10)#self.borderRadius, self.borderRadius) 
    4444            painter.restore() 
    4545        painter.setFont(self.document().defaultFont()) 
     
    4848        painter.setBrush(self.backgroundBrush) 
    4949        rect = self.rect() 
    50         painter.drawRoundedRect(rect, self.borderRadius, self.borderRadius) 
     50        painter.drawRoundedRect(rect.adjusted(-3, 0, 0, 0), 10, 10)#, self.borderRadius, self.borderRadius) 
    5151        painter.restore() 
    5252        painter.setClipRect(rect | QRectF(QPointF(0, 0), self.document().size())) 
     
    150150        self.setMouseTracking(True) 
    151151 
     152        OWGUI.comboBox(self.NodeTab, self, 'NodeColorMethod', items=self.nodeColorOpts, box='Node Color', 
     153                                callback=self.toggleNodeColor, addSpace=True) 
     154         
    152155        nodeInfoBox = OWGUI.widgetBox(self.NodeTab, "Show Info On") 
    153156        nodeInfoSettings = ['maj', 'majp', 'tarp', 'error', 'inst'] 
     
    159162            self.NodeInfoW.append(w) 
    160163 
    161         OWGUI.comboBox(self.NodeTab, self, 'NodeColorMethod', items=self.nodeColorOpts, box='Node Color', 
    162                                 callback=self.toggleNodeColor) 
    163          
    164164        OWGUI.rubber(self.NodeTab) 
    165165         
Note: See TracChangeset for help on using the changeset viewer.