00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FL_CALENDAR_H_
00023 #define _FL_CALENDAR_H_
00024
00025 #include "Fl_Popup_Window.h"
00026 #include "Fl_Date_Time.h"
00027 #include "Fl_Box.h"
00028 #include "Fl_Button.h"
00029
00031 class Fl_Calendar : public Fl_Group {
00032 public:
00033 static Fl_Named_Style* default_style;
00034
00036 Fl_Calendar(int x,int y,int w,int h,const char *lbl=0L);
00037
00039 Fl_Calendar(const char* l = 0,int layout_size=30,Fl_Align layout_al=FL_ALIGN_TOP,int label_w=100);
00040
00041 virtual void layout();
00042 virtual void draw();
00043 virtual void measure(int& w,int& h) const;
00044
00045 virtual void reset() { date(Fl_Date_Time::Now()); }
00046
00047 void date(Fl_Date_Time dt);
00048 Fl_Date_Time date() const;
00049
00050 void dayButtonClicked(unsigned day);
00051 void switchButtonClicked(int monthChange);
00052
00053 private:
00054 static void cbDayButtonClicked(Fl_Widget *,void *);
00055 static void cbSwitchButtonClicked(Fl_Widget *,void *);
00056
00057 Fl_Group *m_headerBox;
00058 Fl_Group *m_buttonBox;
00059 Fl_Box *m_monthNameBox;
00060 Fl_Box *m_dayNameBoxes[7];
00061 Fl_Button *m_dayButtons[31];
00062 Fl_Button *m_switchButtons[4];
00063 Fl_Date_Time m_date;
00064 Fl_String m_headerLabel;
00065 int m_activeButtonIndex;
00066
00067 void ctor_init(int x,int y,int w,int h);
00068 };
00069
00070 class Fl_Popup_Calendar : public Fl_Popup_Window {
00071 public:
00072 static Fl_Named_Style* default_style;
00073
00074 Fl_Popup_Calendar(Fl_Widget *dateControl=NULL);
00075
00076 Fl_Calendar *calendar() { return m_calendar; }
00077
00078 void clicked() { set_value(); }
00079 void layout();
00080 void draw();
00081 int handle(int);
00082
00083 void date(Fl_Date_Time dt) { m_calendar->date(dt); }
00084 Fl_Date_Time date() const { return m_calendar->date(); }
00085
00086 bool popup();
00087
00088 bool popup(Fl_Widget *dateControl, int X, int Y, int W=0, int H=0);
00089
00090 private:
00091 friend class Fl_Calendar;
00092 Fl_Calendar *m_calendar;
00093 Fl_Widget *m_dateControl;
00094 };
00095
00096 #endif