Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > 8c86774a3e53d77cc119f53a2b94a57a > files > 48

root-tutorial-5.34.14-2.fc18.noarch.rpm

// Author: Bertrand Bellenot   22/08/02

/*************************************************************************
 * Copyright (C) 1995-2002, Bertrand Bellenot.                           *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see the LICENSE file.                         *
 *************************************************************************/

#include <TGButton.h>
#include "GButtonFrame.h"

//______________________________________________________________________________
// GButtonFrame
//
// A GButtonFrame is a frame containing the RootShower buttons. 
//______________________________________________________________________________


//______________________________________________________________________________
GButtonFrame::GButtonFrame(const TGWindow* p, TGWindow* buttonHandler, 
                           Int_t nextEventId, Int_t showTrackId, 
                           Int_t interruptSimId) : 
                           TGCompositeFrame(p, 100, 100, kVerticalFrame)
{
   // Create GButtonFrame object, with TGWindow parent *p.
   //
   // buttonHandler = pointer to button handler TGWindow
   // nextEventId = id of NextEvent button

   // Create Layout hints
   fButtonLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 5, 2, 2, 2);

   // Create Event Buttons
   fNextEventButton = new TGTextButton(this, "Start &New Event", nextEventId);
   fNextEventButton->Associate(buttonHandler);
   fNextEventButton->SetToolTipText("Start new simulation event");
   AddFrame(fNextEventButton, fButtonLayout);
   fStopSimButton = new TGTextButton(this, "&Interrupt Simulation", interruptSimId);
   fStopSimButton->Associate(buttonHandler);
   fStopSimButton->SetToolTipText("Interrupts the current simulation");
   AddFrame(fStopSimButton, fButtonLayout);
   fShowTrackButton = new TGTextButton(this, "&Show Selection", showTrackId);
   fShowTrackButton->Associate(buttonHandler);
   fShowTrackButton->SetToolTipText("Shows the selected track");
   AddFrame(fShowTrackButton, fButtonLayout);

   fNextEventButton->Resize(150,GetDefaultHeight());
   fStopSimButton->Resize(150,GetDefaultHeight());
   fShowTrackButton->Resize(150,GetDefaultHeight());

   SetState(kAllActive);
   fShowTrackButton->SetState(kButtonDisabled);
   fStopSimButton->SetState(kButtonDisabled);
}

//______________________________________________________________________________
GButtonFrame::~GButtonFrame()
{
   // Destroy GButtonFrame object. Delete all created widgets

   delete fNextEventButton;
   delete fButtonLayout;
}

//______________________________________________________________________________
void GButtonFrame::SetState(EState state)
{
   // Set the state of the GButtonFrame. This sets the state of
   // the TGButton's in this frame.

   switch (state) {
      case kAllActive:
         fNextEventButton->SetState(kButtonUp);
         fShowTrackButton->SetState(kButtonUp);
         fStopSimButton->SetState(kButtonDisabled);
         break;

      case kNoneActive:
         fNextEventButton->SetState(kButtonDisabled);
         fShowTrackButton->SetState(kButtonDisabled);
         fStopSimButton->SetState(kButtonUp);
         break;

   } // switch state 
   // make sure window gets updated...
   gClient->HandleInput();
}