Rapicorn - Experimental UI Toolkit - Source Code  13.07.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
adjustment.hh
Go to the documentation of this file.
00001  // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html
00002 #ifndef __RAPICORN_ADJUSTMENT_HH__
00003 #define __RAPICORN_ADJUSTMENT_HH__
00004 
00005 #include <ui/widget.hh>
00006 
00007 namespace Rapicorn {
00008 
00009 enum MoveType {
00010   MOVE_NONE,
00011   MOVE_STEP_FORWARD,
00012   MOVE_STEP_BACKWARD,
00013   MOVE_PAGE_FORWARD,
00014   MOVE_PAGE_BACKWARD,
00015 };
00016 
00017 class Adjustment : public virtual ReferenceCountable {
00018   typedef Aida::Signal<void ()> SignalValueChanged;
00019   typedef Aida::Signal<void ()> SignalRangeChanged;
00020 protected:
00021   explicit              Adjustment      ();
00022   virtual               ~Adjustment     ();
00023   virtual void          value_changed   ();
00024   virtual void          range_changed   ();
00025 public:
00026   /* value */
00027   virtual double        value           () = 0;
00028   virtual void          value           (double newval) = 0;
00029   double                flipped_value   ();
00030   void                  flipped_value   (double newval);
00031   SignalValueChanged    sig_value_changed;
00032   /* normalized (0..1) value */
00033   double                nvalue          ();
00034   void                  nvalue          (double newval);
00035   double                flipped_nvalue  ();
00036   void                  flipped_nvalue  (double newval);
00037   /* range */
00038   virtual bool          frozen          () const = 0;
00039   virtual void          freeze          () = 0;
00040   virtual double        lower           () const = 0;
00041   virtual void          lower           (double newval) = 0;
00042   virtual double        upper           () const = 0;
00043   virtual void          upper           (double newval) = 0;
00044   virtual double        step_increment  () const = 0;
00045   virtual void          step_increment  (double newval) = 0;
00046   virtual double        page_increment  () const = 0;
00047   virtual void          page_increment  (double newval) = 0;
00048   virtual double        page            () const = 0;
00049   virtual void          page            (double newval) = 0;
00050   virtual void          constrain       () = 0;
00051   virtual void          thaw            () = 0;
00052   SignalRangeChanged    sig_range_changed;
00053   double                abs_range       ();
00054   double                abs_length      ();
00055   bool                  move            (MoveType move);
00056   bool                  move_flipped    (MoveType move);
00057   String                string          ();
00058   /* factory */
00059   static Adjustment*    create          (double  value = 0,
00060                                          double  lower = 0,
00061                                          double  upper = 100,
00062                                          double  step_increment = 1,
00063                                          double  page_increment = 10,
00064                                          double  page_size = 0);
00065 };
00066 
00067 class AdjustmentSource : public virtual BaseObject {
00068 public:
00069   virtual Adjustment*   get_adjustment  (AdjustmentSourceType   adj_source,
00070                                          const String          &name = "") = 0;
00071 };
00072 
00073 } // Rapicorn
00074 
00075 #endif  /* __RAPICORN_ADJUSTMENT_HH__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines