gui: adapt to latest changes.

need to work on other MainWindow derivates next.
This commit is contained in:
Martin Preuss
2026-05-11 00:42:42 +02:00
parent 0ec290e29c
commit 39b3d4d174
3 changed files with 288 additions and 55 deletions

View File

@@ -87,7 +87,7 @@ DlgLightConns_new_ret:
DlgLightConns_Init:
push r20
push r21
ldi r16, 0 ; OPTS
ldi r16, (1<<DIALOG_OPTS_STDBTNS_BIT) ; OPTS
ldi r17, (WIDGET_PACK_FILLED<<WIDGET_PACK_HSELF0_BIT) | (WIDGET_PACK_FILLED<<WIDGET_PACK_VSELF0_BIT) ; PACK
ldi r20, LOW(RESSOURCE_TXT_LEDCONNECTIONS)
ldi r21, HIGH(RESSOURCE_TXT_LEDCONNECTIONS)
@@ -108,10 +108,6 @@ DlgLightConns_Init:
ldi r16, HIGH(DlgLightConns_DefaultSignalmap*2)
std Y+OBJECT_OFFS_SIGNALMAP_HI, r16
bigcall Dialog_AddDefaultButtons ; (any, !Y)
rcall DlgLightConns_toGui
DlgLightConns_Init_ret:
ret
; @end
@@ -165,6 +161,47 @@ DlgLightConns_toGui:
; ---------------------------------------------------------------------------
; @routine DlgLightConns_fromGui @global
;
; @param Y pointer to dialog
DlgLightConns_fromGui:
ldd zl, Y+DLGLIGHTCONNS_OFFS_SETTINGS_LO
ldd zh, Y+DLGLIGHTCONNS_OFFS_SETTINGS_HI
; motion source 1
ldi r16, DLGLIGHTCONNS_SEL_ADDR_MOTION1
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_SOURCE1_NODEADDR, r18
ldi r16, DLGLIGHTCONNS_SEL_VALUE_MOTION1
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_SOURCE1_VALUEID, r18
; motion source 2
ldi r16, DLGLIGHTCONNS_SEL_ADDR_MOTION2
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_SOURCE2_NODEADDR, r18
ldi r16, DLGLIGHTCONNS_SEL_VALUE_MOTION2
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_SOURCE2_VALUEID, r18
; light source
ldi r16, DLGLIGHTCONNS_SEL_ADDR_LIGHT
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_BSOURCE_NODEADDR, r18
ldi r16, DLGLIGHTCONNS_SEL_VALUE_LIGHT
rcall dlgLightConnsGetValue
std Z+LIGHTSETTINGS_OFFS_BSOURCE_VALUEID, r18
ret
; @end
; ---------------------------------------------------------------------------
; @routine dlgLightConnsSetValue
; @param Y pointer to dialog
@@ -191,6 +228,32 @@ dlgLightConnsSetValue_ret:
; ---------------------------------------------------------------------------
; @routine dlgLightConnsGetValue
; @param Y pointer to dialog
; @param r16 selector of widget to modify
; @param X value to set
dlgLightConnsGetValue:
bigcall CDialog_GetChildBySelector ; r19:r18=result (R16-R19)
brcc dlgLightConnsGetValue_ret
push yl
push yh
mov yl, r18
mov yh, r19
push zl
push zh
bigcall Widget_GetCurrentValue ; r19:r18=result (any, !Y)
pop zh
pop zl
pop yh
pop yl
dlgLightConnsGetValue_ret:
ret
; @end
@@ -199,6 +262,36 @@ dlgLightConnsSetValue_ret:
; signal handlers
; ---------------------------------------------------------------------------
; @routine DlgLightConns_OnToGui @global
;
; @param Y pointer to dialog
; @return CFLAG set of okay, cleared otherwise
; @clobbers any, !Y
DlgLightConns_OnToGui:
rcall DlgLightConns_toGui
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine DlgLightConns_OnFromGui @global
;
; @param Y pointer to dialog
; @return CFLAG set of okay, cleared otherwise
; @clobbers any, !Y
DlgLightConns_OnFromGui:
rcall DlgLightConns_fromGui
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine DlgLightConns_OnCmdMotion1 @global
;
@@ -221,13 +314,12 @@ DlgLightConns_OnCmdMotion1:
pop zh
pop zl
ldi r16, DLGLIGHTCONNS_SEL_DLG_MOTION1
std Y+OBJECT_OFFS_SELECTOR, r16
; set values
ldd xl, Z+LIGHTSETTINGS_OFFS_SOURCE1_NODEADDR
clr xh
push zl
push zh
bigcall DlgNodeValueId_SetNodeAddr
pop zh
pop zl
bigcall DlgNodeValueId_SetNodeAddr
ldd xl, Z+LIGHTSETTINGS_OFFS_SOURCE1_VALUEID
clr xh
bigcall DlgNodeValueId_SetValueId
@@ -239,10 +331,6 @@ DlgLightConns_OnCmdMotion1:
std Y+DLGLIGHTCONNS_OFFS_CURRDLG_LO, xl
std Y+DLGLIGHTCONNS_OFFS_CURRDLG_HI, xh
ldi r16, DLGLIGHTCONNS_SEL_DLG_MOTION1
adiw xh:xl, OBJECT_OFFS_SELECTOR
st X, r16
sbiw xh:xl, OBJECT_OFFS_SELECTOR
adiw xh:xl, OBJECT_OFFS_TARGET_LO
st X+, yl
st X, yh
@@ -296,8 +384,6 @@ DlgLightConns_OnDlgEndMotion1:
pop yh
pop yl
rcall DlgLightConns_toGui
DlgLightConns_OnDlgEndMotion1_leave:
; leave sub-dialog
push yl
@@ -559,6 +645,8 @@ DlgLightConns_DefaultSignalmap:
; header
.dw Dialog_DefaultSignalmap*2 ; next table to use
; entries
.db 0, DIALOG_SIGNAL_TOGUI, LOW(DlgLightConns_OnToGui), HIGH(DlgLightConns_OnToGui)
.db 0, DIALOG_SIGNAL_FROMGUI, LOW(DlgLightConns_OnFromGui), HIGH(DlgLightConns_OnFromGui)
.db DLGLIGHTCONNS_SEL_BTN_MOTION1, WIDGET_SIGNAL_COMMAND, LOW(DlgLightConns_OnCmdMotion1), HIGH(DlgLightConns_OnCmdMotion1)
.db DLGLIGHTCONNS_SEL_BTN_MOTION2, WIDGET_SIGNAL_COMMAND, LOW(DlgLightConns_OnCmdMotion2), HIGH(DlgLightConns_OnCmdMotion2)
.db DLGLIGHTCONNS_SEL_BTN_LIGHT, WIDGET_SIGNAL_COMMAND, LOW(DlgLightConns_OnCmdLight), HIGH(DlgLightConns_OnCmdLight)