Changeset 4954:bbb47fb10993 in orange


Ignore:
Timestamp:
07/11/08 14:41:00 (6 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
8106dfe5709f4db7b30a315996129584c1a41c19
Message:

-fixed widget layout
-fixed mouse event handling
-fixed performance issues (redraw on every mouse event)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Associate/OWAssociationRulesViewer.py

    r4909 r4954  
    1616        self.master = master 
    1717        self.rect = None 
     18        self.mousePressed = False 
    1819        self.unselect() 
    1920        self.draw() 
     
    2223        if self.rect: 
    2324            self.rect.hide() 
    24             self.rect = None 
     25##            self.rect = None 
    2526 
    2627 
     
    4647                sel = selx and y >= srmin and y <= srmax 
    4748                cell = QGraphicsRectItem(x*cw, y*ch, cw+1, ch+1, None, self) 
     49                cell.setZValue(0) 
    4850                cell.setPen(pens[sel]) 
    4951                if not ig[y][x]: 
     
    6062##        if self.rect: 
    6163##            self.rect.hide() 
    62         if scmin > -1: 
    63             self.rect = QGraphicsRectItem(scmin*cw, srmin*ch, (scmax-scmin+1)*cw, (srmax-srmin+1)*ch, None, self) 
    64             self.rect.setPen(QPen(QColor(128, 128, 255), 2)) 
    65             self.rect.show() 
    66         else: 
    67             self.rect = None 
     64##        if scmin > -1: 
     65        self.rect = QGraphicsRectItem(scmin*cw, srmin*ch, (scmax-scmin+1)*cw, (srmax-srmin+1)*ch, None, self) 
     66        self.rect.setPen(QPen(QColor(128, 128, 255), 2)) 
     67        self.rect.setZValue(1) 
     68        self.rect.hide() 
     69##        else: 
     70##            self.rect = None 
    6871 
    6972        self.update() 
     
    7275        self.master.shownRules.setText('%3i' % sum([sum([len(cell) for cell in row]) for row in master.ingrid])) 
    7376 
     77    def updateSelectionRect(self): 
     78        master = self.master 
     79        self.rect.setRect(master.sel_colmin*master.cellwidth, 
     80                          master.sel_rowmin*master.cellheight, 
     81                          (master.sel_colmax-master.sel_colmin+1)*master.cellwidth, 
     82                          (master.sel_rowmax-master.sel_rowmin)*master.cellheight) 
     83        self.update() 
     84 
    7485    def mousePressEvent(self, ev): 
    75         self.sel_startX = int(ev.pos().x()) 
    76         self.sel_startY = int(ev.pos().y()) 
     86        self.sel_startX = int(ev.scenePos().x()) 
     87        self.sel_startY = int(ev.scenePos().y()) 
    7788        master = self.master 
    7889        master.sel_colmin = master.sel_colmax = self.sel_startX / master.cellwidth 
    7990        master.sel_rowmin = master.sel_rowmax = self.sel_startY / master.cellheight 
    80         self.draw() 
     91##        self.draw() 
     92        self.rect.show() 
     93        self.updateSelectionRect() 
    8194        master.updateRuleList() 
     95        self.mousePressed = True 
    8296 
    8397    def mouseMoveEvent(self, ev): 
    84         self.sel_endX = int(ev.pos().x()) 
    85         self.sel_endY = int(ev.pos().y()) 
    86         t = self.sel_startX /self.master.cellwidth, self.sel_endX /self.master.cellwidth 
    87         self.master.sel_colmin, self.master.sel_colmax = min(t), max(t) 
    88         t = self.sel_startY /self.master.cellheight, self.sel_endY /self.master.cellheight 
    89         self.master.sel_rowmin, self.master.sel_rowmax = min(t), max(t) 
    90  
    91         self.master.sel_colmin = max(self.master.sel_colmin, 0) 
    92         self.master.sel_rowmin = max(self.master.sel_rowmin, 0) 
    93         self.master.sel_colmax = min(self.master.sel_colmax, self.master.numcols-1) 
    94         self.master.sel_rowmax = min(self.master.sel_rowmax, self.master.numrows-1) 
    95  
    96         self.draw() 
    97         self.master.updateRuleList() 
     98        if self.mousePressed: 
     99            self.sel_endX = int(ev.scenePos().x()) 
     100            self.sel_endY = int(ev.scenePos().y()) 
     101            t = self.sel_startX /self.master.cellwidth, self.sel_endX /self.master.cellwidth 
     102            self.master.sel_colmin, self.master.sel_colmax = min(t), max(t) 
     103            t = self.sel_startY /self.master.cellheight, self.sel_endY /self.master.cellheight 
     104            self.master.sel_rowmin, self.master.sel_rowmax = min(t), max(t) 
     105 
     106            self.master.sel_colmin = max(self.master.sel_colmin, 0) 
     107            self.master.sel_rowmin = max(self.master.sel_rowmin, 0) 
     108            self.master.sel_colmax = min(self.master.sel_colmax, self.master.numcols-1) 
     109            self.master.sel_rowmax = min(self.master.sel_rowmax, self.master.numrows-1) 
     110 
     111##            self.draw() 
     112            self.updateSelectionRect() 
     113            self.master.updateRuleList() 
    98114 
    99115    def mouseReleaseEvent(self, ev): 
    100         self.master.sendIfAuto()         
     116        self.master.sendIfAuto() 
     117        self.mousePressed = False 
    101118 
    102119 
     
    150167 
    151168    def __init__(self, parent=None, signalManager = None): 
    152         OWWidget.__init__(self, parent, signalManager, "AssociationRulesViewer") 
     169        OWWidget.__init__(self, parent, signalManager, "AssociationRulesViewer", wantMainArea=0) 
    153170 
    154171        self.inputs = [("Association Rules", orange.AssociationRules, self.arules)] 
     
    170187        self.selectedRules = [] 
    171188        self.noZoomButton() 
     189        self.mainArea = OWGUI.widgetBox(self.topWidgetPart, orientation = "horizontal", sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding), margin = 0) 
    172190 
    173191        mainLeft = OWGUI.widgetBox(self.mainArea, "Filter") 
     
    214232        for i, m in enumerate(self.measures): 
    215233            cb = OWGUI.checkBox(rightUpRight, self, m[2], m[0], callback = self.showHideColumns, addToLayout = 0) 
    216             self.grid.addWidget(cb.parentWidget(), i % 2, i / 2) 
     234            self.grid.addWidget(cb, i % 2, i / 2) 
     235##            self.grid.addWidget(cb.parentWidget(), i % 2, i / 2) 
    217236 
    218237#        rightUpRight = OWGUI.widgetBox(mainRight, orientation=0) 
     
    246265 
    247266        bottomGrid.addWidget(self.saveButton, 1, 0) 
    248         bottomGrid.addWidget(autoSend.parentWidget(), 0, 1) 
     267        bottomGrid.addWidget(autoSend, 0, 1) 
    249268        bottomGrid.addWidget(commitButton, 1, 1) 
    250269 
Note: See TracChangeset for help on using the changeset viewer.