Code Search for Developers
 
 
  

qwt_abstract_slider.h from marsyas at Krugle


Show qwt_abstract_slider.h syntax highlighted

/* -*- 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
 *****************************************************************************/

#ifndef QWT_ABSTRACT_SLIDER_H
#define QWT_ABSTRACT_SLIDER_H

#include <qwidget.h>
#include "qwt_global.h"
#include "qwt_double_range.h"

/*!
  \brief An abstract base class for slider widgets

  QwtAbstractSlider is a base class for
  slider widgets. It handles mouse events
  and updates the slider's value accordingly. Derived classes
  only have to implement the getValue() and 
  getScrollMode() members, and should react to a
  valueChange(), which normally requires repainting. 
*/

class QWT_EXPORT QwtAbstractSlider : public QWidget, public QwtDoubleRange
{
    Q_OBJECT 
    Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
    Q_PROPERTY( bool valid READ isValid WRITE setValid )
    Q_PROPERTY( double mass READ mass WRITE setMass )
#ifndef Q_MOC_RUN // Qt3 moc
#define QWT_PROPERTY Q_PROPERTY
    Q_PROPERTY( Orientation orientation 
        READ orientation WRITE setOrientation )
#else // Qt4 moc
// MOC_SKIP_BEGIN
    Q_PROPERTY( Qt::Orientation orientation 
        READ orientation WRITE setOrientation )
// MOC_SKIP_END
#endif

public:
    /*! 
      Scroll mode
      \sa getScrollMode()
     */
    enum ScrollMode 
    { 
        ScrNone, 
        ScrMouse, 
        ScrTimer, 
        ScrDirect, 
        ScrPage 
    };
    
    explicit QwtAbstractSlider(Qt::Orientation, QWidget *parent = NULL);
    virtual ~QwtAbstractSlider();

    void setUpdateTime(int t);
    void stopMoving();
    void setTracking(bool enable);
    
    virtual void setMass(double val);
    virtual double mass() const;

#if QT_VERSION >= 0x040000
    virtual void setOrientation(Qt::Orientation o);
    Qt::Orientation orientation() const;
#else
    virtual void setOrientation(Orientation o);
    Orientation orientation() const;
#endif

    bool isReadOnly() const;

    /* 
        Wrappers for QwtDblRange::isValid/QwtDblRange::setValid made
        to be available as Q_PROPERTY in the designer.
    */

    /*! 
      \sa QwtDblRange::isValid
    */
    bool isValid() const { return QwtDoubleRange::isValid(); }

    /*! 
      \sa QwtDblRange::isValid
    */
    void setValid(bool valid) { QwtDoubleRange::setValid(valid); }

public slots:
    virtual void setValue(double val);
    virtual void fitValue(double val);
    virtual void incValue(int steps);

    virtual void setReadOnly(bool); 

signals:

    /*!
      \brief Notify a change of value.

      In the default setting 
      (tracking enabled), this signal will be emitted every 
      time the value changes ( see setTracking() ). 
      \param value new value
    */
    void valueChanged(double value);

    /*!
      This signal is emitted when the user presses the 
      movable part of the slider (start ScrMouse Mode).
    */
    void sliderPressed();

    /*!
      This signal is emitted when the user releases the 
      movable part of the slider.
    */

    void sliderReleased();
    /*!
      This signal is emitted when the user moves the
      slider with the mouse.
      \param value new value
    */
    void sliderMoved(double value);
    
protected:
    virtual void setPosition(const QPoint &);
    virtual void valueChange();

    virtual void timerEvent(QTimerEvent *e);
    virtual void mousePressEvent(QMouseEvent *e);
    virtual void mouseReleaseEvent(QMouseEvent *e);
    virtual void mouseMoveEvent(QMouseEvent *e);
    virtual void keyPressEvent(QKeyEvent *e);
    virtual void wheelEvent(QWheelEvent *e);

  /*!
    \brief Determine the value corresponding to a specified poind

    This is an abstract virtual function which is called when
    the user presses or releases a mouse button or moves the
    mouse. It has to be implemented by the derived class.
    \param p point 
  */
    virtual double getValue(const QPoint & p) = 0;
  /*!
    \brief Determine what to do when the user presses a mouse button.

    This function is abstract and has to be implemented by derived classes.
    It is called on a mousePress event. The derived class can determine
    what should happen next in dependence of the position where the mouse
    was pressed by returning scrolling mode and direction. QwtAbstractSlider
    knows the following modes:<dl>
    <dt>QwtAbstractSlider::ScrNone
    <dd>Scrolling switched off. Don't change the value.
    <dt>QwtAbstractSlider::ScrMouse
    <dd>Change the value while the user keeps the
        button pressed and moves the mouse.
    <dt>QwtAbstractSlider::ScrTimer
    <dd>Automatic scrolling. Increment the value
        in the specified direction as long as
    the user keeps the button pressed.
    <dt>QwtAbstractSlider::ScrPage
    <dd>Automatic scrolling. Same as ScrTimer, but
        increment by page size.</dl>

    \param p point where the mouse was pressed
    \retval scrollMode The scrolling mode
    \retval direction  direction: 1, 0, or -1.
  */
    virtual void getScrollMode( const QPoint &p,
                  int &scrollMode, int &direction) = 0;

    void setMouseOffset(double);
    double mouseOffset() const;

    int scrollMode() const;

private:
    void buttonReleased();

    class PrivateData;
    PrivateData *d_data;
};

#endif




See more files for this project here

marsyas

Marsyas (Music Analysis, Retrieval and Synthesis for Audio Signals) is a framework for developing systems for audio processing. It provides an general architecture for connecting audio, soundfiles, signal processing blocks and machine learning.

Project homepage: http://sourceforge.net/projects/marsyas
Programming language(s): C++
License: other

  qwt.h
  qwt_abstract_scale.cpp
  qwt_abstract_scale.h
  qwt_abstract_scale_draw.cpp
  qwt_abstract_scale_draw.h
  qwt_abstract_slider.cpp
  qwt_abstract_slider.h
  qwt_analog_clock.cpp
  qwt_analog_clock.h
  qwt_array.h
  qwt_arrow_button.cpp
  qwt_arrow_button.h
  qwt_color_map.cpp
  qwt_color_map.h
  qwt_compass.cpp
  qwt_compass.h
  qwt_compass_rose.cpp
  qwt_compass_rose.h
  qwt_counter.cpp
  qwt_counter.h
  qwt_curve_fitter.cpp
  qwt_curve_fitter.h
  qwt_data.cpp
  qwt_data.h
  qwt_dial.cpp
  qwt_dial.h
  qwt_dial_needle.cpp
  qwt_dial_needle.h
  qwt_double_interval.cpp
  qwt_double_interval.h
  qwt_double_range.cpp
  qwt_double_range.h
  qwt_double_rect.cpp
  qwt_double_rect.h
  qwt_dyngrid_layout.cpp
  qwt_dyngrid_layout.h
  qwt_event_pattern.cpp
  qwt_event_pattern.h
  qwt_global.h
  qwt_interval_data.cpp
  qwt_interval_data.h
  qwt_knob.cpp
  qwt_knob.h
  qwt_layout_metrics.cpp
  qwt_layout_metrics.h
  qwt_legend.cpp
  qwt_legend.h
  qwt_legend_item.cpp
  qwt_legend_item.h
  qwt_math.cpp
  qwt_math.h
  qwt_paint_buffer.cpp
  qwt_paint_buffer.h
  qwt_painter.cpp
  qwt_painter.h
  qwt_panner.cpp
  qwt_panner.h
  qwt_picker.cpp
  qwt_picker.h
  qwt_picker_machine.cpp
  qwt_picker_machine.h
  qwt_plot.cpp
  qwt_plot.h
  qwt_plot_axis.cpp
  qwt_plot_canvas.cpp
  qwt_plot_canvas.h
  qwt_plot_curve.cpp
  qwt_plot_curve.h
  qwt_plot_dict.cpp
  qwt_plot_dict.h
  qwt_plot_grid.cpp
  qwt_plot_grid.h
  qwt_plot_item.cpp
  qwt_plot_item.h
  qwt_plot_layout.cpp
  qwt_plot_layout.h
  qwt_plot_magnifier.cpp
  qwt_plot_magnifier.h
  qwt_plot_marker.cpp
  qwt_plot_marker.h
  qwt_plot_panner.cpp
  qwt_plot_panner.h
  qwt_plot_picker.cpp
  qwt_plot_picker.h
  qwt_plot_print.cpp
  qwt_plot_printfilter.cpp
  qwt_plot_printfilter.h
  qwt_plot_rasteritem.cpp
  qwt_plot_rasteritem.h
  qwt_plot_spectrogram.cpp
  qwt_plot_spectrogram.h
  qwt_plot_svgitem.cpp
  qwt_plot_svgitem.h
  qwt_plot_xml.cpp
  qwt_plot_zoomer.cpp
  qwt_plot_zoomer.h
  qwt_polygon.h
  qwt_raster_data.cpp
  qwt_raster_data.h
  qwt_rect.cpp