Flu_Spinner.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: Flu_Spinner.h,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 18:22:19  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.1
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*
  10.  * These files were imported into NCBI's CVS directly from FLU version 2.9.1.
  11.  * Modifications to the source are listed below.
  12.  *
  13.  * ==========================================================================
  14.  * $Log: Flu_Spinner.h,v $
  15.  * Revision 1000.0  2004/04/12 18:22:19  gouriano
  16.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.1
  17.  *
  18.  * Revision 1.1  2004/03/11 13:51:55  dicuccio
  19.  * Imported FLU version 2.9.1.  Altered export specifiers to match NCBI layout.
  20.  * Altered include paths to match NCBI toolkit layout.
  21.  *
  22.  * ==========================================================================
  23.  */
  24. // $Id: Flu_Spinner.h,v 1000.0 2004/04/12 18:22:19 gouriano Exp $
  25. /***************************************************************
  26.  *                FLU - FLTK Utility Widgets 
  27.  *  Copyright (C) 2002 Ohio Supercomputer Center, Ohio State University
  28.  *
  29.  * This file and its content is protected by a software license.
  30.  * You should have received a copy of this license with this file.
  31.  * If not, please contact the Ohio Supercomputer Center immediately:
  32.  * Attn: Jason Bryan Re: FLU 1224 Kinnear Rd, Columbus, Ohio 43212
  33.  * 
  34.  ***************************************************************/
  35. #ifndef _FLU_SPINNER_H
  36. #define _FLU_SPINNER_H
  37. #include <FL/Fl_Valuator.H>
  38. #include <FL/Fl_Input.H>
  39. #include <FL/Fl_Group.H>
  40. #include <gui/widgets/FLU/Flu_Enumerations.h>
  41. //! This class provides a simple spinner widget similar to Fl_Counter, except the manipulator buttons are vertical and you can click, click and hold, or click and drag to change the value
  42. class NCBI_GUIWIDGETS_FLU_EXPORT Flu_Spinner : public Fl_Valuator
  43. {
  44. public:
  45.   //! Normal FLTK widget constructor
  46.   Flu_Spinner( int x, int y, int w, int h, const char *l = 0 );
  47.   //! Default destructor
  48.   ~Flu_Spinner();
  49.   //! Get whether the spinner automatically changes when you hold the button down
  50.   inline bool enable_repeating() const
  51.     { return _doRepeat; }
  52.   //! Set whether the spinner automatically changes when you hold the button down
  53.   inline void enable_repeating( bool b )
  54.     { _doRepeat = b; }
  55.   //! Set the auto repeating parameters
  56.   /*! param initialDelay is how long to wait before repeating starts. Default is 0.5 seconds
  57.     param initialTime is how long to wait between value changes. Default is 0.1 seconds (i.e. 10x per second)
  58.     param rapidDelay is how long to wait before repeating more quickly. Default is 2 seconds
  59.     param rapidTime is how long to wait between rapid value changes. Default is 0.02 seconds (i.e. 50x per second)
  60.   */
  61.   inline void repeat( float initialDelay, float initialTime, float rapidDelay, float rapidTime )
  62.     { _initialDelay = initialDelay; _repeatTime[0] = initialTime; _rapidDelay = rapidDelay;_repeatTime[1] = rapidTime; }
  63.   //! Get when the input calls the callback
  64.   inline int input_when() const
  65.     { return _input.when(); }
  66.   //! Set when the input calls the callback
  67.   /*! Default is FL_WHEN_ENTER_KEY_ALWAYS */
  68.   inline void input_when( int w )
  69.     { _input.when(w); }
  70.   //! Override of Fl_Widget::handle()
  71.   int handle( int );
  72.   //! Override of Fl_Widget::resize()
  73.   void resize( int X, int Y, int W, int H );
  74.   //! Override of Fl_Valuator::precision()
  75.   inline void precision( int p )
  76.     { Fl_Valuator::precision(p); value_damage(); }
  77.   //! Override of Fl_Valuator::value_damage()
  78.   void value_damage();
  79.   //! Override of Fl_Valuator::hide()
  80.   inline void hide()
  81.     { Fl_Valuator::hide(); _input.hide(); }
  82.   //! Override of Fl_Valuator::show()
  83.   inline void show()
  84.     { Fl_Valuator::show(); _input.show(); }
  85.   //! Get the font for the widget value
  86.   inline Fl_Font valuefont() const { return (Fl_Font)_input.textfont(); }
  87.   //! Set the font for the widget value
  88.   inline void valuefont( uchar s ) { _input.textfont(s); }
  89.   //! Get the size of the font for the widget value
  90.   inline uchar valuesize() const { return _input.textsize(); }
  91.   //! Set the size of the font for the widget value
  92.   inline void valuesize( uchar s ) { _input.textsize(s); }
  93.   //! Get the background color of the widget value
  94.   inline Fl_Color valuecolor() const { return (Fl_Color)_input.color(); }
  95.   //! Set the background color for the widget value
  96.   inline void valuecolor( unsigned s ) { _input.color(s); }
  97.   //! Get the color of the font for the widget value
  98.   inline Fl_Color valuefontcolor() const { return (Fl_Color)_input.textcolor(); }
  99.   //! Set the color of the font for the widget value
  100.   inline void valuefontcolor( unsigned s ) { _input.textcolor(s); }
  101. protected:
  102.   Fl_Input _input;
  103.   uchar _valbox[2];
  104.   bool _up, _pushed;
  105.   float _totalTime;
  106.   double _lastValue;
  107.   int _lastY;
  108.   float _initialDelay, _repeatTime[2], _rapidDelay;
  109.   bool _doRepeat;
  110.   static void input_cb( Fl_Widget*, void* v );
  111.   static void repeat_callback(void *);
  112.   void increment_cb();
  113. protected:
  114.   void draw();
  115. };
  116. #endif