taro-ctl: eliminate puts calls and don't convert from IO::Memory in MblazeProxy; taro-ls: various optimizations, reset scrollbar when changing mbox

This commit is contained in:
Iris Lightshard 2023-03-30 21:13:35 -06:00
parent 62a4845edd
commit d2a3e71fd6
Signed by: nilix
GPG key ID: 3B7FBC22144E6398
2 changed files with 69 additions and 71 deletions

View file

@ -117,9 +117,7 @@ module Taro
end
def write_msg(msgtype : MsgType, data : Slice)
puts "original message size: " + data.size.to_s
msgsz = UInt16.new(data.size > MSG_SIZES[msgtype] ? MSG_SIZES[msgtype] : data.size)
puts "truncated message size: " + msgsz.to_s
msgtype.value.to_io(@stdin_w, IO::ByteFormat::BigEndian)
msgsz.to_io(@stdin_w, IO::ByteFormat::BigEndian)
@ -163,7 +161,6 @@ module Taro
break
end
end
puts data
return Mesg.new(msgType, data)
end
@ -181,14 +178,13 @@ module Taro
@@search_regex
end
private def run_cmd(cmdtxt : String) : String
puts cmdtxt
private def run_cmd(cmdtxt : String) : IO::Memory
io = IO::Memory.new
Process.run(cmdtxt, shell: true, output: io)
return io.to_s
return io
end
def list_mail : String
def list_mail : IO::Memory
if @@search_regex != ""
return search_mail(@@search_regex, false, false)
end
@ -201,7 +197,7 @@ module Taro
return run_cmd(cmd)
end
def list_mboxes : String
def list_mboxes : IO::Memory
cmd = "echo 'INBOX' ; for x in $(mdirs -a #{MBOX_ROOT} | sort | grep -v INBOX); do echo ${x##{MBOX_ROOT}/}; done"
return run_cmd(cmd)
@ -233,7 +229,7 @@ module Taro
run_cmd(cmd)
end
def search_mail(query : String, body : Bool, case_sensitive : Bool) : String
def search_mail(query : String, body : Bool, case_sensitive : Bool) : IO::Memory
query = query.gsub("'", "\'")
@@search_regex = query
cmd = "mlist #{MBOX_ROOT}/#{@@mailbox} | magrep #{case_sensitive ? "" : "-i"} #{body ? "/" : "*"}:'#{query}' | msort -dr | uniq | mseq -S | mscan"

View file

@ -58,7 +58,7 @@
@refresh [ &mboxes $1 &list $1 &fg $1 &btns $1 &textbox $1 &etc $1 ]
@resizing [ $1 &x $2 &y $2 &dx $2 &dy $2 ]
@decoding [ $1 &msg_type $1 &counting $1 &count $2 &processed $2 ]
@decoding [ $1 &msg_type $1 &counting $1 &count $1 &count2 $1 &processed $2 ]
@textbox [ &mode $1 &len $1 &cursor $1 &msg $2 &searching $1 ]
@mboxes [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1
&top $2 &height $1 &select_index $2 &select_len $2
@ -75,7 +75,7 @@
;metadata #06 DEO2
( theme )
( default theme )
#028d .System/r DEO2
#0a8d .System/g DEO2
#098d .System/b DEO2
@ -164,7 +164,7 @@ BRK
BRK
&count_2
.Console/read DEI .decoding/count INC STZ
.Console/read DEI .decoding/count2 STZ
#00 .decoding/counting STZ
( handle empty payload )
@ -207,7 +207,7 @@ JMP2r
( -== message out ==- )
@send_get_mbox ( -> )
@send_get_mbox ( -- )
#01 .Console/write DEO
;selected_mbox strlen SWP .Console/write DEO .Console/write DEO
@ -217,12 +217,14 @@ JMP2r
#0001 .list/select_len STZ2
#0000 .list/top STZ2
.list update_sb_pos
#00 .textbox/searching STZ
#01 .refresh/etc STZ
JMP2r
@send_mark_all_read ( -> )
@send_mark_all_read ( -- )
MARK_ALL_READ .Console/write DEO
#00 .Console/write DEOk DEO
@ -230,7 +232,7 @@ JMP2r
JMP2r
@send_search ( -> )
@send_search ( -- )
SEARCH_MAIL .Console/write DEO
;textbox_text strlen SWP .Console/write DEO .Console/write DEO
@ -240,7 +242,7 @@ JMP2r
JMP2r
@send_refile ( -> )
@send_refile ( -- )
REFILE_MAIL .Console/write DEO
#0004 ;textbox_text strlen ADD2 SWP .Console/write DEO .Console/write DEO
@ -251,7 +253,7 @@ JMP2r
JMP2r
@send_trash ( -> )
@send_trash ( -- )
TRASH_MAIL .Console/write DEO
#0004 SWP .Console/write DEO .Console/write DEO
@ -261,7 +263,7 @@ JMP2r
JMP2r
@send_reader ( -> )
@send_reader ( -- )
( reset the mouse state since if a window opens over the uxn window mid-click
and steals focus, the click never releases until we click the button again )
@ -273,7 +275,7 @@ JMP2r
JMP2r
@send_compose ( -> )
@send_compose ( -- )
( reset the mouse state since if a window opens over the uxn window mid-click
and steals focus, the click never releases until we click the button again )
@ -449,6 +451,7 @@ JMP2r
&no_scroll_up
&end
STHrk update_sb_pos
( onchange )
STHr ROT ROT JSR2
@ -457,7 +460,7 @@ JMP2r
JMP2r
@handle_textbox ( -> )
@handle_textbox ( -- )
.Controller/key DEI DUP #00 EQU ,&no_key JCN
DUP check_enter_or_esc #01 EQU ,&no_btn JCN
@ -497,21 +500,21 @@ JMP2r
.textbox/cursor LDZ .textbox/len LDZ NEQ ,&its_complicated JCN
.textbox/cursor LDZ #01 SUB .textbox/cursor STZ
.textbox/len LDZ #01 SUB .textbox/len STZ
#00 ;textbox_text .textbox/cursor LDZ #00 SWP ADD2 STA
#00 ;textbox_text #00 .textbox/cursor LDZ ADD2 STA
JMP2r
&its_complicated
( otherwise loop through characters from cursor to len,
and copy them to their location - 1 )
.textbox/len LDZ #01 ADD .textbox/cursor LDZ &loop EQUk ,&end JCN
DUP #00 SWP ;textbox_text ADD2 LDA STH
.textbox/len LDZ INC .textbox/cursor LDZ &loop EQUk ,&end JCN
#00 OVR ;textbox_text ADD2 LDA STH
DUP #01 SUB STHr SWP #00 SWP ;textbox_text ADD2 STA
INC
,&loop JMP &end POP2
( and then decrement counters and set the null byte )
.textbox/cursor LDZ #01 SUB .textbox/cursor STZ
.textbox/len LDZ #01 SUB .textbox/len STZ
#00 ;textbox_text .textbox/len LDZ #00 SWP ADD2 STA
#00 ;textbox_text #00 .textbox/len LDZ ADD2 STA
JMP2r
@ -521,9 +524,9 @@ JMP2r
( if cursor = len, then add the charater, increment both counters, and add a null byte )
.textbox/cursor LDZ .textbox/len LDZ NEQ ,&its_complicated JCN
STHr
;textbox_text .textbox/cursor LDZ #00 SWP ADD2 STA
;textbox_text #00 .textbox/cursor LDZ ADD2 STA
.textbox/len LDZk INC SWP STZ
#00 ;textbox_text .textbox/len LDZ #00 SWP ADD2 STA
#00 ;textbox_text #00 .textbox/len LDZ ADD2 STA
.textbox/cursor LDZk INC SWP STZ
JMP2r
@ -531,13 +534,13 @@ JMP2r
( otherwise loop through characters from len to cursor,
and copy them to their location + 1 )
.textbox/cursor LDZ #01 SUB .textbox/len LDZ &loop EQUk ,&end JCN
DUP #00 SWP ;textbox_text ADD2 LDA STH
#00 OVR ;textbox_text ADD2 LDA STH
DUP INC STHr SWP #00 SWP ;textbox_text ADD2 STA
#01 SUB
,&loop JMP &end POP2
STHr
( and put the character at the cursor locaton, then increment the counts )
;textbox_text .textbox/cursor LDZ #00 SWP ADD2 STA
;textbox_text #00 .textbox/cursor LDZ ADD2 STA
.textbox/len LDZk INC SWP STZ
.textbox/cursor LDZk INC SWP STZ
JMP2r
@ -600,11 +603,9 @@ JMP2r
BRK
@mouse_event_buttons ( numBtns -- )
@mouse_event_buttons ( numbtns -- )
STH
STHkr #00 &while EQUk ,&end JCN
STHk #00 &while EQUk ,&end JCN
DUP .btn_colors ADD
DUP LDZ #01 NEQ ,&continue JCN
#01 .refresh/btns STZ
@ -615,7 +616,7 @@ BRK
,&while JMP &end POP2
.Mouse/x DEI2 #0008 LTH2 ,&done JCN
.Mouse/x DEI2 #0008 SUB2 [ STHkr #00 SWP #40 SFT2 #0001 SUB2 ] GTH2 ,&done JCN
.Mouse/x DEI2 #0008 SUB2 [ #00 STHkr #40 SFT2 #0001 SUB2 ] GTH2 ,&done JCN
.Mouse/y DEI2 .Screen/height DEI2 #0030 SUB2 LTH2 ,&done JCN
.Mouse/y DEI2 .Screen/height DEI2 #0020 SUB2 GTH2 ,&done JCN
@ -666,7 +667,7 @@ JMP2r
JMP2r
@mouse_event_list ( rightclickhanlder* clickhandler* list refresh ypos* multiselect -- )
@mouse_event_list ( rightclickhanlder* clickhandler* list refresh ypos* multiselect_mask -- )
,&multi STR
,&y STR2
@ -721,7 +722,7 @@ JMP2r
JMP2r
@mouse_select_on_click ( multi ypos list -- )
@mouse_select_on_click ( multi? ypos* list -- )
STH
,&y STR2
@ -751,7 +752,7 @@ JMP2r
( clear the previous selection with null bytes )
#ff #00 &clear_mbox EQUk ,&ready JCN
DUP #00 SWP ;selected_mbox ADD2 #00 ROT ROT STA
#00 OVR ;selected_mbox ADD2 #00 ROT ROT STA
INC ,&clear_mbox JMP &ready POP2
( get position of the current selection )
@ -778,14 +779,14 @@ JMP2r
JMP2r
@enter_search_mode ( -> )
@enter_search_mode ( -- )
ENTRY_SEARCH reset_textbox
;search_lbl .textbox/msg STZ2
JMP2r
@enter_refile_mode ( -> )
@enter_refile_mode ( -- )
ENTRY_REFILE reset_textbox
;refile_lbl .textbox/msg STZ2
@ -816,8 +817,7 @@ JMP2r
@try_scroll_up_mouse ( list -- )
STH
STHkr LB_LEN LDZ2 #00 STHkr LB_HEIGHT LDZ LTH2 ,&no_scroll_up JCN
STHk LB_LEN LDZ2 #00 STHkr LB_HEIGHT LDZ LTH2 ,&no_scroll_up JCN
STHkr LB_TOP LDZ2 #0000 EQU2 ,&no_scroll_up JCN
STHkr LB_TOP LDZ2 #0001 SUB2 STHkr LB_TOP STZ2
STHkr update_sb_pos
@ -828,8 +828,7 @@ JMP2r
@try_scroll_down_mouse ( list -- )
STH
STHkr LB_LEN LDZ2 #00 STHkr LB_HEIGHT LDZ LTH2 ,&no_scroll_down JCN
STHk LB_LEN LDZ2 #00 STHkr LB_HEIGHT LDZ LTH2 ,&no_scroll_down JCN
STHkr LB_TOP LDZ2 #00 STHkr LB_HEIGHT LDZ ADD2 STHkr LB_LEN LDZ2 EQU2 ,&no_scroll_down JCN
STHkr LB_TOP LDZ2k INC2 ROT STZ2
STHkr update_sb_pos
@ -888,7 +887,7 @@ JMP2r
BRK
@draw_search_indicator ( -> )
@draw_search_indicator ( -- )
.textbox/searching LDZ #00 EQU ,&nothing JCN
;search_indicator #0000 .Screen/height DEI2 #0008 SUB2 #01 draw_str
@ -900,16 +899,16 @@ BRK
#01 .Screen/sprite DEO
JMP2r
@draw_bone ( -> )
@draw_bone ( -- )
#0008 .textbox/cursor LDZ #00 SWP #30 SFT2 ADD2 .Screen/x DEO2
#0008 #00 .textbox/cursor LDZ #30 SFT2 ADD2 .Screen/x DEO2
.Screen/height DEI2 #0018 SUB2 .Screen/y DEO2
;bone .Screen/addr DEO2
#05 .Screen/sprite DEO
JMP2r
@clear_textbox ( -> )
@clear_textbox ( -- )
;blank .Screen/addr DEO2
.Screen/width DEI2 #0008 &while EQU2k ,&end JCN
@ -922,7 +921,7 @@ JMP2r
JMP2r
@clear_fg ( -> )
@clear_fg ( -- )
;blank .Screen/addr DEO2
.Screen/width DEI2 #0000 &whilex EQU2k ,&endx JCN
@ -957,7 +956,7 @@ JMP2r
&top $2
&height $2
@draw_resize_handle ( -> )
@draw_resize_handle ( -- )
.Screen/width DEI2 #0008 SUB2 .Screen/x DEO2
.Screen/height DEI2 #0008 SUB2 .Screen/y DEO2
@ -976,9 +975,9 @@ JMP2r
@shouldnt_draw_word ( list -- bit )
DUP LB_OFFSET LDZ2 DUP2
DUP LB_OFFSET LDZ2
( above top of view )
STH2 ROT STHk LB_TOP LDZ2 LTH2 ,&clear_rtn JCN
STH2k ROT STHk LB_TOP LDZ2 LTH2 ,&clear_rtn JCN
( below bottom of view )
STHr DUP LB_TOP LDZ2 ROT LB_HEIGHT LDZ #00 SWP ADD2 #0001 SUB2 STH2r SWP2 GTH2 ,&no_draw JCN
@ -1003,7 +1002,7 @@ JMP2r
JMP2r
@get_entry_color ( list -- colorByte )
@get_entry_color ( list -- colorbyte )
STHk LB_OFFSET LDZ2
STHkr LB_SELECT_IDX LDZ2
@ -1035,7 +1034,7 @@ JMP2r
JMP2r
@draw_listbox ( .list ypos* -- )
@draw_listbox ( list ypos* -- )
#0000 .Screen/x DEO2
( ypos ) .Screen/y DEO2
@ -1068,7 +1067,7 @@ JMP2r
JMP2r
@draw_cursor ( -> )
@draw_cursor ( -- )
.Mouse/x DEI2 .Screen/x DEO2
.Mouse/y DEI2 .Screen/y DEO2
@ -1077,7 +1076,7 @@ JMP2r
JMP2r
@draw_scrollbar ( list ypos -- )
@draw_scrollbar ( list ypos* -- )
,&y STR2
STH
@ -1125,7 +1124,7 @@ JMP2r
JMP2r
@draw_str ( addr x y color -- )
@draw_str ( addr* x* y* color -- )
STH ( save color )
.Screen/y DEO2 ( set y )
@ -1170,7 +1169,9 @@ JMP2r
JMP2r
@debug_u8 ( byte -- )
#00 SWP debug_u16
JMP2r
@debug_u16 ( short* -- )
@ -1192,14 +1193,15 @@ JMP2r
@load_theme ( -- )
;theme_file .File0/name DEO2
#0006 .File0/length DEO2
;theme_data .File0/read DEO2
.File0/success DEI2 #0006 NEQ2 ,&no_theme_file JCN
;theme_data LDA2 .System/r DEO2
;theme_data #0002 ADD2 LDA2 .System/g DEO2
;theme_data #0004 ADD2 LDA2 .System/b DEO2
;theme_file .File0/name DEO2
#0006 .File0/length DEO2
;theme_data .File0/read DEO2
.File0/success DEI2 #0006 NEQ2 ,&no_theme_file JCN
;theme_data/r LDA2 .System/r DEO2
;theme_data/g LDA2 .System/g DEO2
;theme_data/b LDA2 .System/b DEO2
&no_theme_file
JMP2r
@load_font ( -- )
@ -1220,9 +1222,10 @@ JMP2r
@refile_lbl "REFILING: 20 "type 20 "destination 20 "and 20 "press 20 "{enter}; 20 "{esc} 20 "to 20 "go 20 "back 00
@resize_handle [ e2c2 aa1a 3a02 fe00 ]
@cursor [ f8e0 e090 8804 0000 ]
@scrollbar [ 0707 0707 0707 0707 ]
@blank [ 0000 0000 0000 0000 ]
@cursor [ f8e0 e090 8804 0000 ]
@scrollbar [ 0707 0707 0707 0707 ]
@bone [ e040 4040 4040 40e0 ]
@blank [ 0000 0000 0000 0000 ]
@refresh_button [
0000 0708 1010 1000 0000 e010 3e1c 0800
@ -1254,17 +1257,16 @@ JMP2r
0408 191e 1d00 0000 4080 00a8 5000 0000
]
@bone [ e040 4040 4040 40e0 ]
@metadata 00 "taro 0a
"v0.2.0 0a
@metadata [ 00 "taro 0a
"v0.2.1 0a
"GUI 20 "for 20 "mblaze 0a
"Derek 20 "Stevens 20 "<nilix@nilfm.cc> 0a 00
]
@selected_mbox "INBOX 00 $f9 ( default mailbox is INBOX, total space #06 + #f9 = #ff bytes )
@font $300
@theme_data $6
@theme_data [ &r $2 &g $2 &b $2 ]
@textbox_text $ff
@word $ff
@list_data $8000
@mbox_data $1000
@list_data $8000