00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(FXHANDEDINTERFACE_H) && !defined(FX_DISABLEGUI)
00023 #define FXHANDEDINTERFACE_H
00024
00025 #include "FXDialogBox.h"
00026 #include "FXPopup.h"
00027 #include "FXPacker.h"
00028 #include "FXPrimaryButton.h"
00029
00030 #ifdef _MSC_VER
00031 #pragma warning(push)
00032 #pragma warning(disable: 4355) // "this" used in base member init
00033 #endif
00034
00035 namespace FX {
00036
00041
00042 enum FXHandedInterfaceFlags
00043 {
00044 HANDEDINTERFACE_BOTTOMWELL =0,
00045 HANDEDINTERFACE_SIDEWELL =0x02000000,
00046 HANDEDINTERFACE_OKBUTTON =0x04000000,
00047 HANDEDINTERFACE_DEFOKBUTTON =0x04000000,
00048 HANDEDINTERFACE_CANCELBUTTON =0x08000000,
00049 HANDEDINTERFACE_OKCANCELBUTTONS =0x0c000000,
00050 HANDEDINTERFACE_DEFCANCELBUTTON =0x18000000,
00051 HANDEDINTERFACE_DEFCANCEL =0x10000000,
00052 HANDEDINTERFACE_USEYESNO =0x20000000
00053
00054 };
00055
00098 struct FXHandedInterfaceIPrivate;
00099 class FXAPI FXHandedInterfaceI
00100 {
00101 FXHandedInterfaceIPrivate *p;
00102 FXHandedInterfaceI(const FXHandedInterfaceI &);
00103 FXHandedInterfaceI &operator=(const FXHandedInterfaceI &);
00104 protected:
00105 FXHandedInterfaceI() : p(0) {}
00106 enum
00107 {
00108 ID_CANCEL=FXShell::ID_LAST,
00109 ID_ACCEPT,
00110 ID_BUTTONWELL,
00111 ID_DOCKWELL,
00112 ID_UNDOCKWELL,
00113 ID_CHOICE,
00114 ID_LAST=ID_CHOICE+1000
00115 };
00116 long onCmdChoice(FXObject*,FXSelector,void*);
00117 long onButtonWell(FXObject*,FXSelector,void*);
00118 long onCmdDockWell(FXObject*,FXSelector,void*);
00119 long onCmdUndockWell(FXObject*,FXSelector,void*);
00120 long onConfigure(FXObject*,FXSelector,void*);
00121
00122 FXHandedInterfaceI(FXApplyResetList *arl, FXShell *window, FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD,FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING);
00123 FXHandedInterfaceI(FXApplyResetList *arl, FXShell *window, FXHandedInterfaceI &o);
00124 ~FXHandedInterfaceI();
00125 public:
00127 FXPacker *buttonWell() const throw();
00129 FXPrimaryButton *okButton() const throw();
00131 FXPrimaryButton *cancelButton() const throw();
00133 bool isButtonWellDocked() const throw();
00134 protected:
00135 FXint getDefaultWidth();
00136 FXint getDefaultHeight();
00137 void layout();
00138 };
00139
00140 class FXHandedPopup;
00146 class FXAPI FXHandedDialog : public FXTopWindow, public FXApplyResetList, public FXHandedInterfaceI
00147 {
00148 FXDECLARE(FXHandedDialog)
00149 FXHandedDialog(const FXHandedDialog &);
00150 FXHandedDialog &operator=(const FXHandedDialog &);
00151 static FXuint int_filter(FXuint opts, FXuint newopts)
00152 {
00153 opts&=~0x000f0000;
00154 return opts|newopts;
00155 }
00156 protected:
00157 FXHandedDialog() { }
00158 public:
00159 enum
00160 {
00161 ID_CANCEL=FXShell::ID_LAST,
00162 ID_ACCEPT,
00163 ID_BUTTONWELL,
00164 ID_DOCKWELL,
00165 ID_UNDOCKWELL,
00166 ID_CHOICE,
00167 ID_LAST=ID_CHOICE+1000
00168 };
00169 long onCmdChoice(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdChoice(a,b,c); }
00170 long onButtonWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onButtonWell(a,b,c); }
00171 long onCmdDockWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdDockWell(a,b,c); }
00172 long onCmdUndockWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdUndockWell(a,b,c); }
00173 long onConfigure(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onConfigure(a,b,c); }
00174 long onCmdAccept(FXObject*,FXSelector,void*);
00175 long onCmdCancel(FXObject*,FXSelector,void*);
00176 long onKeyPress(FXObject*,FXSelector,void*);
00177 long onKeyRelease(FXObject*,FXSelector,void*);
00179 FXHandedDialog(FXApp *a, const FXString &name, FXuint opts=HANDEDINTERFACE_BOTTOMWELL|DECOR_ALL,FXint x=0,FXint y=0,FXint w=0,FXint h=0, FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD, FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING)
00180 : FXTopWindow(a, name, NULL, NULL, opts, x,y,w,h, 0,0,0,0, 0,0), FXHandedInterfaceI(this, this, pl,pr,pt,pb, hs,vs) { }
00182 FXHandedDialog(FXWindow *owner, const FXString &name, FXuint opts=HANDEDINTERFACE_BOTTOMWELL|DECOR_ALL,FXint x=0,FXint y=0,FXint w=0,FXint h=0, FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD, FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING)
00183 : FXTopWindow(owner, name, NULL, NULL, opts, x,y,w,h, 0,0,0,0, 0,0), FXHandedInterfaceI(this, this, pl,pr,pt,pb, hs,vs) { }
00184
00186 explicit inline FXHandedDialog(FXHandedPopup &o, const FXString &name, FXuint newopts=DECOR_ALL);
00187
00188 virtual FXint getDefaultWidth() { return FXHandedInterfaceI::getDefaultWidth(); }
00189 virtual FXint getDefaultHeight() { return FXHandedInterfaceI::getDefaultHeight(); }
00190 virtual void layout() { FXHandedInterfaceI::layout(); flags&=~FLAG_DIRTY; }
00191 };
00197 class FXAPI FXHandedPopup : public FXPopup, public FXApplyResetList, public FXHandedInterfaceI
00198 {
00199 FXDECLARE(FXHandedPopup)
00200 friend class FXHandedDialog;
00201 FXHandedPopup(const FXHandedPopup &);
00202 FXHandedPopup &operator=(const FXHandedPopup &);
00203 protected:
00204 FXHandedPopup() { }
00205 public:
00206 enum
00207 {
00208 ID_CANCEL=FXShell::ID_LAST,
00209 ID_ACCEPT,
00210 ID_BUTTONWELL,
00211 ID_DOCKWELL,
00212 ID_UNDOCKWELL,
00213 ID_CHOICE,
00214 ID_LAST=ID_CHOICE+1000
00215 };
00216 long onCmdChoice(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdChoice(a,b,c); }
00217 long onButtonWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onButtonWell(a,b,c); }
00218 long onCmdDockWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdDockWell(a,b,c); }
00219 long onCmdUndockWell(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onCmdUndockWell(a,b,c); }
00220 long onConfigure(FXObject*a,FXSelector b,void*c) { return FXHandedInterfaceI::onConfigure(a,b,c); }
00221 long onCmdAccept(FXObject*,FXSelector,void*);
00222 long onCmdCancel(FXObject*,FXSelector,void*);
00223 long onKeyPress(FXObject*,FXSelector,void*);
00224 long onKeyRelease(FXObject*,FXSelector,void*);
00226 FXHandedPopup(FXWindow *owner, FXuint opts=HANDEDINTERFACE_BOTTOMWELL|FRAME_RAISED|FRAME_THICK,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD, FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING)
00227 : FXPopup(owner, opts, x,y,w,h), FXHandedInterfaceI(this, this, pl,pr,pt,pb, hs,vs) { }
00228
00229 virtual FXint getDefaultWidth() { return FXHandedInterfaceI::getDefaultWidth(); }
00230 virtual FXint getDefaultHeight() { return FXHandedInterfaceI::getDefaultHeight(); }
00231 virtual void layout() { FXHandedInterfaceI::layout(); flags&=~FLAG_DIRTY; }
00232 };
00233
00234 inline FXHandedDialog::FXHandedDialog(FXHandedPopup &o, const FXString &name, FXuint newopts)
00235 : FXApplyResetList(o), FXTopWindow(o.getOwner(), name, NULL, NULL, int_filter(o.options, newopts), o.xpos,o.ypos,o.width,o.height, 0,0,0,0, 0,0), FXHandedInterfaceI(this, this, o)
00236 {
00237 o.clearApplyReset();
00238 }
00239
00240 }
00241
00242 #ifdef _MSC_VER
00243 #pragma warning(pop)
00244 #endif
00245
00246 #endif