Changeset 8408:23c2237374fb in orange


Ignore:
Timestamp:
07/21/11 12:18:58 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
f13c8d55eefd903b9dc03e3e2a31b390392ddaf2
Message:

Once again proper axis zooming, and this time relatively fast

Location:
orange/OrangeWidgets/plot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/plot/owaxis.py

    r8374 r8408  
    9696            else: 
    9797                return 
     98             
     99            if max == min: 
     100                return 
    98101                 
    99102            magnitude = int(3*log10(abs(max-min)) + 1) 
     
    265268        magnitude = log10(abs(max-min)) 
    266269         
     270    def update_zoom(self): 
     271        qDebug('Updating zoom, graph line is ' + repr(self.graph_line)) 
     272        if not self.graph_line: 
     273            return 
     274        if self.scale: 
     275            min, max, step = self.scale 
     276        else: 
     277            step = 1 
     278        v = self.graph_line.normalVector().unitVector() 
     279        for i in range(len(self._ticks)): 
     280            pos, text, size = self._ticks[i] 
     281            hs = 0.5 * step 
     282            label_pos = self.map_to_graph(pos - hs) 
     283            self.label_items[i].setTextWidth( QLineF(self.map_to_graph(pos - hs), self.map_to_graph(pos + hs) ).length() ) 
     284            if self.title_above: 
     285                label_pos = label_pos + (v.p2() - v.p1())*40 
     286            self.label_items[i].setPos(label_pos) 
     287            graph_pos = self.map_to_graph(pos) 
     288            self.tick_items[i].setPos(graph_pos) 
     289            rect = QRectF(self.graph_line.p1(), self.graph_line.p2()) 
     290            rect.adjust(-1, -1, 1, 1) 
     291            visible = rect.contains(graph_pos) 
     292            self.tick_items[i].setVisible(visible) 
     293            self.label_items[i].setVisible(visible) 
     294             
  • orange/OrangeWidgets/plot/owplot.py

    r8407 r8408  
    479479                c.updateProperties() 
    480480        self.graph_item.setTransform(self.zoom_transform) 
    481         for a in self.axes.values(): 
    482             if a.zoomable: 
    483                 a.zoom_transform = self.zoom_transform 
    484                 a.update() 
    485              
     481         
    486482        for item, region in self.selection_items: 
    487483            item.setTransform(self.zoom_transform) 
     
    494490            item.setPos(p - r.center() + r.topLeft()) 
    495491        """ 
    496          
    497         self.update_axes() 
     492        self.update_axes(zoom_only=True) 
     493         
    498494        self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) 
    499495        self.update() 
    500496         
    501     def update_axes(self): 
     497    def update_axes(self, zoom_only=False): 
    502498        for id, item in self.axes.iteritems(): 
    503499            if item.scale is None and item.labels is None: 
     
    534530                    item.graph_line = graph_line 
    535531                item.graph_line.translate(self.graph_item.pos()) 
    536             item.update() 
     532            item.zoom_transform = self.zoom_transform 
     533            if zoom_only: 
     534                item.update_zoom() 
     535            else: 
     536                item.update() 
    537537         
    538538    def replot(self, force = False): 
Note: See TracChangeset for help on using the changeset viewer.