mirror of
https://hacklab.nilfm.cc/taro
synced 2024-10-22 14:31:48 +00:00
implement range selection for listbox
This commit is contained in:
parent
883686d4a2
commit
766a98f43b
1 changed files with 49 additions and 15 deletions
64
taro-ls.tal
64
taro-ls.tal
|
@ -12,6 +12,8 @@
|
||||||
%MID_SEPARATOR { #0008 }
|
%MID_SEPARATOR { #0008 }
|
||||||
%BOTTOM_SECTION { #0040 }
|
%BOTTOM_SECTION { #0040 }
|
||||||
|
|
||||||
|
( listbox helper macros )
|
||||||
|
|
||||||
%LB_DATA { #02 ADD }
|
%LB_DATA { #02 ADD }
|
||||||
%LB_LEN { #04 ADD }
|
%LB_LEN { #04 ADD }
|
||||||
%LB_OFFSET { #06 ADD }
|
%LB_OFFSET { #06 ADD }
|
||||||
|
@ -19,9 +21,10 @@
|
||||||
%LB_TOP { #09 ADD }
|
%LB_TOP { #09 ADD }
|
||||||
%LB_HEIGHT { #0b ADD }
|
%LB_HEIGHT { #0b ADD }
|
||||||
%LB_SELECT_IDX { #0c ADD }
|
%LB_SELECT_IDX { #0c ADD }
|
||||||
%SB_LEN { #0e ADD }
|
%LB_SELECT_LEN { #0e ADD }
|
||||||
%SB_POS { #0f ADD }
|
%SB_LEN { #10 ADD }
|
||||||
%SB_STEP { #11 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
|
|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
|
|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
|
||||||
|
@ -44,10 +47,10 @@
|
||||||
@resizing [ $1 &x $2 &y $2 &dx $2 &dy $2 ]
|
@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 $2 &processed $2 ]
|
||||||
@mboxes [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1
|
@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 ]
|
&sb_len $1 &sb_pos $2 &sb_step $2 ]
|
||||||
@list [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1
|
@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 ]
|
&sb_len $1 &sb_pos $2 &sb_step $2 ]
|
||||||
|
|
||||||
( program )
|
( program )
|
||||||
|
@ -64,6 +67,8 @@
|
||||||
|
|
||||||
;list_data .list/data STZ2
|
;list_data .list/data STZ2
|
||||||
;mbox_data .mboxes/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
|
.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
|
TOP_SECTION #03 SFT2 NIP .mboxes/height STZ
|
||||||
|
@ -72,6 +77,11 @@
|
||||||
;on_screen .Screen/vector DEO2
|
;on_screen .Screen/vector DEO2
|
||||||
;on_mouse .Mouse/vector DEO2
|
;on_mouse .Mouse/vector DEO2
|
||||||
;on_stdin .Console/vector DEO2
|
;on_stdin .Console/vector DEO2
|
||||||
|
;on_key .Controller/vector DEO2
|
||||||
|
BRK
|
||||||
|
|
||||||
|
@on_key ( -> )
|
||||||
|
.Controller/key DEI .Console/error DEO
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
@on_stdin ( -> )
|
@on_stdin ( -> )
|
||||||
|
@ -139,8 +149,8 @@ JMP2r
|
||||||
|
|
||||||
@on_mouse ( -> )
|
@on_mouse ( -> )
|
||||||
|
|
||||||
;mbox_select_handler .mboxes .refresh/mboxes #0000 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 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 LDZ #00 EQU ,&resz_check JCN
|
||||||
( resizing )
|
( resizing )
|
||||||
|
@ -308,15 +318,18 @@ JMP2r
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
@get_entry_color ( list -- colorByte )
|
@get_entry_color ( list -- colorByte )
|
||||||
|
STHk LB_OFFSET LDZ2
|
||||||
|
STHkr LB_SELECT_IDX LDZ2
|
||||||
|
|
||||||
DUP LB_OFFSET LDZ2
|
LTH2 ,&normal JCN
|
||||||
ROT LB_SELECT_IDX LDZ2
|
STHkr LB_OFFSET LDZ2
|
||||||
|
STHkr LB_SELECT_IDX LDZ2 STHkr LB_SELECT_LEN LDZ2 ADD2 #0001 SUB2
|
||||||
NEQ2 ,&normal JCN
|
GTH2 ,&normal JCN
|
||||||
|
POPr
|
||||||
( selected )
|
( selected )
|
||||||
#04 JMP2r
|
#04 JMP2r
|
||||||
&normal
|
&normal
|
||||||
|
POPr
|
||||||
#03
|
#03
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
|
@ -403,8 +416,9 @@ JMP2r
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
|
|
||||||
@mouse_event_list ( clickhandler* list refresh ypos* -- )
|
@mouse_event_list ( clickhandler* list refresh ypos* multiselect -- )
|
||||||
|
|
||||||
|
,&multi STR
|
||||||
,&y STR2
|
,&y STR2
|
||||||
,&r STR
|
,&r STR
|
||||||
STH
|
STH
|
||||||
|
@ -421,7 +435,7 @@ JMP2r
|
||||||
( scroll_up )
|
( scroll_up )
|
||||||
STHkr try_scroll_up_mouse
|
STHkr try_scroll_up_mouse
|
||||||
,&no_scroll JMP
|
,&no_scroll JMP
|
||||||
|
&multi $1
|
||||||
&scroll_down
|
&scroll_down
|
||||||
STHkr try_scroll_down_mouse
|
STHkr try_scroll_down_mouse
|
||||||
|
|
||||||
|
@ -431,7 +445,7 @@ JMP2r
|
||||||
|
|
||||||
( click handler here )
|
( click handler here )
|
||||||
.Mouse/state DEI #01 AND #00 EQU ,&done JCN
|
.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
|
STHr ROT ROT JSR2
|
||||||
#01 ,&r LDR STZ
|
#01 ,&r LDR STZ
|
||||||
JMP2r
|
JMP2r
|
||||||
|
@ -443,6 +457,26 @@ JMP2r
|
||||||
POP2
|
POP2
|
||||||
JMP2r
|
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 -- )
|
@mbox_select_handler ( list -- )
|
||||||
|
|
||||||
#0000 ,&idx STR2
|
#0000 ,&idx STR2
|
||||||
|
|
Loading…
Reference in a new issue