1515from ..util import log_level , log_cfg , ordinal , chunker
1616from ..layout import write_pdfs
1717from ..defaults import (
18- GROUPS , GROUP_THRESHOLD_RATIO , CARD , CARD_SIZES , MNEM_PREFIX , CRYPTO_PATHS , BITS
18+ GROUPS , GROUP_THRESHOLD_RATIO , MNEM_PREFIX , CRYPTO_PATHS , BITS ,
19+ CARD_SIZES , CARD , PAPER_FORMATS , PAPER , WALLET_SIZES , WALLET ,
1920)
2021
2122log = logging .getLogger ( __package__ )
4243prefix = (20 , 1 )
4344inputs = (40 , 1 )
4445inlong = (128 ,1 ) # 512-bit seeds require 128 hex nibbles
45- number = (10 , 1 )
46+ shorty = (10 , 1 )
4647
4748
4849def groups_layout (
@@ -72,13 +73,13 @@ def groups_layout(
7273 ),
7374 sg .Frame (
7475 '# Needed' , [[ sg .Column ( [
75- [ sg .Input ( f'{ g_need } ' , key = f'-G-NEED-{ g } ' , size = number , ** I_kwds ) ]
76+ [ sg .Input ( f'{ g_need } ' , key = f'-G-NEED-{ g } ' , size = shorty , ** I_kwds ) ]
7677 for g ,(g_name ,(g_need ,g_size )) in enumerate ( groups .items () )
7778 ], key = '-GROUP-NEEDS-' ) ]], ** F_kwds
7879 ),
7980 sg .Frame (
8081 'of # in Group' , [[ sg .Column ( [
81- [ sg .Input ( f'{ g_size } ' , key = f'-G-SIZE-{ g } ' , size = number , ** I_kwds ) ]
82+ [ sg .Input ( f'{ g_size } ' , key = f'-G-SIZE-{ g } ' , size = shorty , ** I_kwds ) ]
8283 for g ,(g_name ,(g_need ,g_size )) in enumerate ( groups .items () )
8384 ], key = '-GROUP-SIZES-' ) ]], ** F_kwds
8485 ),
@@ -103,7 +104,10 @@ def groups_layout(
103104 [
104105 sg .Text ( "Seed Name(s): " , size = prefix , ** T_kwds ),
105106 sg .Input ( f"{ ', ' .join ( names )} " , key = '-NAMES-' , size = inputs , ** I_kwds ),
106- sg .Text ( "(default is 'SLIP39...'; enter Seed names, comma-separated)" , ** T_kwds ),
107+ sg .Text ( "(comma-separated). Paper size: " , ** T_kwds ),
108+ ] + [
109+ sg .Radio ( f"{ pf } " , "PF" , key = f"-PF-{ pf } " , default = (pf == PAPER ), ** B_kwds )
110+ for pf in PAPER_FORMATS
107111 ],
108112 ], key = '-OUTPUT-F-' , ** F_kwds ),
109113 ],
@@ -177,7 +181,7 @@ def groups_layout(
177181 sg .Column ( [
178182 [
179183 sg .Text ( "Requires recovery of: " , size = prefix , ** T_kwds ),
180- sg .Input ( f"{ group_threshold } " , key = '-THRESHOLD-' , size = number , ** I_kwds ),
184+ sg .Input ( f"{ group_threshold } " , key = '-THRESHOLD-' , size = shorty , ** I_kwds ),
181185 sg .Text ( f"of { len (groups )} " , key = '-RECOVERY-' , ** T_kwds ),
182186 sg .Button ( '+' , ** B_kwds ),
183187 sg .Text ( "SLIP-39 Recovery Groups" , ** T_kwds ),
@@ -212,20 +216,31 @@ def groups_layout(
212216 int ( round ( math .sqrt ( len ( Account .CRYPTOCURRENCIES )))))
213217 ] )
214218 ] + [
215- sg .Frame ( 'Paper Wallet Passphrase /Hint (leave empty, if no Paper Wallets desired)' , [
219+ sg .Frame ( 'Paper Wallet Password /Hint (empty, if no Paper Wallets desired)' , [
216220 [
217221 sg .Input ( f"{ wallet_pwd or '' } " ,
218222 key = '-WALLET-PASS-' , size = inputs , ** I_kwds ), # noqa: E127
219223 sg .Text ( "Hint: " , ** T_kwds ),
220224 sg .Input ( "" ,
221- key = '-WALLET-HINT-' , size = inputs , ** I_kwds ), # noqa: E127
225+ key = '-WALLET-HINT-' , size = shorty , ** I_kwds ), # noqa: E127
222226 ],
223227 ], ** F_kwds ),
224228 sg .Frame ( '# to Derive:' , [
225229 [
226- sg .Input ( "1" , key = '-WALLET-DERIVE-' , size = number , ** I_kwds ), # noqa: E127
230+ sg .Input ( "1" , key = '-WALLET-DERIVE-' , size = shorty , ** I_kwds ), # noqa: E127
227231 ],
228232 ], ** F_kwds ),
233+ ] + [
234+ sg .Column ( [
235+ [
236+ sg .Text ( 'Paper wallets / page:' , ** T_kwds )
237+ ],
238+ [
239+ sg .Radio ( f"{ ws } " , "WS" , default = ws == WALLET ,
240+ key = f"-WALLET-SIZE-{ ws } -" , ** B_kwds ) # noqa: E127
241+ for ws in WALLET_SIZES
242+ ],
243+ ] )
229244 ],
230245 ], key = '-WALLET-F-' , visible = wallet_pwd is not False , ** F_kwds ), # noqa: E126
231246 ],
@@ -638,7 +653,7 @@ def app(
638653 window ['-SD-SEED-F-' ].expand ( expand_x = True )
639654 window ['-SE-SEED-F-' ].expand ( expand_x = True )
640655 window ['-OUTPUT-F-' ].expand ( expand_x = True )
641- if wallet_pwd is not None :
656+ if wallet_pwd is not False :
642657 window ['-WALLET-F-' ].expand ( expand_x = True )
643658 window ['-SUMMARY-F-' ].expand ( expand_x = True )
644659 window ['-STATUS-F-' ].expand ( expand_x = True )
@@ -668,8 +683,8 @@ def app(
668683 values [f"-G-SIZE-{ g } " ] = needs [1 ]
669684 window .extend_layout ( window ['-GROUP-NUMBER-' ], [[ sg .Text ( f"{ g + 1 } " , ** T_kwds ) ]] ) # noqa: 241
670685 window .extend_layout ( window ['-GROUP-NAMES-' ], [[ sg .Input ( f"{ name } " , key = f"-G-NAME-{ g } " , ** I_kwds ) ]] ) # noqa: 241
671- window .extend_layout ( window ['-GROUP-NEEDS-' ], [[ sg .Input ( f"{ needs [0 ]} " , key = f"-G-NEED-{ g } " , size = number , ** I_kwds ) ]] ) # noqa: 241
672- window .extend_layout ( window ['-GROUP-SIZES-' ], [[ sg .Input ( f"{ needs [1 ]} " , key = f"-G-SIZE-{ g } " , size = number , ** I_kwds ) ]] ) # noqa: 241
686+ window .extend_layout ( window ['-GROUP-NEEDS-' ], [[ sg .Input ( f"{ needs [0 ]} " , key = f"-G-NEED-{ g } " , size = shorty , ** I_kwds ) ]] ) # noqa: 241
687+ window .extend_layout ( window ['-GROUP-SIZES-' ], [[ sg .Input ( f"{ needs [1 ]} " , key = f"-G-SIZE-{ g } " , size = shorty , ** I_kwds ) ]] ) # noqa: 241
673688
674689 # Attempt to compute the 1st Master Secret Seed, collecting any failure status detected.
675690 # Compute the Master Secret Seed, from the supplied Seed Data and any extra Seed Entropy.
@@ -896,6 +911,7 @@ def app(
896911 edit = edit ,
897912 wallet_pwd = values ['-WALLET-PASS-' ], # Produces Paper Wallet(s) iff set
898913 wallet_pwd_hint = values ['-WALLET-HINT-' ],
914+ wallet_format = next ( (f for f in WALLET_SIZES if values .get ( f"-WALLET-SIZE-{ f } -" )), None ),
899915 )
900916 except Exception as exc :
901917 status = f"Error saving PDF(s): { exc } "
0 commit comments