From d508c308b545a122fac08a63b5bafb8ae634800b Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Fri, 5 Apr 2019 08:33:31 +0200 Subject: [PATCH] basic choices view --- driver/Makefile | 2 +- driver/cli | Bin 78536 -> 78776 bytes driver/cli.cpp | 20 +++++++---- driver/main | Bin 61936 -> 0 bytes driver/ui/view.cpp | 34 ++++++++---------- driver/ui/view.h | 10 ++---- driver/ui/view_info.cpp | 9 +++-- driver/ui/view_info.h | 5 +-- .../ui/{view_main.cpp => view_selection.cpp} | 22 ++++++++---- driver/ui/{view_main.h => view_selection.h} | 20 +++++------ 10 files changed, 69 insertions(+), 53 deletions(-) delete mode 100755 driver/main rename driver/ui/{view_main.cpp => view_selection.cpp} (66%) rename driver/ui/{view_main.h => view_selection.h} (54%) diff --git a/driver/Makefile b/driver/Makefile index 14a27cd..3dbeb0c 100644 --- a/driver/Makefile +++ b/driver/Makefile @@ -14,7 +14,7 @@ OBJ_CLI = cli.o CFLAGS = -std=c++14 -O3 -Wall -Wextra LDFLAGS = -lcurses OBJECTS_DRV = drv/usart.o drv/b15f.o drv/plottyfile.o drv/dot.o -OBJECTS_UI = ui/view.o ui/view_main.o ui/view_info.o +OBJECTS_UI = ui/view.o ui/view_selection.o ui/view_info.o COMPILE = $(COMPILER_PATH) $(CFLAGS) diff --git a/driver/cli b/driver/cli index 8d652a763a49dc9bbe74649e19b4c0eac8b89b6d..9cbf19d1cf7a96790b658eef2b3b717144b7c7f2 100755 GIT binary patch delta 30190 zcmaid3w#XM`~J*k6A_W!kVxXXiKP*@L-VY^$-e z{QM2)NF$ld;u|gwW6M$EIWBzzKlkLwGG42d9YwC0>v4;pTkslV{lb|kAe@bdCP%1d zR$Vuo6`-y-F2luJv5&MB{n;(Qj%>U>T&(0W8Am5`zAk7*m^hM4-p|i>xfSa3+$Fp& zqkp&<&2^7sN&X$h=4^^T>VpPF$VuRw+3cu)nCM42;y^-t{m}uz?5NmK+{eql$=e;w z>#NH($l)b7P%d*r`&_i=RNZj#8IJGcdMxFfXShXr^0EayH=WnCh;0byE6(882YIfU z=bmLr^*V~7yhn0)t9CIFHBeh;aLWwl+MMRn-{<&RZkq?ZZRvsGVi~9X`1vM3zs}|D z;C3)svg;WUqikP*AQ-`A z!e46Zne~V|i!&XR|7ETGoW>JShre*CR{k0AY2_OpSPh;1glcxUX$yP3KrRF_e1vjU ziUm-}gbDQpAy68_-bKMvz3>7RAMS;_RXp7buU7H#Ubv|% zSx(0jK)mE6S0p7AW>AU_5Q& z4BNc$GL_%$g$rs0hrI9tmH*U3oYyZzs})o{%uqC%r6jT!9;@QjUU>CPg}+R-h}JO6 zdIhiW!c*2O^$XQr8HZF_P!-bz#eS{`3irZORXo-Uul_>ePxZnVsOxjO-77;<>G588 z?jl7{mKR>2;ssu~TdiP;7p}=)tKxR8WeZfG*sFk6@is49tJv*@r!G+xJ>-Q8OBKBA zQQR(A-d8dz9?cNS)E3BIxTMneyzo;hEu1lNfm*|~2Kam7N&|Xh#`4Oj{#a2c+zU4@ zS8$UTUd?VrhGht9Zmd_XNtNbb@u*rFZBf<6)G18IU$|021PZrTj&aZ zbZEn#IM9q5+*nIuZ9Muv@CE;YYX+?)pXEgbH=9hAtB0vpS&p*}Q4OuNIkfH~DJ}4) zX+NV@$*Gz+q`9?m_Cd=q_I}I2`rFD)oQERd#_T(w-vT{U3vJ8(Y8e*sIOkGMr)uSn zW9`jh5tC}=%C&N{*eG+DeOj&Dd$n?NYT?ET6Q`&(>HJDP{b=GBSfP0QtD=Gy6%am0 z1CeS`0pb5saAhWP*AnzftpZvQLj}l9v_lI=2%oKiNQ>18jPMz?aFf~q!qrKX=UOV* zv#kO|`^K@Y-trM+*l*Em#7-MOXwyOzpJZRfbQF7SydGoFA$VdPNg#}kckEi^~3J;D}oroseSC(-)hG;|yLZzG2QAGO?UF`ALQJ^sabk9>+#2Fe8 zO>M6%;B)}dJDyOd!ji^bev~cw_c3Qm7XbTH9noL)zC z1ESrW{+Q^7L>JpRu#A8Z0*W~OHqoI(7jXIwq8kyN%jwsM4kJ2?)3b;UCpw+eQ;Cis zI+fEe65W_+3#Xqax(U(tSPnc(KvM!toE}VcGop>0?niWUq6JR(BARB3%Id$!0#6Wa zBD#XporsPkx{T8?L`MG~t%xq*bO6zp@2oozCgoM7JS2mD5*=jv?B@=?g@+rO>W2mIG%9Xh#etP9Gz>J<&!^e@%1; zq6JRxBf2Be)epE25FJZ&1*g9xI*#ZvPOl@n6VYx?e@yh_6xvl5b6^<(or$4{({B?^ zQEz1dr{5sD3(>ipevRm^L}zh&7SY{^PUrMgq7#Tt<@Ae0KS8vG)6Wy#ohG!(SPnc( zKo6o#oE}VcBGE=p_anL|(E_J?5&b05)%Up%5N#p4g43OdP9nOD(=kN%BHGRAD5CAX z2`J`3V*-+iF5+|pqEm=2;B)}deTdHGw2tV$L}zjO&vl?BqSHBjn`kT1shqw_bU&gk zoW20sKE6Kzu^c!<3^t-ooIXbM0HTeY{+j5gh!!}#kLZC!SO3X(fn(SwLC zjtL=PppfYWaf{WQ_JoPLeyVMJ$fdKS^c ziB9MARHC0DI+fEe5>0_hrG?Yaud@RfK|m}Ao+XBnM4LE0nCMYN8#&#N=;w$QINgir z(L`7O!F_<}bfPOb-HGT7qRTiPL-g}RyEz?YCtwT##T;l1dRzf$e$ZkhU%^@t=aG$= z(dD18j>Nh7ibRW#yvNv^DF$>Ezx_!3b?^XD}R`};={Jk{(mo)wYg@2L4zf9pDpz${#ep^A@b*tm(bCTnNly|8*HO=Po zorNGza@F_YN#X;VZbQ4E@Et=7%nq9SqDmPj|yZ7l^pavzm{F=+RDyDpu~BU z=|-=}JE1AJ`Iqof*qprbM-(8hV-E#s@<1Tmur+RL zS9-e+6qS$t#+&K9hwE1e7<3n>b~we|-2-Lo$Zpcc75@i@-yVt}`Op@c=IKyP$o0Hg{?yZ7O;a0>DY%vmab`rbYy)8Dd zoA(&nVf!5_l!B^ndQzcTGs{Zo(Y;v`lI$m?c|T?QNRGBr-hQ;NnVBu`5wH7Y1v}Lv zW^6x{v^q)#h?leVR>#ZGsr{N2Cc*0X+1lp1l<;$Qkj-&ba@?>vuE@Ko5l-K?kl){B zYv*ru9I&?eSxPvS9V|J%=X~enrM#tkt>SmmyzAMh@1}f^y^z@4zb}emVv1$1#J=`J zzmh%nBX{=_GXDZjm&;ka3NlOHej}_UC6vQ5F+BICJQ%rE6;ZGVn(d0J7x#}N> z-$KW)kl0+AW>efTu1ugA{qn2fRlQkq;LquUS`HZ+0d{7Yh#!*$SB-|Op-mvzpo-O% zY&II&*vzRQN109X@7#SfpR+lBA!VO`iInAv#vZg7M;U^l8(K+?Gm)HV(php`P4b-N zp3KE6t~~A*86g=hT-2*!f2WVtm1c(dej#~I3rcelS4lP1&=5z)JeX{b6>x_~Bcql) z|Jw5GP9JIa2ve`IV<%<8wpXES2pR^-61Dkr8p)1qbF85aO#HCHym}0&ZIeuJ6;#xC z)VL%xBb>B|uBTMqUGN-LD$gr1+7hn7`ChG7+d_Ar^>_FPY-z80>CnMZPGilLc;zEF z4)y9tbGZC0rZCLHd3+SZ`!c1+6<^G$j~O*<#Hgf^Nu!dU+b=KTVyT&^2}41tte#dG z4A;osl>C;PqBhUTo3#`=1%*_ny6GvaI{Z)eHMQA4d6az_Dz3UfWh_$O0a8OsxS5?V zPeYl?S&=mNV+=aVchm5aKO{*Q&-3Av~WxqTScd}KbO70LP*ZeRyj&eUya^scU-Q!qRpU}Et3gsTh-s}@z_wH3*_pov7 zi#`$dG|Gc|ENR0I|M0H}cE!(w^Y>{P{av>6t9w2B@|74Z+NXslH6 zxKc&FT1E21DjaGRQ>coeL%8`VMnM%l|E-GCl^#FphIM1vw|&E#sshi0Rn@t*Dlq8A z+fuYH`vn#wMcIv&$alq`8cQuryuAdm22Jp{4Z(V|+z{q;PD@3`X=KRR3hz$v?x+JM zbuGRQx!`I$EsZQPP+|Izm}ovwnGSI#&e2}sI87YgF&AqNu^KG54MrQH0!KM6^yb@! z=l05P!84)Zv!tP8{|>c)JmV_!vznWBx`N!i5-jwkBSux0$Q1Qhz<5)ZuChMX*1FuQ zY?9U7{|)fv-4hM@j4E`+f00Q^;)+5vn3f#!$b($5#J7N9Y(*>et|Ug(t1y+y%PZN> z))@29U&yYd@^#4FQ#4-`>NE_Of>0yVX)^~(;?Gt` zsbS0Ms`h+>l6NB4*5)3Iv^6uFcqKZ?+0%x=9@EL6GF#bysP1u@-S6LA*HC6nY_Ynd zm)HQCQ8vMuh&)$W`9rR8)Qr?YFtIu?9Kg2a`{`>IbF^LW<+w4lp7Ru{nO1|G>(OjJvpH zP1;7QblkDHyOfds3;X=341)z3YQK17_j%TQ;LFQ7Wi*;&@SQY=y)EK+AwDAk&G z5YX?2{5V9r^8O2~Noq5l`2u?)wP~}1m#JKuIa+e`hNBJ%uR0*PX5;FH-2XhAmKyo2 zxMRS!pQ*}HIkkM_=Yubck&jcT?n?Y}A<7zHQ~A_6FgSge z13*75TgW!0nVV;WlI=e!MZ+K>&Rw|=w_fDSOU|*oX5)L>HS~%Rk3P%3 z9~Pr~{4BeVWcpe5*zgvSC$RT|mU z(@(PxhcD`X9VBKI%nycq3c+D=1KpFj5`9P*%^7l=Gbnse0IMEDn)gi80vx@!< zoApdP`<9c6_@_>3vq}k-ruLw<+=b=AN}Yyz&GkzA20BQFH+lF@%JcbhXMhlHF|v{G5I^nli|mEe`4*Q?buOJm05xcF;GHe19Xvh zfN@+NVjU`;)2b>_nIcx4X3l3H(_KByHa#0{bW>4heC0e7G^)R12)p)dl+HJe8ApVK zjfa%V>(JHE0wT(J7%LAs#k!B^7CChYv~eXKL%AK;jS=K~WN)YMUM?tf$2_)pgt_Hn zQ1VB|kpsoMqN>UWj8ojfQ(%GMRNnX_`)NdiZpM$S(a3C_?nkz8WG~|pD&UO&J&)_O zVGuhvGHTdKx><0Xp`mtOPnY~2?G>0`a_%x0kZ~xaLp8?o#p!I<=m_1KqwL4ggLS{2U~SWzbZ>MF6*=ja@FoAMA|6*@ zUM;NpS-wU&uEZ4VD$7MjNgWFCqg zaEEPm9ES~m<7WI_p8Y+h&0~_IGVZR`fd%b~{KqjC`uuGBu2)UMBlqFqxDWrajOvcR zhq`G1cP2Aq9JmRl;dD`shdkWRg${U%?pH(1Rl#a^$j5ZuGw{+3&y39{vbU$awVGlOy!=o2Jz+SeQVjSKS$xPMU5 zmK|a*P3Y77z3FJd!Nb5@@$>r#*hwnk8-~=NFAlTsC&cL3VRnB)O3S8w$s!}oCPN#{ zd{qH*6G*Dv#Ul=~F)u!5dmh5%uMTMwf=?-zy*Y(D4_V+SkGn#jWln?~%He=23uUV5t2`jSVBRT2Gv z6dO^>etjuQ_eTl~n;5H`SHi3lb6PY0)xx9_fv^b=QNnY6`wg# zncOE*UAW=jC|`gKR7k?tpm5dl0zSHjB|U9*{LWr~`7hnJQZ|1Q)9v5SnoKUxO*zOu zn;fny+{a2M$D57lC%HeW;BzqTN5#qu_fn1Vo3p6K`jdMyQ&y9ZCoNd!w>5)~N>qDA z-c!N`W<4doz&^|xJ-D2gK>$hNq!L7aOOPw{x4LMGE56YLNJGD^<_*j?N5>tLuhO*= z#A47nhT`@KffR1~OJ&1eHgHM@+h~%3QiX0TujyD`m4RZ#YAA2yrRSJaZCDpe<<4NO za+6Jt(Aaze#vFuFxV}o)DQesxWw{Z)c#U= z`fg$vnl3qWhNF4gUWTlT*e{2bd*Bi4j#dw4eG8Z*B=2TBro9@yl1jSbMR1{@9||h- zS34^0^!<&T%N2iPB1_M1H^L1{{$?j~Q0JJhh@+;?m6Z3rA}xsO#El->2mMRrZGdS6 z#G*(N?Q+s4+C>l$6No%{>rQqhdq~i03bY=H{Pa#H<)k-Wf}Vn6AH1X~wjY^LY~f36 zUrsy2bHL>ZI~0xZ7WiK|jqUM-r4ySgeiMrCXryR@$z8Vc(wLCQYn-&19xKNytVP6% zP>Yl%*5;40MoZXqmFp_JGl|#lA@6PK2e<@@je=ZsRF*~lnNU~!CtbmexJ46ua2MP5 zN?gFS?TXg*cCuezd92+&nAMhWIp?zEoCrDE?)rMNHUc#4;9<+0$97A0vOd$N=uYfp z+o#9sR_tU|NT%#$&1S^vp4`a>&gg1?m+P)>`KD7On}rR0bs%j=#Wqxey{RRzhlcCH^ z+qre-nA0EG4Bg19DVKjjuH1;EqnRqp0n8VM{Mp!{lox`natd9&4IZWDZc5EdyResM zhR3HXwOB~b2vrW|jsx;Js8QJxMfqfSK%RtRl?_Q$=N)Xv%!vV80FYmv+sR^Qh3Q@% z&#beW>E7MO#?Knj{?-d7fi`saOU~KD;l)Y_>_b%}#+!lul)I?qo9|@Rv&`uu|04h` z-pb32s0@RZ9|oYG{1<<&!Y|9*z%)?3JW{}vBE zpd44?P=us%@n%wkFPWFQ?QhB-Y-dyEbZh!JaV7km^NZEl)J)HlTA_*5_R5GY?7*Cb zy7ikk4*6f17`}ZYIqAimOOkUG-q-qxo&c50D>kz3_QAThwy?MCEp(rM$%^e6w(el1 zY2xt>9?yVzceC5jw#Sw)Vf;m#xK6X$L8lYQrFH6Mu3Nc$fKs?624**@`y8_|yG)+@ zB^#CN(lz*!UCaGN7qDUD@wu%;olh~l|JpU(Z=bWuyzdh)eM&Opzk*CYeD})@NU}53 z2S!FlNg5KUdaao1<2H! z2})J0W0Mv*Q(BTKoIKKnm4+e+r`-$cJuA3swEk!PvszLgu7xDyI@Z(SOc??b{JW%? z;QBu#t&4&rUy@|`gay6fOv&T+`Zt|ES@VBNIui*=@!*lO*0OVNjMVAYvmVazsY|#i zeGclQg{qB8XmxoNB)Q^$fE87*nMQ~+G;k>Qn#%(euenZEP`swoYP!5BH(tl?INOLe z)_h@M)8ALny~$0t%^82EzezZlZ# ze6v4Th2D@3Y z7a6WaB=Rzpw^AHsMZ{pTlj|=~A&DRhA+HdEV(IGMb-A3WBG1<#gMlO&c4wP2sYL$A zN{R6`6_Gti#)~y2Oe!+51_>e|#5Ab}dVtmtl2wCTCB(VdoQuYihBK(X6DnB5!A<5R zND2RH70YWvqmr^+tJorB=cw5xSlH^^WTrt$*`rpmy>B*bDj~ZHPuuA& z4|=WygDj`cEtg+i!K&Ys>}F2hl$-kCW@~pf+ zxggXsL)AGK8Hz(5kXLdcPeX`r1f<*WkQEa_a)_~Nuj=~^z(Ky>Zxt&k=%?$sk{K5@ z?lH@R@FqyL{Hl+@;v9zUyu;}pX1N_1z}dr0VGKqR4`gO6XX6%`#y4#S_l_iu z)O@OrGxSicor#L&k3guymV~XW+t+|L`eZcC=ddbwZUP|1A|kvp20^&%WIS}Ta(Q?Ob3VC_V&lqqQqUO3w_<}I8xB@n_937Z;!A~hq8`oA@X#H zl81e~A0GCX$}!7W$&zmIxtB0>Uj3V@!3z@nCY4-kDOV@W+>KryaSXwvjA@p? zBU37WwUoszjcS-0!CUt>C5|)LAM<~oja%B%esL+jct8d1S0oXM$N^5 zr^sg>J@wf^jA-Nq>I7HfY+^mRgt+)BK=%Z&f8IXa7W|m)l$~I&%Gb8YXfw~|YPBw0 z5QfD4Bsqr-mlB4hWABHBe-NqjS;o45@K{$Jrkb2>xEB=!y&zBIvJZ%K|abXKagx58J-o8#v% zWS3XX<9vDd0u1w}d&szb(xtY2hD&?z`EucTvM43&%Xu!TRBuMUr*aTZ1(MzQ?+R2~ z4DXay1r%8FJ%;?pNT92i_#c)3ROtr>HRjxV!B_Gb(v4nMq4gdn>1BlV_@a>s6Vb~{ zCcauCG_yHa!ADVc+$J8D95!?8uZGD3;AP3?ZuH`h$q<|Z`!9soN-n&EqP`XKx94c( z4DQMKQ~_$h3~#x6Fwl^n0oaK*)tp0M(f;YSF==MKZOllsziWoh**ipPbCjERj3?P; z@!^#o8ZgFfH{`dWI`a1U=l$ZJ^c4w(E1`o^xKVA+fC2LkXNL`Nb&eg7a4yNP_@FJ} z$0WnMr75PrbJC@}gCfeBq=Z{J$5ZmJ8|Kk}7gV17OS8%UUEUzsY6Kj~IbOBfD*iDb z;pi)sl4DwGisQGc3J!cdZHbhCR|N<(B;TldgN9GH%Fj`iYd z4FT*I{mggF9?mNC5}MUwh-q zI0Sq?Hb=EhtjMm5dm%%9Q*@{`?}5SQFq;jpA4CaIBAm*{Fz*(qB*T_Q3sBOG+Xa*y zVt1*7dZNe-mWQ5LEDC@Fgs)z!}G#4BZ`z4?HI%VdYCo`R{Y+*9^zl3{X+ z(GW~MjADuii`RlMFOU8^03*$)jWkT6n4kaGO?&qbidB81O$si|01p1H&)jq9wU^<^ zG!xU~0(ucleyzD+slK8GE%{Rdyh(=Xu_Y=pv|u-vj@7MY8=qeGyr?t3&33$ZUbkTp`{4aZ z`Il9(_cq(TSx~Lo8u;6PchPRPkhx3p<~ipVKpCGtMrn-A93o+G>@~bL5q6h+`ph6AZ#0Nf9ZsIgG@Rtr zg8xqs+(gyh14emSGZw?d{tv5Qj)k)#tc4;ND(>vYR>vhgby9uy3LKU)MUrsSoRCw{70b@7hCsn&xAC*Q6PV@klZ(yo5I=IOs{_4l-H5Tl?FW$ znedJ9?-sJi6+>IyMM2uMIsfQ}VL8E0Ox@6AXAkz?ikK(r0CFXE*^ zv%oZ^2iA7C+{;Df62}mw1_YyB%(G&cy%9;|0gF7F3&)b8L?{oO$bq_MvLS6!(k?uV zN!#zf@;RPcF8e*2i@m*@*>A~i)wOH?wB@enz zbxy-1I8DM0(Z`RQFe|*2TI;3WgT2#n7c(Xc&(Fcg+R) z3!^pRYAFOjm8zpkSYUNro`4%Pnu6u!q$0_#S|R`T2JZMA2On0&eI4(q!h6WuXJ=Ux z9-t3Kfe%!w5;hMc%H>-TXF}(Xfv>(q@vAlAT6R-xOBv~PUVGjFQ&l;Ns6l9uA^P zlw5&=wX~!HbB&Z>KV+ES1Q8$KvQ2{*J35=?b*NIp;GiMlZ*$@0XS|y(mRQA`*|9uM zat@>kLMN5>;{8VJox$qB-0tiZZU_#L9R0$R48e5(h1>AHazeEs{}-y+A=@1LFs&H! zhY?w7F|tj|n%ZYn<30Qe$=R=3a?Gmc|2E-}koLO=8h_F~DdA*JF~TK(Yn~h0RNLCP zrM!v?Dd9HW3G=mNj~U=V*=oMnf5-bxGFqLl!i;VcX%~byxlE|98hHqkpMr4d9-4q! z9W(6r48c+b(0fq24}_NGY(=nSlG@z1;fcSLccEf{E8A$YIlB+QSn604^IMhW%#gnx zQf-dEZ4M7!B2(f&PZ@Y~ezrN=(prc&a&OAb7LZxtzcmvh{*A!qm}W=r7^7j{eo{QI zBwC9H5P54e6}38HpCNx7IxT6p35=CZsQ-94chZo55#iM~4!@178U?q*%7V1_ysy>q zZKWPLsyxyX>KW#BhmcD9GdQbZF?QJbQHPeM*N-7KMEIHWl~QL)+@-kdmFEH0j30Cf znLgp9VIKXjYh^G>%d214w)&EZ|r3$2J2$hWf;74jfYJSJ#$?``?nU5&@eE`Q1sGUWc zj37I(E(9VSjx--Pu0==}Bi)2_CDKDkHz7TXv;=8*09y8;$3y>Dy%K2w(b&`oghdu( zr+61BjFi5xvkB=Xq$No2*>Q0P7a`El{HeziiUVt=YJ1jvo9suPVP;L+U8tL(a9#1>;eOf7e z0cpq~_zEmwMp}S04e6(35u~)jFFx$CdmccL{%en?GX&&+2UDS7{`Ve_Ki)@OdDP>{ zM7jy-45T5)&{asyNQ;qnMp}Y28R;pcX-Kaj%|t5T0d+Rg5TyA?qmeE~+5_oIq^U?Z z9kZhXT$BKqf%G`ig-91Q}A(d8b`9i-WIT!iCo!+fOekS<1QLAnxY8q!Tj>0jSV z&U-vdkY2g~1(4oBT8&hH(c{r$cxC_M@nj=4UxDICGp|AphMWEx_&|r;#4rVIM!F4Y zXQbaE?T}mzC&2~9j-9a^lY9rJM5@1w@rsoGBdiC;Yv(`E*AeWg;wasWxom222Vei0 zFd|!3+|nLvM|WYq&<^yVFcN?M3-KRuDo9us{`9~))WY&{Z2|_P@&iT@mf-K~T#pAk ziBKrWI5fzge}khKLQK{~`)skXs_IKx=yz3b5?p-Gd#I{viZ(+zoM{GCF%C7|_PL)g|0arJs&Qqy4{ zT^}04e%+8*Zzb|fPLHRjD6o(Ao7jji<2y?zX9WH}<}r$T^l!osdIcHZ)b$Dqclq=U zGA-061x3&IO$v(5^GgmY5`D_pN83U%6A7em8lsC>OtxG{G;$akPxwUO-GIM?YoULT zQ8zEhpA3-?ylkb%gR1yJ*b-ph0>d;|gMA9@P%R97E4YD`0BeJ5mbuaBcNV~@mF&5V zjr!cfx{f#ajjp)PHud{kPB!b0=3V{ zloK1U7Mmgs#lQm5@1uxqY6CV9SOu^iz(x}`xB;^RGoq@Az@8_pLj(53rbxeTdO`Sf zAv?LLb(Y8^g6XHR^LrYy z;afutw4kM9eQHe0!1o4rv!oGoZ4O}XZEe*h8bhop#v&h8aE#}8Hz{AONk(45u7~ZQ zP9F|z;V$aqw%NEWLbi7wCxdMXlqf+S@5c!S)^%Hgp#s>%6&}wjbd>&a1G8^S@H4?F zj;~_7w{@tShD*z8%&1&%|LsPXsn40PEpc-u4+gn;P^$4gr}0f7Fi- ztm(7;J0lHg$n(dtKbah(tCClDS4YEI;N~wpo+IcOeN-UpyDP=;09er$k7p`$(Dw{v z@9k=3h{fu84cM22H40?k?~03}PqqYR|I-g7@Z=-Uy^BSC)yJ<4m)X17q_3W~x5FCW z&Hd2xP2iM}-5J<0l59jZ1A>h6bxA?tc|O)4Fwp48M7b>Rz$y7b*bHD3y|9JA#(QBD zXJjfE&3KByO#ssY!mRutffR_01O|O-u(QC1dtnr)q~Mr(v~KI`Vu%d> zXTMi~Jq-U>2!jRpkKlE?Ts?fhl9-D zA|4<$U$4V{-5cL^CCUm24WSi3s1Evfr3c{CuvB2jk#P^$3pC<})TtS9E%&$bGaJX6zmXqBfcL&>kC9(7K_{(8rrKKvADq!h!8J` zSW5kB1hak3?8(SCLSj>dgddR7?_rXBxZbDKtoN8vXuY@S&IAO-A_7PXG9e-WXRjdt zx`=IN7BXjwpz2?)wTSvUjHB5c+@5;`RKeq2XbDB|j8(f9Q_!f~DNYjp(X5Cs(nBwKmk2;pNhg^w&ZY&2$1>=l`{tE zGM(>wov_u%cjMl}b^Pqwr$V(agKA#_)xP|xed$yCvZtvlSp#ENO|=hoD(J&6^=TjE z)IPweeQ#6aQ@`BTUC=(PseMRO`*5blsC~*$`-EG~_b_Lo0q4X{+V?Is{*?9Fm6B>7 z7u3+$&+#qcM!Hlbsr~{~^C;~bl^T=wB|q(hiUo^^&8~fEQp?uZ7o0Zn%ZKbrj`o2_ z?Sqio_aC)#+IJtl5Uuq^6IRR4lv|Cx+S2sJR#<{GgB4 z(xK7xDc#yMeR{VxU9QrB3M`m9Di>Hf`4OVp8uxkp=yuY?({nR3Op(+sfl9P$66N@}M zdE=q86}p5*@k+7QYT89j`>5&DYC29$Us2QfY72x*vIGvcFMM#1Fe$dvCR z1Pj`C&L8D(Ajq3*Bg(ap&`_B1&A;Ix+DC&~*9+81aTh{;8VR{9@`VzvR-ZhpOi{ekOhx@M+}MwWUhJfH{sO^5G5o4T^W z7hB_7ii0kN#Z6N|Z6fL5RoTAtCXQ&n%BYm}L$y?~I{m1Hgd!EM_QE%+xc4-5m?d2f zvz|h(D1_F0eOQx5+xMifHaTi|J*-M1?y5CE*YFs&{BoGcH4Ny)c^U}W->@^6TW456 z;``R&npD(PO`aMZAmL22eP5fg-F-mH8EYqnuUL z*N0MWDlNY_)R8A#rCck0U!8IVhmxz6?Wp4Jd5_|QfzwyLwV9pY1cK#7`VzW*p<2q4 zuawfJjx#DA+eg9aUY(A6!2j(_dTztfRHMd~ClB+eoISZDNagDps(HHE2Xq~pSBu;G1=svH}MSR zjOI|OhmSpak&LJIoWV^osLzqF@2*{#1E>> z0##4Fn)^HD`qEB96#w~wSo#3~YcgokprDV!_PokHhWLPIAvB}oS0xc%Rr!n5g-6>% z%;P^N@C}_aXqTR3R;ae18xcAZvHo(4FH&f*@grZwO=A_BFN(N)A2{it1z&BHY`SiQ`C&>$RMS2pHl$MtaUJsse*!T z3eNX@aoLb1-3Sv$(b=929_n^21T?BL>9hL(CX+s=Pco}tR2XTShK@6;9PJCoxg5o= z65=4@&rlI}E5G~0|)RKNC7XOmk04Xr+VeS;#`+Xq_#Cq1+nnC^M$Xo8f+`?m8Y zA`x;a#{!kVI!~cBD}AiV@tTEpDtL?#J5wp}r7GwLwSc>y0xVJS+bps=EY1L@ATw0- zQebS!^MhUjC3Oo_yTB^^7|()lg;{4Km&|bLl!>FtSrF!_rOLdFy#-P5gn* z_A6YbQP6HOK=R{0E=WV|ga4W#!m+tP8oJdHuvg`8r{ZN^6Kfyfyu;O%QJrIi428de zP}E7(dx_^t`rr{QLfmL);;SGY!r~9>2sCL za30DC!ekXMo1oxYxS0o>WNLRsnju^y4L^!P=bilgJ(qt$l~bU4$}m+25t9^omi8TR z&9mOe3Q79ps!9A!`G`{^qFqE=qD7v@%e#5GdnR;c5;hl=+joMtlL_qD5L#VW6$ z@+PXhUuzuJt15?f!%TZkbo{O2>0Yx(SeQBusIwt$zSFUV`|+o2!`(1z1$ek0tXA^0 z`T3SwR@>sx`ldb%NB)<7-oy)Nb_`>|zlVuE=-h0G%41QjMo$3gc#&`(b$rCRZ*cBF zgmvTv+D~n0J{1L=+bClgU6FTrS$CC+S9p2p*D9|3LIm!5)Uo-qisyRC!HB*WW}k}@ zL?bl!q={>*twQetH~vfPxq|Z>Ykubffe1h7QHl{3I&|Ko0P1-I`1w@jwKi==J}hb% z)}A+UR&7Xo)B@UOk{0+xG*J|-KCSReyp$k32As^4HBkZRc?unURlK;nLeoQAI)-vw zxyB>U-G2m#?>ZMJ8 zI-X?WeUgl`{dH{0P)BP&)sV|M1Yr+w(%IYIr-5_#OH&x>xg#Be@kh8RnUlijs+-?Y z`K#5|X_HA9pRxp2ct02eWfAmwho4jFx3HM|z8cb~EBazZsBnyzLioE*0miEM1>n>Q z?S~~&RlErs^dL-pn$8icaW_LPDp05E4k}L_w&6k8fW{_8e{Ca=_WbEcFe#-fKH#K4 z8~t>wHz~NbX{q^R32{gMk@J&+^p$a(lc#$&EMhQLC41G%_BV8Q~{5LI-7sKNI4vUzEToRW% zT45ils(X!cMLoNPb9;VHrt{c$%}O)0U0@JL>+44I@+!aNfA65_Y zxH7NBq$zN2dTSSzqe$(vZmMbe0VhS=`3j(op0O%!%vA7qRsMrCqYjv%O4EKeM(gVL z)KbN&c%xcsHE=Sq_FzJ*rG)t58X;S6iDG-vf13I(WMQO_7#{TK`;l9de8gY%g{N90 zyi5(Nw>95i+$t7EM~Vr$A)N|Ghl{NXospuUuzP@bQ2%nqgh^ZKiEDhrAAQF%AtN)h z_xQ;Z#*8gI-$;xP9+KT{T+Sr^`lXfL;!G+0*eJf_gWuIFoZC=rT4)FsPX(t9c~p~0 zg_nXwQ*d18X%k+UlreGic)aU5aqQFyg<=D7BTEWx!|cJ0x8lbZ$BQj%-s$W*ZESY$ zjENId{!t~fgvJ!U6(V+~+9C?8L&Wf{k)h&9zpc(DVw`U4!DeEbPt&Kobm;cd*qK>V z$4;A;GI+w)R*|Bgj`a#|SeVgLY+~?Y-8#LcnCx5leY7|;IPGcg%#=2wN8Bp46-}Z} z2rPWDo!B8*#;qtFTDqd}lXhaq2HFO{mI`9wRj}7Bz%ocjL1AQjv1_ol(_fPoPG~Q7 z4A!1jXlZ)kCx8RAklNI-@IrgBOR%=%ucfJlZ90e@>lVaob!2o9yEf3ag0ysMPT{%^ zVut|jmOEs9;e`%jmjG=u&a}QTsw1RpJO5f5SU900TBdFMYiU7f;ku46gtqaor8^5N z!CqI}LGD%<87p?JJ3}3IGYT_625TW*?ny=EZH1r2igs~9VVgK4YYRV#6ZhyUqYGc` T1O-pWDARK@vGB#VV)Oq8Fbb`e delta 28508 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 wy6p3^%Ug2Zi5Bf*dQNbAkP|uYv= raise SIGINT + * + */ + + #include #include // sudo apt-get install libncurses5-dev #include @@ -7,9 +14,9 @@ #include #include #include -#include "ui/view_main.h" +#include "ui/view_selection.h" #include "ui/view_info.h" -#include "drv/b15f.h" +//#include "drv/b15f.h" // global error message std::string ERR_MSG; @@ -46,7 +53,7 @@ void signal_handler(int signal) void init() { // init b15 driver - B15F::getInstance(); + //B15F::getInstance(); // init all ncurses stuff initscr(); @@ -108,10 +115,11 @@ void show_info(int) void show_main(int) { - ViewMain* view = new ViewMain(); + ViewSelection* view = new ViewSelection(); view->setTitle("B15F - Command Line Interface"); - view->addCall(&show_info); - view->addCall(&finish); + view->addChoice("[ Informationen ]", &show_info); + view->addChoice("", nullptr); + view->addChoice("[ Beenden ]", &finish); view->repaint(); win_stack.push_back(view); diff --git a/driver/main b/driver/main deleted file mode 100755 index 0cb40b6626a65986221f2720800b34206ad5117c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61936 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 diff --git a/driver/ui/view.cpp b/driver/ui/view.cpp index b1ea7cd..cc50010 100644 --- a/driver/ui/view.cpp +++ b/driver/ui/view.cpp @@ -23,11 +23,24 @@ WINDOW* View::getWinContext() return win; } -void View::addCall(std::function call) +// from: https://stackoverflow.com/a/37454181 +std::vector View::str_split(const std::string& str, const std::string delim) { - calls.push_back(call); + std::vector tokens; + size_t prev = 0, pos = 0; + do + { + pos = str.find(delim, prev); + if (pos == std::string::npos) pos = str.length(); + std::string token = str.substr(prev, pos-prev); + if (!token.empty()) tokens.push_back(token); + prev = pos + delim.length(); + } + while (pos < str.length() && prev < str.length()); + return tokens; } + void View::setTitle(std::string title) { this->title = title; @@ -59,20 +72,3 @@ void View::repaint() refresh(); wrefresh(win); } - -// from: https://stackoverflow.com/a/37454181 -std::vector View::str_split(const std::string& str, const std::string delim) -{ - std::vector tokens; - size_t prev = 0, pos = 0; - do - { - pos = str.find(delim, prev); - if (pos == std::string::npos) pos = str.length(); - std::string token = str.substr(prev, pos-prev); - if (!token.empty()) tokens.push_back(token); - prev = pos + delim.length(); - } - while (pos < str.length() && prev < str.length()); - return tokens; -} diff --git a/driver/ui/view.h b/driver/ui/view.h index 94dda53..7c8fc31 100644 --- a/driver/ui/view.h +++ b/driver/ui/view.h @@ -19,14 +19,11 @@ public: static void setWinContext(WINDOW* win); static WINDOW* getWinContext(void); - - virtual void addCall(std::function call); + static std::vector str_split(const std::string& str, const std::string delim); - void setSize(int width, int height); - void setTitle(std::string title); + virtual void setTitle(std::string title); virtual void repaint(void); - static std::vector str_split(const std::string& str, const std::string delim); virtual void draw(void) = 0; virtual std::function keypress(int& key) = 0; @@ -38,9 +35,8 @@ protected: std::string title; std::vector> calls; - constexpr static int KEY_ENT = 10; - static WINDOW* win; + constexpr static int KEY_ENT = 10; }; #endif // VIEW_H diff --git a/driver/ui/view_info.cpp b/driver/ui/view_info.cpp index f75c64e..b94ff4e 100644 --- a/driver/ui/view_info.cpp +++ b/driver/ui/view_info.cpp @@ -2,6 +2,7 @@ ViewInfo::ViewInfo() { + calls.push_back(nullptr); } void ViewInfo::setText(std::string text) @@ -14,6 +15,11 @@ void ViewInfo::setLabelClose(std::string label) this->label_close = label; } +void ViewInfo::setCall(std::function call) +{ + calls[0] = call; +} + void ViewInfo::draw() { int li = 0; @@ -30,7 +36,6 @@ void ViewInfo::draw() std::function ViewInfo::keypress(int& key) { - std::function ret = nullptr; switch(key) { @@ -53,5 +58,5 @@ std::function ViewInfo::keypress(int& key) default: break; } - return ret; + return calls[0]; } diff --git a/driver/ui/view_info.h b/driver/ui/view_info.h index da811d3..755dfe4 100644 --- a/driver/ui/view_info.h +++ b/driver/ui/view_info.h @@ -8,11 +8,12 @@ class ViewInfo : public View public: ViewInfo(void); virtual void setText(std::string text); - virtual void setLabelClose(std::string label); + virtual void setLabelClose(std::string label);; + virtual void setCall(std::function call); virtual void draw(void) override; virtual std::function keypress(int& key) override; -private: +protected: std::string text; std::string label_close; int close_offset_x = 0; diff --git a/driver/ui/view_main.cpp b/driver/ui/view_selection.cpp similarity index 66% rename from driver/ui/view_main.cpp rename to driver/ui/view_selection.cpp index e1348e4..c6cd98b 100644 --- a/driver/ui/view_main.cpp +++ b/driver/ui/view_selection.cpp @@ -1,6 +1,6 @@ -#include "view_main.h" +#include "view_selection.h" -void ViewMain::draw() +void ViewSelection::draw() { for(size_t i = 0; i < choices.size(); i++) @@ -13,16 +13,26 @@ void ViewMain::draw() } } -std::function ViewMain::keypress(int& key) +void ViewSelection::addChoice(std::string name, std::function call) +{ + choices.push_back(name); + calls.push_back(call); +} + +std::function ViewSelection::keypress(int& key) { std::function ret = nullptr; switch(key) { case KEY_UP: - selection = (selection - 1) % choices.size(); + do + selection = (selection - 1 + choices.size()) % choices.size(); + while(!choices[selection].length() && choices.size()); break; case KEY_DOWN: - selection = (selection + 1) % choices.size(); + do + selection = (selection + 1) % choices.size(); + while(!choices[selection].length() && choices.size()); break; case KEY_MOUSE: { @@ -35,7 +45,7 @@ std::function ViewMain::keypress(int& key) size_t row_start = start_y + choice_offset_y; size_t mouse_x = event.x, mouse_y = event.y; for(size_t i = 0; i < choices.size(); i++) - if(mouse_y == row_start + i && mouse_x >= column_start && mouse_x < column_start + choices[i].length()) + if(choices[i].length() && mouse_y == row_start + i && mouse_x >= column_start && mouse_x < column_start + choices[i].length()) { if(selection == i || event.bstate & BUTTON1_DOUBLE_CLICKED) hit = true; diff --git a/driver/ui/view_main.h b/driver/ui/view_selection.h similarity index 54% rename from driver/ui/view_main.h rename to driver/ui/view_selection.h index 4c7935d..5079b2f 100644 --- a/driver/ui/view_main.h +++ b/driver/ui/view_selection.h @@ -1,24 +1,24 @@ -#ifndef VIEW_MAIN_H -#define VIEW_MAIN_H +#ifndef VIEW_SELECTION_H +#define VIEW_SELECTION_H #include #include #include "view.h" -class ViewMain : public View +class ViewSelection : public View { public: virtual void draw(void) override; + virtual void addChoice(std::string name, std::function call); virtual std::function keypress(int& key) override; + -private: +protected: + size_t selection = 0; + std::vector choices; + constexpr static int choice_offset_x = 2; constexpr static int choice_offset_y = 3; - size_t selection = 0; - const std::vector choices = { - "[ Informationen ]", - "[ Beenden ]" - }; }; -#endif // VIEW_MAIN_H +#endif // VIEW_SELECTION_H