Re: [ROOT] Problem displaying text in TGStatusBar

From: Ilka Antcheva (Ilka.Antcheva@cern.ch)
Date: Mon Jun 16 2003 - 11:11:47 MEST


Hi Christian,

I have a macro in which I am using gClient->ProcessEventsFor(TGWindow
*w)
method instead of ProcessEvents and it works. Here are the lines of
code:

   TGFrameElement *f;
   TIter next(fMain->GetList());       //fMain is a main frame
    while ((f = (TGFrameElement *)next())) {

          sprintf(buf, " Frame <%s>...",f->fFrame->GetName());
          fStatusBar->SetText(buf, 0);
          gClient->ProcessEventsFor(fStatusBar);
          gSystem->Sleep(600);   //just to see the  text into the status
bar

    }

Best regards, Ilka


cstrato wrote:

> Dear Rooters
>
> In a while-loop I am importing data and want to display
> the data names in the statusbar of my GUI-app.
> Sorrowly, only the last message is displayed when the
> while-loop finishes.
>
> Do you know what  I have to do so that the text is
> displayed in the statusbar whenever I call:
> fStatusBar->SetText(text,0)?
>
> My code looks like this:
>
> class AppFrame {
>    RQ_OBJECT("AppFrame")
>
>    private:
>       TGMainFrame        *fMain;
>       TGStatusBar        *fStatusBar;
>
>    public:
>       AppFrame() {}
>       AppFrame(const TGWindow *window, UInt_t w, UInt_t h);
>       virtual AppFrame();
>
>       void SetStatusBarText(const char *text, Int_t partidx)
>                         {fStatusBar->SetText(text, partidx);}
>
>       ClassDef(AppFrame,0)
> };
>
> class DataFrame {
>    RQ_OBJECT("DataFrame")
>
>    private:
>       AppFrame           *fAppFrame;
>       TGCompositeFrame   *fParentFrame;
>
>    public:
>       DataFrame() {}
>       DataFrame(TGCompositeFrame *parent, AppFrame *main, UInt_t w,
> UInt_t h);
>       virtual ~DataFrame();
>
>       void DoImportData();
>
>       ClassDef(DataFrame,0)
> };
>
> void DataFrame::DoImportData()
> {
>    char    buf[256];
> // Import data
>    TIter next(mylist);
>    MyData *data = 0;
>    while ((data = (MyData*)next())) {
>       TString name = data->GetName();
>
>       // display current status
>       gSystem->Sleep(4000);//test only
>       gSystem->ProcessEvents();  // handle GUI events??
>       sprintf(buf, "Importing file <%s>...", name.Data());
>       fAppFrame->SetStatusBarText(buf, 0);
>
>       class->Import(name.Data());
>    }//while
>
> // Close file
>    TString datafile = class->GetFile()->GetName();
>    sprintf(buf, "Data import finished, closing file <%s>...",
> datafile.Data());
>    fAppFrame->SetStatusBarText(buf, 0);
>    class->Close();
>    fAppFrame->SetStatusBarText("Ready...", 0);
> }//DoImportData
>
> Thank you in advance
> Best regards
> Christian
> _._._._._._._._._._._._._._._._
> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a       A.u.s.t.r.i.a
> _._._._._._._._._._._._._._._._



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET