X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94d33c49d11788ae1939e9fffb0b28fe04693f47..df16c649d21716a3e54eb2598477fa9ed970f278:/wxPython/src/_datetime.i diff --git a/wxPython/src/_datetime.i b/wxPython/src/_datetime.i index c3eb550e3a..e1d03a945b 100644 --- a/wxPython/src/_datetime.i +++ b/wxPython/src/_datetime.i @@ -19,19 +19,19 @@ %{ #include - 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; } @@ -58,11 +58,12 @@ //--------------------------------------------------------------------------- +//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 { @@ -257,7 +258,7 @@ public: // 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, @@ -318,7 +319,7 @@ public: // 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); @@ -334,7 +335,7 @@ public: // 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) @@ -362,10 +363,12 @@ public: 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); @@ -478,7 +481,7 @@ public: 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, @@ -499,7 +502,7 @@ public: 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); @@ -556,12 +559,12 @@ public: // 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? @@ -575,9 +578,12 @@ public: // ------------------------------------------------------------------------ // 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; @@ -634,20 +640,20 @@ public: // ------------------------------------------------------------------------ // 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? @@ -707,12 +713,39 @@ public: 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); + } } @@ -803,9 +836,15 @@ public: %pythoncode { def __repr__(self): - return '' % ( self.Format(), self.this) + if self.IsValid(): + return '' % ( self.Format(), self.this) + else: + return '' % self.this def __str__(self): - return self.Format() + if self.IsValid(): + return self.Format() + else: + return "INVALID DateTime" } }; @@ -883,12 +922,13 @@ public: 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; } } @@ -908,12 +948,12 @@ public: 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; @@ -948,7 +988,7 @@ public: %pythoncode { def __repr__(self): - return '' % ( self.Format(), self.this) + return '' % ( self.Format(), self.this) def __str__(self): return self.Format() } @@ -1068,12 +1108,14 @@ public: 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; } } }; @@ -1089,5 +1131,9 @@ long wxGetUTCTime(); long wxGetCurrentTime(); wxLongLong wxGetLocalTimeMillis(); +%immutable; +const wxDateTime wxDefaultDateTime; +%mutable; + //--------------------------------------------------------------------------- //---------------------------------------------------------------------------