ede/etimedate/EDE_Calendar.h

112 lines
3.0 KiB
C
Raw Normal View History

2007-07-18 22:20:04 +04:00
/*
* $Id$
*
* Extended Fast Light Toolkit (EFLTK)
* Copyright (C) 2002-2003 by EDE-Team
* WWW: http://www.sourceforge.net/projects/ede
*
* Fast Light Toolkit (FLTK)
* Copyright (C) 1998-2003 by Bill Spitzak and others.
* WWW: http://www.fltk.org
*
* This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
* version 2. See COPYING for details.
*
* Author : Alexey Parshin
* Email : alexey@fltk.net
*
* Please report all bugs and problems to "efltk-bugs@fltk.net"
*
*/
//
// Ported to FLTK2 by Vedran Ljubovic <vljubovic@smartnet.ba>, 2005.
#ifndef _EDE_CALENDAR_H_
#define _EDE_CALENDAR_H_
/*
#include <efltk/Fl.h>
#include <efltk/Fl_Popup_Window.h>
#include <efltk/Fl_Date_Time.h>
#include <efltk/Fl_Box.h>
#include <efltk/Fl_Button.h>*/
#include "Fl_Date_Time.h"
#include <fltk/InvisibleBox.h>
#include <fltk/Button.h>
#include <fltk/Group.h>
#include <fltk/Symbol.h>
/** Fl_Calendar */
class EDE_Calendar : public fltk::Group {
public:
static fltk::NamedStyle* default_style;
/** The traditional constructor creates the calendar using the position, size, and label. */
EDE_Calendar(int x,int y,int w,int h,const char *lbl=0L);
/** The new style constructor creates the calendar using the label, size, alignment, and label_width. */
// Fl_Calendar(const char* l = 0,int layout_size=30,fltk::Align layout_al=fltk::ALIGN_TOP,int label_w=100);
virtual void layout();
virtual void draw();
virtual void measure(int& w,int& h) const;
virtual void reset() { date(Fl_Date_Time::Now()); }
void date(Fl_Date_Time dt);
Fl_Date_Time date() const;
void dayButtonClicked(unsigned day);
void dayButtonChanged(unsigned day);
void switchButtonClicked(int monthChange);
private:
static void cbDayButtonClicked(fltk::Widget *,void *);
static void cbSwitchButtonClicked(fltk::Widget *,void *);
fltk::Group *m_headerBox;
fltk::Group *m_buttonBox;
fltk::InvisibleBox *m_monthNameBox;
fltk::InvisibleBox *m_dayNameBoxes[7];
fltk::Button *m_dayButtons[31];
fltk::Button *m_switchButtons[4];
Fl_Date_Time m_todayDate;
Fl_Date_Time m_activeDate;
int m_globalx, m_globaly;
char m_headerLabel[20]; // month+year shouldn't get larger in any locale
void ctor_init(int x,int y,int w,int h);
};
/* We lack Fl_Popup_Window to make this work... Maybe later...
class Fl_Popup_Calendar : public Fl_Popup_Window {
public:
static fltk::NamedStyle* default_style;
Fl_Popup_Calendar(fltk::Widget *dateControl=NULL);
Fl_Calendar *calendar() { return m_calendar; }
void clicked() { set_value(); }
void layout();
void draw();
int handle(int);
void date(Fl_Date_Time dt) { m_calendar->date(dt); }
Fl_Date_Time date() const { return m_calendar->date(); }
bool popup();
// Popup calendar, relative to widget
bool popup(fltk::Widget *dateControl, int X, int Y, int W=0, int H=0);
private:
friend class Fl_Calendar;
Fl_Calendar *m_calendar;
fltk::Widget *m_dateControl;
};*/
#endif