File: INCLUDE\DETECUSE\DETECGUI.H

    1 /*
    2 $Header: /vol/baal-vol3/projekt98/quellen/XCTL_32/INCLUDE/DETECUSE/DETECGUI.H,v 1.21 2004/07/06 08:26:09 reinecke Exp $
    3 
    4 Projekt   : XCTL
    5 Subsystem : Detektoren
    6 Autor     : Jan Picard <picard@informatik.hu-berlin.de> 2001-2002
    7           Institut fuer Informatik,
    8           Humboldt-Universitaet Berlin
    9 Inhalt    : Interface-Deklaration fuer die Oberflaechenklassen des
   10           Detektoren-Subsystems
   11 */
   12 
   13 #ifndef _DETECGUI_H
   14 #define _DETECGUI_H
   15 
   16 #include "utils\u_utils.h"
   17 #include "datavisa\datavisa.h" // für TCurve
   18 #include "detecuse\detecmes.h"
   19 
   20 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
   21 
   22 //##############################################################################
   23 // TCommonDevParamDlg
   24 //##############################################################################
   25 
   26 // Dialog für die allgemeinen Einstellungen der Meß-Einheiten
   27 class TCommonDevParamDlg : public TModalDlg
   28 {
   29 public:
   30         TCommonDevParamDlg( TDetector* = 0);
   31 
   32 private:
   33         HWND hChooseDetector;
   34         TDetector* Detector;
   35         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
   36         void Dlg_OnCommand( HWND, int, HWND, UINT );
   37         BOOL CanClose( void );
   38         void LeaveDialog( void );
   39 
   40         // event handler
   41         void OnParamSet();
   42         void OnShowCounter(HWND hwnd);
   43         void OnActivateChanges();
   44         void OnSoundSwitch();
   45         void OnSpecificParameters();
   46         void OnStaticFailure(HWND hwnd);
   47         void OnChooseDetector(HWND hwnd, UINT codeNotify);
   48 };
   49 
   50 //##############################################################################
   51 // TPsdParametersDlg
   52 //##############################################################################
   53 
   54 // Dialog für die Einstellungen des Psd 
   55 class TPsdParametersDlg : public TModelessDlg
   56 {
   57 public:
   58         TPsdParametersDlg( TModelessDlg** );
   59 
   60         virtual BOOL Initialize ( HINSTANCE, HWND );
   61 
   62 protected:
   63         virtual BOOL Dlg_OnInit( HWND, HWND, LPARAM );
   64         virtual void Dlg_OnCommand( HWND, int, HWND, UINT );
   65 
   66 // event handler und Hilfemethoden zum Auswerten/ Aktualisieren des Bildschirms
   67 private:
   68         void OnInitializePsd(HWND);
   69         void PSD2Screen(BOOL, BOOL, BOOL);
   70         bool Screen2PSD(BOOL, BOOL, BOOL);
   71 
   72 private:
   73         TOneDimDetector* Detector;
   74         HWND m_Parent; // an dieses Fensterhandle wird beim 'Setzen'-Button eine Nachricht zum Update geschickt
   75         int OldId;
   76 };
   77 
   78 //##############################################################################
   79 // TScsParametersDlg
   80 //##############################################################################
   81 
   82 // Parameter-Dialog
   83 class TScsParametersDlg : public TModalDlg
   84 {
   85 public:
   86         TScsParametersDlg( TDetector*);
   87 
   88 private:
   89         TRadicon *Radicon;
   90         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
   91         void Dlg_OnCommand( HWND, int, HWND, UINT );
   92         BOOL CanClose( void );
   93 
   94         // event handler
   95         void OnParamSet();
   96 };
   97 
   98 //##############################################################################
   99 // TCalibratePsdDlg
  100 //##############################################################################
  101 
  102 // Struktur für linken und rechten Peak
  103 struct CPoint 
  104 {
  105         float Pt[3];
  106         BOOL Valid;
  107 };
  108 
  109 // Dialog zum Kalibrieren des Psd
  110 class TCalibratePsdDlg : public TModalDlg, public ITimer
  111 {
  112 // überschriebenes aus der (Fenster-)Basisklasse
  113 public:
  114         TCalibratePsdDlg( TCurve& );
  115 
  116         //! setzt Defaultwerte der Dialogbox bei Aufruf der Box
  117         //! Rueckkehrcode immer true
  118         virtual BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  119 
  120         //! behandelt Kommandos in der Dialogbox
  121         virtual void Dlg_OnCommand( HWND, int, HWND, UINT );
  122 
  123         //! behandelt alle Scrollbarereignisse
  124         virtual void Dlg_OnHScrollBar( HWND, HWND, UINT, int );
  125 
  126         //! wird bei verlassen der dialogbox aufgerufen
  127         virtual void LeaveDialog( void );
  128 
  129         virtual void OnTimer ( TBasicTimer *const );
  130 
  131 // event handler
  132 private:
  133         void OnIDOK();
  134         void OnCancel();
  135         double DoRefreshPosition(BOOL&);
  136         void OnParamSet();
  137         void OnCounterSet();
  138         void OnRightPositionReached();
  139         void OnLeftPositionReached();
  140 
  141 // Hilfsmethoden zum Ermitteln der Scrollbarpositionen 
  142 private:
  143         double GetBarScale ( void ) const;
  144 
  145         //! ermittelt Anzahl der Scrollbarschritte links bzw. rechts von der
  146         //! absoluten Null
  147         int GetBarEgde( BOOL ) const;
  148 
  149         //! liefert die Position des Scrollbar anhand der akt. Motorposition im
  150         //! Rueckkehrcode
  151         int GetBarPos() const;
  152 
  153 private:
  154         TInterfaceTimer *m_lnkTimer; // POLLING-Timer
  155 
  156         //! gibt umrechnungsfactor an um Winkelsekunden in die jeweilige Einheit
  157         //! umzurechnen
  158         float fRelationFactor;
  159 
  160         //! wahrscheinlich ueberfluessig
  161         // 21.04.2004 BOOL bCalibrationOk;
  162 
  163         //! akt. angezeigte Kurve
  164         TCurve *Curve; // nicht im Destruktor freigeben
  165 
  166         //! gibt pos. des linken bzw. rechten Peaks an
  167         CPoint LeftPeak;
  168         CPoint RightPeak;
  169 
  170         //! gibt an ob rechter bzw. linker Peak schon erreicht ist
  171         BOOL bGetRightPeak;
  172         BOOL bGetLeftPeak;
  173 
  174         //! gibt an ob motor ueber groessere distanz faehrt
  175         BOOL bLongMove;
  176 
  177         // cm_CounterSet an dieses Fenster weiterleiten (AreaScan-Fenster)
  178         HWND m_OldControlWnd;
  179 
  180         //! scheinbar ueberfluessig
  181         // 21.04.2004 float fOldPsdStep;
  182 
  183         //! FIX Fehler 49
  184         //! beinhaltet die Schrittweite vor Aufruf der Calibr.-Box
  185         double dOldMotorWidth;
  186 
  187         //! Handle des Scrollbars
  188         HWND hBar, m_lastfocused;
  189 
  190         //! gibt an ob Abzahl der Scrollbarschritte kleiner als 20000 ist (1) oder
  191         //! nicht (2)
  192         int BarFactor;
  193 
  194         int nMotor;                             //! enthaelt Index des Thetamotors in der Motorenliste
  195         float dStepWidth;       //! Wert fuer Winkel pro Kanal
  196         TOneDimDetector *Psd;   //! Pointer auf den Psd
  197 };
  198 
  199 #endif // #ifndef _DETECGUI_H
  200