This commit is contained in:
2022-12-17 00:35:20 +01:00
parent ad5773abfc
commit 369b3655da
8 changed files with 333 additions and 75 deletions

View File

@@ -2,13 +2,16 @@
import scribus
import datetime
import calendar
import re
class Constants(object):
DefaultFont = ""
class ScribusCalendar(object):
def __init__(self, objects, year):
self.objects = objects
self.year = year
def createStyles(self):
existing_styles = scribus.getAllStyles()
for obj in self.objects:
@@ -39,14 +42,15 @@ class ScribusCalendar(object):
class CalendarObject(object):
def __init__(self, name):
self.name = name
self.noStub = False
self.position = (0,0)
self.size = (100,100)
self.paragraphStyle = "DefaultCalenderParagraphStyle"
self.charStyle = "DefaultCalenderCharStyle"
self.layer = "CalendarLayer"
self.defaultFontSize = 8
self.configParser = None
self.date = datetime.date.today()
@@ -63,23 +67,47 @@ class CalendarObject(object):
existingLayers.append(self.layer)
def createStyles(self, existingStyles):
if self.charStyle not in existingStyles:
scribus.createCharStyle(self.charStyle, "DejaVu Sans", 8)
existingStyles.append(self.charStyle)
if self.paragraphStyle not in existingStyles:
scribus.createParagraphStyle(self.paragraphStyle ,1,0,0,0,0,0,0,0,0,0,0,self.charStyle)
existingStyles.append(self.paragraphStyle)
charStyles = self.charStyle
paragraphStyles = self.paragraphStyle
defaultFontSizes = self.defaultFontSize
if not type(self.charStyle) is list:
charStyles = [ self.charStyle ]
if not type(self.paragraphStyle) is list:
paragraphStyles = [ self.paragraphStyle ]
if not type(self.defaultFontSize) is list:
defaultFontSizes = [ self.defaultFontSize ]
for i in range(0,len(charStyles)):
if charStyles[i] not in existingStyles:
scribus.createCharStyle(charStyles[i], Constants.DefaultFont, defaultFontSizes[i])
existingStyles.append(charStyles[i])
if paragraphStyles[i] not in existingStyles:
scribus.createParagraphStyle(paragraphStyles[i] ,1,0,0,0,0,0,0,0,0,0,0,charStyles[i])
existingStyles.append(paragraphStyles[i])
def plotStub(self):
if self.noStub == True:
return False
if not scribus.objectExists(self.name):
scribus.createText(self.position[0],self.position[1], self.size[0],self.size[1], self.name)
scribus.setStyle(self.paragraphStyle, self.name)
scribus.insertText(self.name, 0, self.name)
scribus.sentToLayer(self.layer, self.name)
return True
return False
def readFromStub(self):
if self.noStub == True:
return
p = scribus.getPosition(self.name)
s = scribus.getSize(self.name)
@@ -88,10 +116,10 @@ class CalendarObject(object):
def plotObject(self):
pass
def configure(self, configParser):
className = self.__class__.__name__
settings = dict()
self.configParser = configParser
try:
settings = configParser.modules[className]
@@ -108,6 +136,8 @@ class WeekDayNameObject(CalendarObject):
def __init__(self, name):
CalendarObject.__init__(self,name)
self.weekday = datetime.date.today().weekday()
self.paragraphStyle = "WeekDayNameParagraphStyle"
self.charStyle = "WeekDayNameCharStyle"
def getName(self):
return calendar.day_name[self.date.weekday()]
@@ -119,6 +149,8 @@ class WeekNameObject(CalendarObject):
def __init__(self, name):
CalendarObject.__init__(self,name)
self.weeknumber = 1
self.paragraphStyle = "WeekNameParagraphStyle"
self.charStyle = "WeekNameCharStyle"
def setDate(self, date):
CalendarObject.setDate(self, date)
@@ -131,6 +163,48 @@ class WeekNameObject(CalendarObject):
def getNameAbbrev(self):
return self.getName()
class MonthNameObject(CalendarObject):
def __init__(self, name):
CalendarObject.__init__(self, name)
self.paragraphStyle = "MonthNameParagraphStyle"
self.charStyle = "MonthNameCharStyle"
def getMonthName(self):
return calendar.month_name[self.date.month]
class UserDefinedObjects(CalendarObject):
def __init__(self):
CalendarObject.__init__(self, "UserDefinedObjects")
self.layer = "UserDefinedObjects"
self.noStub = True
def plotObject(self):
layers = scribus.getLayers()
currentPage = scribus.currentPage()
scribus.gotoPage(1)
objects = scribus.getAllObjects()
for obj in objects:
m = re.match(r'^(.+)__(.+)$', obj)
if m is None:
continue
layerName = m.group(1)
if not layerName in layers:
scribus.createLayer(layerName)
scribus.gotoPage(1)
scribus.copyObject(obj)
scribus.gotoPage(currentPage)
scribus.setActiveLayer(layerName)
scribus.pasteObject(obj)