Changeset 11890:10e01cb421bf in orange


Ignore:
Timestamp:
04/16/14 16:30:52 (21 hours ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Tags:
tip
Message:

Added an option to specify the output data table name.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Data/OWDataDomain.py

    r11845 r11890  
    11import sys 
     2from functools import partial 
     3 
    24import Orange 
    35from OWWidget import * 
     
    282284        else: 
    283285            return False 
    284      
    285      
    286 from functools import partial 
     286 
     287 
     288def has_settings_from_scheme(widget): 
     289    return hasattr(widget, "_settingsFromSchema") 
     290 
     291 
    287292class OWDataDomain(OWWidget): 
     293    settingsList = ["output_name"] 
    288294    contextHandlers = {"": DomainContextHandler("", [ContextField("domain_role_hints")])} 
    289      
     295 
    290296    def __init__(self, parent=None, signalManager=None, name="Select Attributes"): 
    291297        OWWidget.__init__(self, parent, signalManager, name, wantMainArea=False) 
    292          
     298 
    293299        self.inputs = [("Data", ExampleTable, self.set_data)] 
    294300        self.outputs = [("Data", ExampleTable), ("Features", AttributeList)] 
    295          
     301 
    296302        self.domain_role_hints = {} 
    297          
     303        self.output_name = "" 
    298304        self.loadSettings() 
    299          
     305 
     306        if not has_settings_from_scheme(self): 
     307            # reset the output name for a new widget. 
     308            self.output_name = "" 
     309 
    300310        # #### 
    301311        # GUI 
     
    426436        self.down_meta_button = OWGUI.button(bbox, self, "Down", 
    427437                    callback = partial(self.move_down, self.meta_attrs_view)) 
    428          
    429         bbox = OWGUI.widgetBox(self.controlArea, orientation="horizontal", addToLayout=False, margin=0) 
    430         applyButton = OWGUI.button(bbox, self, "Apply", callback=self.commit) 
     438 
     439        bbox = OWGUI.widgetBox(self.controlArea, orientation="horizontal", 
     440                               addToLayout=False, margin=0) 
     441        self.name_edit = OWGUI.lineEdit( 
     442            bbox, self, "output_name", "Output data set name:", 
     443            orientation="horizontal" 
     444        ) 
     445        self.name_edit.setPlaceholderText("") 
     446        # 3-rd row, spanning all columns 
     447        layout.addWidget(bbox, 3, 0, 1, 3) 
     448        bbox = OWGUI.widgetBox(self.controlArea, orientation="horizontal", 
     449                               addToLayout=False, margin=0) 
     450        applyButton = OWGUI.button(bbox, self, "Apply", callback=self.commit, 
     451                                   default=True) 
    431452        resetButton = OWGUI.button(bbox, self, "Reset", callback=self.reset) 
    432          
    433         layout.addWidget(bbox, 3, 0, 1, 3) 
    434          
     453 
     454        # Move the "Report" button (if it exists) to the same horizontal layer. 
     455        # (trying to save on vertical space) 
     456        if hasattr(self, "reportButton"): 
     457            bbox.layout().addWidget(self.reportButton) 
     458        # 4-th row spanning all columns 
     459        layout.addWidget(bbox, 4, 0, 1, 3) 
     460 
    435461        layout.setRowStretch(0, 4) 
    436462        layout.setRowStretch(1, 0) 
     
    524550            self.meta_attrs[:] = metas 
    525551            self.available_attrs[:] = available 
     552            self.name_edit.setPlaceholderText(data.name) 
    526553        else: 
    527554            self.used_attrs[:] = [] 
     
    529556            self.meta_attrs[:] = [] 
    530557            self.available_attrs[:] = [] 
    531          
     558            self.name_edit.setPlaceholderText("") 
    532559        self.commit() 
    533560         
     
    719746                    mid = Orange.feature.Descriptor.new_meta_id() 
    720747                domain.addmeta(mid, meta) 
    721             newdata = Orange.data.Table(domain, self.data) 
     748            name = self.output_name if self.output_name else self.data.name 
     749            newdata = Orange.data.Table(domain, self.data, name=name) 
    722750            self.output_report = self.prepareDataReport(newdata) 
    723751            self.output_domain = domain 
Note: See TracChangeset for help on using the changeset viewer.