From ed9e63142ddc8befe882511e961f85d4cfad8a96 Mon Sep 17 00:00:00 2001 From: Peter Jensen Date: Fri, 3 Nov 2017 17:14:01 +0100 Subject: [PATCH] ui: request_words, keyboard ui --- assets/5390-200.png | Bin 0 -> 1975 bytes assets/{close-button.png => click-icon.png} | Bin 1424 -> 1280 bytes assets/confirm.png | Bin 1168 -> 1058 bytes assets/{clear.png => cross2.png} | Bin 1197 -> 1128 bytes assets/left.png | Bin 0 -> 1039 bytes assets/recovery-old.png | Bin 0 -> 1068 bytes assets/recovery.png | Bin 1068 -> 1296 bytes assets/send-old.png | Bin 0 -> 1260 bytes assets/send.png | Bin 1260 -> 1285 bytes src/apps/common/request_words.py | 30 +++ src/apps/management/recovery_device.py | 7 +- src/trezor/res/click.toig | Bin 0 -> 139 bytes src/trezor/res/confirm2.toig | Bin 0 -> 89 bytes src/trezor/res/cross2.toig | Bin 0 -> 115 bytes src/trezor/res/left.toig | Bin 0 -> 73 bytes src/trezor/res/recovery.toig | Bin 0 -> 147 bytes src/trezor/res/send2.toig | Bin 0 -> 108 bytes src/trezor/ui/__init__.py | 7 +- src/trezor/ui/button.py | 11 +- src/trezor/ui/keyboard.py | 230 +++++++++++--------- src/trezor/ui/style.py | 18 +- src/trezor/ui/text.py | 6 +- src/trezor/ui/word_select.py | 53 +++++ 23 files changed, 242 insertions(+), 120 deletions(-) create mode 100644 assets/5390-200.png rename assets/{close-button.png => click-icon.png} (54%) rename assets/{clear.png => cross2.png} (65%) create mode 100644 assets/left.png create mode 100644 assets/recovery-old.png create mode 100644 assets/send-old.png create mode 100644 src/apps/common/request_words.py create mode 100644 src/trezor/res/click.toig create mode 100644 src/trezor/res/confirm2.toig create mode 100644 src/trezor/res/cross2.toig create mode 100644 src/trezor/res/left.toig create mode 100644 src/trezor/res/recovery.toig create mode 100644 src/trezor/res/send2.toig create mode 100644 src/trezor/ui/word_select.py diff --git a/assets/5390-200.png b/assets/5390-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ad62e1cbe23705da9b05cb06327be0aa5c46a1c4 GIT binary patch literal 1975 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 delta 603 zcmV-h0;K(b3XlsSiBL{Q4GJ0x0000DNk~Le0000U0000U2mk;803KWMez74#1AlFp z00482007@F004iD004dd007i+001)T0012^rEzIF0005-%FEW6vsbX z1P)iN$8@W#Nk%tP5v!nX%m~)c3!|HEg6O~KABe8H(i#a7nFK3_DG_B^lv&|~k%DA| zR8A|6ZE41~_;&HU@4Knz<~@8r&wu-z=X^QG*ZgBGHfne8Z{9@i^ZT*9qm&vjPTJBr zBPZr=9dJbB;JO=SRY%X(YJ7M~D`M_M1;-b(DoW>FeCW4|kMCqFX#U>AKPsKJxNcJA zvk-pk(utjLWKrLnFc>D&7v$rU9+vg8U(nJ)1E0T^HOn;}OuVLHA zD`|Y2^=M2|(h&V3Nkg{%(7Q?7aG+0;@-3XS1>b}Kh-?R-rr)X;xa>Ulwd*br=yk+v zbh+&edpz*S)smzG-TC zo*8hmZ=AAK()9q;Z?UEfSby~*P1BN;jsURk$(nzc>_pGqV4VCbWy zl)=QxQjh&*P?9p60k|qDZZIUIK7inJTX3`iAR(nN7{XI39tY#Ok!gg3InD2~!_@Xy zOAoGBO=Gs}Zb3Tdj$-@L>QVf6sWQlIGb?Gny?PBI-OFk3j%8Z{u`t`eTvoW>>MoJ5 pvVt4;#iAR0h3S#epWX`o9{@j1t16XHN#6hf002ovPDHLkV1m!M8zcY# diff --git a/assets/confirm.png b/assets/confirm.png index 4dadd5ff0d51cb4c71a364cb539ebca68ac3da16..69a3df952ada46585f2104c9805acdae1fe8df53 100644 GIT binary patch delta 197 zcmbQhxrjrtGr-TCmrII^fq{Y7)59eQNDF{42asT}nz3N-M#T)~`W8F!G3PgO z9tx0feK`5lEB)L%$0S9L8+sf#<)_lB;=*cukgK zL_t(|+H}${OM_7q2jDYAHk1itSf(FAOk%MJDp*7WKf%B+U@^@gc0oimDoke*qd^eC zt}w;uaIBe(hR3jfZhPNfx`*d-&*5@1rB*(YlPgbLMHiGO6y*P+}#$4vEoaX{Z-w^PI=R{A>i0cYL2aSv;~ zsb1lv_f#x{^-g^O$Nf%`U-*U9h=|-RRN_C!bPF~jil49@gB-;sEJXvhVwj`Y!1oty z#wbUjp`A)3aTJ>1Ad)%eVSnU63tIh7659v?oZvZWhmw+!c-=+Wn00{s|MNUMn GLSTZbB7(30 diff --git a/assets/clear.png b/assets/cross2.png similarity index 65% rename from assets/clear.png rename to assets/cross2.png index dd5901dad10598eff7e57d0e33b175e9114c3d14..e57702e5efb5f8dfa04e9e743ee1da3108fe1962 100644 GIT binary patch delta 268 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 delta 244 zcmbQhwT45nGr-TCmrII^fq{Y7)59eQNK1e)2asSmDwCwLQPG*XK6eHKLvbGi!+m`Q zhWcIxhT4A&3|9&n7>r&qFvuD%EzGn8s_yf2aSW-rm6XuHV3wzmknX^0%D*r{Y1WaJ z{{b7Ad>65+ZA|g-C^@JicCb~YrM0D{W!V9hFisHgHZ(MNR#*4^+uPgk4LaxN-``jJ zed)}Zjg1Sx+Oy3#>v`w^5Crt=*@>q4DzExs(lYzi##Qc@jd`!ie~q}R{Bq{821cMr k`zs(rbj#T^1ttbIhAF4-o;D76w+7@BPgg&ebxsLQ03_O6ApigX diff --git a/assets/send-old.png b/assets/send-old.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd8b49a3c0ab21bfe6c731e58ed536938d86683 GIT binary patch literal 1260 zcmVU8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ-PDw;TRCwC#mQ6~-P!xq<+kv3q#6c<| z__G5?3L*$?ZEIRL-~z-&h=SE62(H3Wbr2AWiYpMonOI|Mn>u#j=imlfv5@3u;J|l= zkDT+~%XbfnF;-SqR#tzeiF`W$M)To(K81hh1vty8{gpPrv-${bAAr`BcK-l?-n!Di z^#MRoQ2IB+{VUq@cLC^bEB%EI0Deu&{}q6@y3${6%lWnY*W~^6wf8T}`~=0wCzlTQ zC&%y);`-Mfq3QhMKM?-aNdNQ|fVVJ~|GOJ~)tNg0yv5PQlKA~N{IYvU!t!vf?kC}& zJ(YyZxu5+{z`r30*Rx^&L;h}jU!?1QNK@T^W6Z%Pbc!a0cD;+$l%H|?Cu8-`^gRHQ WI2rOyOp3?=0000ERLtq=i7314uBkEP5ylq&W*bB8wRqxP?KOkzv*x ziH&B#%=PJ>E{-7;w~`VCs*WG}UZ#9{`DR9-YKH&+lM)jWe#)OXbOOeG@O#JY-qwf0 z&C<*;1rL54JoKS){=}!NKd<|*b7xUbj}FiN?}jiP2?+ufC8t^&8(SNnZ)9k`{6F`e z4$rl3{`dZ+^-oSuym3;Y{?Lc{iGs`yIy^wIsb5k;B0@q!qO1ChpRvIP0|Sw-26K$; zjvqKQ;qK`J2MWUe3whs|!fJo{aJAm44LNW1q7QwDUHnAz^mQXPHnwH?zC1cS1_urS zRepVt4HRieNNSpC_SXI1VO2?qA3@naC2hWk%xmQQsA~Gj(7?c8$Bw!;Yi!ORIB@8Y z{4K2`1s#Wb9^PgwE&txzdp*M9OLuFS`2P7h#|{`3=D#rcU;S1m{@cq<^(g|Wi3vZ> z|13Z1cFiAXBaeNZfx(~jgoK2YgoGde<}$uBNMmDDQxP{ZFsR9#^Y!_8TMlUhhL4po U`F9hpaDoEI)78&qol`;+04tooo&W#< delta 421 zcmV;W0b2fr3hW6siBL{Q4GJ0x0000DNk~Le0000$0000$2mk;80FMGL0ssI232;bR za{vGqB>(^xB>_oNB=E5|Qv-iaNklnj#g4HDmuEJ4u5Dj)U-Z7>m{00g8A12)7S7iQriRbr35^kTg z{m+C6`u^vJ3CjLw8egRAe@Ii^e`CzSCv=J?g?7D*)s&xc`zK@d&-6V2k~kUiO-zc& P00000NkvXXu0mjfUIfX_ diff --git a/src/apps/common/request_words.py b/src/apps/common/request_words.py new file mode 100644 index 00000000..33888403 --- /dev/null +++ b/src/apps/common/request_words.py @@ -0,0 +1,30 @@ +from trezor import wire, ui, loop +from trezor.utils import unimport + +# used to confirm/cancel the dialogs from outside of this module (i.e. +# through debug link) +if __debug__: + signal = loop.signal() + + +@ui.layout +@unimport +async def request_words(ctx, content, code=None, *args, **kwargs): + from trezor.ui.word_select import WordSelector + from trezor.messages.ButtonRequest import ButtonRequest + from trezor.messages.ButtonRequestType import Other + from trezor.messages.wire_types import ButtonAck + + ui.display.clear() + dialog = WordSelector(content, *args, **kwargs) + dialog.render() + + if code is None: + code = Other + await ctx.call(ButtonRequest(code=code), ButtonAck) + + if __debug__: + waiter = loop.wait(signal, dialog) + else: + waiter = dialog + return await waiter diff --git a/src/apps/management/recovery_device.py b/src/apps/management/recovery_device.py index 8fab3d8d..1b2cd46e 100644 --- a/src/apps/management/recovery_device.py +++ b/src/apps/management/recovery_device.py @@ -11,15 +11,20 @@ async def layout_recovery_device(ctx, msg): from trezor.ui.text import Text from apps.common import storage from apps.common.confirm import require_confirm + from apps.common.request_words import request_words if storage.is_initialized(): raise wire.FailureError(UnexpectedMessage, 'Already initialized') words = [] + wc = await request_words(ctx, Text( + 'Device recovery', ui.ICON_RECOVERY, 'Number of words?')) + msg.word_count = int(wc) + ui.display.clear() kbd = KeyboardMultiTap() for i in range(0, msg.word_count): - kbd.prompt = '%s. ' % (i + 1) + kbd.prompt = 'Type %s. word' % (i + 1) word = await kbd words.append(word) diff --git a/src/trezor/res/click.toig b/src/trezor/res/click.toig new file mode 100644 index 0000000000000000000000000000000000000000..8c906acf81b4d199894b707ba375f0ef518fb8cd GIT binary patch literal 139 zcmV;60CfLUPf2GG02Kg#0000j%OMWJKoo@Ge+$X>B?uf6Zh!#|N8l!KgK{Dywipy4 z905bnkZqx+eZ1{5=1XQWxKbZjis#~X0$+n`VZO0$y5|r#|Kf`~lLadB4r)F~hYMVz twy)M^Hba86%lIjC)!i5d=KXDjsA_Xes`@H9(n;@7FTHFvDSs&<%@1*QI#mDw literal 0 HcmV?d00001 diff --git a/src/trezor/res/confirm2.toig b/src/trezor/res/confirm2.toig new file mode 100644 index 0000000000000000000000000000000000000000..cae04d25be24cce3973b5cab4ff1900966ab21a7 GIT binary patch literal 89 zcmV-f0H*&`Pf2GG01yC80000JU;qO~2*m=S7}ghnDUSa?!Sww9zaiZJ6Bq(P+@B1r ve;C+7-2VR?>i_>@VA%iv-~ay$z-mBTkRlKlB=8Gj=KKW^niWh6KXH5MZ!nU|>j2NO%x&fPwAjepUyO+yDP3SpEO+%<-My<=g*cH%CXu1#kBM d2ZFW#`Pu#_nE1#n<6Fm{#&;)XhOIy~BLGRmAIks$ literal 0 HcmV?d00001 diff --git a/src/trezor/res/recovery.toig b/src/trezor/res/recovery.toig new file mode 100644 index 0000000000000000000000000000000000000000..1380e8664ef7827bdacf73520d449e2e38f05015 GIT binary patch literal 147 zcmV;E0BrwMPf2GI01^O)0001EU|?W0R$yRYXJBAE|Nn0x<9r6@^Z)<<|CjTh!T$fh zUH5@(#`pgM7+8P|j{lDs7^Hv{}UMU|NknR_x~5r^8X+(0VuBpq_==Iip&lIk^n_G BNS^=z literal 0 HcmV?d00001 diff --git a/src/trezor/res/send2.toig b/src/trezor/res/send2.toig new file mode 100644 index 0000000000000000000000000000000000000000..6a75b310c929f30eb7a23bf0494f76c9170c2c34 GIT binary patch literal 108 zcmV-y0F(bzPf2GI01^OT0001EU|?VnWPkw1Y6A#E{QqVMqyGPIun_zI{}7>iAOj@C z_8!Rizlnh{@Bf+qzwiGxVEzBo^8eSk{~KBEFXa6Hh4p