00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00033 #ifndef __vtkKWDirectoryExplorer_h
00034 #define __vtkKWDirectoryExplorer_h
00035
00036 #include "vtkKWCompositeWidget.h"
00037
00038 class vtkKWIcon;
00039 class vtkKWToolbar;
00040 class vtkKWPushButton;
00041 class vtkKWTreeWithScrollbars;
00042 class vtkKWPushButtonWithMenu;
00043 class vtkKWMenu;
00044 class vtkKWDirectoryExplorerInternals;
00045
00046 class KWWidgets_EXPORT vtkKWDirectoryExplorer : public vtkKWCompositeWidget
00047 {
00048
00049 public:
00050 static vtkKWDirectoryExplorer* New();
00051 vtkTypeRevisionMacro(vtkKWDirectoryExplorer,vtkKWCompositeWidget);
00052 void PrintSelf(ostream& os, vtkIndent indent);
00053
00056 virtual int OpenDirectory(const char* path);
00057
00060 virtual int RenameDirectory(const char* currentname, const char* newname);
00061
00063 virtual int DeleteDirectory(const char* dirname);
00064
00066
00068 virtual void SetSelectionMode(int);
00069 virtual void SetSelectionModeToSingle();
00070 virtual void SetSelectionModeToMultiple();
00072
00074 virtual int HasSelection();
00075
00077
00078 virtual const char *GetSelectedDirectory()
00079 {return GetNthSelectedDirectory(0);}
00080 virtual int GetNumberOfSelectedDirectories();
00081 virtual const char *GetNthSelectedDirectory(int i);
00082 virtual void SelectDirectory(const char*);
00083 virtual void DeselectDirectory(const char*);
00084 virtual void ClearSelection();
00086
00088
00090 virtual void SetMaximumNumberOfDirectoriesInHistory(int);
00091 vtkGetMacro(MaximumNumberOfDirectoriesInHistory, int);
00093
00095
00096 virtual void GetSelectionBackgroundColor(double *r, double *g, double *b);
00097 virtual double* GetSelectionBackgroundColor();
00098 virtual void SetSelectionBackgroundColor(double r, double g, double b);
00099 virtual void SetSelectionBackgroundColor(double rgb[3])
00100 { this->SetSelectionBackgroundColor(rgb[0], rgb[1], rgb[2]); };
00101 virtual void GetSelectionForegroundColor(double *r, double *g, double *b);
00102 virtual double* GetSelectionForegroundColor();
00103 virtual void SetSelectionForegroundColor(double r, double g, double b);
00104 virtual void SetSelectionForegroundColor(double rgb[3])
00105 { this->SetSelectionForegroundColor(rgb[0], rgb[1], rgb[2]); };
00107
00109
00111 virtual void SetTreeWidth(int);
00112 virtual int GetTreeWidth();
00113 virtual void SetTreeHeight(int);
00114 virtual int GetTreeHeight();
00116
00118
00119 virtual void GetTreeBackgroundColor(double *r, double *g, double *b);
00120 virtual double* GetTreeBackgroundColor();
00121 virtual void SetTreeBackgroundColor(double r, double g, double b);
00122 virtual void SetTreeBackgroundColor(double rgb[3])
00123 { this->SetTreeBackgroundColor(rgb[0], rgb[1], rgb[2]); };
00125
00127
00140 virtual void SetDirectorySelectedCommand(vtkObject *obj, const char *method);
00141 virtual void SetDirectoryOpenedCommand(vtkObject *obj, const char *method);
00142 virtual void SetDirectoryClosedCommand(vtkObject *obj, const char *method);
00143 virtual void SetDirectoryCreatedCommand(vtkObject *obj, const char *method);
00144 virtual void SetDirectoryDeletedCommand(vtkObject *obj, const char *method);
00145 virtual void SetDirectoryRenamedCommand(vtkObject *obj, const char *method);
00147
00149
00150 enum
00151 {
00152 DirectorySelectedEvent = 10000,
00153 DirectoryOpenedEvent,
00154 DirectoryClosedEvent,
00155 DirectoryCreatedEvent,
00156 DirectoryDeletedEvent
00157 };
00158
00160
00162
00163 virtual void Focus();
00164 virtual int HasFocus();
00166
00168
00169 vtkGetObjectMacro(Toolbar, vtkKWToolbar);
00171
00173
00175 vtkGetObjectMacro(CreateFolderButton, vtkKWPushButton);
00176 vtkGetObjectMacro(BackButton, vtkKWPushButtonWithMenu);
00177 vtkGetObjectMacro(ForwardButton, vtkKWPushButtonWithMenu);
00178 vtkGetObjectMacro(UpButton, vtkKWPushButton);
00180
00182
00185 virtual void AddBindingToInternalWidget(
00186 const char* event, vtkObject *obj, const char* method);
00188
00190
00195 virtual void OpenDirectoryNodeCallback(
00196 const char* node, int offsetFromCurrentIndex);
00198
00202 virtual void SingleClickOnNodeCallback(const char* node);
00203
00205 virtual void RightClickCallback( int x, int y, const char* node);
00206
00209 virtual int RenameCallback();
00210
00213 virtual void RightClickExploreCallback(const char*);
00214
00218 virtual void TreeKeyNavigationCallback();
00219
00223 virtual void DirectoryOpenedCallback(const char* node);
00224
00227 virtual void DirectorySelectedCallback();
00228
00231 virtual void DirectoryClosedCallback(const char* node);
00232
00237 virtual void CreateNewFolderCallback();
00238
00242 virtual void BackToPreviousDirectoryCallback();
00243
00246 virtual void ForwardToNextDirectoryCallback();
00247
00251 virtual void GoUpDirectoryCallback();
00252
00255 virtual int RemoveSelectedNodeCallback();
00256
00258 virtual void LoadRootDirectoryCallback();
00259
00261
00267 virtual void UpdateEnableState();
00268 virtual void Update();
00270
00274 virtual void ScrollToDirectory(const char* prefix);
00275
00276
00277
00278 protected:
00279 vtkKWDirectoryExplorer();
00280 ~vtkKWDirectoryExplorer();
00281
00283 virtual void CreateWidget();
00284
00287 virtual void LoadRootDirectory();
00288
00290 virtual void BackToRoot();
00291
00295 virtual void SelectDirectoryNode(const char* node, int opennode = 1);
00296
00302 virtual const char* ReloadDirectory(const char* node, const char* path);
00303
00305
00309 virtual const char* ReloadDirectory(const char* parentnode,
00310 const char* dirname,
00311 int select);
00313
00315
00319 virtual void OpenSubDirectory(const char* parentnode,
00320 const char* fullname,
00321 int select = 1);
00323
00325
00327 virtual void OpenDirectoryNode(const char* node,
00328 int select = 1,
00329 int opennode = 1);
00331
00333 virtual void OpenWholeTree(const char* node);
00334
00337 virtual void ReloadDirectoryNode(const char* node);
00338
00341 virtual void UpdateDirectoryNode(const char* node);
00342
00344
00345 virtual void AddDirectoryNode(
00346 const char* parentnode,
00347 const char* node,
00348 const char* text,
00349 const char* fullname,
00350 vtkKWIcon *nodeicon);
00352
00355 const char *GetNthSelectedNode(int i);
00356
00358 virtual void UpdateMostRecentDirectoryHistory(const char* node);
00359
00362 virtual void PruneMostRecentDirectoriesInHistory();
00363
00365 virtual void RemoveDirectoryFromHistory(const char* node);
00366
00368 virtual void PopulateContextMenu(vtkKWMenu *menu, const char*);
00369
00371 int IsNodeSelected(const char* node);
00372
00376 const char* OpenDirectoryInternal(const char* dirname, int select);
00377
00379
00380 char *DirectorySelectedCommand;
00381 char *DirectoryOpenedCommand;
00382 char *DirectoryClosedCommand;
00383 char *DirectoryCreatedCommand;
00384 char *DirectoryDeletedCommand;
00385 char *DirectoryRenamedCommand;
00387
00389
00390 virtual void InvokeDirectorySelectedCommand(const char* path);
00391 virtual void InvokeDirectoryOpenedCommand(const char* path);
00392 virtual void InvokeDirectoryClosedCommand(const char* path);
00393 virtual void InvokeDirectoryCreatedCommand(const char* path);
00394 virtual void InvokeDirectoryDeletedCommand(const char* path);
00395 virtual void InvokeDirectoryRenamedCommand(
00396 const char* oldname, const char* newname);
00398
00400 vtkKWDirectoryExplorerInternals *Internals;
00401
00403
00404 vtkKWToolbar *Toolbar;
00405 vtkKWTreeWithScrollbars *DirectoryTree;
00406 vtkKWPushButton *CreateFolderButton;
00407 vtkKWPushButtonWithMenu *BackButton;
00408 vtkKWPushButtonWithMenu *ForwardButton;
00409 vtkKWPushButton *UpButton;
00410 vtkKWMenu *ContextMenu;
00412
00414 int MaximumNumberOfDirectoriesInHistory;
00415
00416
00417
00418 private:
00419
00420 static vtkIdType IdCounter;
00421
00422 vtkKWDirectoryExplorer(const vtkKWDirectoryExplorer&);
00423 void operator=(const vtkKWDirectoryExplorer&);
00424 };
00425 #endif
00426