ROOT logo
// @(#)root/gui:$Id$
// Author: Fons Rademakers   23/01/98

/*************************************************************************
 * 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.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGStatusBar                                                          //
//                                                                      //
// Provides a StatusBar widget.                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGStatusBar.h"
#include "TGResourcePool.h"
#include "TList.h"
#include "Riostream.h"


const TGFont  *TGStatusBar::fgDefaultFont = 0;
TGGC          *TGStatusBar::fgDefaultGC = 0;


class TGStatusBarPart : public TGHorizontalFrame {
friend class TGStatusBar;
private:
   TGString  *fStatusInfo;    // status text to be displayed in this part
   Int_t      fYt;            // y position of text in frame
   virtual void DoRedraw();

public:
   TGStatusBarPart(const TGWindow *p, Int_t h, Int_t y, ULong_t back = GetDefaultFrameBackground());
   ~TGStatusBarPart() { delete fStatusInfo; DestroyWindow(); }
   void SetText(TGString *text);
   const TGString *GetText() const { return fStatusInfo; }
};

//______________________________________________________________________________
TGStatusBarPart::TGStatusBarPart(const TGWindow *p, Int_t h, Int_t y, ULong_t back)
   : TGHorizontalFrame(p, 5, 5, kChildFrame | kHorizontalFrame, back)
{
   // Create statusbar part frame. This frame will contain the text for this
   // statusbar part.

   fStatusInfo = 0;
   fYt = y + 1;
   fHeight = h;
   MapWindow();

   fEditDisabled = kEditDisableGrab;
}

//______________________________________________________________________________
void TGStatusBarPart::SetText(TGString *text)
{
   // Set text in this part of the statusbar.

   if (fStatusInfo) delete fStatusInfo;
   fStatusInfo = text;
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGStatusBarPart::DoRedraw()
{
   // Draw string in statusbar part frame.

   TGHorizontalFrame::DoRedraw();

   if (fStatusInfo)
      fStatusInfo->Draw(fId, TGStatusBar::GetDefaultGC()(), 3, fYt);
}


ClassImp(TGStatusBar)

//______________________________________________________________________________
TGStatusBar::TGStatusBar(const TGWindow *p, UInt_t w, UInt_t h,
                         UInt_t options, ULong_t back) :
   TGHorizontalFrame(p, w, h, options, back)
{
   // Create a status bar widget. By default it consist of one part.
   // Multiple parts can be created using SetParts().

   fBorderWidth   = 2;
   fStatusPart    = new TGStatusBarPart* [1];
   fParts         = new Int_t [1];
   fXt            = new Int_t [1];
   fParts[0]      = 100;
   fNpart         = 1;
   f3DCorner      = kTRUE;

   int max_ascent, max_descent;
   gVirtualX->GetFontProperties(GetDefaultFontStruct(), max_ascent, max_descent);
   int ht = max_ascent + max_descent;

   fYt = max_ascent;

   fStatusPart[0] = new TGStatusBarPart(this, ht, fYt);
   AddFrame(fStatusPart[0]);
   Resize(w, ht + 5);

   //fEditDisabled = kEditDisableLayout;
}

//______________________________________________________________________________
TGStatusBar::~TGStatusBar()
{
   // Delete status bar widget.

   if (!MustCleanup()) {
      for (int i = 0; i < fNpart; i++) {
         delete fStatusPart[i];
      }
   }

   delete [] fStatusPart;
   delete [] fParts;
   delete [] fXt;
}

//______________________________________________________________________________
void TGStatusBar::SetText(TGString *text, Int_t partidx)
{
   // Set text in partition partidx in status bar. The TGString is
   // adopted by the status bar.

   if (partidx < 0 || partidx >= fNpart) {
      Error("SetText", "partidx out of range (0,%d)", fNpart-1);
      return;
   }

   fStatusPart[partidx]->SetText(text);
}

//______________________________________________________________________________
void TGStatusBar::SetText(const char *text, Int_t partidx)
{
   // Set text in partion partidx in status bar.

   SetText(new TGString(text), partidx);
}

//______________________________________________________________________________
const char *TGStatusBar::GetText(Int_t partidx) const
{
   // return text in the part partidx

   if (partidx < 0 || partidx >= fNpart) {
      Error("GetText", "partidx out of range (0,%d)", fNpart-1);
      return 0;
   }

   const TGString *str = fStatusPart[partidx]->GetText();
   return str->Data();
}

//______________________________________________________________________________
void TGStatusBar::DrawBorder()
{
   // Draw the status bar border (including cute 3d corner).

   // Current width is known at this stage so calculate fXt's.
   int i;
   for (i = 0; i < fNpart; i++) {
      if (i == 0)
         fXt[i] = 0;
      else
         fXt[i] = fXt[i-1] + (fWidth * fParts[i-1] / 100);
   }

   //TGFrame::DrawBorder();
   for (i = 0; i < fNpart; i++) {
      int xmax, xmin = fXt[i];
      if (i == fNpart-1)
         xmax = fWidth;
      else
         xmax = fXt[i+1] - 2;

      if (i == fNpart-1) {
         if (f3DCorner)
            fStatusPart[i]->MoveResize(fXt[i]+2, 1, xmax - fXt[i] - 15, fHeight - 2);
         else
            fStatusPart[i]->MoveResize(fXt[i]+2, 1, xmax - fXt[i], fHeight - 2);
      } else
         fStatusPart[i]->MoveResize(fXt[i]+2, 1, xmax - fXt[i] - 4, fHeight - 2);

      gVirtualX->DrawLine(fId, GetShadowGC()(), xmin, 0, xmax-2, 0);
      gVirtualX->DrawLine(fId, GetShadowGC()(), xmin, 0, xmin, fHeight-2);
      gVirtualX->DrawLine(fId, GetHilightGC()(), xmin, fHeight-1, xmax-1, fHeight-1);
      if (i == fNpart-1)
         gVirtualX->DrawLine(fId, GetHilightGC()(), xmax-1, fHeight-1, xmax-1, 0);
      else
         gVirtualX->DrawLine(fId, GetHilightGC()(), xmax-1, fHeight-1, xmax-1, 1);
   }

   // 3d corner...
   if (f3DCorner) {
      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-3,  fHeight-2, fWidth-2, fHeight-3);
      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-4,  fHeight-2, fWidth-2, fHeight-4);
      gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-5,  fHeight-2, fWidth-2, fHeight-5);

      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-7,  fHeight-2, fWidth-2, fHeight-7);
      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-8,  fHeight-2, fWidth-2, fHeight-8);
      gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-9,  fHeight-2, fWidth-2, fHeight-9);

      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-11, fHeight-2, fWidth-2, fHeight-11);
      gVirtualX->DrawLine(fId, GetShadowGC()(),  fWidth-12, fHeight-2, fWidth-2, fHeight-12);
      gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-13, fHeight-2, fWidth-2, fHeight-13);

      gVirtualX->DrawLine(fId, GetBckgndGC()(),  fWidth-13, fHeight-1, fWidth-1, fHeight-1);
      gVirtualX->DrawLine(fId, GetBckgndGC()(),  fWidth-1,  fHeight-1, fWidth-1, fHeight-13);
   }
}

//______________________________________________________________________________
void TGStatusBar::DoRedraw()
{
   // Redraw status bar.

   // calls DrawBorder()
   TGFrame::DoRedraw();

   for (int i = 0; i < fNpart; i++)
      fStatusPart[i]->DoRedraw();
}

//______________________________________________________________________________
void TGStatusBar::SetParts(Int_t *parts, Int_t npart)
{
   // Divide the status bar in nparts. Size of each part is given in parts
   // array (percentual).

   if (npart < 1) {
      Warning("SetParts", "must be at least one part");
      npart = 1;
   }
   if (npart > 15) {
      Error("SetParts", "to many parts (limit is 15)");
      return;
   }

   int i;
   for (i = 0; i < fNpart; i++)
      delete fStatusPart[i];

   delete [] fStatusPart;
   delete [] fParts;
   delete [] fXt;
   fList->Delete();

   fStatusPart = new TGStatusBarPart* [npart];
   fParts      = new Int_t [npart];
   fXt         = new Int_t [npart];

   int tot = 0;
   for (i = 0; i < npart; i++) {
      fStatusPart[i] = new TGStatusBarPart(this, fHeight, fYt);
      AddFrame(fStatusPart[i]);
      fParts[i] = parts[i];
      tot += parts[i];
      if (tot > 100)
         Error("SetParts", "sum of part > 100");
   }
   if (tot < 100)
      fParts[npart-1] += 100 - tot;
   fNpart = npart;
}

//______________________________________________________________________________
void TGStatusBar::SetParts(Int_t npart)
{
   // Divide the status bar in npart equal sized parts.

   if (npart < 1) {
      Warning("SetParts", "must be at least one part");
      npart = 1;
   }
   if (npart > 40) {
      Error("SetParts", "to many parts (limit is 40)");
      return;
   }

   int i;
   for (i = 0; i < fNpart; i++)
      delete fStatusPart[i];

   delete [] fStatusPart;
   delete [] fParts;
   delete [] fXt;
   fList->Delete();

   fStatusPart = new TGStatusBarPart* [npart];
   fParts      = new Int_t [npart];
   fXt         = new Int_t [npart];

   int sz  = 100/npart;
   int tot = 0;
   for (i = 0; i < npart; i++) {
      fStatusPart[i] = new TGStatusBarPart(this, fHeight, fYt);
      AddFrame(fStatusPart[i]);
      fParts[i] = sz;
      tot += sz;
   }
   if (tot < 100)
      fParts[npart-1] += 100 - tot;
   fNpart = npart;
}

//______________________________________________________________________________
FontStruct_t TGStatusBar::GetDefaultFontStruct()
{
   // Return default font structure in use.

   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetStatusFont();
   return fgDefaultFont->GetFontStruct();
}

//______________________________________________________________________________
const TGGC &TGStatusBar::GetDefaultGC()
{
   // Return default graphics context in use.

   if (!fgDefaultGC) {
      fgDefaultGC = new TGGC(*gClient->GetResourcePool()->GetFrameGC());
      fgDefaultGC->SetFont(fgDefaultFont->GetFontHandle());
   }
   return *fgDefaultGC;
}

//______________________________________________________________________________
TGCompositeFrame *TGStatusBar::GetBarPart(Int_t npart) const
{
   // Returns bar part. That allows to put in the bar part
   // something more interesting than text ;-)

   return  ((npart<fNpart) && (npart>=0)) ? (TGCompositeFrame*)fStatusPart[npart] : 0;
}

//______________________________________________________________________________
TGDimension TGStatusBar::GetDefaultSize() const
{
   // Return default size.

   UInt_t h = fHeight;

   for (int i = 0; i < fNpart; i++) {
      h = TMath::Max(h,fStatusPart[i]->GetDefaultHeight()+1);
   }
   return TGDimension(fWidth, h);
}

//______________________________________________________________________________
void TGStatusBar::SavePrimitive(ostream &out, Option_t *option /*= ""*/)
{
    // Save a status bar widget as a C++ statement(s) on output stream out.

   if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);

   out << endl;
   out << "   // status bar" << endl;

   out << "   TGStatusBar *";
   out << GetName() <<" = new TGStatusBar("<< fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

   if (fBackground == GetDefaultFrameBackground()) {
      if (GetOptions() == (kSunkenFrame | kHorizontalFrame)) {
         out <<");" << endl;
      } else {
         out << "," << GetOptionString() <<");" << endl;
      }
   } else {
      out << "," << GetOptionString() << ",ucolor);" << endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << endl;

   int i; char quote = '"';

   if (fNpart > 1)  {
      out << "   Int_t parts" << GetName()+5 << "[] = {" << fParts[0];

      for (i=1; i<fNpart; i++) {
         out  << "," << fParts[i];
      }
      out << "};" << endl;

      out << "   " << GetName() << "->SetParts(parts" << GetName()+5
          << "," << fNpart << ");" <<endl;
   }
   for (i=0; i<fNpart; i++) {
      if (fStatusPart[i]->GetText()) {
         out << "   " << GetName() << "->SetText(" << quote
             << fStatusPart[i]->GetText()->GetString()
             << quote << "," << i << ");" << endl;
      } else {
         if (!fStatusPart[i]->GetList()->First()) continue;
         out << "   TGCompositeFrame *" << fStatusPart[i]->GetName()
             << " = " << GetName() << "->GetBarPart(" << i << ");" << endl;

         TGFrameElement *el;
         TIter next(fStatusPart[i]->GetList());

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