// @(#)root/gl:$Id$
// Author: Bertrand Bellenot 2009

/*************************************************************************
 * Copyright (C) 1995-2009, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/
#include <string>
#include <map>

#include "TGDoubleSlider.h"
#include "TGColorSelect.h"
#include "TGNumberEntry.h"
#include "TVirtualPad.h"
#include "TGListBox.h"
#include "TGSlider.h"
#include "TGButton.h"
#include "TGLabel.h"
#include "TString.h"
#include "TColor.h"
#include "TAxis.h"

#include "TGL5DDataSetEditor.h"
#include "TGL5DPainter.h"
#include "TGLUtil.h"
#include "TGL5D.h"

//______________________________________________________________________________
//
// GUI editor for OpenGL 5D Painter.
// Exception safety and ROOT's GUI are two
// mutually exclusive things. So,
// only ROOT's GUI here.
namespace {

typedef TGL5DPainter::SurfIter_t    SurfIter_t;
typedef std::map<Int_t, SurfIter_t> IterMap_t;
typedef IterMap_t::iterator         IterMapIter_t;

}

//
//Pimpl.
//
class TGL5DDataSetEditor::TGL5DEditorPrivate {
public:
   IterMap_t fIterators;
   Bool_t IsValid(Int_t index)const
   {
      return fIterators.find(index) != fIterators.end();
   }
};

ClassImp(TGL5DDataSetEditor);

//______________________________________________________________________________
TGL5DDataSetEditor::TGL5DDataSetEditor(const TGWindow *p,  Int_t width, Int_t height,
                                       UInt_t options, Pixel_t back) :
   TGedFrame(p,  width, height, options | kVerticalFrame, back),
   //"Grid" tab.
   fNCellsXEntry(0),
   fNCellsYEntry(0),
   fNCellsZEntry(0),
   fXRangeSlider(0),
   fXRangeSliderMin(0),
   fXRangeSliderMax(0),
   fYRangeSlider(0),
   fYRangeSliderMin(0),
   fYRangeSliderMax(0),
   fZRangeSlider(0),
   fZRangeSliderMin(0),
   fZRangeSliderMax(0),
   fCancelGridBtn(0),
   fOkGridBtn(0),
   //"Surfaces" tab.
   fV4MinEntry(0),
   fV4MaxEntry(0),
   fHighlightCheck(0),
   fIsoList(0),
   fVisibleCheck(0),
   fShowCloud(0),
   fSurfColorSelect(0),
   fSurfAlphaSlider(0),
   fSurfRemoveBtn(0),
   fNewIsoEntry(0),
   fAddNewIsoBtn(0),
   //"Style" tab's widgets.
   fShowBoxCut(),
   fNumberOfPlanes(0),
   fAlpha(0),
   fLogScale(0),
   fSlideRange(0),
   fApplyAlpha(0),
   fApplyPlanes(0),
   //Model.
   fDataSet(0),
   fPainter(0),
   fHidden(0),
   fSelectedSurface(-1)
{
   //Constructor.
   CreateStyleTab();
   CreateGridTab();
   CreateIsoTab();

   fHidden = new TGL5DEditorPrivate;
}

//______________________________________________________________________________

TGL5DDataSetEditor::~TGL5DDataSetEditor()
{
   //Destructor.
   delete fHidden;
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ConnectSignals2Slots()
{
   //Connect signals to slots.

   //Controls from "Style" tab.
   fShowBoxCut->Connect("Toggled(Bool_t)", "TGL5DDataSetEditor", this, "BoxCutToggled()");
   fAlpha->Connect("ValueChanged(Long_t)", "TGL5DDataSetEditor", this, "AlphaChanged()");
   fAlpha->Connect("ValueSet(Long_t)", "TGL5DDataSetEditor", this, "AlphaChanged()");
   fNumberOfPlanes->Connect("ValueChanged(Long_t)", "TGL5DDataSetEditor", this, "NContoursChanged()");
   fNumberOfPlanes->Connect("ValueSet(Long_t)", "TGL5DDataSetEditor", this, "NContoursChanged()");
   fApplyPlanes->Connect("Clicked()", "TGL5DDataSetEditor", this, "ApplyPlanes()");
   fApplyAlpha->Connect("Clicked()", "TGL5DDataSetEditor", this, "ApplyAlpha()");

   //Controls from "Grid" tab.
   fNCellsXEntry->Connect("ValueSet(Long_t)", "TGL5DDataSetEditor", this, "GridParametersChanged()");
   fNCellsXEntry->Connect("ValueChanged(Long_t)", "TGL5DDataSetEditor", this, "GridParametersChanged()");

   fNCellsYEntry->Connect("ValueSet(Long_t)", "TGL5DDataSetEditor", this, "GridParametersChanged()");
   fNCellsZEntry->Connect("ValueSet(Long_t)", "TGL5DDataSetEditor", this, "GridParametersChanged()");

   fXRangeSlider->Connect("PositionChanged()", "TGL5DDataSetEditor", this, "XSliderChanged()");
   fXRangeSliderMin->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "XSliderSetMin()");
   fXRangeSliderMax->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "XSliderSetMax()");

   fYRangeSlider->Connect("PositionChanged()", "TGL5DDataSetEditor", this, "YSliderChanged()");
   fYRangeSliderMin->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "YSliderSetMin()");
   fYRangeSliderMax->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "YSliderSetMax()");

   fZRangeSlider->Connect("PositionChanged()", "TGL5DDataSetEditor", this, "ZSliderChanged()");
   fZRangeSliderMin->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "ZSliderSetMin()");
   fZRangeSliderMax->Connect("ReturnPressed()", "TGL5DDataSetEditor", this, "ZSliderSetMax()");

   fCancelGridBtn->Connect("Pressed()", "TGL5DDataSetEditor", this, "RollbackGridParameters()");
   fOkGridBtn->Connect("Pressed()", "TGL5DDataSetEditor", this, "ApplyGridParameters()");

   //Controls from "Surfaces" tab.
   fIsoList->Connect("Selected(Int_t)", "TGL5DDataSetEditor", this, "SurfaceSelected(Int_t)");
   fIsoList->GetContainer()->RemoveInput(kKeyPressMask);

   fHighlightCheck->Connect("Clicked()", "TGL5DDataSetEditor", this, "HighlightClicked()");
   fVisibleCheck->Connect("Clicked()", "TGL5DDataSetEditor", this, "VisibleClicked()");
   fSurfColorSelect->Connect("ColorSelected(Pixel_t)", "TGL5DDataSetEditor", this, "ColorChanged(Pixel_t)");
   fSurfAlphaSlider->Connect("PositionChanged(Int_t)", "TGL5DDataSetEditor", this, "AlphaChanged(Int_t)");
   fSurfRemoveBtn->Connect("Pressed()", "TGL5DDataSetEditor", this, "RemoveSurface()");

   fAddNewIsoBtn->Connect("Pressed()", "TGL5DDataSetEditor", this, "AddNewSurface()");

   fInit = kFALSE;
}


namespace
{

//Auxilary functions.
//______________________________________________________________________________
void make_slider_range_entries(TGCompositeFrame *parent, TGNumberEntryField *&minEntry,
                               const TString &minToolTip, TGNumberEntryField *&maxEntry,
                               const TString &maxToolTip)
{
   TGCompositeFrame *frame = new TGCompositeFrame(parent, 80, 20, kHorizontalFrame);

   minEntry = new TGNumberEntryField(frame, -1, 0., TGNumberFormat::kNESRealThree,
                                     TGNumberFormat::kNEAAnyNumber);
   minEntry->SetToolTipText(minToolTip.Data());
   minEntry->Resize(57, 20);
   frame->AddFrame(minEntry, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));

   maxEntry = new TGNumberEntryField(frame, -1, 0., TGNumberFormat::kNESRealThree,
                                     TGNumberFormat::kNEAAnyNumber);
   maxEntry->SetToolTipText(maxToolTip.Data());
   maxEntry->Resize(57, 20);
   frame->AddFrame(maxEntry, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   parent->AddFrame(frame, new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
}

//______________________________________________________________________________
TGHorizontalFrame *make_labeled_hframe(TGCompositeFrame *p, const char *text)
{
   TGHorizontalFrame *frame = new TGHorizontalFrame(p);
   TGLabel *label = new TGLabel(frame, text);
   frame->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsBottom, 0, 0, 0));
   p->AddFrame(frame, new TGLayoutHints(kLHintsLeft, 0, 0, 1, 0));

   return frame;
}

//______________________________________________________________________________
TGDoubleHSlider *make_double_hslider(TGCompositeFrame *parent, const char *labelName)
{
   TGCompositeFrame *sliderFrame = new TGCompositeFrame(parent, 80, 20, kHorizontalFrame);
   TGLabel *sliderLabel = new TGLabel(sliderFrame, labelName);
   sliderFrame->AddFrame(sliderLabel,
                         new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2));
   TGDoubleHSlider *slider = new TGDoubleHSlider(sliderFrame, 1, 2);
   slider->Resize(110, 20);

   sliderFrame->AddFrame(slider, new TGLayoutHints(kLHintsLeft));
   parent->AddFrame(sliderFrame, new TGLayoutHints(kLHintsTop, 2, 2, 2, 2));

   return slider;
}

}

//______________________________________________________________________________
void TGL5DDataSetEditor::CreateStyleTab()
{
   // Creates "Style" tab.

   TGHorizontalFrame *f;
   //MakeTitle("Update behaviour");
   fShowBoxCut  = new TGCheckButton(this, "Show Box Cut");
   fShowBoxCut->SetToolTipText("Box cut. When attached to a plot, cuts away a part of it");
   AddFrame(fShowBoxCut, new TGLayoutHints(kLHintsLeft, 5, 2, 2, 2));

   MakeTitle("isosurfaces");
   f = new TGHorizontalFrame(this, 200, 50);
   f->AddFrame(new TGLabel(f, "Number:"), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
   fNumberOfPlanes = new TGNumberEntry(f, 0, 3, -1, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
                                       TGNumberFormat::kNELLimitMinMax, 1, 200);
   fNumberOfPlanes->GetNumberEntry()->SetToolTipText("Set number of isosurfaces");
   f->AddFrame(fNumberOfPlanes, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 2, 2, 2, 2));
   fApplyPlanes = new TGTextButton(f, "   Apply   ");
   f->AddFrame(fApplyPlanes, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
   AddFrame(f, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0));
   //fApplyPlanes->SetState(kButtonDisabled);

   MakeTitle("Alpha");
   f = new TGHorizontalFrame(this, 200, 50);
   f->AddFrame(new TGLabel(f, "Value:"), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
   fAlpha = new TGNumberEntry(f, 0, 1, -1, TGNumberFormat::kNESRealThree, TGNumberFormat::kNEANonNegative,
                              TGNumberFormat::kNELLimitMinMax, 0.1, 0.5);
   fAlpha->GetNumberEntry()->SetToolTipText("Value of alpha parameter");
   f->AddFrame(fAlpha, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 2, 2, 2, 2));
   fApplyAlpha = new TGTextButton(f, "   Apply   ");
   f->AddFrame(fApplyAlpha, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
   AddFrame(f, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0));
   fApplyAlpha->SetState(kButtonDisabled);

   fLogScale  = new TGCheckButton(this, "Log Scale");
   AddFrame(fLogScale, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 2, 2, 2));

   AddFrame(new TGLabel(this, "Slide Range:"), new TGLayoutHints(kLHintsLeft, 5, 2, 2, 2));
   fSlideRange = new TGDoubleHSlider(this, 200, kDoubleScaleDownRight);
   AddFrame(fSlideRange, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 2, 2, 2));
}

//______________________________________________________________________________
void TGL5DDataSetEditor::CreateGridTab()
{
   //Tab, containing controls to set
   //the ranges and number of cells in a grid.
   TGCompositeFrame *tabFrame = CreateEditorTabSubFrame("Grid");
   //1. The first part of the tab - "Grid parameters" group.
   TGGroupFrame *gridGroup = new TGGroupFrame(tabFrame, "Grid parameters", kVerticalFrame);
   //2. Numeric entries.
   const UInt_t min = 10, max = 300;
   const UInt_t nDigits = 4;

   TGHorizontalFrame *frame = make_labeled_hframe(gridGroup, "Cells along X:");
   fNCellsXEntry = new TGNumberEntry(frame, 0., nDigits, -1, TGNumberFormat::kNESInteger,
                                     TGNumberFormat::kNEAPositive, TGNumberFormat::kNELLimitMinMax,
                                     min, max);
   frame->AddFrame(fNCellsXEntry,
                   new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsBottom, 2, 0, 0));
   //
   frame = make_labeled_hframe(gridGroup, "Cells along Y:");
   fNCellsYEntry = new TGNumberEntry(frame, 0., nDigits, -1, TGNumberFormat::kNESInteger,
                                     TGNumberFormat::kNEAPositive, TGNumberFormat::kNELLimitMinMax,
                                     min, max);
   frame->AddFrame(fNCellsYEntry,
                   new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsBottom, 2, 0, 0));
   //
   frame = make_labeled_hframe(gridGroup, "Cells along Z:");
   fNCellsZEntry = new TGNumberEntry(frame, 0., nDigits, -1, TGNumberFormat::kNESInteger,
                                     TGNumberFormat::kNEAPositive, TGNumberFormat::kNELLimitMinMax,
                                     min, max);
   frame->AddFrame(fNCellsZEntry,
                   new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsBottom, 2, 0, 0));
   tabFrame->AddFrame(gridGroup, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 2, 3, 3, 0));

   //3. The second part - "Ranges" group.
   TGGroupFrame *rangeGroup = new TGGroupFrame(tabFrame, "Ranges", kVerticalFrame);
   //4. Sliders and number entry fields.
   fXRangeSlider = make_double_hslider(rangeGroup, "X:");
   make_slider_range_entries(rangeGroup, fXRangeSliderMin, "Set the minimum value of the x-axis",
                          fXRangeSliderMax, "Set the maximum value of the x-axis");
   fYRangeSlider = make_double_hslider(rangeGroup, "Y:");
   make_slider_range_entries(rangeGroup, fYRangeSliderMin, "Set the minimum value of the y-axis",
                          fYRangeSliderMax, "Set the maximum value of the y-axis");
   fZRangeSlider = make_double_hslider(rangeGroup, "Z:");
   make_slider_range_entries(rangeGroup, fZRangeSliderMin, "Set the minimum value of the z-axis",
                          fZRangeSliderMax, "Set the maximum value of the z-axis");

   tabFrame->AddFrame(rangeGroup, new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 2, 3, 0, 0));

   //5. Buttons.
   TGHorizontalFrame *horizontalFrame = new TGHorizontalFrame(tabFrame, 200, 50);
   fCancelGridBtn = new TGTextButton(horizontalFrame, "  Cancel  ");
   horizontalFrame->AddFrame(fCancelGridBtn, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
   fOkGridBtn = new TGTextButton(horizontalFrame, "  Apply  ");
   horizontalFrame->AddFrame(fOkGridBtn, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
   tabFrame->AddFrame(horizontalFrame, new TGLayoutHints(kLHintsTop | kLHintsCenterX, 2, 3, 0, 0));
}

//______________________________________________________________________________
void TGL5DDataSetEditor::CreateIsoTab()
{
   //Tab, containing controls to work with iso-surfaces.
   TGCompositeFrame *tabFrame = CreateEditorTabSubFrame("Surfaces");

   //1. The first group - contains V4 range (read only number entries with min and max).
   TGGroupFrame *v4Group = new TGGroupFrame(tabFrame, "V4 Range", kVerticalFrame);

   make_slider_range_entries(v4Group, fV4MinEntry, "Minimum value of V4",
                             fV4MaxEntry, "Maximum value of V4");

   tabFrame->AddFrame(v4Group, new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 2, 3, 0, 0));
   //
   fV4MinEntry->SetState(kFALSE);
   fV4MaxEntry->SetState(kFALSE);

   //2. The second group - contains controls to select surface and
   //manipulate its parameters.
   TGGroupFrame *isoGroup = new TGGroupFrame(tabFrame, "Iso-surfaces", kVerticalFrame);

   fHighlightCheck = new TGCheckButton(isoGroup, "Highlight selected");
   fHighlightCheck->SetToolTipText("Highlight selected surface");
   fHighlightCheck->SetState(kButtonDown);
   isoGroup->AddFrame(fHighlightCheck, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));

   TGHorizontalFrame *hf = new TGHorizontalFrame(isoGroup);
   fIsoList = new TGListBox(hf);
   fIsoList->Resize(120, 120);
   hf->AddFrame(fIsoList, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
   isoGroup->AddFrame(hf, new TGLayoutHints(kLHintsLeft, 2, 1, 1, 1));

   fVisibleCheck = new TGCheckButton(isoGroup, "Visible");
   fVisibleCheck->SetToolTipText("Show/hide surface");
   isoGroup->AddFrame(fVisibleCheck, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));

   fShowCloud = new TGCheckButton(isoGroup, "Show cloud");
   fShowCloud->SetToolTipText("Show/hide cloud for surface");
   isoGroup->AddFrame(fShowCloud, new TGLayoutHints(kLHintsLeft, 4, 1, 1, 1));

   //Sorry, Matevz :) I stole this from TGLViewerEditor :))
   hf = new TGHorizontalFrame(isoGroup);
   TGLabel* lab = new TGLabel(hf, "Color");
   hf->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 4, 8, 3));
   fSurfColorSelect = new TGColorSelect(hf, 0, -1);
   hf->AddFrame(fSurfColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 8, 1));
   isoGroup->AddFrame(hf, new TGLayoutHints(kLHintsLeft, 2, 1, 1, 1));

   TGHorizontalFrame *frame = make_labeled_hframe(isoGroup, "Opacity: ");
   fSurfAlphaSlider = new TGHSlider(frame, 80);
   fSurfAlphaSlider->SetRange(0, 100);
   frame->AddFrame(fSurfAlphaSlider, new TGLayoutHints(kLHintsLeft));

   fSurfRemoveBtn = new TGTextButton(isoGroup, "  Remove surface  ");
   isoGroup->AddFrame(fSurfRemoveBtn, new TGLayoutHints(kLHintsLeft, 2, 2, 2, 2));
   tabFrame->AddFrame(isoGroup, new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 2, 3, 0, 0));

   //3. Group with controls to add new iso-surface.
   TGGroupFrame *newGroup = new TGGroupFrame(tabFrame, "New iso-surface", kVerticalFrame);
   hf = new TGHorizontalFrame(newGroup);
   fNewIsoEntry = new TGNumberEntry(hf, 0., 12, -1, TGNumberFormat::kNESReal);
   hf->AddFrame(fNewIsoEntry, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 2, 2, 2, 2));
   fNewIsoEntry->Resize(60, 20);
   fAddNewIsoBtn = new TGTextButton(hf, "    Add    ");
   hf->AddFrame(fAddNewIsoBtn, new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 2, 2, 2, 2));
   newGroup->AddFrame(hf, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));

   tabFrame->AddFrame(newGroup, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 3, 0, 0));
}

//______________________________________________________________________________
void TGL5DDataSetEditor::SetModel(TObject* obj)
{
   //Set model or disables/hides viewer.
   fPainter = 0;
   Bool_t needUpdate = fSelectedSurface != -1;

   if ((fDataSet = dynamic_cast<TGL5DDataSet *>(obj))) {
      fPainter = fDataSet->GetRealPainter();

      SetStyleTabWidgets();
      SetGridTabWidgets();
      SetIsoTabWidgets();

      DisableGridTabButtons();
      DisableSurfaceControls();

      if (fInit)
         ConnectSignals2Slots();
   }

   if (needUpdate && gPad)
      gPad->Update();
}

namespace {

void set_grid_range_widgets(const TAxis *a, const Rgl::Range_t r, TGDoubleHSlider *slider,
                            TGNumberEntryField *eMin, TGNumberEntryField *eMax)
{
   slider->SetRange(r.first, r.second);
   slider->SetPosition(a->GetBinLowEdge(1), a->GetBinUpEdge(a->GetLast()));

   eMin->SetNumber(a->GetBinLowEdge(1));
   eMin->SetLimits(TGNumberFormat::kNELLimitMinMax, r.first, r.second);
   eMax->SetNumber(a->GetBinUpEdge(a->GetLast()));
   eMax->SetLimits(TGNumberFormat::kNELLimitMinMax, r.first, r.second);
}

}

//______________________________________________________________________________
void TGL5DDataSetEditor::SetStyleTabWidgets()
{
   //Set "Style" tab's controls from model.

   fShowBoxCut->SetState(fPainter->IsBoxCutShown() ? kButtonDown : kButtonUp);
   fNumberOfPlanes->SetNumber(fPainter->GetNContours());
   fAlpha->SetNumber(fPainter->GetAlpha());
}

//______________________________________________________________________________
void TGL5DDataSetEditor::SetGridTabWidgets()
{
   //Set "Grid" tab's controls from model.

   const TAxis *xA = fDataSet->GetXAxis();
   const TAxis *yA = fDataSet->GetYAxis();
   const TAxis *zA = fDataSet->GetZAxis();
   const Rgl::Range_t &xR = fDataSet->GetXRange();
   const Rgl::Range_t &yR = fDataSet->GetYRange();
   const Rgl::Range_t &zR = fDataSet->GetZRange();
   //Number of cells.
   fNCellsXEntry->SetIntNumber(xA->GetNbins());
   fNCellsYEntry->SetIntNumber(yA->GetNbins());
   fNCellsZEntry->SetIntNumber(zA->GetNbins());
   //X-range.
   set_grid_range_widgets(xA, xR, fXRangeSlider, fXRangeSliderMin, fXRangeSliderMax);
   //Y-range.
   set_grid_range_widgets(yA, yR, fYRangeSlider, fYRangeSliderMin, fYRangeSliderMax);
   //Z-range.
   set_grid_range_widgets(zA, zR, fZRangeSlider, fZRangeSliderMin, fZRangeSliderMax);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::SetIsoTabWidgets()
{
   //Set "Surfaces" tab's controls from model.
   const Rgl::Range_t &v4R = fDataSet->GetV4Range();
   //V4 range.
   fV4MinEntry->SetNumber(v4R.first);
   fV4MaxEntry->SetNumber(v4R.second);

   fIsoList->RemoveAll();
   fHidden->fIterators.clear();

   SurfIter_t curr = fPainter->SurfacesBegin();

   for (Int_t ind = 0; curr != fPainter->SurfacesEnd(); ++curr, ++ind) {
      TString entry(TString::Format("Level: %f", curr->f4D));
      fIsoList->AddEntry(entry.Data(), ind);
      fIsoList->Layout();
      curr->fHighlight = kFALSE;
      //I'm saving list's iterators here.
      //If list modified (surface removed)
      //- corresponding iterator must be removed,
      //all other iterators are still valid (thanks to std::list).
      //If surface added, new iterator must be added at the end.
      fHidden->fIterators[ind] = curr;
   }

   fNewIsoEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, v4R.first, v4R.second);
   fNewIsoEntry->SetNumber(v4R.first);

   fSelectedSurface = -1;
}

//______________________________________________________________________________
void TGL5DDataSetEditor::GridParametersChanged()
{
   //Some of controls in a "Grid" tab was modified.
   EnableGridTabButtons();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::EnableGridTabButtons()
{
   //Grid parameters were changed, enable "Cancel" and "Apply" buttons.
   fCancelGridBtn->SetState(kButtonUp);
   fOkGridBtn->SetState(kButtonUp);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::DisableGridTabButtons()
{
   //Disable "Cancel" and "Apply" buttons.
   fCancelGridBtn->SetState(kButtonDisabled);
   fOkGridBtn->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::EnableSurfaceControls()
{
   //Surface was selected in a list box, enable some controls.
   fVisibleCheck->SetState(kButtonUp);
//   fShowCloud->SetState(kButtonUp);
//   fSurfColorBtn->SetState(kButtonUp);
   fSurfRemoveBtn->SetState(kButtonUp);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::DisableSurfaceControls()
{
   //Disable surface controls.
   fVisibleCheck->SetState(kButtonDisabled);
   fShowCloud->SetState(kButtonDisabled);
//   fSurfColorBtn->SetState(kButtonDisabled);
   fSurfRemoveBtn->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::XSliderChanged()
{
   //X slider in a "Grid" tab.
   fXRangeSliderMin->SetNumber(fXRangeSlider->GetMinPosition());
   fXRangeSliderMax->SetNumber(fXRangeSlider->GetMaxPosition());

   EnableGridTabButtons();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::YSliderChanged()
{
   //Y slider in a "Grid" tab.
   fYRangeSliderMin->SetNumber(fYRangeSlider->GetMinPosition());
   fYRangeSliderMax->SetNumber(fYRangeSlider->GetMaxPosition());

   EnableGridTabButtons();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ZSliderChanged()
{
   //Z slider in a "Grid" tab.
   fZRangeSliderMin->SetNumber(fZRangeSlider->GetMinPosition());
   fZRangeSliderMax->SetNumber(fZRangeSlider->GetMaxPosition());

   EnableGridTabButtons();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::XSliderSetMin()
{
   //Value in a number entry was modified.
   if (fXRangeSliderMin->GetNumber() < fXRangeSliderMax->GetNumber()) {
      fXRangeSlider->SetPosition(fXRangeSliderMin->GetNumber(),
                                 fXRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fXRangeSliderMin->SetNumber(fXRangeSlider->GetMinPosition());
}

//______________________________________________________________________________
void TGL5DDataSetEditor::XSliderSetMax()
{
   //Value in a number entry was modified.
   if (fXRangeSliderMin->GetNumber() < fXRangeSliderMax->GetNumber()) {
      fXRangeSlider->SetPosition(fXRangeSliderMin->GetNumber(),
                                 fXRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fXRangeSliderMax->SetNumber(fXRangeSlider->GetMaxPosition());
}


//______________________________________________________________________________
void TGL5DDataSetEditor::YSliderSetMin()
{
   //Value in a number entry was modified.
   if (fYRangeSliderMin->GetNumber() < fYRangeSliderMax->GetNumber()) {
      fYRangeSlider->SetPosition(fYRangeSliderMin->GetNumber(),
                                 fYRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fYRangeSliderMin->SetNumber(fYRangeSlider->GetMinPosition());
}

//______________________________________________________________________________
void TGL5DDataSetEditor::YSliderSetMax()
{
   //Value in a number entry was modified.
   if (fYRangeSliderMin->GetNumber() < fYRangeSliderMax->GetNumber()) {
      fYRangeSlider->SetPosition(fYRangeSliderMin->GetNumber(),
                                 fYRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fYRangeSliderMax->SetNumber(fYRangeSlider->GetMaxPosition());
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ZSliderSetMin()
{
   //Value in a number entry was modified.
   if (fZRangeSliderMin->GetNumber() < fZRangeSliderMax->GetNumber()) {
      fZRangeSlider->SetPosition(fZRangeSliderMin->GetNumber(),
                                 fZRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fZRangeSliderMin->SetNumber(fZRangeSlider->GetMinPosition());

}

//______________________________________________________________________________
void TGL5DDataSetEditor::ZSliderSetMax()
{
   //Value in a number entry was modified.
   if (fZRangeSliderMin->GetNumber() < fZRangeSliderMax->GetNumber()) {
      fZRangeSlider->SetPosition(fZRangeSliderMin->GetNumber(),
                                 fZRangeSliderMax->GetNumber());
      EnableGridTabButtons();
   } else
      fYRangeSliderMax->SetNumber(fZRangeSlider->GetMaxPosition());
}

//______________________________________________________________________________
void TGL5DDataSetEditor::RollbackGridParameters()
{
   //"Cancel" button was pressed in a "Grid" tab.
   //Return old values.
   SetGridTabWidgets();
   DisableGridTabButtons();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ApplyGridParameters()
{
   //"Apply" button was pressed in a "Grid" tab.
   //Modify all meshes.
   DisableGridTabButtons();
   //
   fDataSet->GetXAxis()->Set(fNCellsXEntry->GetIntNumber(),
                             fXRangeSlider->GetMinPosition(),
                             fXRangeSlider->GetMaxPosition());

   fDataSet->GetYAxis()->Set(fNCellsYEntry->GetIntNumber(),
                             fYRangeSlider->GetMinPosition(),
                             fYRangeSlider->GetMaxPosition());

   fDataSet->GetZAxis()->Set(fNCellsZEntry->GetIntNumber(),
                             fZRangeSlider->GetMinPosition(),
                             fZRangeSlider->GetMaxPosition());

   fPainter->ResetGeometryRanges();
   if (gPad)
      gPad->Update();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::HighlightClicked()
{
   //Check, if selected surface must be highlighted.
   if (fSelectedSurface == -1)
      return;

   fHidden->fIterators[fSelectedSurface]->fHighlight = fHighlightCheck->IsOn();

   if (gPad)
      gPad->Update();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::SurfaceSelected(Int_t id)
{
   //Surface was selected in a list box.
   //Enable surface controls and set them into
   //correct state.
   if (id >= 0) {
      //Check, if the index is valid.
      if (!fHidden->IsValid(id)) {
         Error("SurfaceSelected", "Got wrong index %d", id);
         return;
      }

      if (fSelectedSurface != -1) {
         //Previously selected surface IS ALWAYS
         //valid index, so no index check here.
         fHidden->fIterators[fSelectedSurface]->fHighlight = kFALSE;
      }

      EnableSurfaceControls();


      SurfIter_t surf = fHidden->fIterators[fSelectedSurface = id];
      surf->fHighlight = fHighlightCheck->IsOn();
      //Surface is visible/invisible - check/uncheck.
      fVisibleCheck->SetOn(!surf->fHide);
      fSurfColorSelect->SetColor(TColor::Number2Pixel(surf->fColor), kFALSE);
      fSurfAlphaSlider->SetPosition(surf->fAlpha);

      if (gPad)
         gPad->Update();
   } else if (fSelectedSurface != -1) {
      //Deselect.
      fHidden->fIterators[fSelectedSurface]->fHighlight = kFALSE;
      fSelectedSurface = -1;
      DisableSurfaceControls();//No surface is selected, no working controls.
      if (gPad)
         gPad->Update();
   }
}

//______________________________________________________________________________
void TGL5DDataSetEditor::VisibleClicked()
{
   //Hide/show selected surface.

   //In principle, this control can be enabled,
   //only if some surface was selected and
   //fSelectedSurface != -1. But I do not trust to
   //ROOT's GUI so I have a check.
   if (fSelectedSurface != -1) {
      fHidden->fIterators[fSelectedSurface]->fHide = !(fVisibleCheck->IsOn());
      if (gPad)
         gPad->Update();
   }
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ColorChanged(Pixel_t pixel)
{
   //Change the color of the selected surface.

   if (fSelectedSurface != -1) {
      fHidden->fIterators[fSelectedSurface]->fColor = Color_t(TColor::GetColor(pixel));
      if (gPad)
         gPad->Update();
   }
}

//______________________________________________________________________________
void TGL5DDataSetEditor::AlphaChanged(Int_t alpha)
{
   //Change transparency of selected surface.

   if (fSelectedSurface != -1) {
      fHidden->fIterators[fSelectedSurface]->fAlpha = alpha;
      if (gPad)
         gPad->Update();
   }
}

//______________________________________________________________________________
void TGL5DDataSetEditor::RemoveSurface()
{
   //Remove selected surface.
   if (fSelectedSurface != -1) {

      SurfIter_t it = fHidden->fIterators[fSelectedSurface];
      fHidden->fIterators.erase(fSelectedSurface);
      fIsoList->RemoveEntry(fSelectedSurface);
      fIsoList->Layout();
      fPainter->RemoveSurface(it);
      DisableSurfaceControls();
      fSelectedSurface = -1;

      if (gPad)
         gPad->Update();
   }
}

//______________________________________________________________________________
void TGL5DDataSetEditor::AddNewSurface()
{
   //Add new iso-surface.
   fPainter->AddSurface(fNewIsoEntry->GetNumber());
   SetModel(fDataSet);

   if (gPad)
      gPad->Update();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::ApplyAlpha()
{
   // Slot connected to the "Apply" button for alpha value.

   if (fPainter) {
      fApplyAlpha->SetState(kButtonDisabled);
      fPainter->SetAlpha(fAlpha->GetNumber());
      fAlpha->SetNumber(fPainter->GetAlpha());

      //Update other tabs and change controls' states.
      SetModel(fDataSet);
   }

   if (gPad)
      gPad->Update();
}


//______________________________________________________________________________
void TGL5DDataSetEditor::ApplyPlanes()
{
   // Slot connected to the Apply Planes button.

   if (fPainter) {
      //fApplyPlanes->SetState(kButtonDisabled);
      fPainter->SetNContours((Int_t)fNumberOfPlanes->GetIntNumber());
      fNumberOfPlanes->SetIntNumber(fPainter->GetNContours());

      //Update other tabs and change controls' states.
      SetModel(fDataSet);
   }

   if (gPad)
      gPad->Update();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::BoxCutToggled()
{
   // Slot connected to the Show BoxCut check button.

   if (fPainter)
      fPainter->ShowBoxCut(fShowBoxCut->IsOn());
   if (gPad)
      gPad->Update();
}

//______________________________________________________________________________
void TGL5DDataSetEditor::AlphaChanged()
{
   // Slot connected to the Alpha entry.

   fApplyAlpha->SetState(kButtonUp);
}

//______________________________________________________________________________
void TGL5DDataSetEditor::NContoursChanged()
{
   // Slot connected to the Number of Planes value-entry.

//   fApplyPlanes->SetState(kButtonUp);
}
 TGL5DDataSetEditor.cxx:1
 TGL5DDataSetEditor.cxx:2
 TGL5DDataSetEditor.cxx:3
 TGL5DDataSetEditor.cxx:4
 TGL5DDataSetEditor.cxx:5
 TGL5DDataSetEditor.cxx:6
 TGL5DDataSetEditor.cxx:7
 TGL5DDataSetEditor.cxx:8
 TGL5DDataSetEditor.cxx:9
 TGL5DDataSetEditor.cxx:10
 TGL5DDataSetEditor.cxx:11
 TGL5DDataSetEditor.cxx:12
 TGL5DDataSetEditor.cxx:13
 TGL5DDataSetEditor.cxx:14
 TGL5DDataSetEditor.cxx:15
 TGL5DDataSetEditor.cxx:16
 TGL5DDataSetEditor.cxx:17
 TGL5DDataSetEditor.cxx:18
 TGL5DDataSetEditor.cxx:19
 TGL5DDataSetEditor.cxx:20
 TGL5DDataSetEditor.cxx:21
 TGL5DDataSetEditor.cxx:22
 TGL5DDataSetEditor.cxx:23
 TGL5DDataSetEditor.cxx:24
 TGL5DDataSetEditor.cxx:25
 TGL5DDataSetEditor.cxx:26
 TGL5DDataSetEditor.cxx:27
 TGL5DDataSetEditor.cxx:28
 TGL5DDataSetEditor.cxx:29
 TGL5DDataSetEditor.cxx:30
 TGL5DDataSetEditor.cxx:31
 TGL5DDataSetEditor.cxx:32
 TGL5DDataSetEditor.cxx:33
 TGL5DDataSetEditor.cxx:34
 TGL5DDataSetEditor.cxx:35
 TGL5DDataSetEditor.cxx:36
 TGL5DDataSetEditor.cxx:37
 TGL5DDataSetEditor.cxx:38
 TGL5DDataSetEditor.cxx:39
 TGL5DDataSetEditor.cxx:40
 TGL5DDataSetEditor.cxx:41
 TGL5DDataSetEditor.cxx:42
 TGL5DDataSetEditor.cxx:43
 TGL5DDataSetEditor.cxx:44
 TGL5DDataSetEditor.cxx:45
 TGL5DDataSetEditor.cxx:46
 TGL5DDataSetEditor.cxx:47
 TGL5DDataSetEditor.cxx:48
 TGL5DDataSetEditor.cxx:49
 TGL5DDataSetEditor.cxx:50
 TGL5DDataSetEditor.cxx:51
 TGL5DDataSetEditor.cxx:52
 TGL5DDataSetEditor.cxx:53
 TGL5DDataSetEditor.cxx:54
 TGL5DDataSetEditor.cxx:55
 TGL5DDataSetEditor.cxx:56
 TGL5DDataSetEditor.cxx:57
 TGL5DDataSetEditor.cxx:58
 TGL5DDataSetEditor.cxx:59
 TGL5DDataSetEditor.cxx:60
 TGL5DDataSetEditor.cxx:61
 TGL5DDataSetEditor.cxx:62
 TGL5DDataSetEditor.cxx:63
 TGL5DDataSetEditor.cxx:64
 TGL5DDataSetEditor.cxx:65
 TGL5DDataSetEditor.cxx:66
 TGL5DDataSetEditor.cxx:67
 TGL5DDataSetEditor.cxx:68
 TGL5DDataSetEditor.cxx:69
 TGL5DDataSetEditor.cxx:70
 TGL5DDataSetEditor.cxx:71
 TGL5DDataSetEditor.cxx:72
 TGL5DDataSetEditor.cxx:73
 TGL5DDataSetEditor.cxx:74
 TGL5DDataSetEditor.cxx:75
 TGL5DDataSetEditor.cxx:76
 TGL5DDataSetEditor.cxx:77
 TGL5DDataSetEditor.cxx:78
 TGL5DDataSetEditor.cxx:79
 TGL5DDataSetEditor.cxx:80
 TGL5DDataSetEditor.cxx:81
 TGL5DDataSetEditor.cxx:82
 TGL5DDataSetEditor.cxx:83
 TGL5DDataSetEditor.cxx:84
 TGL5DDataSetEditor.cxx:85
 TGL5DDataSetEditor.cxx:86
 TGL5DDataSetEditor.cxx:87
 TGL5DDataSetEditor.cxx:88
 TGL5DDataSetEditor.cxx:89
 TGL5DDataSetEditor.cxx:90
 TGL5DDataSetEditor.cxx:91
 TGL5DDataSetEditor.cxx:92
 TGL5DDataSetEditor.cxx:93
 TGL5DDataSetEditor.cxx:94
 TGL5DDataSetEditor.cxx:95
 TGL5DDataSetEditor.cxx:96
 TGL5DDataSetEditor.cxx:97
 TGL5DDataSetEditor.cxx:98
 TGL5DDataSetEditor.cxx:99
 TGL5DDataSetEditor.cxx:100
 TGL5DDataSetEditor.cxx:101
 TGL5DDataSetEditor.cxx:102
 TGL5DDataSetEditor.cxx:103
 TGL5DDataSetEditor.cxx:104
 TGL5DDataSetEditor.cxx:105
 TGL5DDataSetEditor.cxx:106
 TGL5DDataSetEditor.cxx:107
 TGL5DDataSetEditor.cxx:108
 TGL5DDataSetEditor.cxx:109
 TGL5DDataSetEditor.cxx:110
 TGL5DDataSetEditor.cxx:111
 TGL5DDataSetEditor.cxx:112
 TGL5DDataSetEditor.cxx:113
 TGL5DDataSetEditor.cxx:114
 TGL5DDataSetEditor.cxx:115
 TGL5DDataSetEditor.cxx:116
 TGL5DDataSetEditor.cxx:117
 TGL5DDataSetEditor.cxx:118
 TGL5DDataSetEditor.cxx:119
 TGL5DDataSetEditor.cxx:120
 TGL5DDataSetEditor.cxx:121
 TGL5DDataSetEditor.cxx:122
 TGL5DDataSetEditor.cxx:123
 TGL5DDataSetEditor.cxx:124
 TGL5DDataSetEditor.cxx:125
 TGL5DDataSetEditor.cxx:126
 TGL5DDataSetEditor.cxx:127
 TGL5DDataSetEditor.cxx:128
 TGL5DDataSetEditor.cxx:129
 TGL5DDataSetEditor.cxx:130
 TGL5DDataSetEditor.cxx:131
 TGL5DDataSetEditor.cxx:132
 TGL5DDataSetEditor.cxx:133
 TGL5DDataSetEditor.cxx:134
 TGL5DDataSetEditor.cxx:135
 TGL5DDataSetEditor.cxx:136
 TGL5DDataSetEditor.cxx:137
 TGL5DDataSetEditor.cxx:138
 TGL5DDataSetEditor.cxx:139
 TGL5DDataSetEditor.cxx:140
 TGL5DDataSetEditor.cxx:141
 TGL5DDataSetEditor.cxx:142
 TGL5DDataSetEditor.cxx:143
 TGL5DDataSetEditor.cxx:144
 TGL5DDataSetEditor.cxx:145
 TGL5DDataSetEditor.cxx:146
 TGL5DDataSetEditor.cxx:147
 TGL5DDataSetEditor.cxx:148
 TGL5DDataSetEditor.cxx:149
 TGL5DDataSetEditor.cxx:150
 TGL5DDataSetEditor.cxx:151
 TGL5DDataSetEditor.cxx:152
 TGL5DDataSetEditor.cxx:153
 TGL5DDataSetEditor.cxx:154
 TGL5DDataSetEditor.cxx:155
 TGL5DDataSetEditor.cxx:156
 TGL5DDataSetEditor.cxx:157
 TGL5DDataSetEditor.cxx:158
 TGL5DDataSetEditor.cxx:159
 TGL5DDataSetEditor.cxx:160
 TGL5DDataSetEditor.cxx:161
 TGL5DDataSetEditor.cxx:162
 TGL5DDataSetEditor.cxx:163
 TGL5DDataSetEditor.cxx:164
 TGL5DDataSetEditor.cxx:165
 TGL5DDataSetEditor.cxx:166
 TGL5DDataSetEditor.cxx:167
 TGL5DDataSetEditor.cxx:168
 TGL5DDataSetEditor.cxx:169
 TGL5DDataSetEditor.cxx:170
 TGL5DDataSetEditor.cxx:171
 TGL5DDataSetEditor.cxx:172
 TGL5DDataSetEditor.cxx:173
 TGL5DDataSetEditor.cxx:174
 TGL5DDataSetEditor.cxx:175
 TGL5DDataSetEditor.cxx:176
 TGL5DDataSetEditor.cxx:177
 TGL5DDataSetEditor.cxx:178
 TGL5DDataSetEditor.cxx:179
 TGL5DDataSetEditor.cxx:180
 TGL5DDataSetEditor.cxx:181
 TGL5DDataSetEditor.cxx:182
 TGL5DDataSetEditor.cxx:183
 TGL5DDataSetEditor.cxx:184
 TGL5DDataSetEditor.cxx:185
 TGL5DDataSetEditor.cxx:186
 TGL5DDataSetEditor.cxx:187
 TGL5DDataSetEditor.cxx:188
 TGL5DDataSetEditor.cxx:189
 TGL5DDataSetEditor.cxx:190
 TGL5DDataSetEditor.cxx:191
 TGL5DDataSetEditor.cxx:192
 TGL5DDataSetEditor.cxx:193
 TGL5DDataSetEditor.cxx:194
 TGL5DDataSetEditor.cxx:195
 TGL5DDataSetEditor.cxx:196
 TGL5DDataSetEditor.cxx:197
 TGL5DDataSetEditor.cxx:198
 TGL5DDataSetEditor.cxx:199
 TGL5DDataSetEditor.cxx:200
 TGL5DDataSetEditor.cxx:201
 TGL5DDataSetEditor.cxx:202
 TGL5DDataSetEditor.cxx:203
 TGL5DDataSetEditor.cxx:204
 TGL5DDataSetEditor.cxx:205
 TGL5DDataSetEditor.cxx:206
 TGL5DDataSetEditor.cxx:207
 TGL5DDataSetEditor.cxx:208
 TGL5DDataSetEditor.cxx:209
 TGL5DDataSetEditor.cxx:210
 TGL5DDataSetEditor.cxx:211
 TGL5DDataSetEditor.cxx:212
 TGL5DDataSetEditor.cxx:213
 TGL5DDataSetEditor.cxx:214
 TGL5DDataSetEditor.cxx:215
 TGL5DDataSetEditor.cxx:216
 TGL5DDataSetEditor.cxx:217
 TGL5DDataSetEditor.cxx:218
 TGL5DDataSetEditor.cxx:219
 TGL5DDataSetEditor.cxx:220
 TGL5DDataSetEditor.cxx:221
 TGL5DDataSetEditor.cxx:222
 TGL5DDataSetEditor.cxx:223
 TGL5DDataSetEditor.cxx:224
 TGL5DDataSetEditor.cxx:225
 TGL5DDataSetEditor.cxx:226
 TGL5DDataSetEditor.cxx:227
 TGL5DDataSetEditor.cxx:228
 TGL5DDataSetEditor.cxx:229
 TGL5DDataSetEditor.cxx:230
 TGL5DDataSetEditor.cxx:231
 TGL5DDataSetEditor.cxx:232
 TGL5DDataSetEditor.cxx:233
 TGL5DDataSetEditor.cxx:234
 TGL5DDataSetEditor.cxx:235
 TGL5DDataSetEditor.cxx:236
 TGL5DDataSetEditor.cxx:237
 TGL5DDataSetEditor.cxx:238
 TGL5DDataSetEditor.cxx:239
 TGL5DDataSetEditor.cxx:240
 TGL5DDataSetEditor.cxx:241
 TGL5DDataSetEditor.cxx:242
 TGL5DDataSetEditor.cxx:243
 TGL5DDataSetEditor.cxx:244
 TGL5DDataSetEditor.cxx:245
 TGL5DDataSetEditor.cxx:246
 TGL5DDataSetEditor.cxx:247
 TGL5DDataSetEditor.cxx:248
 TGL5DDataSetEditor.cxx:249
 TGL5DDataSetEditor.cxx:250
 TGL5DDataSetEditor.cxx:251
 TGL5DDataSetEditor.cxx:252
 TGL5DDataSetEditor.cxx:253
 TGL5DDataSetEditor.cxx:254
 TGL5DDataSetEditor.cxx:255
 TGL5DDataSetEditor.cxx:256
 TGL5DDataSetEditor.cxx:257
 TGL5DDataSetEditor.cxx:258
 TGL5DDataSetEditor.cxx:259
 TGL5DDataSetEditor.cxx:260
 TGL5DDataSetEditor.cxx:261
 TGL5DDataSetEditor.cxx:262
 TGL5DDataSetEditor.cxx:263
 TGL5DDataSetEditor.cxx:264
 TGL5DDataSetEditor.cxx:265
 TGL5DDataSetEditor.cxx:266
 TGL5DDataSetEditor.cxx:267
 TGL5DDataSetEditor.cxx:268
 TGL5DDataSetEditor.cxx:269
 TGL5DDataSetEditor.cxx:270
 TGL5DDataSetEditor.cxx:271
 TGL5DDataSetEditor.cxx:272
 TGL5DDataSetEditor.cxx:273
 TGL5DDataSetEditor.cxx:274
 TGL5DDataSetEditor.cxx:275
 TGL5DDataSetEditor.cxx:276
 TGL5DDataSetEditor.cxx:277
 TGL5DDataSetEditor.cxx:278
 TGL5DDataSetEditor.cxx:279
 TGL5DDataSetEditor.cxx:280
 TGL5DDataSetEditor.cxx:281
 TGL5DDataSetEditor.cxx:282
 TGL5DDataSetEditor.cxx:283
 TGL5DDataSetEditor.cxx:284
 TGL5DDataSetEditor.cxx:285
 TGL5DDataSetEditor.cxx:286
 TGL5DDataSetEditor.cxx:287
 TGL5DDataSetEditor.cxx:288
 TGL5DDataSetEditor.cxx:289
 TGL5DDataSetEditor.cxx:290
 TGL5DDataSetEditor.cxx:291
 TGL5DDataSetEditor.cxx:292
 TGL5DDataSetEditor.cxx:293
 TGL5DDataSetEditor.cxx:294
 TGL5DDataSetEditor.cxx:295
 TGL5DDataSetEditor.cxx:296
 TGL5DDataSetEditor.cxx:297
 TGL5DDataSetEditor.cxx:298
 TGL5DDataSetEditor.cxx:299
 TGL5DDataSetEditor.cxx:300
 TGL5DDataSetEditor.cxx:301
 TGL5DDataSetEditor.cxx:302
 TGL5DDataSetEditor.cxx:303
 TGL5DDataSetEditor.cxx:304
 TGL5DDataSetEditor.cxx:305
 TGL5DDataSetEditor.cxx:306
 TGL5DDataSetEditor.cxx:307
 TGL5DDataSetEditor.cxx:308
 TGL5DDataSetEditor.cxx:309
 TGL5DDataSetEditor.cxx:310
 TGL5DDataSetEditor.cxx:311
 TGL5DDataSetEditor.cxx:312
 TGL5DDataSetEditor.cxx:313
 TGL5DDataSetEditor.cxx:314
 TGL5DDataSetEditor.cxx:315
 TGL5DDataSetEditor.cxx:316
 TGL5DDataSetEditor.cxx:317
 TGL5DDataSetEditor.cxx:318
 TGL5DDataSetEditor.cxx:319
 TGL5DDataSetEditor.cxx:320
 TGL5DDataSetEditor.cxx:321
 TGL5DDataSetEditor.cxx:322
 TGL5DDataSetEditor.cxx:323
 TGL5DDataSetEditor.cxx:324
 TGL5DDataSetEditor.cxx:325
 TGL5DDataSetEditor.cxx:326
 TGL5DDataSetEditor.cxx:327
 TGL5DDataSetEditor.cxx:328
 TGL5DDataSetEditor.cxx:329
 TGL5DDataSetEditor.cxx:330
 TGL5DDataSetEditor.cxx:331
 TGL5DDataSetEditor.cxx:332
 TGL5DDataSetEditor.cxx:333
 TGL5DDataSetEditor.cxx:334
 TGL5DDataSetEditor.cxx:335
 TGL5DDataSetEditor.cxx:336
 TGL5DDataSetEditor.cxx:337
 TGL5DDataSetEditor.cxx:338
 TGL5DDataSetEditor.cxx:339
 TGL5DDataSetEditor.cxx:340
 TGL5DDataSetEditor.cxx:341
 TGL5DDataSetEditor.cxx:342
 TGL5DDataSetEditor.cxx:343
 TGL5DDataSetEditor.cxx:344
 TGL5DDataSetEditor.cxx:345
 TGL5DDataSetEditor.cxx:346
 TGL5DDataSetEditor.cxx:347
 TGL5DDataSetEditor.cxx:348
 TGL5DDataSetEditor.cxx:349
 TGL5DDataSetEditor.cxx:350
 TGL5DDataSetEditor.cxx:351
 TGL5DDataSetEditor.cxx:352
 TGL5DDataSetEditor.cxx:353
 TGL5DDataSetEditor.cxx:354
 TGL5DDataSetEditor.cxx:355
 TGL5DDataSetEditor.cxx:356
 TGL5DDataSetEditor.cxx:357
 TGL5DDataSetEditor.cxx:358
 TGL5DDataSetEditor.cxx:359
 TGL5DDataSetEditor.cxx:360
 TGL5DDataSetEditor.cxx:361
 TGL5DDataSetEditor.cxx:362
 TGL5DDataSetEditor.cxx:363
 TGL5DDataSetEditor.cxx:364
 TGL5DDataSetEditor.cxx:365
 TGL5DDataSetEditor.cxx:366
 TGL5DDataSetEditor.cxx:367
 TGL5DDataSetEditor.cxx:368
 TGL5DDataSetEditor.cxx:369
 TGL5DDataSetEditor.cxx:370
 TGL5DDataSetEditor.cxx:371
 TGL5DDataSetEditor.cxx:372
 TGL5DDataSetEditor.cxx:373
 TGL5DDataSetEditor.cxx:374
 TGL5DDataSetEditor.cxx:375
 TGL5DDataSetEditor.cxx:376
 TGL5DDataSetEditor.cxx:377
 TGL5DDataSetEditor.cxx:378
 TGL5DDataSetEditor.cxx:379
 TGL5DDataSetEditor.cxx:380
 TGL5DDataSetEditor.cxx:381
 TGL5DDataSetEditor.cxx:382
 TGL5DDataSetEditor.cxx:383
 TGL5DDataSetEditor.cxx:384
 TGL5DDataSetEditor.cxx:385
 TGL5DDataSetEditor.cxx:386
 TGL5DDataSetEditor.cxx:387
 TGL5DDataSetEditor.cxx:388
 TGL5DDataSetEditor.cxx:389
 TGL5DDataSetEditor.cxx:390
 TGL5DDataSetEditor.cxx:391
 TGL5DDataSetEditor.cxx:392
 TGL5DDataSetEditor.cxx:393
 TGL5DDataSetEditor.cxx:394
 TGL5DDataSetEditor.cxx:395
 TGL5DDataSetEditor.cxx:396
 TGL5DDataSetEditor.cxx:397
 TGL5DDataSetEditor.cxx:398
 TGL5DDataSetEditor.cxx:399
 TGL5DDataSetEditor.cxx:400
 TGL5DDataSetEditor.cxx:401
 TGL5DDataSetEditor.cxx:402
 TGL5DDataSetEditor.cxx:403
 TGL5DDataSetEditor.cxx:404
 TGL5DDataSetEditor.cxx:405
 TGL5DDataSetEditor.cxx:406
 TGL5DDataSetEditor.cxx:407
 TGL5DDataSetEditor.cxx:408
 TGL5DDataSetEditor.cxx:409
 TGL5DDataSetEditor.cxx:410
 TGL5DDataSetEditor.cxx:411
 TGL5DDataSetEditor.cxx:412
 TGL5DDataSetEditor.cxx:413
 TGL5DDataSetEditor.cxx:414
 TGL5DDataSetEditor.cxx:415
 TGL5DDataSetEditor.cxx:416
 TGL5DDataSetEditor.cxx:417
 TGL5DDataSetEditor.cxx:418
 TGL5DDataSetEditor.cxx:419
 TGL5DDataSetEditor.cxx:420
 TGL5DDataSetEditor.cxx:421
 TGL5DDataSetEditor.cxx:422
 TGL5DDataSetEditor.cxx:423
 TGL5DDataSetEditor.cxx:424
 TGL5DDataSetEditor.cxx:425
 TGL5DDataSetEditor.cxx:426
 TGL5DDataSetEditor.cxx:427
 TGL5DDataSetEditor.cxx:428
 TGL5DDataSetEditor.cxx:429
 TGL5DDataSetEditor.cxx:430
 TGL5DDataSetEditor.cxx:431
 TGL5DDataSetEditor.cxx:432
 TGL5DDataSetEditor.cxx:433
 TGL5DDataSetEditor.cxx:434
 TGL5DDataSetEditor.cxx:435
 TGL5DDataSetEditor.cxx:436
 TGL5DDataSetEditor.cxx:437
 TGL5DDataSetEditor.cxx:438
 TGL5DDataSetEditor.cxx:439
 TGL5DDataSetEditor.cxx:440
 TGL5DDataSetEditor.cxx:441
 TGL5DDataSetEditor.cxx:442
 TGL5DDataSetEditor.cxx:443
 TGL5DDataSetEditor.cxx:444
 TGL5DDataSetEditor.cxx:445
 TGL5DDataSetEditor.cxx:446
 TGL5DDataSetEditor.cxx:447
 TGL5DDataSetEditor.cxx:448
 TGL5DDataSetEditor.cxx:449
 TGL5DDataSetEditor.cxx:450
 TGL5DDataSetEditor.cxx:451
 TGL5DDataSetEditor.cxx:452
 TGL5DDataSetEditor.cxx:453
 TGL5DDataSetEditor.cxx:454
 TGL5DDataSetEditor.cxx:455
 TGL5DDataSetEditor.cxx:456
 TGL5DDataSetEditor.cxx:457
 TGL5DDataSetEditor.cxx:458
 TGL5DDataSetEditor.cxx:459
 TGL5DDataSetEditor.cxx:460
 TGL5DDataSetEditor.cxx:461
 TGL5DDataSetEditor.cxx:462
 TGL5DDataSetEditor.cxx:463
 TGL5DDataSetEditor.cxx:464
 TGL5DDataSetEditor.cxx:465
 TGL5DDataSetEditor.cxx:466
 TGL5DDataSetEditor.cxx:467
 TGL5DDataSetEditor.cxx:468
 TGL5DDataSetEditor.cxx:469
 TGL5DDataSetEditor.cxx:470
 TGL5DDataSetEditor.cxx:471
 TGL5DDataSetEditor.cxx:472
 TGL5DDataSetEditor.cxx:473
 TGL5DDataSetEditor.cxx:474
 TGL5DDataSetEditor.cxx:475
 TGL5DDataSetEditor.cxx:476
 TGL5DDataSetEditor.cxx:477
 TGL5DDataSetEditor.cxx:478
 TGL5DDataSetEditor.cxx:479
 TGL5DDataSetEditor.cxx:480
 TGL5DDataSetEditor.cxx:481
 TGL5DDataSetEditor.cxx:482
 TGL5DDataSetEditor.cxx:483
 TGL5DDataSetEditor.cxx:484
 TGL5DDataSetEditor.cxx:485
 TGL5DDataSetEditor.cxx:486
 TGL5DDataSetEditor.cxx:487
 TGL5DDataSetEditor.cxx:488
 TGL5DDataSetEditor.cxx:489
 TGL5DDataSetEditor.cxx:490
 TGL5DDataSetEditor.cxx:491
 TGL5DDataSetEditor.cxx:492
 TGL5DDataSetEditor.cxx:493
 TGL5DDataSetEditor.cxx:494
 TGL5DDataSetEditor.cxx:495
 TGL5DDataSetEditor.cxx:496
 TGL5DDataSetEditor.cxx:497
 TGL5DDataSetEditor.cxx:498
 TGL5DDataSetEditor.cxx:499
 TGL5DDataSetEditor.cxx:500
 TGL5DDataSetEditor.cxx:501
 TGL5DDataSetEditor.cxx:502
 TGL5DDataSetEditor.cxx:503
 TGL5DDataSetEditor.cxx:504
 TGL5DDataSetEditor.cxx:505
 TGL5DDataSetEditor.cxx:506
 TGL5DDataSetEditor.cxx:507
 TGL5DDataSetEditor.cxx:508
 TGL5DDataSetEditor.cxx:509
 TGL5DDataSetEditor.cxx:510
 TGL5DDataSetEditor.cxx:511
 TGL5DDataSetEditor.cxx:512
 TGL5DDataSetEditor.cxx:513
 TGL5DDataSetEditor.cxx:514
 TGL5DDataSetEditor.cxx:515
 TGL5DDataSetEditor.cxx:516
 TGL5DDataSetEditor.cxx:517
 TGL5DDataSetEditor.cxx:518
 TGL5DDataSetEditor.cxx:519
 TGL5DDataSetEditor.cxx:520
 TGL5DDataSetEditor.cxx:521
 TGL5DDataSetEditor.cxx:522
 TGL5DDataSetEditor.cxx:523
 TGL5DDataSetEditor.cxx:524
 TGL5DDataSetEditor.cxx:525
 TGL5DDataSetEditor.cxx:526
 TGL5DDataSetEditor.cxx:527
 TGL5DDataSetEditor.cxx:528
 TGL5DDataSetEditor.cxx:529
 TGL5DDataSetEditor.cxx:530
 TGL5DDataSetEditor.cxx:531
 TGL5DDataSetEditor.cxx:532
 TGL5DDataSetEditor.cxx:533
 TGL5DDataSetEditor.cxx:534
 TGL5DDataSetEditor.cxx:535
 TGL5DDataSetEditor.cxx:536
 TGL5DDataSetEditor.cxx:537
 TGL5DDataSetEditor.cxx:538
 TGL5DDataSetEditor.cxx:539
 TGL5DDataSetEditor.cxx:540
 TGL5DDataSetEditor.cxx:541
 TGL5DDataSetEditor.cxx:542
 TGL5DDataSetEditor.cxx:543
 TGL5DDataSetEditor.cxx:544
 TGL5DDataSetEditor.cxx:545
 TGL5DDataSetEditor.cxx:546
 TGL5DDataSetEditor.cxx:547
 TGL5DDataSetEditor.cxx:548
 TGL5DDataSetEditor.cxx:549
 TGL5DDataSetEditor.cxx:550
 TGL5DDataSetEditor.cxx:551
 TGL5DDataSetEditor.cxx:552
 TGL5DDataSetEditor.cxx:553
 TGL5DDataSetEditor.cxx:554
 TGL5DDataSetEditor.cxx:555
 TGL5DDataSetEditor.cxx:556
 TGL5DDataSetEditor.cxx:557
 TGL5DDataSetEditor.cxx:558
 TGL5DDataSetEditor.cxx:559
 TGL5DDataSetEditor.cxx:560
 TGL5DDataSetEditor.cxx:561
 TGL5DDataSetEditor.cxx:562
 TGL5DDataSetEditor.cxx:563
 TGL5DDataSetEditor.cxx:564
 TGL5DDataSetEditor.cxx:565
 TGL5DDataSetEditor.cxx:566
 TGL5DDataSetEditor.cxx:567
 TGL5DDataSetEditor.cxx:568
 TGL5DDataSetEditor.cxx:569
 TGL5DDataSetEditor.cxx:570
 TGL5DDataSetEditor.cxx:571
 TGL5DDataSetEditor.cxx:572
 TGL5DDataSetEditor.cxx:573
 TGL5DDataSetEditor.cxx:574
 TGL5DDataSetEditor.cxx:575
 TGL5DDataSetEditor.cxx:576
 TGL5DDataSetEditor.cxx:577
 TGL5DDataSetEditor.cxx:578
 TGL5DDataSetEditor.cxx:579
 TGL5DDataSetEditor.cxx:580
 TGL5DDataSetEditor.cxx:581
 TGL5DDataSetEditor.cxx:582
 TGL5DDataSetEditor.cxx:583
 TGL5DDataSetEditor.cxx:584
 TGL5DDataSetEditor.cxx:585
 TGL5DDataSetEditor.cxx:586
 TGL5DDataSetEditor.cxx:587
 TGL5DDataSetEditor.cxx:588
 TGL5DDataSetEditor.cxx:589
 TGL5DDataSetEditor.cxx:590
 TGL5DDataSetEditor.cxx:591
 TGL5DDataSetEditor.cxx:592
 TGL5DDataSetEditor.cxx:593
 TGL5DDataSetEditor.cxx:594
 TGL5DDataSetEditor.cxx:595
 TGL5DDataSetEditor.cxx:596
 TGL5DDataSetEditor.cxx:597
 TGL5DDataSetEditor.cxx:598
 TGL5DDataSetEditor.cxx:599
 TGL5DDataSetEditor.cxx:600
 TGL5DDataSetEditor.cxx:601
 TGL5DDataSetEditor.cxx:602
 TGL5DDataSetEditor.cxx:603
 TGL5DDataSetEditor.cxx:604
 TGL5DDataSetEditor.cxx:605
 TGL5DDataSetEditor.cxx:606
 TGL5DDataSetEditor.cxx:607
 TGL5DDataSetEditor.cxx:608
 TGL5DDataSetEditor.cxx:609
 TGL5DDataSetEditor.cxx:610
 TGL5DDataSetEditor.cxx:611
 TGL5DDataSetEditor.cxx:612
 TGL5DDataSetEditor.cxx:613
 TGL5DDataSetEditor.cxx:614
 TGL5DDataSetEditor.cxx:615
 TGL5DDataSetEditor.cxx:616
 TGL5DDataSetEditor.cxx:617
 TGL5DDataSetEditor.cxx:618
 TGL5DDataSetEditor.cxx:619
 TGL5DDataSetEditor.cxx:620
 TGL5DDataSetEditor.cxx:621
 TGL5DDataSetEditor.cxx:622
 TGL5DDataSetEditor.cxx:623
 TGL5DDataSetEditor.cxx:624
 TGL5DDataSetEditor.cxx:625
 TGL5DDataSetEditor.cxx:626
 TGL5DDataSetEditor.cxx:627
 TGL5DDataSetEditor.cxx:628
 TGL5DDataSetEditor.cxx:629
 TGL5DDataSetEditor.cxx:630
 TGL5DDataSetEditor.cxx:631
 TGL5DDataSetEditor.cxx:632
 TGL5DDataSetEditor.cxx:633
 TGL5DDataSetEditor.cxx:634
 TGL5DDataSetEditor.cxx:635
 TGL5DDataSetEditor.cxx:636
 TGL5DDataSetEditor.cxx:637
 TGL5DDataSetEditor.cxx:638
 TGL5DDataSetEditor.cxx:639
 TGL5DDataSetEditor.cxx:640
 TGL5DDataSetEditor.cxx:641
 TGL5DDataSetEditor.cxx:642
 TGL5DDataSetEditor.cxx:643
 TGL5DDataSetEditor.cxx:644
 TGL5DDataSetEditor.cxx:645
 TGL5DDataSetEditor.cxx:646
 TGL5DDataSetEditor.cxx:647
 TGL5DDataSetEditor.cxx:648
 TGL5DDataSetEditor.cxx:649
 TGL5DDataSetEditor.cxx:650
 TGL5DDataSetEditor.cxx:651
 TGL5DDataSetEditor.cxx:652
 TGL5DDataSetEditor.cxx:653
 TGL5DDataSetEditor.cxx:654
 TGL5DDataSetEditor.cxx:655
 TGL5DDataSetEditor.cxx:656
 TGL5DDataSetEditor.cxx:657
 TGL5DDataSetEditor.cxx:658
 TGL5DDataSetEditor.cxx:659
 TGL5DDataSetEditor.cxx:660
 TGL5DDataSetEditor.cxx:661
 TGL5DDataSetEditor.cxx:662
 TGL5DDataSetEditor.cxx:663
 TGL5DDataSetEditor.cxx:664
 TGL5DDataSetEditor.cxx:665
 TGL5DDataSetEditor.cxx:666
 TGL5DDataSetEditor.cxx:667
 TGL5DDataSetEditor.cxx:668
 TGL5DDataSetEditor.cxx:669
 TGL5DDataSetEditor.cxx:670
 TGL5DDataSetEditor.cxx:671
 TGL5DDataSetEditor.cxx:672
 TGL5DDataSetEditor.cxx:673
 TGL5DDataSetEditor.cxx:674
 TGL5DDataSetEditor.cxx:675
 TGL5DDataSetEditor.cxx:676
 TGL5DDataSetEditor.cxx:677
 TGL5DDataSetEditor.cxx:678
 TGL5DDataSetEditor.cxx:679
 TGL5DDataSetEditor.cxx:680
 TGL5DDataSetEditor.cxx:681
 TGL5DDataSetEditor.cxx:682
 TGL5DDataSetEditor.cxx:683
 TGL5DDataSetEditor.cxx:684
 TGL5DDataSetEditor.cxx:685
 TGL5DDataSetEditor.cxx:686
 TGL5DDataSetEditor.cxx:687
 TGL5DDataSetEditor.cxx:688
 TGL5DDataSetEditor.cxx:689
 TGL5DDataSetEditor.cxx:690
 TGL5DDataSetEditor.cxx:691
 TGL5DDataSetEditor.cxx:692
 TGL5DDataSetEditor.cxx:693
 TGL5DDataSetEditor.cxx:694
 TGL5DDataSetEditor.cxx:695
 TGL5DDataSetEditor.cxx:696
 TGL5DDataSetEditor.cxx:697
 TGL5DDataSetEditor.cxx:698
 TGL5DDataSetEditor.cxx:699
 TGL5DDataSetEditor.cxx:700
 TGL5DDataSetEditor.cxx:701
 TGL5DDataSetEditor.cxx:702
 TGL5DDataSetEditor.cxx:703
 TGL5DDataSetEditor.cxx:704
 TGL5DDataSetEditor.cxx:705
 TGL5DDataSetEditor.cxx:706
 TGL5DDataSetEditor.cxx:707
 TGL5DDataSetEditor.cxx:708
 TGL5DDataSetEditor.cxx:709
 TGL5DDataSetEditor.cxx:710
 TGL5DDataSetEditor.cxx:711
 TGL5DDataSetEditor.cxx:712
 TGL5DDataSetEditor.cxx:713
 TGL5DDataSetEditor.cxx:714
 TGL5DDataSetEditor.cxx:715
 TGL5DDataSetEditor.cxx:716
 TGL5DDataSetEditor.cxx:717
 TGL5DDataSetEditor.cxx:718
 TGL5DDataSetEditor.cxx:719
 TGL5DDataSetEditor.cxx:720
 TGL5DDataSetEditor.cxx:721
 TGL5DDataSetEditor.cxx:722
 TGL5DDataSetEditor.cxx:723
 TGL5DDataSetEditor.cxx:724
 TGL5DDataSetEditor.cxx:725
 TGL5DDataSetEditor.cxx:726
 TGL5DDataSetEditor.cxx:727
 TGL5DDataSetEditor.cxx:728
 TGL5DDataSetEditor.cxx:729
 TGL5DDataSetEditor.cxx:730
 TGL5DDataSetEditor.cxx:731
 TGL5DDataSetEditor.cxx:732
 TGL5DDataSetEditor.cxx:733
 TGL5DDataSetEditor.cxx:734
 TGL5DDataSetEditor.cxx:735
 TGL5DDataSetEditor.cxx:736
 TGL5DDataSetEditor.cxx:737
 TGL5DDataSetEditor.cxx:738
 TGL5DDataSetEditor.cxx:739
 TGL5DDataSetEditor.cxx:740
 TGL5DDataSetEditor.cxx:741
 TGL5DDataSetEditor.cxx:742
 TGL5DDataSetEditor.cxx:743
 TGL5DDataSetEditor.cxx:744
 TGL5DDataSetEditor.cxx:745
 TGL5DDataSetEditor.cxx:746
 TGL5DDataSetEditor.cxx:747
 TGL5DDataSetEditor.cxx:748
 TGL5DDataSetEditor.cxx:749
 TGL5DDataSetEditor.cxx:750
 TGL5DDataSetEditor.cxx:751
 TGL5DDataSetEditor.cxx:752
 TGL5DDataSetEditor.cxx:753
 TGL5DDataSetEditor.cxx:754
 TGL5DDataSetEditor.cxx:755
 TGL5DDataSetEditor.cxx:756
 TGL5DDataSetEditor.cxx:757
 TGL5DDataSetEditor.cxx:758
 TGL5DDataSetEditor.cxx:759
 TGL5DDataSetEditor.cxx:760
 TGL5DDataSetEditor.cxx:761
 TGL5DDataSetEditor.cxx:762
 TGL5DDataSetEditor.cxx:763
 TGL5DDataSetEditor.cxx:764
 TGL5DDataSetEditor.cxx:765
 TGL5DDataSetEditor.cxx:766
 TGL5DDataSetEditor.cxx:767
 TGL5DDataSetEditor.cxx:768
 TGL5DDataSetEditor.cxx:769
 TGL5DDataSetEditor.cxx:770
 TGL5DDataSetEditor.cxx:771
 TGL5DDataSetEditor.cxx:772
 TGL5DDataSetEditor.cxx:773
 TGL5DDataSetEditor.cxx:774
 TGL5DDataSetEditor.cxx:775
 TGL5DDataSetEditor.cxx:776
 TGL5DDataSetEditor.cxx:777
 TGL5DDataSetEditor.cxx:778
 TGL5DDataSetEditor.cxx:779
 TGL5DDataSetEditor.cxx:780
 TGL5DDataSetEditor.cxx:781
 TGL5DDataSetEditor.cxx:782
 TGL5DDataSetEditor.cxx:783
 TGL5DDataSetEditor.cxx:784
 TGL5DDataSetEditor.cxx:785
 TGL5DDataSetEditor.cxx:786
 TGL5DDataSetEditor.cxx:787
 TGL5DDataSetEditor.cxx:788
 TGL5DDataSetEditor.cxx:789
 TGL5DDataSetEditor.cxx:790
 TGL5DDataSetEditor.cxx:791
 TGL5DDataSetEditor.cxx:792
 TGL5DDataSetEditor.cxx:793
 TGL5DDataSetEditor.cxx:794
 TGL5DDataSetEditor.cxx:795
 TGL5DDataSetEditor.cxx:796
 TGL5DDataSetEditor.cxx:797
 TGL5DDataSetEditor.cxx:798
 TGL5DDataSetEditor.cxx:799
 TGL5DDataSetEditor.cxx:800
 TGL5DDataSetEditor.cxx:801
 TGL5DDataSetEditor.cxx:802
 TGL5DDataSetEditor.cxx:803
 TGL5DDataSetEditor.cxx:804
 TGL5DDataSetEditor.cxx:805
 TGL5DDataSetEditor.cxx:806
 TGL5DDataSetEditor.cxx:807
 TGL5DDataSetEditor.cxx:808
 TGL5DDataSetEditor.cxx:809
 TGL5DDataSetEditor.cxx:810
 TGL5DDataSetEditor.cxx:811
 TGL5DDataSetEditor.cxx:812
 TGL5DDataSetEditor.cxx:813
 TGL5DDataSetEditor.cxx:814
 TGL5DDataSetEditor.cxx:815
 TGL5DDataSetEditor.cxx:816
 TGL5DDataSetEditor.cxx:817
 TGL5DDataSetEditor.cxx:818
 TGL5DDataSetEditor.cxx:819
 TGL5DDataSetEditor.cxx:820
 TGL5DDataSetEditor.cxx:821
 TGL5DDataSetEditor.cxx:822
 TGL5DDataSetEditor.cxx:823
 TGL5DDataSetEditor.cxx:824
 TGL5DDataSetEditor.cxx:825
 TGL5DDataSetEditor.cxx:826
 TGL5DDataSetEditor.cxx:827
 TGL5DDataSetEditor.cxx:828
 TGL5DDataSetEditor.cxx:829
 TGL5DDataSetEditor.cxx:830
 TGL5DDataSetEditor.cxx:831
 TGL5DDataSetEditor.cxx:832
 TGL5DDataSetEditor.cxx:833
 TGL5DDataSetEditor.cxx:834
 TGL5DDataSetEditor.cxx:835
 TGL5DDataSetEditor.cxx:836
 TGL5DDataSetEditor.cxx:837
 TGL5DDataSetEditor.cxx:838
 TGL5DDataSetEditor.cxx:839
 TGL5DDataSetEditor.cxx:840
 TGL5DDataSetEditor.cxx:841
 TGL5DDataSetEditor.cxx:842
 TGL5DDataSetEditor.cxx:843
 TGL5DDataSetEditor.cxx:844
 TGL5DDataSetEditor.cxx:845
 TGL5DDataSetEditor.cxx:846
 TGL5DDataSetEditor.cxx:847
 TGL5DDataSetEditor.cxx:848
 TGL5DDataSetEditor.cxx:849
 TGL5DDataSetEditor.cxx:850
 TGL5DDataSetEditor.cxx:851
 TGL5DDataSetEditor.cxx:852
 TGL5DDataSetEditor.cxx:853
 TGL5DDataSetEditor.cxx:854
 TGL5DDataSetEditor.cxx:855
 TGL5DDataSetEditor.cxx:856
 TGL5DDataSetEditor.cxx:857
 TGL5DDataSetEditor.cxx:858
 TGL5DDataSetEditor.cxx:859
 TGL5DDataSetEditor.cxx:860
 TGL5DDataSetEditor.cxx:861
 TGL5DDataSetEditor.cxx:862
 TGL5DDataSetEditor.cxx:863
 TGL5DDataSetEditor.cxx:864
 TGL5DDataSetEditor.cxx:865
 TGL5DDataSetEditor.cxx:866
 TGL5DDataSetEditor.cxx:867
 TGL5DDataSetEditor.cxx:868
 TGL5DDataSetEditor.cxx:869
 TGL5DDataSetEditor.cxx:870