def UpdateContents(self): new_activitites_count = len(creche.GetActivitesAvecHoraires()) if self.activities_count != new_activitites_count: self.activities_count = new_activitites_count self.SetMinSize((-1, 2+20*new_activitites_count)) self.GetParent().sizer.Layout() lines = self.GetParent().GetSummaryLines() self.activites, self.activites_sans_horaires = GetActivitiesSummary(creche, lines) self.UpdateDrawing()
def UpdateContents(self): lines = self.GetParent().GetSummaryLines() self.activites, self.activites_sans_horaires = GetActivitiesSummary(creche, lines) new_activitites_count = len(self.activites) if self.activities_count != new_activitites_count: self.activities_count = new_activitites_count self.SetMinSize((-1, 2 + 20 * new_activitites_count)) self.GetParent().sizer.Layout() self.ForceRefresh()
class PlanningSummaryPanel(BufferedWindow): def __init__(self, parent, options): self.parent = parent self.options = options self.activities_count = 0 self.activites = {} self.activites_sans_horaires = {} BufferedWindow.__init__(self, parent, size=(-1, 2+20*self.activities_count)) def UpdateContents(self): lines = self.GetParent().GetSummaryLines() self.activites, self.activites_sans_horaires = GetActivitiesSummary(creche, lines) new_activitites_count = len(self.activites) if self.activities_count != new_activitites_count: self.activities_count = new_activitites_count self.SetMinSize((-1, 2 + 20 * new_activitites_count)) self.GetParent().sizer.Layout() self.ForceRefresh() def Draw(self, dc): dc.BeginDrawing() dc.SetBackground(wx.ClientDC(self).GetBackground()) dc.Clear() if self.parent.lines: try: dc = wx.GCDC(dc) except: pass # summary pour les activités avec horaire for i, activity in enumerate(self.activites.keys()): dc.DrawText(self.activites[activity].label, 5, 6 + i * 20) self.DrawLine(dc, i, activity) # summary pour les activités sans horaire if self.options & ACTIVITES: dc.SetPen(wx.BLACK_PEN) dc.SetBrush(wx.GREY_BRUSH) for i, count in enumerate(self.activites_sans_horaires.values()): x = GetPlanningWidth() + LABEL_WIDTH + i*CHECKBOX_WIDTH + 10 if not (self.options & NO_ICONS): x += ICONS_WIDTH rect = wx.Rect(x, 2, 20, 19) dc.DrawRoundedRectangleRect(rect, 3) text = str(count) w, h = dc.GetTextExtent(text) dc.DrawText(text, x + (20-w)/2, 4 + (15-h)/2) # total horaire + pourcentage remplissage text = self.parent.GetSummaryDynamicText() if text: x = GetPlanningWidth() if not self.options & NO_LABELS: x += LABEL_WIDTH if not self.options & NO_ICONS: x += ICONS_WIDTH if self.options & ACTIVITES: x += len(self.activites_sans_horaires) * CHECKBOX_WIDTH if self.options & COMMENTS: x += COMMENT_BUTTON_WIDTH x += 7 dc.SetPen(wx.BLACK_PEN) dc.SetBrush(wx.WHITE_BRUSH) w, h = dc.GetTextExtent(text) dc.DrawRectangle(x, 4, w + 5, 15) dc.DrawText(text, x + 2, 4 + (15 - h) / 2) dc.EndDrawing() def DrawLine(self, dc, index, activity): line = self.activites[activity] pos = LABEL_WIDTH if not self.options & NO_ICONS: pos += ICONS_WIDTH debut = int(creche.affichage_min * (60 / BASE_GRANULARITY)) fin = int(creche.affichage_max * (60 / BASE_GRANULARITY)) x = debut v, w = 0, 0 a = 0 while x <= fin: if x == fin: nv, nw = 0, 0 else: nv, nw = line[x] if (self.options & TWO_PARTS) and activity == 0 and (nw == 0 or nv > creche.GetCapacite() or float(nv) / nw > 6.5): nw = activity | SUPPLEMENT else: nw = activity if nv != v or nw != w: if v != 0: rect = wx.Rect(pos+3+(a-debut)*config.column_width, 2 + index * 20, (x-a)*config.column_width-1, 19) if w == PRESENCE_SALARIE: w = 0 r, g, b, t, s = GetActivityColor(w) text = str(v) try: dc.SetPen(wx.Pen(wx.Colour(r, g, b, wx.ALPHA_OPAQUE))) dc.SetBrush(wx.Brush(wx.Colour(r, g, b, t), s)) except: dc.SetPen(wx.Pen(wx.Colour(r, g, b))) dc.SetBrush(wx.Brush(wx.Colour(r, g, b), s)) w, h = dc.GetTextExtent(text) dc.DrawRoundedRectangleRect(rect, 3) dc.DrawText(text, pos + 4 - 4*len(text) + (float(x+a)/2-debut)*config.column_width, 4 + (15-h)/2 + index * 20) a = x v, w = nv, nw x += 1