qwt_legend.h 3.09 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* -*- 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_H
#define QWT_LEGEND_H

#include <qframe.h>
#include "qwt_global.h"
#if QT_VERSION < 0x040000
#include <qvaluelist.h>
#else
#include <qlist.h>
#endif

class QScrollBar;
class QwtLegendItemManager;

/*!
  \brief The legend widget

  The QwtLegend widget is a tabular arrangement of legend items. Legend
  items might be any type of widget, but in general they will be
  a QwtLegendItem.

  \sa QwtLegendItem, QwtLegendItemManager QwtPlot
*/

class QWT_EXPORT QwtLegend : public QFrame
{
    Q_OBJECT

public:
    /*!
      \brief Display policy

       - NoIdentifier\n
         The client code is responsible how to display of each legend item.
         The Qwt library will not interfere.

       - FixedIdentifier\n
         All legend items are displayed with the QwtLegendItem::IdentifierMode
         to be passed in 'mode'.

       - AutoIdentifier\n
         Each legend item is displayed with a mode that is a bitwise or of
         - QwtLegendItem::ShowLine (if its curve is drawn with a line) and
         - QwtLegendItem::ShowSymbol (if its curve is drawn with symbols) and
         - QwtLegendItem::ShowText (if the has a title).

       Default is AutoIdentifier.
       \sa setDisplayPolicy(), displayPolicy(), QwtLegendItem::IdentifierMode
     */

62
    enum LegendDisplayPolicy {
pixhawk's avatar
pixhawk committed
63
64
65
66
67
68
        NoIdentifier = 0,
        FixedIdentifier = 1,
        AutoIdentifier = 2
    };

    //!  Interaction mode for the legend items
69
    enum LegendItemMode {
pixhawk's avatar
pixhawk committed
70
71
72
73
74
75
76
        ReadOnlyItem,
        ClickableItem,
        CheckableItem
    };

    explicit QwtLegend(QWidget *parent = NULL);
    virtual ~QwtLegend();
77

pixhawk's avatar
pixhawk committed
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
    void setDisplayPolicy(LegendDisplayPolicy policy, int mode);
    LegendDisplayPolicy displayPolicy() const;

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

    int identifierMode() const;

    QWidget *contentsWidget();
    const QWidget *contentsWidget() const;

    void insert(const QwtLegendItemManager *, QWidget *);
    void remove(const QwtLegendItemManager *);

    QWidget *find(const QwtLegendItemManager *) const;
    QwtLegendItemManager *find(const QWidget *) const;

#if QT_VERSION < 0x040000
    virtual QValueList<QWidget *> legendItems() const;
#else
    virtual QList<QWidget *> legendItems() const;
#endif

    void clear();
102

pixhawk's avatar
pixhawk committed
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    bool isEmpty() const;
    uint itemCount() const;

    virtual bool eventFilter(QObject *, QEvent *);

    virtual QSize sizeHint() const;
    virtual int heightForWidth(int w) const;

    QScrollBar *horizontalScrollBar() const;
    QScrollBar *verticalScrollBar() const;

protected:
    virtual void resizeEvent(QResizeEvent *);
    virtual void layoutContents();

private:
    class PrivateData;
    PrivateData *d_data;
};

#endif // QWT_LEGEND_H