Changeset 9030:bdb65c3ce301 in orange


Ignore:
Timestamp:
09/27/11 13:06:06 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
826292aeb015fab0aacc9239e44e60a23f687ce9
Message:
 
Location:
source/orangeqt
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • source/orangeqt/networkcurve.cpp

    r8879 r9030  
    3535 
    3636#define PI 3.14159265 
     37 
     38 
     39ModelItem::ModelItem(int index, int symbol, QColor color, int size, QGraphicsItem* parent): NodeItem(index, symbol, color, size, parent) 
     40{ 
     41 
     42} 
     43 
     44void ModelItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) 
     45{ 
     46    NetworkCurve *curve = (NetworkCurve*)parentItem(); 
     47    bool on_marked_only = curve->labels_on_marked_only(); 
     48 
     49    if (image != NULL) 
     50    { 
     51        const int ps = size() + 4; 
     52        double style = 1; 
     53        int _size = size() + 5; 
     54 
     55        painter->setPen(QPen(QBrush(color()), 1, Qt::SolidLine, Qt::RoundCap)); 
     56 
     57        QRadialGradient gradient(QPointF(0, 0), _size); 
     58        gradient.setColorAt(0, color()); 
     59        gradient.setColorAt(1, QColor(255, 255, 255, 0)); 
     60 
     61        if (is_selected()) 
     62        { 
     63            QColor brushColor(Qt::yellow); 
     64            brushColor.setAlpha(150); 
     65            gradient = QRadialGradient(QPointF(0, 0), _size); 
     66            gradient.setColorAt(0, brushColor); 
     67            gradient.setColorAt(1, QColor(255, 255, 255, 0)); 
     68        } 
     69        else if (is_marked()) 
     70        { 
     71            QColor brushColor(Qt::cyan); 
     72            brushColor.setAlpha(80); 
     73            gradient = QRadialGradient(QPointF(0, 0), _size); 
     74            gradient.setColorAt(0, brushColor); 
     75            gradient.setColorAt(1, QColor(255, 255, 255, 0)); 
     76        } 
     77 
     78        painter->setBrush(QBrush(gradient)); 
     79        painter->drawRoundedRect(-_size/2, -_size/2, _size, _size, style, style, Qt::RelativeSize); 
     80 
     81        _size = image->size().width(); 
     82        painter->drawPixmap(QPointF(-_size/2, -_size/2), *image); 
     83 
     84        if (!on_marked_only || is_marked() || is_selected()) 
     85        { 
     86            QFontMetrics metrics = option->fontMetrics; 
     87            int th = metrics.height(); 
     88            int tw = metrics.width(label()); 
     89            QRect r(-tw/2, 0, tw, th); 
     90            //painter->fillRect(r, QBrush(Qt::white)); 
     91            painter->drawText(r, Qt::AlignHCenter, label()); 
     92        } 
     93    } 
     94    else 
     95    { 
     96        const QString l = label(); 
     97        if (on_marked_only && !(is_marked() || is_selected())) 
     98        { 
     99            set_label(QString()); 
     100        } 
     101 
     102        Point::paint(painter, option, widget); 
     103 
     104        set_label(l); 
     105    } 
     106} 
    37107 
    38108NodeItem::NodeItem(int index, int symbol, QColor color, int size, QGraphicsItem* parent): Point(symbol, color, size, parent) 
     
    47117    setAcceptHoverEvents(true); 
    48118    set_transparent(false); 
     119    image = NULL; 
    49120} 
    50121 
     
    64135    } 
    65136 
    66     Point::paint(painter, option, widget); 
     137    if (image != NULL) 
     138    { 
     139        const int ps = size() + 4; 
     140        painter->drawPixmap(QPointF(-0.5*ps, -0.5*ps), *image); 
     141        if (!label().isEmpty()) 
     142        { 
     143            QFontMetrics metrics = option->fontMetrics; 
     144            int th = metrics.height(); 
     145            int tw = metrics.width(label()); 
     146            QRect r(-tw/2, 0, tw, th); 
     147            //painter->fillRect(r, QBrush(Qt::white)); 
     148            painter->drawText(r, Qt::AlignHCenter, label()); 
     149        } 
     150    } 
     151    else 
     152    { 
     153        Point::paint(painter, option, widget); 
     154    } 
     155 
    67156    set_label(l); 
     157} 
     158 
     159void NodeItem::set_image(QPixmap* im) 
     160{ 
     161    image = im; 
    68162} 
    69163 
  • source/orangeqt/networkcurve.h

    r8879 r9030  
    9090    void set_coordinates(double x, double y); 
    9191 
     92 
    9293    void set_x(double x); 
    9394    double x() const; 
     
    9697    double y() const; 
    9798     
     99    void set_image(QPixmap* im); 
     100 
    98101    virtual void set_graph_transform(const QTransform& transform); 
    99102    virtual QTransform graph_transform() const; 
     
    122125    double m_size_value; 
    123126 
     127protected: 
     128    QPixmap *image; 
     129 
    124130private: 
    125131    double m_x; 
     
    131137    QList<EdgeItem*> m_connected_edges; 
    132138    QTransform m_graph_transform; 
     139}; 
     140 
     141class ModelItem : public NodeItem 
     142{ 
     143public: 
     144    ModelItem(int index, int symbol, QColor color, int size, QGraphicsItem* parent = 0); 
     145 
     146    virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); 
    133147}; 
    134148 
  • source/orangeqt/networkcurve.sip

    r8846 r9030  
    3232    void add_connected_edge(EdgeItem* edge); 
    3333    void remove_connected_edge(EdgeItem* edge); 
     34     
     35    void set_image(QPixmap* im); 
     36}; 
     37 
     38class ModelItem : NodeItem 
     39{ 
     40public: 
     41    ModelItem(int index, int symbol, QColor color, int size, QGraphicsItem* parent /TransferThis/ = 0); 
     42    virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); 
    3443}; 
    3544 
Note: See TracChangeset for help on using the changeset viewer.