all repos — taro @ 766a98f43b03a5679d48b3b5e948bec469241289

mblaze frontend in uxn + crystal

implement range selection for listbox
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmQWh40ACgkQO3+8IhRO
Y5i2kw//QuxHU7b6WISvfcqscOVmJWUqRv3T0PSmnz5Icg6ABkvQXk6V/viHD2kv
t2PiMtmW+rcCsvUCaTY+4SErbdrYK5i+u2kJiXv/ChK0zaZGSH/cnORTGmleCu/V
EG7T4LgnSP7SiNLBQXcj4gRUdGJIvOWF0h7Fwq3Cm7FroDIu1eHkh8f6DMFLA4Vk
Y+2fMcvgo2ZZeQ4uZf24/pxmCsWJ1nfmjoPI3h6BCeF4U4SmPpeSMI7YpXnPHrHv
tQeddxcjuWDSjNxs/TG1x+FpSqRVDqwuG/jv8Aa0Ci45kzOu4NryebImv8xVpZRn
PtUiI5hi62OIloQUVEEDgUNiFTjEZWYDZ9dAlmYFXMtexSr5AcG8tabMObAaiXVB
VIOQ3HpfxK5Qh9yN6c65pRlBQVlR+pOX4FCnOtwCbWoI+HdsKsoXdx/r3Pqytc8H
6qqBmlepNJ5DHM07W4GpLzJKKIL/1mDM605W4q66tgW0CQ6jG+ntcmC0hyAtP4CF
qlTHhT2YTNxXjmgt3iCrsYt11rWkezS1XTqwPdKrEMWxWe7iATf8oXIS+5NHKckp
LyESwNt5E8/7knYSPWNvGWR6+HPJQOgGgXRalG1y5ElPC22PnRJ1jp8/rsAUfX8l
YNfCEba0TQ6Hh7RyIo2EDcBAkHajsQnBBBc+0gowC4wIi+OLLTM=
=1995
-----END PGP SIGNATURE-----
commit

766a98f43b03a5679d48b3b5e948bec469241289

parent

883686d4a2eadf552b50d399cb6c798d52901b64

1 files changed, 49 insertions(+), 15 deletions(-)

jump to
M taro-ls.taltaro-ls.tal

@@ -12,6 +12,8 @@ %TOP_SECTION { #0040 }

%MID_SEPARATOR { #0008 } %BOTTOM_SECTION { #0040 } +( listbox helper macros ) + %LB_DATA { #02 ADD } %LB_LEN { #04 ADD } %LB_OFFSET { #06 ADD }

@@ -19,9 +21,10 @@ %LB_ELEM_OFFSET { #08 ADD }

%LB_TOP { #09 ADD } %LB_HEIGHT { #0b ADD } %LB_SELECT_IDX { #0c ADD } -%SB_LEN { #0e ADD } -%SB_POS { #0f ADD } -%SB_STEP { #11 ADD } +%LB_SELECT_LEN { #0e ADD } +%SB_LEN { #10 ADD } +%SB_POS { #11 ADD } +%SB_STEP { #13 ADD } |00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 |10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1

@@ -44,10 +47,10 @@ @refresh [ &mboxes $1 &list $1 &fg $1 ]

@resizing [ $1 &x $2 &y $2 &dx $2 &dy $2 ] @decoding [ $1 &msg_type $1 &counting $1 &count $2 &processed $2 ] @mboxes [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1 - &top $2 &height $1 &select_index $2 + &top $2 &height $1 &select_index $2 &select_len $2 &sb_len $1 &sb_pos $2 &sb_step $2 ] @list [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1 - &top $2 &height $1 &select_index $2 + &top $2 &height $1 &select_index $2 &select_len $2 &sb_len $1 &sb_pos $2 &sb_step $2 ] ( program )

@@ -64,6 +67,8 @@ #01c0 .Screen/height DEO2

;list_data .list/data STZ2 ;mbox_data .mboxes/data STZ2 + #0001 .list/select_len STZ2 + #0001 .mboxes/select_len STZ2 .Screen/height DEI2 TOP_SECTION BOTTOM_SECTION ADD2 MID_SEPARATOR ADD2 SUB2 #03 SFT2 NIP .list/height STZ TOP_SECTION #03 SFT2 NIP .mboxes/height STZ

@@ -72,6 +77,11 @@

;on_screen .Screen/vector DEO2 ;on_mouse .Mouse/vector DEO2 ;on_stdin .Console/vector DEO2 + ;on_key .Controller/vector DEO2 +BRK + +@on_key ( -> ) + .Controller/key DEI .Console/error DEO BRK @on_stdin ( -> )

@@ -139,8 +149,8 @@ JMP2r

@on_mouse ( -> ) - ;mbox_select_handler .mboxes .refresh/mboxes #0000 mouse_event_list - ;noop_list_click .list .refresh/list TOP_SECTION MID_SEPARATOR ADD2 mouse_event_list + ;mbox_select_handler .mboxes .refresh/mboxes #0000 #00 mouse_event_list + ;noop_list_click .list .refresh/list TOP_SECTION MID_SEPARATOR ADD2 #04 mouse_event_list .resizing LDZ #00 EQU ,&resz_check JCN ( resizing )

@@ -308,15 +318,18 @@

JMP2r @get_entry_color ( list -- colorByte ) - - DUP LB_OFFSET LDZ2 - ROT LB_SELECT_IDX LDZ2 - - NEQ2 ,&normal JCN + STHk LB_OFFSET LDZ2 + STHkr LB_SELECT_IDX LDZ2 + LTH2 ,&normal JCN + STHkr LB_OFFSET LDZ2 + STHkr LB_SELECT_IDX LDZ2 STHkr LB_SELECT_LEN LDZ2 ADD2 #0001 SUB2 + GTH2 ,&normal JCN + POPr ( selected ) #04 JMP2r &normal + POPr #03 JMP2r

@@ -403,8 +416,9 @@

JMP2r -@mouse_event_list ( clickhandler* list refresh ypos* -- ) +@mouse_event_list ( clickhandler* list refresh ypos* multiselect -- ) + ,&multi STR ,&y STR2 ,&r STR STH

@@ -421,7 +435,7 @@

( scroll_up ) STHkr try_scroll_up_mouse ,&no_scroll JMP - + &multi $1 &scroll_down STHkr try_scroll_down_mouse

@@ -431,7 +445,7 @@

( click handler here ) .Mouse/state DEI #01 AND #00 EQU ,&done JCN - .Mouse/y DEI2 ,&y LDR2 SUB2 #03 SFT2 STHkr LB_TOP LDZ2 ADD2 STHkr LB_SELECT_IDX STZ2 + ,&multi LDR ,&y LDR2 STHkr mouse_select_on_click STHr ROT ROT JSR2 #01 ,&r LDR STZ JMP2r

@@ -442,6 +456,26 @@ #01 ,&r LDR STZ

POPr POP2 JMP2r + +@mouse_select_on_click ( multi ypos list -- ) + STH + ,&y STR2 + .Controller/button DEI #04 AND AND ,&multiselect JCN + #0001 STHkr LB_SELECT_LEN STZ2 + .Mouse/y DEI2 ,&y LDR2 SUB2 #03 SFT2 STHkr LB_TOP LDZ2 ADD2 STHkr LB_SELECT_IDX STZ2 + POPr + JMP2r + &multiselect + ( first_to_last ) + .Mouse/y DEI2 ,&y LDR2 SUB2 #03 SFT2 STHkr LB_TOP LDZ2 ADD2 + DUP2 STHkr LB_SELECT_IDX LDZ2 LTH2 ,&last_to_first JCN + STHkr LB_SELECT_IDX LDZ2 SUB2 INC2 STHkr LB_SELECT_LEN STZ2 + POPr JMP2r + &last_to_first + DUP2 STHkr LB_SELECT_IDX LDZ2 SWP2 SUB2 INC2 STHkr LB_SELECT_LEN STZ2 + STHr LB_SELECT_IDX STZ2 +JMP2r +&y $2 @mbox_select_handler ( list -- )