Changeset 8307:1663b10c1840 in orange


Ignore:
Timestamp:
06/11/11 14:02:00 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
973e441465b341b5eefb45872f4c9681d8000441
Message:

Work on zoom and transformations

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWGraphQt.py

    r8306 r8307  
    126126         
    127127        self._zoom_factor = 1 
    128         self.zoom_point = None 
     128        self._zoom_point = None 
    129129        self.zoom_transform = QTransform() 
    130130        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 
     
    340340         
    341341    def update_zoom(self): 
    342         self.zoom_transform = self.transform_for_zoom(self._zoom_factor, self.zoom_point, self.graph_area) 
     342        self.zoom_transform = self.transform_for_zoom(self._zoom_factor, self._zoom_point, self.graph_area) 
    343343        self.zoom_rect = self.zoom_transform.mapRect(self.graph_area) 
    344344         
     
    415415    def mouseStaticClick(self, event): 
    416416        if self.state == ZOOMING: 
     417            t, ok = self.zoom_transform.inverted() 
     418            p = QPointF(event.pos()) * t 
    417419            if event.button() == Qt.LeftButton: 
    418420                end_zoom_factor = self._zoom_factor * 2 
     421                self._zoom_point = p 
    419422            elif event.button() == Qt.RightButton: 
    420423                end_zoom_factor = max(self._zoom_factor/2, 1) 
    421             t, ok = self.zoom_transform.inverted() 
    422424            if not ok: 
    423425                return False 
    424             self.zoom_point = t.map(QPointF(event.pos())) 
    425             self.zoom_animation = QPropertyAnimation(self, 'zoom_factor') 
    426             self.zoom_animation.setStartValue(float(self._zoom_factor)) 
    427             self.zoom_animation.setEndValue(float(end_zoom_factor)) 
    428             self.zoom_animation.start(QAbstractAnimation.DeleteWhenStopped) 
     426            self.zoom_factor_animation = QPropertyAnimation(self, 'zoom_factor') 
     427            self.zoom_factor_animation.setStartValue(float(self._zoom_factor)) 
     428            self.zoom_factor_animation.setEndValue(float(end_zoom_factor)) 
     429            self.zoom_factor_animation.start(QAbstractAnimation.DeleteWhenStopped) 
    429430            return True 
    430431        else: 
     
    446447        t.scale(factor, factor) 
    447448        t.translate(-point.x(), -point.y()) 
    448         qDebug(repr(point) + ' ===> ' + repr(t.map(point))) 
    449449        return t 
    450450 
     
    466466    @zoom_factor.setter 
    467467    def zoom_factor(self, value): 
    468         qDebug(str(value)) 
    469468        self._zoom_factor = value 
    470469        self.update_zoom() 
     470         
     471    @pyqtProperty(QPointF) 
     472    def zoom_point(self): 
     473        return self._zoom_point 
     474         
     475    @zoom_point.setter 
     476    def zoom_point(self, value): 
     477        self._zoom_point = value 
     478        self.update_zoom() 
  • source/orangegraph/curve.cpp

    r8302 r8307  
    2121Curve::Curve(const Data& data, QGraphicsItem* parent) : QGraphicsObject(parent), m_data(data) 
    2222{ 
    23   qDebug() << "Constructing Curve from C++"; 
     23   
    2424} 
    2525 
     
    7777  if (m_needsUpdate & UpdatePosition) 
    7878  { 
     79    QPointF p; 
     80    QRectF dataRect = m_graphTransform.inverted().mapRect(m_graphArea); 
    7981    for (int i = 0; i < n; ++i) 
    8082    { 
    81       QPointF p = m_graphTransform.map(QPointF(m_data[i].x, m_data[i].y)); 
    82       if (m_graphArea.contains(p)) 
     83      p = QPointF(m_data[i].x, m_data[i].y); 
     84      if (dataRect.contains(p)) 
    8385      { 
    8486    m_pointItems[i]->show(); 
    85     m_pointItems[i]->setPos(p); 
     87    m_pointItems[i]->setPos(m_graphTransform.map(p)); 
    8688      } 
    8789      else 
     
    107109  QBrush brush(m_color); 
    108110  m_path = pathForSymbol(m_symbol, m_pointSize); 
     111  QRectF dataRect = m_graphTransform.inverted().mapRect(m_graphArea); 
     112  QPointF p; 
    109113  for (int i = 0; i < n; ++i) 
    110114  { 
     
    112116    DataPoint& point = m_data[i]; 
    113117    item->setPath(m_path); 
    114     QPointF p = m_graphTransform.map(QPointF(point.x, point.y)); 
    115     item->setPos(p); 
     118    p = QPointF(point.x, point.x); 
     119    if (dataRect.contains(p)) 
     120    { 
     121      item->setPos(p * m_graphTransform); 
     122      item->show(); 
     123    } 
     124    else 
     125    { 
     126      item->hide(); 
     127    } 
    116128    item->setBrush(brush); 
    117     item->setVisible(m_graphArea.contains(p)); 
    118129  } 
    119130  m_needsUpdate = 0; 
     
    176187void Curve::setData(const QList< qreal > xData, const QList< qreal > yData) 
    177188{ 
    178   qDebug() << xData.size() << yData.size(); 
    179189  Q_ASSERT(xData.size() == yData.size()); 
    180190  int n = qMin(xData.size(), yData.size()); 
     
    234244void Curve::setColor(const QColor& color) 
    235245{ 
    236   qDebug() << "Setting color to" << color; 
    237246  if (color == m_color) 
    238247  { 
Note: See TracChangeset for help on using the changeset viewer.