Owlkettle 3.0.0

2024-03-06 Thread can-lehmann
### [Owlkettle 3.0.0](https://github.com/can-lehmann/owlkettle) has been released! Owlkettle is a declarative GUI framework based on GTK4. This release wraps 27 new widgets and improves on the documentation. See the full [changelog here](https://github.com/can-lehmann/owlkettle/releases/tag

What is the expected behaviour for a proc replacing its own closure?

2023-12-07 Thread can-lehmann
https://github.com/nim-lang/Nim/issues/23044

What is the expected behaviour for a proc replacing its own closure?

2023-12-06 Thread can-lehmann
I am currently debugging an issue in owlkettle and manage to reduce to this minimal example. var p: proc() proc createCallback(x: int): proc() = result = proc() = for it in 0..<100: p = createCallback(it) echo x for it in 0..<10:

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2023-09-13 Thread can-lehmann
The change to square brackets for the `style` field was necessary in order to support custom CSS classes. This change is currently only available in the head version of owlkettle (See [this commit](https://github.com/can-lehmann/owlkettle/commit/0026b234d3c003adfceb7a92c74acec6f64cb308)). I

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-10-28 Thread can-lehmann
# Owlkettle 2.1.0 A [new release was published](https://github.com/can-lehmann/owlkettle/releases/tag/v2.1.0)! Check it out on [GitHub for the full changelog](https://github.com/can-lehmann/owlkettle/releases/tag/v2.1.0). Here is a summary of the changes: * The style used for identifiers

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-10-28 Thread can-lehmann
Thank you for your kind words and of course for contributing to the project!

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-21 Thread can-lehmann
The `Property` widget in `custom_dialog.nim` is a simple viewable widget which is just an abstraction over the existing widgets. It is defined [here](https://github.com/can-lehmann/owlkettle/blob/main/examples/custom_dialog.nim#L29) and expands to a Box containing a Label. You should be able

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-21 Thread can-lehmann
Looks great! I really like that you could write something like Box: Label(@expand = false): text = "Hello" Run without breaking backwards compatibility. I will look into implementing something like this in Owlkettle.

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-15 Thread can-lehmann
> `Button[expand = false]:` This certainly looks better than a pragma, it would however prevent me from supporting generic widgets in the future. Especially since the syntax also needs to support choosing an "adder" (a proc which adds the widget as a child to the parent), so `HeaderBar[add_titl

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-15 Thread can-lehmann
I feel like pragmas generally look a bit out of place in Nim. This might however be a good thing in the case of the main language, since they usually serve a distinct purpose. For the gui DSL there might be better syntax choices. I am open to suggestions here. The main requirement is that a pote

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-15 Thread can-lehmann
> This is great! It runs nicely on MacOS too. Thank you! It is also good to know that it (unintentionally) supports MacOS. Does GTK use the system style of just the default stylesheet? > vs the more YAML-like DSL style: How do you differentiate between attributes and widgets currently? Both sho

Owlkettle 2.0.0 is a declarative GUI framwork for GTK 4

2022-07-13 Thread can-lehmann
Hello! I just released [Owlkettle 2.0.0](https://github.com/can-lehmann/owlkettle). Owlkettle is a declarative GUI framework based on GTK 4. It brings the declarative GUI paradigm you know from many web frameworks to the Linux desktop. ## Example Here is an example for a simple counter app

wierd macro overloading problem

2022-03-24 Thread can-lehmann
I would assume that this problem is an instance of the case documented here: Overloads which require that the type of a parameter is known trigger the resolution of that argument leading to the error mes