gui: define signals for dialog class, create to-be-shared code.
This commit is contained in:
@@ -19,6 +19,14 @@
|
|||||||
.equ DIALOG_SIZE = DIALOG_OFFS_BEGIN+0
|
.equ DIALOG_SIZE = DIALOG_OFFS_BEGIN+0
|
||||||
|
|
||||||
|
|
||||||
|
.equ DIALOG_OPTS_STDBTNS_BIT = 0 ; use standard buttons
|
||||||
|
|
||||||
|
|
||||||
|
; 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
|
||||||
|
|
||||||
; selectors
|
; selectors
|
||||||
.equ DIALOG_SEL_OKBUTTON = 1
|
.equ DIALOG_SEL_OKBUTTON = 1
|
||||||
.equ DIALOG_SEL_ABORTBUTTON = 2
|
.equ DIALOG_SEL_ABORTBUTTON = 2
|
||||||
@@ -41,12 +49,12 @@
|
|||||||
;
|
;
|
||||||
; @param Y pointer to MainWindow
|
; @param Y pointer to MainWindow
|
||||||
; @param X pointer to root window
|
; @param X pointer to root window
|
||||||
|
; @param r16 value for OBJECT_OFFS_OPTS
|
||||||
; @param R21:R20 title ressource
|
; @param R21:R20 title ressource
|
||||||
; @return CFLAG set of okay, cleared otherwise
|
; @return CFLAG set of okay, cleared otherwise
|
||||||
; @clobbers any, !Y
|
; @clobbers any, !Y
|
||||||
|
|
||||||
Dialog_Init:
|
Dialog_Init:
|
||||||
ldi r16, 0 ; OPTS
|
|
||||||
ldi r17, (WIDGET_PACK_FILLED<<WIDGET_PACK_HSELF0_BIT) | (WIDGET_PACK_FILLED<<WIDGET_PACK_VSELF0_BIT) ; PACK
|
ldi r17, (WIDGET_PACK_FILLED<<WIDGET_PACK_HSELF0_BIT) | (WIDGET_PACK_FILLED<<WIDGET_PACK_VSELF0_BIT) ; PACK
|
||||||
bigcall MainWindow_Init
|
bigcall MainWindow_Init
|
||||||
brcc Dialog_Init_ret
|
brcc Dialog_Init_ret
|
||||||
@@ -67,7 +75,7 @@ Dialog_Init_ret:
|
|||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; @routine Dialog_AddDefaultButtons @global
|
; @routine Dialog_AddDefaultButtons @global
|
||||||
;
|
;
|
||||||
; @param Y pointer to MainWindow
|
; @param Y pointer to dialog
|
||||||
; @clobbers any, !Y
|
; @clobbers any, !Y
|
||||||
|
|
||||||
Dialog_AddDefaultButtons:
|
Dialog_AddDefaultButtons:
|
||||||
@@ -91,6 +99,34 @@ Dialog_AddDefaultButtons_ret:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_toGui @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_toGui:
|
||||||
|
ldi r16, DIALOG_SIGNAL_TOGUI
|
||||||
|
clr r17
|
||||||
|
bigjmp OBJ_HandleSignal
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_fromGui @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_fromGui:
|
||||||
|
ldi r16, DIALOG_SIGNAL_FROMGUI
|
||||||
|
clr r17
|
||||||
|
bigjmp OBJ_HandleSignal
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
@@ -103,6 +139,7 @@ Dialog_AddDefaultButtons_ret:
|
|||||||
; @clobbers any, !Y
|
; @clobbers any, !Y
|
||||||
|
|
||||||
Dialog_OnOk:
|
Dialog_OnOk:
|
||||||
|
rcall Dialog_fromGui
|
||||||
ldi r16, WIDGET_SIGNAL_DIALOG_END
|
ldi r16, WIDGET_SIGNAL_DIALOG_END
|
||||||
ldi xl, LOW(DIALOG_RESULT_OK)
|
ldi xl, LOW(DIALOG_RESULT_OK)
|
||||||
ldi xh, HIGH(DIALOG_RESULT_OK)
|
ldi xh, HIGH(DIALOG_RESULT_OK)
|
||||||
@@ -130,6 +167,108 @@ Dialog_OnAbort:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_OnShow @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_OnShow:
|
||||||
|
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||||
|
sbrc r16, WIDGET_FLAGS_VISIBLE_BIT
|
||||||
|
rjmp Dialog_OnShow_ret
|
||||||
|
|
||||||
|
bigcall MainWindow_CreateContentWidget
|
||||||
|
brcc Dialog_OnShow_ret
|
||||||
|
|
||||||
|
bigcall CDialog_CreateContent
|
||||||
|
brcc Dialog_OnShow_ret
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
; set VISIBLE flag
|
||||||
|
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||||
|
sbr r16, (1<<WIDGET_FLAGS_VISIBLE_BIT) | (1<<WIDGET_FLAGS_DIRTY_BIT) | (1<<WIDGET_FLAGS_LAYOUT_BIT)
|
||||||
|
std Y+OBJECT_OFFS_FLAGS, r16
|
||||||
|
Dialog_OnShow_ret:
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_OnHide @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @return CFLAG set of okay, cleared otherwise
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_OnHide:
|
||||||
|
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||||
|
sbrs r16, WIDGET_FLAGS_VISIBLE_BIT
|
||||||
|
rjmp Dialog_OnHide_ret
|
||||||
|
|
||||||
|
; 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
|
||||||
|
|
||||||
|
; clr VISIBLE flag
|
||||||
|
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||||
|
cbr r16, (1<<WIDGET_FLAGS_VISIBLE_BIT)
|
||||||
|
std Y+OBJECT_OFFS_FLAGS, r16
|
||||||
|
|
||||||
|
Dialog_OnHide_ret:
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_OnFromGui @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_OnFromGui:
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Dialog_OnToGui @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to dialog
|
||||||
|
; @clobbers any, !Y
|
||||||
|
|
||||||
|
Dialog_OnToGui:
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
; data in FLASH
|
; data in FLASH
|
||||||
@@ -199,8 +338,12 @@ Dialog_DefaultSignalmap:
|
|||||||
; header
|
; header
|
||||||
.dw MainWindow_DefaultSignalmap*2 ; next table to use
|
.dw MainWindow_DefaultSignalmap*2 ; next table to use
|
||||||
; entries
|
; entries
|
||||||
.db DIALOG_SEL_OKBUTTON, WIDGET_SIGNAL_COMMAND, LOW(Dialog_OnOk), HIGH(Dialog_OnOk)
|
.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 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)
|
||||||
; end of table
|
; end of table
|
||||||
.db 0, 0, 0, 0
|
.db 0, 0, 0, 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user