Loading [MathJax]/extensions/tex2jax.js
Logo ROOT  
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
listBox.C File Reference

Detailed Description

This macro gives an example of how to create a list box and how to set and use its multiple selection feature.

To run it do either:

.x listBox.C
.x listBox.C++
#include <TApplication.h>
#include <TGClient.h>
#include <TGButton.h>
#include <TGListBox.h>
#include <TList.h>
class MyMainFrame : public TGMainFrame {
private:
TGListBox *fListBox;
TGCheckButton *fCheckMulti;
TList *fSelected;
public:
MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h);
virtual ~MyMainFrame();
void DoExit();
void DoSelect();
void HandleButtons();
void PrintSelected();
ClassDef(MyMainFrame, 0)
};
void MyMainFrame::DoSelect()
{
Printf("Slot DoSelect()");
}
void MyMainFrame::DoExit()
{
Printf("Slot DoExit()");
}
MyMainFrame::MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h) :
TGMainFrame(p, w, h)
{
// Create main frame
fListBox = new TGListBox(this, 89);
fSelected = new TList;
char tmp[20];
for (int i = 0; i < 20; ++i) {
sprintf(tmp, "Entry %i", i+1);
fListBox->AddEntry(tmp, i+1);
}
fListBox->Resize(100,150);
AddFrame(fListBox, new TGLayoutHints(kLHintsTop | kLHintsLeft |
5, 5, 5, 5));
fCheckMulti = new TGCheckButton(this, "&Mutliple selection", 10);
AddFrame(fCheckMulti, new TGLayoutHints(kLHintsTop | kLHintsLeft,
5, 5, 5, 5));
fCheckMulti->Connect("Clicked()", "MyMainFrame", this, "HandleButtons()");
// Create a horizontal frame containing button(s)
TGHorizontalFrame *hframe = new TGHorizontalFrame(this, 150, 20, kFixedWidth);
TGTextButton *show = new TGTextButton(hframe, "&Show");
show->SetToolTipText("Click here to print the selection you made");
show->Connect("Pressed()", "MyMainFrame", this, "PrintSelected()");
hframe->AddFrame(show, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
TGTextButton *exit = new TGTextButton(hframe, "&Exit ");
exit->Connect("Pressed()", "MyMainFrame", this, "DoExit()");
hframe->AddFrame(exit, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 2, 2, 5, 1));
// Set a name to the main frame
SetWindowName("List Box");
MapSubwindows();
// Initialize the layout algorithm via Resize()
Resize(GetDefaultSize());
// Map main frame
MapWindow();
fListBox->Select(1);
}
MyMainFrame::~MyMainFrame()
{
// Clean up main frame...
Cleanup();
if (fSelected) {
fSelected->Delete();
delete fSelected;
}
}
void MyMainFrame::HandleButtons()
{
// Handle check button.
id = btn->WidgetId();
printf("HandleButton: id = %d\n", id);
if (id == 10)
fListBox->SetMultipleSelections(fCheckMulti->GetState());
}
void MyMainFrame::PrintSelected()
{
// Writes selected entries in TList if multiselection.
fSelected->Clear();
if (fListBox->GetMultipleSelections()) {
Printf("Selected entries are:\n");
fListBox->GetSelectedEntries(fSelected);
fSelected->ls();
} else {
Printf("Selected entries is: %d\n", fListBox->GetSelected());
}
}
void listBox()
{
// Popup the GUI...
new MyMainFrame(gClient->GetRoot(), 200, 200);
}
@ kFixedWidth
Definition: GuiTypes.h:387
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:43
unsigned int UInt_t
Definition: RtypesCore.h:44
#define ClassDef(name, id)
Definition: Rtypes.h:322
R__EXTERN TApplication * gApplication
Definition: TApplication.h:166
#define gClient
Definition: TGClient.h:166
@ kLHintsExpandY
Definition: TGLayout.h:38
@ kLHintsLeft
Definition: TGLayout.h:31
@ kLHintsTop
Definition: TGLayout.h:34
@ kLHintsExpandX
Definition: TGLayout.h:37
XFontStruct * id
Definition: TGX11.cxx:108
R__EXTERN void * gTQSender
Definition: TQObject.h:44
void Printf(const char *fmt,...)
virtual void Terminate(Int_t status=0)
Terminate the application by call TSystem::Exit() unless application has been told to return from Run...
virtual void SetToolTipText(const char *text, Long_t delayms=400)
Set tool tip text associated with this button.
Definition: TGButton.cxx:397
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame to the composite frame using the specified layout hints.
Definition: TGFrame.cxx:1101
Int_t WidgetId() const
Definition: TGWidget.h:80
A doubly linked list.
Definition: TList.h:44
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
Definition: TQObject.cxx:866
Author
Ilka Antcheva 1/12/2006

Definition in file listBox.C.