--- CalendarWizard.py.orig 2008-06-27 14:31:43.000000000 +0200 +++ CalendarWizard.py 2008-06-27 19:50:41.000000000 +0200 @@ -72,82 +72,155 @@ [['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'], - ['Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota', 'Neděle']], + ['Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota', 'Neděle'], None], 'Czech-short' : [['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'], - ['Po', 'Út', 'St', 'Čt', 'Pá', 'So', 'Ne']], + ['Po', 'Út', 'St', 'Čt', 'Pá', 'So', 'Ne'], None], 'Dutch' : [['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'], - ['Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag', 'Zondag']], + ['Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag', 'Zondag'], None], # Dutch by "Christoph Schäfer" 'English' : [['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday']], + ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday'], None], 'English-short' : [['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']], + ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], None], 'Finnish' : [['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'], - ['ma','ti','ke','to','pe','la', 'su']], + ['ma','ti','ke','to','pe','la', 'su'], None], 'French': [['Janvier', u'F\xe9vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', u'Ao\xfbt', 'Septembre', 'Octobre', 'Novembre', u'D\xe9cembre'], - ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche']], + ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'], None], 'German' : [['Januar', 'Februar', u'M\xe4rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], - ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag']], + ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'], None], 'Italian' : [['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], - [u'Luned\xec', u'Marted\xec', u'Mercoled\xec', u'Gioved\exc', u'Venerd\xec', 'Sabato', 'Domenica']], + [u'Luned\xec', u'Marted\xec', u'Mercoled\xec', u'Gioved\exc', u'Venerd\xec', 'Sabato', 'Domenica'], None], # Polish by "Łukasz [DeeJay1] Jernaś" 'Polish' : [['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'], - ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota', 'Niedziela']], + ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota', 'Niedziela'], None], 'Portuguese' : [['Janeiro', 'Fevereiro', u'Mar\xe7o', 'Abril', 'Pode', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], - ['Segunda-feira', u'Ter\xe7a-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', u'S\xe1bado', 'Domingo']], + ['Segunda-feira', u'Ter\xe7a-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', u'S\xe1bado', 'Domingo'], None], 'Russian' : [['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'], - ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота', 'Воскресенье']], + ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота', 'Воскресенье'], None], 'Slovak' : [['Január', 'Február', 'Marec', 'Apríl', 'Máj', 'Jún', 'Júl', 'August', 'September', 'Október', 'November', 'December'], - ['Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota', 'Nedeľa']], + ['Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota', 'Nedeľa'], None], 'Slovak-short' : [['Január', 'Február', 'Marec', 'Apríl', 'Máj', 'Jún', 'Júl', 'August', 'September', 'Október', 'November', 'December'], - ['Po','Ut','St','Št','Pi','So', 'Ne']], + ['Po','Ut','St','Št','Pi','So', 'Ne'], None], 'Spanish' : [['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], - ['Lunes', 'Martes', u'Mi\xe9rcoles', 'Jueves', 'Viernes', u'S\xe1bado', 'Domingo']], + ['Lunes', 'Martes', u'Mi\xe9rcoles', 'Jueves', 'Viernes', u'S\xe1bado', 'Domingo'], None], 'Swedish' : [['Januari', 'Februari','Mars', 'April','Maj', 'Juni','Juli', 'Augusti','September', 'Oktober', 'November', 'December'], - ['Måndag', 'Tisdag','Onsdag', 'Torsdag','Fredag', 'Lördag','Söndag']] + ['Måndag', 'Tisdag','Onsdag', 'Torsdag','Fredag', 'Lördag','Söndag'], + ['', 'Svea', 'Alfred Alfrida', 'Rut', 'Hanna Hannele', + 'Kasper Melker Baltsar', 'August Augusta', 'Erland', 'Gunnar Gunder', 'Sigurd Sigbritt', + 'Jan Jannike', 'Frideborg Fridolf', 'Knut', 'Felix Felicia', 'Laura Lorentz', + 'Hjalmar Helmer', 'Anton Tony', 'Hilda Hildur', 'Henrik', 'Fabian Sebastian', + 'Agnes Agneta', 'Vincent Viktor', 'Frej Freja', 'Erika', 'Paul Pål', + 'Bodil Boel', 'Göte Göta', 'Karl Karla', 'Diana', 'Gunilla Gunhild', + 'Ivar Joar', 'Max Maximilian', '', 'Disa Hjördis', 'Ansgar Anselm', + 'Agata Agda', 'Dorotea Doris', 'Rikard Dick', 'Berta Bert', 'Fanny Franciska', + 'Iris', 'Yngve Inge', 'Evelina Evy', 'Agne Ove', 'Valentin', + 'Sigfrid', 'Julia Julius', 'Alexandra Sandra', 'Frida Fritiof', 'Gabriella Ella', + 'Vivianne', 'Hilding', 'Pia', 'Torsten Torun', 'Mattias Mats', + 'Sigvard Sivert', 'Torgny Torkel', 'Lage', 'Maria', 'Albin Elvira', + 'Ernst Erna', 'Gunborg Gunvor', 'Adrian Adriana', 'Tora Tove', 'Ebba Ebbe', + 'Camilla', 'Siv', 'Torbjörn Torleif', 'Edla Ada', 'Edvin Egon', + 'Viktoria ', 'Greger', 'Matilda Maud', 'Kristoffer Christel', 'Herbert Gilbert', + 'Gertrud', 'Edvard Edmund', 'Josef Josefina', 'Joakim Kim', 'Bengt', + 'Kennet Kent', 'Gerda Gerd', 'Gabriel Rafael', '', 'Emanuel', + 'Rudolf Ralf', 'Malkolm Morgan', 'Jonas Jens', 'Holger Holmfrid', 'Ester', + 'Harald Hervor', 'Gudmund Ingemund', 'Ferdinand Nanna', 'Marianne Marlene', 'Irene Irja', + 'Vilhelm Helmi', 'Irma Irmelin', 'Nadja Tanja', 'Otto Ottilia', 'Ingvar Ingvor', + 'Ulf Ylva', 'Liv', 'Artur Douglas', 'Tiburtius', 'Olivia Oliver', + 'Patrik Patricia', 'Elias Elis', 'Valdemar Volmar', 'Olaus Ola', 'Amalia Amelie', + 'Anneli Annika', 'Allan Glenn', 'Georg Göran', 'Vega', 'Markus', + 'Teresia Terese', 'Engelbrekt', 'Ture Tyra', 'Tyko', 'Mariana', + 'Valborg', 'Filip Filippa', 'John Jane', 'Monika Mona', 'Gotthard Erhard', + 'Marit Rita', 'Carina Carita', 'Åke', 'Reidar Reidun', 'Esbjörn Styrbjörn', + 'Märta Märit', 'Charlotta Lotta', 'Linnea Linn', 'Halvard Halvar', 'Sofia Sonja', + 'Ronald Ronny', 'Rebecka Ruben', 'Erik', 'Maj Majken', 'Karolina Carola', + 'Konstantin Conny', 'Hemming Henning', 'Desideria Desirée', 'Ivan Vanja', 'Urban', + 'Vilhelmina Vilma', 'Beda Blenda', 'Ingeborg Borghild', 'Yvonne Jeanette', 'Vera Veronika', + 'Petronella Pernilla', 'Gun Gunnel', 'Rutger Roger', 'Ingemar Gudmar', 'Solbritt Solveig', + 'Bo', 'Gustav Gösta', 'Robert Robin', 'Eivor Majvor', 'Börje Birger', + 'Svante Boris', 'Bertil Berthold', 'Eskil', 'Aina Aino', 'Håkan Hakon', + 'Margit Margot', 'Axel Axelina', 'Torborg Torvald', 'Björn Bjarne', 'Germund Görel', + 'Linda', 'Alf Alvar', 'Paulina Paula', 'Adolf Alice', '', + 'David Salomon', 'Rakel Lea', 'Selma Fingal', 'Leo', 'Peter Petra', + 'Elof Leif', 'Aron Mirjam', 'Rosa Rosita', 'Aurora', 'Ulrika Ulla', + 'Laila Ritva', 'Esaias Jessika', 'Klas', 'Kjell', 'Jörgen Örjan', + 'André Andrea', 'Eleonora Ellinor', 'Herman Hermine', 'Joel Judit', 'Folke', + 'Ragnhild Ragnvald', 'Reinhold Reine', 'Bruno', 'Fredrik Fritz', 'Sara', + 'Margareta Greta', 'Johanna', 'Magdalena Madeleine ', 'Emma', 'Kristina Kerstin', + 'Jakob', 'Jesper', 'Marta', 'Botvid Seved', 'Olof', + 'Algot', 'Helena Elin', 'Per', 'Karin Kajsa', 'Tage', + 'Arne Arnold', 'Ulrik Alrik', 'Alfons Inez', 'Dennis Denise', 'Silvia Sylvia', + 'Roland', 'Lars', 'Susanna', 'Klara', 'Kaj', + 'Uno', 'Stella Estelle', 'Brynolf', 'Verner Valter', 'Ellen Lena', + 'Magnus Måns', 'Bernhard Bernt', 'Jon Jonna', 'Henrietta Henrika', 'Signe Signhild', + 'Bartolomeus', 'Lovisa Louise', 'Östen', 'Rolf Raoul', 'Gurli Leila', + 'Hans Hampus', 'Albert Albertina', 'Arvid Vidar', 'Samuel', 'Justus Justina', + 'Alfhild Alva', 'Gisela', 'Adela Heidi', 'Lilian Lilly', 'Regina Roy', + 'Alma Hulda', 'Anita Annette', 'Tord Turid', 'Dagny Helny', 'Åsa Åslög', + 'Sture', 'Ida', 'Sigrid Siri', 'Dag Daga', 'Hildegard Magnhild', + 'Orvar', 'Fredrika', 'Elise Lisa', 'Matteus', 'Maurits Moritz', + 'Tekla Tea', 'Gerhard Gert', 'Tryggve', 'Enar Einar', 'Dagmar Rigmor', + 'Lennart Leonard', 'Mikael Mikaela', 'Helge', 'Ragnar Ragna', 'Ludvig Love', + 'Evald Osvald', 'Frans Frank', 'Bror', 'Jenny Jennifer', 'Birgitta Britta', + 'Nils', 'Ingrid Inger', 'Harry Harriet', 'Erling Jarl', 'Valfrid Manfred', + 'Berit Birgit', 'Stellan', 'Hedvig Hillevi', 'Finn', 'Antonia Toini', + 'Lukas', 'Tore Tor', 'Sibylla', 'Ursula Yrsa', 'Marika Marita', + 'Severin Sören', 'Evert Eilert', 'Inga Ingalill', 'Amanda Rasmus', 'Sabina', + 'Simon Simone', 'Viola', 'Elsa Isabella', 'Edit Edgar', '', + 'Tobias', 'Hubert Hugo', 'Sverker', 'Eugen Eugenia', 'Gustav Adolf', + 'Ingegerd Ingela', 'Vendela', 'Teodor Teodora', 'Martin Martina', 'Mårten', + 'Konrad Kurt', 'Kristian Krister', 'Emil Emilia', 'Leopold', 'Vibeke Viveka', + 'Naemi Naima', 'Lillemor Moa', 'Elisabet Lisbet', 'Pontus Marina', 'Helga Olga', + 'Cecilia Sissela', 'Klemens', 'Gudrun Rune', 'Katarina Katja', 'Linus', + 'Astrid Asta', 'Malte', 'Sune', 'Andreas Anders', 'Oskar Ossian', + 'Beata Beatrice', 'Lydia', 'Barbara Barbro', 'Sven', 'Nikolaus Niklas', + 'Angela Angelika', 'Virginia', 'Anna', 'Malin Malena', 'Daniel Daniela', + 'Alexander Alexis', 'Lucia', 'Sten Sixten', 'Gottfrid', 'Assar', + 'Stig', 'Abraham', 'Isak', 'Israel Moses', 'Tomas', + 'Natanael Jonatan', 'Adam', 'Eva', '', 'Stefan Staffan', + 'Johannes Johan', 'Benjamin ', 'Natalia Natalie', 'Abel Set', 'Sylvester']] } @@ -156,16 +229,19 @@ class ScCalendar: """ Parent class for all calendar types """ - def __init__(self, year, months={}, dayOrder=[], firstDay=calendar.SUNDAY, drawSauce=True): + def __init__(self, year, months={}, dayOrder=[], firstDay=calendar.SUNDAY, drawSauce=True, drawNameDays=True, lang='English'): """ Setup base things """ # params self.drawSauce = drawSauce # draw supplementary image? + self.drawNameDays = drawNameDays # draw name days? self.year = year self.months = months self.dayOrder = dayOrder self.layerImg = 'Calendar image' self.layerCal = 'Calendar' self.pStyle = None # paragraph style + self.nameDaysStyle = None # name days paragraph style + self.lang = lang # settings self.firstPage = True # create only 2nd 3rd ... pages. No 1st one. calendar.setfirstweekday(firstDay) @@ -195,14 +271,23 @@ setText(aText, aFrame) setStyle(self.pStyle, aFrame) + def applyNameDaysToFrame(self, aText, aFrame): + """ Insert the name days text with style. """ + setText(aText, aFrame) + setStyle(self.nameDaysStyle, aFrame) + def createCalendar(self): - """ Walk throudh months dict and calls monthly sheet """ + """ Walk through months dict and calls monthly sheet """ if not newDocDialog(): return 'Create a new document first, please' self.pStyle = newStyleDialog() - if self.pStyle == None: + if self.pStyle == None: closeDoc() return 'Create a default paragraph style, please' + self.nameDaysStyle = newStyleDialog() + if self.nameDaysStyle == None: + closeDoc() + return 'Create a name days paragraph style, please' originalUnit = getUnit() setUnit(UNIT_POINTS) self.setupDocVariables() @@ -238,8 +323,8 @@ """ One day = one row calendar. I suggest LANDSCAPE orientation.\ One week per page.""" - def __init__(self, year, months = {}, dayOrder = [], firstDay = calendar.SUNDAY, drawSauce=True): - ScCalendar.__init__(self, year, months, dayOrder, firstDay, drawSauce) + def __init__(self, year, months = {}, dayOrder = [], firstDay = calendar.SUNDAY, drawSauce=True, drawNameDays=True, lang='English'): + ScCalendar.__init__(self, year, months, dayOrder, firstDay, drawSauce, drawNameDays, lang) def setupDocVariables(self): """ Compute base metrics here. Page layout is bordered by margins and @@ -280,8 +365,8 @@ """ Calendar matrix creator itself. I suggest PORTRAIT orientation. One month per page.""" - def __init__(self, year, months = {}, dayOrder = [], firstDay = calendar.SUNDAY, drawSauce=True): - ScCalendar.__init__(self, year, months, dayOrder, firstDay, drawSauce) + def __init__(self, year, months = {}, dayOrder = [], firstDay = calendar.SUNDAY, drawSauce=True, drawNameDays=True, lang='English'): + ScCalendar.__init__(self, year, months, dayOrder, firstDay, drawSauce, drawNameDays, lang) def setupDocVariables(self): """ Compute base metrics here. Page layout is bordered by margins and @@ -309,9 +394,19 @@ cel = createText(self.marginl + colCnt * self.colSize, self.calHeight + rowCnt * self.rowSize, self.colSize, self.rowSize) + + if self.drawNameDays: # name days? + namesText = createText(self.marginl + colCnt * self.colSize, + self.calHeight + rowCnt * self.rowSize, + self.colSize, self.rowSize) + colCnt += 1 if j != 0: self.applyTextToFrame(str(j), cel) + if self.drawNameDays: # name days? + date = datetime.date(int(self.year), int(month+1), int(j)) + day = (date - date.replace(day=1, month=1)).days + self.applyNameDaysToFrame(localization[self.lang][2][day], namesText) rowCnt += 1 def createHeader(self, monthName): @@ -390,6 +485,10 @@ self.imageLabel = Label(self, text='Draw Image Frame:') self.imageVar = IntVar() self.imageCheck = Checkbutton(self, variable=self.imageVar) + # name days + self.nameDaysLabel = Label(self, text='Include name days:') + self.nameDaysVar = IntVar() + self.nameDaysCheck = Checkbutton(self, variable=self.nameDaysVar) # closing/running self.okButton = Button(self, text="OK", width=6, command=self.okButonn_pressed) self.cancelButton = Button(self, text="Cancel", command=self.quit) @@ -427,6 +526,9 @@ self.imageLabel.grid(column=1, row=currRow, sticky=N+E) self.imageCheck.grid(column=2, row=currRow, sticky=N+W) self.langButton.grid(column=0, row=currRow) + currRow += 1 + self.nameDaysLabel.grid(column=1, row=currRow, sticky=N+E) + self.nameDaysCheck.grid(column=2, row=currRow, sticky=N+W) currRow += 3 self.rowconfigure(currRow, pad=6) self.okButton.grid(column=1, row=currRow, sticky=E) @@ -462,6 +564,14 @@ def okButonn_pressed(self): """ User variables testing and preparing """ + # add name days + if self.nameDaysVar.get() == 0: + nameDays = False + else: + if localization[self.key][2] == None: + self.statusVar.set('No support for name days for the selected language.') + return + nameDays = True # year try: year = self.yearVar.get().strip() @@ -492,9 +602,9 @@ draw = True # create calendar (finally) if self.typeVar.get() == 0: - cal = ScClassicCalendar(year, months, dayList, self.weekVar.get(), draw) + cal = ScClassicCalendar(year, months, dayList, self.weekVar.get(), draw, nameDays, self.key) else: - cal = ScEventCalendar(year, months, dayList, self.weekVar.get(), draw) + cal = ScEventCalendar(year, months, dayList, self.weekVar.get(), draw, nameDays, self.key) self.master.withdraw() err = cal.createCalendar() if err != None: