trunk 20080912
[gitenigma.git] / include / lib / gui / enumber.h
blob274175b4637fc9678508f3538780e1a41be4786c
1 #ifndef __enumber_h
2 #define __enumber_h
4 #include <lib/gui/ewidget.h>
6 class eLabel;
7 class gPainter;
9 /**
10 * \brief A widget to enter a number.
12 class eNumber: public eDecoWidget
14 private:
15 void redrawNumber(gPainter *, int n, const eRect &rect);
16 void redrawWidget(gPainter *, const eRect &rect);
17 eRect getNumberRect(int n);
18 int eventHandler(const eWidgetEvent &event);
19 int number[32];
20 int len, dspace, space_selected, active;
21 gColor cursorB, cursorF, normalB, normalF;
22 int oldmax;
23 int have_focus;
24 int min, max, digit, maxdigits, isactive;
25 int flags;
26 int base;
27 eWidget* descr;
28 eLabel* tmpDescr; // used for description Label in LCD
29 bool neg;
30 int saved_keyboard_mode;
31 protected:
32 int getActive() { return active; }
33 int keyDown(int key);
34 void gotFocus();
35 void lostFocus();
36 int setProperty(const eString &prop, const eString &value);
37 public:
38 static void unpack(__u32 l, int *t);
39 static void pack(__u32 &l, int *t);
40 void invalidateNum();
41 Signal1<void, int*> selected;
42 Signal0<void> numberChanged;
43 eNumber(eWidget *parent, int len, int min, int max, int maxdigits, int *init, int isactive=0, eWidget* descr=0, int grabfocus=1, const char* deco="eNumber" );
44 ~eNumber();
45 int getNumber(int f) { if ((f>=0) && (f<len)) return number[f]; return -1; }
46 double getFixedNum();
47 void setFixedNum(double);
48 void setNumber(int f, int n);
49 void setLimits(int min, int max);
50 void setNumberOfFields(int n);
51 void setMaximumDigits(int n);
52 enum
54 flagDrawPoints=1,
55 flagDrawBoxes=2,
56 flagFillWithZeros=4,
57 flagTime=8,
58 flagPosNeg=16,
59 flagHideInput=32,
60 flagFixedNum=64
62 void setFlags(int flags);
63 void setBase(int base);
65 void setNumber(int n);
66 int getNumber();
67 void setDescr( eWidget *d ) { descr = d; }
70 #endif