00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00027 #ifndef __vtkPVWidget_h
00028 #define __vtkPVWidget_h
00029
00030 #include "vtkPVTracedWidget.h"
00031 #include "vtkClientServerID.h"
00032 class vtkKWMenu;
00033 class vtkPVSource;
00034 class vtkPVApplication;
00035 class vtkPVXMLElement;
00036 class vtkPVXMLPackageParser;
00037 class vtkPVWindow;
00038 class vtkSMProperty;
00039 class vtkPVWidgetObserver;
00040
00041
00042 template <class key, class data>
00043 class vtkArrayMap;
00044 template <class value>
00045 class vtkLinkedList;
00046
00047
00048 class VTK_EXPORT vtkPVWidget : public vtkPVTracedWidget
00049 {
00050 public:
00051 vtkTypeRevisionMacro(vtkPVWidget, vtkPVTracedWidget);
00052 void PrintSelf(ostream& os, vtkIndent indent);
00053
00055
00057 virtual void Create(vtkKWApplication *app)
00058 { this->Superclass::Create(app); };
00060
00062
00068 virtual void Accept()=0;
00069 virtual void PostAccept() {};
00070 virtual void Reset();
00072
00076 virtual void Initialize() = 0;
00077
00082 virtual void Update();
00083
00086 virtual void UpdateVTKObjects() {};
00087
00093 void AddDependent(vtkPVWidget *widget);
00094
00096 void RemoveDependent(vtkPVWidget *widget);
00097
00099 void RemoveAllDependents();
00100
00104 virtual void Select() {}
00105
00109 virtual void Deselect() {}
00110
00112
00115 void SetModifiedCommand(const char* cmdObject, const char* methodAndArgs);
00116 void SetAcceptedCommand(const char* cmdObject, const char* methodAndArgs);
00118
00122 virtual void ModifiedCallback();
00123
00125 virtual void AcceptedCallback();
00126
00128
00130 vtkGetMacro(ModifiedFlag,int);
00132
00134 vtkPVApplication *GetPVApplication();
00135
00137 virtual void SaveInBatchScript(ofstream *file);
00138
00143 void SaveState(ofstream *file);
00144
00146
00148 void SetPVSource(vtkPVSource *pvs) { this->PVSource = pvs;}
00149 vtkPVSource *GetPVSource() { return this->PVSource;}
00151
00152
00154
00157 vtkPVWidget* ClonePrototype(vtkPVSource* pvSource,
00158 vtkArrayMap<vtkPVWidget*, vtkPVWidget*>* map)
00159 {
00160 return this->ClonePrototypeInternal(pvSource, map);
00161 }
00163
00164
00166
00168 virtual int ReadXMLAttributes(vtkPVXMLElement* element,
00169 vtkPVXMLPackageParser* parser);
00171
00173
00175 vtkGetStringMacro(ModifiedCommandObjectTclName);
00176 vtkGetStringMacro(ModifiedCommandMethod);
00178
00181 virtual void Trace(ofstream *file) = 0;
00182
00183
00185
00186 virtual void ResetInternal() {};
00187
00189
00191
00192 vtkSMProperty* GetSMProperty();
00193 void SetSMProperty(vtkSMProperty* prop);
00195
00197
00200 vtkSetStringMacro(SMPropertyName);
00201 vtkGetStringMacro(SMPropertyName);
00203
00204 vtkSetMacro(UseWidgetRange, int);
00205 vtkGetMacro(UseWidgetRange, int);
00206 vtkSetVector2Macro(WidgetRange, double);
00207 vtkGetVector2Macro(WidgetRange, double);
00208
00210
00211 vtkGetMacro(HideGUI, int);
00213
00215
00218 vtkGetMacro(KeepsTimeStep, int);
00220 protected:
00221 vtkPVWidget();
00222 ~vtkPVWidget();
00223
00224 char *ModifiedCommandObjectTclName;
00225 char *ModifiedCommandMethod;
00226 vtkSetStringMacro(ModifiedCommandObjectTclName);
00227 vtkSetStringMacro(ModifiedCommandMethod);
00228
00229 char *AcceptedCommandObjectTclName;
00230 char *AcceptedCommandMethod;
00231 vtkSetStringMacro(AcceptedCommandObjectTclName);
00232 vtkSetStringMacro(AcceptedCommandMethod);
00233
00234
00235
00236 int ModifiedFlag;
00237
00238
00239
00240
00241 int KeepsTimeStep;
00242
00243 vtkPVSource* PVSource;
00244
00245 int UseWidgetRange;
00246 double WidgetRange[2];
00247
00248 char* SMPropertyName;
00249
00250
00251 virtual vtkPVWidget* ClonePrototypeInternal(vtkPVSource* pvSource,
00252 vtkArrayMap<vtkPVWidget*, vtkPVWidget*>* map);
00253 virtual void CopyProperties(vtkPVWidget* clone, vtkPVSource* pvSource,
00254 vtkArrayMap<vtkPVWidget*, vtkPVWidget*>* map);
00255
00256
00257
00258 vtkLinkedList<void*>* Dependents;
00259
00260
00261 int HideGUI;
00262
00263 vtkPVWidget* GetPVWidgetFromParser(vtkPVXMLElement* element,
00264 vtkPVXMLPackageParser* parser);
00265 vtkPVWindow* GetPVWindowFormParser(vtkPVXMLPackageParser* parser);
00266
00267
00268
00269
00270 virtual void SaveInBatchScriptForPart(ofstream *file,
00271 vtkClientServerID);
00272
00273
00274 friend class vtkPVWidgetObserver;
00275 vtkPVWidgetObserver* Observer;
00276 virtual void ExecuteEvent(vtkObject* obj, unsigned long event,
00277 void* calldata);
00278
00279
00280 void AddPropertyObservers(vtkSMProperty* property);
00281 void RemovePropertyObservers(vtkSMProperty* property);
00282 private:
00283 vtkSMProperty* SMProperty;
00284
00285 vtkPVWidget(const vtkPVWidget&);
00286 void operator=(const vtkPVWidget&);
00287
00288 };
00289
00290 #endif
00291