options setup;alphabetized;fewer printouts

This commit is contained in:
sumpfork@mailmight.com 2010-10-12 15:25:23 -07:00
parent e9021d58a6
commit c90d24aaa1

View File

@ -1,4 +1,6 @@
import re,pprint import re,pprint
from optparse import OptionParser
from reportlab.pdfgen import canvas from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter from reportlab.lib.pagesizes import letter
from reportlab.lib.units import cm,inch from reportlab.lib.units import cm,inch
@ -46,7 +48,7 @@ def drawTab(card,x,y,useExtra=False):
c.resetTransforms() c.resetTransforms()
c.translate(horizontalMargin,verticalMargin) c.translate(horizontalMargin,verticalMargin)
if useExtra: if useExtra:
c.translate(5,0) c.translate(options.back_offset,0)
c.translate(x*tabWidth,y*tabTotalHeight) c.translate(x*tabWidth,y*tabTotalHeight)
#draw outline #draw outline
@ -83,7 +85,7 @@ def drawTab(card,x,y,useExtra=False):
width = pdfmetrics.stringWidth(name,'MinionPro-Regular',fontSize) width = pdfmetrics.stringWidth(name,'MinionPro-Regular',fontSize)
while width > 85 and fontSize > 8: while width > 85 and fontSize > 8:
fontSize -= 1 fontSize -= 1
print 'decreasing font size for tab of',name,'now',fontSize #print 'decreasing font size for tab of',name,'now',fontSize
width = pdfmetrics.stringWidth(name,'MinionPro-Regular',fontSize) width = pdfmetrics.stringWidth(name,'MinionPro-Regular',fontSize)
#c.drawString(tabLabelWidth/2+8,tabLabelHeight/2-7,name[0]) #c.drawString(tabLabelWidth/2+8,tabLabelHeight/2-7,name[0])
w = 0 w = 0
@ -120,7 +122,7 @@ def drawTab(card,x,y,useExtra=False):
while h > textHeight: while h > textHeight:
s.fontSize -= 1 s.fontSize -= 1
s.leading -= 1 s.leading -= 1
print 'decreasing fontsize on description for',card.name,'now',s.fontSize #print 'decreasing fontsize on description for',card.name,'now',s.fontSize
p = Paragraph(d,s) p = Paragraph(d,s)
w,h = p.wrap(textWidth,textHeight) w,h = p.wrap(textWidth,textHeight)
p.drawOn(c,cm/2.0,textHeight-height-h-0.5*cm) p.drawOn(c,cm/2.0,textHeight-height-h-0.5*cm)
@ -207,13 +209,13 @@ def split(l,n):
def drawCards(c,cards): def drawCards(c,cards):
cards = split(cards,6) cards = split(cards,6)
for pageCards in cards: for pageCards in cards:
#print 'pageCards:',pageCards print 'pageCards:',pageCards
for i,card in enumerate(pageCards): for i,card in enumerate(pageCards):
#print card #print card
x = i % numTabsHorizontal x = i % numTabsHorizontal
y = i / numTabsHorizontal y = i / numTabsHorizontal
c.saveState() c.saveState()
drawTab(card,x,y) drawTab(card,x,2-y)
c.restoreState() c.restoreState()
c.showPage() c.showPage()
for i,card in enumerate(pageCards): for i,card in enumerate(pageCards):
@ -221,14 +223,21 @@ def drawCards(c,cards):
x = (i+1) % numTabsHorizontal x = (i+1) % numTabsHorizontal
y = i / numTabsHorizontal y = i / numTabsHorizontal
c.saveState() c.saveState()
drawTab(card,x,y,useExtra=True) drawTab(card,x,2-y,useExtra=True)
c.restoreState() c.restoreState()
c.showPage() c.showPage()
if __name__=='__main__': if __name__=='__main__':
parser = OptionParser()
parser.add_option("--back_offset",type="int",dest="back_offset",default=5,
help="Points to offset the back page to the right; needed for some printers")
(options,args) = parser.parse_args()
pdfmetrics.registerFont(TTFont('MinionPro-Regular','MinionPro-Regular.ttf')) pdfmetrics.registerFont(TTFont('MinionPro-Regular','MinionPro-Regular.ttf'))
pdfmetrics.registerFont(TTFont('MinionPro-Bold','MinionPro-Bold.ttf')) pdfmetrics.registerFont(TTFont('MinionPro-Bold','MinionPro-Bold.ttf'))
cards = read_card_defs("dominion_cards.txt") cards = read_card_defs("dominion_cards.txt")
cards.sort(cmp=lambda x,y: cmp((x.cardset,x.name),(y.cardset,y.name)))
extras = read_card_extras("dominion_card_extras.txt",cards) extras = read_card_extras("dominion_card_extras.txt",cards)
print '%d cards read' % len(cards) print '%d cards read' % len(cards)
sets = {} sets = {}