Changeset 7994:8d59f63f1920 in orange


Ignore:
Timestamp:
06/11/11 11:39:05 (3 years ago)
Author:
janezd <janez.demsar@…>
Branch:
default
Convert:
b9bf053488fc2c8d8148181562cee23e0a60ff3a
Message:

Added the Report button.
The table now disappears if the widget gets a None as a classifier.
When data arrives to an empty widget with some columns disabled, it used to show all columns. Fixed.

File:
1 edited

Legend:

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

    r7910 r7994  
    265265        self.connect(self.tableView.horizontalHeader(), SIGNAL("sectionClicked(int)"), lambda section: self.tableView.resizeRowsToContents()) 
    266266        self.mainArea.layout().addWidget(self.tableView) 
     267 
     268        self.updateVisibleColumns() 
    267269         
    268270        self.changedFlag = False 
     
    270272        self.rules = [] 
    271273        self.resize(800, 600) 
     274 
     275    def sendReport(self): 
     276        nrules = self.rulesTableModel.rowCount() 
     277        print nrules 
     278        if not nrules: 
     279            self.reportRaw("<p>No rules.</p>") 
     280            return 
     281         
     282        shown = [i for i, header in enumerate(self.headers) if getattr(self, "show_%s" % header.replace(" ", "_"))] 
     283        rep = '<table>\n<tr style="height: 2px"><th colspan="11"  style="border-bottom: thin solid black; height: 2px;">\n' 
     284        rep += "<tr>"+"".join("<th>%s</th>" % self.headers[i] for i in shown)+"</tr>\n" 
     285        for row in range(nrules): 
     286            rep += "<tr>" 
     287            for col in shown: 
     288                data = _toPyObject(self.rulesTableModel.data(self.rulesTableModel.createIndex(row, col))) 
     289                if col==4: 
     290                    rep += "<td>%s</td>" % ":".join(map(str, data)) 
     291                elif col in (0, 3): 
     292                    rep += '<td align="center">%s</td>' % data 
     293                elif col in (1, 2): 
     294                    rep += '<td align="right">%.3f&nbsp;</td>' % data 
     295                else: 
     296                    rep += '<td>%s</td>' % data 
     297        rep += '<tr style="height: 2px"><th colspan="11"  style="border-bottom: thin solid black; height: 2px;">\n</table>\n' 
     298        self.reportRaw(rep) 
    272299         
    273300    def setRuleClassifier(self, classifier=None): 
     
    283310     
    284311    def updateRulesModel(self): 
     312        table = [] 
    285313        if self.classifier is not None: 
    286             table = [] 
    287314            for i, r in enumerate(self.classifier.rules): 
    288315                table.append((int(r.complexity), 
     
    292319                              r.classDistribution, 
    293320                              self.ruleText(r))) 
    294              
    295             self.rulesTableModel = PyTableModel(table, self.headers) 
    296             self.proxyModel.setSourceModel(self.rulesTableModel) 
    297              
    298             self.tableView.resizeColumnsToContents() 
    299             self.tableView.resizeRowsToContents() 
     321 
     322        self.rulesTableModel = PyTableModel(table, self.headers) 
     323        self.proxyModel.setSourceModel(self.rulesTableModel) 
     324        self.tableView.resizeColumnsToContents() 
     325        self.tableView.resizeRowsToContents() 
     326        self.updateVisibleColumns() # if the widget got data for the first time 
     327             
    300328     
    301329    def ruleText(self, rule): 
     
    308336     
    309337    def updateVisibleColumns(self): 
     338        anyVisible = False 
    310339        for i, header in enumerate(self.headers): 
    311             self.tableView.horizontalHeader().setSectionHidden(i, not getattr(self, "show_%s" % header.replace(" ", "_"))) 
     340            visible = getattr(self, "show_%s" % header.replace(" ", "_")) 
     341            self.tableView.horizontalHeader().setSectionHidden(i, not visible) 
     342            anyVisible = anyVisible or visible 
     343        self.reportButton.setEnabled(anyVisible) 
     344 
    312345     
    313346    def commitIf(self): 
Note: See TracChangeset for help on using the changeset viewer.