From 8b67f882dc6cc3244826a9aa23c49ccca17de6a8 Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Thu, 8 May 2025 20:57:47 +0100 Subject: [PATCH] FINALLY fixed the backspace problem. --- addbook.rex | 1 - app/appui.cls | 36 ++++++++++++++++++++++++++++-------- db/contacts.sqlite | Bin 10240 -> 10240 bytes 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/addbook.rex b/addbook.rex index db73b66..16e7ce0 100755 --- a/addbook.rex +++ b/addbook.rex @@ -68,4 +68,3 @@ Exit ::requires 'ooSQLite.cls' ::requires "rxunixsys" LIBRARY ::requires 'ncurses.cls' - diff --git a/app/appui.cls b/app/appui.cls index d2e96e8..856f0e6 100644 --- a/app/appui.cls +++ b/app/appui.cls @@ -186,7 +186,7 @@ self~dropWindow(formwin) RETURN END - phone = self~getInputField(formwin, 5, 14, 15) + phone = self~getInputField(formwin, 5, 10, 15) if phone = .nil then do self~dropWindow(formwin) RETURN @@ -196,7 +196,7 @@ self~dropWindow(formwin) RETURN END - email = self~getInputField(formwin, 6, 14, 30) + email = self~getInputField(formwin, 6, 10, 30) if email = .nil then do self~dropWindow(formwin) RETURN @@ -397,7 +397,6 @@ self~setupMainMenu(win) menuwin~refresh() - RETURN /************************ @@ -410,17 +409,23 @@ win~curs_set(1) /* Show cursor */ win~keypad(1) /* Enable function keys and arrow keys */ win~echo() /* Show typed characters */ - /* win~raw */ + win~raw buffer = "" + blank_line = copies(" ", maxlen) /* String of spaces for clearing the line */ do forever key = win~getch() + + decimalKey = C2D(key) + /* Debug: Display key decimal value */ + /* win~mvaddstr(12, 2, "Key pressed (decimal): " || decimalKey || " ") */ + + select when key = D2C(27) then do /* ESC key */ win~curs_set(0) /* Hide cursor */ win~noecho() /* Stop showing typed characters */ - win~mvaddstr(8, 2, "Decimal: "C2D(key) ) return .nil /* Return nil to indicate cancellation */ end when key = D2C(10) | key = D2C(13) then do /* Enter key */ @@ -428,12 +433,14 @@ win~noecho() /* Stop showing typed characters */ return buffer /* Return the entered text */ end - when key = D2C(8) | key = D2C(127) then do /* Backspace */ + when decimalKey = 3290675 then do + /* when key = D2C(8) | key = D2C(26) | key = D2C(127) */ + /* I don't know why the standard ASCII codes don't work! */ if buffer~length > 0 then do buffer = buffer~left(buffer~length - 1) win~move(y, x) - win~addstr(buffer || " ") /* Erase the last character */ - win~move(y, x + buffer~length - 1) + win~addstr(buffer || " ") + win~move(y, x + buffer~length) end end otherwise do @@ -533,6 +540,19 @@ end return + ::METHOD stripChar263 + use arg inputString + + outputString = "" + + do i = 1 to inputString~length + char = inputString~substr(i, 1) + if C2D(char) \= 263 then + outputString = outputString || char + end + + return outputString~changeStr("263", "") + ::METHOD findInArray use arg array, item do i = 1 to array~items diff --git a/db/contacts.sqlite b/db/contacts.sqlite index e81d6e08a3cf0e00966df90a830e79c7e87fce51..a75cbd5ff3058c72ac23bfc3bbc43fdd9cb3aea0 100644 GIT binary patch literal 10240 zcmeHN&5zs06(4GLwRTX&FjBS`Wjx1=sp+re5(m{6RU9MKiN?vQVt`~5-pd_wV ziA2g0)neNMwVk#HqeU+TdMVILiXugT9(yQ|0!7iHz4Vwvf%cX^p!a_KW=MUIOBbnY zA8d;w=?#A~@6DSxeB|&w?cUgK+lF{(^}D()%4CiR0$CG9LWH*oAuqUJ3OeV0LHHqz zDi5cSapkkQdDek(6S5%uOL$HAGOs@!KXdo?=N6*Lq;S7&>-COdboF-UKyNnt#$aF! ze5dp4Rjp9d#9HCnwkG--#mnucSgO>tqE;1ms-<$Fx-Y(~?TdxI+VxTetYxiITWVOQ ztvBq0N#`Z|xMzqp?N)7xi*%}+*Q;8oSm6>bPnZ&7Rom36T4i0^6gMo2pXqXMdcS=1I^EF;J^{%l5&cwZ&!a{U$QMmsdE^}no5e<2yjL^?% znZtH}U>~rd90PQ8&uOD?=(f>3fP2pvEdJy_O-Qy)j_D6-@rGFy#i1uIHRXrOfiHI!M_BX?1H7m>Ox=97$ zlhsvO*4dHH$_|)L>=g;0yqHo{Ij_p;00{EGCMO}k-WZEcp=KDy;o;#J zYPDKE=A4?%2SAYbV$vt?oBSBdVnca#%cv>hczM%mS_y!_ z`+d&K=Oxy4Ha*eTF{Mg=UIu~pokW7!gcV0`5h7R_op~jt6*c9P#G!mXOwKRLau|7;RB*G5?>V4+#A${e=FUKA?SG-lNw>CG>qcR@EmzYV$$YJ*+_?Ff-81tq0i zalhCuW^uR)oc{tA@2=`TQ;oBj-xx#>@Y$ZDb0ZMp9%YrVc@ zTPBOuEH|t!I(%J-mDgH&uV?fh+U>OCCFuQFJo*xIz}Twm(GMLp9%kOHsasI)c);I& zmb;A>UVmPLK5O5wtX|t-vq;P{c}3UTC-QhV?}XzBx(SP``5gpuEK~1HI{Pfc{NIhu zvD)mISzu;?=g0!g|L4i;1fPEj*F$g6(8d{b{cK_*r^R{MDU$z&%#OPpkXy#pkWP7 zyYF^<3>lyZ`3U}BA@mRQhjf>I2~~eNc|&+8G8O-C9y^<<@$b7VI*Y`>bdXgB=!uNx z5l~gr@^p;Tg$N0COR_9Cbd$wly$J=J4tlJ?w5%bgjDH8cZWjz2)Fj!CHt-`9i!dgv{!P7m*w|9Gb2$5#jkJ3(oHOLSxjt@-B9{2?2)RZUl0f7vHz;mTbEbxwm_M&0+TP%M$1`9kx zICYOk22}Rlzg(!gg*}X#36J)F$-v;O#ht$I=ayE#V|Q@2EskkdE?YwWz=8F{RiLcXxRV& literal 10240 zcmeHN-*4O26~5%PWhbed1*zj0hF7Lp>KKkQiqtPM&SJ%(f26kK*-9609SmBc6}FNn zi&R#1z}loQLxDXN=pRsEz#azdt&c^40RuYheFOF|>?Ln|$=e<_?7Nq=C{jwAxL$(< z5=D{xc+Nfdo_o*b<@vPr<5kYA}$xKwm% zo>}yELg7nZt8PgJ<4)lcFVa6`vp2QHZ>(YDD$?}?>aSWr`D|QS`9aHF%W5258Qfi6eFb^ zpik+UJ-gw0JIs{tfQlKpEH*6Dvr0P%&%(-@u~o>gZJ-|)^S4(E(!%Xc^mJjTedkiM zUU~-c=@CR>Li~)-KhfXNEqX@$oA{adQ}HZ$_h6$R(XYvUVmu*S^-~ElJ))|GyOy-R zvMM>d?^;Dqk(KnU%)XMM=xO@4_=nL+Rb6UWoZ@s>_I>inU=|F&Ryl(>)-l>8ypz&aSi8Y?Q1o&>jo<;t}S==hp)|`D_0U^46R=_Yo*p& zksqpNI0hgo>*=hXiufXca(aS{!}M0&uGgKl;*w*>G*ek!)jFFk>m15z(8O@vva9uq zg+Q_5is_iYpva(HE7NOGME`+9|I_zC-vckC2ToHuBg9sm zCr*iUN{B4iUVTNNlfuCgd$U+KOFzB>;L3nL@f zVD7XqI`Jd6I!Y=jtTfb#R|bhNK6CYY!+FoD%_L{j>GW(;NvaC&o;|^CUYJ{RcI}Fl zRMgp2Iy0NiY4Z4Sc4z9!I(rqbXtFk|Y1ot4#*X3E*adwV3yN0zj;zTO!`ze>=xEvu zO!#`5c76yqr)P37Rk48M3zIXclq6@hq%3QwZPt(f*9iS9{XPAdzC%^|8WqHUe|K)| zTk3n@`FNl!fbo)nAlaSd;g-CL1-R*zgIAFGGE4kiE;`jI7Ic%>=KS|Uvr?{>gV)*l zdc*OY+JWE&7J%c|f{1>s*i-^yV}`zLBD!7v(r~$2EaR==4b*1-7mic6EoOLnkd?O- zM0;2s7mJ#nLedR&%za}WS^NjNx#!afeXD&B^gZz0Jiy|Ako{<)kTCBB-FP)YMy^8Iw~*Ep_GQ*`!V{9HA*ax3CSV@2qMx^YW||>GVe$|( zLwW!PpPgpN4f-v7cA7y?z~CWi2KqjcPo7lOJKLSE11*8fb*w)*lpRJbA45y{Tu4?& zpGC%o%pm<36p^*x^3292=NoJ=DN(^>RtFH#{JQrrR5J4Z{(jVY8Z=AHRUASo*S}rxjEMKZ z{|Q7CL{0o1JwtEOuRAw#r@ghK{i#kKk#{0Nncqe~zm?IG;T#Y` za}wAg3`W;1?U^py_e$(MR&c758S=FmB;FG?Phz^5h>5GZ63$Od9G=OHj;iXO(`@Y7 z_aamtCa+uG;jP;=tSN_QV{NPI|?Q>Rpw;?q%0m{ZXWAtT7map>Fi zIsMR|f+pgf4puCTYJZGy=uI>Z^<&Ja9dSrfmobJTqcVWhsRTI*^hIRazpwq7yRN#Qa$01ka zP!P*()qf28u&^KB0*U_NXgqMpep}-S7LF%A@QT`xg63NT?wCHylf7k>`!`>jnNvHW)P&io+>CCQ(HW^7zF9)!q7L1 z875vfgANtH${{8SjH91-J%BKYbk~bR5btUQW)sZlA)k+i1<>X53BndzPdn574|mh( A)Bpeg