Rapicorn - Experimental UI Toolkit - Source Code
13.07.0
|
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__ */