ROOT logo
// Author: Valeriy Onuchin   25/08/2007
//
// This macro gives an example of how to set/change text entry attributes. 
//
// To run it do either:
// .x textEntries.C
// .x textEntries.C++

#include <TGTextEntry.h>
#include <TGButtonGroup.h>
#include <TGLabel.h>
#include <TGComboBox.h>
#include <TApplication.h>


//////////// auxilary class ///////////////////////////////////////////////////
class GroupBox : public TGGroupFrame {
private:
   TGComboBox  *fCombo; // combo box
   TGTextEntry *fEntry; // text entry 

public:
   GroupBox(const TGWindow *p, const char *name, const char *title);
   TGTextEntry *GetEntry() const { return fEntry; }
   TGComboBox  *GetCombo() const { return fCombo; }

   ClassDef(GroupBox, 0)
};

//______________________________________________________________________________
GroupBox::GroupBox(const TGWindow *p, const char *name, const char *title) :
   TGGroupFrame(p, name) 
{
   // Group frame containing combobox and text entry.

   TGHorizontalFrame *horz = new TGHorizontalFrame(this);
   AddFrame(horz, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));
   TGLabel *label = new TGLabel(horz, title);
   horz->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   fCombo = new TGComboBox(horz);
   horz->AddFrame(fCombo, new TGLayoutHints(kLHintsRight | kLHintsExpandY,
                                            5, 0, 5, 5));
   fCombo->Resize(100, 20);

   fEntry = new TGTextEntry(this);
   AddFrame(fEntry, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));
}

////////////////////////////////////////////////////////////////////////////////
class TextEntryWindow {

protected:
   TGMainFrame *fMain;     // main frame
   GroupBox    *fEcho;     // echo mode (echo, password, no echo)
   GroupBox    *fAlign;    // alignment (left, right, center)
   GroupBox    *fAccess;   // read-only mode
   GroupBox    *fBorder;   // border mode

public:
   TextEntryWindow();
   virtual ~TextEntryWindow() { delete fMain; }
   
   ClassDef(TextEntryWindow, 0);
};


//______________________________________________________________________________
TextEntryWindow::TextEntryWindow()
{
   // Main test window.

   TGComboBox  *combo;
   TGTextEntry *entry; 

   fMain = new TGMainFrame(gClient->GetRoot(), 10, 10, kVerticalFrame);

   // recusively delete all subframes on exit
   fMain->SetCleanup(kDeepCleanup);

   fEcho = new GroupBox(fMain, "Echo", "Mode:");
   fMain->AddFrame(fEcho, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5));
   combo = fEcho->GetCombo();
   entry = fEcho->GetEntry();
   // add entries
   combo->AddEntry("Normal", TGTextEntry::kNormal);
   combo->AddEntry("Password", TGTextEntry::kPassword);
   combo->AddEntry("No Echo", TGTextEntry::kNoEcho);
   combo->Connect("Selected(Int_t)", "TGTextEntry", entry, "SetEchoMode(Int_t)");
   combo->Select(TGTextEntry::kNormal);

   fAlign = new GroupBox(fMain, "Alignment", "Type:");
   fMain->AddFrame(fAlign, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5));
   combo = fAlign->GetCombo();
   entry = fAlign->GetEntry();
   // add entries
   combo->AddEntry("Left", kTextLeft);
   combo->AddEntry("Centered", kTextCenterX);
   combo->AddEntry("Right", kTextRight);
   combo->Connect("Selected(Int_t)", "TGTextEntry", entry, "SetAlignment(Int_t)");
   combo->Select(kTextLeft);

   fAccess = new GroupBox(fMain, "Access", "Read-only:");
   fMain->AddFrame(fAccess, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5));
   combo = fAccess->GetCombo();
   entry = fAccess->GetEntry();
   // add entries
   combo->AddEntry("False", 1);
   combo->AddEntry("True", 0);
   combo->Connect("Selected(Int_t)", "TGTextEntry", entry, "SetEnabled(Int_t)");
   combo->Select(1);

   fBorder = new GroupBox(fMain, "Border", "Drawn:");
   fMain->AddFrame(fBorder, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5));
   combo = fBorder->GetCombo();
   entry = fBorder->GetEntry();
   // add entries
   combo->AddEntry("False", 0);
   combo->AddEntry("True", 1);
   combo->Connect("Selected(Int_t)", "TGTextEntry", entry, "SetFrameDrawn(Int_t)");
   combo->Select(1);

   // terminate ROOT session when window is closed
   fMain->Connect("CloseWindow()", "TApplication", gApplication, "Terminate()");
   fMain->DontCallClose();

   fMain->MapSubwindows();
   fMain->Resize();

   // set minimum width, height
   fMain->SetWMSizeHints(fMain->GetDefaultWidth(), fMain->GetDefaultHeight(),
                         1000, 1000, 0, 0);
   fMain->SetWindowName("Text Entries");
   fMain->MapRaised();
}


////////////////////////////////////////////////////////////////////////////////
void textEntries()
{
   // Main program.

   new TextEntryWindow();
}
 textEntries.C:1
 textEntries.C:2
 textEntries.C:3
 textEntries.C:4
 textEntries.C:5
 textEntries.C:6
 textEntries.C:7
 textEntries.C:8
 textEntries.C:9
 textEntries.C:10
 textEntries.C:11
 textEntries.C:12
 textEntries.C:13
 textEntries.C:14
 textEntries.C:15
 textEntries.C:16
 textEntries.C:17
 textEntries.C:18
 textEntries.C:19
 textEntries.C:20
 textEntries.C:21
 textEntries.C:22
 textEntries.C:23
 textEntries.C:24
 textEntries.C:25
 textEntries.C:26
 textEntries.C:27
 textEntries.C:28
 textEntries.C:29
 textEntries.C:30
 textEntries.C:31
 textEntries.C:32
 textEntries.C:33
 textEntries.C:34
 textEntries.C:35
 textEntries.C:36
 textEntries.C:37
 textEntries.C:38
 textEntries.C:39
 textEntries.C:40
 textEntries.C:41
 textEntries.C:42
 textEntries.C:43
 textEntries.C:44
 textEntries.C:45
 textEntries.C:46
 textEntries.C:47
 textEntries.C:48
 textEntries.C:49
 textEntries.C:50
 textEntries.C:51
 textEntries.C:52
 textEntries.C:53
 textEntries.C:54
 textEntries.C:55
 textEntries.C:56
 textEntries.C:57
 textEntries.C:58
 textEntries.C:59
 textEntries.C:60
 textEntries.C:61
 textEntries.C:62
 textEntries.C:63
 textEntries.C:64
 textEntries.C:65
 textEntries.C:66
 textEntries.C:67
 textEntries.C:68
 textEntries.C:69
 textEntries.C:70
 textEntries.C:71
 textEntries.C:72
 textEntries.C:73
 textEntries.C:74
 textEntries.C:75
 textEntries.C:76
 textEntries.C:77
 textEntries.C:78
 textEntries.C:79
 textEntries.C:80
 textEntries.C:81
 textEntries.C:82
 textEntries.C:83
 textEntries.C:84
 textEntries.C:85
 textEntries.C:86
 textEntries.C:87
 textEntries.C:88
 textEntries.C:89
 textEntries.C:90
 textEntries.C:91
 textEntries.C:92
 textEntries.C:93
 textEntries.C:94
 textEntries.C:95
 textEntries.C:96
 textEntries.C:97
 textEntries.C:98
 textEntries.C:99
 textEntries.C:100
 textEntries.C:101
 textEntries.C:102
 textEntries.C:103
 textEntries.C:104
 textEntries.C:105
 textEntries.C:106
 textEntries.C:107
 textEntries.C:108
 textEntries.C:109
 textEntries.C:110
 textEntries.C:111
 textEntries.C:112
 textEntries.C:113
 textEntries.C:114
 textEntries.C:115
 textEntries.C:116
 textEntries.C:117
 textEntries.C:118
 textEntries.C:119
 textEntries.C:120
 textEntries.C:121
 textEntries.C:122
 textEntries.C:123
 textEntries.C:124
 textEntries.C:125
 textEntries.C:126
 textEntries.C:127
 textEntries.C:128
 textEntries.C:129
 textEntries.C:130
 textEntries.C:131
 textEntries.C:132
 textEntries.C:133
 textEntries.C:134
 textEntries.C:135
 textEntries.C:136
 textEntries.C:137
 textEntries.C:138
 textEntries.C:139
 textEntries.C:140
 textEntries.C:141
 textEntries.C:142
 textEntries.C:143
 textEntries.C:144
 textEntries.C:145