Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

GUI/Client/vtkPVWidget.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   ParaView
00004   Module:    $RCSfile: vtkPVWidget.h,v $
00005 
00006   Copyright (c) Kitware, Inc.
00007   All rights reserved.
00008   See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00027 #ifndef __vtkPVWidget_h
00028 #define __vtkPVWidget_h
00029 
00030 #include "vtkPVTracedWidget.h"
00031 #include "vtkClientServerID.h" // needed for vtkClientServerID
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 //BTX
00042 template <class key, class data> 
00043 class vtkArrayMap;
00044 template <class value>
00045 class vtkLinkedList;
00046 //ETX
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 //BTX
00154 
00157   vtkPVWidget* ClonePrototype(vtkPVSource* pvSource,
00158                               vtkArrayMap<vtkPVWidget*, vtkPVWidget*>* map)
00159     {
00160       return this->ClonePrototypeInternal(pvSource, map);
00161     }
00163 //ETX
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   //BTX
00185 
00186   virtual void ResetInternal() {};
00187   //ETX
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   // This flag indicates that the widget has changed and should be
00235   // added to the trace file.
00236   int ModifiedFlag;
00237 
00238 
00239   // This flag indicates if the widget is a widget used to keep
00240   // timestep information for Readers.
00241   int KeepsTimeStep;
00242 
00243   vtkPVSource* PVSource;
00244 
00245   int UseWidgetRange;
00246   double WidgetRange[2];
00247 
00248   char* SMPropertyName;
00249 
00250 //BTX
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   // Used void* instead of vtkPVWidget* to avoid reference counting
00258   vtkLinkedList<void*>* Dependents;
00259 //ETX
00260 
00261   int HideGUI;
00262 
00263   vtkPVWidget* GetPVWidgetFromParser(vtkPVXMLElement* element,
00264                                      vtkPVXMLPackageParser* parser);
00265   vtkPVWindow* GetPVWindowFormParser(vtkPVXMLPackageParser* parser);
00266 
00267 
00268   // Saves for a specific part.  SaveInBatchScript loops over parts.
00269   // This is the way Accept and Reset should work.
00270   virtual void SaveInBatchScriptForPart(ofstream *file, 
00271                                         vtkClientServerID);
00272 
00273   //BTX
00274   friend class vtkPVWidgetObserver;
00275   vtkPVWidgetObserver* Observer;
00276   virtual void ExecuteEvent(vtkObject* obj, unsigned long event,
00277     void* calldata);
00278   //ETX
00279 
00280   void AddPropertyObservers(vtkSMProperty* property);
00281   void RemovePropertyObservers(vtkSMProperty* property);
00282 private:
00283   vtkSMProperty* SMProperty;
00284 
00285   vtkPVWidget(const vtkPVWidget&); // Not implemented
00286   void operator=(const vtkPVWidget&); // Not implemented
00287 
00288 };
00289 
00290 #endif
00291 

Generated on Tue May 30 12:31:41 2006 for ParaView by doxygen 1.3.5