Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TApplication.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Fons Rademakers 22/12/95
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TApplication
13 #define ROOT_TApplication
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TApplication //
19 // //
20 // This class creates the ROOT Application Environment that interfaces //
21 // to the windowing system eventloop and eventhandlers. //
22 // This class must be instantiated exactly once in any given //
23 // application. Normally the specific application class inherits from //
24 // TApplication (see TRint). //
25 // //
26 //////////////////////////////////////////////////////////////////////////
27 
28 #include "TObject.h"
29 
30 #include "TQObject.h"
31 
32 #include "TApplicationImp.h"
33 
34 class TObjArray;
35 class TTimer;
36 class TSignalHandler;
37 
38 
39 class TApplication : public TObject, public TQObject {
40 
41 public:
42  // TApplication specific bits
43  enum EStatusBits {
44  kProcessRemotely = BIT(15), // TRUE if this line has to be processed remotely
45  kDefaultApplication = BIT(16) // TRUE if created via CreateApplication()
46  };
47  // TApplication specific bits for fFiles
48  enum EFileBits {
49  kExpression = BIT(14) // If the arguments is an expression rather than a file.
50  };
51  enum EExitOnException {
52  kDontExit,
53  kExit,
54  kAbort
55  };
56 
57 private:
58  Int_t fArgc; //Number of com mand line arguments
59  char **fArgv; //Command line arguments
60  TApplicationImp *fAppImp; //!Window system specific application implementation
61  Bool_t fIsRunning; //True when in event loop (Run() has been called)
62  Bool_t fReturnFromRun; //When true return from Run()
63  Bool_t fNoLog; //Do not process logon and logoff macros
64  Bool_t fNoLogo; //Do not show splash screen and welcome message
65  Bool_t fQuit; //Exit after having processed input files
66  Bool_t fUseMemstat; //Run with TMemStat enabled
67  TObjArray *fFiles; //Array of input files or C++ expression (TObjString's) specified via argv
68  TString fWorkDir; //Working directory specified via argv
69  TString fIdleCommand; //Command to execute while application is idle
70  TTimer *fIdleTimer; //Idle timer
71  TSignalHandler *fSigHandler; //Interrupt handler
72  EExitOnException fExitOnException; //Exit on exception option
73 
74  static Bool_t fgGraphNeeded; // True if graphics libs need to be initialized
75  static Bool_t fgGraphInit; // True if graphics libs initialized
76 
77  TApplication(const TApplication&); // not implemented
78  TApplication& operator=(const TApplication&); // not implemented
79 
80 protected:
81  TApplication *fAppRemote; //Current remote application, if defined
82 
83  static TList *fgApplications; //List of available applications
84 
85  TApplication();
86 
87  virtual Long_t ProcessRemote(const char *line, Int_t *error = 0);
88  virtual void Help(const char *line);
89  virtual void LoadGraphicsLibs();
90  virtual void MakeBatch();
91  void SetSignalHandler(TSignalHandler *sh) { fSigHandler = sh; }
92 
93  static Int_t ParseRemoteLine(const char *ln,
94  TString &hostdir, TString &user,
95  Int_t &dbg, TString &script);
96  static TApplication *Open(const char *url, Int_t debug, const char *script);
97  static void Close(TApplication *app);
98 
99 public:
100  TApplication(const char *appClassName, Int_t *argc, char **argv,
101  void *options = 0, Int_t numOptions = 0);
102  virtual ~TApplication();
103 
104  void InitializeGraphics();
105  virtual void GetOptions(Int_t *argc, char **argv);
106  TSignalHandler *GetSignalHandler() const { return fSigHandler; }
107  virtual void SetEchoMode(Bool_t mode);
108  void OpenInBrowser(const TString & url);
109  void OpenReferenceGuideFor(const TString & strippedClass);
110  virtual void HandleException(Int_t sig);
111  virtual void HandleIdleTimer(); //*SIGNAL*
112  virtual Bool_t HandleTermInput() { return kFALSE; }
113  virtual void Init() { fAppImp->Init(); }
114  virtual Long_t ProcessLine(const char *line, Bool_t sync = kFALSE, Int_t *error = 0);
115  virtual Long_t ProcessFile(const char *file, Int_t *error = 0, Bool_t keep = kFALSE);
116  virtual void Run(Bool_t retrn = kFALSE);
117  virtual void SetIdleTimer(UInt_t idleTimeInSec, const char *command);
118  virtual void RemoveIdleTimer();
119  const char *GetIdleCommand() const { return fIdleCommand; }
120  virtual void StartIdleing();
121  virtual void StopIdleing();
122  EExitOnException ExitOnException(EExitOnException opt = kExit);
123 
124  virtual const char *ApplicationName() const { return fAppImp->ApplicationName(); }
125  virtual void Show() { fAppImp->Show(); }
126  virtual void Hide() { fAppImp->Hide(); }
127  virtual void Iconify() { fAppImp->Iconify(); }
128  virtual void Open() { fAppImp->Open(); }
129  virtual void Raise() { fAppImp->Raise(); }
130  virtual void Lower() { fAppImp->Lower(); }
131  virtual Bool_t IsCmdThread() { return fAppImp ? fAppImp->IsCmdThread() : kTRUE; }
132  virtual TApplicationImp *GetApplicationImp() { return fAppImp;}
133 
134  virtual void ls(Option_t *option="") const;
135 
136  Int_t Argc() const { return fArgc; }
137  char **Argv() const { return fArgv; }
138  char *Argv(Int_t index) const;
139  Bool_t NoLogOpt() const { return fNoLog; }
140  Bool_t NoLogoOpt() const { return fNoLogo; }
141  Bool_t QuitOpt() const { return fQuit; }
142  TObjArray *InputFiles() const { return fFiles; }
143  const char *WorkingDirectory() const { return fWorkDir; }
144  void ClearInputFiles();
145 
146  TApplication *GetAppRemote() const { return fAppRemote; }
147 
148  Bool_t IsRunning() const { return fIsRunning; }
149  Bool_t ReturnFromRun() const { return fReturnFromRun; }
150  void SetReturnFromRun(Bool_t ret) { fReturnFromRun = ret; }
151 
152  virtual void LineProcessed(const char *line); //*SIGNAL*
153  virtual void Terminate(Int_t status = 0); //*SIGNAL*
154  virtual void KeyPressed(Int_t key); //*SIGNAL*
155  virtual void ReturnPressed(char *text ); //*SIGNAL*
156  virtual Int_t TabCompletionHook(char *buf, int *pLoc, std::ostream& out);
157 
158  static Long_t ExecuteFile(const char *file, Int_t *error = 0, Bool_t keep = kFALSE);
159  static TList *GetApplications();
160  static void CreateApplication();
161  static void NeedGraphicsLibs();
162 
163  ClassDef(TApplication,0) //GUI application singleton
164 };
165 
166 R__EXTERN TApplication *gApplication;
167 
168 #endif