Пример #1
0
 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()
Пример #2
0
 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()
Пример #3
0
    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)
Пример #4
0
 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)
Пример #5
0
    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()
Пример #6
0
 def parse_date(date_str):
     dt = datetime.datetime.strptime(date_str, "%Y-%m-%d")
     return wx.pydate2wxdate(dt)