From 1bd731222e5ec741e3dc5bd64a0ec81067e799bf Mon Sep 17 00:00:00 2001 From: Wendel Voigt Date: Mon, 23 Mar 2020 00:11:29 -0500 Subject: [PATCH] Fixes for #284 #295 #296 #248 (#301) * fixes for #284 #295 #296 Also added option --full-expansion-dividers * Add front offsets for issue #248 Added options to offset front (similar to what existed for the backside). --- src/domdiv/draw.py | 27 ++++++++++++++++++++++++--- src/domdiv/main.py | 22 +++++++++++++++++++++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/domdiv/draw.py b/src/domdiv/draw.py index 281f548..69c8a09 100644 --- a/src/domdiv/draw.py +++ b/src/domdiv/draw.py @@ -642,7 +642,11 @@ class DividerDrawer(object): def wantCentreTab(self, card): return ( - card.isExpansion() and self.options.centre_expansion_dividers + card.isExpansion() + and ( + self.options.centre_expansion_dividers + or self.options.full_expansion_dividers + ) ) or self.options.tab_side == "centre" def drawOutline(self, item, isBack=False): @@ -672,7 +676,9 @@ class DividerDrawer(object): theTabWidth = item.tabWidth theTabHeight = item.tabHeight - left2tab = item.getTabOffset(backside=isBack) + left2tab = item.getTabOffset( + backside=False + ) # translate/scale above takes care of backside right2tab = dividerWidth - tabLabelWidth - left2tab nearZero = 0.01 left2tab = left2tab if left2tab > nearZero else 0 @@ -1551,6 +1557,10 @@ class DividerDrawer(object): self.options.back_offset, self.options.back_offset_height ) pageWidth -= 2 * self.options.back_offset + else: + self.canvas.translate( + self.options.front_offset, self.options.front_offset_height + ) item.translate(self.canvas, pageWidth, isBack) @@ -1908,7 +1918,11 @@ class DividerDrawer(object): if lastCardSet != card.cardset_tag: # In a new expansion, so reset the tabs to start over nextTabIndex = CardPlot.tabRestart() - if options.tab_number > Card.sets[card.cardset_tag]["count"]: + if ( + options.tab_number > Card.sets[card.cardset_tag]["count"] + and Card.sets[card.cardset_tag]["count"] > 0 + ): + # Limit to the number of tabs to the number of dividers in the expansion CardPlot.tabSetup( tabNumber=Card.sets[card.cardset_tag]["count"] @@ -1932,6 +1946,13 @@ class DividerDrawer(object): textTypeBack=options.text_back, stackHeight=card.getStackHeight(options.thickness), ) + + if card.isExpansion() and options.full_expansion_dividers: + # Fix up the item to have a full tab with text centred + item.tabWidth = cardWidth + item.tabNumber = 1 + item.tabOffset = 0 + if ( options.flip and (options.tab_number == 2) diff --git a/src/domdiv/main.py b/src/domdiv/main.py index 7b3b735..b5048f1 100644 --- a/src/domdiv/main.py +++ b/src/domdiv/main.py @@ -344,7 +344,13 @@ def parse_opts(cmdline_args=None): "--centre-expansion-dividers", action="store_true", dest="centre_expansion_dividers", - help="Centre the tabs on expansion dividers.", + help="Centre the tabs on expansion dividers (same width as dividers.)", + ) + group_expansion.add_argument( + "--full-expansion-dividers", + action="store_true", + dest="full_expansion_dividers", + help="Full width expansion dividers.", ) group_expansion.add_argument( "--expansion-reset-tabs", @@ -589,6 +595,20 @@ def parse_opts(cmdline_args=None): default=0.1, help="Width of lines for card outlines and crop marks.", ) + group_printing.add_argument( + "--front-offset", + type=float, + dest="front_offset", + default=0, + help="Front page horizontal offset points to shift to the right. Only needed for some printers.", + ) + group_printing.add_argument( + "--front-offset-height", + type=float, + dest="front_offset_height", + default=0, + help="Front page vertical offset points to shift upward. Only needed for some printers.", + ) group_printing.add_argument( "--back-offset", type=float,