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_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
|
||||
.equ DIALOG_SEL_OKBUTTON = 1
|
||||
.equ DIALOG_SEL_ABORTBUTTON = 2
|
||||
@@ -41,12 +49,12 @@
|
||||
;
|
||||
; @param Y pointer to MainWindow
|
||||
; @param X pointer to root window
|
||||
; @param r16 value for OBJECT_OFFS_OPTS
|
||||
; @param R21:R20 title ressource
|
||||
; @return CFLAG set of okay, cleared otherwise
|
||||
; @clobbers any, !Y
|
||||
|
||||
Dialog_Init:
|
||||
ldi r16, 0 ; OPTS
|
||||
ldi r17, (WIDGET_PACK_FILLED<<WIDGET_PACK_HSELF0_BIT) | (WIDGET_PACK_FILLED<<WIDGET_PACK_VSELF0_BIT) ; PACK
|
||||
bigcall MainWindow_Init
|
||||
brcc Dialog_Init_ret
|
||||
@@ -67,7 +75,7 @@ Dialog_Init_ret:
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Dialog_AddDefaultButtons @global
|
||||
;
|
||||
; @param Y pointer to MainWindow
|
||||
; @param Y pointer to dialog
|
||||
; @clobbers any, !Y
|
||||
|
||||
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
|
||||
|
||||
Dialog_OnOk:
|
||||
rcall Dialog_fromGui
|
||||
ldi r16, WIDGET_SIGNAL_DIALOG_END
|
||||
ldi xl, LOW(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
|
||||
@@ -199,8 +338,12 @@ 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 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)
|
||||
; end of table
|
||||
.db 0, 0, 0, 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user