gui: added dialog signals DIALOG_SIGNAL_MKCONTENT and DIALOG_SIGNAL_RMCONTENT.

This commit is contained in:
Martin Preuss
2026-05-11 11:52:23 +02:00
parent 39b3d4d174
commit b927bfdab6

View File

@@ -23,9 +23,11 @@
; signals
.equ DIALOG_SIGNAL_TOGUI = WIDGET_SIGNAL_NEXTFREE+0
.equ DIALOG_SIGNAL_FROMGUI = WIDGET_SIGNAL_NEXTFREE+1
.equ DIALOG_SIGNAL_NEXT = WIDGET_SIGNAL_NEXTFREE+2
.equ DIALOG_SIGNAL_TOGUI = WIDGET_SIGNAL_NEXTFREE+0
.equ DIALOG_SIGNAL_FROMGUI = WIDGET_SIGNAL_NEXTFREE+1
.equ DIALOG_SIGNAL_MKCONTENT = WIDGET_SIGNAL_NEXTFREE+2
.equ DIALOG_SIGNAL_RMCONTENT = WIDGET_SIGNAL_NEXTFREE+3
.equ DIALOG_SIGNAL_NEXT = WIDGET_SIGNAL_NEXTFREE+4
; selectors
.equ DIALOG_SEL_OKBUTTON = 1
@@ -127,6 +129,34 @@ Dialog_fromGui:
; ---------------------------------------------------------------------------
; @routine Dialog_MkContent @global
;
; @param Y pointer to dialog
; @clobbers any, !Y
Dialog_MkContent:
ldi r16, DIALOG_SIGNAL_MKCONTENT
clr r17
bigjmp OBJ_HandleSignal
; @end
; ---------------------------------------------------------------------------
; @routine Dialog_RmContent @global
;
; @param Y pointer to dialog
; @clobbers any, !Y
Dialog_RmContent:
ldi r16, DIALOG_SIGNAL_RMCONTENT
clr r17
bigjmp OBJ_HandleSignal
; @end
; ***************************************************************************
@@ -181,15 +211,13 @@ Dialog_OnShow:
bigcall MainWindow_CreateContentWidget
brcc Dialog_OnShow_ret
bigcall CDialog_CreateContent
brcc Dialog_OnShow_ret
rcall Dialog_MkContent
ldd r16, Y+OBJECT_OFFS_OPTS
sbrs r16, DIALOG_OPTS_STDBTNS_BIT
rjmp Dialog_OnShow_toGui
bigcall Dialog_AddDefaultButtons ; (any, !Y)
brcc Dialog_OnShow_ret
Dialog_OnShow_toGui:
rcall Dialog_toGui
@@ -218,19 +246,8 @@ Dialog_OnHide:
; read data into settings struct
rcall Dialog_fromGui
; prepare destruction of content
bigcall MainWindow_GetContentWidget
brcc Dialog_OnHide_ret
push yl
push yh
mov yl, r18
mov yh, r19
ldd r16, Y+OBJECT_OFFS_FLAGS
sbr r16, (1<<OBJECT_FLAGS_DESTROY_BIT)
std Y+OBJECT_OFFS_FLAGS, r16
pop yh
pop yl
rcall Dialog_RmContent
; clr VISIBLE flag
ldd r16, Y+OBJECT_OFFS_FLAGS
@@ -270,6 +287,32 @@ Dialog_OnToGui:
; ---------------------------------------------------------------------------
; @routine Dialog_OnRmContent @global
;
; @param Y pointer to dialog
; @clobbers any, !Y
Dialog_OnRmContent:
; prepare destruction of content
bigcall MainWindow_GetContentWidget
brcc Dialog_OnHide_ret
push yl
push yh
mov yl, r18
mov yh, r19
ldd r16, Y+OBJECT_OFFS_FLAGS
sbr r16, (1<<OBJECT_FLAGS_DESTROY_BIT)
std Y+OBJECT_OFFS_FLAGS, r16
pop yh
pop yl
sec
ret
; @end
; ***************************************************************************
; data in FLASH
@@ -338,12 +381,13 @@ Dialog_DefaultSignalmap:
; header
.dw MainWindow_DefaultSignalmap*2 ; next table to use
; entries
.db DIALOG_SEL_OKBUTTON, WIDGET_SIGNAL_COMMAND, LOW(Dialog_OnOk), HIGH(Dialog_OnOk)
.db DIALOG_SEL_ABORTBUTTON, WIDGET_SIGNAL_COMMAND, LOW(Dialog_OnAbort), HIGH(Dialog_OnAbort)
.db 0, WIDGET_SIGNAL_SHOW, LOW(Dialog_OnShow), HIGH(Dialog_OnShow)
.db 0, WIDGET_SIGNAL_HIDE, LOW(Dialog_OnHide), HIGH(Dialog_OnHide)
.db 0, DIALOG_SIGNAL_FROMGUI, LOW(Dialog_OnFromGui), HIGH(Dialog_OnFromGui)
.db 0, DIALOG_SIGNAL_TOGUI, LOW(Dialog_OnToGui), HIGH(Dialog_OnToGui)
.db DIALOG_SEL_OKBUTTON, WIDGET_SIGNAL_COMMAND, LOW(Dialog_OnOk), HIGH(Dialog_OnOk)
.db DIALOG_SEL_ABORTBUTTON, WIDGET_SIGNAL_COMMAND, LOW(Dialog_OnAbort), HIGH(Dialog_OnAbort)
.db 0, WIDGET_SIGNAL_SHOW, LOW(Dialog_OnShow), HIGH(Dialog_OnShow)
.db 0, WIDGET_SIGNAL_HIDE, LOW(Dialog_OnHide), HIGH(Dialog_OnHide)
.db 0, DIALOG_SIGNAL_FROMGUI, LOW(Dialog_OnFromGui), HIGH(Dialog_OnFromGui)
.db 0, DIALOG_SIGNAL_TOGUI, LOW(Dialog_OnToGui), HIGH(Dialog_OnToGui)
.db 0, DIALOG_SIGNAL_RMCONTENT, LOW(Dialog_OnRmContent), HIGH(Dialog_OnRmContent)
; end of table
.db 0, 0, 0, 0