00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00045 #ifndef _FXWIZARD_H_
00046 #define _FXWIZARD_H_
00047
00048 #include "fxdefs.h"
00049
00050
00051
00052 #include<new.h>
00053
00054
00055 #include "FXArray.h"
00056 #include "FXElement.h"
00057
00067 extern FXImage* FXNullImage;
00072 extern FXImage* FXEmptyImage;
00079 extern FXPoint FXPlacementDefault;
00080 extern FXPoint FXPlacementVisible;
00081 extern FXPoint FXPlacementCursor;
00082 extern FXPoint FXPlacementOwner;
00083 extern FXPoint FXPlacementScreen;
00084 extern FXPoint FXPlacementMaximized;
00085
00087
00088
00089
00090
00091
00092 class FXWizardPage;
00093 class FXTLNode;
00094
00095
00096
00097
00098 class FXWizard : public FXDialogBox
00099 {
00100 FXDECLARE(FXWizard);
00101 protected:
00102 FXWizard(){}
00103
00104 public:
00105
00121 FXWizard(FXApp *app, const FXString& name, FXImage* image ,
00122 FXPoint position = FXPlacementScreen, FXint padding = 5);
00123
00139 FXWizard(FXWindow *owner, const FXString& name, FXImage* image ,
00140 FXPoint position = FXPlacementScreen, FXint padding = 5);
00141
00142 public:
00143
00144
00146 long onPrevOrNext(FXObject*,FXSelector,void* ptr);
00147
00149 long onCancel(FXObject*,FXSelector,void* ptr);
00150
00152 long onHelp(FXObject*,FXSelector,void* ptr);
00153
00154 public:
00155
00157 enum
00158 {
00160 ID_WIZARD_PREV=FXDialogBox::ID_LAST,
00162 ID_WIZARD_NEXT,
00166 ID_WIZARD_CANCEL,
00168 ID_WIZARD_HELP,
00169 ID_LAST
00170 };
00171
00178 FXArray<FXWizardPage*> pageArray;
00179
00180 private:
00181
00182
00183
00184
00185 FXImage* _wizImage;
00186
00187
00188 FXImageFrame* _wizImageFrame;
00189
00190
00191 FXWizardPage *_page;
00192
00193
00194 FXuint _width,
00195 _height;
00196
00197
00198 FXSize _sizePage;
00199
00200
00201 FXPoint _posWizard;
00202
00203
00204 FXButton *_btnPrev,
00205 *_btnNext,
00206 *_btnCancel;
00207
00208 FXHorizontalSeparator *_separator;
00209
00210 public:
00211
00213 void create();
00214
00219 int run(FXWizardPage* startPage);
00220
00224 void move(FXuint x, FXuint y);
00225
00229 void move(FXPoint pos);
00230
00234 static void chain(FXWizardPage *first, ...);
00235
00236 private:
00237
00238
00239
00240 void _movePages(FXuint x, FXuint y);
00241
00242
00243 FXbool _showPage(FXWizardPage *page, FXbool goingForward);
00244
00245
00246 void _constructControls();
00247
00248
00249 bool _wasCreated() const { return _btnPrev != NULL; }
00250
00251
00252
00253 FXSize _getPageSizes();
00254
00255
00256
00257 void _setPageSizes(FXuint w, FXuint h);
00258
00259
00260 FXSize _getImageSizes();
00261
00262 };
00263
00264
00265
00266
00267
00268 class FXWizardPage : public FXPacker
00269 {
00270 FXDECLARE(FXWizardPage);
00271
00272 protected:
00273 FXWizardPage(){}
00274
00275 public:
00276
00287 FXWizardPage(FXWizard* wizard,
00288 FXImage *image = FXNullImage,
00289 FXWizardPage *prev = (FXWizardPage *)NULL,
00290 FXWizardPage *next = (FXWizardPage *)NULL,
00291 FXuint opts = FRAME_NONE
00292 );
00293
00294 public:
00295
00299 virtual long onPageChanging(FXObject*,FXSelector,void* ptr) { return 1; }
00300
00304 virtual long onPageChanged(FXObject*,FXSelector,void* ptr) { return 1; }
00305
00309 virtual long onPageCancel(FXObject*,FXSelector,void* ptr) { return 1; }
00310
00314 virtual long onPageHelp(FXObject*,FXSelector,void* ptr) { return 1; }
00315
00317 long onFocusNext(FXObject* sender,FXSelector sel ,void* ptr);
00318
00319 protected:
00320
00322 FXImage* _pageImage;
00323
00324 public:
00325
00327 enum
00328 {
00329 ID_WIZARDPAGE_CHANGED=FXPacker::ID_LAST,
00330 ID_WIZARDPAGE_CHANGING,
00331 ID_LAST
00332 };
00333
00334 private:
00335
00336
00337
00338 FXWizardPage *_prev,
00339 *_next;
00340
00341
00342 FXbool _focusEnabled;
00343
00344
00345 FXWizard* _wizard;
00346
00347 public:
00348
00350 void setPrev(FXWizardPage *prev) { _prev = prev; }
00351
00353 void setNext(FXWizardPage *next) { _next = next; }
00354
00358 virtual FXWizardPage *getPrev() const { return _prev; }
00359
00363 virtual FXWizardPage *getNext() const { return _next; }
00364
00369 virtual bool transferDataFromPage() { return TRUE; }
00370
00381 virtual FXImage* getImage() { return _pageImage; }
00382
00384 void enableFocus() { _focusEnabled = TRUE; }
00385
00389 void disableFocus() { _focusEnabled = FALSE; }
00390
00392 FXbool canFocus() { return _focusEnabled; }
00393 };
00394
00395 #endif