Changeset 6986:e1bbcb7a4df5 in orange


Ignore:
Timestamp:
09/24/10 12:13:35 (4 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
df52f6a576c8c746a69d9aa435b28a6c03c209e9
Message:
  • added icons for Data Generator widget
Location:
orange/OrangeWidgets
Files:
6 added
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWDataGenerator.py

    r6980 r6986  
    11"""<name>Generate data</name> 
    2 <description>Generate artificial dataset with a simple 'paint' like interface</description> 
     2<description>Generate artificial data sets with a simple 'Paint' like interface</description> 
    33<contact>ales.erjavec(@at@)fri.uni-lj.si</contact> 
    44<icon>icons/GenerateData.png</icon> 
     
    99from OWWidget import * 
    1010from OWGraph import * 
     11import OWToolbars 
    1112 
    1213from OWItemModels import VariableListModel, VariableDelegate, PyListModel 
     14 
     15dir = OWToolbars.dir 
     16icon_magnet = os.path.join(dir, "magnet.svg") 
     17icon_jitter = os.path.join(dir, "jitter.svg") 
     18icon_brush = os.path.join(dir, "brush.svg") 
     19icon_put = os.path.join(dir, "put.svg") 
     20icon_select = os.path.join(dir, "select-transparent_42px.png") 
     21icon_lasso = os.path.join(dir, "lasso-transparent_42px.png") 
    1322 
    1423class DataGeneratorGraph(OWGraph): 
     
    3039         
    3140        palette = ColorPaletteGenerator(len(clsValues)) 
    32 #        data, c, w = data.toNumpy() 
    3341        for i, cls in enumerate(clsValues): 
    3442            x = [float(ex[self.attr1]) for ex in data if ex.getclass() == cls] 
     
    211219    def testSelection(self, data): 
    212220        data = numpy.asarray(data) 
    213         region = QPainterPath() 
     221        path = QPainterPath() 
    214222        for region in self.selection: 
    215             region = region.united(self.toPath(region)) 
     223            path = path.united(self.toPath(region)) 
    216224        def test(point): 
    217             return region.contains(QPointF(point[0], point[1])) 
     225            return path.contains(QPointF(point[0], point[1])) 
    218226        test = numpy.apply_along_axis(test, 1, data) 
    219227        return test 
     
    226234     
    227235    def path(self): 
    228         region = QPainterPath() 
     236        path = QPainterPath() 
    229237        for region in self.selection: 
    230             region = region.united(self.toPath(region)) 
    231         return region 
     238            path = path.united(self.toPath(region)) 
     239        return path 
    232240     
    233241    def qTransform(self): 
     
    245253     
    246254class SelectTool(DataTool): 
     255    class optionsWidget(QFrame): 
     256        actions = [("Move", ""), 
     257                   ("Delete selected", "")] 
     258        def __init__(self, tool, parent=None): 
     259            QFrame.__init__(self, parent) 
     260            self.tool = tool 
     261            layout = QHBoxLayout() 
     262            delete = QToolButton(self) 
     263            delete.pyqtConfigure(text="Delete", toolTip="Delete selected instances") 
     264            self.connect(delete, SIGNAL("clicked()"), self.tool.deleteSelected) 
     265             
     266            layout.addWidget(delete) 
     267            self.setLayout(layout) 
     268         
     269             
    247270    def __init__(self, graph, parent=None): 
    248271        DataTool.__init__(self, graph, parent) 
    249272        self.selection = GraphSelections(graph) 
    250         self.pen = QPen(Qt.red, 1, Qt.DashDotLine) 
     273        self.pen = QPen(Qt.black, 1, Qt.DashDotLine) 
    251274        self.pen.setCosmetic(True) 
    252275        self.pen.setJoinStyle(Qt.RoundJoin) 
     
    254277        self.connect(self.selection, SIGNAL("selectionRegionMoveStarted(int, QPointF, QPainterPath)"), self.onMoveStarted) 
    255278        self.connect(self.selection, SIGNAL("selectionRegionMoved(int, QPointF, QPainterPath)"), self.onMove) 
     279         
    256280         
    257281    def setGraph(self, graph): 
     
    318342        self.graph.updateGraph() 
    319343         
     344    def deleteSelected(self, *args): 
     345        data = self.graph.data 
     346        attr1, attr2 = self.graph.attr1, self.graph.attr2 
     347        path = self.selection.path() 
     348        selected = [i for i, ex in enumerate(data) if path.contains(QPointF(float(ex[attr1]) , float(ex[attr2])))] 
     349        for i in reversed(selected): 
     350            del data[i] 
     351        self.graph.updateGraph()  
     352         
    320353class GraphLassoSelections(GraphSelections): 
    321354    def start(self, event): 
     
    353386        DataTool.__init__(self, graph, parent) 
    354387        self.selection = GraphLassoSelections(graph) 
    355         self.pen = QPen(Qt.red, 1, Qt.DashDotLine) 
     388        self.pen = QPen(Qt.black, 1, Qt.DashDotLine) 
    356389        self.pen.setCosmetic(True) 
    357390        self.pen.setJoinStyle(Qt.RoundJoin) 
     
    516549            dx = -(x1 - x)/dist * attraction / max(distsq, rx) * advance 
    517550            dy = -(y1 - y)/dist * attraction / max(distsq, ry) * advance 
    518             ex[attr1] = x1 - random.normalvariate(0, dx*self.density) 
    519             ex[attr2] = y1 - random.normalvariate(0, dy*self.density) 
     551            ex[attr1] = x1 - random.normalvariate(0, dx) #*self.density) 
     552            ex[attr2] = y1 - random.normalvariate(0, dy) #*self.density) 
    520553        self.graph.updateGraph() 
    521554         
    522555class OWDataGenerator(OWWidget): 
    523     TOOLS = [("Brush", "Create multiple instances", BrushTool, "GenerateDataBrushTool.png"), 
    524              ("Put", "Put individual instances", PutInstanceTool, "GenerateDataPutTool.png"), 
    525              ("Select", "Select and move instances", SelectTool, "GenerateDataSelectTool.png"), 
    526              ("Lasso", "Select and move instances", LassoTool, "GenerateDataLassoTool.png"), 
    527              ("Jitter", "Jitter instances", JitterTool, "GenerateDataJitterTool.png"), 
    528              ("Magnet", "Move (drag) multiple instances", MagnetTool, "GenerateDataMagnetTool.png"), 
    529              ("Zoom", "Zoom", ZoomTool, "system-search.svg") #"GenerateDataZoomTool.png") 
     556    TOOLS = [("Brush", "Create multiple instances", BrushTool,  icon_brush), 
     557             ("Put", "Put individual instances", PutInstanceTool, icon_put), 
     558             ("Select", "Select and move instances", SelectTool, icon_select), 
     559             ("Lasso", "Select and move instances", LassoTool, icon_lasso), 
     560             ("Jitter", "Jitter instances", JitterTool, icon_jitter), 
     561             ("Magnet", "Move (drag) multiple instances", MagnetTool, icon_magnet), 
     562             ("Zoom", "Zoom", ZoomTool, OWToolbars.dlg_zoom) #"GenerateDataZoomTool.png") 
    530563             ] 
    531564    def __init__(self, parent=None, signalManager=None, name="Data Generator"): 
     
    584617            action.setToolTip(tooltip) 
    585618            action.setCheckable(True) 
     619            if os.path.exists(icon): 
     620                action.setIcon(QIcon(icon)) 
    586621            self.connect(action, SIGNAL("triggered()"), lambda tool=tool: self.onToolAction(tool)) 
    587622            button = QToolButton() 
    588623            button.setDefaultAction(action) 
    589             toolbox.layout().addWidget(button, i / 2, i % 2) 
     624            button.setIconSize(QSize(24, 24)) 
     625            button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) 
     626            button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) 
     627            toolbox.layout().addWidget(button, i / 3, i % 3) 
    590628            self.toolActions.addAction(action) 
    591629             
Note: See TracChangeset for help on using the changeset viewer.