import wx import wx.calendar import BaseCompanions, EventCollections from PropEdit import PropertyEditors class CalendarConstr: def constructor(self): return {'Date': 'date', 'Position': 'pos', 'Size': 'size', 'Style': 'style', 'Name': 'name'} EventCollections.EventCategories['CalendarEvent'] = ('wx.calendar.EVT_CALENDAR', 'wx.calendar.EVT_CALENDAR_SEL_CHANGED', 'wx.calendar.EVT_CALENDAR_DAY, EVT_CALENDAR_MONTH', 'wx.calendar.EVT_CALENDAR_YEAR', 'wx.calendar.EVT_CALENDAR_WEEKDAY_CLICKED') EventCollections.commandCategories.append('CalendarEvent') class CalendarDTC(CalendarConstr, BaseCompanions.WindowDTC): def __init__(self, name, designer, parent, ctrlClass): BaseCompanions.WindowDTC.__init__(self, name, designer, parent, ctrlClass) self.windowStyles = ['wx.calendar.CAL_SUNDAY_FIRST', 'wx.calendar.CAL_MONDAY_FIRST', 'wx.calendar.CAL_SHOW_HOLIDAYS', 'wx.calendar.CAL_NO_YEAR_CHANGE', 'wx.calendar.CAL_NO_MONTH_CHANGE'] + self.windowStyles self.compositeCtrl = True def designTimeSource(self, position = 'wx.DefaultPosition', size = 'wx.DefaultSize'): return {'date': 'wx.DateTime.Now()', 'pos': position, 'size': size, 'style': 'wx.calendar.CAL_SHOW_HOLIDAYS', 'name': `self.name`} def events(self): return BaseCompanions.WindowDTC.events(self) + ['CalendarEvent'] def writeImports(self): return 'import wx.calendar' class DateTimePropEditor(PropertyEditors.BITPropEditor): def getDisplayValue(self): if self.value.IsValid(): return '<%s>' % self.value.Format() else: return '' def valueAsExpr(self): if self.value.IsValid(): v = self.value return 'wx.DateTimeFromDMY(%d, %d, %d, %d, %d, %d)'%( v.GetDay(), v.GetMonth(), v.GetYear(), v.GetHour(), v.GetMinute(), v.GetSecond()) else: return '' def valueToIECValue(self): return self.valueAsExpr() def inspectorEdit(self): if self.value.IsValid(): PropertyEditors.BITPropEditor.inspectorEdit(self) EventCollections.EventCategories['DatePickerCtrlEvent'] = ('wx.EVT_DATE_CHANGED') EventCollections.commandCategories.append('DatePickerCtrlEvent') class DatePickerCtrlDTC(BaseCompanions.WindowDTC): def __init__(self, name, designer, parent, ctrlClass): BaseCompanions.WindowDTC.__init__(self, name, designer, parent, ctrlClass) self.windowStyles = ['wx.DP_SPIN', 'wx.DP_DROPDOWN', 'wx.DP_DEFAULT', 'wx.DP_ALLOWNONE', 'wx.DP_SHOWCENTURY' ] + self.windowStyles def constructor(self): return {'Position': 'pos', 'Size': 'size', 'Style': 'style', 'Name': 'name'} def designTimeSource(self, position = 'wx.DefaultPosition', size = 'wx.DefaultSize'): return {'pos': position, 'size': size, 'style': 'wx.DP_SHOWCENTURY', 'name': `self.name`} def events(self): return BaseCompanions.WindowDTC.events(self) + ['DatePickerCtrlEvent'] #------------------------------------------------------------------------------- import Plugins Plugins.registerComponent('BasicControls', wx.calendar.CalendarCtrl, 'wx.calendar.CalendarCtrl', CalendarDTC) try: Plugins.registerComponent('BasicControls', wx.DatePickerCtrl, 'wx.DatePickerCtrl', DatePickerCtrlDTC) except NameError: pass PropertyEditors.registeredTypes.extend( [ ('Class', wx.DateTime, [DateTimePropEditor]), ])