// @(#)root/treeviewer:$Id$
// Author: Bastien Dalla Piazza  20/07/07

/*************************************************************************
 * Copyright (C) 1995-2007, 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 "TSpiderEditor.h"
#include "TSpider.h"
#include "TGFrame.h"
#include "TGButton.h"
#include "TGNumberEntry.h"
#include "TGButtonGroup.h"
#include <Riostream.h>
#include "TGLabel.h"
#include "TGPicture.h"
#include "TGTextEntry.h"
#include "TG3DLine.h"
#include "TGComboBox.h"
#include "TGColorSelect.h"
#include "TGedPatternSelect.h"
#include "TColor.h"

//______________________________________________________________________________
/* Begin_Html
<center><h2>The TSpider editor class</h2></center>
Provides the graphical user interface to the spider plots.
End_Html */


ClassImp(TSpiderEditor)

enum ESpiderWid {
   kAverage,
   kNx,
   kNy,
   kPolyLines,
   kSegment,
   kGotoEntry,
   kNext,
   kPrevious,
   kFollowing,
   kPreceding,
   kAddVar,
   kDeleteVar,
   kAvLineStyle,
   kAvLineColor,
   kAvLineWidth,
   kAvFillColor,
   kAvFillStyle
};

//______________________________________________________________________________
TSpiderEditor::TSpiderEditor(const TGWindow* /*p*/, Int_t /*width*/, Int_t /*height*/, UInt_t /*options*/, Pixel_t /*back*/)
{
   // Normal constructor.

   fPriority = 1;
   MakeTitle("Spider");

   fBgroup = new TGButtonGroup(this,2,1,0,0, "Plot type");
   fBgroup->SetRadioButtonExclusive(kTRUE);
   fPolyLines = new TGRadioButton(fBgroup, "PolyLine", kPolyLines);
   fPolyLines->SetToolTipText("Set a polyline plot type");
   fSegment = new TGRadioButton(fBgroup, "Segment", kSegment);
   fSegment->SetToolTipText("Set a segment plot type");
   fBgroup->ChangeOptions(kFitWidth|kChildFrame);
   AddFrame(fBgroup, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4, 1, 0, 0));

   TGHorizontalFrame *f1 = new TGHorizontalFrame(this);

   TGLabel *nxLabel = new TGLabel(f1,"Nx:");
   f1->AddFrame(nxLabel, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 0, 1, 1));
   fSetNx = new TGNumberEntryField(f1, kNx, 2,
                                      TGNumberFormat::kNESInteger,
                                      TGNumberFormat::kNEAPositive,
                                      TGNumberFormat::kNELLimitMinMax, 0, 99);
   fSetNx->SetToolTipText("Set the X number of plots");
   fSetNx->Resize(30,20);
   f1->AddFrame(fSetNx, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   TGLabel *nyLabel = new TGLabel(f1,"Ny:");
   f1->AddFrame(nyLabel, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 0, 1, 1));
   fSetNy = new TGNumberEntryField(f1, kNy, 2,
                                      TGNumberFormat::kNESInteger,
                                      TGNumberFormat::kNEAPositive,
                                      TGNumberFormat::kNELLimitMinMax, 0, 99);
   fSetNy->SetToolTipText("Set the Y number of plots");
   fSetNy->Resize(30,20);
   f1->AddFrame(fSetNy, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft,1,1,1,1));

   MakeTitle("Average");

   fDisplayAverage = new TGCheckButton(this, "Average",kAverage);
   fDisplayAverage->SetToolTipText("Display average");
   AddFrame(fDisplayAverage, new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));

   TGHorizontalFrame *f2 = new TGHorizontalFrame(this);

   fAvLineColorSelect = new TGColorSelect(f2, 0, kAvLineColor);
   f2->AddFrame(fAvLineColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   fAvLineWidthCombo = new TGLineWidthComboBox(f2, kAvLineWidth);
   fAvLineWidthCombo->Resize(91, 20);
   f2->AddFrame(fAvLineWidthCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));

   AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   fAvLineStyleCombo = new TGLineStyleComboBox(this, kAvLineStyle);
   fAvLineStyleCombo->Resize(137, 20);
   AddFrame(fAvLineStyleCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));

   TGHorizontalFrame *f2b = new TGHorizontalFrame(this);

   fAvFillColorSelect = new TGColorSelect(f2b, 0, kAvFillColor);
   f2b->AddFrame(fAvFillColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   fAvFillPatternSelect = new TGedPatternSelect(f2b, 1, kAvFillStyle);
   f2b->AddFrame(fAvFillPatternSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));

   AddFrame(f2b, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   MakeBrowse();
}


//______________________________________________________________________________
TSpiderEditor::~TSpiderEditor()
{
   // Destructor of the TSpidereditor.

   delete fPolyLines;
   delete fSegment;
}

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

   fDisplayAverage->Connect("Toggled(Bool_t)", "TSpiderEditor", this, "DoDisplayAverage(Bool_t)");
   fSetNx->Connect("ReturnPressed()", "TSpiderEditor", this, "DoSetNx()");
   fSetNy->Connect("ReturnPressed()", "TSpiderEditor", this, "DoSetNy()");
   fBgroup->Connect("Clicked(Int_t)","TSpiderEditor",this,"DoSetPlotType()");
   fGotoEntry->Connect("ReturnPressed()", "TSpiderEditor", this, "DoGotoEntry()");
   fGotoNext->Connect("Clicked()","TSpiderEditor",this,"DoGotoNext()");
   fGotoPrevious->Connect("Clicked()","TSpiderEditor",this,"DoGotoPrevious()");
   fGotoFollowing->Connect("Clicked()","TSpiderEditor",this,"DoGotoFollowing()");
   fGotoPreceding->Connect("Clicked()","TSpiderEditor",this,"DoGotoPreceding()");
   fAddVar->Connect("ReturnPressed()","TSpiderEditor",this,"DoAddVar()");
   fDeleteVar->Connect("ReturnPressed()","TSpiderEditor",this,"DoDeleteVar()");
   fAvLineStyleCombo->Connect("Selected(Int_t)", "TSpiderEditor", this, "DoAvLineStyle(Int_t)");
   fAvLineWidthCombo->Connect("Selected(Int_t)", "TSpiderEditor", this, "DoAvLineWidth(Int_t)");
   fAvLineColorSelect->Connect("ColorSelected(Pixel_t)", "TSpiderEditor", this, "DoAvLineColor(Pixel_t)");
   fAvFillColorSelect->Connect("ColorSelected(Pixel_t)", "TSpiderEditor", this, "DoAvFillColor(Pixel_t)");
   fAvFillPatternSelect->Connect("PatternSelected(Style_t)", "TSpiderEditor", this, "DoAvFillPattern(Style_t)");

   fInit = kFALSE;
}


//______________________________________________________________________________
void TSpiderEditor::MakeBrowse()
{
   // Make the Browse tab.

   fBrowse = CreateEditorTabSubFrame("Browse");

   TGHorizontalFrame *title1 = new TGHorizontalFrame(fBrowse);
   title1->AddFrame(new TGLabel(title1, "Entries"),
                    new TGLayoutHints(kLHintsLeft, 3, 1, 0, 0));
   title1->AddFrame(new TGHorizontal3DLine(title1),
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBrowse->AddFrame(title1, new TGLayoutHints(kLHintsExpandX, 0, 0, 2, 0));

   TGHorizontalFrame *f3 = new TGHorizontalFrame(fBrowse);

   TGLabel *gotoEntryLabel = new TGLabel(f3,"Go to:");
   f3->AddFrame(gotoEntryLabel, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 18, 1, 5));
   fGotoEntry = new TGNumberEntryField(f3, kGotoEntry, 0,
                                      TGNumberFormat::kNESInteger,
                                      TGNumberFormat::kNEANonNegative);
   fGotoEntry->SetToolTipText("Jump to a specified entry");
   fGotoEntry->Resize(60,20);
   f3->AddFrame(fGotoEntry, new TGLayoutHints(kLHintsRight, 1, 1, 1, 1));

   fBrowse->AddFrame(f3,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   TGHorizontalFrame *f2 = new TGHorizontalFrame(fBrowse);

   fPicPrevious = gClient->GetPicture("first_t.xpm");
   fGotoPrevious = new TGPictureButton(f2,fPicPrevious,kPrevious);
   fGotoPrevious->SetToolTipText("Jump to the last entries");
   f2->AddFrame(fGotoPrevious,new TGLayoutHints(kLHintsCenterX | kLHintsBottom, 1, 1, 1, 1));

   fPicPreceding = gClient->GetPicture("previous_t.xpm");
   fGotoPreceding = new TGPictureButton(f2,fPicPreceding,kPreceding);
   fGotoPreceding->SetToolTipText("Jump to the last entries");
   f2->AddFrame(fGotoPreceding,new TGLayoutHints(kLHintsCenterX | kLHintsBottom, 1, 1, 1, 1));

   fPicFollowing = gClient->GetPicture("next_t.xpm");
   fGotoFollowing = new TGPictureButton(f2,fPicFollowing,kFollowing);
   fGotoFollowing->SetToolTipText("Jump to the last entries");
   f2->AddFrame(fGotoFollowing,new TGLayoutHints(kLHintsCenterX | kLHintsBottom, 1, 1, 1, 1));

   fPicNext = gClient->GetPicture("last_t.xpm");
   fGotoNext = new TGPictureButton(f2,fPicNext,kNext);
   fGotoNext->SetToolTipText("Jump to the next entries");
   f2->AddFrame(fGotoNext,new TGLayoutHints(kLHintsCenterX | kLHintsBottom, 1, 1, 1, 1));

   fBrowse->AddFrame(f2,new TGLayoutHints(kLHintsCenterX | kLHintsCenterY));

   TGHorizontalFrame *title2 = new TGHorizontalFrame(fBrowse);

   title2->AddFrame(new TGLabel(title2, "Variables"),
                    new TGLayoutHints(kLHintsLeft, 3, 1, 0, 0));
   title2->AddFrame(new TGHorizontal3DLine(title2),
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBrowse->AddFrame(title2, new TGLayoutHints(kLHintsExpandX, 0, 0, 2, 0));

   TGHorizontalFrame *f4 = new TGHorizontalFrame(fBrowse);

   TGVerticalFrame *v1 = new TGVerticalFrame(f4);

   TGLabel *addVar = new TGLabel(v1,"Add:");
   v1->AddFrame(addVar,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   TGLabel *deleteVar = new TGLabel(v1,"Delete:");
   v1->AddFrame(deleteVar,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   f4->AddFrame(v1, new TGLayoutHints(kLHintsLeft | kLHintsTop,5,5,0,0));

   TGVerticalFrame *v2 = new TGVerticalFrame(f4);

   fAddVar = new TGTextEntry(v2, new TGTextBuffer(50), kAddVar);
   fAddVar->Resize(60,20);
   fAddVar->SetToolTipText("Add a variable");
   v2->AddFrame(fAddVar, new TGLayoutHints(kLHintsRight | kLHintsTop));

   fDeleteVar = new TGTextEntry(v2, new TGTextBuffer(50), kAddVar);
   fDeleteVar->Resize(60,20);
   fDeleteVar->SetToolTipText("Delete a variable");
   v2->AddFrame(fDeleteVar, new TGLayoutHints(kLHintsRight | kLHintsTop));

   f4->AddFrame(v2, new TGLayoutHints(kLHintsLeft | kLHintsTop,5,5,0,0));

   fBrowse->AddFrame(f4, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
}


//______________________________________________________________________________
void TSpiderEditor::SetModel(TObject* obj)
{
   // Pick up the used spider attributes.

   if (!obj) return;
   fSpider = dynamic_cast<TSpider*>(obj);
   if (!fSpider) return;
   fAvoidSignal = kTRUE;

   Bool_t av = fSpider->GetDisplayAverage();
   if(av) fDisplayAverage->SetState(kButtonDown);
   else fDisplayAverage->SetState(kButtonUp);

   fSetNx->SetNumber(fSpider->GetNx());
   fSetNy->SetNumber(fSpider->GetNy());

   Bool_t seg = fSpider->GetSegmentDisplay();

   if(seg) fBgroup->SetButton(kSegment,kTRUE);
   else fBgroup->SetButton(kPolyLines,kTRUE);

   fGotoEntry->SetNumber(fSpider->GetCurrentEntry());

   fAddVar->SetText("");
   fDeleteVar->SetText("");

   fAvLineStyleCombo->Select(fSpider->GetAverageLineStyle());
   fAvLineWidthCombo->Select(fSpider->GetAverageLineWidth());
   Color_t c = fSpider->GetAverageLineColor();
   Pixel_t p = TColor::Number2Pixel(c);
   fAvLineColorSelect->SetColor(p);
   c = fSpider->GetAverageFillColor();
   p = TColor::Number2Pixel(c);
   fAvFillColorSelect->SetColor(p,kFALSE);
   fAvFillPatternSelect->SetPattern(fSpider->GetAverageFillStyle(),kFALSE);

   if (fInit) ConnectSignals2Slots();

   fAvoidSignal = kFALSE;
}


//______________________________________________________________________________
void TSpiderEditor::DoAddVar()
{
   // Slot to add a variable.

   if (fAvoidSignal) return;

   const char * var = fAddVar->GetText();
   fSpider->AddVariable(var);
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoAvLineStyle(Int_t a)
{
   // Slot to set the average LineStyle.

   if (fAvoidSignal) return;

   fSpider->SetAverageLineStyle(a);
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoAvLineWidth(Int_t a)
{
   // Slot to set the average LineWidth.

   if (fAvoidSignal) return;

   fSpider->SetAverageLineWidth(a);
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoAvLineColor(Pixel_t a)
{
   // Slot to set the average LineColor.

   if (fAvoidSignal) return;

   fSpider->SetAverageLineColor(TColor::GetColor(a));
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoAvFillColor(Pixel_t a)
{
   // Slot to set the average FillColor.

   if (fAvoidSignal) return;

   fSpider->SetAverageFillColor(TColor::GetColor(a));
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoAvFillPattern(Style_t a)
{
   // Slot to set the average FillStyle.

   if (fAvoidSignal) return;

   fSpider->SetAverageFillStyle(a);
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoDeleteVar()
{
   // Slot to delete a variable.

   if (fAvoidSignal) return;

   const char * var = fDeleteVar->GetText();
   fSpider->DeleteVariable(var);
   Update();
}


//______________________________________________________________________________
void TSpiderEditor::DoDisplayAverage(Bool_t av)
{
   // Slot Connected to the average display.

   if (fAvoidSignal) return;

   fSpider->SetDisplayAverage(av);
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoGotoEntry()
{
   // Slot to select an entry by number.

   if (fAvoidSignal) return;
   Long64_t ev = (Long64_t)fGotoEntry->GetNumber();
   fSpider->GotoEntry(ev);
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoGotoNext()
{
   // Slot to Go to next entries.

   if (fAvoidSignal) return;
   fSpider->GotoNext();
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoGotoPrevious()
{
   // Slot to go to previous entries.

   if (fAvoidSignal) return;
   fSpider->GotoPrevious();
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoGotoFollowing()
{
   // Slot to go to next entry.

   if (fAvoidSignal) return;
   fSpider->GotoFollowing();
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoGotoPreceding()
{
   // Slot to go to last entry.

   if (fAvoidSignal) return;
   fSpider->GotoPreceding();
   Update();
}


//______________________________________________________________________________
void  TSpiderEditor::DoSetNx()
{
   // Slot connected to the nx setting.

   if (fAvoidSignal) return;
   UInt_t nx = (UInt_t)fSetNx->GetNumber();
   fSpider->SetNx(nx);
   Update();
}

//______________________________________________________________________________
void  TSpiderEditor::DoSetNy()
{
   // Slot connected to the nx setting.

   if (fAvoidSignal) return;
   UInt_t ny = (UInt_t)fSetNy->GetNumber();
   fSpider->SetNy(ny);
   Update();
}

//______________________________________________________________________________
void  TSpiderEditor::DoSetPlotType()
{
   // Slot to set the plot type.

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