Replies: 15 comments 67 replies
-
imgui.movHere is a docking-multiviewport demo. You could also test it locally:
|
Beta Was this translation helpful? Give feedback.
-
Of course I am fine with that. Just want to leave an appreciation note here for your hard work! Thank you for your awesome efforts! |
Beta Was this translation helpful? Give feedback.
-
I'm not much of a developer but I hope I will be able to help with some examples. Please let me know how I can help with this topic. And as for the breaking change, no worries. Thank you very much for the hard work put into this package! |
Beta Was this translation helpful? Give feedback.
-
I can help adopting imgui and implot examples to work with tables and new api. In general, I think ImGui is underestimated as a working solution for writing GUIs in Julia. Maybe we can provide more pure Julia examples of compleх GUI to gain more popularity. Especially with interactive stuff where using other GUI libraries get overcomplicated. As for GLMakie backend, for me it seems like it should be in opposite way - CImGui.jl should have some wrappers for Makie plots widget. |
Beta Was this translation helpful? Give feedback.
-
Everything looks good but I'm not sure I agree about putting all the generated wrappers into one namespace with default Clang.jl output. At least for cimplot, this makes a lot of work for any user since all the plot functions, and subvariants of those plot functions, are templated. I don't mind splitting out When I find another chunk of time, I intend to use a combination of the metadata output from cimplot and ExprTools.jl to craft a more robust version of the extra pass that I currently do during wrapper generation. The metadata output by the cimplot generator is the same form for cimgui and other extensions. Therefore, if I write this well enough it could be useful to all. At least with |
Beta Was this translation helpful? Give feedback.
-
I would also like to thank you for all of your work on CImGui. However, I've just recently started using it, and so some of what you talked about doesn't make sense, lol. Breaking changes are fine with me because i have almost no code other than simple examples written so far. This package solves a lot of potential problems that I see involving Julia and graphics and gui's and I very much agree with @sairus7 that it is very underestimated as a solution for gui applications . Gtk is so much work and far too heavyweight for what i want to do. I need something that interfaces to OpenGL easily and cleanly. CImGui seems to really fit well for what i want to do. I do find Dear ImGui to be really unintuitive in some situations therefore more examples are always welcome and I am happy to contribute examples. |
Beta Was this translation helpful? Give feedback.
-
Oh, I should also add that i can't contribute to helping with the actual CImGui project at this time but only because i'm not very familiar with the library. As i become more familiar with it i believe i will be able to help. |
Beta Was this translation helpful? Give feedback.
-
Hi @Gnimuc , what is the status of this transition? By the way, it would be cool if you could tag a new release that supported the docking branch. |
Beta Was this translation helpful? Give feedback.
-
Hi everyone :) I recently bit the bullet and started updating things for the latest versions of ImGui and ImPlot. I've already opened a bunch of PRs, I'll list them here for completeness (in roughly the order they ought to be merged):
I've tested all of these locally and the demos seem to work fine with no regressions. I have absolutely no idea how to handle versioning/compat bounds for all of them 🙈 |
Beta Was this translation helpful? Give feedback.
-
I guess it's ok to not sync the patch number because Dear Imgui rarely introduces breaking changes between patch versions. |
Beta Was this translation helpful? Give feedback.
-
At last, all PRs merged 🎉 Thanks everyone for the help ❤️ |
Beta Was this translation helpful? Give feedback.
-
Are there any objections to me merging the cimgui-pack and LibCImGui repos into this one, similar to how Makie.jl has sub-projects for GLMakie/CairoMakie? The reason is because I find switching between the repos very annoying and I think it's easier to have them all in one place because they're all quite tightly related to each other. Also, how do we feel about dropping the adherence to ImGui's versioning? Managing breaking changes is kinda a pain, and I think it would end up being better for downstream users if we adopted semantic versioning. |
Beta Was this translation helpful? Give feedback.
-
People! I'm attempting to deprecate our custom GLFW/OpenGL backends in favour of the official backends in #122. It works on my Linux system, but I would very much appreciate it if other folks could follow the instructions in the PR to test it locally on your systems :) In particular OSX and Windows. Note that only Also, who's using the opengl 2 backend? @jpsamaroo /@IanButterworth? |
Beta Was this translation helpful? Give feedback.
-
I'm getting around to updating this for ImGui 1.91.0 (#141), and I'm gonna try generating the wrappers automatically like @wsphillips did with ImPlot.jl. This should be possible to do kinda-sorta-nicely because cimgui supports parsing comments, which I enabled here: JuliaImGui/cimgui-pack#4 There's two ways we could do this:
Any opinions on which would be better? I don't have a strong preference. |
Beta Was this translation helpful? Give feedback.
-
What do y'all think of this thing? https://juliaimgui.github.io/ImGuiDocs.jl/cimgui/stable/ |
Beta Was this translation helpful? Give feedback.
-
Hi,
As you might notice, this package, CImGui.jl, has got stuck in v1.79 for about 7 months. The main reason is that Dear ImGUI introduced a new set of table APIs in v1.80 and it's a bunch of work to update the wrappers and examples. Another reason is Clang.jl. Until recently, Clang.jl had no support for handling C's forward declaration, so I had to manually tweak the auto-generated bindings from time to time, which was quite annoying.
In the last few months, I redesigned and reworked Clang.jl so that one can now regenerate bindings with a single click. However, I adopted a new way for dereferencing pointers and as a result, almost all example codes need to be updated.
For example,
igGetIO()
returns a pointer of typePtr{ImGuiIO}
. With this field access method in v1.79, say we haveio::Ptr{ImGuiIO}=igGetIO()
, then we can runds = io.DisplaySize
to get a valueds
of typeImVec2
. This may look handy at the first glance. But, it does not support chaining, for example,io.DisplaySize.x
cannot work as expected and it's not trivial to make it work in an efficient way. The new field access method generated by Clang.jl now returns a pointer instead of a value.io.DisplaySize.x
will return a pointer and one needs to explicitly writeunsafe_load(io.DisplaySize.x)
to get the value. In this way, we're able to read/load/copy a single value from a big nested struct without copying the whole struct object from C to Julia. So, I think it's worth reworking everything in this new style.Adding support for docking-multiviewport has been in the feature request list for a loooong time(#34). To be honest, the docking feature is the reason why I adopt Dear ImGUI at the very beginning. I've been waited for this feature to be officially released for over two years, but it seems that there are still a few severe bugs on certain platforms and no one is currently working on them, so the development is kinda suspended. On the other hand, the docking branch of Dear ImGUI is relatively stable and is being used by many projects. In #43, @yamen suggested that we should switch to the docking branch and also integrate
ImPlot
for the sake of compatibility and I think this is the right direction.In the last week, I started to rework the whole package to make it easier for long time sustainable maintenance:
CImGuiPack_jll
. Its major version and minor version should always be the same as the Dear ImGui version used incimgui-pack
. As a result, we can enforce semantic versioning in high-level packages likeCImGui.jl
andCImPlot.jl
without losing the version info of the Dear ImGui. This package is fully auto-generated by using Clang.jl with this generator script: https://github.com/JuliaImGui/LibCImGui.jl/blob/master/gen/generator.jl. The above-mentioned field access methods for certain types will be generated as long as the type name is in this list. (Requirements for maintaining: know how to install Julia package and run Julia script.)ImPlot
.The next release(v1.82.0) of CImGui.jl will be breaking, but since it doesn't have many users, I guess it's just OK to not follow the semantic versioning at least for this release.
Anyway, the future direction is definitely to strictly follow semantic versioning. The following list contains the things, I think, that need to be improved before the v2.0.0 release:
Sorry in advance if this is disturbing, but you guys seem to be the only users of this package, any thoughts would be appreciated! :)
cc @jpsamaroo @sairus7 @iuliancioarca @PinkMushroom @IanButterworth @wookay
Beta Was this translation helpful? Give feedback.
All reactions