From 721b06a044e69c7f41ac2b2e07bdc7f5590189db Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Thu, 30 Apr 2026 00:11:19 +0200 Subject: [PATCH] gui: more work on light settings window. --- avr/devices/c03/main/w_lightsettings.asm | 355 +++++++++++++++++------ 1 file changed, 263 insertions(+), 92 deletions(-) diff --git a/avr/devices/c03/main/w_lightsettings.asm b/avr/devices/c03/main/w_lightsettings.asm index 49e0dff..51f0b99 100644 --- a/avr/devices/c03/main/w_lightsettings.asm +++ b/avr/devices/c03/main/w_lightsettings.asm @@ -18,24 +18,22 @@ .equ LIGHTSETTINGSWIN_OFFS_BEGIN = MAINWINDOW_SIZE -.equ LIGHTSETTINGSWIN_OFFS_ID = LIGHTSETTINGSWIN_OFFS_BEGIN+0 -.equ LIGHTSETTINGSWIN_OFFS_TYPE = LIGHTSETTINGSWIN_OFFS_BEGIN+1 -.equ LIGHTSETTINGSWIN_OFFS_TEXTRES_LO = LIGHTSETTINGSWIN_OFFS_BEGIN+2 -.equ LIGHTSETTINGSWIN_OFFS_TEXTRES_HI = LIGHTSETTINGSWIN_OFFS_BEGIN+3 -.equ LIGHTSETTINGSWIN_OFFS_NODEADDR = LIGHTSETTINGSWIN_OFFS_BEGIN+4 -.equ LIGHTSETTINGSWIN_OFFS_EEPROM_ID = LIGHTSETTINGSWIN_OFFS_BEGIN+5 ; maybe remove... -.equ LIGHTSETTINGSWIN_OFFS_LEDNUM_LO = LIGHTSETTINGSWIN_OFFS_BEGIN+6 -.equ LIGHTSETTINGSWIN_OFFS_LEDNUM_HI = LIGHTSETTINGSWIN_OFFS_BEGIN+7 -.equ LIGHTSETTINGSWIN_OFFS_ONTIME_LO = LIGHTSETTINGSWIN_OFFS_BEGIN+8 -.equ LIGHTSETTINGSWIN_OFFS_ONTIME_HI = LIGHTSETTINGSWIN_OFFS_BEGIN+9 -.equ LIGHTSETTINGSWIN_OFFS_SOURCE1_NODEADDR = LIGHTSETTINGSWIN_OFFS_BEGIN+10 -.equ LIGHTSETTINGSWIN_OFFS_SOURCE1_VALUEID = LIGHTSETTINGSWIN_OFFS_BEGIN+11 -.equ LIGHTSETTINGSWIN_OFFS_SOURCE2_NODEADDR = LIGHTSETTINGSWIN_OFFS_BEGIN+12 -.equ LIGHTSETTINGSWIN_OFFS_SOURCE2_VALUEID = LIGHTSETTINGSWIN_OFFS_BEGIN+13 -.equ LIGHTSETTINGSWIN_OFFS_BSOURCE_NODEADDR = LIGHTSETTINGSWIN_OFFS_BEGIN+14 -.equ LIGHTSETTINGSWIN_OFFS_BSOURCE_VALUEID = LIGHTSETTINGSWIN_OFFS_BEGIN+15 -.equ LIGHTSETTINGSWIN_OFFS_COLORS = LIGHTSETTINGSWIN_OFFS_BEGIN+16 -.equ LIGHTSETTINGSWIN_SIZE = LIGHTSETTINGSWIN_OFFS_COLORS+(LIGHTSETTINGSWIN_NUM_COLORS*2) +.equ LIGHTSETTINGSWIN_OFFS_SETTINGS_LO = LIGHTSETTINGSWIN_OFFS_BEGIN+0 +.equ LIGHTSETTINGSWIN_OFFS_SETTINGS_HI = LIGHTSETTINGSWIN_OFFS_BEGIN+1 +.equ LIGHTSETTINGSWIN_SIZE = LIGHTSETTINGSWIN_OFFS_BEGIN+2 + + +; selectors +.equ LIGHTSETTINGSWIN_SEL_DIALOG_OK = 1 +.equ LIGHTSETTINGSWIN_SEL_DIALOG_ABORT = 2 +.equ LIGHTSETTINGSWIN_SEL_NODEADDR = 3 +.equ LIGHTSETTINGSWIN_SEL_LEDCOUNT = 4 +.equ LIGHTSETTINGSWIN_SEL_ONTIME = 5 +.equ LIGHTSETTINGSWIN_SEL_MSRC1 = 6 +.equ LIGHTSETTINGSWIN_SEL_MSRC2 = 7 +.equ LIGHTSETTINGSWIN_SEL_BSRC = 8 + + @@ -50,17 +48,22 @@ ; @routine LightSettingsWin_new @global ; ; @param Y pointer to GUIAPP +; @param r21:r20 pointer to settings ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object LightSettingsWin_new: - bigcall GuiApp_GetRootWindow + bigcall GuiApp_GetRootWindow ; r19:r18=root window (none) brcc LightSettingsWin_new_ret - mov xl, r18 ; use root window as parent for main window + mov xl, r18 ; use root window as parent for main window mov xh, r19 ldi r24, LOW(LIGHTSETTINGSWIN_SIZE) ldi r25, HIGH(LIGHTSETTINGSWIN_SIZE) - bigcall Object_Alloc ; Y=space (!r16, !r17, !X) + push r20 + push r21 + bigcall Object_Alloc ; Y=space (!r16, !r17, !X) + pop r21 + pop r20 brcc LightSettingsWin_new_ret rcall LightSettingsWin_Init LightSettingsWin_new_ret: @@ -74,17 +77,33 @@ LightSettingsWin_new_ret: ; ; @param Y pointer to newly allocated widget data ; @param X pointer to root window +; @param r21:r20 pointer to settings ; @return CFLAG set of okay, cleared otherwise ; @clobbers any, !Y LightSettingsWin_Init: - ldi r16, 0 ; OPTS - ldi r17, (WIDGET_PACK_FILLED<0) +; @param r22 selector +; @param r18 minimum value +; @param r19 maximum value +; @param Z target +; @return CFLAG set if created, cleared otherwise +; @return Y new object created +; @clobbers any, !X, !Z + +lightSettingsWinCreateHSpinner: + push r18 + push r19 + push r22 + push xl + push xh + push zl + push zh + ldi r16, 0 + ldi r17, (WIDGET_PACK_BEGIN<