Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal migrate code from gtkmm to ImGui #306

Closed
bvernoux opened this issue Jan 5, 2021 · 5 comments
Closed

Proposal migrate code from gtkmm to ImGui #306

bvernoux opened this issue Jan 5, 2021 · 5 comments

Comments

@bvernoux
Copy link
Contributor

bvernoux commented Jan 5, 2021

The idea is to migrate from gtkmm to ImGui (https://github.com/ocornut/imgui)

For following reasons/known issues with gtkmm:

  • Full-screen broken on Windows see [Windows] Going into fullscreen mode and out again causes the window title bar to permanently disappear #273
  • gtkmm is really bloated with tons of dlls (more than 20 dependencies/dll and a real nightmare to package it and build it as static build with GPL/LGPL license conflicts ...)
  • So far to display text it is not natively managed in gtkmm with opengl support and it is done with the bloated/slow cairo ... (it is natively supported with very nice/fast GUI/Widget... in ImGui)
  • TODO add other issues with gtkmm (especially related to portability, slowness, limitations)
@azonenberg
Copy link
Collaborator

I'm not in favor at this time. Can imGui display popup windows like we use for protocol analyzers, etc? GTK for external UI chrome makes sense, it's separate from the waveform rendering and doesn't have to be super fast.

It seems like it might be a viable solution for the WaveformArea overlays, but most of that isn't performance critical anyway. For the most part, text isn't a bottleneck in performance since not much is on screen at a time. Broken fullscreen is an issue but I don't think it's worth switching UI toolkits to fix.

gtkmm has pre-existing installers and packaging, why would we build it ourselves? And if we use prebuilt binary DLL/SO packages without modifying it, LGPL vs permissive license is of no consequence.

@bvernoux
Copy link
Contributor Author

bvernoux commented Jan 5, 2021

ImGui support popup window of course (including dialog ...) and tons of things much more advanced and easy to use than gtkmm (see ocornut/imgui#1453)
I created that issue as I think for long term gtkmm is a dead end (everything is very complex for nothing and the widget/UI stuff are ugly and slow when compared to widget/UI on ImGui which is in addition heavily used in industry (mainly game but also ultra advanced tools see https://developer.nvidia.com/nvidia-omniverse-platform ...)

@azonenberg
Copy link
Collaborator

We'll keep this issue open and think about it for the long term. I'm not ruling it out, but it would be a massive refactoring and I'm in no hurry.

@bvernoux
Copy link
Contributor Author

bvernoux commented Jan 9, 2021

Yes there is no hurry and the advantage of ImGui is we can replace some dialog/popup/menu... from gtkmm to ImGui/ImPlot step by step without removing gtkmm (and keep gtkmm until the end if we see major improvement with ImGui/ImPlot especially with docking/multi-viewport branch)

@azonenberg azonenberg added the tabled Plans for the future. Not ready to write code yet. label Apr 28, 2021
@azonenberg azonenberg removed the tabled Plans for the future. Not ready to write code yet. label Sep 10, 2022
@azonenberg
Copy link
Collaborator

Closing this issue now that the ngscopeclient experiment is underway. We can file separate tickets for individual bugs/features in ngscopeclient as needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants