Hi Rooters!
I have a pb in my GUI interface...I describe the pb in a preceding
e-mail (subject:RootX11ErrorHandler);
Valery Onuchin (Thank you again) try to help me and he sent me a small
code that is working on his computer but not on my (I am running on a
DEC XP100 with cxx 6.). Because I sure that I doing something wrong but
I don't know where I send you a sample code wich crashes in the
destructor of "Test" in when I try to delete the TGTextEntry (just
between the 2 "cout").
Thank you for your Help,
Best regards
Olivier
//-----------------------------------------------------
//panel.h:
//-------------------------------------------------------
#include <TROOT.h>
#include <TApplication.h>
#include <TVirtualX.h>
#include <TGFrame.h>
#include "TGLayout.h"
#include <TGButton.h>
#include <TGMsgBox.h>
#include <TGTextEntry.h>
#include <TGTextBuffer.h>
#include <TGLabel.h>
#include "TObjString.h"
#include <iostream.h>
class MainWin: public TGMainFrame
{
private :
TGTextButton *fButtonOk,*fButtonExit;
TGCompositeFrame *fGF0,*fF1;
public :
MainWin(const TGWindow *p);
~MainWin(); // destructeur
Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
void CloseWindow();
ClassDef(MainWin,1)
};
class Test: public TGTransientFrame
{
private:
TGCompositeFrame *fS0;
TGCompositeFrame *fSH1,*fSH2;
TGTextButton *fBOK;
TGLayoutHints *fL10;
TGTextEntry *TEName;
public :
Test(const TGWindow *p, const TGWindow *main,
UInt_t w,UInt_t h, UInt_t options =
kVerticalFrame);
~Test();
Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
void CloseWindow(){delete this;}
ClassDef(Test,0)
};
//-------------------------------------------------
//panel.C
//-------------------------------------------------
#include "panel.h"
ClassImp(MainWin)
ClassImp(Test)
//
//------------------------- MainWin
---------------------------------------
//
MainWin::MainWin(const TGWindow *p) : TGMainFrame(p,500,400)
{
fGF0 = new TGCompositeFrame(this,100,200,kVerticalFrame);
TGLayoutHints *fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft |
kLHintsExpandX,2, 2, 2, 2);
AddFrame(fGF0, fL1);
//
// Frame for Ok/exit button
//
fF1 = new TGHorizontalFrame(fGF0, 60, 20, kFixedWidth);
TGLayoutHints *fL2 = new TGLayoutHints(kLHintsBottom | kLHintsRight, 2,
2, 2, 2);
fGF0->AddFrame(fF1, fL2);
fButtonOk= new TGTextButton(fF1,"&Ok",1);
fButtonExit= new TGTextButton(fF1,"E&xit",2);
fF1->AddFrame(fButtonOk,fL1);
fF1->AddFrame(fButtonExit,fL1);
fF1->Resize(150, fButtonExit->GetDefaultHeight());
fButtonOk->Associate(this);
fButtonExit->Associate(this);
//REMAP
SetWindowName("Flash Analysis");
MapSubwindows();
Resize(GetDefaultSize());
MapWindow();
}
//
//----------------------------------------------------------------------------
//
MainWin::~MainWin()
{
delete fButtonOk;
delete fButtonExit;
}
//
//----------------------------------------------------------------------------
//
void MainWin::CloseWindow()
{
gApplication->Terminate(0);
}
//
//----------------------------------------------------------------------------
//
Bool_t MainWin::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
switch (GET_MSG(msg))
{
case kC_COMMAND:
switch (GET_SUBMSG(msg))
{
case kCM_BUTTON:
switch (parm1)
{
case 1:
new
Test(fClient->GetRoot(),this,200,200);cout<<" "<<endl;
cout<<"main"<<endl;
break;
case 2:
CloseWindow();
break;
}
break;
}
}
return kTRUE;
}
//
//----------------------------------------------------------------------------
//
Test::Test(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t
h,UInt_t options ):
TGTransientFrame(p, main, w, h, options)
{
fS0 = new TGCompositeFrame(this, 500, 200);
fL10= new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX , 2,
2, 2, 2);
AddFrame(fS0, fL10);
fSH1=new TGHorizontalFrame(fS0, 200, 20);
fS0->AddFrame(fSH1,fL10);
TGLabel *fLmsg=new TGLabel(fSH1, new TGString("Name:"));
fSH1->AddFrame(fLmsg, fL10);
TGTextBuffer *TBName= new TGTextBuffer(100);
TEName = new TGTextEntry(fSH1, TBName,1);
TBName->AddText(0, "nothing");
TEName->Resize(200, TEName->GetDefaultHeight());
fSH1->AddFrame(TEName, fL10);
TEName->Associate(this);
//
// Frame for Ok/Cancel button
//
fSH2=new TGHorizontalFrame(fS0, 200, 20,kFixedWidth);
TGLayoutHints *fL11=new TGLayoutHints(kLHintsBottom |
kLHintsRight,2,2,2,2);
fS0->AddFrame(fSH2,fL11);
fBOK = new TGTextButton(fSH2, "&Ok",10);
fSH2->AddFrame(fBOK,fL10);
fSH2->Resize(50, fBOK->GetDefaultHeight());
fBOK->Associate(this);
//
// REMAP
//
Resize(GetDefaultSize());
Window_t wdum;
int ax, ay;
gVirtualX->TranslateCoordinates(main->GetId(), GetParent()->GetId(),
((TGFrame *) main)->GetWidth()/2,
(((TGFrame *) main)->GetHeight() -
fHeight/2),ax, ay, wdum);
Move(ax, ay);
SetWindowName("New Histo Name");
MapSubwindows();
MapWindow();
fClient->WaitFor(this);
}
//
//----------------------------------------------------------------------------
//
Test::~Test()
{
cout<<"Enter in the Delete"<<endl;
delete TEName;
cout<<"TGTextEntry is deleted"<<endl;
delete fBOK ;
delete fSH2;
delete fSH1;
delete fS0 ;
delete fL10 ;
}
//
//----------------------------------------------------------------------------
//
Bool_t Test::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
switch (GET_MSG(msg))
{
case kC_COMMAND:
switch (GET_SUBMSG(msg))
{
case kCM_BUTTON:
switch (parm1)
{
case 10:
cout<<"OK pressed"<<endl;
cout<<TEName->GetText()<<endl;
CloseWindow();
break;
}
break;
}
}
return kTRUE;
}
--
=========================================================
|Olivier Meplan |E-mail:meplan@isn.in2p3.fr
| |
|ISN, 53 avenue des Martyrs | Tel +33(0)4 76-28-41-90
|F-38026 GRENOBLE cedex | Fax +33(0)4 76-28-40-04
=========================================================
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET