QGUIChSelector.hh

00001 /*
00002  * APOLLO: A complete DAQ and Online Data Analysis Framework for Cuore
00003  * 
00004  * A.Giachero created 28/05/07 - <Andrea.Giachero@ge.infn.it> 
00005  * 
00006  $ $Id: $
00007  * $Revision: $
00008  *
00009  * Class QGUIChSelector:
00010  *
00011  */
00012 
00013 #ifndef _QGUI_CH_SELECTOR_HH
00014 #define _QGUI_CH_SELECTOR_HH
00015 
00016 
00017 // Apollo Includes
00018 #include "TGFrame.h"
00019 #include "TGNumberEntry.h"
00020 
00021 // Root Includes
00022 #include "Rtypes.h"
00023 
00024 // C/C++ Includes
00025 #include <iostream>
00026 #include <vector>
00027 
00028 
00029 class TGTextButton;
00030 class TGTextEntry;
00031 class TTimer;
00032 
00033 class QGUIChSelector: public TGCompositeFrame
00034 {
00035 public:
00036   
00037   // ctor
00038   QGUIChSelector(const TGWindow *p, size_t qWidth, size_t qHeight, size_t qOption, 
00039                  std::vector<unsigned int>& qActiveChannels);
00040   
00041 
00042   // dtor
00043   virtual ~QGUIChSelector();
00044 
00045   // Get Current Channel selected
00046   inline const size_t GetChannel() const {return fCurrent;}
00047 
00048   // Get First Channel Active
00049   size_t GetFirstChannel();
00050   
00051   // Get Last Channel Active
00052   size_t GetLastChannel();
00053 
00054   // Get Number of Channels Active
00055   size_t GetNumberOfActChannels();
00056 
00057   // Update Number Entry
00058   void UpdateNumberEntry();
00059 
00060   // Update Current Text Entry
00061   void UpdateLoadedChannel();
00062 
00063   // Update after return pressed
00064   void UpdateReturnPressed();
00065   
00066   // Update after Count Down
00067   void CountDownComplete();
00068 
00069   // Signals
00070   void Loaded()  {Emit("Loaded()");}   //*SIGNAL*
00071   void Changed() {Emit("Changed()");}  //*SIGNAL*
00072 
00073 
00074 protected:
00075 
00076 
00077 private:
00078   
00079   enum QDirection_t
00080   {
00081     QUP  =true,
00082     QDOWN=false
00083   };
00084 
00085   // Vector of Active Channel
00086   std::vector<unsigned int>  fActiveChannels;
00087 
00088   // Last Channel in the Number Entry
00089   size_t fLast;
00090 
00091   // Current Channel Loaded
00092   size_t fCurrent;
00093 
00094   // true if return is pressed
00095   bool fIsPressed;
00096   inline const bool IsPressed() const {return fIsPressed;}
00097   inline void SetPressed(bool qPressed) {fIsPressed=qPressed;return;}
00098 
00099   
00100   // Timer
00101   TTimer            *fTimer;
00102   
00103   // Main Frame
00104   TGVerticalFrame   *fMainFrame;
00105   TGHorizontalFrame *fSelFrame;
00106   TGHorizontalFrame *fLoadFrame;
00107 
00108   // Number Entry for channel selection
00109   TGNumberEntry     *fNumber;
00110   TGTextEntry       *fLoadText;
00111 
00112   // Get Number Display in the number entry
00113   inline const size_t GetNumber() const {return (size_t)(fNumber->GetNumber());}
00114 
00115 
00116   // Return true if channel qChannel is active
00117   bool IsActive(size_t qChannel);
00118 
00119   // Set next channel after qChannel in the number entry
00120   size_t GetNextChannel(size_t qChannel, QDirection_t qDir);
00121 
00122   // Add Label To parent Frame
00123   void AddLabel(TGCompositeFrame* qParent, const std::string qLabel);
00124 
00125   // Add Vertical Frame to parent Frame
00126   void AddVFrame(TGCompositeFrame* qParent, TGVerticalFrame* &qChild, 
00127                  size_t qWidth, size_t qHeight);
00128 
00129   // Add Vertical Frame to parent Frame
00130   void AddHFrame(TGCompositeFrame* qParent, TGHorizontalFrame* &qChild,
00131                  size_t qWidth, size_t qHeight);
00132   
00133   // Set selected channel in the loaded text entry
00134   void SetLoadedChannel(size_t qChannel);
00135   
00136   // Set to zero all Pointers
00137   void Init();
00138 
00139 
00140   // Start Timer
00141   void StartTimer();
00142 
00143   // Stop Timer
00144   void StopTimer();
00145 
00146   // To integrate QEleRegsCtrl class into the ROOT system
00147   ClassDef(QGUIChSelector,0)
00148 
00149 };
00150 
00151 #endif // _QGUI_CH_SELECTOR_HH

Generated on Tue Nov 16 10:49:54 2010 for CUORE Software by  doxygen 1.5.6