last fixes to fixes (MSW compilation works now)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2003 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-03-29 21:18:49 +00:00
parent e87b7b6000
commit c30aaf75f0
4 changed files with 323 additions and 327 deletions

View File

@ -3,11 +3,11 @@
// Purpose: wxDate class // Purpose: wxDate class
// Author: Julian Smart, Steve Marcus, Eric Simon, Chris Hill, // Author: Julian Smart, Steve Marcus, Eric Simon, Chris Hill,
// Charles D. Price // Charles D. Price
// Modified by: // Modified by:
// Created: 01/02/97 // Created: 01/02/97
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) // Copyright: (c)
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DATE_H_ #ifndef _WX_DATE_H_
@ -36,108 +36,109 @@ enum wxdate_format_type {wxMDY, wxDAY, wxMONTH, wxFULL, wxEUROPEAN};
#define wxNO_CENTURY 0x02 #define wxNO_CENTURY 0x02
#define wxDATE_ABBR 0x04 #define wxDATE_ABBR 0x04
class WXDLLEXPORT wxDate: public wxObject class WXDLLEXPORT wxDate : public wxObject
{ {
DECLARE_DYNAMIC_CLASS(wxDate) DECLARE_DYNAMIC_CLASS(wxDate)
protected:
unsigned long julian; // see julDate(); days since 1/1/4713 B.C.
int month; // see NMonth()
int day; // see Day()
int year; // see NYear4()
int day_of_week; // see NDOW(); 1 = Sunday, ... 7 = Saturday
private: protected:
int DisplayFormat; unsigned long julian; // see julDate(); days since 1/1/4713 B.C.
unsigned char DisplayOptions; int month; // see NMonth()
int day; // see Day()
int year; // see NYear4()
int day_of_week; // see NDOW(); 1 = Sunday, ... 7 = Saturday
void julian_to_mdy (); // convert julian day to mdy private:
void julian_to_wday (); // convert julian day to day_of_week int DisplayFormat;
void mdy_to_julian (); // convert mdy to julian day unsigned char DisplayOptions;
public: void julian_to_mdy (); // convert julian day to mdy
wxDate (); void julian_to_wday (); // convert julian day to day_of_week
wxDate (long j); void mdy_to_julian (); // convert mdy to julian day
wxDate (int m, int d, int y);
wxDate (const wxString& dat); public:
wxDate (const wxDate &dt); wxDate ();
wxDate (long j);
wxDate (int m, int d, int y);
wxDate (const wxString& dat);
wxDate (const wxDate &dt);
#ifndef __SALFORDC__ #ifndef __SALFORDC__
operator wxString (void); operator wxString (void);
#endif #endif
void operator = (const wxDate& date); void operator = (const wxDate& date);
void operator = (const wxString& date); void operator = (const wxString& date);
wxDate operator + (long i); wxDate operator + (long i);
wxDate operator + (int i); wxDate operator + (int i);
wxDate operator - (long i); wxDate operator - (long i);
wxDate operator - (int i); wxDate operator - (int i);
long operator - (const wxDate &dt); long operator - (const wxDate &dt);
wxDate &operator += (long i); wxDate &operator += (long i);
wxDate &operator -= (long i); wxDate &operator -= (long i);
wxDate &operator ++ (); // Prefix increment wxDate &operator ++ (); // Prefix increment
wxDate &operator ++ (int); // Postfix increment wxDate &operator ++ (int); // Postfix increment
wxDate &operator -- (); // Prefix decrement wxDate &operator -- (); // Prefix decrement
wxDate &operator -- (int); // Postfix decrement wxDate &operator -- (int); // Postfix decrement
friend bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2);
friend bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2);
friend bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2);
friend bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2);
friend bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2);
friend bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2); friend bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2);
friend ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt); friend ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt);
wxString FormatDate (int type=-1) const; wxString FormatDate (int type=-1) const;
void SetFormat (int format); void SetFormat (int format);
int SetOption (int option, bool enable=TRUE); int SetOption (int option, bool enable=TRUE);
long GetJulianDate() const; // returns julian date long GetJulianDate() const; // returns julian date
int GetDayOfYear() const; // returns relative date since Jan. 1 int GetDayOfYear() const; // returns relative date since Jan. 1
bool IsLeapYear() const; // returns TRUE if leap year, FALSE if not bool IsLeapYear() const; // returns TRUE if leap year, FALSE if not
// Version 4.0 Extension to Public Interface - CDP // Version 4.0 Extension to Public Interface - CDP
// These 'Set's modify the date object and actually SET it
// They all return a reference to self (*this)
wxDate &Set(); // Sets to current system date // These 'Set's modify the date object and actually SET it
wxDate &Set(long lJulian); // They all return a reference to self (*this)
wxDate &Set(int nMonth, int nDay, int nYear);
wxDate &AddWeeks(int nCount = 1); // wxDate &Set(); // Sets to current system date
wxDate &AddMonths(int nCount = 1); // May also pass neg# to decrement wxDate &Set(long lJulian);
wxDate &AddYears(int nCount = 1); // wxDate &Set(int nMonth, int nDay, int nYear);
int GetDay() const; // Numeric Day of date object wxDate &AddWeeks(int nCount = 1); //
int GetDaysInMonth(); // Number of days in month (1..31) wxDate &AddMonths(int nCount = 1); // May also pass neg# to decrement
int GetFirstDayOfMonth() const; // First Day Of Month (1..7) wxDate &AddYears(int nCount = 1); //
wxString GetDayOfWeekName(); // Character Day Of Week ('Sunday'..'Saturday') int GetDay() const; // Numeric Day of date object
int GetDayOfWeek() const; // (1..7) int GetDaysInMonth(); // Number of days in month (1..31)
int GetFirstDayOfMonth() const; // First Day Of Month (1..7)
int GetWeekOfMonth(); // Numeric Week Of Month (1..6) wxString GetDayOfWeekName(); // Character Day Of Week ('Sunday'..'Saturday')
int GetWeekOfYear(); // Numeric Week Of Year (1..52) int GetDayOfWeek() const; // (1..7)
wxString GetMonthName(); // Character Month name int GetWeekOfMonth(); // Numeric Week Of Month (1..6)
int GetMonth() const; // Month Number (1..12) int GetWeekOfYear(); // Numeric Week Of Year (1..52)
wxDate GetMonthStart(); // First Date Of Month
wxDate GetMonthEnd(); // Last Date Of Month
int GetYear() const; // eg. 1992 wxString GetMonthName(); // Character Month name
wxDate GetYearStart(); // First Date Of Year int GetMonth() const; // Month Number (1..12)
wxDate GetYearEnd(); // Last Date Of Year wxDate GetMonthStart(); // First Date Of Month
wxDate GetMonthEnd(); // Last Date Of Month
bool IsBetween(const wxDate& first, const wxDate& second) const; int GetYear() const; // eg. 1992
wxDate GetYearStart(); // First Date Of Year
wxDate GetYearEnd(); // Last Date Of Year
wxDate Previous(int dayOfWeek) const; bool IsBetween(const wxDate& first, const wxDate& second) const;
wxDate Previous(int dayOfWeek) const;
}; };
#endif #endif // wxUSE_TIMEDATE
#endif #endif
// _WX_DATE_H_ // _WX_DATE_H_

View File

@ -16,8 +16,9 @@
#pragma interface "log.h" #pragma interface "log.h"
#endif #endif
#include <wx/dynarray.h> #include <time.h> // for time_t
#include <time.h>
#include "wx/dynarray.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// constants // constants

View File

@ -8,11 +8,11 @@
// Still Further Enhanced by Hill & Simon v3.10 8/05/91 // Still Further Enhanced by Hill & Simon v3.10 8/05/91
// Version 4 by Charles D. Price 6/27/92 // Version 4 by Charles D. Price 6/27/92
// Integrated into wxWindows by Julian Smart 9th July 1995 // Integrated into wxWindows by Julian Smart 9th July 1995
// Modified by: // Modified by:
// Created: 01/02/97 // Created: 01/02/97
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem // Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
@ -49,12 +49,12 @@
#define ABBR_LENGTH 3 #define ABBR_LENGTH 3
static const char *dayname[] = { static const char *dayname[] = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
}; };
static const char *mname[] = { static const char *mname[] = {
"January", "February", "March", "April", "May", "June", "July", "August", "January", "February", "March", "April", "May", "June", "July", "August",
"September", "October", "November", "December" "September", "October", "November", "December"
}; };
static int GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; static int GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
@ -63,96 +63,96 @@ static int GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject)
#endif #endif
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// Constructors // Constructors
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
wxDate::wxDate() wxDate::wxDate()
{ {
DisplayFormat=wxMDY; DisplayFormat=wxMDY;
DisplayOptions='\0'; DisplayOptions='\0';
month = day = year = day_of_week = 0; month = day = year = day_of_week = 0;
julian = 0; julian = 0;
} }
wxDate::wxDate (long j) : julian(j) wxDate::wxDate (long j) : julian(j)
{ {
DisplayFormat=wxMDY; DisplayFormat=wxMDY;
DisplayOptions='\0'; DisplayOptions='\0';
julian_to_mdy (); julian_to_mdy ();
} }
wxDate::wxDate (int m, int d, int y) : month(m), day(d), year(y) wxDate::wxDate (int m, int d, int y) : month(m), day(d), year(y)
{ {
DisplayFormat=wxMDY; DisplayFormat=wxMDY;
DisplayOptions='\0'; DisplayOptions='\0';
mdy_to_julian (); mdy_to_julian ();
} }
wxDate::wxDate (const wxString& dat) wxDate::wxDate (const wxString& dat)
{ {
DisplayFormat=wxMDY; DisplayFormat=wxMDY;
DisplayOptions='\0'; DisplayOptions='\0';
if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0) if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0)
{ {
// Sets the current date // Sets the current date
Set(); Set();
} }
else else
{ {
char buf[100]; char buf[100];
strcpy(buf, (char *) (const char *)dat); strcpy(buf, (char *) (const char *)dat);
char *token = strtok(buf,"/-"); char *token = strtok(buf,"/-");
month = atoi(token); month = atoi(token);
day = atoi(strtok((char *) NULL,"/-")); day = atoi(strtok((char *) NULL,"/-"));
year = atoi(strtok((char *) NULL," ")); year = atoi(strtok((char *) NULL," "));
} }
mdy_to_julian (); mdy_to_julian ();
} }
wxDate::wxDate (const wxDate &dt) wxDate::wxDate (const wxDate &dt)
{ {
DisplayFormat=dt.DisplayFormat; DisplayFormat=dt.DisplayFormat;
DisplayOptions=dt.DisplayOptions; DisplayOptions=dt.DisplayOptions;
month = dt.month; month = dt.month;
day = dt.day; day = dt.day;
year = dt.year; year = dt.year;
mdy_to_julian (); mdy_to_julian ();
} }
void wxDate::operator = (const wxDate &dt) void wxDate::operator = (const wxDate &dt)
{ {
DisplayFormat=dt.DisplayFormat; DisplayFormat=dt.DisplayFormat;
DisplayOptions=dt.DisplayOptions; DisplayOptions=dt.DisplayOptions;
month = dt.month; month = dt.month;
day = dt.day; day = dt.day;
year = dt.year; year = dt.year;
mdy_to_julian (); mdy_to_julian (); // wxUSE_TIMEDATE
} }
void wxDate::operator = (const wxString& dat) void wxDate::operator = (const wxString& dat)
{ {
DisplayFormat=wxMDY; DisplayFormat=wxMDY;
DisplayOptions='\0'; DisplayOptions='\0';
if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0) if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0)
{ {
// Sets the current date // Sets the current date
Set(); Set();
} }
else else
{ {
char buf[100]; char buf[100];
strcpy(buf, (char *)(const char *)dat); strcpy(buf, (char *)(const char *)dat);
char *token = strtok(buf,"/-"); char *token = strtok(buf,"/-");
month = atoi(token); month = atoi(token);
day = atoi(strtok((char *) NULL,"/-")); day = atoi(strtok((char *) NULL,"/-"));
year = atoi(strtok((char *) NULL," ")); year = atoi(strtok((char *) NULL," "));
} }
mdy_to_julian (); mdy_to_julian ();
} }
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
@ -162,7 +162,7 @@ void wxDate::operator = (const wxString& dat)
#ifndef __SALFORDC__ #ifndef __SALFORDC__
wxDate::operator wxString( void ) wxDate::operator wxString( void )
{ {
return FormatDate(); return FormatDate();
} }
#endif #endif
@ -172,73 +172,73 @@ wxDate::operator wxString( void )
wxDate wxDate::operator + (long i) wxDate wxDate::operator + (long i)
{ {
wxDate dp(julian + i); wxDate dp(julian + i);
return dp; return dp;
} }
wxDate wxDate::operator + (int i) wxDate wxDate::operator + (int i)
{ {
wxDate dp(julian + (long)i); wxDate dp(julian + (long)i);
return dp; return dp;
} }
wxDate wxDate::operator - (long i) wxDate wxDate::operator - (long i)
{ {
wxDate dp(julian - i); wxDate dp(julian - i);
return dp; return dp;
} }
wxDate wxDate::operator - (int i) wxDate wxDate::operator - (int i)
{ {
wxDate dp(julian - (long)i); wxDate dp(julian - (long)i);
return dp; return dp;
} }
long wxDate::operator - (const wxDate &dt) long wxDate::operator - (const wxDate &dt)
{ {
return ( julian - dt.julian ); return ( julian - dt.julian );
} }
wxDate &wxDate::operator += (long i) wxDate &wxDate::operator += (long i)
{ {
julian += i; julian += i;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
wxDate &wxDate::operator -= (long i) wxDate &wxDate::operator -= (long i)
{ {
julian -= i; julian -= i;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
wxDate &wxDate::operator ++() wxDate &wxDate::operator ++()
{ {
julian++; julian++;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
wxDate &wxDate::operator ++(int) wxDate &wxDate::operator ++(int)
{ {
julian++; julian++;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
wxDate &wxDate::operator --() wxDate &wxDate::operator --()
{ {
julian--; julian--;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
wxDate &wxDate::operator --(int) wxDate &wxDate::operator --(int)
{ {
julian--; julian--;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
@ -247,32 +247,32 @@ wxDate &wxDate::operator --(int)
bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2)
{ {
return ( dt1.julian < dt2.julian ); return ( dt1.julian < dt2.julian );
} }
bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2)
{ {
return ( (dt1.julian == dt2.julian) || (dt1.julian < dt2.julian) ); return ( (dt1.julian == dt2.julian) || (dt1.julian < dt2.julian) );
} }
bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2)
{ {
return ( dt1.julian > dt2.julian ); return ( dt1.julian > dt2.julian );
} }
bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2)
{ {
return ( (dt1.julian == dt2.julian) || (dt1.julian > dt2.julian) ); return ( (dt1.julian == dt2.julian) || (dt1.julian > dt2.julian) );
} }
bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2)
{ {
return ( dt1.julian == dt2.julian ); return ( dt1.julian == dt2.julian );
} }
bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2) bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2)
{ {
return ( dt1.julian != dt2.julian ); return ( dt1.julian != dt2.julian );
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -281,7 +281,7 @@ bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2)
ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt) ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt)
{ {
return os << (const char *) dt.FormatDate(); return os << (const char *) dt.FormatDate();
} }
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
@ -290,49 +290,49 @@ ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt)
void wxDate::julian_to_wday (void) void wxDate::julian_to_wday (void)
{ {
day_of_week = (int) ((julian + 2) % 7 + 1); day_of_week = (int) ((julian + 2) % 7 + 1);
} }
void wxDate::julian_to_mdy () void wxDate::julian_to_mdy ()
{ {
long a,b,c,d,e,z,alpha; long a,b,c,d,e,z,alpha;
z = julian+1; z = julian+1;
// dealing with Gregorian calendar reform // dealing with Gregorian calendar reform
if (z < 2299161L) if (z < 2299161L)
a = z; a = z;
else { else {
alpha = (long) ((z-1867216.25) / 36524.25); alpha = (long) ((z-1867216.25) / 36524.25);
a = z + 1 + alpha - alpha/4; a = z + 1 + alpha - alpha/4;
} }
b = ( a > 1721423 ? a + 1524 : a + 1158 ); b = ( a > 1721423 ? a + 1524 : a + 1158 );
c = (long) ((b - 122.1) / 365.25); c = (long) ((b - 122.1) / 365.25);
d = (long) (365.25 * c); d = (long) (365.25 * c);
e = (long) ((b - d) / 30.6001); e = (long) ((b - d) / 30.6001);
day = (int)(b - d - (long)(30.6001 * e)); day = (int)(b - d - (long)(30.6001 * e));
month = (int)((e < 13.5) ? e - 1 : e - 13); month = (int)((e < 13.5) ? e - 1 : e - 13);
year = (int)((month > 2.5 ) ? (c - 4716) : c - 4715); year = (int)((month > 2.5 ) ? (c - 4716) : c - 4715);
julian_to_wday (); julian_to_wday ();
} }
void wxDate::mdy_to_julian (void) void wxDate::mdy_to_julian (void)
{ {
int a,b=0; int a,b=0;
int work_month=month, work_day=day, work_year=year; int work_month=month, work_day=day, work_year=year;
// correct for negative year // correct for negative year
if (work_year < 0) if (work_year < 0)
work_year++; work_year++;
if (work_month <= 2) if (work_month <= 2)
{ work_year--; work_month +=12; } { work_year--; work_month +=12; }
// deal with Gregorian calendar // deal with Gregorian calendar
if (work_year*10000. + work_month*100. + work_day >= 15821015.) if (work_year*10000. + work_month*100. + work_day >= 15821015.)
{ {
a = (int)(work_year/100.); a = (int)(work_year/100.);
b = 2 - a + a/4; b = 2 - a + a/4;
} }
julian = (long) (365.25*work_year) + julian = (long) (365.25*work_year) +
(long) (30.6001 * (work_month+1)) + work_day + 1720994L + b; (long) (30.6001 * (work_month+1)) + work_day + 1720994L + b;
julian_to_wday (); julian_to_wday ();
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
@ -341,107 +341,107 @@ void wxDate::mdy_to_julian (void)
wxString wxDate::FormatDate (int type) const wxString wxDate::FormatDate (int type) const
{ {
int actualType = type; int actualType = type;
if (actualType == -1) if (actualType == -1)
actualType = DisplayFormat; actualType = DisplayFormat;
char buf[40]; char buf[40];
memset( buf, '\0', sizeof(buf) ); memset( buf, '\0', sizeof(buf) );
switch ( actualType ) switch ( actualType )
{ {
case wxDAY: case wxDAY:
if ( (day_of_week < 1) || (day_of_week > 7) ) if ( (day_of_week < 1) || (day_of_week > 7) )
strcpy(buf, _("invalid day")); strcpy(buf, _("invalid day"));
else else
strncpy( buf, _(dayname[day_of_week-1]), strncpy( buf, _(dayname[day_of_week-1]),
(DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
return wxString(buf); return wxString(buf);
case wxMONTH: case wxMONTH:
if ( (month < 1) || (month > 12) ) if ( (month < 1) || (month > 12) )
strcpy(buf, _("invalid month")); strcpy(buf, _("invalid month"));
else else
strncpy( buf, _(mname[month-1]), strncpy( buf, _(mname[month-1]),
(DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
return wxString(buf); return wxString(buf);
case wxFULL: case wxFULL:
if ( (month < 1) || (month > 12) || (day_of_week < 0) || if ( (month < 1) || (month > 12) || (day_of_week < 0) ||
(day_of_week > 7) ) (day_of_week > 7) )
{ {
strcpy(buf, _("invalid date")); strcpy(buf, _("invalid date"));
return wxString(buf); return wxString(buf);
} }
strncpy( buf, _(dayname[day_of_week-1]), strncpy( buf, _(dayname[day_of_week-1]),
(DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
strcat( buf, ", "); strcat( buf, ", ");
strncat( buf, _(mname[month-1]), strncat( buf, _(mname[month-1]),
(DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
strcat( buf, " "); strcat( buf, " ");
sprintf( buf+strlen(buf), "%d, %d", day, abs(year) ); sprintf( buf+strlen(buf), "%d, %d", day, abs(year) );
if (year < 0) if (year < 0)
strcat(buf,_(" B.C.")); strcat(buf,_(" B.C."));
return wxString(buf); return wxString(buf);
case wxEUROPEAN: case wxEUROPEAN:
if ( (month < 1) || (month > 12) || (day_of_week < 0) || if ( (month < 1) || (month > 12) || (day_of_week < 0) ||
(day_of_week > 7) ) (day_of_week > 7) )
{ {
strcpy(buf, _("invalid date")); strcpy(buf, _("invalid date"));
return wxString(buf); return wxString(buf);
} }
sprintf(buf,"%d ", day); sprintf(buf,"%d ", day);
strncat(buf, _(mname[month-1]), strncat(buf, _(mname[month-1]),
(DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
sprintf( buf+strlen(buf), " %d", abs(year) ); sprintf( buf+strlen(buf), " %d", abs(year) );
if (year < 0) if (year < 0)
strcat(buf, _(" B.C.")); strcat(buf, _(" B.C."));
return wxString(buf); return wxString(buf);
case wxMDY: case wxMDY:
default: default:
if (day==0 || month==0 || year==0) if (day==0 || month==0 || year==0)
strcpy(buf, _("invalid date")); strcpy(buf, _("invalid date"));
else else
sprintf( buf+strlen(buf), "%1d/%1d/%02d", month, day, sprintf( buf+strlen(buf), "%1d/%1d/%02d", month, day,
(DisplayOptions & wxNO_CENTURY) && (abs(year) > 1899) (DisplayOptions & wxNO_CENTURY) && (abs(year) > 1899)
? (abs(year) - (abs(year) / 100 * 100)) ? (abs(year) - (abs(year) / 100 * 100))
: (abs(year)) ); : (abs(year)) );
return wxString(buf); return wxString(buf);
} }
return wxString(""); return wxString("");
} }
void wxDate::SetFormat( int format ) void wxDate::SetFormat( int format )
{ {
DisplayFormat = format; DisplayFormat = format;
} }
int wxDate::SetOption( int option, bool action ) int wxDate::SetOption( int option, bool action )
{ {
switch ( option ) switch ( option )
{ {
case wxNO_CENTURY: case wxNO_CENTURY:
if ( action ) if ( action )
DisplayOptions |= wxNO_CENTURY; DisplayOptions |= wxNO_CENTURY;
else else
{ {
DisplayOptions &= (~wxNO_CENTURY); DisplayOptions &= (~wxNO_CENTURY);
} }
return 1; return 1;
case wxDATE_ABBR: case wxDATE_ABBR:
if ( action ) if ( action )
DisplayOptions |= wxDATE_ABBR; DisplayOptions |= wxDATE_ABBR;
else else
{ {
DisplayOptions &= (~wxDATE_ABBR); DisplayOptions &= (~wxDATE_ABBR);
} }
return 1; return 1;
default: default:
return 0; return 0;
} }
return 0; return 0;
} }
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
@ -450,29 +450,29 @@ int wxDate::SetOption( int option, bool action )
long wxDate::GetJulianDate( void ) const long wxDate::GetJulianDate( void ) const
{ {
return julian; return julian;
} }
int wxDate::GetDayOfYear( void ) const int wxDate::GetDayOfYear( void ) const
{ {
wxDate temp( 1, 1, year ); wxDate temp( 1, 1, year );
return (int) (julian - temp.julian + 1); return (int) (julian - temp.julian + 1);
} }
bool wxDate::IsLeapYear( void ) const bool wxDate::IsLeapYear( void ) const
{ {
return ( (year >= 1582) ? return ( (year >= 1582) ?
(year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ): (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ):
(year % 4 == 0) ); (year % 4 == 0) );
} }
// Version 4.0 Extension to Public Interface - CDP // Version 4.0 Extension to Public Interface - CDP
wxDate& wxDate::Set() wxDate& wxDate::Set()
{ {
//#ifdef __WXMSW__ //#ifdef __WXMSW__
#if 0 #if 0
struct _dosdate_t sDate; struct _dosdate_t sDate;
_dos_getdate(&sDate); _dos_getdate(&sDate);
@ -496,9 +496,9 @@ wxDate& wxDate::Set()
} }
wxDate& wxDate::Set( wxDate& wxDate::Set(
int nMonth, int nMonth,
int nDay, int nDay,
int nYear) int nYear)
{ {
month = nMonth; month = nMonth;
year = nYear < 0 ? 9999 : nYear; year = nYear < 0 ? 9999 : nYear;
@ -506,16 +506,16 @@ wxDate& wxDate::Set(
day = nDay < GetDaysInMonth() ? nDay : GetDaysInMonth(); day = nDay < GetDaysInMonth() ? nDay : GetDaysInMonth();
mdy_to_julian(); mdy_to_julian();
return *this; return *this;
} }
wxDate & wxDate &
wxDate::Set(long j) wxDate::Set(long j)
{ {
julian = j; julian = j;
julian_to_mdy(); julian_to_mdy();
return *this; return *this;
} }
@ -562,12 +562,12 @@ wxDate& wxDate::AddMonths(int nCount)
if (month < 1) { if (month < 1) {
month = 12; month = 12;
year--; year--;
} }
if (month > 12) { if (month > 12) {
month = 1; month = 1;
year++; year++;
} }
mdy_to_julian(); mdy_to_julian();
return *this; return *this;
} }
@ -581,10 +581,10 @@ wxDate& wxDate::AddYears(int nCount)
int wxDate::GetWeekOfMonth() int wxDate::GetWeekOfMonth()
{ {
// Abs day includes the days from previous month that fills up // Abs day includes the days from previous month that fills up
// the begin. of the week. // the begin. of the week.
int nAbsDay = day + GetFirstDayOfMonth()-1; int nAbsDay = day + GetFirstDayOfMonth()-1;
return (nAbsDay-GetDayOfWeek())/7 + 1; return (nAbsDay-GetDayOfWeek())/7 + 1;
} }
int wxDate::GetWeekOfYear() int wxDate::GetWeekOfYear()
@ -625,32 +625,32 @@ wxString wxDate::GetDayOfWeekName()
bool wxDate::IsBetween(const wxDate& first, const wxDate& second) const bool wxDate::IsBetween(const wxDate& first, const wxDate& second) const
{ {
return (julian >= first.julian && julian <= second.julian); return (julian >= first.julian && julian <= second.julian);
} }
// This function is from NIHCL // This function is from NIHCL
wxDate wxDate::Previous(int dayOfWeek) const wxDate wxDate::Previous(int dayOfWeek) const
{ {
int this_day_Of_Week, desired_day_Of_Week; int this_day_Of_Week, desired_day_Of_Week;
long j; long j;
// Set the desired and current day of week to start at 0 (Monday) // Set the desired and current day of week to start at 0 (Monday)
// and end at 6 (Sunday). // and end at 6 (Sunday).
desired_day_Of_Week = dayOfWeek - 1; // These functions return a value desired_day_Of_Week = dayOfWeek - 1; // These functions return a value
this_day_Of_Week = GetDayOfWeek() - 1; // from 1-7. Subtract 1 for 0-6. this_day_Of_Week = GetDayOfWeek() - 1; // from 1-7. Subtract 1 for 0-6.
j = julian; j = julian;
// Have to determine how many days difference from current day back to // Have to determine how many days difference from current day back to
// desired, if any. Special calculation under the 'if' statement to // desired, if any. Special calculation under the 'if' statement to
// effect the wraparound counting from Monday (0) back to Sunday (6). // effect the wraparound counting from Monday (0) back to Sunday (6).
if (desired_day_Of_Week > this_day_Of_Week) if (desired_day_Of_Week > this_day_Of_Week)
this_day_Of_Week += 7 - desired_day_Of_Week; this_day_Of_Week += 7 - desired_day_Of_Week;
else else
this_day_Of_Week -= desired_day_Of_Week; this_day_Of_Week -= desired_day_Of_Week;
j -= this_day_Of_Week; // Adjust j to set it at the desired day of week. j -= this_day_Of_Week; // Adjust j to set it at the desired day of week.
return wxDate(j); return wxDate(j);
} }
#endif #endif

View File

@ -274,12 +274,6 @@ bool wxFileExists(const char *pszFileName)
} }
*/ */
bool wxDirExists( const wxString& dir )
{
struct stat st;
return ((stat(dir, &st) != -1) && S_ISDIR(st.st_mode) ? TRUE : FALSE);
}
bool bool
wxIsAbsolutePath (const wxString& filename) wxIsAbsolutePath (const wxString& filename)
{ {