ROOT logo
// @(#)root/gui:$Id: TGTextEditDialogs.cxx 28845 2009-06-08 13:53:44Z rdm $
// Author: Fons Rademakers   10/7/2000

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

    This source is based on Xclass95, a Win95-looking GUI toolkit.
    Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.

    Xclass95 is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

**************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGTextEditDialogs                                                    //
//                                                                      //
// This file defines several dialogs that are used by the TGTextEdit    //
// widget via its associated context popup menu.                        //
// The following dialogs are available: TGSearchDialog, TGGotoDialog    //
// and TGPrintDialog.                                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGTextEditDialogs.h"
#include "TGButton.h"
#include "TGLabel.h"
#include "TGTextEntry.h"
#include "TGIcon.h"
#include "TGMsgBox.h"
#include "TGComboBox.h"

#include <stdlib.h>


ClassImp(TGSearchDialog)
ClassImp(TGPrintDialog)
ClassImp(TGGotoDialog)

static TString gLastSearchString;
TGSearchDialog *TGSearchDialog::fgSearchDialog = 0;

//______________________________________________________________________________
TGSearchDialog::TGSearchDialog(const TGWindow *p, const TGWindow *main,
                               UInt_t w, UInt_t h, TGSearchType *sstruct,
                               Int_t *ret_code, UInt_t options) :
     TGTransientFrame(p, main, w, h, options)
{
   // Create a search dialog box. Used to get from the user the required
   // search instructions. Ret_code is kTRUE when sstruct has been set,
   // kFALSE otherwise (like when dialog was canceled).

   if (!p && !main) {
      MakeZombie();
      return;
   }
   fRetCode = ret_code;
   fType = sstruct;

   ChangeOptions((GetOptions() & ~kVerticalFrame) | kHorizontalFrame);

   fF1 = new TGCompositeFrame(this, 60, 20, kVerticalFrame | kFixedWidth);
   fF2 = new TGCompositeFrame(this, 60, 20, kVerticalFrame);
   fF3 = new TGCompositeFrame(fF2, 60, 20, kHorizontalFrame);
   fF4 = new TGCompositeFrame(fF2, 60, 20, kHorizontalFrame);

   fSearchButton = new TGTextButton(fF1, new TGHotString("&Search"), 1);
   fCancelButton = new TGTextButton(fF1, new TGHotString("&Cancel"), 2);
   fF1->Resize(fSearchButton->GetDefaultWidth()+40, GetDefaultHeight());

   fSearchButton->Associate(this);
   fCancelButton->Associate(this);

   fL1 = new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0);
   fL2 = new TGLayoutHints(kLHintsTop | kLHintsRight | kLHintsExpandX,
                           2, 5, 0, 2);
   fL21 = new TGLayoutHints(kLHintsTop | kLHintsRight, 2, 5, 10, 0);

   fF1->AddFrame(fSearchButton, fL1);
   fF1->AddFrame(fCancelButton, fL1);

   AddFrame(fF1, fL21);

   fLSearch = new TGLabel(fF3, new TGHotString("Search &for:"));

   fBSearch = new TGTextBuffer(100);
   if (!gLastSearchString.IsNull())
      fBSearch->AddText(0, gLastSearchString.Data());
   else
      fSearchButton->SetState(kButtonDisabled);

   fCombo = new TGComboBox(fF3, "");
   fSearch = fCombo->GetTextEntry();
   fBSearch = fSearch->GetBuffer();
   fSearch->Associate(this);
   fCombo->Resize(220, fSearch->GetDefaultHeight());
   fSearch->SelectAll();

   fL5 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 5, 0, 0);
   fL6 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 2, 0, 0);

   fF3->AddFrame(fLSearch, fL5);
   fF3->AddFrame(fCombo, fL6);

   fG2 = new TGGroupFrame(fF4, new TGString("Direction"), kHorizontalFrame);

   fL3 = new TGLayoutHints(kLHintsTop | kLHintsRight, 2, 2, 2, 2);
   fL9 = new TGLayoutHints(kLHintsBottom | kLHintsLeft, 0, 0, 0, 0);
   fL4 = new TGLayoutHints(kLHintsBottom | kLHintsLeft, 0, 0, 5, 0);
   fL10 = new TGLayoutHints(kLHintsBottom | kLHintsRight, 0, 0, 5, 0);

   fCaseCheck = new TGCheckButton(fF4, new TGHotString("&Case sensitive"), 1);
   fCaseCheck->Associate(this);
   fF4->AddFrame(fCaseCheck, fL9);

   fDirectionRadio[0] = new TGRadioButton(fG2, new TGHotString("Forward"),  1);
   fDirectionRadio[1] = new TGRadioButton(fG2, new TGHotString("Backward"), 2);

   fG2->AddFrame(fDirectionRadio[0], fL4);
   fG2->AddFrame(fDirectionRadio[1], fL10);
   fDirectionRadio[0]->Associate(this);
   fDirectionRadio[1]->Associate(this);

   if (fType->fCaseSensitive == kFALSE)
      fCaseCheck->SetState(kButtonUp);
   else
      fCaseCheck->SetState(kButtonDown);

   if (fType->fDirection)
      fDirectionRadio[0]->SetState(kButtonDown);
   else
      fDirectionRadio[1]->SetState(kButtonDown);

   fF4->AddFrame(fG2, fL3);

   fF2->AddFrame(fF3, fL1);
   fF2->AddFrame(fF4, fL1);

   AddFrame(fF2, fL2);

   MapSubwindows();
   Resize(GetDefaultSize());
   SetEditDisabled(kEditDisable);

   CenterOnParent();

   SetWindowName("Search");
   SetIconName("Search");

   SetMWMHints(kMWMDecorAll | kMWMDecorMaximize | kMWMDecorMenu,
               kMWMFuncAll | kMWMFuncMaximize | kMWMFuncResize,
               kMWMInputModeless);

   if (fType->fClose) {
      MapWindow();
      fSearch->RequestFocus();
      fClient->WaitFor(this);
   }
}

//______________________________________________________________________________
TGSearchDialog::~TGSearchDialog()
{
   // Clean up search dialog.

   if (IsZombie()) return;
   delete fSearchButton;
   delete fCancelButton;
   delete fDirectionRadio[0]; delete fDirectionRadio[1];
   delete fCaseCheck;
   delete fCombo;
   delete fLSearch;
   delete fG2;
   delete fF1; delete fF2; delete fF3; delete fF4;
   delete fL1; delete fL2; delete fL3; delete fL4; delete fL5; delete fL6;
   delete fL21;delete fL9; delete fL10;
}

//______________________________________________________________________________
void TGSearchDialog::CloseWindow()
{
   // Close the dialog. On close the dialog will be deleted and cannot be
   // re-used.

   if (fType->fClose) {
      DeleteWindow();
   } else {
      UnmapWindow();
   }
}

//______________________________________________________________________________
void TGSearchDialog::TextEntered(const char *text)
{
   // emit signal when search text entered

   Emit("TextEntered(const char *)", text);
}

//______________________________________________________________________________
Bool_t TGSearchDialog::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process search dialog widget messages.

   const char *string;

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               switch (parm1) {
                  case 1:
                     string = fBSearch->GetString();
                     if (fType->fBuffer) 
                        delete [] fType->fBuffer;
                     fType->fBuffer = StrDup(string);
                     gLastSearchString = string;
                     *fRetCode = kTRUE;
                     TextEntered(string);
                     fCombo->ReturnPressed();
                     if (fType->fClose) CloseWindow();
                     break;
                  case 2:
                     *fRetCode = kFALSE;
                     CloseWindow();
                     break;
               }
               break;

            case kCM_CHECKBUTTON:
               fType->fCaseSensitive = !fType->fCaseSensitive;
               break;

            case kCM_RADIOBUTTON:
               switch (parm1) {
                  case 1:
                     fType->fDirection = kTRUE;
                     fDirectionRadio[1]->SetState(kButtonUp);
                     break;
                  case 2:
                     fType->fDirection = kFALSE;
                     fDirectionRadio[0]->SetState(kButtonUp);
                     break;
               }
               break;

            default:
               break;
         }
         break;

      case kC_TEXTENTRY:
         switch (GET_SUBMSG(msg)) {
            case kTE_TEXTCHANGED:
               string = fBSearch->GetString();
               if (strlen(string) == 0) {
                  fSearchButton->SetState(kButtonDisabled);
               } else {
                  fSearchButton->SetState(kButtonUp);
               }
               break;
            case kTE_ENTER:
               string = fBSearch->GetString();
               if (fType->fBuffer) 
                  delete [] fType->fBuffer;
               fType->fBuffer = StrDup(string);
               gLastSearchString = string;
               *fRetCode = kTRUE;
               TextEntered(string);
               if (fType->fClose) CloseWindow();
               break;
            default:
               break;
         }
         break;

      default:
         break;
   }

   return kTRUE;
}

//______________________________________________________________________________
TGSearchDialog *&TGSearchDialog::SearchDialog()
{
   // Return global search dialog.

   return fgSearchDialog;
}


//______________________________________________________________________________
TGPrintDialog::TGPrintDialog(const TGWindow *p, const TGWindow *main,
                             UInt_t w, UInt_t h, char **printerName,
                             char **printProg, Int_t *ret_code,
                             UInt_t options) :
   TGTransientFrame(p, main, w, h, options)
{
   // Create the printer dialog box. Returns kTRUE in ret_code when
   // printerName and printProg have been set and cancel was not pressed,
   // kFALSE otherwise.

   if (!p && !main) {
      MakeZombie();
      return;
   }
   fPrinter      = printerName;
   fPrintCommand = printProg;
   fRetCode      = ret_code;
   fEditDisabled = kEditDisable;

   ChangeOptions((GetOptions() & ~kVerticalFrame) | kHorizontalFrame);

   fF1 = new TGCompositeFrame(this, 60, 20, kVerticalFrame | kFixedWidth);
   fF5 = new TGCompositeFrame(this, 60, 20, kHorizontalFrame);
   fF2 = new TGCompositeFrame(fF5,  60, 20, kVerticalFrame);
   fF3 = new TGCompositeFrame(fF2,  60, 20, kHorizontalFrame);
   fF4 = new TGCompositeFrame(fF2,  60, 20, kHorizontalFrame);

   fPrintButton  = new TGTextButton(fF1, new TGHotString("&Print"), 1);
   fCancelButton = new TGTextButton(fF1, new TGHotString("&Cancel"), 2);
   fF1->Resize(fPrintButton->GetDefaultWidth()+40, GetDefaultHeight());

   fPrintButton->Associate(this);
   fCancelButton->Associate(this);

   fL1 = new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2);
   fL2 = new TGLayoutHints(kLHintsTop | kLHintsRight | kLHintsExpandX,
                           2, 5, 0, 2);
   fL3 = new TGLayoutHints(kLHintsTop | kLHintsRight, 2, 2, 4, 4);
   fL5 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 5, 0, 0);
   fL6 = new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 2, 0, 0);
   fL7 = new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10);

   fL21 = new TGLayoutHints(kLHintsTop | kLHintsRight, 2, 5, 10, 0);

   fF1->AddFrame(fPrintButton, fL1);
   fF1->AddFrame(fCancelButton, fL1);
   AddFrame(fF1, fL3);


   fLPrintCommand = new TGLabel(fF3, new TGHotString("Print command:"));
   fBPrintCommand = new TGTextBuffer(50);
   fBPrintCommand->AddText(0, *printProg);
   fPrintCommandEntry = new TGTextEntry(fF3, fBPrintCommand);
   fPrintCommandEntry->Associate(this);
   fPrintCommandEntry->Resize(100, fPrintCommandEntry->GetDefaultHeight());

   fF3->AddFrame(fLPrintCommand, fL5);
   fF3->AddFrame(fPrintCommandEntry, fL6);

   fLPrinter = new TGLabel(fF4, new TGHotString("Printer:"));
   fBPrinter = new TGTextBuffer(20);
   fBPrinter->AddText(0, *printerName);
   fPrinterEntry = new TGTextEntry(fF4, fBPrinter);
   fPrinterEntry->Associate(this);
   fPrinterEntry->Resize(100, fPrinterEntry->GetDefaultHeight());
   fF4->AddFrame(fLPrinter, fL5);
   fF4->AddFrame(fPrinterEntry, fL6);

   fF2->AddFrame(fF3, fL1);
   fF2->AddFrame(fF4, fL1);

   const TGPicture *printerPicture = fClient->GetPicture("printer_s.xpm");
   if (!printerPicture) {
      Error("TGPrintDialog", "printer_s.xpm not found");
      fPrinterIcon = 0;
   } else {
      fPrinterIcon = new TGIcon(fF5, printerPicture, 32, 32);
      fF5->AddFrame(fPrinterIcon, fL7);
   }
   fF5->AddFrame(fF2, fL1);
   AddFrame(fF5, fL1);

   MapSubwindows();
   Resize(GetDefaultSize());

   CenterOnParent();

   SetWindowName("Print");
   SetIconName("Print");

   SetMWMHints(kMWMDecorAll | kMWMDecorMaximize | kMWMDecorMenu,
               kMWMFuncAll | kMWMFuncMaximize | kMWMFuncResize,
               kMWMInputModeless);

   fPrinterEntry->RequestFocus();
   MapWindow();
   fClient->WaitFor(this);
}

//______________________________________________________________________________
TGPrintDialog::~TGPrintDialog()
{
   // Clean up print dialog.

   if (IsZombie()) return;
   delete fPrinterIcon;
   delete fPrintButton;
   delete fCancelButton;
   delete fPrinterEntry;       // deletes also fBPrinter
   delete fPrintCommandEntry;  // deletes also fBPrintCommand
   delete fLPrinter; delete fLPrintCommand;
   delete fF1; delete fF2; delete fF3; delete fF4; delete fF5;
   delete fL1; delete fL2; delete fL3; delete fL5; delete fL6; delete fL7;
   delete fL21;
}

//______________________________________________________________________________
void TGPrintDialog::CloseWindow()
{
   // Close the dialog. On close the dialog will be deleted and cannot be
   // re-used.

   DeleteWindow();
}

//______________________________________________________________________________
Bool_t TGPrintDialog::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process print dialog widget messages.

   const char *string, *txt;

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               switch (parm1) {
                  case 1:
                     *fRetCode = kTRUE;
                     string = fBPrinter->GetString();
                     delete [] *fPrinter;
                     *fPrinter = new char[strlen(string)+1];
                     strcpy(*fPrinter, string);

                     string = fBPrintCommand->GetString();
                     delete [] *fPrintCommand;
                     *fPrintCommand = new char[strlen(string)+1];
                     strcpy(*fPrintCommand, string);

                     if (fBPrintCommand->GetTextLength() == 0) {
                        txt = "Please provide print command or use \"Cancel\"";
                        new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                                     "Missing Print Parameters", txt, kMBIconExclamation,
                                      kMBOk);
                        return kTRUE;
                     }
                     CloseWindow();
                     break;
                  case 2:
                     *fRetCode = kFALSE;
                     CloseWindow();
                     break;
               }
               break;
         }
         break;

      default:
         break;
   }

   return kTRUE;
}

//______________________________________________________________________________
TGGotoDialog::TGGotoDialog(const TGWindow *p, const TGWindow *main,
                           UInt_t w, UInt_t h, Long_t *ret_code,
                           UInt_t options) :
   TGTransientFrame(p, main, w, h, options)
{
   // Create a dialog to GoTo a specific line number. Returns -1 in
   // ret_code in case no valid line number was given or in case
   // cancel was pressed. If on input *ret_code is > 0 then this value
   // will be used as default value.

   if (!p && !main) {
      MakeZombie();
      return;
   }
   fRetCode = ret_code;
   fEditDisabled = kEditDisable;

   ChangeOptions((GetOptions() & ~kVerticalFrame) | kHorizontalFrame);

   fF1 = new TGCompositeFrame(this, 60, 20, kVerticalFrame | kFixedWidth);
   fF2 = new TGCompositeFrame(this, 60, 20, kHorizontalFrame);

   fGotoButton = new TGTextButton(fF1, new TGHotString("&Goto"), 1);
   fCancelButton = new TGTextButton(fF1, new TGHotString("&Cancel"), 2);
   fF1->Resize(fGotoButton->GetDefaultWidth()+40, GetDefaultHeight());

   fGotoButton->Associate(this);
   fCancelButton->Associate(this);

   fL1 = new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0);
   fL21 = new TGLayoutHints(kLHintsTop | kLHintsRight, 2, 5, 10, 0);

   fF1->AddFrame(fGotoButton, fL1);
   fF1->AddFrame(fCancelButton, fL1);
   AddFrame(fF1, fL21);

   fLGoTo = new TGLabel(fF2, new TGHotString("&Goto Line:"));

   fBGoTo = new TGTextBuffer(50);
   if (*fRetCode > 0) {
      char curline[32];
      sprintf(curline, "%ld", *fRetCode);
      fBGoTo->AddText(0, curline);
   } else
      fGotoButton->SetState(kButtonDisabled);
   fGoTo = new TGTextEntry(fF2, fBGoTo);
   fGoTo->Associate(this);
   fGoTo->Resize(220, fGoTo->GetDefaultHeight());
   fGoTo->SelectAll();

   fL5 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 5, 0, 0);
   fL6 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 0, 2, 0, 0);

   fF2->AddFrame(fLGoTo, fL5);
   fF2->AddFrame(fGoTo, fL5);
   AddFrame(fF2, fL1);

   MapSubwindows();
   Resize(GetDefaultSize());

   CenterOnParent();

   SetWindowName("Goto");
   SetIconName("Print");

   SetMWMHints(kMWMDecorAll | kMWMDecorMaximize | kMWMDecorMenu,
               kMWMFuncAll | kMWMFuncMaximize | kMWMFuncResize,
               kMWMInputModeless);

   MapWindow();
   fGoTo->RequestFocus();
   fClient->WaitFor(this);
}

//______________________________________________________________________________
TGGotoDialog::~TGGotoDialog()
{
   // Clean up goto dialog

   if (IsZombie()) return;
   delete fGotoButton;
   delete fCancelButton;
   delete fGoTo;
   delete fLGoTo;
   delete fF1; delete fF2;
   delete fL1; delete fL5; delete fL6; delete fL21;
}

//______________________________________________________________________________
void TGGotoDialog::CloseWindow()
{
   // Close the dialog. On close the dialog will be deleted and cannot be
   // re-used.

   DeleteWindow();
}

//______________________________________________________________________________
Bool_t TGGotoDialog::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process goto dialog widget messages.

   const char *string;

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               switch (parm1) {
                  case 1:
                     string = fBGoTo->GetString();
                     *fRetCode = (Long_t) atof(string);
                     CloseWindow();
                     break;
                  case 2:
                     *fRetCode = -1;
                     CloseWindow();
                     break;
               }
               break;

            default:
               break;
         }
         break;

      case kC_TEXTENTRY:
         switch (GET_SUBMSG(msg)) {
            case kTE_TEXTCHANGED:
               string = fBGoTo->GetString();
               if (strlen(string) == 0)
                  fGotoButton->SetState(kButtonDisabled);
               else
                  fGotoButton->SetState(kButtonUp);
               break;
            case kTE_ENTER:
               string = fBGoTo->GetString();
               *fRetCode = (Long_t) atof(string);
               CloseWindow();
               break;
            default:
               break;
         }
         break;

      default:
         break;
   }

   return kTRUE;
}

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