- Add new scatter plot markers:
"|", and"-" - Add drag-and-drop functionality (
drag_drop_source,drag_drop_target) - Add
TF.hoverattribute for more robust hover functionality thanImage.hover_tag. - Re-introduce the
maximiziedwindow flag, because just setting window size to a large number doesn't properly work on Windows - Fix a crash on slider and drag widgets
Breaking Changes
Remove the name argument from c.child
concur.core.replace,concur.core.replace_tag,concur.core.replace_valueadded. These make it convenient to transform events without lambdas. Lambdas don't work properly inside loops/comprehensions in Python.
concur.widgets.dummyimplementedconcur.widgets.input_textflags argument added. This enables creating a password input field, among other use-cases.- Make the
imageiodependency non-mandatory.
- Update ImGui to the newest version in the
dockingbranch - Improve some docstrings
Mainly interactive invocation and documentation improvements.
Breaking Changes
c.mainargument order switched up to this. Widget is now first, then the window name (newly optional), then width and height (also newly optional). This simplifies the Hello, world application and other simple examples considerably.
Fixes
- Destroy contexts on
mainexit correctly. This enables multiplemaininvocations with fresh ImGui state. - Better cleanup on exceptions. Sigkill in IPython doesn't hang the window.
Breaking Changes
concur.extra_widgets.framehas new argumentswidth,heightconsistent withconcur.extra_widgets.image.- PanZoom-derived widgets now handle hover, down, and drag events in a different way. Instead of being yielded, they are
passed to the
content_genas a widget. This makes it possible to react to the events incontent_gen, which is better for modularization, and it is newly possible to use the information intfas a part of the reaction. The cost is more complicatedcontent_gensignature. Better solution might be possible. Affected widgets:concur.extra_widgets.pan_zoomconcur.extra_widgets.imageconcur.extra_widgets.frame
- PanZoom-derived widgets are now passed a keyword argument
tf, instead of a positional argument. This will break code which used other names for the transformation info. Affected widgets:concur.extra_widgets.pan_zoomconcur.extra_widgets.imageconcur.extra_widgets.frame
concur.draw.imageargument list was reworked. It now takes additional mandatory argumentsxandy, and non-mandotory argumentsuv_a,uv_b.
Additions
concur.widgets.font: render a widget with a specific font
Fixes
concur.extra_widgets.imagenow correctly handles images with dimensions not divisible by 4. Previously, those may get severely distorted.concur.extra_widgets.imagenow has transparent background even for images without alpha channel.concur.widgets.key_press: fix a a crash on glfw.KEY_SPACE keypress.- Make the system clipboard work by upgrading PyImGui to v1.3.1.
- Add a call to
refresh_font_textureto GLFW initialization. This enables user to specify a font and have it integrated, and is hopefully harmless in all other cases. - Fix a crash on certain greyscale NPOT images
- Fix UI ghosts appearing because the buffer was not cleared.
- New windows are now fixed size on creation, if they aren't in imgui.ini. Previously, they were fit to contents, which works OK only when the contents do not fit to window. In the common case of a window containing only an image widget, the window would have been created outright tiny. This could lead to user not even noticing it.
- Add:
- widget
tree_node - widget
input_text_multiline - widget
text_wrapped - scatter square markers (
's')
- widget
Breaking Changes
- Change colored widgets
text_coloredandcolor_buttonto use the same color spec as the draw functions. - Rename
key_pressedtokey_press - Remove
TF.hovered. Left mouse click & drag is now handled by thepan_zoomobject. - Add left mouse interaction support to
imageandframe. New argumentsdrag_taganddown_tag, andhover_tag.pan_zoom.is_hoveredis no longer present.imageevent handling was substantially reworked. Starting the drag outside image window no longer triggers panning.
key_pressnow respects local keyboard layout
Other changes
- add
TF.inv_transformto tranasform from screen-space to content-space - Make
scatteralso work with empty one-dimensional arrays - Add an
invisible_button, and animage_button - Add
selectabletext - Enable empty polylines
- Add
drag_int2,drag_int3, anddrag_int4widgets - Add modifier key support to
key_press - Add
main_menu_bar,menu, andmenu_item
- Fix a bug where long polylines were sometimes corrupted (use-after-free).
- Move the documentation and homepage to a separate repository
- Implement the square marker
'.'for scatter plot. - Implement
draw.polygonanddraw.polygons- filled convex polygons.
- Add
concur.widgets.mouse_clickwidget, which returns mouse position on click - Add
c.quick_*functions for quick asynchronous plotting without worrying about the threading and event details - Add a
fpsargument toc.main- this is breaking if screencast arguments were used positionally.
- Flexible color specification including xkcd strings. Colors like
(0,1,1),'dark red',('blue', 0.5), or0xffaa0000are now possible.
Breaking Changes
- Change the argument order for
c.draw.textfrom(x, y, color, text)to(text, x, y, color).
Other Changes
- Improve frame tick labels
- Add this changelog
- Add
c.draw.polylinesfor optimized multiple-polyline rendering. It is possible to draw ~100k lines in 60 FPS using this function (instead of ~500 lines). Using this function, it was possible to implement:c.draw.ellipsesfor optimized multiple ellipse drawingc.draw.rectsfor optimized multiple rectangle drawingc.draw.scatterfor scatter plots with fancy markers
- Add experimental benchmarking setup