Tuesday
- last edited
yesterday
by
Laszlo Nagy
Hi,
I think I've found a bug with the Interface Preview of the GDL interface.
I've definitely encountered it before many times, but now I can actually reproduce it.
In short, whenever I introduce an erroneous subroutine and I run the Preview button it will break all future instances of the Preview even after I remove the problematic code.
The only way to get the Preview to work afterwards, is to re-open the object and press Preview again. Then it works fine.
I'm running Archicad 28.3.1 (6100) INT on Windows 10.
Please let me know if it's only me or it's definitely a bug.
So here are 3 steps to reproduce it.
! Part one. Make a new object from scratch, and copy the following code in the Interface tab.
! ------------------------------------------------------------------------
ui_page 1, -1, "Page 1 Settings"
ui_outfield "Page 1", 1, 0
ui_page 2, -1, "Page 2 Settings"
ui_outfield "Page 2", 1, 0
! ------------------------------------------------------------------------
! Make sure you have the Hierarchical Pages active.
! You can run Check Script & Preview - all works fine.
! ------------------------------------------------------------------------
! Part Two. Copy the following code, where we introduce a subroutine without anything in it.
! ------------------------------------------------------------------------
ui_page 1, -1, "Page 1 Settings"
ui_outfield "Page 1", 1, 0
ui_page 2, -1, "Page 2 Settings"
ui_outfield "Page 2", 1, 0
"Page1":
return
! ------------------------------------------------------------------------
! Run Check Script.
! You get "Return without Gosub" error.
! Run the Preview once, it looks like it works, but pages don't actually switch (check the text)
! Close the Preview and run again, and it's clearly broken.
! ------------------------------------------------------------------------
! Part three. Ok now let's try and fix it by removing the subroutine.
! Copy this clean code again.
! ------------------------------------------------------------------------
ui_page 1, -1, "Page 1 Settings"
ui_outfield "Page 1", 1, 0
ui_page 2, -1, "Page 2 Settings"
ui_outfield "Page 2", 1, 0
! ------------------------------------------------------------------------
! Run Check Script. It's OK.
! Run the Preview, and it's still broken. Idk why.
! To get the Preview working again, save the object & reopen it.
! ------------------------------------------------------------------------
Edit: I've also tested it on Archicad 29, Windows 11, and it's the same behaviour.
Wednesday
I have always written it like this.
iPageIDRoot =-1
iPageIDPage1 = 1
iPageIDPage2 = 2
! ==============================================================================
!UI_PAGES
! ==============================================================================
UI_PAGE iPageIDPage1, iPageIDRoot, `Page 1 Settings`
gosub "Page1"
UI_PAGE iPageIDPage2, iPageIDRoot, `Page 2 Settings`
gosub "Page2"
! ==============================================================================
END
! ==============================================================================
! ==============================================================================
!SUBROUTINES
! ==============================================================================
"Page1":
return
"Page2":
return
Barry.
Wednesday
Thank you Barry, I do understand how to write subroutines for the interface, I've learned it from Bruce 😀
My point was that the Interface Preview is bugging after previewing it with empty subroutines (and no "end' statements").
My expected behaviour would be that the Preview would revert back to normal, and show the interface correctly after the code was fixed.
I don't think it's expected to have to re-open the object just to preview the interface script.
yesterday
The code is not correct without the END statement and does not actually work as it does not allow you to change pages.
But I do agree it does seem to be a bug that even if you correct the code, you have to close and re-open the object for the preview to work correctly.
Barry.
yesterday
Thanks for confirming it Barry. 😀
Hopefully someone from Graphisoft can take a look and confirm it as well. Who knows, maybe it's an easy fix.
yesterday
Hi Laurentiu,
I've also tried it in AC28 on Windows. Got the behavior as you've described.
It's a weird issue! Maybe the GDL interpreter is stuck in weird state.
Tried a few things like:
Nothing resolved the issue. Only saving and reopening works as you've mentioned.
I even managed to crash AC by running the GDL debugger with default params on the parameter script.
Report ID: AC28-2025-12-18-16-16-26-6822
Best regards,
Bernd
yesterday
Great. Thank you @BerndSchwarzenbacher for testing and confirming this bug.