Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
I am currently using this code to display a GUI counter: USING: accessors arrays fonts kernel math math.parser ui ui.gadgets ui.gadgets.buttons ui.gadgets.editors ui.gadgets.labels ui.gadgets.pa...
#2: Post edited
- I am currently using this code to display a GUI counter:
- ```
- :: counter ( -- )
- "0" <label> tfont >>font :> lb
- <shelf> :> s
- [
- s 0.5 >>align
- lb add-gadget
- "Count" <label> tfont >>font
- [ drop lb [ dec> 1000 + >dec ] change-text drop s relayout ] <border-button>
- add-gadget { 26 5 } >>gap
- "Counter" open-window
- ] with-ui
- ;
- ```
- The layout was not being resized in order to fit the contents of the label `lb`, which was being updated when the button was clicked.
- However, even when I call [relayout](https://docs.factorcode.org/content/word-relayout,ui.gadgets.html) on the [shelf gadget](https://docs.factorcode.org/content/word-__lt__shelf__gt__,ui.gadgets.packs.html) `s`, the same still happens.
- ![Window with text "1600" on the left, overlapped lightly by button displaying "Count" on left](https://software.codidact.com/uploads/6jqgrw5zcjm6yzxyeytix3gosia0)
- How do I update the layout correctly to accomodate the live changes?
- I am currently using this code to display a GUI counter:
- ```
- USING: accessors arrays fonts kernel math math.parser ui
- ui.gadgets ui.gadgets.buttons ui.gadgets.editors
- ui.gadgets.labels ui.gadgets.packs ;
- IN: 7guis
- : tfont ( -- font )
- <font> default-sans-serif-font-name >>name
- 18 >>size
- ;
- :: counter ( -- )
- "0" <label> tfont >>font :> lb
- <shelf> :> s
- [
- s 0.5 >>align
- lb add-gadget
- "Count" <label> tfont >>font
- [ drop lb [ dec> 1000 + >dec ] change-text drop s relayout ] <border-button>
- add-gadget { 26 5 } >>gap
- "Counter" open-window
- ] with-ui
- ;
- ```
- The layout was not being resized in order to fit the contents of the label `lb`, which was being updated when the button was clicked.
- However, even when I call [relayout](https://docs.factorcode.org/content/word-relayout,ui.gadgets.html) on the [shelf gadget](https://docs.factorcode.org/content/word-__lt__shelf__gt__,ui.gadgets.packs.html) `s`, the same still happens.
- ![Window with text "1600" on the left, overlapped lightly by button displaying "Count" on left](https://software.codidact.com/uploads/6jqgrw5zcjm6yzxyeytix3gosia0)
- How do I update the layout correctly to accomodate the live changes?
#1: Initial revision
Relayout call does not work on button click in Factor
I am currently using this code to display a GUI counter: ``` :: counter ( -- ) "0" <label> tfont >>font :> lb <shelf> :> s [ s 0.5 >>align lb add-gadget "Count" <label> tfont >>font [ drop lb [ dec> 1000 + >dec ] change-text drop s relayout ] <border-button> add-gadget { 26 5 } >>gap "Counter" open-window ] with-ui ; ``` The layout was not being resized in order to fit the contents of the label `lb`, which was being updated when the button was clicked. However, even when I call [relayout](https://docs.factorcode.org/content/word-relayout,ui.gadgets.html) on the [shelf gadget](https://docs.factorcode.org/content/word-__lt__shelf__gt__,ui.gadgets.packs.html) `s`, the same still happens. ![Window with text "1600" on the left, overlapped lightly by button displaying "Count" on left](https://software.codidact.com/uploads/6jqgrw5zcjm6yzxyeytix3gosia0) How do I update the layout correctly to accomodate the live changes?