[ANN] CImGui.jl - A Wrapper for Bloat-free Immediate Mode Graphical User interface(Dear ImGui)

GLFW should responsible for returning that value when users close the GLFW window(IIRC, either by clicking the [x] button or pressing Esc?).

Ahhhhh I understand. That doesn’t work for me, but maybe that’s because I’m using i3wm, which is a bit unusual in that respect.

Thank you!

EDIT: fot future reference, it DOES work with i3wm, you just have to use the keyboard instead of the mouse: Pressing ALT+SHIFT+Q will correctly trigger WindowShouldClose(window).

Heyo heyo :octopus: Necro’ing this topic to say that v3 is released now and you can check out the changelog here: Changelog · CImGui.jl

Hopefully this is a not-too-breaking release :crossed_fingers: The big changes are the update to ImGui 1.91.1, and generating all the wrappers automagically.

(P.S. check out ImGuiTestEngine.jl · ImGuiTestEngine for writing tests, helps a lot with making sure everything works after upgrading)

v4 has been released to wrap ImGui 1.91.6: Changelog · CImGui.jl

There were quite a few IO-related breaking changes in 1.91.5 so I’d recommend checking out the changelogs.

As I understand, all imgui + cimgui libraries to be used by Julia libraries are bundled into CImGuiPack, right?
The setup is quite involved, and I couldn’t understand (even with AI :slight_smile: ) how to:

  • update implot version? recently, v1 was released, would be nice to have it in Julia
  • use implot3d?

Yes, the process is rather convoluted I’m afraid :sweat_smile: I’ve written some docs here about updating all the library versions, lemme know if you get stuck anywhere: Contributing · CImGui.jl

Usually I go with the latest versions of all packages rather than updating just implot. To wrap implot3d you’d need to:

  1. Add cimplot3d to cimgui-pack or make a new JLL for it. I don’t have strong opinions on which is better, though I suspect that given how tightly integrated imgui and its dependent libraries are it’s easier to keep it all in one JLL.
  2. Add a new package (or add it as part of ImPlot) that generates Julia wrappers for the implot3d functions. Writing a script to generate nice Julia wrappers is quite difficult, though probably easier these days with AI.

I wonder if we can make everything work together without the requirement that all C libraries are bundled into a single jll artifact?
Proof of concept seems to work: GitHub - aplavin/implot3d_test · GitHub. Build and demo app using CImGui.jl + implot3d works correctly.
What do you think about this approach @JamesNZ, basically having at least extra less-commonly-used libraries packaged as separate jlls?

As long as compat bounds are set appropriately I think that’s totally fine :+1: Feel free to steal the generator code from one of the existing projects BTW, it should be fairly possible to get the CImGui.jl generator script to work with the cimplot3d bindings. And if you’d like you’re very welcome to move the Julia package to the JuliaImGui org and we could add you as a member :slight_smile: In any case it would be cool to have the Julia package docs linked in our multidocumenter setup.

Yggdrasil PR [CImPlot3D] new package, v0.4.0 · Pull Request #13747 · JuliaPackaging/Yggdrasil is pending (could you please review it, in case anything is off?).
After that, plan to create CImPlot3D.jl package – and of course would be happy to create it in that org / move there!

I was just worried whether I missed anything – given that imgui + implot + testengine + imnodes are all bundled in a single jll.