Changeset 9309:a6afbb599810 in orange


Ignore:
Timestamp:
12/06/11 12:19:21 (2 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
f5c71274dcc857510cb981aeca3fdb9999982ab6
Message:

Show a widget error when table merge fails (references #1015).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Data/OWMergeData.py

    r8042 r9309  
    1212class OWMergeData(OWWidget): 
    1313 
    14     contextHandlers = {"A": DomainContextHandler("A", [ContextField("varA")], syncWithGlobal=False, contextDataVersion=2), 
    15                        "B": DomainContextHandler("B", [ContextField("varB")], syncWithGlobal=False, contextDataVersion=2)}                                             
     14    contextHandlers = {"A": DomainContextHandler("A", 
     15                                [ContextField("varA")], 
     16                                syncWithGlobal=False, 
     17                                contextDataVersion=2), 
     18                       "B": DomainContextHandler("B", 
     19                                [ContextField("varB")], 
     20                                syncWithGlobal=False, 
     21                                contextDataVersion=2)} 
    1622 
    1723    def __init__(self, parent = None, signalManager = None, name = "Merge data"): 
     
    1925 
    2026        # set channels 
    21         self.inputs = [("Examples A", ExampleTable, self.onDataAInput), ("Examples B", ExampleTable, self.onDataBInput)] 
    22         self.outputs = [("Merged Examples A+B", ExampleTable), ("Merged Examples B+A", ExampleTable)] 
     27        self.inputs = [("Examples A", ExampleTable, self.onDataAInput), 
     28                       ("Examples B", ExampleTable, self.onDataBInput)] 
     29         
     30        self.outputs = [("Merged Examples A+B", ExampleTable), 
     31                        ("Merged Examples B+A", ExampleTable)] 
    2332 
    2433        # data 
     
    4150        grid.setMargin(0) 
    4251        w.setLayout(grid) 
    43  
     52         
    4453        # attribute A 
    4554        boxAttrA = OWGUI.widgetBox(self, 'Attribute A', orientation = "vertical", addToLayout=0) 
    4655        grid.addWidget(boxAttrA, 0,0) 
    4756        self.lbAttrA = OWGUI.listBox(boxAttrA, self, "lbAttrAItems", callback = self.lbAttrAChange) 
    48  
     57         
    4958        # attribute  B 
    5059        boxAttrB = OWGUI.widgetBox(self, 'Attribute B', orientation = "vertical", addToLayout=0) 
     
    104113            self.varA = (var.name, var.varType) 
    105114            self.lbAttrA.setCurrentItem(self.lbAttrA.item(index)) 
     115        else: 
     116            self.varA = None 
    106117             
    107118        self.sendData() 
     
    130141            self.varB = (var.name, var.varType) 
    131142            self.lbAttrB.setCurrentItem(self.lbAttrB.item(index)) 
     143        else: 
     144            self.varB = None 
    132145             
    133146        self.sendData() 
     
    156169 
    157170    def sendData(self): 
     171        self.error(0) 
    158172        if self.dataA and self.dataB and self.varA and self.varB: 
    159             self.send("Merged Examples A+B", self.merge(self.dataA, self.dataB, self.varA[0], self.varB[0])) 
    160             self.send("Merged Examples B+A", self.merge(self.dataB, self.dataA, self.varB[0], self.varA[0])) 
     173            try: 
     174                self.send("Merged Examples A+B", self.merge(self.dataA, self.dataB, self.varA[0], self.varB[0])) 
     175                self.send("Merged Examples B+A", self.merge(self.dataB, self.dataA, self.varB[0], self.varA[0])) 
     176            except orange.KernelException, ex: 
     177                self.error(0, "Cannot merge the two tables (%r)" % str(ex)) 
    161178        else: 
    162179            self.send("Merged Examples A+B", None) 
     
    277294    ow=OWMergeData() 
    278295    ow.show() 
    279     data = orange.ExampleTable(r"E:\Development\Orange Datasets\UCI\iris.tab") 
     296    data = orange.ExampleTable("iris.tab") 
    280297    ow.onDataAInput(data) 
    281298    a.exec_() 
Note: See TracChangeset for help on using the changeset viewer.