# -*- coding: utf-8 -*-
import calendar
import datetime
import scribus

# Default style names - change to match your style sheet
# Style names - change to match your style sheet
paragraph1style = 'TagName'
paragraph2style = 'TagZahl'
paragraph3style = 'SoFeName'
paragraph4style = 'SoFeZahl'
paragraph5style = 'KalenderWoche'
paragraph6style = 'MonatZahl'
bodyTextStyle   = 'Default Paragraph Style'
paragraphLastStyle = 'Default Paragraph Style'
defaultParagraphStyle = 'TagName'
subHeaderStyle = 'Subhead'

# Musterseite mit dem Layout
musterseite = "KalenderDS02"

# vor ALIGN_CENTERED muss scribus. stehen, weil ALIGN_CENTERED eine Konstante des Moduls „scribus“ ist:

day_names = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
month_names = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']

month_num = 0
week_counter = 0
# Startpositionen definieren
x_start_pos = 67                #Startposition Tage 
x_start_pos_monat = 67          #Startposition Monate

y_start_pos = 257                 #Startposition Tage
y_start_pos_monat = 230           #Startposition Monate


x_pos = x_start_pos              
xm_pos = x_start_pos_monat      
y_pos = y_start_pos
ym_pos = y_start_pos_monat

x_off=11
y_off=8

xm_off=11
ym_off=10	

xlen = 11
ylen = 7

xlenm = 30  
ylenm = 15

year=2017

months = calendar.Calendar(calendar.SUNDAY).yeardays2calendar(year, 1)

while month_num <= 11:
    for weeks in months[month_num]:             #Monate erstellen
        scribus.newPage(-1, musterseite)
        scribus.gotoPage(scribus.pageCount())
        frame_name = scribus.createText(xm_pos, ym_pos, xlenm, ylenm)
        scribus.setText(month_names[month_num], frame_name)
        scribus.setTextColor('Red', frame_name)
        scribus.setStyle(paragraph6style, frame_name)	
#        y_pos = y_pos+9        mal raus kommst auf neue Seite
#	y_pos = y_pos+ym_off
        for week in weeks:
            week_counter = week_counter + 1
            for day in week:
                if day[0] != 0:
                    frame_name1 = scribus.createText(x_pos, y_pos, xlen, ylen)          #Frame1 Tag
                    scribus.setText(day_names[day[1]], frame_name1)
                    frame_name2 = scribus.createText(x_pos, y_pos + y_off, xlen, ylen)  #Frame2 Zahl dazu
                    scribus.setText(str(day[0]), frame_name2)
                    if 0 <= day[1] <= 5:
                        scribus.setStyle(paragraph1style, frame_name1)
                        scribus.setStyle(paragraph2style, frame_name2)
                    elif day[1] == 6:
                        scribus.setStyle(paragraph3style, frame_name1)
                        scribus.setStyle(paragraph4style, frame_name2)
                    scribus.setTextAlignment(scribus.ALIGN_CENTERED, frame_name1)
                    scribus.setTextAlignment(scribus.ALIGN_CENTERED, frame_name2)                        
# Muss (hier) nach setStyle kommen, weil Stil (evtl. andere Farbe) das Blau durch seine eigene Farbe ersetzt:
#          scribus.setTextColor('Blue', frame_name1)
#		   scribus.setTextColor('Blue', frame_name2)
                    if day[1] == 0:
                        frame_name = scribus.createText(x_pos, y_pos+12, 10, 8)
                        scribus.setText(str(datetime.date(year, month_num+1, day[0]).isocalendar()[1]), frame_name)
                        scribus.setStyle(paragraph5style, frame_name)
                        scribus.setTextAlignment(scribus.ALIGN_CENTERED, frame_name)
#                        scribus.setTextColor('Green', frame_name)
#           scribus.setFontSize(8, frame_name)
                    x_pos = x_pos + x_off
    month_num = month_num + 1
    x_pos = x_start_pos
    y_pos = y_start_pos
#    y_pos = y_start_pos + (2*month_num*y_off+month_num*8)
#  y_pos = y_start_pos + (2*month_num*y_off+month_num*ym_off)
