// @(#):$Id$
// Author: M.Gheata 

/*************************************************************************
 * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TGeoTranslationEditor
#define ROOT_TGeoTranslationEditor

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoTranslationEditor                                               //
//                                                                      //
//  Editor for a TGeoTranslation.                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TGButton
#include "TGWidget.h"
#endif
#ifndef ROOT_TGeoGedFrame
#include "TGeoGedFrame.h"
#endif

class TGeoTranslation;
class TGeoRotation;
class TGeoCombiTrans;
class TGTextEntry;
class TGNumberEntry;
class TGTab;
class TGComboBox;
class TGTextButton;
class TGRadioButton;
class TString;

class TGeoTranslationEditor : public TGeoGedFrame {

protected:

   Double_t             fDxi;               // Initial dx
   Double_t             fDyi;               // Initial dy
   Double_t             fDzi;               // Initial dz
   TString              fNamei;             // Initial name
   TGeoTranslation     *fTranslation;       // Translation object
   Bool_t               fIsModified;        // Flag that this was modified
   Bool_t               fIsEditable;        // Flag that this can be changed
   TGTextEntry         *fTransName;         // Translation name text entry
   TGNumberEntry       *fTransDx;           // Number entry for box DX
   TGNumberEntry       *fTransDy;           // Number entry for box DY
   TGNumberEntry       *fTransDz;           // Number entry for box DZ
   TGTextButton        *fApply;             // Apply-Button to accept changes
   TGTextButton        *fCancel;            // Cancel-Button
   TGTextButton        *fUndo;              // Undo-Button

   virtual void ConnectSignals2Slots();   // Connect the signals to the slots

public:
   TGeoTranslationEditor(const TGWindow *p = 0,
                   Int_t width = 140, Int_t height = 30,
                   UInt_t options = kChildFrame,
                   Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGeoTranslationEditor();
   virtual void   SetModel(TObject *obj);

   void           DoDx();
   void           DoDy();
   void           DoDz();
   void           DoModified();
   void           DoName();
   Bool_t         DoParameters();
   void           DoApply();
   void           DoCancel();
   void           DoUndo();
   
   ClassDef(TGeoTranslationEditor,0)   // TGeoTranslation editor
};   
  
//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoRotationEditor                                                  //
//                                                                      //
//  Editor for a TGeoRotation.                                          //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

class TGeoRotationEditor : public TGeoGedFrame {

protected:

   Double_t             fPhii;              // Initial phi   (Euler rotation angle about Z)
   Double_t             fThetai;            // Initial theta (Euler rotation angle about new X)
   Double_t             fPsii;              // Initial dz    (Euler rotation angle about new Z)
   Double_t             fAngleX;            // New rotation angle about X
   Double_t             fAngleY;            // New rotation angle about Y
   Double_t             fAngleZ;            // New rotation angle about Z
   TString              fNamei;             // Initial name
   TGeoRotation        *fRotation;          // Rotation object
   Bool_t               fIsModified;        // Flag that this was modified
   Bool_t               fIsEditable;        // Flag that this can be changed
   TGTextEntry         *fRotName;           // Translation name text entry
   TGNumberEntry       *fRotPhi;            // Number entry for phi angle
   TGNumberEntry       *fRotTheta;          // Number entry for theta angle
   TGNumberEntry       *fRotPsi;            // Number entry for psi angle
   TGNumberEntry       *fRotAxis;           // Number entry for rotation angle about one axis
   TGRadioButton       *fRotX;              // Rotation about X selected
   TGRadioButton       *fRotY;              // Rotation about Y selected
   TGRadioButton       *fRotZ;              // Rotation about Z selected
   TGTextButton        *fApply;             // Apply-Button to accept changes
   TGTextButton        *fCancel;            // Cancel-Button
   TGTextButton        *fUndo;              // Undo-Button

   virtual void ConnectSignals2Slots();   // Connect the signals to the slots

public:
   TGeoRotationEditor(const TGWindow *p = 0,
                   Int_t width = 140, Int_t height = 30,
                   UInt_t options = kChildFrame,
                   Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGeoRotationEditor();
   virtual void   SetModel(TObject *obj);

   void           DoRotPhi();
   void           DoRotTheta();
   void           DoRotPsi();
   void           DoRotAngle();
   void           DoModified();
   void           DoName();
   Bool_t         DoParameters();
   void           DoApply();
   void           DoCancel();
   void           DoUndo();
   
   ClassDef(TGeoRotationEditor,0)   // TGeoRotation editor
};   

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoCombiTransEditor                                                //
//                                                                      //
//  Editor for a TGeoCombiTrans.                                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

class TGeoCombiTransEditor : public TGeoGedFrame {

protected:

   Double_t             fDxi;               // Initial dx
   Double_t             fDyi;               // Initial dy
   Double_t             fDzi;               // Initial dz
   Double_t             fPhii;              // Initial phi   (Euler rotation angle about Z)
   Double_t             fThetai;            // Initial theta (Euler rotation angle about new X)
   Double_t             fPsii;              // Initial dz    (Euler rotation angle about new Z)
   Double_t             fAngleX;            // New rotation angle about X
   Double_t             fAngleY;            // New rotation angle about Y
   Double_t             fAngleZ;            // New rotation angle about Z
   TString              fNamei;             // Initial name
   TGeoCombiTrans      *fCombi;             // Combi object
   Bool_t               fIsModified;        // Flag that this was modified
   Bool_t               fIsEditable;        // Flag that this can be changed
   TGTextEntry         *fRotName;           // Translation name text entry
   TGNumberEntry       *fTransDx;           // Number entry for box DX
   TGNumberEntry       *fTransDy;           // Number entry for box DY
   TGNumberEntry       *fTransDz;           // Number entry for box DZ
   TGNumberEntry       *fRotPhi;            // Number entry for phi angle
   TGNumberEntry       *fRotTheta;          // Number entry for theta angle
   TGNumberEntry       *fRotPsi;            // Number entry for psi angle
   TGNumberEntry       *fRotAxis;           // Number entry for rotation angle about one axis
   TGRadioButton       *fRotX;              // Rotation about X selected
   TGRadioButton       *fRotY;              // Rotation about Y selected
   TGRadioButton       *fRotZ;              // Rotation about Z selected
   TGTextButton        *fApply;             // Apply-Button to accept changes
   TGTextButton        *fCancel;            // Cancel-Button
   TGTextButton        *fUndo;              // Undo-Button

   virtual void ConnectSignals2Slots();   // Connect the signals to the slots

public:
   TGeoCombiTransEditor(const TGWindow *p = 0,
                   Int_t width = 140, Int_t height = 30,
                   UInt_t options = kChildFrame,
                   Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGeoCombiTransEditor();
   virtual void   SetModel(TObject *obj);

   void           DoDx();
   void           DoDy();
   void           DoDz();
   void           DoRotPhi();
   void           DoRotTheta();
   void           DoRotPsi();
   void           DoRotAngle();
   void           DoModified();
   void           DoName();
   Bool_t         DoParameters();
   void           DoApply();
   void           DoCancel();
   void           DoUndo();
   
   ClassDef(TGeoCombiTransEditor,0)   // TGeoCombiTrans editor
};   

#endif                    
 TGeoMatrixEditor.h:1
 TGeoMatrixEditor.h:2
 TGeoMatrixEditor.h:3
 TGeoMatrixEditor.h:4
 TGeoMatrixEditor.h:5
 TGeoMatrixEditor.h:6
 TGeoMatrixEditor.h:7
 TGeoMatrixEditor.h:8
 TGeoMatrixEditor.h:9
 TGeoMatrixEditor.h:10
 TGeoMatrixEditor.h:11
 TGeoMatrixEditor.h:12
 TGeoMatrixEditor.h:13
 TGeoMatrixEditor.h:14
 TGeoMatrixEditor.h:15
 TGeoMatrixEditor.h:16
 TGeoMatrixEditor.h:17
 TGeoMatrixEditor.h:18
 TGeoMatrixEditor.h:19
 TGeoMatrixEditor.h:20
 TGeoMatrixEditor.h:21
 TGeoMatrixEditor.h:22
 TGeoMatrixEditor.h:23
 TGeoMatrixEditor.h:24
 TGeoMatrixEditor.h:25
 TGeoMatrixEditor.h:26
 TGeoMatrixEditor.h:27
 TGeoMatrixEditor.h:28
 TGeoMatrixEditor.h:29
 TGeoMatrixEditor.h:30
 TGeoMatrixEditor.h:31
 TGeoMatrixEditor.h:32
 TGeoMatrixEditor.h:33
 TGeoMatrixEditor.h:34
 TGeoMatrixEditor.h:35
 TGeoMatrixEditor.h:36
 TGeoMatrixEditor.h:37
 TGeoMatrixEditor.h:38
 TGeoMatrixEditor.h:39
 TGeoMatrixEditor.h:40
 TGeoMatrixEditor.h:41
 TGeoMatrixEditor.h:42
 TGeoMatrixEditor.h:43
 TGeoMatrixEditor.h:44
 TGeoMatrixEditor.h:45
 TGeoMatrixEditor.h:46
 TGeoMatrixEditor.h:47
 TGeoMatrixEditor.h:48
 TGeoMatrixEditor.h:49
 TGeoMatrixEditor.h:50
 TGeoMatrixEditor.h:51
 TGeoMatrixEditor.h:52
 TGeoMatrixEditor.h:53
 TGeoMatrixEditor.h:54
 TGeoMatrixEditor.h:55
 TGeoMatrixEditor.h:56
 TGeoMatrixEditor.h:57
 TGeoMatrixEditor.h:58
 TGeoMatrixEditor.h:59
 TGeoMatrixEditor.h:60
 TGeoMatrixEditor.h:61
 TGeoMatrixEditor.h:62
 TGeoMatrixEditor.h:63
 TGeoMatrixEditor.h:64
 TGeoMatrixEditor.h:65
 TGeoMatrixEditor.h:66
 TGeoMatrixEditor.h:67
 TGeoMatrixEditor.h:68
 TGeoMatrixEditor.h:69
 TGeoMatrixEditor.h:70
 TGeoMatrixEditor.h:71
 TGeoMatrixEditor.h:72
 TGeoMatrixEditor.h:73
 TGeoMatrixEditor.h:74
 TGeoMatrixEditor.h:75
 TGeoMatrixEditor.h:76
 TGeoMatrixEditor.h:77
 TGeoMatrixEditor.h:78
 TGeoMatrixEditor.h:79
 TGeoMatrixEditor.h:80
 TGeoMatrixEditor.h:81
 TGeoMatrixEditor.h:82
 TGeoMatrixEditor.h:83
 TGeoMatrixEditor.h:84
 TGeoMatrixEditor.h:85
 TGeoMatrixEditor.h:86
 TGeoMatrixEditor.h:87
 TGeoMatrixEditor.h:88
 TGeoMatrixEditor.h:89
 TGeoMatrixEditor.h:90
 TGeoMatrixEditor.h:91
 TGeoMatrixEditor.h:92
 TGeoMatrixEditor.h:93
 TGeoMatrixEditor.h:94
 TGeoMatrixEditor.h:95
 TGeoMatrixEditor.h:96
 TGeoMatrixEditor.h:97
 TGeoMatrixEditor.h:98
 TGeoMatrixEditor.h:99
 TGeoMatrixEditor.h:100
 TGeoMatrixEditor.h:101
 TGeoMatrixEditor.h:102
 TGeoMatrixEditor.h:103
 TGeoMatrixEditor.h:104
 TGeoMatrixEditor.h:105
 TGeoMatrixEditor.h:106
 TGeoMatrixEditor.h:107
 TGeoMatrixEditor.h:108
 TGeoMatrixEditor.h:109
 TGeoMatrixEditor.h:110
 TGeoMatrixEditor.h:111
 TGeoMatrixEditor.h:112
 TGeoMatrixEditor.h:113
 TGeoMatrixEditor.h:114
 TGeoMatrixEditor.h:115
 TGeoMatrixEditor.h:116
 TGeoMatrixEditor.h:117
 TGeoMatrixEditor.h:118
 TGeoMatrixEditor.h:119
 TGeoMatrixEditor.h:120
 TGeoMatrixEditor.h:121
 TGeoMatrixEditor.h:122
 TGeoMatrixEditor.h:123
 TGeoMatrixEditor.h:124
 TGeoMatrixEditor.h:125
 TGeoMatrixEditor.h:126
 TGeoMatrixEditor.h:127
 TGeoMatrixEditor.h:128
 TGeoMatrixEditor.h:129
 TGeoMatrixEditor.h:130
 TGeoMatrixEditor.h:131
 TGeoMatrixEditor.h:132
 TGeoMatrixEditor.h:133
 TGeoMatrixEditor.h:134
 TGeoMatrixEditor.h:135
 TGeoMatrixEditor.h:136
 TGeoMatrixEditor.h:137
 TGeoMatrixEditor.h:138
 TGeoMatrixEditor.h:139
 TGeoMatrixEditor.h:140
 TGeoMatrixEditor.h:141
 TGeoMatrixEditor.h:142
 TGeoMatrixEditor.h:143
 TGeoMatrixEditor.h:144
 TGeoMatrixEditor.h:145
 TGeoMatrixEditor.h:146
 TGeoMatrixEditor.h:147
 TGeoMatrixEditor.h:148
 TGeoMatrixEditor.h:149
 TGeoMatrixEditor.h:150
 TGeoMatrixEditor.h:151
 TGeoMatrixEditor.h:152
 TGeoMatrixEditor.h:153
 TGeoMatrixEditor.h:154
 TGeoMatrixEditor.h:155
 TGeoMatrixEditor.h:156
 TGeoMatrixEditor.h:157
 TGeoMatrixEditor.h:158
 TGeoMatrixEditor.h:159
 TGeoMatrixEditor.h:160
 TGeoMatrixEditor.h:161
 TGeoMatrixEditor.h:162
 TGeoMatrixEditor.h:163
 TGeoMatrixEditor.h:164
 TGeoMatrixEditor.h:165
 TGeoMatrixEditor.h:166
 TGeoMatrixEditor.h:167
 TGeoMatrixEditor.h:168
 TGeoMatrixEditor.h:169
 TGeoMatrixEditor.h:170
 TGeoMatrixEditor.h:171
 TGeoMatrixEditor.h:172
 TGeoMatrixEditor.h:173
 TGeoMatrixEditor.h:174
 TGeoMatrixEditor.h:175
 TGeoMatrixEditor.h:176
 TGeoMatrixEditor.h:177
 TGeoMatrixEditor.h:178
 TGeoMatrixEditor.h:179
 TGeoMatrixEditor.h:180
 TGeoMatrixEditor.h:181
 TGeoMatrixEditor.h:182
 TGeoMatrixEditor.h:183
 TGeoMatrixEditor.h:184
 TGeoMatrixEditor.h:185
 TGeoMatrixEditor.h:186
 TGeoMatrixEditor.h:187
 TGeoMatrixEditor.h:188
 TGeoMatrixEditor.h:189
 TGeoMatrixEditor.h:190
 TGeoMatrixEditor.h:191
 TGeoMatrixEditor.h:192
 TGeoMatrixEditor.h:193
 TGeoMatrixEditor.h:194
 TGeoMatrixEditor.h:195
 TGeoMatrixEditor.h:196
 TGeoMatrixEditor.h:197
 TGeoMatrixEditor.h:198
 TGeoMatrixEditor.h:199
 TGeoMatrixEditor.h:200
 TGeoMatrixEditor.h:201
 TGeoMatrixEditor.h:202
 TGeoMatrixEditor.h:203
 TGeoMatrixEditor.h:204
 TGeoMatrixEditor.h:205
 TGeoMatrixEditor.h:206
 TGeoMatrixEditor.h:207
 TGeoMatrixEditor.h:208