An editable combo box is used as a CINT prompt, a text view widget displays the command output.
#include <iostream>
#include <Getline.h>
class IDList {
private:
public:
IDList() : fID(0) {}
~IDList() {}
Int_t GetUnID(
void) {
return ++fID; }
};
private:
IDList fIDs;
public:
virtual ~MyApplication();
void DoExit();
void DoEnteredCommand();
};
{
Connect("CloseWindow()", "MyApplication", this, "DoExit()");
DontCallClose();
AddFrame(fOutlabel);
fComboCmd =
new TGComboBox(fHL2,
"", fIDs.GetUnID());
fCommand = fComboCmd->GetTextEntry();
fComboCmd->Resize(450, fCommand->GetDefaultHeight());
FILE *fhist = fopen(hist.Data(), "rt");
if (fhist) {
char histline[256];
while (fgets(histline, 256, fhist)) {
histline[strlen(histline)-1] = 0;
fComboCmd->InsertEntry(histline, 0, -1);
}
fclose(fhist);
}
gClient->GetColorByName(
"#c0c0c0", backpxl);
fTextView->SetBackground(backpxl);
fExit->Connect("Clicked()", "MyApplication", this, "DoExit()");
SetWindowName("GUI with CINT Input/Output");
MapSubwindows();
Resize(GetDefaultSize());
MapWindow();
fCommand->Connect("ReturnPressed()", "MyApplication", this, "DoEnteredCommand()");
};
MyApplication::~MyApplication()
{
Cleanup();
}
void MyApplication::DoExit()
{
}
void MyApplication::DoEnteredCommand()
{
const char *command = fCommand->GetTitle();
if (strlen(command)) {
prompt = ((
TRint*)
gROOT->GetApplication())->GetPrompt();
FILE *cintout = fopen(fName.Data(), "a+t");
if (cintout) {
fputs(
Form(
"%s%s\n",prompt.
Data(), command), cintout);
fclose(cintout);
}
gROOT->ProcessLine(command);
fComboCmd->InsertEntry(command, 0, fIDs.GetUnID());
Gl_histadd((char *)command);
fTextView->LoadFile(fName.Data());
if (fTextView->ReturnLineCount() > 10)
fTextView->SetVsbPosition(fTextView->ReturnLineCount());
fCommand->Clear();
} else {
printf("No command entered\n");
}
fTextView->ShowBottom();
}
void guiWithCINT()
{
new MyApplication(
gClient->GetRoot(),600,300);
}
ULong_t Pixel_t
Pixel value.
#define ClassDef(name, id)
R__EXTERN TApplication * gApplication
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
virtual void Terminate(Int_t status=0)
Terminate the application by call TSystem::Exit() unless application has been told to return from Run...
A combobox (also known as a drop down listbox) allows the selection of one item out of a list of item...
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame to the composite frame using the specified layout hints.
A composite frame that layout their children in horizontal way.
This class handles GUI labels.
This class describes layout hints used by the layout classes.
Defines top level windows that interact with the system Window Manager.
A text buffer is used in several widgets, like TGTextEntry, TGFileDialog, etc.
Yield an action as soon as it is clicked.
A TGTextEntry is a one line text input widget.
A TGTextView is a text viewer widget.
ROOT GUI Window base class.
TString fName
name of the window used in SavePrimitive()
const char * Data() const
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=nullptr)
Redirect standard output (stdout, stderr) to the specified file.
virtual const char * UnixPathName(const char *unixpathname)
Convert from a local pathname to a Unix pathname.
virtual const char * WorkingDirectory()
Return working directory.
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
virtual int Unlink(const char *name)
Unlink, i.e.