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