00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00022 #ifndef __vtkPVApplication_h
00023 #define __vtkPVApplication_h
00024
00025 #include "vtkKWApplication.h"
00026 class vtkPVProcessModule;
00027
00028 class vtkDataSet;
00029 class vtkKWMessageDialog;
00030 class vtkKWPushButton;
00031 class vtkMapper;
00032 class vtkMultiProcessController;
00033 class vtkSocketController;
00034 class vtkPVOutputWindow;
00035 class vtkPVSource;
00036 class vtkPVWindow;
00037 class vtkPVRenderView;
00038 class vtkPolyDataMapper;
00039 class vtkProbeFilter;
00040 class vtkProcessObject;
00041 class vtkPVApplicationObserver;
00042 class vtkPVProgressHandler;
00043 class vtkKWLoadSaveDialog;
00044 class vtkSMApplication;
00045 class vtkPVGUIClientOptions;
00046 class vtkPVOptions;
00047 class vtkSMRenderModuleProxy;
00048
00049 class VTK_EXPORT vtkPVApplication : public vtkKWApplication
00050 {
00051 public:
00052 static vtkPVApplication* New();
00053 vtkTypeRevisionMacro(vtkPVApplication,vtkKWApplication);
00054 void PrintSelf(ostream& os, vtkIndent indent);
00055
00057
00060 int ParseCommandLineArguments();
00061 virtual void SetOptions(vtkPVGUIClientOptions* op);
00063
00065
00066 vtkGetObjectMacro(SMApplication, vtkSMApplication);
00068
00070
00072 void SetProcessModule(vtkPVProcessModule *module);
00073 vtkPVProcessModule* GetProcessModule() { return this->ProcessModule;}
00075
00077
00078 void SetRenderModuleProxy(vtkSMRenderModuleProxy*);
00079 vtkGetObjectMacro(RenderModuleProxy, vtkSMRenderModuleProxy);
00081
00083 int SetupRenderModule();
00084
00086 virtual vtkKWLoadSaveDialog* NewLoadSaveDialog();
00087
00088
00090
00091 virtual void Start(int argc, char *argv[]);
00092 virtual void Start()
00093 { this->vtkKWApplication::Start(); }
00095
00098 vtkMultiProcessController *GetController();
00099
00103 vtkSocketController *GetSocketController();
00104
00105
00107
00108 int AcceptLicense();
00109 int AcceptEvaluation();
00111
00114 virtual int RemoveWindow(vtkKWWindowBase *);
00115
00119 virtual int Exit();
00120
00124 virtual void DestroyGUI();
00125
00127
00129 static Tcl_Interp *InitializeTcl(int argc, char *argv[], ostream *err = 0);
00130
00132
00134 void Initialize();
00135
00136
00137 #ifdef PV_HAVE_TRAPS_FOR_SIGNALS
00138
00139
00140 void SetupTrapsForSignals(int nodeid);
00141 static void TrapsForSignals(int signal);
00143
00145
00146 static void ErrorExit();
00147 #endif // PV_HAVE_TRAPS_FOR_SIGNALS
00148
00149
00150
00152
00161 void StartRecordingScript(char *filename);
00162 void StopRecordingScript();
00164
00166
00168 vtkPVWindow *GetMainWindow();
00169 vtkPVRenderView *GetMainView();
00171
00174 void DisplayHelpDialog(vtkKWWindowBase* master);
00175
00177
00180 vtkSetMacro(StartGUI, int);
00181 vtkGetMacro(StartGUI, int);
00183
00184
00185 static const char* const ExitProc;
00186
00187
00188 void DisplayTCLError(const char* message);
00189
00191
00194 vtkSetClampMacro(Display3DWidgets, int, 0, 1);
00195 vtkBooleanMacro(Display3DWidgets, int);
00196 vtkGetMacro(Display3DWidgets, int);
00198
00200
00203 vtkSetMacro(NumberOfPipes, int);
00204 vtkGetMacro(NumberOfPipes, int);
00206
00208
00210 vtkGetStringMacro(Argv0);
00211 vtkSetStringMacro(Argv0);
00213
00215
00216 vtkGetStringMacro(TraceFileName);
00218
00221 ofstream *GetTraceFile() {return this->TraceFile;}
00222
00223
00224
00225 virtual void SetShowSourcesLongHelp(int);
00226 vtkGetMacro(ShowSourcesLongHelp, int);
00227 vtkBooleanMacro(ShowSourcesLongHelp, int);
00228
00229
00230
00231 virtual void SetSourcesBrowserAlwaysShowName(int);
00232 vtkGetMacro(SourcesBrowserAlwaysShowName, int);
00233 vtkBooleanMacro(SourcesBrowserAlwaysShowName, int);
00234
00235
00236
00237
00238
00239 virtual void RestoreApplicationSettingsFromRegistry();
00240
00242
00244 void EnableTestErrors();
00245 void DisableTestErrors();
00247
00249 static void Abort();
00250
00252 void ExecuteEvent(vtkObject *o, unsigned long event, void* calldata);
00253
00255 int GetNumberOfPartitions();
00256
00258 void PlayDemo(int fromDashboard);
00259
00263 char* GetTextRepresentation(vtkPVSource* comp);
00264
00266
00270 virtual int SendStringToClient(const char*);
00271 virtual int SendStringToClientAndServer(const char*);
00272 virtual int SendStringToClientAndServerRoot(const char*);
00273 virtual int SendStringToServer(const char*);
00274 virtual int SendStringToServerRoot(const char*);
00276
00278
00281 virtual const char* GetStringFromServer();
00282 virtual const char* GetStringFromClient();
00284
00285
00287
00288 vtkPVGUIClientOptions* GetGUIClientOptions();
00289 vtkPVOptions* GetOptions();
00290
00292
00294
00296 void SetGarbageCollectionGlobalDebugFlag(int flag);
00297 int GetGarbageCollectionGlobalDebugFlag();
00299
00301
00302 void DeferredGarbageCollectionPush();
00303 void DeferredGarbageCollectionPop();
00305
00308 void SaveRuntimeInformation();
00309
00311 int SelfTest();
00312
00313 protected:
00314 vtkPVApplication();
00315 ~vtkPVApplication();
00316
00317 virtual void CreateSplashScreen();
00318 virtual void ConfigureAboutDialog();
00319 virtual void AddAboutText(ostream &);
00320
00321 vtkKWPushButton *SaveRuntimeInfoButton;
00322
00323 void CreateButtonPhotos();
00324 void CreatePhoto(const char *name,
00325 const unsigned char *data,
00326 int width, int height, int pixel_size,
00327 unsigned long buffer_length = 0,
00328 const char *filename = 0);
00329 int CheckRegistration();
00330 int PromptRegistration(char *,char *);
00331
00332 virtual void FindInstallationDirectory();
00333
00334 vtkPVProcessModule *ProcessModule;
00335
00336
00337 int NumberOfPipes;
00338
00339 int Display3DWidgets;
00340
00341 int StartGUI;
00342
00343 vtkPVOutputWindow *OutputWindow;
00344
00345 static int CheckForExtension(const char* arg, const char* ext);
00346 char* CreateHelpString();
00347 int CheckForTraceFile(char* name, unsigned int len);
00348 void DeleteTraceFiles(char* name, int all);
00349 void SaveTraceFile(const char* fname);
00350
00351 vtkSetStringMacro(TraceFileName);
00352 char* TraceFileName;
00353 ofstream *TraceFile;
00354 char* Argv0;
00355
00356
00357 enum
00358 {
00359 NUM_ARGS=100
00360 };
00361 static const char ArgumentList[vtkPVApplication::NUM_ARGS][128];
00362
00363
00364 static vtkPVApplication* MainApplication;
00365
00366 int ShowSourcesLongHelp;
00367 int SourcesBrowserAlwaysShowName;
00368
00369 vtkPVApplicationObserver* Observer;
00370
00371 int ApplicationInitialized;
00372
00373 vtkSMApplication* SMApplication;
00374
00375 vtkPVGUIClientOptions* Options;
00376
00377 vtkSMRenderModuleProxy* RenderModuleProxy;
00378 char* RenderModuleProxyName;
00379 vtkSetStringMacro(RenderModuleProxyName);
00380
00381 private:
00382 vtkPVApplication(const vtkPVApplication&);
00383 void operator=(const vtkPVApplication&);
00384 };
00385
00386 #endif
00387
00388