From 48c6ee0defeaebe5bb6425829b90596f1865fdb3 Mon Sep 17 00:00:00 2001 From: Wendel Voigt Date: Mon, 11 Jul 2016 18:15:08 -0500 Subject: [PATCH] Add option for Center Tab These changes addresses issue #68 --- domdiv/__init__.py | 3 ++- domdiv/draw.py | 22 ++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/domdiv/__init__.py b/domdiv/__init__.py index 390d55c..dd0e818 100644 --- a/domdiv/__init__.py +++ b/domdiv/__init__.py @@ -13,7 +13,7 @@ from draw import DividerDrawer LOCATION_CHOICES = ["tab", "body-top", "hide"] NAME_ALIGN_CHOICES = ["left", "right", "centre", "edge"] TAB_SIDE_CHOICES = ["left", "right", "left-alternate", "right-alternate", - "full"] + "centre", "full"] TEXT_CHOICES = ["card", "rules", "blank"] @@ -101,6 +101,7 @@ def parse_opts(arglist): " left/right forces all tabs to left/right side;" " left-alternate will start on the left and then toggle between left and right for the tabs;" " right-alternate will start on the right and then toggle between right and left for the tabs;" # noqa + " centre will force all label tabs to the centre;" " full will force all label tabs to be full width of the divider" " default:right-alternate") parser.add_argument( diff --git a/domdiv/draw.py b/domdiv/draw.py index 1ce54ed..da61b5d 100644 --- a/domdiv/draw.py +++ b/domdiv/draw.py @@ -42,7 +42,10 @@ class DividerDrawer(object): self.fontNameBold = 'Times-Bold' self.fontNameOblique = 'Times-Oblique' - def getOutline(self, card, isExpansionDivider=False): + def wantCentreTab(self,card): + return (card.isExpansion() and self.options.centre_expansion_dividers) or self.options.tab_side == "centre" + + def getOutline(self, card): dividerWidth = self.options.dividerWidth dividerHeight = self.options.dividerHeight @@ -55,7 +58,7 @@ class DividerDrawer(object): theTabHeight = dividerHeight - dividerBaseHeight theTabWidth = self.options.labelWidth - if isExpansionDivider: + if self.wantCentreTab(card): side_2_tab = (dividerWidth - theTabWidth) / 2 else: side_2_tab = 0 @@ -231,8 +234,7 @@ class DividerDrawer(object): x, y, rightSide, - isBack=False, - isExpansionDivider=False): + isBack=False): # draw outline or cropmarks self.canvas.saveState() self.canvas.setLineWidth(self.options.linewidth) @@ -244,10 +246,7 @@ class DividerDrawer(object): if not self.options.cropmarks and not isBack: # don't draw outline on back, in case lines don't line up with # front - if isExpansionDivider and self.options.centre_expansion_dividers: - self.getOutline(card, isExpansionDivider=True) - else: - self.getOutline(card) + self.getOutline(card) elif self.options.cropmarks and not self.options.wrapper: cmw = 0.5 * cm @@ -414,7 +413,7 @@ class DividerDrawer(object): def drawTab(self, card, rightSide, wrapper="no"): # draw tab flap self.canvas.saveState() - if card.isExpansion() and self.options.centre_expansion_dividers: + if self.wantCentreTab(card): translate_x = self.options.dividerWidth / 2 - self.options.labelWidth / 2 translate_y = self.options.dividerHeight - self.options.labelHeight elif not rightSide: @@ -426,7 +425,7 @@ class DividerDrawer(object): if wrapper == "back": translate_y = self.options.labelHeight - if card.isExpansion() and self.options.centre_expansion_dividers: + if self.wantCentreTab(card): translate_x = self.options.dividerWidth / 2 + self.options.labelWidth / 2 elif not rightSide: translate_x = self.options.dividerWidth @@ -736,8 +735,7 @@ class DividerDrawer(object): # actual drawing if not self.options.tabs_only: - self.drawOutline(card, x, y, rightSide, isBack, - card.getType().getTypeNames() == ('Expansion', )) + self.drawOutline(card, x, y, rightSide, isBack) if self.options.wrapper: wrap = "front"