TCurlyLineEditor.cxx

Go to the documentation of this file.
00001 // @(#)root/ged:$Id: TCurlyLineEditor.cxx 20882 2007-11-19 11:31:26Z rdm $
00002 // Author: Ilka Antcheva, Otto Schaile 15/12/04
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 //////////////////////////////////////////////////////////////////////////
00013 //                                                                      //
00014 //  TCurlyLineEditor                                                    //
00015 //                                                                      //
00016 //  Implements GUI for editing CurlyLine attributes: shape, size, angle.//                                             //
00017 //                                                                      //
00018 //////////////////////////////////////////////////////////////////////////
00019 //Begin_Html
00020 /*
00021 <img src="gif/TCurlyLineEditor.gif">
00022 */
00023 //End_Html
00024 
00025 
00026 #include "TCurlyLineEditor.h"
00027 #include "TGedEditor.h"
00028 #include "TGLabel.h"
00029 #include "TGNumberEntry.h"
00030 #include "TGButton.h"
00031 #include "TCurlyLine.h"
00032 #include "iostream"
00033 
00034 ClassImp(TCurlyLineEditor)
00035 
00036 enum ECurlyLineWid {
00037    kCRLL_AMPL,
00038    kCRLL_WAVE,
00039    kCRLL_ISW,
00040    kCRLL_STRX,
00041    kCRLL_STRY,
00042    kCRLL_ENDX,
00043    kCRLL_ENDY
00044 };
00045 
00046 //______________________________________________________________________________
00047 TCurlyLineEditor::TCurlyLineEditor(const TGWindow *p, Int_t width,
00048                            Int_t height, UInt_t options, Pixel_t back)
00049    : TGedFrame(p, width, height, options | kVerticalFrame, back)
00050 {
00051    // Constructor of CurlyLine GUI.
00052 
00053    fCurlyLine = 0;
00054 
00055    MakeTitle("Curly Line");
00056 
00057    TGCompositeFrame *f3 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
00058    AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 3, 0));
00059 
00060    TGCompositeFrame *f3a = new TGCompositeFrame(f3, 80, 20);
00061    f3->AddFrame(f3a, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
00062 
00063    TGLabel *fAmplitudeLabel = new TGLabel(f3a, "Amplitude:");
00064    f3a->AddFrame(fAmplitudeLabel, new TGLayoutHints(kLHintsNormal, 3, 0, 5, 5));
00065 
00066    TGLabel *fWaveLengthLabel = new TGLabel(f3a, "Wavelgth:");
00067    f3a->AddFrame(fWaveLengthLabel, new TGLayoutHints(kLHintsNormal, 3, 0, 5, 5));
00068 
00069    TGCompositeFrame *f3b = new TGCompositeFrame(f3, 80, 20);
00070    f3->AddFrame(f3b, new TGLayoutHints(kLHintsNormal, 0, 0, 0, 0));
00071 
00072    fAmplitudeEntry = new TGNumberEntry(f3b, 0.005, 7, kCRLL_AMPL,
00073                                        TGNumberFormat::kNESRealThree,
00074                                        TGNumberFormat::kNEANonNegative,
00075                                        TGNumberFormat::kNELLimitMinMax, 0.005, 0.3);
00076    fAmplitudeEntry->GetNumberEntry()->SetToolTipText("Set amplitude in percent of the pad height.");
00077    f3b->AddFrame(fAmplitudeEntry, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));
00078 
00079    fWaveLengthEntry = new TGNumberEntry(f3b, 0.005, 7, kCRLL_WAVE,
00080                                         TGNumberFormat::kNESRealThree,
00081                                         TGNumberFormat::kNEANonNegative,
00082                                         TGNumberFormat::kNELLimitMinMax, 0.005, 0.3);
00083    fWaveLengthEntry->GetNumberEntry()->SetToolTipText("Set wavelength in percent of the pad height.");
00084    fWaveLengthEntry->Associate(this);
00085    f3b->AddFrame(fWaveLengthEntry, new TGLayoutHints(kLHintsLeft, 4, 1, 3, 1));
00086 
00087    fIsWavy = new TGCheckButton(this, "Gluon (Gamma)", kCRLL_ISW);
00088    fIsWavy->SetToolTipText("Toggle between wavy line (Gluon) if selected; curly line (Gamma) otherwise.");
00089    AddFrame(fIsWavy, new TGLayoutHints(kLHintsLeft, 5, 1, 5, 8));
00090 
00091    fStartXFrame = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
00092    AddFrame(fStartXFrame, new TGLayoutHints(kLHintsTop, 1, 1, 3, 0));
00093 
00094    TGCompositeFrame *f4a = new TGCompositeFrame(fStartXFrame, 80, 20);
00095    fStartXFrame->AddFrame(f4a, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
00096 
00097    TGLabel *fStartXLabel = new TGLabel(f4a, "Start X:");
00098    f4a->AddFrame(fStartXLabel, new TGLayoutHints(kLHintsNormal, 21, 0, 5, 5));
00099 
00100    TGLabel *fStartYLabel = new TGLabel(f4a, "Y:");
00101    f4a->AddFrame(fStartYLabel, new TGLayoutHints(kLHintsNormal, 50, 0, 5, 5));
00102 
00103    TGLabel *fEndXLabel = new TGLabel(f4a, "End X:");
00104    f4a->AddFrame(fEndXLabel, new TGLayoutHints(kLHintsNormal, 24, 0, 5, 5));
00105 
00106    TGLabel *fEndYLabel = new TGLabel(f4a, "Y:");
00107    f4a->AddFrame(fEndYLabel, new TGLayoutHints(kLHintsNormal, 51, 0, 5, 1));
00108 
00109    TGCompositeFrame *f4b = new TGCompositeFrame(fStartXFrame, 80, 20);
00110    fStartXFrame->AddFrame(f4b, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
00111 
00112    fStartXEntry = new TGNumberEntry(f4b, 0.0, 7, kCRLL_STRX,
00113                                     TGNumberFormat::kNESRealThree,
00114                                     TGNumberFormat::kNEANonNegative,
00115                                     TGNumberFormat::kNELNoLimits);
00116    fStartXEntry->GetNumberEntry()->SetToolTipText("Set start point X ccordinate of curly line.");
00117    f4b->AddFrame(fStartXEntry, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
00118 
00119    fStartYEntry = new TGNumberEntry(f4b, 0.0, 7, kCRLL_STRY,
00120                                     TGNumberFormat::kNESRealThree,
00121                                     TGNumberFormat::kNEANonNegative,
00122                                     TGNumberFormat::kNELNoLimits);
00123    fStartYEntry->GetNumberEntry()->SetToolTipText("Set start point Y coordinate of curly line.");
00124    f4b->AddFrame(fStartYEntry, new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
00125 
00126    fEndXEntry = new TGNumberEntry(f4b, 0.0, 7, kCRLL_ENDX,
00127                                   TGNumberFormat::kNESRealThree,
00128                                   TGNumberFormat::kNEANonNegative,
00129                                   TGNumberFormat::kNELNoLimits);
00130    fEndXEntry->GetNumberEntry()->SetToolTipText("Set end point X coordinate of curly line.");
00131    f4b->AddFrame(fEndXEntry, new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
00132 
00133    fEndYEntry = new TGNumberEntry(f4b, 0.0, 7, kCRLL_ENDY,
00134                                   TGNumberFormat::kNESRealThree,
00135                                   TGNumberFormat::kNEANonNegative,
00136                                   TGNumberFormat::kNELNoLimits);
00137    fEndYEntry->GetNumberEntry()->SetToolTipText("Set end point Y coordinate of curly line.");
00138    f4b->AddFrame(fEndYEntry, new TGLayoutHints(kLHintsLeft, 1, 1, 3, 1));
00139 
00140 }
00141 
00142 //______________________________________________________________________________
00143 TCurlyLineEditor::~TCurlyLineEditor()
00144 {
00145    // Destructor of CurlyLine editor.
00146 }
00147 
00148 //______________________________________________________________________________
00149 void TCurlyLineEditor::ConnectSignals2Slots()
00150 {
00151    // Connect signals to slots.
00152 
00153    fStartXEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoStartXY()");
00154    (fStartXEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoStartXY()");
00155    fStartYEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoStartXY()");
00156    (fStartYEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoStartXY()");
00157    fEndXEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoEndXY()");
00158    (fEndXEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoEndXY()");
00159    fEndYEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoEndXY()");
00160    (fEndYEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoEndXY()");
00161    fAmplitudeEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoAmplitude()");
00162    (fAmplitudeEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoAmplitude()");
00163    fWaveLengthEntry->Connect("ValueSet(Long_t)", "TCurlyLineEditor", this, "DoWaveLength()");
00164    (fWaveLengthEntry->GetNumberEntry())->Connect("ReturnPressed()", "TCurlyLineEditor", this, "DoWaveLength()");
00165    fIsWavy->Connect("Clicked()", "TCurlyLineEditor", this, "DoWavy()");
00166 
00167    fInit = kFALSE;
00168 }
00169 
00170 //______________________________________________________________________________
00171 void TCurlyLineEditor::SetModel(TObject* obj)
00172 {
00173    // Pick up the used curly line attributes.
00174 
00175    if (obj->InheritsFrom("TCurlyArc")) {
00176       HideFrame(fStartXFrame);
00177       fStartXEntry->Disconnect("ValueSet(Long_t)");
00178       (fStartXEntry->GetNumberEntry())->Disconnect("ReturnPressed()");
00179       fStartYEntry->Disconnect("ValueSet(Long_t)");
00180       (fStartYEntry->GetNumberEntry())->Disconnect("ReturnPressed()");
00181       fEndXEntry->Disconnect("ValueSet(Long_t)");
00182       (fEndXEntry->GetNumberEntry())->Disconnect("ReturnPressed()");
00183       fEndYEntry->Disconnect("ValueSet(Long_t)");
00184       (fEndYEntry->GetNumberEntry())->Disconnect("ReturnPressed()");
00185    }
00186 
00187    fCurlyLine = (TCurlyLine *)obj;
00188    fAvoidSignal = kTRUE;
00189 
00190    Double_t val = fCurlyLine->GetAmplitude();
00191    fAmplitudeEntry->SetNumber(val);
00192 
00193    val = fCurlyLine->GetWaveLength();
00194    fWaveLengthEntry->SetNumber(val);
00195 
00196    val = fCurlyLine->GetStartX();
00197    fStartXEntry->SetNumber(val);
00198 
00199    val = fCurlyLine->GetEndX();
00200    fEndXEntry->SetNumber(val);
00201 
00202    val = fCurlyLine->GetStartY();
00203    fStartYEntry->SetNumber(val);
00204 
00205    val = fCurlyLine->GetEndY();
00206    fEndYEntry->SetNumber(val);
00207 
00208    if (fCurlyLine->GetCurly())
00209       fIsWavy->SetState(kButtonDown);
00210    else
00211       fIsWavy->SetState(kButtonUp);
00212 
00213    if (fInit) ConnectSignals2Slots();
00214    fAvoidSignal = kFALSE;
00215 }
00216 
00217 //______________________________________________________________________________
00218 void TCurlyLineEditor::ActivateBaseClassEditors(TClass* cl)
00219 {
00220    // Exclude TAttFillEditor.
00221 
00222    fGedEditor->ExcludeClassEditor(TAttFill::Class());
00223    TGedFrame::ActivateBaseClassEditors(cl);
00224 }
00225 
00226 //______________________________________________________________________________
00227 void TCurlyLineEditor::DoStartXY()
00228 {
00229    // Slot connected to the CurlyLine StartPoint.
00230 
00231    if (fAvoidSignal) return;
00232    fCurlyLine->SetStartPoint(fStartXEntry->GetNumber(), fStartYEntry->GetNumber());
00233    fCurlyLine->Paint(fCurlyLine->GetDrawOption());
00234    Update();
00235 }
00236 //______________________________________________________________________________
00237 void TCurlyLineEditor::DoEndXY()
00238 {
00239    // Slot connected to the CurlyLine End.
00240 
00241    if (fAvoidSignal) return;
00242    fCurlyLine->SetEndPoint(fEndXEntry->GetNumber(), fEndYEntry->GetNumber());
00243    fCurlyLine->Paint(fCurlyLine->GetDrawOption());
00244    Update();
00245 }
00246 
00247 //______________________________________________________________________________
00248 void TCurlyLineEditor::DoAmplitude()
00249 {
00250    // Slot connected to the amplitude setting.
00251 
00252    if (fAvoidSignal) return;
00253    fCurlyLine->SetAmplitude((Double_t)fAmplitudeEntry->GetNumber());
00254    fCurlyLine->Paint(fCurlyLine->GetDrawOption());
00255    Update();
00256 }
00257 
00258 //______________________________________________________________________________
00259 void TCurlyLineEditor::DoWaveLength()
00260 {
00261    // Slot connected to the wavelength setting.
00262 
00263    if (fAvoidSignal) return;
00264    Double_t num = fWaveLengthEntry->GetNumber();
00265    fCurlyLine->SetWaveLength(num);
00266    fCurlyLine->Paint(GetDrawOption());
00267    Update();
00268 }
00269 
00270 //______________________________________________________________________________
00271 void TCurlyLineEditor::DoWavy()
00272 {
00273    // Slot connected to the wavy / curly setting.
00274 
00275    if (fAvoidSignal) return;
00276    if (fIsWavy->GetState() == kButtonDown) 
00277       fCurlyLine->SetCurly();
00278    else
00279       fCurlyLine->SetWavy();
00280    fCurlyLine->Paint(GetDrawOption());
00281    Update();
00282 }

Generated on Tue Jul 5 14:19:45 2011 for ROOT_528-00b_version by  doxygen 1.5.1