Changeset 8381:7d7756e21e48 in orange


Ignore:
Timestamp:
07/07/11 09:01:15 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
0734fce747573f978c6a42762e8a708396f3f30a
Message:

Add structs to bring NetworkCurve closer to the python implementation.

Location:
source/orangeplot
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • source/orangeplot/networkcurve.cpp

    r8373 r8381  
    66NetworkCurve::NetworkCurve(const Coordinates& coordinates, const Edges& edges, QGraphicsItem* parent, QGraphicsScene* scene):  
    77Curve(parent, scene), 
    8 coordinates(coordinates), 
     8    coors(coordinates), 
    99edges(edges) 
     10{ 
     11 
     12} 
     13 
     14NetworkCurve::NetworkCurve(QGraphicsItem* parent, QGraphicsScene* scene): Curve(parent, scene) 
    1015{ 
    1116 
     
    2328    int m, n; 
    2429     
    25     qDeleteAll(m_vertex_items); 
    26     m_vertex_items.clear(); 
     30    if (m_vertex_items.keys() != coors.keys()) 
     31    { 
     32        qDeleteAll(m_vertex_items); 
     33        m_vertex_items.clear(); 
     34        Coordinates::ConstIterator cit = coors.constBegin(); 
     35        Coordinates::ConstIterator cend = coors.constEnd(); 
     36        for (; cit != cend; ++cit) 
     37        { 
     38            m_vertex_items.insert(cit.key(), new QGraphicsPathItem(this)); 
     39        } 
     40    } 
    2741     
    2842    QPair<double, double> p; 
    2943    QGraphicsPathItem* item; 
    30     Coordinates::ConstIterator cit = coordinates.constBegin(); 
    31     Coordinates::ConstIterator cend = coordinates.constEnd(); 
    32     QPainterPath path = pathForSymbol(symbol(), pointSize()); 
     44    Coordinates::ConstIterator cit = coors.constBegin(); 
     45    Coordinates::ConstIterator cend = coors.constEnd(); 
    3346    for (; cit != cend; ++cit) 
    3447    { 
    3548        p = cit.value(); 
    36         item = new QGraphicsPathItem(path, this); 
     49        item = m_vertex_items[cit.key()]; 
    3750        item->setPos( t.map(QPointF(p.first, p.second)) ); 
    3851        item->setBrush(brush()); 
    39         m_vertex_items.insert(cit.key(), item); 
     52        NodeItem v = vertices[cit.key()]; 
     53        item->setPen(v.pen); 
     54        item->setToolTip(v.tooltip); 
     55        item->setPath(pathForSymbol(symbol(), v.size)); 
    4056    } 
    4157     
    42     Q_ASSERT(m_vertex_items.size() == coordinates.size()); 
     58    Q_ASSERT(m_vertex_items.size() == coors.size()); 
    4359     
    4460    n = edges.size(); 
     
    5874     
    5975    QPair<int, int> points; 
     76    EdgeItem edge; 
    6077    QLineF line; 
    6178    QGraphicsLineItem* line_item; 
     
    6380    for (int i = 0; i < n; ++i) 
    6481    { 
    65         points = edges[i]; 
    66         p = coordinates[points.first]; 
     82        edge = edges[i]; 
     83        p = coors[edge.u->index]; 
    6784        line.setP1(QPointF( p.first, p.second )); 
    68         p = coordinates[points.second]; 
     85        p = coors[edge.v->index]; 
    6986        line.setP2(QPointF( p.first, p.second )); 
    7087        line_item = m_edge_items[i]; 
    7188        line_item->setLine( t.map(line) ); 
    72         line_item->setPen(pen()); 
     89        line_item->setPen(edges[i].pen); 
    7390    } 
    7491} 
    75  
  • source/orangeplot/networkcurve.h

    r8371 r8381  
    33 
    44#include "curve.h" 
     5 
     6struct NodeItem 
     7{ 
     8    int index; 
     9    bool marked; 
     10    bool show; 
     11    bool highlight; 
     12    QString label; 
     13    QString tooltip; 
     14    int uuid; 
     15     
     16    QPixmap* image; 
     17    QPen pen; 
     18    QColor nocolor; 
     19    QColor color; 
     20    int size; 
     21    int style; 
     22}; 
     23 
     24struct EdgeItem 
     25{ 
     26    NodeItem* u; 
     27    NodeItem* v; 
     28    int links_index; 
     29    bool arrowu; 
     30    bool arrowv; 
     31    double weight; 
     32    QString label; 
     33    QPen pen; 
     34}; 
    535 
    636typedef QPair<double, double> Coord; 
     
    1040public: 
    1141    typedef QMap<int, Coord> Coordinates; 
    12     typedef QList<QPair<int, int> > Edges;     
     42    typedef QList<EdgeItem> Edges; 
     43    typedef QMap<int, NodeItem> Vertices; 
    1344 
    1445    NetworkCurve(const Coordinates& coordinates, const Edges& edges, QGraphicsItem* parent = 0, QGraphicsScene* scene = 0); 
     46    NetworkCurve(QGraphicsItem* parent = 0, QGraphicsScene* scene = 0); 
    1547    virtual ~NetworkCurve(); 
    1648     
    1749    virtual void updateProperties(); 
    1850     
    19     Coordinates coordinates; 
     51    Coordinates coors; 
     52    Vertices vertices; 
    2053    Edges edges; 
    2154     
  • source/orangeplot/networkcurve.sip

    r8372 r8381  
    2828}; 
    2929 
     30 
     31struct NodeItem 
     32{ 
     33    int index; 
     34    bool marked; 
     35    bool show; 
     36    bool highlight; 
     37    QString label; 
     38    QString tooltip; 
     39    int uuid; 
     40     
     41    QPixmap* image; 
     42    QPen pen; 
     43    QColor nocolor; 
     44    QColor color; 
     45    int size; 
     46    int style; 
     47}; 
     48 
     49struct EdgeItem 
     50{ 
     51    NodeItem* u; 
     52    NodeItem* v; 
     53    int links_index; 
     54    bool arrowu; 
     55    bool arrowv; 
     56    double weight; 
     57    QString label; 
     58    QPen pen; 
     59}; 
     60 
    3061class NetworkCurve : Curve 
    3162{ 
     
    3768public: 
    3869    typedef QMap<int, Coord> Coordinates; 
    39     typedef QList<QPair<int, int> > Edges; 
     70    typedef QList<EdgeItem> Edges; 
    4071     
    4172    NetworkCurve(const NetworkCurve::Coordinates& coordinates, const NetworkCurve::Edges& edges, QGraphicsItem* parent /TransferThis/ = 0, QGraphicsScene* scene /TransferThis/ = 0); 
     73    NetworkCurve(QGraphicsItem* parent /TransferThis/ = 0, QGraphicsScene* scene /TransferThis/ = 0); 
    4274    virtual ~NetworkCurve(); 
    4375     
     
    4577     
    4678    NetworkCurve::Edges edges; 
    47     NetworkCurve::Coordinates coordinates; 
     79    NetworkCurve::Coordinates coors; 
    4880}; 
Note: See TracChangeset for help on using the changeset viewer.