00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00035 #ifndef __vtkPVLookmarkManager_h
00036 #define __vtkPVLookmarkManager_h
00037
00038 #include "vtkKWTopLevel.h"
00039
00040 class vtkKWLookmarkFolder;
00041 class vtkPVLookmark;
00042 class vtkXMLDataElement;
00043 class vtkKWFrame;
00044 class vtkKWFrameWithScrollbar;
00045 class vtkKWPushButton;
00046 class vtkPVApplication;
00047 class vtkPVRenderView;
00048 class vtkKWMenu;
00049 class vtkKWMessageDialog;
00050 class vtkKWTextWithScrollbars;
00051 class vtkPVTraceHelper;
00052 class vtkPVWindow;
00053 class vtkPVReaderModule;
00054
00055
00056 template<class DataType> class vtkVector;
00057
00058
00059 class VTK_EXPORT vtkPVLookmarkManager : public vtkKWTopLevel
00060 {
00061 public:
00062 static vtkPVLookmarkManager* New();
00063 vtkTypeRevisionMacro(vtkPVLookmarkManager, vtkKWTopLevel);
00064 void PrintSelf(ostream& os, vtkIndent indent);
00065
00067 virtual void Create(vtkKWApplication *app);
00068
00070 virtual void Display();
00071
00073 virtual void Withdraw();
00074
00076
00077 vtkGetObjectMacro(TraceHelper, vtkPVTraceHelper);
00079
00081 vtkPVLookmark* GetPVLookmark(char *name);
00082
00083
00084
00086
00089 void ImportLookmarkFileCallback();
00090 void ImportBoundingBoxFileCallback();
00091 void ImportLookmarkFile(const char *path, int appendFlag);
00093
00095
00099 void CreateLookmarkCallback(int macroFlag);
00100 vtkPVLookmark* CreateLookmark(char *name, int macroFlag);
00102
00104
00106 void SaveAllCallback();
00107 void SaveAll(const char *path);
00109
00113 void ExportFolderCallback();
00114
00118 void UpdateLookmarkCallback();
00119
00122 void RemoveCallback();
00123
00125
00127 void CreateFolderCallback();
00128 vtkKWLookmarkFolder* CreateFolder(const char *name, int macroFlag);
00130
00132 void SetStateOfAllLookmarkItems(int state);
00133
00135
00137 void UndoCallback();
00138 void RedoCallback();
00140
00142
00144 void RenameLookmarkCallback();
00145 void RenameFolderCallback();
00147
00149
00151 vtkKWLookmarkFolder *GetMacrosFolder();
00153
00160 void ImportMacroExamplesCallback();
00161
00165 void AddMacroExampleCallback(int index);
00166
00170 void SelectItemCallback(char *name);
00171
00173
00174 void DisplayUsersTutorial();
00175 void DisplayQuickStartGuide();
00177
00182 void DragAndDropPerformCommand(int x, int y, vtkKWWidget *widget, vtkKWWidget *anchor);
00183
00187 void DragAndDropEndCommand(int x, int y, vtkKWWidget *widget, vtkKWWidget *anchor, vtkKWWidget *target);
00188
00195 virtual void UpdateEnableState();
00196
00197 protected:
00198
00199 vtkPVLookmarkManager();
00200 ~vtkPVLookmarkManager();
00201
00202
00203 vtkPVApplication* GetPVApplication();
00204 vtkPVRenderView* GetPVRenderView();
00205 vtkPVWindow* GetPVWindow();
00206
00208 const char* GetPathToFileInHomeDirectory(const char* filename);
00209
00210
00211 virtual void ConfigureQuickStartGuide();
00212 virtual void ConfigureUsersTutorial();
00213
00217 void ResetDragAndDropTargetSetAndCallbacks();
00218
00222 virtual int DragAndDropWidget( vtkKWWidget *widget, vtkKWWidget *destAfterWidget);
00223
00226 void RemoveItemAsDragAndDropTarget(vtkKWWidget *removedTarget);
00227
00229
00230 void MoveCheckedChildren(vtkKWWidget *recursiveWidget, vtkKWWidget *frameToPackLmkItemInto);
00231 void DestroyUnusedFoldersFromWidget(vtkKWWidget *widget);
00232 int GetNumberOfChildLmkItems(vtkKWWidget *prnt);
00234
00236
00240 void DecrementHigherSiblingLmkItemLocationIndices(vtkKWWidget *parent, int location);
00241 void IncrementHigherSiblingLmkItemLocationIndices(vtkKWWidget *parent, int location);
00243
00246 void PackChildrenBasedOnLocation(vtkKWWidget *parent);
00247
00250 void RemoveCheckedChildren(vtkKWWidget *parent, int forceRemoveFlag);
00251
00255 void ImportLookmarkFileInternal(int locationOfLmkItemAmongSiblings, vtkXMLDataElement *recursiveXmlElement, vtkKWWidget *parentWidget);
00256
00259 void ImportMacroExamplesInternal(int locationOfLmkItemAmongSiblings, vtkXMLDataElement *recursiveXmlElement, vtkKWMenu *parentMenu);
00260
00261 */
00262 void ImportBoundingBoxFileInternal(vtkPVReaderModule *reader, vtkPVLookmark *macro, char *boundingBoxFileName);
00263
00266 char* PromptForFile(char *extension, int save_flag);
00267
00270 vtkPVLookmark* GetPVLookmark(vtkXMLDataElement *elem);
00271
00273
00276 void EncodeNewlines(char *str);
00277 void DecodeNewlines(char *str);
00279
00283 void SetButtonFrameState(int state);
00284
00286 void CreateNestedXMLElements(vtkKWWidget *wid, vtkXMLDataElement *parentElement);
00287
00292 void SaveFolderInternal(char *path, vtkKWLookmarkFolder *folder);
00293
00294
00295
00296
00297 char* GetUnusedLookmarkName();
00298
00300 int IsWidgetInsideFolder(vtkKWWidget *widget, vtkKWWidget *folder);
00301
00307 void Checkpoint();
00308
00310 void UndoRedoInternal();
00311
00312 private:
00313
00314 vtkPVLookmarkManager(const vtkPVLookmarkManager&);
00315 void operator=(const vtkPVLookmarkManager&);
00316
00317
00318 vtkVector<vtkPVLookmark*> *Lookmarks;
00319 vtkVector<vtkPVLookmark*> *MacroExamples;
00320 vtkVector<vtkKWLookmarkFolder*> *Folders;
00321
00322
00323 vtkKWFrame *WindowFrame;
00324 vtkKWFrameWithScrollbar *ScrollFrame;
00325 vtkKWFrame *SeparatorFrame;
00326
00327 vtkKWFrame *TopDragAndDropTarget;
00328
00329 vtkKWMenu *MenuFile;
00330 vtkKWMenu *MenuEdit;
00331 vtkKWMenu *MenuImport;
00332 vtkKWMenu *MenuImportLmkFile;
00333 vtkKWMenu *MenuImportBoundingBoxFile;
00334 vtkKWMenu *MenuHelp;
00335 vtkKWMenu *MenuExamples;
00336
00337 vtkKWPushButton *CreateLookmarkButton;
00338
00339 vtkKWMessageDialog *QuickStartGuideDialog;
00340 vtkKWTextWithScrollbars *QuickStartGuideTxt;
00341 vtkKWMessageDialog *UsersTutorialDialog;
00342 vtkKWTextWithScrollbars *UsersTutorialTxt;
00343
00344 vtkPVTraceHelper* TraceHelper;
00345 };
00346
00347 #endif