Releases: pthom/imgui_bundle
v1.5.2
ImGui:
- Updated ImGui to v1.90.9-docking
- Added support for StackLayout: ImGui::BeginHorizontal & ImGui::BeginVertical (by @thedmd)
- Warn if users reuse an ID (cf ocornut/imgui#7669)
Hello ImGui
See changes in Hello ImGui v1.5.0
- add FontDpiResponsive
- add OpenGlOptions
- add null backends
- Improved text rendering on windows (via improved antialiasing)
- Can set OpenGL options in hello_imgui.ini in any parent folder
- add InputTextResizable & WidgetWithResizeHandle
- Logger: use less vertical space
- add Push/PopTweakedTheme (different windows can have different themes)
- add callback PostRenderDockableWindows
- Polish Themes
Libraries
immvision
- fixup Custom version of cv::warpAffine for small sizes
- ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
- fix icon buttons size
- Add option ResizeKeepAspectRatio: when resizing an image, the widget will keep the aspect ratio of the image
imgui-knobs
- can drag knob horizontally or vertically
ImPlot
- Add Python binding for colors (cf #221)
imgui-node-editor
- Add ForceWindowContentWidthToNodeWidth: ImGui::TextWrapped(), ImGui::Separator(), and ImGui::SliderXXX can now fit inside a Node. See proposed fix to @thedmd here: thedmd/imgui-node-editor#298
- The theme of the node editor can be derived and adapted automatically from ImGui Theme (see UpdateNodeEditorColorsFromImguiColors)
Python
- imgui_fig is now resizable
- Added binding for ColorPicker4
- Added mathematical operators for ImVec2, ImVec4, ImColor
- add pickle support for ImVec2, ImVec4, ImColor
- Add eq operator to ImVec2/4/ImColor bindings
- add pydantic support for ImVec2, ImVec4, ImColor
Build
- Add CMake options to disable some libraries
Contributions and contributors
Many thanks to all contributors!
- Update bindings_intro with updated steps by @learn-more in #177
- Add python markdown div example by @learn-more in #176
- update manual pybind function name for imgui backends by @hugle in #203
- MacOS binary wheel installation by @dcnieho in #219
New Contributors
- @learn-more made their first contribution in #177
- @hugle made their first contribution in #203
Full Changelog: v1.3.0...v1.5.0
v1.5.0-rc1
High level changes overview
ImGui:
- Updated ImGui to v1.90.5-docking
- Added support for StackLayout (by @thedmd)
Hello ImGui
See changes in Hello ImGui v1.5.0-rc1
- add FontDpiResponsive
- add OpenGlOptions
- add null backends
- Can set OpenGL options in hello_imgui.ini in any parent folder
- add InputTextResizable & WidgetWithResizeHandle
- Logger: use less vertical space
Libraries
- immvision:
- fixup Custom version of cv::warpAffine for small sizes
- ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
- imgui-knobs: can drag knob horizontally or vertically
Python
- imgui_fig is now resizable
Build
- Add CMake options to disable some libraries
Full changes
Pull requests & contributors
- Update bindings_intro with updated steps by @learn-more in #177
- Add python markdown div example by @learn-more in #176
- update manual pybind function name for imgui backends by @hugle in #203
New Contributors
- @learn-more made their first contribution in #177
- @hugle made their first contribution in #203
Full Changelog: v1.3.0...v1.5.0-rc1
Get python wheels from here
v1.3.0
Version numbers are synced between hello_imgui and imgui_bundle.
New libraries
- Added NanoVG: see python bindings, code of python demos, code of C++ demos, online full demo, online simple demo, and API for integration with ImGui. Works on Linux, Windows, macOS, emscripten, iOS and Android (OpenGL only).
Bundle
- Update imgui to v1.90.1-docking
- Update implot, imgui_test_engine, imgui-node-editor
Python
- Release the Python GIL when rendering: improve multithreading performance (see #171)
- Fix an issue under Ubuntu where cibuildwheel binary wheels did not work (see #170)
Hello ImGui
- Added EdgeToolbars: see definition, callbacks, example usage, and demo
- Callbacks: add EnqueuePostInit, EnqueueBeforeExit, PostInit_AddPlatformBackendCallbacks
- Add renderer_backend_options
- Add support for Extended Dynamic Range (EDR) on macOS : see PR. Added demo / EDR - Only works with Metal
- Test Engine: can re-call params.callbacks.RegisterTests
- rememberEnableIdling default=false (true is too surprising)
- emscripten: Use webgl2 / GLES3
Fixes
- Fix usage of
ShowIdStackTool
without ImGui Test Engine (see #166) - ImGuiColorTextEdit: added bindings for GetSelection / Fixed keyboard selection (see #169)
Full Changelog: v1.2.1...v1.3.0
v1.2.1
Hello ImGui
- Added nice documentation pages
- Uses Freetype for font rendering
- Improved Font Loading utility
- Added support for Colored font and Emoji fonts (Demo)
- Can fully customize the menu bar
Backends
- Review CMake options for backend selection
- Add support for Metal rendering backend (C++ only, macOS only)
- Add support for Vulkan rendering backend (C++ only, Linux, Windows, macOS)
- Add support for DirectX11 rendering backend (C++ only, Windows)
- Add support for DirectX12 rendering backend (C++ only, Windows). Experimental
- Deprecated CMake options IMGUI_BUNDLE_WITH_GLFW and IMGUI_BUNDLE_WITH_SDL
(use HELLOIMGUI_USE_GLFW_OPENGL3 and HELLOIMGUI_USE_SDL_OPENGL3 instead) - updated imgui to v1.90-docking
iOS
- Add LaunchScreen.storyboard for iOS: apps are now full screen
- Add support for EdgeInsets (handle safe area on iOS, i.e. the notch): see here and here
Android
- Hello ImGui now compatible with Android (including assets, app icon, etc.): see instruction here in the Starter template and here
Python
- Can plot Matplotlib figures in Python: see demo and imgui_fig
- Added imgui_ctx: python context manager for imgui.begin / imgui.end, etc (lots)
- Show python & C++ code in the ImGui Demo window (see "Dear ImGui" tab in the interactive manual)
- Added bindings for imgui AddPolyline / AddConvexPolyFilled
- Added bindings for imgui IniFileName and LogFilename, WindowName
- Added bindings for ImGuiInputTextCallback and ImGuiSizeCallback (also see this)
- Python backends: use new ImGui mouse API. Corrected pygame backend keymap
Bundle
- Added starter template repo as quickstart for C++ apps
Contributors
- Fix modal window rendering in pyopengl backend (Fix #156) by @Aman-Anas in #157
- Add fix for scroll and drag by @jc211 in #158
- Bump actions/checkout from 3 to 4 by @dependabot in #164
New Contributors
- @Aman-Anas made their first contribution in #157
- @jc211 made their first contribution in #158
Full Changelog: v1.1.0...v1.2.1
v1.1.0
3D
- Added callback
runnerParams.callbacks.CustomBackground
: display any 3D scene in the background of the app: see doc
App deployment
- Added support for macOS application bundles
- Added option to specify where settings are saved:
RunnerParams.iniFolderType
can be set to:CurrentFolder
,AppUserConfigFolder
,DocumentsFolder
,HomeFolder
,TempFolder
,AppExecutableFolder
. - Support for Application Icon: the file
assets/app_settings/icon.png
will be used to generate the window icon (C++, Python), and app icon (C++ only) for any platform. See assets structure below:
assets/
├── world.jpg # A custom asset
├── app_settings/ # Application settings
│ ├── icon.png # This will be the app icon, it should be square
│ │ # and at least 512x512. It will be converted
│ │ # to the right format, for each platform.
│ ├── apple/
│ │ └── Info.plist # macOS and iOS app settings
│ │ # (or Info.ios.plist + Info.macos.plist)
├── fonts/
│ ├── DroidSans.ttf # Default fonts
│ └── fontawesome-webfont.ttf # used by HelloImGui
│ ├── Roboto
│ │ ├── Roboto-Bold.ttf # Font used by Markdown
│ │ ├── Roboto-BoldItalic.ttf
│ │ ├── Roboto-Regular.ttf
│ │ └── Roboto-RegularItalic.ttf
│ ├── SourceCodePro-Regular.ttf
├── images
│ └── markdown_broken_image.png
Python bindings
- Added initial support for full python backends:
- see bindings/imgui_bundle/python_backends
- see #142
- see full example with glfw3 + OpenGL3: bindings/imgui_bundle/python_backends/examples/example_python_backend_glfw3.py
- Note: ImmApp and Hello ImGui provide advanced support for anti-aliased fonts and HighDPI. This is not provided by python backends: you will have to implement it yourself
- Improved ImGui bindings: added bindings for
ImDrawData
andImDrawList
arrays
(see #142)
CMake
- hello_imgui_add_app and imgui_bundle.add_app can now accept ASSETS_LOCATION as a parameter e.g.
hello_imgui_add_app(my_app file1.cpp file2.cpp ASSETS_LOCATION my_assets)
v1.0.0.0
This release is the first official v1.0.0.0!
See release v1.0.0.0-beta1 for full changelog.
It adds:
- Updated SDL and glfw
- Updated imgui to V1.90 WIP (2023-10-21) and imgui_test_engine
- Updated implot bindings
Full Changelog: v1.0.0-beta1...v1.0.0
v1.0.0-beta1
Added support for ImGui Test Engine
ImGui Test Engine is a Tests & Automation Engine for Dear ImGui.
- Can be used with python, and C++ (all platforms, incl emscripten). See python bindings declarations (stubs).
- Enabled by default inside ImGui Bundle. Needs to be enabled manually when using Hello ImGui.
- Lots of work on making ImGui Test Engine's coroutines (thread based) compatible with Python and emscripten
- ImGui Test Engine is now used to run interactive automations in the interactive manual (click on the "Show me" buttons)
- Added specific demo and doc
Note: See Dear ImGui Test Engine License. (TL;DR: free for individuals, educational, open-source and small businesses uses. Paid for larger businesses)
New library
- Added new library: ImCoolBar
Doc
- Completely reviewed the doc site.
- Added "quickstart & example" section, with lots of examples
- Added & reviewed development doc
- Added specific doc / bindings maintenance (and how to add bindings for new libraries)
Misc
- Python bindings stubs: add "overload" everywhere when required
- cmake: add options to run sanitizers (no warning given by any of them at this moment)
- demo_logger: add logs at startup
- implot python bindings: add plot_bar_groups & plot_pie_chart
- update imgui_toggle (after merged PRs from imgui_bundle)
- update HelloImGui: add callback BeforeImGuiRender
- update ImmVision: can call gladLoadGl if needed (fix #134)
- add demo imgui_example_glfw_opengl3.cpp
Full Changelog: v0.9.0...v1.0.0-beta1
v0.9.0
v0.8.8
- update imgui to v1.89.6 and implot to v0.17
- Enable 32 bits ImDrawIdx for ImPlot
Submodules changes:
- ImmVision: fix exit sequence, can save colormap image
- imgui-node-editor: fixes
- HelloImGui: basic apps can run without font assets / can set docking options for main dock space
v0.8.7
Updates and new features
- ImGui: updated imgui to v1.89.6 (May 2023)
- ImGui: python bindings now can use SDL2 (glfw is of course still supported, and remains the default with Hello ImGui)
- ImGui: Add python bindings for drag&drop
- HelloImGui: can now handle several layouts and save settings per layout (see details below)
- HelloImGui: can now store user defined settings in the ini file
- HelloImGui: now remembers user choices for the theme, status bar, and fps throttling
- HelloImGui: handle utf8 filenames for assets loading
- ImGuiColorTextEdit is now based on @santaclose fork
- immvision bindings: use shared memory (between python and C++) for images
- ImPlot bindings: Add support for colormap in implot python bindings
- ImPlot bindings: Add support for heatmaps
As always, an online interactive manual is available
More details about layouts handling with Hello ImGui:
Each layout has a different spatial layout and can contain a different list of windows. Each layout also remembers the user modifications to this given layout, as well as the list of opened windows.
See this online emscripten demo of the docking and layout, the C++ demo code, and python demo code
For more explanations on how to handle complex layouts, see this video explanation on YouTube (5 minutes)