Example #1
0
 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()
Example #2
0
    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()
Example #3
0
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