00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00035 #ifndef __vtkKWUserInterfaceManagerNotebook_h
00036 #define __vtkKWUserInterfaceManagerNotebook_h
00037
00038 #include "vtkKWUserInterfaceManager.h"
00039
00040 class vtkKWIcon;
00041 class vtkKWNotebook;
00042 class vtkKWUserInterfacePanel;
00043 class vtkKWWidget;
00044 class vtkKWUserInterfaceManagerNotebookInternals;
00045
00046 class KWWidgets_EXPORT vtkKWUserInterfaceManagerNotebook : public vtkKWUserInterfaceManager
00047 {
00048
00049 public:
00050 static vtkKWUserInterfaceManagerNotebook* New();
00051 vtkTypeRevisionMacro(vtkKWUserInterfaceManagerNotebook,vtkKWUserInterfaceManager);
00052 void PrintSelf(ostream& os, vtkIndent indent);
00053
00055
00058 virtual void SetNotebook(vtkKWNotebook*);
00059 vtkGetObjectMacro(Notebook, vtkKWNotebook);
00061
00065 virtual vtkKWApplication* GetApplication();
00066
00070 virtual void Create();
00071
00073
00081 virtual int AddPage(vtkKWUserInterfacePanel *panel,
00082 const char *title,
00083 const char *balloon = 0,
00084 vtkKWIcon *icon = 0);
00085 virtual int RemovePage(vtkKWUserInterfacePanel *panel,
00086 const char *title);
00088
00090
00091 virtual void SetPageTitle(int id, const char *new_title);
00092 virtual void SetPageBalloonHelpString(int id, const char *str);
00093 virtual void SetPageIcon(int id, vtkKWIcon *icon);
00094 virtual void SetPageIconToPredefinedIcon(int id, int icon_index);
00096
00098
00106 virtual vtkKWWidget* GetPageWidget(int id);
00107 virtual vtkKWWidget* GetPageWidget(vtkKWUserInterfacePanel *panel,
00108 const char *title);
00110
00117 virtual vtkKWWidget *GetPagesParentWidget(vtkKWUserInterfacePanel *panel);
00118
00120
00130 virtual void RaisePage(int id);
00131 virtual void RaisePage(vtkKWUserInterfacePanel *panel,
00132 const char *title);
00134
00136
00150 virtual int ShowPanel(vtkKWUserInterfacePanel *panel);
00151 virtual int HidePanel(vtkKWUserInterfacePanel *panel);
00152 virtual int IsPanelVisible(vtkKWUserInterfacePanel *panel);
00153 virtual int RaisePanel(vtkKWUserInterfacePanel *panel);
00155
00160 virtual void UpdatePanel(vtkKWUserInterfacePanel *panel);
00161
00164 virtual vtkKWUserInterfacePanel* GetPanelFromPageId(int page_id);
00165
00167
00170 virtual void SetEnableDragAndDrop(int);
00171 vtkBooleanMacro(EnableDragAndDrop, int);
00172 vtkGetMacro(EnableDragAndDrop, int);
00174
00176
00178 virtual int GetNumberOfDragAndDropEntries();
00179 virtual int DeleteAllDragAndDropEntries();
00181
00183
00187 virtual int GetDragAndDropEntry(
00188 int idx,
00189 ostream &widget_label,
00190 ostream &from_panel_name,
00191 ostream &from_page_title,
00192 ostream &from_after_widget_label,
00193 ostream &to_panel_name,
00194 ostream &to_page_title,
00195 ostream &to_after_widget_label);
00196 virtual int DragAndDropWidget(
00197 const char *widget_label,
00198 const char *from_panel_name,
00199 const char *from_page_title,
00200 const char *from_after_widget_label,
00201 const char *to_panel_name,
00202 const char *to_page_title,
00203 const char *to_after_widget_label);
00205
00207
00209 vtkBooleanMacro(LockDragAndDropEntries, int);
00210 vtkSetMacro(LockDragAndDropEntries, int);
00211 vtkGetMacro(LockDragAndDropEntries, int);
00213
00214
00215
00216
00217
00218
00219 class WidgetLocation
00220 {
00221 public:
00222 WidgetLocation();
00223 void Empty();
00224
00225 int PageId;
00226 vtkKWWidget *AfterWidget;
00227 };
00228
00229
00230
00231
00232
00233 class DragAndDropEntry
00234 {
00235 public:
00236 DragAndDropEntry();
00237
00238 vtkKWWidget *Widget;
00239 WidgetLocation FromLocation;
00240 WidgetLocation ToLocation;
00241 };
00242
00243
00244
00246
00247 virtual void DragAndDropEndCallback(
00248 int x, int y,
00249 vtkKWWidget *widget, vtkKWWidget *anchor, vtkKWWidget *target);
00251
00252
00253
00254 protected:
00255 vtkKWUserInterfaceManagerNotebook();
00256 ~vtkKWUserInterfaceManagerNotebook();
00257
00262 virtual int RemovePageWidgets(vtkKWUserInterfacePanel *panel);
00263
00264 vtkKWNotebook *Notebook;
00265
00267
00268 virtual void UpdatePanelDragAndDrop(vtkKWUserInterfacePanel *panel);
00269 int EnableDragAndDrop;
00270 int LockDragAndDropEntries;
00272
00273
00274
00276
00281 virtual int CanWidgetBeDragAndDropped(
00282 vtkKWWidget *widget, vtkKWWidget **anchor = 0);
00284
00288 virtual char* GetDragAndDropWidgetLabel(vtkKWWidget *widget);
00289
00290
00291
00292 vtkKWUserInterfaceManagerNotebookInternals *Internals;
00293 friend class vtkKWUserInterfaceManagerNotebookInternals;
00294
00296
00297 virtual int GetDragAndDropWidgetLocation(
00298 vtkKWWidget *widget, WidgetLocation *loc);
00300
00302
00304 virtual vtkKWWidget* GetDragAndDropWidgetFromLabelAndLocation(
00305 const char *widget_label, const WidgetLocation *loc_hint);
00307
00309 DragAndDropEntry* GetLastDragAndDropEntry(vtkKWWidget *Widget);
00310
00313 virtual int IsDragAndDropWidgetAtOriginalLocation(vtkKWWidget *widget);
00314
00316
00318 int AddDragAndDropEntry(
00319 vtkKWWidget *Widget,
00320 const WidgetLocation *from_loc,
00321 const WidgetLocation *to_loc);
00323
00325
00328 virtual int DragAndDropWidget(
00329 vtkKWWidget *widget,
00330 const WidgetLocation *from_loc,
00331 const WidgetLocation *to_loc);
00333
00334
00335
00336
00337
00338 private:
00339
00340 vtkKWUserInterfaceManagerNotebook(const vtkKWUserInterfaceManagerNotebook&);
00341 void operator=(const vtkKWUserInterfaceManagerNotebook&);
00342 };
00343
00344 #endif
00345
00346