Changeset 8431:52c116481495 in orange


Ignore:
Timestamp:
07/23/11 18:19:23 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
90f2b64861e24b8b8e522360c3814bc8c151e133
Message:

Make highlights in LinProj nicer, scalable, and working when zoomed in

Location:
orange/OrangeWidgets
Files:
4 edited

Legend:

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

    r8423 r8431  
    435435        self.tooltipMarkers = [] 
    436436 
    437         canvasPos = self.map_from_widget(e.pos()) 
    438         xFloat, yFloat = self.map_from_graph(canvasPos) 
     437        xFloat, yFloat = self.map_from_graph(self.mapToScene(e.pos()), zoom=True) 
    439438 
    440439        # in case we are drawing a rectangle, we don't draw enhanced tooltips 
     
    482481                        markerX, markerY = xAnchor*(attrVal+0.03), yAnchor*(attrVal+0.03) 
    483482                        curve = self.addCurve("", color, color, 1, style = Qt.SolidLine, symbol = OWPoint.NoSymbol, xData = [0, xAnchor*attrVal], yData = [0, yAnchor*attrVal], lineWidth=3) 
     483                        curve.setZValue(HighlightZValue) 
    484484 
    485485                        marker = None 
  • orange/OrangeWidgets/plot/owaxis.py

    r8429 r8431  
    3636from math import * 
    3737 
    38 from PyQt4.QtGui import QGraphicsItemGroup, QGraphicsLineItem, QGraphicsTextItem, QPainterPath, QGraphicsPathItem, QGraphicsScene, QTransform 
     38from PyQt4.QtGui import QGraphicsItem, QGraphicsLineItem, QGraphicsTextItem, QPainterPath, QGraphicsPathItem, QGraphicsScene, QTransform 
    3939from PyQt4.QtCore import QLineF, QPointF, qDebug, QRectF 
    4040 
     
    4343from owtools import resize_plot_item_list 
    4444 
    45 class OWAxis(QGraphicsItemGroup): 
     45class OWAxis(QGraphicsItem): 
    4646    def __init__(self, id, title = '', title_above = False, title_location = AxisMiddle, line = None, arrows = AxisEnd, parent=None, scene=None): 
    47         QGraphicsItemGroup.__init__(self, parent, scene) 
     47        QGraphicsItem.__init__(self, parent, scene) 
     48        self.setFlag(QGraphicsItem.ItemHasNoContents) 
     49        self.setZValue(AxisZValue) 
    4850        self.id = id 
    4951        self.title = title 
     
    6567        path = QPainterPath() 
    6668        path.setFillRule(Qt.WindingFill) 
    67         path.lineTo(-20, 10) 
    68         path.lineTo(-10, 0) 
    69         path.lineTo(-20, -10) 
    70         path.lineTo(0, 0) 
     69        path.moveTo(0, 5) 
     70        path.lineTo(0, -5) 
     71        path.lineTo(10, 0) 
     72        path.closeSubpath() 
    7173        self.arrow_path = path 
    7274        self.label_items = [] 
     
    276278        min, max, step = self.scale 
    277279        magnitude = log10(abs(max-min)) 
     280         
     281    def paint(self, painter, option, widget): 
     282        pass 
     283     
     284    def boundingRect(self): 
     285        return QRectF() 
  • orange/OrangeWidgets/plot/owconstants.py

    r8374 r8431  
    1717YAxes = [yLeft, yRight] 
    1818CartesianAxes = XAxes + YAxes 
     19 
     20AxisZValue = -2 
     21PlotZValue = 0 
     22HighlightZValue = 5 
  • orange/OrangeWidgets/plot/owplot.py

    r8430 r8431  
    102102         
    103103        self.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing) 
    104      #   self.graph_item.setPen(QPen(Qt.NoPen)) 
     104        self.graph_item.setPen(QPen(Qt.NoPen)) 
    105105         
    106106        self._legend = OWLegend(self.scene()) 
     
    196196        return self.graph_area 
    197197         
    198     def map_to_graph(self, point, axes = None): 
    199         (x, y) = point 
    200         ret = QPointF(x, y) * self.map_transform 
    201         return (ret.x(), ret.y()) 
    202          
    203     def map_from_graph(self, point, axes = None): 
     198    def map_to_graph(self, point, axes = None, zoom = False): 
     199        if type(point) == tuple: 
     200            (x, y) = point 
     201            point = QPointF(x, y) 
     202        if axes: 
     203            x_id, y_id = axes 
     204            point = point * self.transform_for_axes(x_id, y_id) 
     205        else: 
     206            point = point * self.map_transform 
     207        if zoom: 
     208            point = point * self.zoom_transform 
     209        return (point.x(), point.y()) 
     210         
     211    def map_from_graph(self, point, axes = None, zoom = False): 
    204212        if type(point) == tuple: 
    205213            (x, y) = point 
    206214            point = QPointF(x,y) 
    207         t, ok = self.map_transform.inverted() 
     215        if zoom: 
     216            t, ok = self.zoom_transform.inverted() 
     217            point = point * t 
     218        if axes: 
     219            x_id, y_id = axes 
     220            t, ok = self.transform_for_axes(x_id, y_id).inverted() 
     221        else: 
     222            t, ok = self.map_transform.inverted() 
    208223        ret = point * t 
    209224        return (ret.x(), ret.y()) 
     
    324339        if hasattr(curve, 'tooltip'): 
    325340            curve.setToolTip(curve.tooltip) 
     341        curve.setAutoUpdate(True) 
     342        curve.updateProperties() 
    326343        return curve 
    327344         
     
    331348                 x_axis_key = xBottom, y_axis_key = yLeft): 
    332349        c = OWCurve(xData, yData, parent=self.graph_item) 
     350        c.setAutoUpdate(False) 
    333351        c.setAxes(x_axis_key, y_axis_key) 
     352        c.set_zoom_factor(self._zoom_factor) 
    334353        c.setToolTip(name) 
    335354        c.name = name 
    336         c.setAutoUpdate(False) 
    337355        c.setStyle(style) 
    338356         
     
    365383        pass 
    366384         
    367     def add_axis(self, axis_id, title = '', title_above = False, title_location = AxisMiddle, line = None, arrows = NoPosition, zoomable = False): 
     385    def add_axis(self, axis_id, title = '', title_above = False, title_location = AxisMiddle, line = None, arrows = AxisEnd, zoomable = False): 
    368386        qDebug('Adding axis with id ' + str(axis_id) + ' and title ' + title) 
    369387        a = OWAxis(axis_id, title, title_above, title_location, line, arrows, scene=self.scene()) 
     
    621639                self._current_ps_item.setPen(QPen(Qt.black)) 
    622640        else: 
    623             t, ok = (self.transform_for_axes(xBottom, yLeft) * self.zoom_transform).inverted() 
    624             if ok: 
    625                 p = t.map(point) 
    626                 text, x, y = self.tips.maybeTip(p.x(), p.y()) 
    627                 if type(text) == int:  
    628                     text = self.buildTooltip(text) 
    629                 if text and x is not None and y is not None: 
    630                     tp = self.mapFromScene(QPointF(x,y) * self.map_transform) 
    631                     self.showTip(tp.x(), tp.y(), text) 
    632             
     641            x, y = self.map_from_graph(point) 
     642            text, x, y = self.tips.maybeTip(x, y) 
     643            if type(text) == int:  
     644                text = self.buildTooltip(text) 
     645            if text and x is not None and y is not None: 
     646                tp = self.mapFromScene(QPointF(x,y) * self.map_transform * self.zoom_transform) 
     647                self.showTip(tp.x(), tp.y(), text) 
     648         
    633649    def mouseReleaseEvent(self, event): 
     650        self._pressed_mouse_button = Qt.NoButton 
     651 
    634652        if self.mouseReleaseEventHandler and self.mouseReleaseEventHandler(event): 
    635653            event.accept() 
     
    638656            event.accept() 
    639657            return 
    640         self._pressed_mouse_button = Qt.NoButton 
    641658         
    642659        if self.isLegendEvent(event, QGraphicsView.mouseReleaseEvent): 
Note: See TracChangeset for help on using the changeset viewer.