qwt_legend_item.h 2.94 KB
Newer Older
pixhawk's avatar
pixhawk committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

// vim: expandtab

#ifndef QWT_LEGEND_ITEM_H
#define QWT_LEGEND_ITEM_H

#include "qwt_global.h"
#include "qwt_legend.h"
#include "qwt_text.h"
#include "qwt_text_label.h"

class QPainter;
class QPen;
class QwtSymbol;

/*!
  \brief A legend label

  QwtLegendItem represents a curve on a legend.
  It displays an curve identifier with an explaining text.
  The identifier might be a combination of curve symbol and line.
30
  In readonly mode it behaves like a label, otherwise like
pixhawk's avatar
pixhawk committed
31
32
33
34
35
36
37
38
  an unstylish push button.

  \sa QwtLegend, QwtPlotCurve
*/
class QWT_EXPORT QwtLegendItem: public QwtTextLabel
{
    Q_OBJECT
public:
39

pixhawk's avatar
pixhawk committed
40
41
42
43
44
45
46
    /*!
       \brief Identifier mode

       Default is ShowLine | ShowText
       \sa QwtLegendItem::identifierMode, QwtLegendItem::setIdentifierMode
     */

47
    enum IdentifierMode {
pixhawk's avatar
pixhawk committed
48
49
50
51
52
53
54
55
        NoIdentifier = 0,
        ShowLine = 1,
        ShowSymbol = 2,
        ShowText = 4
    };

    explicit QwtLegendItem(QWidget *parent = 0);
    explicit QwtLegendItem(const QwtSymbol &, const QPen &,
56
                           const QwtText &, QWidget *parent = 0);
pixhawk's avatar
pixhawk committed
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
    virtual ~QwtLegendItem();

    virtual void setText(const QwtText &);

    void setItemMode(QwtLegend::LegendItemMode);
    QwtLegend::LegendItemMode itemMode() const;

    void setIdentifierMode(int);
    int identifierMode() const;

    void setIdentfierWidth(int width);
    int identifierWidth() const;

    void setSpacing(int spacing);
    int spacing() const;

    void setSymbol(const QwtSymbol &);
    const QwtSymbol& symbol() const;

    void setCurvePen(const QPen &);
    const QPen& curvePen() const;

    virtual void drawIdentifier(QPainter *, const QRect &) const;
80
    virtual void drawItem(QPainter *p, const QRect &) const;
pixhawk's avatar
pixhawk committed
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

    virtual QSize sizeHint() const;

    bool isChecked() const;

public slots:
    void setChecked(bool on);

signals:
    //! Signal, when the legend item has been clicked
    void clicked();

    //! Signal, when the legend item has been pressed
    void pressed();

    //! Signal, when the legend item has been relased
    void released();

    //! Signal, when the legend item has been toggled
    void checked(bool);

protected:
    void setDown(bool);
    bool isDown() const;

    virtual void paintEvent(QPaintEvent *);
    virtual void mousePressEvent(QMouseEvent *);
    virtual void mouseReleaseEvent(QMouseEvent *);
    virtual void keyPressEvent(QKeyEvent *);
    virtual void keyReleaseEvent(QKeyEvent *);

    virtual void drawText(QPainter *, const QRect &);

private:
    void init(const QwtText &);

    class PrivateData;
    PrivateData *d_data;
};

#endif // QWT_LEGEND_ITEM_H