Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

GuiSlider.h

Go to the documentation of this file.
00001 
00002 //
00003 // $Id: GuiSlider.h,v 1.4 2005/07/21 20:26:36 bv Exp $
00004 //
00005 // GuiSlider
00006 //
00007 // Package: MIDAD
00008 //
00009 // Add some extra functionality to TGDoubleSlider
00010 //
00011 // Contact: bv@bnl.gov
00012 //
00013 // Created on: Tue Apr 10 13:56:11 2001
00014 //
00016 
00017 #ifndef GUISLIDER_H
00018 #define GUISLIDER_H
00019 
00020 #include <Midad/Util/RangeControl.h>
00021 #include <Midad/Gui/GuiBox.h>
00022 
00023 #include <TGFrame.h>
00024 #include <TGDoubleSlider.h>
00025 
00026 #include <Midad/Util/Signals.h>
00027 
00028 class GuiSlider;
00029 
00030 class GuiSliderSignals : public GuiBase
00031 {
00032 public:
00033     GuiSliderSignals(GuiSlider* slider) : fSlider(slider) {}
00034     virtual ~GuiSliderSignals() {}
00035 
00036     SigC::Signal0<void> position_changed, pressed, released;
00037 protected:
00038     GuiSlider* fSlider;
00039 };
00040 
00041 class GuiVSlider : public TGDoubleVSlider, public GuiSliderSignals
00042 {
00043 public:
00044     GuiVSlider(TGWindow& parent);
00045     virtual ~GuiVSlider();
00046 
00047     // override signals
00048     virtual void PositionChanged();
00049     virtual void Pressed();
00050     virtual void Released();
00051 
00052     // Over ride to protect against SIGFPE
00053     virtual void DoRedraw();
00054 };                              // end of class GuiSlider
00055 
00056 class GuiHSlider : public TGDoubleHSlider, public GuiSliderSignals
00057 {
00058 public:
00059     GuiHSlider(TGWindow& parent);
00060     virtual ~GuiHSlider();
00061 
00062     // override signals
00063     virtual void PositionChanged();
00064     virtual void Pressed();
00065     virtual void Released();
00066 
00067     // Over ride to protect against SIGFPE
00068     virtual void DoRedraw();
00069 };                              // end of class GuiSlider
00070 
00071 class GuiSlider : public GuiBox
00072 {
00073 public:
00074     GuiSlider(TGWindow& parent, unsigned int option);
00075     virtual ~GuiSlider();
00076 
00077     RangeControl<double>& GetRangeCtrl() { return fRangeCtrl; }
00078     RangeControl<double>& GetExtremaCtrl() { return fExtremaCtrl; }
00079     void UseRange(Range<double>& r);
00080     void UseExtrema(Range<double>& e);
00081     void UseRangeControl(RangeControl<double>& rc);
00082     void UseExtremaControl(RangeControl<double>& ec);
00083 
00084     GuiSliderSignals& GetSignals() { return *fSignals; }
00085 
00086     // Internal
00087     void StartCompound();
00088     void StopCompound();
00089 
00090 private:
00091     void UpdateRange();
00092     void ApplyRange();
00093 
00094     RangeControl<double> fRangeCtrl, fExtremaCtrl;
00095     SigC::Connection fSliderCon, fRangeCon, fExtremaCon;
00096     TGDoubleSlider* fSlider;
00097     GuiSliderSignals* fSignals;
00098 };
00099 
00100 #endif  // GUISLIDER_H

Generated on Mon Nov 23 05:26:56 2009 for loon by  doxygen 1.3.9.1