X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8815349a371e4f86be67e95d52f98c768dd97902..30e24d9dd5a5abf1c9a375ea259eb239b122b7f7:/wxPython/src/_datetime.i diff --git a/wxPython/src/_datetime.i b/wxPython/src/_datetime.i index d5d47b6e2b..aba286b035 100644 --- a/wxPython/src/_datetime.i +++ b/wxPython/src/_datetime.i @@ -30,7 +30,7 @@ MAKE_CONST_WXSTRING(DefaultTimeSpanFormat); $1 = new wxDateTime::TimeZone((wxDateTime::TZ)PyInt_AsLong($input)); temp = true; } -%typemap(python,freearg) wxDateTime::TimeZone& { +%typemap(freearg) wxDateTime::TimeZone& { if (temp$argnum) delete $1; } @@ -42,7 +42,7 @@ MAKE_CONST_WXSTRING(DefaultTimeSpanFormat); // Convert a wxLongLong to a Python Long by getting the hi/lo dwords, then // shifting and oring them together -%typemap(python, out) wxLongLong { +%typemap(out) wxLongLong { PyObject *hi, *lo, *shifter, *shifted; hi = PyLong_FromLong( $1.GetHi() ); lo = PyLong_FromLong( $1.GetLo() ); @@ -78,7 +78,7 @@ public: GMT_6, GMT_5, GMT_4, GMT_3, GMT_2, GMT_1, GMT0, GMT1, GMT2, GMT3, GMT4, GMT5, GMT6, - GMT7, GMT8, GMT9, GMT10, GMT11, GMT12, + GMT7, GMT8, GMT9, GMT10, GMT11, GMT12, GMT13, // Europe WET = GMT0, // Western Europe Time @@ -108,10 +108,14 @@ public: // Australia A_WST = GMT8, // Western Standard Time - A_CST = GMT12 + 1, // Central Standard Time (+9.5) + A_CST = GMT13 + 1, // Central Standard Time (+9.5) A_EST = GMT10, // Eastern Standard Time A_ESST = GMT11, // Eastern Summer Time + // New Zealand + NZST = GMT12, // Standard Time + NZDT = GMT13, // Daylight Saving Time + // Universal Coordinated Time = the new and politically correct name // for GMT UTC = GMT0 @@ -363,11 +367,24 @@ public: static wxString GetWeekDayName(WeekDay weekday, NameFlags flags = Name_Full); - DocDeclAStr( - static void, GetAmPmStrings(wxString *OUTPUT, wxString *OUTPUT), - "GetAmPmStrings() -> (am, pm)", - "Get the AM and PM strings in the current locale (may be empty)", ""); - + %extend { + DocAStr( + GetAmPmStrings, + "GetAmPmStrings() -> (am, pm)", + "Get the AM and PM strings in the current locale (may be empty)", ""); + static PyObject* GetAmPmStrings() { + wxString am; + wxString pm; + wxDateTime::GetAmPmStrings(&am, &pm); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, wx2PyString(am)); + PyTuple_SET_ITEM(tup, 1, wx2PyString(pm)); + wxPyEndBlockThreads(blocked); + return tup; + } + } + // return True if the given country uses DST for this year static bool IsDSTApplicable(int year = Inv_Year, Country country = Country_Default); @@ -413,6 +430,7 @@ public: wxDateTime_t minute = 0, wxDateTime_t second = 0, wxDateTime_t millisec = 0)); + %RenameCtor(DateTimeFromDateTime, wxDateTime(const wxDateTime& date)); ~wxDateTime(); @@ -573,10 +591,22 @@ public: 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); + // interpret current value as being in another timezone and transform + // it to local one + wxDateTime FromTimezone(const wxDateTime::TimeZone& tz, bool noDST = false) const; + wxDateTime& MakeFromTimezone(const wxDateTime::TimeZone& tz, bool noDST = false); + + // transform to/from GMT/UTC + wxDateTime ToUTC(bool noDST = false) const; + wxDateTime& MakeUTC(bool noDST = false); + + wxDateTime ToGMT(bool noDST = false) const; wxDateTime& MakeGMT(bool noDST = false); + wxDateTime FromUTC(bool noDST = false) const; + wxDateTime& MakeFromUTC(bool noDST = false); + + // is daylight savings time in effect at this moment according to the // rules of the specified country? // @@ -591,8 +621,10 @@ public: // is the date valid (True even for non initialized objects)? inline bool IsValid() const; - %pythoncode { Ok = IsValid } - %pythoncode { def __nonzero__(self): return self.Ok() }; + %pythoncode { IsOk = IsValid } + %pythoncode { Ok = IsOk } + + %pythoncode { def __nonzero__(self): return self.IsOk() }; // get the number of seconds since the Unix epoch - returns (time_t)-1 @@ -847,15 +879,42 @@ public: %pythoncode { def __repr__(self): if self.IsValid(): - return '' % ( self.Format(), self.this) + f = self.Format().encode(wx.GetDefaultPyEncoding()) + return '' % ( f, self.this) else: return '' % self.this def __str__(self): if self.IsValid(): - return self.Format() + return self.Format().encode(wx.GetDefaultPyEncoding()) else: return "INVALID DateTime" } + + %property(Day, GetDay, SetDay, doc="See `GetDay` and `SetDay`"); + %property(DayOfYear, GetDayOfYear, doc="See `GetDayOfYear`"); + %property(Hour, GetHour, SetHour, doc="See `GetHour` and `SetHour`"); + %property(JDN, GetJDN, SetJDN, doc="See `GetJDN` and `SetJDN`"); + %property(JulianDayNumber, GetJulianDayNumber, doc="See `GetJulianDayNumber`"); + %property(LastMonthDay, GetLastMonthDay, doc="See `GetLastMonthDay`"); + %property(LastWeekDay, GetLastWeekDay, doc="See `GetLastWeekDay`"); + %property(MJD, GetMJD, doc="See `GetMJD`"); + %property(Millisecond, GetMillisecond, SetMillisecond, doc="See `GetMillisecond` and `SetMillisecond`"); + %property(Minute, GetMinute, SetMinute, doc="See `GetMinute` and `SetMinute`"); + %property(ModifiedJulianDayNumber, GetModifiedJulianDayNumber, doc="See `GetModifiedJulianDayNumber`"); + %property(Month, GetMonth, SetMonth, doc="See `GetMonth` and `SetMonth`"); + %property(NextWeekDay, GetNextWeekDay, doc="See `GetNextWeekDay`"); + %property(PrevWeekDay, GetPrevWeekDay, doc="See `GetPrevWeekDay`"); + %property(RataDie, GetRataDie, doc="See `GetRataDie`"); + %property(Second, GetSecond, SetSecond, doc="See `GetSecond` and `SetSecond`"); + %property(Ticks, GetTicks, doc="See `GetTicks`"); + %property(Week, GetWeek, doc="See `GetWeek`"); + %property(WeekDay, GetWeekDay, doc="See `GetWeekDay`"); + %property(WeekDayInSameWeek, GetWeekDayInSameWeek, doc="See `GetWeekDayInSameWeek`"); + %property(WeekOfMonth, GetWeekOfMonth, doc="See `GetWeekOfMonth`"); + %property(WeekOfYear, GetWeekOfYear, doc="See `GetWeekOfYear`"); + %property(Year, GetYear, SetYear, doc="See `GetYear` and `SetYear`"); + %property(YearDay, GetYearDay, doc="See `GetYearDay`"); + }; //--------------------------------------------------------------------------- @@ -868,9 +927,16 @@ public: class wxTimeSpan { public: + + // TODO: Need an input typemap for wxLongLong... + + + // return the timespan for the given number of milliseconds + static wxTimeSpan Milliseconds(/*wxLongLong*/ long ms); + static wxTimeSpan Millisecond(); // return the timespan for the given number of seconds - static wxTimeSpan Seconds(long sec); + static wxTimeSpan Seconds(/*wxLongLong*/ long sec); static wxTimeSpan Second(); // return the timespan for the given number of minutes @@ -897,8 +963,8 @@ public: // milliseconds) wxTimeSpan(long hours = 0, long minutes = 0, - long seconds = 0, - long milliseconds = 0); + /*wxLongLong*/ long seconds = 0, + /*wxLongLong*/ long milliseconds = 0); ~wxTimeSpan(); @@ -998,10 +1064,18 @@ public: %pythoncode { def __repr__(self): - return '' % ( self.Format(), self.this) + f = self.Format().encode(wx.GetDefaultPyEncoding()) + return '' % ( f, self.this) def __str__(self): - return self.Format() + return self.Format().encode(wx.GetDefaultPyEncoding()) } + + %property(Days, GetDays, doc="See `GetDays`"); + %property(Hours, GetHours, doc="See `GetHours`"); + %property(Milliseconds, GetMilliseconds, doc="See `GetMilliseconds`"); + %property(Minutes, GetMinutes, doc="See `GetMinutes`"); + %property(Seconds, GetSeconds, doc="See `GetSeconds`"); + %property(Weeks, GetWeeks, doc="See `GetWeeks`"); }; @@ -1127,6 +1201,12 @@ public: bool __eq__(const wxDateSpan* other) { return other ? (*self == *other) : false; } bool __ne__(const wxDateSpan* other) { return other ? (*self != *other) : true; } } + + %property(Days, GetDays, SetDays, doc="See `GetDays` and `SetDays`"); + %property(Months, GetMonths, SetMonths, doc="See `GetMonths` and `SetMonths`"); + %property(TotalDays, GetTotalDays, doc="See `GetTotalDays`"); + %property(Weeks, GetWeeks, SetWeeks, doc="See `GetWeeks` and `SetWeeks`"); + %property(Years, GetYears, SetYears, doc="See `GetYears` and `SetYears`"); };