gui: use CWidget.
This commit is contained in:
@@ -535,6 +535,7 @@ GUI_MODULE_BEGIN:
|
|||||||
.include "modules/lcd2/gui/base/keypad.asm"
|
.include "modules/lcd2/gui/base/keypad.asm"
|
||||||
.include "modules/lcd2/gui/base/keypad_num.asm"
|
.include "modules/lcd2/gui/base/keypad_num.asm"
|
||||||
.include "modules/lcd2/gui/base/d_numinput.asm"
|
.include "modules/lcd2/gui/base/d_numinput.asm"
|
||||||
|
.include "modules/lcd2/gui/base/cwidget.asm"
|
||||||
.include "modules/lcd2/gui/base/cdialog.asm"
|
.include "modules/lcd2/gui/base/cdialog.asm"
|
||||||
.include "modules/lcd2/gui/aqhome/sensorwatch.asm"
|
.include "modules/lcd2/gui/aqhome/sensorwatch.asm"
|
||||||
.include "modules/lcd2/gui/aqhome/lightsettings.asm"
|
.include "modules/lcd2/gui/aqhome/lightsettings.asm"
|
||||||
|
|||||||
@@ -154,11 +154,11 @@ LightSettingsWin_OnDestroy_done:
|
|||||||
|
|
||||||
|
|
||||||
LightSettingsWin_Config:
|
LightSettingsWin_Config:
|
||||||
.db CDIALOGCFG_MAINWIDGET_TYPE_MLAYOUT, 0 ; TYPE, FLAGS
|
.db CWIDGETCFG_MAINWIDGET_TYPE_MLAYOUT, 0 ; TYPE, FLAGS
|
||||||
.db 2, 0 ; PARAM1, PARAM2
|
.db 2, 0 ; PARAM1, PARAM2
|
||||||
|
|
||||||
; line 1, left widget
|
; line 1, left widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
||||||
.db 0, 0 ; SELECTOR, RESERVED
|
.db 0, 0 ; SELECTOR, RESERVED
|
||||||
.db 0, (WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
.db 0, (WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
(WIDGET_PACK_CENTER<<WIDGET_PACK_VSELF0_BIT) | \
|
(WIDGET_PACK_CENTER<<WIDGET_PACK_VSELF0_BIT) | \
|
||||||
@@ -170,7 +170,7 @@ LightSettingsWin_Config:
|
|||||||
.dw 0, 0 ; MINVAL, MAXVAL
|
.dw 0, 0 ; MINVAL, MAXVAL
|
||||||
|
|
||||||
; line 1, right widget
|
; line 1, right widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_HSPINNER, (1<<CDIALOGCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_HSPINNER, (1<<CWIDGETCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
||||||
.db LIGHTSETTINGSWIN_SEL_NODEADDR, 0 ; SELECTOR, RESERVED
|
.db LIGHTSETTINGSWIN_SEL_NODEADDR, 0 ; SELECTOR, RESERVED
|
||||||
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
||||||
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
@@ -183,7 +183,7 @@ LightSettingsWin_Config:
|
|||||||
.dw 1, 255 ; MINVAL, MAXVAL
|
.dw 1, 255 ; MINVAL, MAXVAL
|
||||||
|
|
||||||
; line 2, left widget
|
; line 2, left widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
||||||
.db 0, 0 ; SELECTOR, RESERVED
|
.db 0, 0 ; SELECTOR, RESERVED
|
||||||
.db 0, \
|
.db 0, \
|
||||||
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
@@ -196,7 +196,7 @@ LightSettingsWin_Config:
|
|||||||
.dw 0, 0 ; MINVAL, MAXVAL
|
.dw 0, 0 ; MINVAL, MAXVAL
|
||||||
|
|
||||||
; line 2, right widget
|
; line 2, right widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_HSPINNER, (1<<CDIALOGCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_HSPINNER, (1<<CWIDGETCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
||||||
.db LIGHTSETTINGSWIN_SEL_LEDCOUNT, 0 ; SELECTOR, RESERVED
|
.db LIGHTSETTINGSWIN_SEL_LEDCOUNT, 0 ; SELECTOR, RESERVED
|
||||||
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
||||||
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
@@ -209,7 +209,7 @@ LightSettingsWin_Config:
|
|||||||
.dw 1, 300 ; MINVAL, MAXVAL
|
.dw 1, 300 ; MINVAL, MAXVAL
|
||||||
|
|
||||||
; line 3, left widget
|
; line 3, left widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_LABEL, 0 ; TYPE, FLAGS
|
||||||
.db 0, 0 ; SELECTOR, RESERVED
|
.db 0, 0 ; SELECTOR, RESERVED
|
||||||
.db 0, \
|
.db 0, \
|
||||||
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
@@ -222,7 +222,7 @@ LightSettingsWin_Config:
|
|||||||
.dw 0, 0 ; MINVAL, MAXVAL
|
.dw 0, 0 ; MINVAL, MAXVAL
|
||||||
|
|
||||||
; line 3, right widget
|
; line 3, right widget
|
||||||
.db CDIALOGCFG_WIDGET_TYPE_HSPINNER, (1<<CDIALOGCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
.db CWIDGETCFG_WIDGET_TYPE_HSPINNER, (1<<CWIDGETCFG_WIDGET_FLAGS_MINMAXVALUES_BIT) ; TYPE, FLAGS
|
||||||
.db LIGHTSETTINGSWIN_SEL_ONTIME, 0 ; SELECTOR, RESERVED
|
.db LIGHTSETTINGSWIN_SEL_ONTIME, 0 ; SELECTOR, RESERVED
|
||||||
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
.db (1<<WIDGET_OPTS_BORDER_BIT), \
|
||||||
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
(WIDGET_PACK_BEGIN<<WIDGET_PACK_HSELF0_BIT) | \
|
||||||
|
|||||||
@@ -21,48 +21,6 @@
|
|||||||
.equ CDIALOG_SIZE = CDIALOG_OFFS_BEGIN+2
|
.equ CDIALOG_SIZE = CDIALOG_OFFS_BEGIN+2
|
||||||
|
|
||||||
|
|
||||||
; CDIALOG dialog configuration
|
|
||||||
.equ CDIALOGCFG_MAINWIDGET_TYPE_HLAYOUT = 1
|
|
||||||
.equ CDIALOGCFG_MAINWIDGET_TYPE_VLAYOUT = 2
|
|
||||||
.equ CDIALOGCFG_MAINWIDGET_TYPE_MLAYOUT = 3
|
|
||||||
.equ CDIALOGCFG_MAINWIDGET_TYPE_NEXT = 4
|
|
||||||
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_LABEL = 1
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_VALUELABEL = 2
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_IMAGEVIEW = 3
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_HSPINNER = 4
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_TEXTBUTTON = 5
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_IMAGEBUTTON = 6
|
|
||||||
.equ CDIALOGCFG_WIDGET_TYPE_NEXT = 7
|
|
||||||
|
|
||||||
.equ CDIALOGCFG_WIDGET_FLAGS_MINMAXVALUES_BIT = 0
|
|
||||||
|
|
||||||
.equ CDIALOGCFG_OFFS_HEADER_TYPE = 0 ; HLAYOUT, VLAYOUT, MLAYOUT
|
|
||||||
.equ CDIALOGCFG_OFFS_HEADER_FLAGS = 1
|
|
||||||
.equ CDIALOGCFG_OFFS_HEADER_PARAM1 = 2 ; R20
|
|
||||||
.equ CDIALOGCFG_OFFS_HEADER_PARAM2 = 3 ; R21
|
|
||||||
.equ CDIALOGCFG_HEADER_SIZE = 4
|
|
||||||
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_TYPE = 0 ; 0=end
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_FLAGS = 1
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_SELECTOR = 2
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_RESERVED = 3
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_OPTS = 4
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_PACK = 5
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_STYLE_LO = 6
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_STYLE_HI = 7
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_PARAM1 = 8 ; R20
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_PARAM2 = 9 ; R21
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_PARAM3 = 10 ; R22
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_PARAM4 = 11 ; R23
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_MINVALUE_LO = 12
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_MINVALUE_HI = 13
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_MAXVALUE_LO = 14
|
|
||||||
.equ CDIALOGCFG_OFFS_WIDGET_MAXVALUE_HI = 15
|
|
||||||
.equ CDIALOGCFG_WIDGET_SIZE = 16
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
; code
|
; code
|
||||||
@@ -108,7 +66,7 @@ CDialog_Init:
|
|||||||
ldd zh, Y+CDIALOG_OFFS_CONFIG_HI
|
ldd zh, Y+CDIALOG_OFFS_CONFIG_HI
|
||||||
push yl ; main window
|
push yl ; main window
|
||||||
push yh
|
push yh
|
||||||
rcall cDialogCreateContent
|
bigcall CWidget_Create
|
||||||
pop yh
|
pop yh
|
||||||
pop yl
|
pop yl
|
||||||
pop xh
|
pop xh
|
||||||
@@ -138,282 +96,28 @@ CDialog_Init_ret:
|
|||||||
; @clobbers R16, R17, R18, R19
|
; @clobbers R16, R17, R18, R19
|
||||||
|
|
||||||
CDialog_GetChildBySelector:
|
CDialog_GetChildBySelector:
|
||||||
|
push r16
|
||||||
|
bigcall MainWindow_GetFirstChildOfContentWidget ; (r16)
|
||||||
|
pop r16
|
||||||
|
brcc CDialog_GetChildBySelector_ret
|
||||||
push zl
|
push zl
|
||||||
push zh
|
push zh
|
||||||
adiw zh:zl, CDIALOGCFG_HEADER_SIZE
|
ldd zl, Y+CDIALOG_OFFS_CONFIG_LO
|
||||||
; determine child index
|
ldd zh, Y+CDIALOG_OFFS_CONFIG_HI
|
||||||
clr r18
|
|
||||||
CDialog_GetChildBySelector_loop:
|
|
||||||
lpm r17, Z ; CDIALOGCFG_OFFS_WIDGET_TYPE
|
|
||||||
tst r17
|
|
||||||
breq CDialog_GetChildBySelector_popRet
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_SELECTOR
|
|
||||||
lpm r17, Z
|
|
||||||
sbiw zh:zl, CDIALOGCFG_OFFS_WIDGET_SELECTOR
|
|
||||||
cp r17, r16
|
|
||||||
breq CDialog_GetChildBySelector_found
|
|
||||||
inc r18
|
|
||||||
adiw zh:zl, CDIALOGCFG_WIDGET_SIZE
|
|
||||||
rjmp CDialog_GetChildBySelector_loop
|
|
||||||
CDialog_GetChildBySelector_found:
|
|
||||||
bigcall MainWindow_GetFirstChildOfContentWidget
|
|
||||||
brcc CDialog_GetChildBySelector_popRet
|
|
||||||
push yl
|
push yl
|
||||||
push yh
|
push yh
|
||||||
mov yl, r18
|
mov yl, r18
|
||||||
mov yh, r19
|
mov yh, r19
|
||||||
mov r16, r18
|
bigcall CWidget_GetChildBySelector
|
||||||
bigcall OBJ_GetChildAt ; (r16)
|
|
||||||
pop yh
|
pop yh
|
||||||
pop yl
|
pop yl
|
||||||
CDialog_GetChildBySelector_popRet:
|
|
||||||
pop zh
|
pop zh
|
||||||
pop zl
|
pop zl
|
||||||
|
CDialog_GetChildBySelector_ret:
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
; @routine CDialog_CreateWidgets @global
|
|
||||||
;
|
|
||||||
; @param Y pointer to target window for signals emitted by created widgets
|
|
||||||
; @param X pointer to window to become parent to created widgets
|
|
||||||
; @param Z pointer to dialog configuration
|
|
||||||
; @return CFLAG set of okay, cleared otherwise
|
|
||||||
; @clobbers any, !X, !Y
|
|
||||||
|
|
||||||
CDialog_CreateWidgets:
|
|
||||||
CDialog_CreateWidgets_loop:
|
|
||||||
lpm r16, Z
|
|
||||||
tst r16
|
|
||||||
breq CDialog_CreateWidgets_done
|
|
||||||
push yl
|
|
||||||
push yh
|
|
||||||
push xl
|
|
||||||
push xh
|
|
||||||
rcall cDialogMkChildWidget
|
|
||||||
pop xh
|
|
||||||
pop xl
|
|
||||||
pop yh
|
|
||||||
pop yl
|
|
||||||
brcc CDialog_CreateWidgets_ret
|
|
||||||
adiw zh:zl, CDIALOGCFG_WIDGET_SIZE
|
|
||||||
rjmp CDialog_CreateWidgets_loop
|
|
||||||
CDialog_CreateWidgets_done:
|
|
||||||
sec
|
|
||||||
CDialog_CreateWidgets_ret:
|
|
||||||
ret
|
|
||||||
; @end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
; @routine cDialogCreateContent
|
|
||||||
;
|
|
||||||
; @param Y pointer to main window
|
|
||||||
; @param X pointer to content window of MainWindow (is a VLayout, becomes parent)
|
|
||||||
; @param Z pointer to dialog configuration
|
|
||||||
; @return CFLAG set of okay, cleared otherwise
|
|
||||||
; @return Y pointer to created content widget
|
|
||||||
|
|
||||||
cDialogCreateContent:
|
|
||||||
push yl ; MainWindow
|
|
||||||
push yh
|
|
||||||
rcall cDialogMkMainWidget
|
|
||||||
mov xl, yl ; layout widget
|
|
||||||
mov xh, yh
|
|
||||||
pop yh ; MainWindow
|
|
||||||
pop yl
|
|
||||||
brcc cDialogCreateContent_ret
|
|
||||||
|
|
||||||
adiw zh:zl, CDIALOGCFG_HEADER_SIZE ; go to first child widget
|
|
||||||
rcall CDialog_CreateWidgets
|
|
||||||
cDialogCreateContent_ret:
|
|
||||||
ret
|
|
||||||
; @end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
; @routine cDialogMkMainWidget
|
|
||||||
;
|
|
||||||
; @param Y pointer to main window
|
|
||||||
; @param X pointer to content window of MainWindow (is a VLayout, becomes parent)
|
|
||||||
; @param Z pointer to dialog configuration
|
|
||||||
; @return CFLAG set of okay, cleared otherwise
|
|
||||||
; @return Y pointer to created content widget
|
|
||||||
; @clobbers any, !Z
|
|
||||||
|
|
||||||
cDialogMkMainWidget:
|
|
||||||
lpm r16, Z
|
|
||||||
cpi r16, CDIALOGCFG_MAINWIDGET_TYPE_NEXT
|
|
||||||
brcc cDialogMkMainWidget_ret
|
|
||||||
dec r16
|
|
||||||
|
|
||||||
clr r17
|
|
||||||
ldi r18, LOW(cDialogMkMainWidget_table)
|
|
||||||
ldi r19, HIGH(cDialogMkMainWidget_table)
|
|
||||||
add r18, r16
|
|
||||||
adc r19, r17
|
|
||||||
|
|
||||||
; prepare params, opts and pack
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_HEADER_PARAM1
|
|
||||||
lpm r20, Z+
|
|
||||||
lpm r21, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_HEADER_PARAM1+1)
|
|
||||||
ldi r16, 0 ; OPTS
|
|
||||||
ldi r17, (WIDGET_PACK_FILLED<<WIDGET_PACK_HSELF0_BIT) | (WIDGET_PACK_FILLED<<WIDGET_PACK_VSELF0_BIT) ; PACK
|
|
||||||
|
|
||||||
push zl
|
|
||||||
push zh
|
|
||||||
rcall cDialogMkMainWidget_callTable
|
|
||||||
pop zh
|
|
||||||
pop zl
|
|
||||||
cDialogMkMainWidget_ret:
|
|
||||||
ret
|
|
||||||
cDialogMkMainWidget_callTable:
|
|
||||||
push r18 ; indirect jump
|
|
||||||
push r19
|
|
||||||
ret
|
|
||||||
cDialogMkMainWidget_table:
|
|
||||||
rjmp cDialogMkMainWidget_hlayout
|
|
||||||
rjmp cDialogMkMainWidget_vlayout
|
|
||||||
rjmp cDialogMkMainWidget_mlayout
|
|
||||||
cDialogMkMainWidget_hlayout:
|
|
||||||
bigjmp HLayout_new
|
|
||||||
cDialogMkMainWidget_vlayout:
|
|
||||||
bigjmp VLayout_new
|
|
||||||
cDialogMkMainWidget_mlayout:
|
|
||||||
bigjmp MCLayout_new
|
|
||||||
; @end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
; @routine cDialogMkChildWidget
|
|
||||||
; @param Y pointer to main window
|
|
||||||
; @param X pointer to parent window
|
|
||||||
; @param Z pointer to current widget configuration
|
|
||||||
; @return CFLAG set of okay, cleared otherwise
|
|
||||||
; @return Y pointer to created widget
|
|
||||||
; @clobbers any, !Z
|
|
||||||
|
|
||||||
cDialogMkChildWidget:
|
|
||||||
lpm r16, Z
|
|
||||||
cpi r16, CDIALOGCFG_WIDGET_TYPE_NEXT
|
|
||||||
brcs cDialogMkChildWidget_typeOk
|
|
||||||
rjmp cDialogMkChildWidget_ret
|
|
||||||
cDialogMkChildWidget_typeOk:
|
|
||||||
dec r16
|
|
||||||
; prepare params
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_PARAM1
|
|
||||||
lpm r20, Z+
|
|
||||||
lpm r21, Z+
|
|
||||||
lpm r22, Z+
|
|
||||||
lpm r23, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_WIDGET_PARAM1+3)
|
|
||||||
|
|
||||||
; determine position within jumptable
|
|
||||||
clr r17
|
|
||||||
ldi r18, LOW(cDialogMkChildWidget_table)
|
|
||||||
ldi r19, HIGH(cDialogMkChildWidget_table)
|
|
||||||
add r18, r16
|
|
||||||
adc r19, r17
|
|
||||||
|
|
||||||
; prepare opts and pack mode
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_OPTS
|
|
||||||
lpm r16, Z+
|
|
||||||
lpm r17, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_WIDGET_OPTS+1)
|
|
||||||
|
|
||||||
; call table routine
|
|
||||||
push zl
|
|
||||||
push zh
|
|
||||||
push yl
|
|
||||||
push yh
|
|
||||||
rcall cDialogMkChildWidget_callTable
|
|
||||||
pop r21 ; pop Y into r21:r20
|
|
||||||
pop r20
|
|
||||||
pop zh
|
|
||||||
pop zl
|
|
||||||
brcc cDialogMkChildWidget_ret
|
|
||||||
|
|
||||||
; set target and selector
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_SELECTOR
|
|
||||||
lpm r16, Z
|
|
||||||
sbiw zh:zl, CDIALOGCFG_OFFS_WIDGET_SELECTOR
|
|
||||||
std Y+OBJECT_OFFS_SELECTOR, r16
|
|
||||||
std Y+OBJECT_OFFS_TARGET_LO, r20
|
|
||||||
std Y+OBJECT_OFFS_TARGET_HI, r21
|
|
||||||
|
|
||||||
; set style (if any)
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_STYLE_LO
|
|
||||||
lpm r16, Z+
|
|
||||||
lpm r17, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_WIDGET_STYLE_LO+1)
|
|
||||||
mov r18, r16
|
|
||||||
or r18, r17
|
|
||||||
breq cDialogMkChildWidget_setminmax
|
|
||||||
std Y+WIDGET_OFFS_STYLE_LO, r16
|
|
||||||
std Y+WIDGET_OFFS_STYLE_HI, r17
|
|
||||||
cDialogMkChildWidget_setminmax:
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_FLAGS
|
|
||||||
lpm r16, Z
|
|
||||||
sbiw zh:zl, CDIALOGCFG_OFFS_WIDGET_FLAGS
|
|
||||||
sbrs r16, CDIALOGCFG_WIDGET_FLAGS_MINMAXVALUES_BIT ; only set min/max if flag set
|
|
||||||
rjmp cDialogMkChildWidget_done
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_MINVALUE_LO
|
|
||||||
lpm xl, Z+
|
|
||||||
lpm xh, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_WIDGET_MINVALUE_LO+1)
|
|
||||||
push zl
|
|
||||||
push zh
|
|
||||||
bigcall Widget_SetMinValue
|
|
||||||
pop zh
|
|
||||||
pop zl
|
|
||||||
|
|
||||||
adiw zh:zl, CDIALOGCFG_OFFS_WIDGET_MAXVALUE_LO
|
|
||||||
lpm xl, Z+
|
|
||||||
lpm xh, Z
|
|
||||||
sbiw zh:zl, (CDIALOGCFG_OFFS_WIDGET_MAXVALUE_LO+1)
|
|
||||||
push zl
|
|
||||||
push zh
|
|
||||||
bigcall Widget_SetMaxValue
|
|
||||||
pop zh
|
|
||||||
pop zl
|
|
||||||
cDialogMkChildWidget_done:
|
|
||||||
sec
|
|
||||||
cDialogMkChildWidget_ret:
|
|
||||||
ret
|
|
||||||
cDialogMkChildWidget_callTable:
|
|
||||||
push r18 ; indirect jump
|
|
||||||
push r19
|
|
||||||
ret
|
|
||||||
cDialogMkChildWidget_table:
|
|
||||||
rjmp cDialogMkChildWidget_label
|
|
||||||
rjmp cDialogMkChildWidget_vlabel
|
|
||||||
rjmp cDialogMkChildWidget_imageview
|
|
||||||
rjmp cDialogMkChildWidget_hspinner
|
|
||||||
rjmp cDialogMkChildWidget_textbutton
|
|
||||||
rjmp cDialogMkChildWidget_imagebutton
|
|
||||||
|
|
||||||
cDialogMkChildWidget_label:
|
|
||||||
bigjmp Label_new
|
|
||||||
cDialogMkChildWidget_vlabel:
|
|
||||||
bigjmp ValueLabel_new
|
|
||||||
cDialogMkChildWidget_imageview:
|
|
||||||
bigjmp ImageView_new
|
|
||||||
cDialogMkChildWidget_hspinner:
|
|
||||||
bigjmp HSpinner_new
|
|
||||||
cDialogMkChildWidget_textbutton:
|
|
||||||
bigjmp TextButton_new
|
|
||||||
cDialogMkChildWidget_imagebutton:
|
|
||||||
bigjmp ImageButton_new
|
|
||||||
; @end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user