%{
#include <wx/datetime.h>
- DECLARE_DEF_STRING2(DateFormatStr, wxT("%c"));
- DECLARE_DEF_STRING2(TimeSpanFormatStr, wxT("%H:%M:%S"));
-
-%}
+%}
+MAKE_CONST_WXSTRING2(DateFormatStr, wxT("%c"));
+MAKE_CONST_WXSTRING2(TimeSpanFormatStr, wxT("%H:%M:%S"));
//---------------------------------------------------------------------------
-%typemap(in) wxDateTime::TimeZone& {
+%typemap(in) wxDateTime::TimeZone& (bool temp=False) {
$1 = new wxDateTime::TimeZone((wxDateTime::TZ)PyInt_AsLong($input));
+ temp = True;
}
%typemap(python,freearg) wxDateTime::TimeZone& {
- if ($1) delete $1;
+ if (temp$argnum) delete $1;
}
//---------------------------------------------------------------------------
-%noautorepr wxDateTime;
+//typedef unsigned short wxDateTime_t;
+#define wxDateTime_t int
// wxDateTime represents an absolute moment in the time
class wxDateTime {
public:
- typedef unsigned short wxDateTime_t;
enum TZ
{
// or use the default country with any other
// Western European countries: we assume that they all follow the same
- // DST rules (true or false?)
+ // DST rules (True or False?)
Country_WesternEurope_Start,
Country_EEC = Country_WesternEurope_Start,
France,
// get the current country
static Country GetCountry();
- // return TRUE if the country is a West European one (in practice,
+ // return True if the country is a West European one (in practice,
// this means that the same DST rules as for EEC apply)
static bool IsWestEuropeanCountry(Country country = Country_Default);
// return the current month
static Month GetCurrentMonth(Calendar cal = Gregorian);
- // returns TRUE if the given year is a leap year in the given calendar
+ // returns True if the given year is a leap year in the given calendar
static bool IsLeapYear(int year = Inv_Year, Calendar cal = Gregorian);
// get the century (19 for 1999, 20 for 2000 and -5 for 492 BC)
static wxString GetWeekDayName(WeekDay weekday,
NameFlags flags = Name_Full);
- // get the AM and PM strings in the current locale (may be empty)
- static void GetAmPmStrings(wxString *OUTPUT, wxString *OUTPUT);
+ DocDeclAStr(
+ static void, GetAmPmStrings(wxString *OUTPUT, wxString *OUTPUT),
+ "GetAmPmStrings() -> (am, pm)",
+ "Get the AM and PM strings in the current locale (may be empty)", "");
- // return TRUE if the given country uses DST for this year
+ // return True if the given country uses DST for this year
static bool IsDSTApplicable(int year = Inv_Year,
Country country = Country_Default);
wxDateTime GetPrevWeekDay(WeekDay weekday);
// set to Nth occurence of given weekday in the given month of the
- // given year (time is set to 0), return TRUE on success and FALSE on
+ // given year (time is set to 0), return True on success and False on
// failure. n may be positive (1..5) or negative to count from the end
// of the month (see helper function SetToLastWeekDay())
bool SetToWeekDay(WeekDay weekday,
int year = Inv_Year);
// sets the date to the given day of the given week in the year,
- // returns TRUE on success and FALSE if given date doesn't exist (e.g.
+ // returns True on success and False if given date doesn't exist (e.g.
// numWeek is > 53)
bool SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday = Mon, WeekFlags flags = Monday_First);
wxDateTime GetWeek(wxDateTime_t numWeek, WeekDay weekday = Mon, WeekFlags flags = Monday_First);
// timezone stuff
// transform to any given timezone
- wxDateTime ToTimezone(const wxDateTime::TimeZone& tz, bool noDST = FALSE);
- wxDateTime& MakeTimezone(const wxDateTime::TimeZone& tz, bool noDST = FALSE);
+ wxDateTime ToTimezone(const wxDateTime::TimeZone& tz, bool noDST = False);
+ wxDateTime& MakeTimezone(const wxDateTime::TimeZone& tz, bool noDST = False);
// transform to GMT/UTC
- wxDateTime ToGMT(bool noDST = FALSE);
- wxDateTime& MakeGMT(bool noDST = FALSE);
+ wxDateTime ToGMT(bool noDST = False);
+ wxDateTime& MakeGMT(bool noDST = False);
// is daylight savings time in effect at this moment according to the
// rules of the specified country?
// ------------------------------------------------------------------------
// accessors
- // is the date valid (TRUE even for non initialized objects)?
+ // is the date valid (True even for non initialized objects)?
inline bool IsValid() const;
+ %pythoncode { Ok = IsValid }
+ %pythoncode { def __nonzero__(self): return self.Ok() };
+
// get the number of seconds since the Unix epoch - returns (time_t)-1
// if the value is out of range
inline time_t GetTicks() const;
// ------------------------------------------------------------------------
// comparison (see also functions below for operator versions)
- // returns TRUE if the two moments are strictly identical
+ // returns True if the two moments are strictly identical
inline bool IsEqualTo(const wxDateTime& datetime) const;
- // returns TRUE if the date is strictly earlier than the given one
+ // returns True if the date is strictly earlier than the given one
inline bool IsEarlierThan(const wxDateTime& datetime) const;
- // returns TRUE if the date is strictly later than the given one
+ // returns True if the date is strictly later than the given one
inline bool IsLaterThan(const wxDateTime& datetime) const;
- // returns TRUE if the date is strictly in the given range
+ // returns True if the date is strictly in the given range
inline bool IsStrictlyBetween(const wxDateTime& t1,
const wxDateTime& t2) const;
- // returns TRUE if the date is in the given range
+ // returns True if the date is in the given range
inline bool IsBetween(const wxDateTime& t1, const wxDateTime& t2) const;
// do these two objects refer to the same date?
wxDateTime __sub__(const wxTimeSpan& other) { return *self - other; }
wxDateTime __sub__(const wxDateSpan& other) { return *self - other; }
- bool __lt__(const wxDateTime& other) { return *self < other; }
- bool __le__(const wxDateTime& other) { return *self <= other; }
- bool __gt__(const wxDateTime& other) { return *self > other; }
- bool __ge__(const wxDateTime& other) { return *self >= other; }
- bool __eq__(const wxDateTime& other) { return *self == other; }
- bool __ne__(const wxDateTime& other) { return *self != other; }
+// bool __lt__(const wxDateTime* other) { return other ? (*self < *other) : False; }
+// bool __le__(const wxDateTime* other) { return other ? (*self <= *other) : False; }
+// bool __gt__(const wxDateTime* other) { return other ? (*self > *other) : True; }
+// bool __ge__(const wxDateTime* other) { return other ? (*self >= *other) : True; }
+
+
+ // These fall back to just comparing pointers if other is NULL, or if
+ // either operand is invalid.
+ bool __lt__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self < other;
+ return (*self < *other);
+ }
+ bool __le__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self <= other;
+ return (*self <= *other);
+ }
+ bool __gt__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self > other;
+ return (*self > *other);
+ }
+ bool __ge__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self >= other;
+ return (*self >= *other);
+ }
+
+ bool __eq__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self == other;
+ return (*self == *other);
+ }
+ bool __ne__(const wxDateTime* other) {
+ if (!other || !self->IsValid() || !other->IsValid()) return self != other;
+ return (*self != *other);
+ }
}
%pythoncode {
def __repr__(self):
- return '<wxDateTime: \"%s\" at %s>' % ( self.Format(), self.this)
+ if self.IsValid():
+ return '<wx.DateTime: \"%s\" at %s>' % ( self.Format(), self.this)
+ else:
+ return '<wx.DateTime: \"INVALID\" at %s>' % self.this
def __str__(self):
- return self.Format()
+ if self.IsValid():
+ return self.Format()
+ else:
+ return "INVALID DateTime"
}
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
-%noautorepr wxTimeSpan;
// This class contains a difference between 2 wxDateTime values, so it makes
// sense to add it to wxDateTime and it is the result of subtraction of 2
wxTimeSpan __sub__(const wxTimeSpan& other) { return *self - other; }
wxTimeSpan __mul__(int n) { return *self * n; }
wxTimeSpan __rmul__(int n) { return n * *self; }
- bool __lt__(const wxTimeSpan& other) { return *self < other; }
- bool __le__(const wxTimeSpan& other) { return *self <= other; }
- bool __gt__(const wxTimeSpan& other) { return *self > other; }
- bool __ge__(const wxTimeSpan& other) { return *self >= other; }
- bool __eq__(const wxTimeSpan& other) { return *self == other; }
- bool __ne__(const wxTimeSpan& other) { return *self != other; }
+
+ bool __lt__(const wxTimeSpan* other) { return other ? (*self < *other) : False; }
+ bool __le__(const wxTimeSpan* other) { return other ? (*self <= *other) : False; }
+ bool __gt__(const wxTimeSpan* other) { return other ? (*self > *other) : True; }
+ bool __ge__(const wxTimeSpan* other) { return other ? (*self >= *other) : True; }
+ bool __eq__(const wxTimeSpan* other) { return other ? (*self == *other) : False; }
+ bool __ne__(const wxTimeSpan* other) { return other ? (*self != *other) : True; }
}
inline bool IsEqualTo(const wxTimeSpan& ts) const;
// compare two timestamps: works with the absolute values, i.e. -2
- // hours is longer than 1 hour. Also, it will return FALSE if the
+ // hours is longer than 1 hour. Also, it will return False if the
// timespans are equal in absolute value.
inline bool IsLongerThan(const wxTimeSpan& ts) const;
// compare two timestamps: works with the absolute values, i.e. 1
- // hour is shorter than -2 hours. Also, it will return FALSE if the
+ // hour is shorter than -2 hours. Also, it will return False if the
// timespans are equal in absolute value.
bool IsShorterThan(const wxTimeSpan& t) const;
%pythoncode {
def __repr__(self):
- return '<wxTimeSpan: \"%s\" at %s>' % ( self.Format(), self.this)
+ return '<wx.TimeSpan: \"%s\" at %s>' % ( self.Format(), self.this)
def __str__(self):
return self.Format()
}
wxDateSpan __sub__(const wxDateSpan& other) { return *self - other; }
wxDateSpan __mul__(int n) { return *self * n; }
wxDateSpan __rmul__(int n) { return n * *self; }
-// bool __lt__(const wxDateSpan& other) { return *self < other; }
-// bool __le__(const wxDateSpan& other) { return *self <= other; }
-// bool __gt__(const wxDateSpan& other) { return *self > other; }
-// bool __ge__(const wxDateSpan& other) { return *self >= other; }
- bool __eq__(const wxDateSpan& other) { return *self == other; }
- bool __ne__(const wxDateSpan& other) { return *self != other; }
+
+// bool __lt__(const wxDateSpan* other) { return other ? (*self < *other) : False; }
+// bool __le__(const wxDateSpan* other) { return other ? (*self <= *other) : False; }
+// bool __gt__(const wxDateSpan* other) { return other ? (*self > *other) : True; }
+// bool __ge__(const wxDateSpan* other) { return other ? (*self >= *other) : True; }
+
+ bool __eq__(const wxDateSpan* other) { return other ? (*self == *other) : False; }
+ bool __ne__(const wxDateSpan* other) { return other ? (*self != *other) : True; }
}
};
long wxGetCurrentTime();
wxLongLong wxGetLocalTimeMillis();
+%immutable;
+const wxDateTime wxDefaultDateTime;
+%mutable;
+
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------