LIBTUI:Better LBOX / RADIO controls

This commit is contained in:
burniouf 2024-02-02 19:12:51 +01:00
parent 65be4815e2
commit f76765cb13
5 changed files with 85 additions and 69 deletions

Binary file not shown.

View File

@ -53,7 +53,6 @@ CS.START cld
L.LIBTUI .DA LIBTUI
*--------------------------------------
L.SCRN.Title .DA SCRN.Title
L.SCRN.Status .DA SCRN.Status
L.TBOX1.Title .DA TBOX1.Title
L.TBOX1.Status .DA TBOX1.Status
@ -152,8 +151,10 @@ CS.RUN.LOOP lda hSCRN
.3 cmp #EV.LBOX1.CHANGED
bne .8
* Do something
>PUSHB hSCRN
>PUSHBI S.OBJ.pSTATUS
>PUSHW.G LBOX1.Var
>LIBCALL hLIBTUI,LIBTUI.SetProp
bra CS.RUN.LOOP
.8 cmp #EV.QUIT
@ -181,7 +182,7 @@ CS.SCRN.Init >PUSHB hCTX hParent
>PUSHB hSCRN
>PUSHBI S.OBJ.pSTATUS
>PUSHW L.SCRN.Status
>PUSHW L.LBOX1.List
>LIBCALL hLIBTUI,LIBTUI.SetProp
.9 rts
@ -413,33 +414,34 @@ LIBTUI .AZ "libtui"
hLIBTUI .BS 1
*--------------------------------------
SCRN.Title .AZ "Window: X1=%d,Y1=%d, W=%d,H=%d, X2=%d,Y2=%d, iX=%d,iY=%d, iW=%d,iH=%d"
SCRN.Status .AZ "Status bar..."
*--------------------------------------
TBOX1.Title .AZ "Text Box Title"
TBOX1.Status .AZ "Text Box Status"
*--------------------------------------
LBOX1.List .CS "Item 1\r"
.CS "Item 2\r"
.CS "Item 3\r"
.CS "Item 4\r"
.CS "Item 5\r"
.CS "Item 6 very long line\r"
.CS "Item 7\r"
.CS "Item 8\r"
.CS "Item 9\r"
.CS "Item 10\r"
.CS "Item 11\r"
.CS "Item 12\r"
.CS "Item 13\r"
.CZ "Item 14 last one\r"
LBOX1.List .CZ "Item 1"
.CZ "Item 2"
.CZ "Item 3"
.CZ "Item 4"
.CZ "Item 5"
.CZ "Item 6 very long line"
.CZ "Item 7"
.CZ "Item 8"
.CZ "Item 9"
.CZ "Item 10"
.CZ "Item 11"
.CZ "Item 12"
.CZ "Item 13"
.CZ "Item 14 last one"
.HS 00
*--------------------------------------
LABEL.Label .AZ "This is a label."
*--------------------------------------
TLINE.Default .AZ "This is a Line."
*--------------------------------------
RADIO1.List .CS "\e[91mRed\r"
.CS "\e[92mGreen\r"
.CZ "\e[96mBlue\r"
RADIO1.List .CZ "\e[91mRed"
.CZ "\e[92mGreen"
.CZ "\e[96mBlue"
.HS 00
*--------------------------------------
CBOX1.Label .AZ "Check Me"
*--------------------------------------
@ -456,7 +458,7 @@ SCRN.TitleBuf .BS 80
TLINE.Buf .BS 65
CBOX1.Var .BS 1
RADIO1.Var .BS 1
LBOX1.Var .BS 1
LBOX1.Var .BS 2
TBOX1.hBuf .BS 1
DS.END .ED
*--------------------------------------

View File

@ -105,10 +105,17 @@ LBOX.Run ldy #S.OBJ.S
bcs .99
jsr LBOX.SetpVar
ldy #S.LBOX.EV.CHANGED
lda (ZPObjPtr),y
* clc
clc
rts
.9 lda #0
sec
.99 rts
.3 cmp #C.SPACE
bne .9
@ -121,10 +128,6 @@ LBOX.Run ldy #S.OBJ.S
.8 lda #0
clc
rts
.9 lda #0
sec
.99 rts
*--------------------------------------
LBOX.Draw ldy #S.LBOX.VScroll
lda (ZPObjPtr),y
@ -153,9 +156,11 @@ LBOX.Draw ldy #S.LBOX.VScroll
jsr LB.Ptr1OutEscMaxX
txa
beq .8
bne .6
clc
rts
.5 ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
@ -169,6 +174,25 @@ LBOX.Draw ldy #S.LBOX.VScroll
.8 clc
rts
*--------------------------------------
LBOX.SetpVar ldy #S.LBOX.Idx
lda (ZPObjPtr),y
tax
jsr OBJ.GetLineXAtY
bcs .8
jsr OBJ.GetpVarPtr2
lda ZPPtr1
sta (ZPPtr2)
lda ZPPtr1+1
ldy #1
sta (ZPPtr2),y
.8 clc
LBOX.SetpVar.9 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s.lbox
LOAD usr/src/lib/libtui.s

View File

@ -961,24 +961,7 @@ OBJ.GetLineXAtY jsr OBJ.GetpBufPtr1
.2 inc TempI
ldy #$ff
.4 iny
lda (ZPPtr1),y
clc
beq .5
cmp #C.CR
bne .4
* sec
.5 tya
adc ZPPtr1
sta ZPPtr1
bcc .1
inc ZPPtr1+1
jsr OBJ.NextLinePtr1
bra .1
.8 clc
@ -987,6 +970,30 @@ OBJ.GetLineXAtY jsr OBJ.GetpBufPtr1
.9 sec
rts
*--------------------------------------
OBJ.NextLinePtr1
ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .1
tya
beq .9 Empty Line
sec
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
clc
.8 rts
.9 sec
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s.obj
LOAD usr/src/lib/libtui.s

View File

@ -30,29 +30,11 @@ RADIO.New lda #S.OBJ.T.RADIO
ldx #0
.1 ldy #$ff
.2 iny
lda (ZPPtr1),y
clc
beq .20
cmp #C.CR
bne .2
.1 jsr OBJ.NextLinePtr1
bcs .5 empty line
* sec
.20 tya
beq .5 empty line
adc ZPPtr1
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 tya
clc
tya
* clc
adc #5 room for " ( ) "
ldy #S.OBJ.W
cmp (ZPObjPtr),y
@ -192,6 +174,7 @@ RADIO.Draw lda (pStack) Relative Y
bra .13
.11 lda #C.SPACE
.13 jsr LB.COut
ldx #')'