def on_policy_listbox_doubleclick(self, event): index = self.policy_listbox.GetSelection() plcy = self.policy_list[index] dlg = PolicyDialog(self) dlg.title_box.SetValue(plcy.title) dlg.message_box.Enable(True) dlg.message_box.SetValue(plcy.message) dlg.time_ctrl.Enable(True) dlg.time_ctrl.SetWxDateTime(wx.pydate2wxdate(plcy.date)) dlg.calen_ctrl.Enable(True) dlg.calen_ctrl.SetDate(wx.pydate2wxdate(plcy.date)) dlg.periods_combo.Enable(True) dlg.periods_combo.SetValue(plcy.period) dlg.message_type_combo.Enable(True) dlg.message_type_combo.SetValue(plcy.message_type) dlg.ok_button.Enable(True) ret = dlg.ShowModal() if ret == wx.ID_OK: plcy.title = dlg.title_box.GetValue() plcy.message = dlg.message_box.GetValue() plcy.s_time = dlg.time_ctrl.GetValue() if (dlg.calen_ctrl.GetDate() != plcy.date) or (dlg.time_ctrl.GetValue(as_wxDateTime=True) != plcy.date): t_time = dlg.time_ctrl.GetValue(as_wxDateTime=True) date = dlg.calen_ctrl.GetDate() # construct the execution datetime for the reminder plcy.date = du.splice_wxDate_wxTime(date, t_time) self.delete_policy_reminders(plcy) self.reminder_list.extend(pl.create_pending_reminders(plcy)) self.start_reminder_timers_for_this_policy(plcy) plcy.period = dlg.periods_combo.GetValue() plcy.message_type = dlg.message_type_combo.GetValue() self.policy_list[index] = plcy self.save_to_xml() self.update_policy_box() self.show_pending_reminders() dlg.Destroy() elif ret == wx.ID_CANCEL: dlg.Destroy()
def UpdateFromTimeline(self): timeline = Timeline.app() self._filter_has_changed = False self.start_ctrl.SetDateRange(wx.pydate2wxdate(timeline.start), wx.pydate2wxdate(timeline.end)) self.start_ctrl.SetDate(wx.pydate2wxdate(timeline.filter_start)) self.end_ctrl.SetDateRange(wx.pydate2wxdate(timeline.start), wx.pydate2wxdate(timeline.end)) self.end_ctrl.SetDate(wx.pydate2wxdate(timeline.filter_end)) self.interval_panel.interval = timeline.filter_interval self.Refresh()
def __init__(self, *args, **kwds): date = kwds.pop('date', None) kwds['style'] = wx.DEFAULT_DIALOG_STYLE super().__init__(*args, **kwds) if date is not None: wx_date = wx.DateTime() if isinstance(date, str): wx_date.ParseDate(date) elif isinstance(date, datetime.date): wx_date = wx.pydate2wxdate(date) else: wx_date = date else: wx_date = wx.DefaultDateTime self.date = wx.adv.GenericCalendarCtrl(self, wx.ID_ANY, date=wx_date) self.__set_properties() self.__do_layout() self.Bind(wx.adv.EVT_CALENDAR, self.on_date_picked, self.date) self.Bind(wx.EVT_CLOSE, self.on_date_picked, self)
def test_datetimeConvertHelpers(self): d1 = wx.DateTime(1, wx.DateTime.Mar, 2012, 8, 15, 45) pd = wx.wxdate2pydate(d1) d2 = wx.pydate2wxdate(pd) self.assertTrue(isinstance(pd, datetime.datetime)) self.assertEqual(d1, d2)
def __init__(self, parent): super().__init__(parent, wx.ID_ANY, "Timeline Filter", style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.FRAME_FLOAT_ON_PARENT) timeline = Timeline.app() self._filter_has_changed = False main_panel = wx.Panel(self, wx.ID_ANY) self.start_ctrl = wx.adv.CalendarCtrl(main_panel, wx.ID_ANY, date=wx.pydate2wxdate( timeline.start)) self.start_ctrl.SetDateRange(wx.pydate2wxdate(timeline.start), wx.pydate2wxdate(timeline.end)) self.end_ctrl = wx.adv.CalendarCtrl(main_panel, wx.ID_ANY, date=wx.pydate2wxdate( timeline.end)) self.end_ctrl.SetDateRange(wx.pydate2wxdate(timeline.start), wx.pydate2wxdate(timeline.end)) self.apply_button = wx.Button(main_panel, wx.ID_ANY, "Apply") self.apply_button.SetDefault() self.reset_button = wx.Button(main_panel, wx.ID_ANY, "Reset") main_sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(main_sizer) panel_sizer = wx.BoxSizer(wx.VERTICAL) main_panel.SetSizer(panel_sizer) start_sizer = wx.BoxSizer(wx.VERTICAL) start_label = wx.StaticText(main_panel, wx.ID_ANY, "Start Date") start_sizer.Add(start_label, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.BOTTOM, 10) start_sizer.Add(self.start_ctrl) end_sizer = wx.BoxSizer(wx.VERTICAL) end_label = wx.StaticText(main_panel, wx.ID_ANY, "End Date") end_sizer.Add(end_label, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.BOTTOM, 10) end_sizer.Add(self.end_ctrl) calendar_sizer = wx.BoxSizer(wx.HORIZONTAL) calendar_sizer.Add(start_sizer, 0, wx.EXPAND | wx.RIGHT, 10) calendar_sizer.Add(end_sizer, 0, wx.EXPAND | wx.LEFT, 10) panel_sizer.Add(calendar_sizer, 0, wx.EXPAND | wx.ALL, 10) self.interval_panel = TimeIntervalPanel(main_panel, wx.ID_ANY) panel_sizer.Add(self.interval_panel, 0, wx.ALIGN_CENTER_HORIZONTAL) button_sizer = wx.BoxSizer(wx.HORIZONTAL) button_sizer.Add(self.apply_button) button_sizer.Add(self.reset_button) panel_sizer.Add(button_sizer, 0, wx.ALIGN_RIGHT | wx.RIGHT | wx.BOTTOM, 10) main_sizer.Add(main_panel, 1, wx.EXPAND) self.CenterOnParent() self.Fit() self.Bind(wx.EVT_SHOW, self.OnShow) self.Bind(wx.EVT_CLOSE, self.OnClose) self.start_ctrl.Bind(wx.adv.EVT_CALENDAR_SEL_CHANGED, self.OnCalendar) self.end_ctrl.Bind(wx.adv.EVT_CALENDAR_SEL_CHANGED, self.OnCalendar) self.apply_button.Bind(wx.EVT_BUTTON, self.OnApply) self.reset_button.Bind(wx.EVT_BUTTON, self.OnReset) self.Refresh()
def parse_date(date_str): dt = datetime.datetime.strptime(date_str, "%Y-%m-%d") return wx.pydate2wxdate(dt)