ROOT logo

From $ROOTSYS/tutorials/gui/textviewostream.C

// Author: Bertrand Bellenot  06/01/2015
//
// This macro gives an example of how to use the TGTextViewostream widget.
// Simply type a command in the "Command" text entry, then the output is redirected to 
// theTGTextViewostream
//
// To run it do either:
// .x textviewostream.C
// .x textviewostream.C++

#include "TGButton.h"
#include "TGButtonGroup.h"
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGTextViewStream.h"
#include "TApplication.h"
#include "TGFrame.h"
#include "TSystem.h"

////////////////////////////////////////////////////////////////////////////////
class TextViewMainFrame : public TGMainFrame
{
protected:
   TGTextButton      *fReset, *fExit;
   TGTextViewostream *fTextView;
   TGVerticalFrame   *fContents;
   TGHorizontalFrame *fButtons, *fCommandFrame;
   TGTextEntry       *fCommand;

public:
   TextViewMainFrame();
   virtual ~TextViewMainFrame() {}
   void Reset();
   void HandleReturn();

   ClassDef(TextViewMainFrame, 0)
};


//______________________________________________________________________________
TextViewMainFrame::TextViewMainFrame() : TGMainFrame(gClient->GetRoot())
{
   // Main test window.

   SetCleanup(kDeepCleanup);

   // Contents
   fContents = new TGVerticalFrame(this);
   fButtons = new TGHorizontalFrame(fContents);

   // TextView
   fTextView = new TGTextViewostream(fContents, 500, 300);
   fContents->AddFrame(fTextView, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5, 5, 0));

   fCommandFrame = new TGHorizontalFrame(fContents);
   fCommand = new TGTextEntry(fCommandFrame, (const char *)"", 20);
   fCommand->Connect("ReturnPressed()", "TextViewMainFrame", this, "HandleReturn()");
   fCommandFrame->AddFrame(new TGLabel(fCommandFrame, "Command: "),
                           new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 5, 5));
   fCommandFrame->AddFrame(fCommand, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
   fContents->AddFrame(fCommandFrame, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));

   // The button for test
   fReset = new TGTextButton(fButtons, "&Reset");
   fReset->SetToolTipText("Press to clear the command entry\nand the TGTextView", 200);
   fReset->Connect("Clicked()", "TextViewMainFrame", this, "Reset()");
   fButtons->AddFrame(fReset, new TGLayoutHints(kLHintsExpandX | kLHintsTop, 5, 5, 5, 5));

   fExit = new TGTextButton(fButtons, "&Exit");
   fExit->SetToolTipText("Terminate the application", 200);
   fButtons->AddFrame(fExit, new TGLayoutHints(kLHintsExpandX | kLHintsTop, 5, 5, 5, 5));
   fExit->Connect("Pressed()", "TApplication", gApplication, "Terminate()");

   fContents->AddFrame(fButtons, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 0, 0));
   Connect("CloseWindow()", "TApplication", gApplication, "Terminate()");
   DontCallClose();

   AddFrame(fContents, new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY));
   MapSubwindows();
   Resize(GetDefaultSize());

   SetWindowName("TGTextView Demo");
   MapRaised();
}

//______________________________________________________________________________
void TextViewMainFrame::Reset()
{
   fCommand->Clear();
   fTextView->Clear();
}

//______________________________________________________________________________
void TextViewMainFrame::HandleReturn()
{
   std::string line;
   std::string command = fCommand->GetText();
   *fTextView << gSystem->GetFromPipe(command.c_str()).Data() << std::endl;
   fTextView->ShowBottom();
   fCommand->Clear();
}

//______________________________________________________________________________
void textviewostream()
{
   // Main program.

   new TextViewMainFrame();
}


 textviewostream.C:1
 textviewostream.C:2
 textviewostream.C:3
 textviewostream.C:4
 textviewostream.C:5
 textviewostream.C:6
 textviewostream.C:7
 textviewostream.C:8
 textviewostream.C:9
 textviewostream.C:10
 textviewostream.C:11
 textviewostream.C:12
 textviewostream.C:13
 textviewostream.C:14
 textviewostream.C:15
 textviewostream.C:16
 textviewostream.C:17
 textviewostream.C:18
 textviewostream.C:19
 textviewostream.C:20
 textviewostream.C:21
 textviewostream.C:22
 textviewostream.C:23
 textviewostream.C:24
 textviewostream.C:25
 textviewostream.C:26
 textviewostream.C:27
 textviewostream.C:28
 textviewostream.C:29
 textviewostream.C:30
 textviewostream.C:31
 textviewostream.C:32
 textviewostream.C:33
 textviewostream.C:34
 textviewostream.C:35
 textviewostream.C:36
 textviewostream.C:37
 textviewostream.C:38
 textviewostream.C:39
 textviewostream.C:40
 textviewostream.C:41
 textviewostream.C:42
 textviewostream.C:43
 textviewostream.C:44
 textviewostream.C:45
 textviewostream.C:46
 textviewostream.C:47
 textviewostream.C:48
 textviewostream.C:49
 textviewostream.C:50
 textviewostream.C:51
 textviewostream.C:52
 textviewostream.C:53
 textviewostream.C:54
 textviewostream.C:55
 textviewostream.C:56
 textviewostream.C:57
 textviewostream.C:58
 textviewostream.C:59
 textviewostream.C:60
 textviewostream.C:61
 textviewostream.C:62
 textviewostream.C:63
 textviewostream.C:64
 textviewostream.C:65
 textviewostream.C:66
 textviewostream.C:67
 textviewostream.C:68
 textviewostream.C:69
 textviewostream.C:70
 textviewostream.C:71
 textviewostream.C:72
 textviewostream.C:73
 textviewostream.C:74
 textviewostream.C:75
 textviewostream.C:76
 textviewostream.C:77
 textviewostream.C:78
 textviewostream.C:79
 textviewostream.C:80
 textviewostream.C:81
 textviewostream.C:82
 textviewostream.C:83
 textviewostream.C:84
 textviewostream.C:85
 textviewostream.C:86
 textviewostream.C:87
 textviewostream.C:88
 textviewostream.C:89
 textviewostream.C:90
 textviewostream.C:91
 textviewostream.C:92
 textviewostream.C:93
 textviewostream.C:94
 textviewostream.C:95
 textviewostream.C:96
 textviewostream.C:97
 textviewostream.C:98
 textviewostream.C:99
 textviewostream.C:100
 textviewostream.C:101
 textviewostream.C:102
 textviewostream.C:103
 textviewostream.C:104
 textviewostream.C:105
 textviewostream.C:106
 textviewostream.C:107
 textviewostream.C:108
 textviewostream.C:109
 textviewostream.C:110
 textviewostream.C:111
 textviewostream.C:112