ROOT logo
// @(#)root/guibuilder:$Id: TGuiBldEditor.cxx 31799 2009-12-10 15:02:05Z bellenot $
// Author: Valeriy Onuchin   12/09/04

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGuiBldEditor - the property editor                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGuiBldEditor.h"
#include "TRootGuiBuilder.h"
#include "TGuiBldHintsEditor.h"
#include "TGuiBldNameFrame.h"
#include "TGuiBldGeometryFrame.h"
#include "TGResourcePool.h"
#include "TGTab.h"
#include "TGLabel.h"
#include "TGButtonGroup.h"
#include "TGNumberEntry.h"
#include "TG3DLine.h"
#include "TGColorSelect.h"
#include "TGColorDialog.h"
#include "TGCanvas.h"
#include "TGListTree.h"
#include "TGuiBldDragManager.h"
#include "TMethod.h"
#include "TGMsgBox.h"
#include "TGIcon.h"
#include "TGFrame.h"
#include "TGSplitter.h"
#include "TGTableLayout.h"

ClassImp(TGuiBldEditor)


////////////////////////////////////////////////////////////////////////////////
class TGuiBldBorderFrame : public TGVerticalFrame {

private:
   enum  EBldBorderFrameMode { 
      kBldBorderNone, kBldBorderSunken,
      kBldBorderPlain, kBldBorderRaised, 
      kBldBorderDouble };

private:
   TGuiBldEditor   *fEditor;
   TGFrame         *fSelected;
   TGButtonGroup   *fBtnGroup;
   TGColorSelect   *fBgndFrame;

public:
   TGuiBldBorderFrame(const TGWindow *p, TGuiBldEditor *editor);
   virtual ~TGuiBldBorderFrame() { }

   void  ChangeSelected(TGFrame*);
};

//______________________________________________________________________________
TGuiBldBorderFrame::TGuiBldBorderFrame(const TGWindow *p, TGuiBldEditor *editor) :
             TGVerticalFrame(p, 1, 1)
{
   // Constructor.

   fEditor = editor;
   fEditDisabled = 1;
   fBgndFrame = 0;

   SetCleanup(kDeepCleanup);

   fBtnGroup = new TGButtonGroup(this, "Border Mode");

   TGRadioButton *frame299 = new TGRadioButton(fBtnGroup," Sunken",kBldBorderSunken);
   frame299->SetToolTipText("Set a sunken border of the frame");
   TGRadioButton *frame302 = new TGRadioButton(fBtnGroup," None",kBldBorderPlain);
   frame302->SetToolTipText("Set no border of the frame");
   TGRadioButton *frame305 = new TGRadioButton(fBtnGroup," Raised",kBldBorderRaised);
   frame305->SetToolTipText("Set a raised border of the frame");
   frame305->SetState(kButtonDown);
   TGCheckButton *check = new TGCheckButton(fBtnGroup," Double",kBldBorderDouble);
   check->SetToolTipText("Set double border of the frame");
   //TQObject::Disconnect(check);

   fBtnGroup->SetRadioButtonExclusive(kTRUE);
   AddFrame(fBtnGroup, new TGLayoutHints(kLHintsCenterX | kLHintsTop));
   fBtnGroup->Connect("Pressed(Int_t)", "TGuiBldEditor", fEditor, "UpdateBorder(Int_t)");
   check->Connect("Pressed()", "TGuiBldEditor", fEditor, "UpdateBorder(=4)");
   check->Connect("Released()", "TGuiBldEditor", fEditor, "UpdateBorder(=5)");

   TGCompositeFrame *f = new TGGroupFrame(this, "Palette");
   TGHorizontalFrame *hf = new TGHorizontalFrame(f ,1, 1);
   fBgndFrame = new TGColorSelect(hf, 0, 1);
   fBgndFrame->SetEditDisabled();
   fBgndFrame->SetColor(GetDefaultFrameBackground());
   fBgndFrame->Connect("ColorSelected(Pixel_t)", "TGuiBldEditor", fEditor,
                       "UpdateBackground(Pixel_t)");
   hf->AddFrame(fBgndFrame, new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2));
   hf->AddFrame(new TGLabel(hf, "Backgrnd"), new TGLayoutHints(kLHintsTop | 
                kLHintsLeft, 2, 2, 2, 2));
   f->AddFrame(hf, new TGLayoutHints(kLHintsCenterX | kLHintsTop, 2, 2, 2, 2));
   AddFrame(f, new TGLayoutHints(kLHintsCenterX | kLHintsTop));
}

//______________________________________________________________________________
void TGuiBldBorderFrame::ChangeSelected(TGFrame *frame)
{
   // Perform actions when selected frame was changed.

   fSelected = frame;

   if (!frame) {
      return;
   }

   UInt_t opt = fSelected->GetOptions();

   fBtnGroup->SetButton(kBldBorderDouble, opt & kDoubleBorder);
   fBtnGroup->SetButton(kBldBorderSunken, opt & kSunkenFrame);
   fBtnGroup->SetButton(kBldBorderRaised, opt & kRaisedFrame);
   fBtnGroup->SetButton(kBldBorderPlain, !(opt & kRaisedFrame) && !(opt & kSunkenFrame));

   if (fBgndFrame) {
      TQObject::Disconnect(fBgndFrame);
      fBgndFrame->SetColor(fSelected->GetBackground());
      fBgndFrame->Connect("ColorSelected(Pixel_t)", "TGuiBldEditor", fEditor, "UpdateBackground(Pixel_t)");
   }
}

////////////////////////////////////////////////////////////////////////////////
//______________________________________________________________________________
TGuiBldEditor::TGuiBldEditor(const TGWindow *p) : TGVerticalFrame(p, 1, 1)
{
   // Constructor.

   TGHorizontalFrame *hf;
   TGVerticalFrame *vf;
   fSelected = 0;
   SetCleanup(kDeepCleanup);

   fNameFrame  = new TGuiBldNameFrame(this, this);
   AddFrame(fNameFrame,  new TGLayoutHints(kLHintsNormal | kLHintsExpandX,5,5,2,2));

   TGHSplitter *splitter = new TGHSplitter(this,100,5);
   AddFrame(splitter, new TGLayoutHints(kLHintsTop | kLHintsExpandX,0,0,5,5));
   splitter->SetFrame(fNameFrame, kTRUE);

   //------------frame with layout switch
   hf = new TGHorizontalFrame(this);
   hf->AddFrame(new TGLabel(hf, "Composite Frame Layout"), 
                new TGLayoutHints(kLHintsLeft | kLHintsTop, 2, 2, 2, 2));
   hf->AddFrame(new TGHorizontal3DLine(hf), new TGLayoutHints(kLHintsTop | 
                kLHintsExpandX, 2, 2, 2, 2));
   AddFrame(hf, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
   
   vf = new TGVerticalFrame(this);
   fLayoutLabel = new TGLabel(vf, "Automatic Layout Disabled");
   vf->AddFrame(fLayoutLabel, new TGLayoutHints(kLHintsCenterX | kLHintsTop,
                2, 2, 2, 2));
   
   fLayoutButton = new TGTextButton(vf,"    Enable layout    ");
   fLayoutButton->SetEnabled(kFALSE);
   vf->AddFrame(fLayoutButton, new TGLayoutHints(kLHintsCenterX | kLHintsTop,
                2, 2, 2, 2));

   AddFrame(vf, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));

   AddFrame(new TGHorizontal3DLine(this), new TGLayoutHints(kLHintsTop | 
            kLHintsExpandX, 2, 2, 2, 2));

   fLayoutButton->Connect("Clicked()", "TGuiBldEditor", this, "SwitchLayout()");
   fLayoutButton->SetToolTipText("If layout is on, all the frame \nelements get layouted automatically.");

   //-----------------------------

   fTab = new TGTab(this, 80, 40);
   AddFrame(fTab, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2));
   fTablay = fTab->AddTab("Layout");
   TGCompositeFrame *tabcont = fTab->AddTab("Style");
   fLayoutId = 1; // 2nd tab
   fTab->Connect("Selected(Int_t)", "TGuiBldEditor", this, "TabSelected(Int_t)");

   fHintsFrame = new TGuiBldHintsEditor(fTablay, this);
   fTablay->AddFrame(fHintsFrame, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,
                     2, 2, 2, 2));

   fGeomFrame = new TGuiBldGeometryFrame(fTablay, this);
   fTablay->AddFrame(fGeomFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX,
                     2, 2, 2, 2));

   //----------------Position X,Y boxes---------------

   fPositionFrame = new TGGroupFrame(fTablay, "Position");

   hf = new TGHorizontalFrame(fPositionFrame);

   vf = new TGVerticalFrame(hf);
   vf->SetLayoutManager(new TGTableLayout(vf, 2, 2));

   vf->AddFrame(new TGLabel(vf, " X "), new TGTableLayoutHints(0, 1, 0, 1,
                kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2));
   fXpos = new TGNumberEntry(vf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
   vf->AddFrame(fXpos, new TGTableLayoutHints(1, 2, 0, 1, kLHintsCenterY | 
                kLHintsLeft, 2, 2, 2, 2));

   vf->AddFrame(new TGLabel(vf, " Y "), new TGTableLayoutHints(0, 1, 1, 2,
                kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2));
   fYpos = new TGNumberEntry(vf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
   vf->AddFrame(fYpos, new TGTableLayoutHints(1, 2, 1, 2, kLHintsCenterY | 
                kLHintsLeft, 2, 2, 2, 2));

   hf->AddFrame(vf, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY));

   vf = new TGVerticalFrame(hf);
   vf->SetLayoutManager(new TGTableLayout(vf, 3, 3));

   TGTextButton *fTextButton6366 = new TGTextButton(vf, "^", -1, 
                TGButton::GetDefaultGC()(), 
                TGTextButton::GetDefaultFontStruct(),
                kRaisedFrame | kDoubleBorder | kFixedSize);
   fTextButton6366->Resize(20,20);
   vf->AddFrame(fTextButton6366, new TGTableLayoutHints(1, 2, 0, 1,
                kLHintsLeft | kLHintsTop, 1, 1, 1, 1));

   TGTextButton *fTextButton6367 = new TGTextButton(vf, "v", -1, 
                TGButton::GetDefaultGC()(), 
                TGTextButton::GetDefaultFontStruct(),
                kRaisedFrame | kDoubleBorder | kFixedSize);
   fTextButton6367->Resize(20,20);
   vf->AddFrame(fTextButton6367, new TGTableLayoutHints(1, 2, 2, 3,
                kLHintsLeft | kLHintsTop, 1, 1, 1, 1));

   TGTextButton *fTextButton6364 = new TGTextButton(vf, "<", -1, 
                TGButton::GetDefaultGC()(), 
                TGTextButton::GetDefaultFontStruct(),
                kRaisedFrame | kDoubleBorder | kFixedSize);
   fTextButton6364->Resize(20,20);
   vf->AddFrame(fTextButton6364, new TGTableLayoutHints(0, 1, 1, 2,
                kLHintsLeft | kLHintsTop, 1, 1, 1, 1));

   TGTextButton *fTextButton6365 = new TGTextButton(vf, ">", -1, 
                TGButton::GetDefaultGC()(), 
                TGTextButton::GetDefaultFontStruct(),
                kRaisedFrame | kDoubleBorder | kFixedSize);
   fTextButton6365->Resize(20,20);
   vf->AddFrame(fTextButton6365, new TGTableLayoutHints(2, 3, 1, 2,
                kLHintsLeft | kLHintsTop, 1, 1, 1, 1));

   hf->AddFrame(vf, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY));

   fPositionFrame->AddFrame(hf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
   
   fTablay->AddFrame(fPositionFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX));

   fXpos->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
   fYpos->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");

   fTextButton6364->Connect("Clicked()", "TGNumberEntry", fXpos, "IncreaseNumber(TGNumberFormat::EStepSize=0,-1)");
   fTextButton6364->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
   fTextButton6365->Connect("Clicked()", "TGNumberEntry", fXpos, "IncreaseNumber()");
   fTextButton6365->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
   fTextButton6366->Connect("Clicked()", "TGNumberEntry", fYpos, "IncreaseNumber(TGNumberFormat::EStepSize=0,-1)");
   fTextButton6366->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
   fTextButton6367->Connect("Clicked()", "TGNumberEntry", fYpos, "IncreaseNumber()");
   fTextButton6367->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");

   //----------------------------------------------------

   fBorderFrame = new TGuiBldBorderFrame(tabcont, this);
   tabcont->AddFrame(fBorderFrame, new TGLayoutHints(kLHintsExpandX, 2, 2, 2, 2));

   MapSubwindows();
   SetWindowName("Frame Property Editor");
   SetEditDisabled(1);

   fEmbedded = kFALSE;
}

//______________________________________________________________________________
TGuiBldEditor::~TGuiBldEditor()
{
   // Destructor.

}

//______________________________________________________________________________
void TGuiBldEditor::RemoveFrame(TGFrame *frame)
{
   // Remove a frame.

   fNameFrame->RemoveFrame(frame);
}

//______________________________________________________________________________
void TGuiBldEditor::TabSelected(Int_t id)
{
   // Handle  selected.

   if (id == fLayoutId) {
      //printf("%d\n", fSelected);
   }
}

//______________________________________________________________________________
void TGuiBldEditor::Hide()
{
   // Hide editor.

   UnmapWindow();
}

//______________________________________________________________________________
void TGuiBldEditor::ChangeSelected(TGFrame *frame)
{
   // Change selected frame.

   TGTabElement *tab = fTab->GetTabTab(fLayoutId);

   if (!frame) {
      fNameFrame->ChangeSelected(0);
      //fTab->SetTab(0);
      tab->SetEnabled(kFALSE);
      fClient->NeedRedraw(tab);
      return;
   }

   fSelected = frame;
   TGWindow *parent = (TGWindow*)fSelected->GetParent();

   fNameFrame->ChangeSelected(fSelected);

   Bool_t enable_layout = kFALSE;
   enable_layout |= parent && !(parent->GetEditDisabled() & kEditDisableLayout);
   enable_layout |= !(fSelected->GetEditDisabled() & kEditDisableLayout);
   enable_layout |= parent && (parent->InheritsFrom(TGCompositeFrame::Class()) &&
                     !((TGCompositeFrame*)parent)->IsLayoutBroken());
   enable_layout |= (fSelected->InheritsFrom(TGCompositeFrame::Class()) &&
                     !((TGCompositeFrame*)fSelected)->IsLayoutBroken());

   if (enable_layout) {
      fHintsFrame->ChangeSelected(fSelected);

      if (tab) {
         tab->SetEnabled(kTRUE);
         fClient->NeedRedraw(tab);
      }
   } else {
      fHintsFrame->ChangeSelected(0);

      if (tab) {
         fTab->SetTab(0);
         tab->SetEnabled(kFALSE);
         fClient->NeedRedraw(tab);
      }
   }

   if ((frame->InheritsFrom(TGHorizontalFrame::Class())) ||
       (frame->InheritsFrom(TGVerticalFrame::Class())) ||
       (frame->InheritsFrom(TGGroupFrame::Class())) ) {

      fLayoutButton->SetEnabled(kTRUE);
      if (fSelected->IsLayoutBroken()) {
         fLayoutButton->SetText("    Enable layout    ");
         fLayoutLabel->SetText("Automatic layout disabled");
         if (fTablay) {
            fTablay->ShowFrame(fGeomFrame);
            fTablay->ShowFrame(fPositionFrame);
            fTablay->HideFrame(fHintsFrame);
         }
      } else {
         fLayoutButton->SetText("    Disable layout    ");
         fLayoutLabel->SetText("Automatic layout enabled");
         if (fTablay) {
            fTablay->HideFrame(fGeomFrame);
            fTablay->HideFrame(fPositionFrame);
            fTablay->ShowFrame(fHintsFrame);
         }
      }
   }
   else {
      fLayoutButton->SetEnabled(kFALSE);
      TGFrame *parentf = (TGFrame*)frame->GetParent();
      if (parentf->IsLayoutBroken()) {
         fLayoutButton->SetText("    Enable layout    ");
         fLayoutLabel->SetText("Automatic layout disabled");
         fTablay->ShowFrame(fGeomFrame);
         fTablay->ShowFrame(fPositionFrame);
         fTablay->HideFrame(fHintsFrame);
      } else {
         fLayoutButton->SetText("    Disable layout    ");
         fLayoutLabel->SetText("Automatic layout enabled");
         fTablay->HideFrame(fGeomFrame);
         fTablay->HideFrame(fPositionFrame);
         fTablay->ShowFrame(fHintsFrame);
      }
   }

   fYpos->SetIntNumber(frame->GetY());
   fXpos->SetIntNumber(frame->GetX());

   if (fBorderFrame) fBorderFrame->ChangeSelected(fSelected);
   if (fGeomFrame) fGeomFrame->ChangeSelected(fSelected);

   Emit("ChangeSelected(TGFrame*)", (long)fSelected);

   MapRaised();
}

//______________________________________________________________________________
void TGuiBldEditor::UpdateSelected(TGFrame *frame)
{
   // Update selected frame.

   Emit("UpdateSelected(TGFrame*)", (long)frame);
}

//______________________________________________________________________________
void TGuiBldEditor::UpdateBorder(Int_t b)
{
   // Update border of selected frame.

   if (!fSelected) return;

   UInt_t opt = fSelected->GetOptions();

   switch (b) {
      case 1:
         opt &= ~kRaisedFrame;
         opt |= kSunkenFrame;
         break;
      case 2:
         opt &= ~kSunkenFrame;
         opt &= ~kRaisedFrame;
         break;
      case 3:
         opt &= ~kSunkenFrame;
         opt |= kRaisedFrame;
         break;
      case 4:
         opt |= kDoubleBorder;
         break;
      case 5:
         opt &= ~kDoubleBorder;
         break;
      default:
         return;
   }
   fSelected->ChangeOptions(opt);
   fClient->NeedRedraw(fSelected, kTRUE);
}

//______________________________________________________________________________
void TGuiBldEditor::UpdateBackground(Pixel_t col)
{
   // Update background.

   if (!fSelected) return;

   fSelected->SetBackgroundColor(col);
   fClient->NeedRedraw(fSelected, kTRUE);
}

//______________________________________________________________________________
void TGuiBldEditor::UpdateForeground(Pixel_t col)
{
   // Update foreground.

   if (!fSelected) return;

   fSelected->SetForegroundColor(col);
   fClient->NeedRedraw(fSelected, kTRUE);
}

//______________________________________________________________________________
void TGuiBldEditor::Reset()
{
   // Reset the editor.

   fSelected = 0;
   fNameFrame->Reset();
   TGTabElement *tab = fTab->GetTabTab(fLayoutId);
   fTab->SetTab(0);
   tab->SetEnabled(kFALSE);
}

//______________________________________________________________________________
void TGuiBldEditor::SwitchLayout()
{
   // Popup dialog to set layout of editted frame off. If layout is on, all
   // the elements in the frame get layouted automatically.

   if (!fSelected) {
      fLayoutButton->SetText("    Enable layout    ");
      fLayoutButton->SetEnabled(kFALSE);
      fLayoutLabel->SetText("Automatic layout disabled");
      if (fTablay) {
         fTablay->ShowFrame(fGeomFrame);
         fTablay->ShowFrame(fPositionFrame);
         fTablay->HideFrame(fHintsFrame);
      }
      return;
   }

   TRootGuiBuilder *builder = (TRootGuiBuilder*)TRootGuiBuilder::Instance();
   TGFrame *frame = fSelected;
   TGCompositeFrame *cf = fNameFrame->GetMdi(frame);
   if (cf == 0)
      return;
   if (frame->IsLayoutBroken()) {
      Int_t retval;
      builder->GetManager()->SetEditable(kFALSE);
      new TGMsgBox(gClient->GetDefaultRoot(), builder, "Layout change",
                   "Enabling layout will automatically align and resize all the icons. \n Do you really want to layout them?",
                   kMBIconExclamation, kMBOk | kMBCancel, &retval);

      cf->SetEditable(kTRUE);
      // hack against selecting the message box itself
      builder->GetManager()->SelectFrame(frame);
      frame->SetEditable(kTRUE);

      if (retval == kMBOk) {
         frame->SetLayoutBroken(kFALSE);
         frame->Layout();
         fLayoutButton->SetText("    Disable layout    ");
         fLayoutLabel->SetText("Automatic layout enabled");
         if (fTablay) {
            fTablay->HideFrame(fGeomFrame);
            fTablay->HideFrame(fPositionFrame);
            fTablay->ShowFrame(fHintsFrame);
            fTablay->Resize(fHintsFrame->GetWidth(),fHintsFrame->GetHeight());
         }
      }
   } else {
      //set layout off - without dialog, because nothing "bad" can happen
      frame->SetLayoutBroken(kTRUE);
      fLayoutButton->SetText("    Enable layout    ");
      fLayoutLabel->SetText("Automatic layout disabled");
      if (fTablay) {
         fTablay->ShowFrame(fGeomFrame);
         fTablay->ShowFrame(fPositionFrame);
         fTablay->HideFrame(fHintsFrame);
      }
   }
   fClient->NeedRedraw(frame, kTRUE);
   if (fTablay) fClient->NeedRedraw(fTablay, kTRUE);
}



 TGuiBldEditor.cxx:1
 TGuiBldEditor.cxx:2
 TGuiBldEditor.cxx:3
 TGuiBldEditor.cxx:4
 TGuiBldEditor.cxx:5
 TGuiBldEditor.cxx:6
 TGuiBldEditor.cxx:7
 TGuiBldEditor.cxx:8
 TGuiBldEditor.cxx:9
 TGuiBldEditor.cxx:10
 TGuiBldEditor.cxx:11
 TGuiBldEditor.cxx:12
 TGuiBldEditor.cxx:13
 TGuiBldEditor.cxx:14
 TGuiBldEditor.cxx:15
 TGuiBldEditor.cxx:16
 TGuiBldEditor.cxx:17
 TGuiBldEditor.cxx:18
 TGuiBldEditor.cxx:19
 TGuiBldEditor.cxx:20
 TGuiBldEditor.cxx:21
 TGuiBldEditor.cxx:22
 TGuiBldEditor.cxx:23
 TGuiBldEditor.cxx:24
 TGuiBldEditor.cxx:25
 TGuiBldEditor.cxx:26
 TGuiBldEditor.cxx:27
 TGuiBldEditor.cxx:28
 TGuiBldEditor.cxx:29
 TGuiBldEditor.cxx:30
 TGuiBldEditor.cxx:31
 TGuiBldEditor.cxx:32
 TGuiBldEditor.cxx:33
 TGuiBldEditor.cxx:34
 TGuiBldEditor.cxx:35
 TGuiBldEditor.cxx:36
 TGuiBldEditor.cxx:37
 TGuiBldEditor.cxx:38
 TGuiBldEditor.cxx:39
 TGuiBldEditor.cxx:40
 TGuiBldEditor.cxx:41
 TGuiBldEditor.cxx:42
 TGuiBldEditor.cxx:43
 TGuiBldEditor.cxx:44
 TGuiBldEditor.cxx:45
 TGuiBldEditor.cxx:46
 TGuiBldEditor.cxx:47
 TGuiBldEditor.cxx:48
 TGuiBldEditor.cxx:49
 TGuiBldEditor.cxx:50
 TGuiBldEditor.cxx:51
 TGuiBldEditor.cxx:52
 TGuiBldEditor.cxx:53
 TGuiBldEditor.cxx:54
 TGuiBldEditor.cxx:55
 TGuiBldEditor.cxx:56
 TGuiBldEditor.cxx:57
 TGuiBldEditor.cxx:58
 TGuiBldEditor.cxx:59
 TGuiBldEditor.cxx:60
 TGuiBldEditor.cxx:61
 TGuiBldEditor.cxx:62
 TGuiBldEditor.cxx:63
 TGuiBldEditor.cxx:64
 TGuiBldEditor.cxx:65
 TGuiBldEditor.cxx:66
 TGuiBldEditor.cxx:67
 TGuiBldEditor.cxx:68
 TGuiBldEditor.cxx:69
 TGuiBldEditor.cxx:70
 TGuiBldEditor.cxx:71
 TGuiBldEditor.cxx:72
 TGuiBldEditor.cxx:73
 TGuiBldEditor.cxx:74
 TGuiBldEditor.cxx:75
 TGuiBldEditor.cxx:76
 TGuiBldEditor.cxx:77
 TGuiBldEditor.cxx:78
 TGuiBldEditor.cxx:79
 TGuiBldEditor.cxx:80
 TGuiBldEditor.cxx:81
 TGuiBldEditor.cxx:82
 TGuiBldEditor.cxx:83
 TGuiBldEditor.cxx:84
 TGuiBldEditor.cxx:85
 TGuiBldEditor.cxx:86
 TGuiBldEditor.cxx:87
 TGuiBldEditor.cxx:88
 TGuiBldEditor.cxx:89
 TGuiBldEditor.cxx:90
 TGuiBldEditor.cxx:91
 TGuiBldEditor.cxx:92
 TGuiBldEditor.cxx:93
 TGuiBldEditor.cxx:94
 TGuiBldEditor.cxx:95
 TGuiBldEditor.cxx:96
 TGuiBldEditor.cxx:97
 TGuiBldEditor.cxx:98
 TGuiBldEditor.cxx:99
 TGuiBldEditor.cxx:100
 TGuiBldEditor.cxx:101
 TGuiBldEditor.cxx:102
 TGuiBldEditor.cxx:103
 TGuiBldEditor.cxx:104
 TGuiBldEditor.cxx:105
 TGuiBldEditor.cxx:106
 TGuiBldEditor.cxx:107
 TGuiBldEditor.cxx:108
 TGuiBldEditor.cxx:109
 TGuiBldEditor.cxx:110
 TGuiBldEditor.cxx:111
 TGuiBldEditor.cxx:112
 TGuiBldEditor.cxx:113
 TGuiBldEditor.cxx:114
 TGuiBldEditor.cxx:115
 TGuiBldEditor.cxx:116
 TGuiBldEditor.cxx:117
 TGuiBldEditor.cxx:118
 TGuiBldEditor.cxx:119
 TGuiBldEditor.cxx:120
 TGuiBldEditor.cxx:121
 TGuiBldEditor.cxx:122
 TGuiBldEditor.cxx:123
 TGuiBldEditor.cxx:124
 TGuiBldEditor.cxx:125
 TGuiBldEditor.cxx:126
 TGuiBldEditor.cxx:127
 TGuiBldEditor.cxx:128
 TGuiBldEditor.cxx:129
 TGuiBldEditor.cxx:130
 TGuiBldEditor.cxx:131
 TGuiBldEditor.cxx:132
 TGuiBldEditor.cxx:133
 TGuiBldEditor.cxx:134
 TGuiBldEditor.cxx:135
 TGuiBldEditor.cxx:136
 TGuiBldEditor.cxx:137
 TGuiBldEditor.cxx:138
 TGuiBldEditor.cxx:139
 TGuiBldEditor.cxx:140
 TGuiBldEditor.cxx:141
 TGuiBldEditor.cxx:142
 TGuiBldEditor.cxx:143
 TGuiBldEditor.cxx:144
 TGuiBldEditor.cxx:145
 TGuiBldEditor.cxx:146
 TGuiBldEditor.cxx:147
 TGuiBldEditor.cxx:148
 TGuiBldEditor.cxx:149
 TGuiBldEditor.cxx:150
 TGuiBldEditor.cxx:151
 TGuiBldEditor.cxx:152
 TGuiBldEditor.cxx:153
 TGuiBldEditor.cxx:154
 TGuiBldEditor.cxx:155
 TGuiBldEditor.cxx:156
 TGuiBldEditor.cxx:157
 TGuiBldEditor.cxx:158
 TGuiBldEditor.cxx:159
 TGuiBldEditor.cxx:160
 TGuiBldEditor.cxx:161
 TGuiBldEditor.cxx:162
 TGuiBldEditor.cxx:163
 TGuiBldEditor.cxx:164
 TGuiBldEditor.cxx:165
 TGuiBldEditor.cxx:166
 TGuiBldEditor.cxx:167
 TGuiBldEditor.cxx:168
 TGuiBldEditor.cxx:169
 TGuiBldEditor.cxx:170
 TGuiBldEditor.cxx:171
 TGuiBldEditor.cxx:172
 TGuiBldEditor.cxx:173
 TGuiBldEditor.cxx:174
 TGuiBldEditor.cxx:175
 TGuiBldEditor.cxx:176
 TGuiBldEditor.cxx:177
 TGuiBldEditor.cxx:178
 TGuiBldEditor.cxx:179
 TGuiBldEditor.cxx:180
 TGuiBldEditor.cxx:181
 TGuiBldEditor.cxx:182
 TGuiBldEditor.cxx:183
 TGuiBldEditor.cxx:184
 TGuiBldEditor.cxx:185
 TGuiBldEditor.cxx:186
 TGuiBldEditor.cxx:187
 TGuiBldEditor.cxx:188
 TGuiBldEditor.cxx:189
 TGuiBldEditor.cxx:190
 TGuiBldEditor.cxx:191
 TGuiBldEditor.cxx:192
 TGuiBldEditor.cxx:193
 TGuiBldEditor.cxx:194
 TGuiBldEditor.cxx:195
 TGuiBldEditor.cxx:196
 TGuiBldEditor.cxx:197
 TGuiBldEditor.cxx:198
 TGuiBldEditor.cxx:199
 TGuiBldEditor.cxx:200
 TGuiBldEditor.cxx:201
 TGuiBldEditor.cxx:202
 TGuiBldEditor.cxx:203
 TGuiBldEditor.cxx:204
 TGuiBldEditor.cxx:205
 TGuiBldEditor.cxx:206
 TGuiBldEditor.cxx:207
 TGuiBldEditor.cxx:208
 TGuiBldEditor.cxx:209
 TGuiBldEditor.cxx:210
 TGuiBldEditor.cxx:211
 TGuiBldEditor.cxx:212
 TGuiBldEditor.cxx:213
 TGuiBldEditor.cxx:214
 TGuiBldEditor.cxx:215
 TGuiBldEditor.cxx:216
 TGuiBldEditor.cxx:217
 TGuiBldEditor.cxx:218
 TGuiBldEditor.cxx:219
 TGuiBldEditor.cxx:220
 TGuiBldEditor.cxx:221
 TGuiBldEditor.cxx:222
 TGuiBldEditor.cxx:223
 TGuiBldEditor.cxx:224
 TGuiBldEditor.cxx:225
 TGuiBldEditor.cxx:226
 TGuiBldEditor.cxx:227
 TGuiBldEditor.cxx:228
 TGuiBldEditor.cxx:229
 TGuiBldEditor.cxx:230
 TGuiBldEditor.cxx:231
 TGuiBldEditor.cxx:232
 TGuiBldEditor.cxx:233
 TGuiBldEditor.cxx:234
 TGuiBldEditor.cxx:235
 TGuiBldEditor.cxx:236
 TGuiBldEditor.cxx:237
 TGuiBldEditor.cxx:238
 TGuiBldEditor.cxx:239
 TGuiBldEditor.cxx:240
 TGuiBldEditor.cxx:241
 TGuiBldEditor.cxx:242
 TGuiBldEditor.cxx:243
 TGuiBldEditor.cxx:244
 TGuiBldEditor.cxx:245
 TGuiBldEditor.cxx:246
 TGuiBldEditor.cxx:247
 TGuiBldEditor.cxx:248
 TGuiBldEditor.cxx:249
 TGuiBldEditor.cxx:250
 TGuiBldEditor.cxx:251
 TGuiBldEditor.cxx:252
 TGuiBldEditor.cxx:253
 TGuiBldEditor.cxx:254
 TGuiBldEditor.cxx:255
 TGuiBldEditor.cxx:256
 TGuiBldEditor.cxx:257
 TGuiBldEditor.cxx:258
 TGuiBldEditor.cxx:259
 TGuiBldEditor.cxx:260
 TGuiBldEditor.cxx:261
 TGuiBldEditor.cxx:262
 TGuiBldEditor.cxx:263
 TGuiBldEditor.cxx:264
 TGuiBldEditor.cxx:265
 TGuiBldEditor.cxx:266
 TGuiBldEditor.cxx:267
 TGuiBldEditor.cxx:268
 TGuiBldEditor.cxx:269
 TGuiBldEditor.cxx:270
 TGuiBldEditor.cxx:271
 TGuiBldEditor.cxx:272
 TGuiBldEditor.cxx:273
 TGuiBldEditor.cxx:274
 TGuiBldEditor.cxx:275
 TGuiBldEditor.cxx:276
 TGuiBldEditor.cxx:277
 TGuiBldEditor.cxx:278
 TGuiBldEditor.cxx:279
 TGuiBldEditor.cxx:280
 TGuiBldEditor.cxx:281
 TGuiBldEditor.cxx:282
 TGuiBldEditor.cxx:283
 TGuiBldEditor.cxx:284
 TGuiBldEditor.cxx:285
 TGuiBldEditor.cxx:286
 TGuiBldEditor.cxx:287
 TGuiBldEditor.cxx:288
 TGuiBldEditor.cxx:289
 TGuiBldEditor.cxx:290
 TGuiBldEditor.cxx:291
 TGuiBldEditor.cxx:292
 TGuiBldEditor.cxx:293
 TGuiBldEditor.cxx:294
 TGuiBldEditor.cxx:295
 TGuiBldEditor.cxx:296
 TGuiBldEditor.cxx:297
 TGuiBldEditor.cxx:298
 TGuiBldEditor.cxx:299
 TGuiBldEditor.cxx:300
 TGuiBldEditor.cxx:301
 TGuiBldEditor.cxx:302
 TGuiBldEditor.cxx:303
 TGuiBldEditor.cxx:304
 TGuiBldEditor.cxx:305
 TGuiBldEditor.cxx:306
 TGuiBldEditor.cxx:307
 TGuiBldEditor.cxx:308
 TGuiBldEditor.cxx:309
 TGuiBldEditor.cxx:310
 TGuiBldEditor.cxx:311
 TGuiBldEditor.cxx:312
 TGuiBldEditor.cxx:313
 TGuiBldEditor.cxx:314
 TGuiBldEditor.cxx:315
 TGuiBldEditor.cxx:316
 TGuiBldEditor.cxx:317
 TGuiBldEditor.cxx:318
 TGuiBldEditor.cxx:319
 TGuiBldEditor.cxx:320
 TGuiBldEditor.cxx:321
 TGuiBldEditor.cxx:322
 TGuiBldEditor.cxx:323
 TGuiBldEditor.cxx:324
 TGuiBldEditor.cxx:325
 TGuiBldEditor.cxx:326
 TGuiBldEditor.cxx:327
 TGuiBldEditor.cxx:328
 TGuiBldEditor.cxx:329
 TGuiBldEditor.cxx:330
 TGuiBldEditor.cxx:331
 TGuiBldEditor.cxx:332
 TGuiBldEditor.cxx:333
 TGuiBldEditor.cxx:334
 TGuiBldEditor.cxx:335
 TGuiBldEditor.cxx:336
 TGuiBldEditor.cxx:337
 TGuiBldEditor.cxx:338
 TGuiBldEditor.cxx:339
 TGuiBldEditor.cxx:340
 TGuiBldEditor.cxx:341
 TGuiBldEditor.cxx:342
 TGuiBldEditor.cxx:343
 TGuiBldEditor.cxx:344
 TGuiBldEditor.cxx:345
 TGuiBldEditor.cxx:346
 TGuiBldEditor.cxx:347
 TGuiBldEditor.cxx:348
 TGuiBldEditor.cxx:349
 TGuiBldEditor.cxx:350
 TGuiBldEditor.cxx:351
 TGuiBldEditor.cxx:352
 TGuiBldEditor.cxx:353
 TGuiBldEditor.cxx:354
 TGuiBldEditor.cxx:355
 TGuiBldEditor.cxx:356
 TGuiBldEditor.cxx:357
 TGuiBldEditor.cxx:358
 TGuiBldEditor.cxx:359
 TGuiBldEditor.cxx:360
 TGuiBldEditor.cxx:361
 TGuiBldEditor.cxx:362
 TGuiBldEditor.cxx:363
 TGuiBldEditor.cxx:364
 TGuiBldEditor.cxx:365
 TGuiBldEditor.cxx:366
 TGuiBldEditor.cxx:367
 TGuiBldEditor.cxx:368
 TGuiBldEditor.cxx:369
 TGuiBldEditor.cxx:370
 TGuiBldEditor.cxx:371
 TGuiBldEditor.cxx:372
 TGuiBldEditor.cxx:373
 TGuiBldEditor.cxx:374
 TGuiBldEditor.cxx:375
 TGuiBldEditor.cxx:376
 TGuiBldEditor.cxx:377
 TGuiBldEditor.cxx:378
 TGuiBldEditor.cxx:379
 TGuiBldEditor.cxx:380
 TGuiBldEditor.cxx:381
 TGuiBldEditor.cxx:382
 TGuiBldEditor.cxx:383
 TGuiBldEditor.cxx:384
 TGuiBldEditor.cxx:385
 TGuiBldEditor.cxx:386
 TGuiBldEditor.cxx:387
 TGuiBldEditor.cxx:388
 TGuiBldEditor.cxx:389
 TGuiBldEditor.cxx:390
 TGuiBldEditor.cxx:391
 TGuiBldEditor.cxx:392
 TGuiBldEditor.cxx:393
 TGuiBldEditor.cxx:394
 TGuiBldEditor.cxx:395
 TGuiBldEditor.cxx:396
 TGuiBldEditor.cxx:397
 TGuiBldEditor.cxx:398
 TGuiBldEditor.cxx:399
 TGuiBldEditor.cxx:400
 TGuiBldEditor.cxx:401
 TGuiBldEditor.cxx:402
 TGuiBldEditor.cxx:403
 TGuiBldEditor.cxx:404
 TGuiBldEditor.cxx:405
 TGuiBldEditor.cxx:406
 TGuiBldEditor.cxx:407
 TGuiBldEditor.cxx:408
 TGuiBldEditor.cxx:409
 TGuiBldEditor.cxx:410
 TGuiBldEditor.cxx:411
 TGuiBldEditor.cxx:412
 TGuiBldEditor.cxx:413
 TGuiBldEditor.cxx:414
 TGuiBldEditor.cxx:415
 TGuiBldEditor.cxx:416
 TGuiBldEditor.cxx:417
 TGuiBldEditor.cxx:418
 TGuiBldEditor.cxx:419
 TGuiBldEditor.cxx:420
 TGuiBldEditor.cxx:421
 TGuiBldEditor.cxx:422
 TGuiBldEditor.cxx:423
 TGuiBldEditor.cxx:424
 TGuiBldEditor.cxx:425
 TGuiBldEditor.cxx:426
 TGuiBldEditor.cxx:427
 TGuiBldEditor.cxx:428
 TGuiBldEditor.cxx:429
 TGuiBldEditor.cxx:430
 TGuiBldEditor.cxx:431
 TGuiBldEditor.cxx:432
 TGuiBldEditor.cxx:433
 TGuiBldEditor.cxx:434
 TGuiBldEditor.cxx:435
 TGuiBldEditor.cxx:436
 TGuiBldEditor.cxx:437
 TGuiBldEditor.cxx:438
 TGuiBldEditor.cxx:439
 TGuiBldEditor.cxx:440
 TGuiBldEditor.cxx:441
 TGuiBldEditor.cxx:442
 TGuiBldEditor.cxx:443
 TGuiBldEditor.cxx:444
 TGuiBldEditor.cxx:445
 TGuiBldEditor.cxx:446
 TGuiBldEditor.cxx:447
 TGuiBldEditor.cxx:448
 TGuiBldEditor.cxx:449
 TGuiBldEditor.cxx:450
 TGuiBldEditor.cxx:451
 TGuiBldEditor.cxx:452
 TGuiBldEditor.cxx:453
 TGuiBldEditor.cxx:454
 TGuiBldEditor.cxx:455
 TGuiBldEditor.cxx:456
 TGuiBldEditor.cxx:457
 TGuiBldEditor.cxx:458
 TGuiBldEditor.cxx:459
 TGuiBldEditor.cxx:460
 TGuiBldEditor.cxx:461
 TGuiBldEditor.cxx:462
 TGuiBldEditor.cxx:463
 TGuiBldEditor.cxx:464
 TGuiBldEditor.cxx:465
 TGuiBldEditor.cxx:466
 TGuiBldEditor.cxx:467
 TGuiBldEditor.cxx:468
 TGuiBldEditor.cxx:469
 TGuiBldEditor.cxx:470
 TGuiBldEditor.cxx:471
 TGuiBldEditor.cxx:472
 TGuiBldEditor.cxx:473
 TGuiBldEditor.cxx:474
 TGuiBldEditor.cxx:475
 TGuiBldEditor.cxx:476
 TGuiBldEditor.cxx:477
 TGuiBldEditor.cxx:478
 TGuiBldEditor.cxx:479
 TGuiBldEditor.cxx:480
 TGuiBldEditor.cxx:481
 TGuiBldEditor.cxx:482
 TGuiBldEditor.cxx:483
 TGuiBldEditor.cxx:484
 TGuiBldEditor.cxx:485
 TGuiBldEditor.cxx:486
 TGuiBldEditor.cxx:487
 TGuiBldEditor.cxx:488
 TGuiBldEditor.cxx:489
 TGuiBldEditor.cxx:490
 TGuiBldEditor.cxx:491
 TGuiBldEditor.cxx:492
 TGuiBldEditor.cxx:493
 TGuiBldEditor.cxx:494
 TGuiBldEditor.cxx:495
 TGuiBldEditor.cxx:496
 TGuiBldEditor.cxx:497
 TGuiBldEditor.cxx:498
 TGuiBldEditor.cxx:499
 TGuiBldEditor.cxx:500
 TGuiBldEditor.cxx:501
 TGuiBldEditor.cxx:502
 TGuiBldEditor.cxx:503
 TGuiBldEditor.cxx:504
 TGuiBldEditor.cxx:505
 TGuiBldEditor.cxx:506
 TGuiBldEditor.cxx:507
 TGuiBldEditor.cxx:508
 TGuiBldEditor.cxx:509
 TGuiBldEditor.cxx:510
 TGuiBldEditor.cxx:511
 TGuiBldEditor.cxx:512
 TGuiBldEditor.cxx:513
 TGuiBldEditor.cxx:514
 TGuiBldEditor.cxx:515
 TGuiBldEditor.cxx:516
 TGuiBldEditor.cxx:517
 TGuiBldEditor.cxx:518
 TGuiBldEditor.cxx:519
 TGuiBldEditor.cxx:520
 TGuiBldEditor.cxx:521
 TGuiBldEditor.cxx:522
 TGuiBldEditor.cxx:523
 TGuiBldEditor.cxx:524
 TGuiBldEditor.cxx:525
 TGuiBldEditor.cxx:526
 TGuiBldEditor.cxx:527
 TGuiBldEditor.cxx:528
 TGuiBldEditor.cxx:529
 TGuiBldEditor.cxx:530
 TGuiBldEditor.cxx:531
 TGuiBldEditor.cxx:532
 TGuiBldEditor.cxx:533
 TGuiBldEditor.cxx:534
 TGuiBldEditor.cxx:535
 TGuiBldEditor.cxx:536
 TGuiBldEditor.cxx:537
 TGuiBldEditor.cxx:538
 TGuiBldEditor.cxx:539
 TGuiBldEditor.cxx:540
 TGuiBldEditor.cxx:541
 TGuiBldEditor.cxx:542
 TGuiBldEditor.cxx:543
 TGuiBldEditor.cxx:544
 TGuiBldEditor.cxx:545
 TGuiBldEditor.cxx:546
 TGuiBldEditor.cxx:547
 TGuiBldEditor.cxx:548
 TGuiBldEditor.cxx:549
 TGuiBldEditor.cxx:550
 TGuiBldEditor.cxx:551
 TGuiBldEditor.cxx:552
 TGuiBldEditor.cxx:553
 TGuiBldEditor.cxx:554
 TGuiBldEditor.cxx:555