def wxdate2date(self, datetime_dic, end_date_list=[], start_date_list=[]): """ """ for key in datetime_dic: if type(datetime_dic[key]) == type(wx.DateTime_Today()): datetime_dic[key] = datetime.datetime( datetime_dic[key].Year, datetime_dic[key].Month + 1, datetime_dic[key].Day, datetime_dic[key].Hour, datetime_dic[key].Minute, datetime_dic[key].Second) # 增加小时,分钟,秒 for s in end_date_list: datetime_dic[s] = datetime_dic[s] + datetime.timedelta(hours=23, minutes=59) # 检测时间输入 if len(end_date_list) == len(start_date_list): check_list = [ datetime_dic[end_date_list[i]] > datetime_dic[start_date_list[i]] for i in xrange(len(end_date_list)) ] if False in check_list: print u""" datetime_dic: %s 输入时间有误! """ % datetime_dic sys.exit() return datetime_dic
def EvtReset(self, event): # reset variables self.txt_lmp.SetValue("") self.txtgest.SetValue("") self.txtedc.SetValue("") self.txtdue.SetValue("") self.txtdate.SetValue("") self.ustxt=wx.DateTime_Today() self.txtweeks.SetValue(0) # FIXME - MAKE IT RESET TO BLANK? self.txtdays.SetValue(0) self.txtnewedc.SetValue("") self.xfer_cal_date_to=LMP_FIELD self.lmp_cal.SetDate(wx.DateTime_Today()) # reset Calendar to current date
def OnCalcByLMP(self, event): if (self.xfer_cal_date_to == LMP_FIELD): # we do this the "UNIX Way" -- all dates are converted into seconds # since midnight 1 Jan, 1970. # .GetDate().GetTicks() returns time at 5AM. The -18000 second # correction adjusts LMP to 12AM ??? NOT NEEDED # is it possible there is a BUG in the wxPython # Day Light Savings/Standard Time Calc? #LMP = self.lmp_cal.GetDate ().GetTicks () - 18000 # Standard Time Fix (?) self.lmp = self.lmp_cal.GetDate().GetTicks( ) # Correct for Day Light Saving Time today = wx.DateTime_Today().GetTicks() due = self.lmp + GESTATION gest = today - self.lmp self.ultrasound18_52 = self.lmp + US18_52 # ----------------- # FIXME: use gmDateInput in gmDateTimeInput.py lmp_txt = wx.DateTime() # FIXME? - change format of date (?) lmp_txt.SetTimeT(self.lmp) self.txt_lmp.SetValue(self.PurgeTime(lmp_txt)) # ----------------- gest_week = gest / WEEK gest_day = (gest % WEEK) / DAY if (gest_day == 1): days_label = _('day') else: days_label = _('days') if (gest_week == 1): weeks_label = _('week') else: weeks_label = _('weeks') # txtgest_str = "%s %s, %s %s" % (gest_week, weeks_label, gest_day, days_label) txtgest_str = str(gest_week) + " " + weeks_label + ", " + str( gest_day) + " " + days_label self.txtgest.SetValue(txtgest_str) # ----------------- edctxt = wx.DateTime() edctxt.SetTimeT(due) self.txtedc.SetValue(self.PurgeTime(edctxt)) # ----------------- self.ustxt = wx.DateTime() self.ustxt.SetTimeT(self.ultrasound18_52) self.txtdue.SetValue(self.PurgeTime(self.ustxt)) else: # set Ultrasound Date self.usdate = self.lmp_cal.GetDate().GetTicks() usdatetxt = wx.DateTime() # FIXME? - change format of date usdatetxt.SetTimeT(self.usdate) self.txtdate.SetValue(self.PurgeTime(usdatetxt)) # recalculate 'Rev EDC' if Ultrasound Scan Date is changed if (self.txtnewedc.GetValue() != ""): self.EvtText_calcnewedc(self)
def _createControls(self, callback): options = dict(style=wx.DP_DROPDOWN, dt=wx.DateTime_Today()) if self._noneAllowed: options['style'] |= wx.DP_ALLOWNONE if '__WXMSW__' in wx.PlatformInfo: options['size'] = (100, -1) elif '__WXGTK__' in wx.PlatformInfo: options['size'] = (110, -1) return [DatePickerCtrl(self, **options)] # pylint: disable-msg=W0142
def __init__(self, parent): wx.ScrolledWindow.__init__(self, parent,-1) # self.SetScrollbars(20, 20, 39, 40) self.SetBackgroundColour(wx.NamedColour('LIGHT BLUE')) dt=wx.DateTime_Today() self.year=dt.GetYear() self.day_of_year=[] self.month=[] Val.Cal=self self.Init_Year()
def AlarmUp(self, now, ClockInterval): if (not self.Enable) or (self.Alarmed == True): return False if self.InRing == True: print "On Ringing: " + self.Name return False timeNow = now.Subtract(wx.DateTime_Today()) if timeNow.IsLongerThan(self.AlarmTime): clkSpan = wx.TimeSpan(0, 0, ClockInterval, 500) timeSpan = timeNow.Subtract(self.AlarmTime) if timeSpan.IsShorterThan(clkSpan): self.Alarmed = True print "Alarm Up :" + self.Name return True else: return False else: #self.Alarmed = True; return False
def FormatContent(self): # I parse the value in the text part to resemble the correct date in # the calendar control txtValue = self.GetValue() dmy = txtValue.split('/') didSet = False if len(dmy) == 3: date = self.cal.GetDate() d = int(dmy[0]) m = int(dmy[1]) - 1 y = int(dmy[2]) if d > 0 and d < 31: if m >= 0 and m < 12: if y > 1000: self.cal.SetDate(wx.DateTimeFromDMY(d, m, y)) didSet = True if not didSet: self.cal.SetDate(wx.DateTime_Today())
def wxdate2date(datetime_dic, end_date_list=[], start_date_list=[]): """ 把数据从wxdate转化为datetime数据 """ # 确认传入数据的数据类型 for key in datetime_dic: if isinstance(datetime_dic[key], type(wx.DateTime_Today())): datetime_dic[key] = datetime.datetime(datetime_dic[key].Year, datetime_dic[key].Month + 1, datetime_dic[key].Day, datetime_dic[key].Hour, datetime_dic[key].Minute, datetime_dic[key].Second) # 增加小时,分钟,秒 for s in end_date_list: datetime_dic[s] = datetime_dic[s] + datetime.timedelta(hours=23, minutes=59) # 检测时间输入 if len(end_date_list) == len(start_date_list): check_list = [ datetime_dic[end_date_list[i]] > datetime_dic[start_date_list[i]] for i in range(len(end_date_list)) ] if False in check_list: print(""" datetime_dic: %s 输入时间有误! """ % datetime_dic) sys.exit() return datetime_dic
def __init__(self, parent): myStyle = wx.MINIMIZE_BOX | wx.CAPTION | wx.ALIGN_CENTER | \ wx.ALIGN_CENTER_VERTICAL | wx.TAB_TRAVERSAL | wx.STAY_ON_TOP wx.Frame.__init__(self, parent, -1, _("Pregnancy Calculator"), style=myStyle) # initialization of variables used in the control & calculation self.xfer_cal_date_to = LMP_FIELD # controls which variable (LMP or Ultrasound) a calendar event changes # (if == 0): {calendar selection modifies LMP} # (if == 1): {calendar selection modifies Ultrasound Date} self.ustxt = wx.DateTime_Today( ) # avoids problem - one would have if the user clicked on # ultrasound date # BONUS: makes the preg. calculator useful for EDC calcs given # a date and the gestation time # get icon if __name__ == '__main__': png_fname = os.path.join('..', 'bitmaps', 'preg_calculator.png') else: from Gnumed.pycommon import gmGuiBroker gb = gmGuiBroker.GuiBroker() png_fname = os.path.join(gb['gnumed_dir'], 'bitmaps', 'preg_calculator.png') icon = wx.Icon() icon.LoadFile(png_fname, wx.BITMAP_TYPE_PNG) self.SetIcon(icon) szr_rc = wx.lib.rcsizer.RowColSizer() #------------------------------ # sizer holding the 'LMP' stuff #------------------------------ label = wx.StaticText(self, -1, _("LMP"), size=(50, 20)) #label Lmp label.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label.SetForegroundColour(wx.Colour(0, 0, 0)) self.txt_lmp = wx.TextCtrl(self, -1, "", size=(100, 20)) # text for lmp self.txt_lmp.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.txt_lmp.SetToolTip( wx.ToolTip( _("Click on calendar to enter the last menstrual period date")) ) #tiplmp=self.txt_lmp.GetToolTip() szr_row1 = wx.BoxSizer(wx.HORIZONTAL) szr_row1.Add(self.txt_lmp, 1, wx.EXPAND | wx.ALL, 2) wx.EVT_SET_FOCUS(self.txt_lmp, self.OnSetFocus_lmp) szr_lmp = wx.BoxSizer(wx.HORIZONTAL) szr_lmp.Add(label, 1, 0, 0) szr_lmp.Add((10, 1), 0, 0) szr_rc.Add(szr_lmp, flag=wx.EXPAND, row=0, col=1) szr_rc.Add(szr_row1, flag=wx.EXPAND, row=0, col=2, colspan=5) #------------------------------ # sizer holding the 'Gest.' stuff #------------------------------ label = wx.StaticText(self, -1, _("Gest."), size=(50, 20)) label.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtgest = wx.TextCtrl(self, -1, "", size=(100, 20)) self.txtgest.Enable(False) self.txtgest.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.txtgest_szr = wx.BoxSizer(wx.HORIZONTAL) self.txtgest_szr.Add(self.txtgest, 1, wx.EXPAND | wx.ALL, 2) szr_gest = wx.BoxSizer(wx.HORIZONTAL) szr_gest.Add(label, 1, 0, 0) szr_gest.Add((10, 1), 0, 0) szr_rc.Add(szr_gest, flag=wx.EXPAND, row=1, col=1) szr_rc.Add(self.txtgest_szr, flag=wx.EXPAND, row=1, col=2, colspan=5) #------------------------------ # sizer holding the 'EDC' stuff #------------------------------ label = wx.StaticText(self, -1, _("EDC"), size=(50, 20)) label.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtedc = wx.TextCtrl(self, -1, "", size=(100, 20)) self.txtedc.Enable(False) self.txtedc.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) szr_txtedc = wx.BoxSizer(wx.HORIZONTAL) szr_txtedc.Add(self.txtedc, 1, wx.EXPAND | wx.ALL, 2) szr_edc = wx.BoxSizer(wx.HORIZONTAL) szr_edc.Add(label, 1, 0, 0) szr_edc.Add((10, 1), 0, 0) szr_rc.Add(szr_edc, flag=wx.EXPAND, row=2, col=1) szr_rc.Add(szr_txtedc, flag=wx.EXPAND, row=2, col=2, colspan=5) #------------------------------ # "Ultrasound Scan" label #------------------------------ us_label = wx.StaticText(self, -1, _("18 Week Ultrasound Scan"), size=(200, 20)) us_label.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD, False, '')) us_label.SetForegroundColour(wx.Colour(50, 50, 204)) szr_backgrnd_18WkScanDue = wx.BoxSizer(wx.VERTICAL) szr_backgrnd_18WkScanDue.Add((1, 3), 0) szr_backgrnd_18WkScanDue.Add(us_label, 1, wx.EXPAND, 1) szr_rc.Add(szr_backgrnd_18WkScanDue, flag=wx.ALIGN_CENTRE_HORIZONTAL, row=3, col=2, colspan=5) #------------------------------ # sizer holding the 'Due' stuff #------------------------------ label = wx.StaticText(self, -1, _("Due"), size=(100, 20)) label.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtdue = wx.TextCtrl(self, -1, "", size=(100, 20)) self.txtdue.Enable(False) self.txtdue.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.szr_txtdue = wx.BoxSizer(wx.HORIZONTAL) self.szr_txtdue.Add(self.txtdue, 1, wx.EXPAND | wx.ALL, 2) szr_due = wx.BoxSizer(wx.HORIZONTAL) szr_due.Add(label, 1, 0, 0) szr_due.Add((10, 1), 0, 0) szr_rc.Add(szr_due, flag=wx.EXPAND, row=4, col=1) szr_rc.Add(self.szr_txtdue, flag=wx.EXPAND, row=4, col=2, colspan=5) #------------------------------ # "Ultrasound Scan - Revised EDC" label #------------------------------ rev_edc_label = wx.StaticText(self, -1, _("Ultrasound Scan - Revised EDC"), size=(300, 20)) rev_edc_label.SetFont( wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD, False, '')) rev_edc_label.SetForegroundColour(wx.Colour(50, 50, 204)) szr_backgrnd_RevEDCLabel = wx.BoxSizer(wx.VERTICAL) szr_backgrnd_RevEDCLabel.Add((1, 3), 0) szr_backgrnd_RevEDCLabel.Add(rev_edc_label, 1, wx.EXPAND, 1) szr_rc.Add(szr_backgrnd_RevEDCLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL, row=5, col=2, colspan=5) #------------------------------ # sizer holding the 'newedc' stuff #------------------------------ label1 = wx.StaticText(self, -1, _("Scan Date"), size=(25, 20)) label1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label1.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtdate = wx.TextCtrl(self, -1, "", size=(25, 20)) self.txtdate.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.txtdate.SetToolTip( wx.ToolTip( _("Click on this field and then the ultrasound scan date on the calendar" ))) #tipdue=self.txtdate.GetToolTip() #wx.ToolTip_Enable(1) self.szr_txtdate = wx.BoxSizer(wx.HORIZONTAL) self.szr_txtdate.Add(self.txtdate, 1, wx.EXPAND | wx.ALL, 2) wx.EVT_SET_FOCUS(self.txtdate, self.OnSetFocus_USDate) szr_label1 = wx.BoxSizer(wx.HORIZONTAL) szr_label1.Add(label1, 1, 0, 0) szr_label1.Add((10, 1), 0, 0) szr_rc.Add(szr_label1, flag=wx.EXPAND, row=6, col=1) szr_rc.Add(self.szr_txtdate, flag=wx.EXPAND, row=6, col=2, colspan=5) #------------------------------ label2 = wx.StaticText(self, -1, _("Weeks"), size=(25, 20)) label2.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label2.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtweeks = wx.SpinCtrl(self, -1, value="0", min=0, max=42) wx.EVT_SPINCTRL(self.txtweeks, self.txtweeks.GetId(), self.EvtText_calcnewedc) self.txtweeks.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.szr_txtweeks = wx.BoxSizer(wx.HORIZONTAL) self.szr_txtweeks.Add(self.txtweeks, 1, wx.EXPAND | wx.ALL, 2) label3 = wx.StaticText(self, -1, _("Days"), size=(25, 20)) label3.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label3.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtdays = wx.SpinCtrl(self, -1, value="0", min=0, max=6) wx.EVT_SPINCTRL(self.txtdays, self.txtdays.GetId(), self.EvtText_calcnewedc) self.txtdays.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.szr_txtdays = wx.BoxSizer(wx.HORIZONTAL) self.szr_txtdays.Add(self.txtdays, 1, wx.EXPAND | wx.ALL, 2) szr_label2 = wx.BoxSizer(wx.HORIZONTAL) szr_label2.Add(label2, 1, wx.ALIGN_CENTRE_VERTICAL, 0) szr_label2.Add((10, 1), 0, 0) szr_label3 = wx.BoxSizer(wx.HORIZONTAL) szr_label3.Add((10, 1), 0, 0) szr_label3.Add(label3, 1, wx.ALIGN_CENTRE_VERTICAL, 0) szr_label3.Add((10, 1), 0, 0) szr_rc.Add(szr_label2, flag=wx.EXPAND, row=7, col=1) szr_rc.Add(self.szr_txtweeks, flag=wx.EXPAND, row=7, col=2, colspan=2) szr_rc.Add(szr_label3, flag=wx.EXPAND, row=7, col=4) szr_rc.Add(self.szr_txtdays, flag=wx.EXPAND, row=7, col=5, colspan=2) #------------------------------ # sizer holding the new (or revised) 'EDC' stuff #------------------------------ label = wx.StaticText(self, -1, _("Rev EDC"), size=(100, 20)) label.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) label.SetForegroundColour(wx.Colour(0, 0, 0)) self.txtnewedc = wx.TextCtrl(self, -1, "", size=(100, 20)) self.txtnewedc.Enable(False) self.txtnewedc.SetFont( wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, '')) self.szr_txtnewedc = wx.BoxSizer(wx.HORIZONTAL) self.szr_txtnewedc.Add(self.txtnewedc, 1, wx.EXPAND | wx.ALL, 2) szr_label = wx.BoxSizer(wx.HORIZONTAL) szr_label.Add(label, 1, 0, 0) szr_label.Add((10, 1), 0, 0) szr_rc.Add(szr_label, flag=wx.EXPAND, row=8, col=1) szr_rc.Add(self.szr_txtnewedc, flag=wx.EXPAND, row=8, col=2, colspan=5) self.btnPrint = wx.Button(self, 1011, _('&Print')) self.btnSave = wx.Button(self, 1011, _('&Save')) szr_buttons = wx.BoxSizer(wx.HORIZONTAL) szr_buttons.Add(self.btnPrint, 0, wx.EXPAND) szr_buttons.Add(self.btnSave, 0, wx.EXPAND) szr_rc.Add(szr_buttons, flag=wx.EXPAND, row=9, col=3, colspan=4) #------------------------------ # Sizer holding stuff on the right #------------------------------ szr_main_rt = wx.BoxSizer(wx.VERTICAL) szr_main_rt.Add(szr_rc) wx.EVT_BUTTON(self, 1010, self.EvtReset) wx.EVT_BUTTON(self, 1011, self.EvtPrint) wx.EVT_BUTTON(self, 1012, self.EvtSave) #------------------------------ # Add calendar (stuff on the left) #------------------------------ self.lmp_cal = wx.calendar.CalendarCtrl(self, ID_LMP, style=wx.RAISED_BORDER) wx.calendar.EVT_CALENDAR_SEL_CHANGED(self.lmp_cal, ID_LMP, self.OnCalcByLMP) szr_main_lf = wx.BoxSizer(wx.VERTICAL) szr_main_lf.Add(self.lmp_cal, 0, wx.ALIGN_CENTRE_HORIZONTAL) btn_reset = wx.Button(self, 1010, _('&Reset')) #szr_main_lf.Add(5,0,5) szr_main_lf.Add(btn_reset, 0, wx.EXPAND) #-------------------------------------- # Super-sizer holds all the stuff above #-------------------------------------- szr_main_top = wx.BoxSizer(wx.HORIZONTAL) szr_main_top.Add(szr_main_lf, 0, 0) szr_main_top.Add((15, 0), 0, 0) szr_main_top.Add(szr_main_rt, 0, 0) #szr_main_top.Add(15,1,0,0) #------------------------------ # Put everything together in one big sizer #------------------------------ szr_main = wx.BoxSizer(wx.HORIZONTAL) szr_main.Add(szr_main_top, 1, wx.EXPAND | wx.ALL, 10) self.SetSizer(szr_main) self.SetAutoLayout(1) szr_main.Fit(self) wx.EVT_CLOSE(self, self.OnClose)
def SetAlarmTime(self, aTime=wx.DateTime_Now(), aOnce=False): self.AlarmTime = aTime.Subtract(wx.DateTime_Today()) self.Enable = True self.Alarmed = False self.AlarmOnce = aOnce
def OnCurrent(self, event): self.cal.Set_Year(wx.DateTime_Today().GetYear())
def Settings(self, event): dlg = Settings_Dlg(self) if dlg.ShowModal() == wx.ID_OK: self.cal.Set_Year(wx.DateTime_Today().GetYear()) dlg.Destroy()
def Draw_Mark(self): f_norm=self.month[1].GetFont() f_norm.SetUnderlined(False) f_ul=self.month[1].GetFont() f_ul.SetUnderlined(True) dt=wx.DateTime_Today() if self.year==dt.GetYear(): add_mark(dt, MARK_TODAY, self.year) calc_fert(self.year) calc_tablet(self.year) k=1 for m in range(12): sel_hide=True# need hide selection for d in range(1,wx.DateTime_GetNumberOfDaysInMonth(m, self.year)+1): can_hide=True lab=cycle.mark.get(k,0) at=wx.calendar.CalendarDateAttr(wx.BLACK) at.SetBackgroundColour(wx.WHITE) at.SetFont(f_norm) dt=wx.DateTimeFromDMY(d, m, self.year) if not dt.IsWorkDay(): # mark weekend at.SetTextColour(wx.NamedColour('firebrick')) if lab & MARK_BEGIN: at.SetBackgroundColour(cycle.colour_set['begin']) at.SetTextColour(wx.WHITE) if lab & MARK_PROG: at.SetBackgroundColour(cycle.colour_set['prog begin']) at.SetTextColour(wx.BLACK) if lab & MARK_SAFESEX and (cycle.disp==0 or cycle.disp==2): at.SetBackgroundColour(cycle.colour_set['safe sex']) if lab & MARK_FERT and (cycle.disp==1 or cycle.disp==2): at.SetBackgroundColour(cycle.colour_set['fertile']) if lab & MARK_OVUL and (cycle.disp==1 or cycle.disp==2): at.SetBackgroundColour(cycle.colour_set['ovule']) if lab & MARK_TODAY : at.SetBorderColour(wx.NamedColour('NAVY')) at.SetBorder(wx.calendar.CAL_BORDER_SQUARE) can_hide=False if lab & MARK_LAST : at.SetBackgroundColour(cycle.colour_set['conception']) if lab & MARK_NOTE: at.SetFont(f_ul) can_hide=False if lab & MARK_BIRTH : at.SetBackgroundColour(cycle.colour_set['ovule']) if lab & MARK_TABLET : at.SetBackgroundColour(cycle.colour_set['1-st tablet']) if lab & MARK_T22_28 : at.SetBackgroundColour(cycle.colour_set['pause']) if lab & MARK_NEXT_TABLET : at.SetBackgroundColour(cycle.colour_set['next 1-st tablet']) if sel_hide and can_hide: #we can hide selection when don't use border and underlined sel_hide=False self.month[m].SetDate(dt) self.month[m].SetHighlightColours(at.GetTextColour(), at.GetBackgroundColour()) self.month[m].SetAttr(d,at) k+=1 # so visual refresh is more fast for m in range(12): self.month[m].Refresh()