00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXPOPUP_H
00025
#define FXPOPUP_H
00026
00027
#ifndef FXSHELL_H
00028
#include "FXShell.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
00034
00035
enum {
00036
POPUP_VERTICAL = 0,
00037
POPUP_HORIZONTAL = 0x00020000,
00038
POPUP_SHRINKWRAP = 0x00040000
00039 };
00040
00041
00042
00043
00044
class FXAPI FXPopup :
public FXShell {
00045 FXDECLARE(FXPopup)
00046 private:
00047 FXPopup *prevActive;
00048 FXPopup *nextActive;
00049 protected:
00050 FXWindow *grabowner;
00051 FXColor baseColor;
00052 FXColor hiliteColor;
00053 FXColor shadowColor;
00054 FXColor borderColor;
00055 FXint border;
00056 protected:
00057 FXPopup();
00058 virtual FXbool doesOverrideRedirect() const;
00059
void drawBorderRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00060
void drawRaisedRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00061
void drawSunkenRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00062
void drawRidgeRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00063
void drawGrooveRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00064
void drawDoubleRaisedRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00065
void drawDoubleSunkenRectangle(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00066
void drawFrame(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00067 private:
00068 FXPopup(const FXPopup&);
00069 FXPopup &operator=(const FXPopup&);
00070 #ifdef WIN32
00071 virtual const
char* GetClass() const;
00072 #endif
00073 public:
00074
long onPaint(
FXObject*,FXSelector,
void*);
00075
long onFocusUp(FXObject*,FXSelector,
void*);
00076
long onFocusDown(FXObject*,FXSelector,
void*);
00077
long onFocusLeft(FXObject*,FXSelector,
void*);
00078
long onFocusRight(FXObject*,FXSelector,
void*);
00079
long onFocusNext(FXObject*,FXSelector,
void*);
00080
long onFocusPrev(FXObject*,FXSelector,
void*);
00081
long onEnter(FXObject*,FXSelector,
void*);
00082
long onLeave(FXObject*,FXSelector,
void*);
00083
long onMotion(FXObject*,FXSelector,
void*);
00084
long onMap(FXObject*,FXSelector,
void*);
00085
long onButtonPress(FXObject*,FXSelector,
void*);
00086
long onButtonRelease(FXObject*,FXSelector,
void*);
00087
long onUngrabbed(FXObject*,FXSelector,
void*);
00088
long onCmdUnpost(FXObject*,FXSelector,
void*);
00089 long onKeyPress(FXObject*,FXSelector,
void*);
00090
long onKeyRelease(FXObject*,FXSelector,
void*);
00091
long onCmdChoice(FXObject*,FXSelector,
void*);
00092 public:
00093 enum {
00094 ID_CHOICE=FXShell::ID_LAST,
00095 ID_LAST=ID_CHOICE+1000
00096 };
00097
public:
00098
00099
00100 FXPopup(
FXWindow* owner,FXuint opts=POPUP_VERTICAL|FRAME_RAISED|FRAME_THICK,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00101
00102
00103
virtual FXint getDefaultWidth();
00104
00105
00106
virtual FXint getDefaultHeight();
00107
00108
00109
virtual void layout();
00110
00111
00112 FXPopup* getPrevActive()
const {
return prevActive; }
00113
00114
00115 FXPopup* getNextActive()
const {
return nextActive; }
00116
00117
00118
virtual void setFocus();
00119
00120
00121
virtual void killFocus();
00122
00123
00124
virtual void show();
00125
00126
00127
virtual void hide();
00128
00129
00130
void setFrameStyle(FXuint style);
00131
00132
00133 FXuint getFrameStyle() const;
00134
00135
00136 FXint getBorderWidth()
const {
return border; }
00137
00138
00139
void setHiliteColor(FXColor clr);
00140
00141
00142 FXColor getHiliteColor()
const {
return hiliteColor; }
00143
00144
00145
void setShadowColor(FXColor clr);
00146
00147
00148 FXColor getShadowColor()
const {
return shadowColor; }
00149
00150
00151
void setBorderColor(FXColor clr);
00152
00153
00154 FXColor getBorderColor()
const {
return borderColor; }
00155
00156
00157
void setBaseColor(FXColor clr);
00158
00159
00160 FXColor getBaseColor()
const {
return baseColor; }
00161
00162
00163
virtual void popup(FXWindow* grabto,FXint x,FXint y,FXint w=0,FXint h=0);
00164
00165
00166
virtual void popdown();
00167
00168
00169 FXWindow* getGrabOwner() const;
00170
00171
00172
00173
00174
00175
00176
00177
00178 FXuint getOrientation() const;
00179
00180
00181
void setOrientation(FXuint orient);
00182
00183
00184 FXbool getShrinkWrap() const;
00185
00186
00187
void setShrinkWrap(FXbool sw);
00188
00189 virtual FXbool doesSaveUnder() const;
00190
00191
00192 virtual ~FXPopup();
00193 };
00194
00195 }
00196
00197 #endif