Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
	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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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())
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 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
Ejemplo n.º 11
0
 def OnCurrent(self, event):
     self.cal.Set_Year(wx.DateTime_Today().GetYear())
Ejemplo n.º 12
0
 def Settings(self, event):
     dlg = Settings_Dlg(self)
     if dlg.ShowModal() == wx.ID_OK:
         self.cal.Set_Year(wx.DateTime_Today().GetYear())
     dlg.Destroy()
Ejemplo n.º 13
0
    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()