Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_Calendar.h

00001 /*
00002  * $Id: Fl_Calendar.h,v 1.7 2003/04/05 20:44:12 parshin Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Alexey Parshin
00016  * Email  : alexey@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
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     // Popup calendar, relative to widget
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

Generated on Thu Jul 31 15:33:43 2003 for eFLTK by doxygen1.2.15