package bogue
GUI library for ocaml, with animations, based on SDL2
Install
dune-project
Dependency
Authors
Maintainers
Sources
20260208.tar.gz
md5=63a8535116adad2b30cb3431e48e6e02
sha512=0b12273a90751c9262d01b0663f910aa4bea8da2a8e26e73ff0e2a3de1eb3d84364ea9a561f537697eab33e03b89728b270fdf3026efca9ae8461822f38c98ed
doc/CHANGELOG.html
Changelog
All notable changes to the Bogue project will be documented in this file.
The format is based on Keep a Changelog.
Unreleased
20260208
Added
- New module:
Ti_Validator(automatic validating text inputs). Includes an email validator. - New module:
Mailboxfor sending arbitrary message to widgets (experimental, but should be quite powerful to help organizing large and complex UIs) I18n.make_contextis now public.
Changed
breaking! Colors are now separated in two modules
RGBandRGBA. Several functions have been moved to these modules. If you want to cheaply workaround this, just addopen Bogue.RGBA open Bogue.RGBat the top of your file, this should do the job in most cases.
- argument
max_sizeofText_input.createandWidget.text_inputis now renamed tomax_len("size" is used for font size).
Removed
- Remove
colorsdir from the common themes dir.
20250815
Added
BOX_BG_COLOR- New module:
I18n(Internationalization), for translating string to the user's language. Configuration files for 15 languages. - New 'moonfish' theme (dark).
- Theme variables:
[DISABLED_BG]and[DISABLED_FG]. Timeout.add_ignore.Widget.remove_connection,Widget.remove_trigger.
Changed
Popup.one_buttonandPopup.two_buttonsnow have abgoptional argument.
Fixed
- Fall back to default theme if new theme is not found.
File: fix file dialog crashing when monitoring a directory being deleted.
20250219
Added
- New module:
Filefor file selection dialogs and file monitoring. This is quite a complex layout, so we decided make it public now in a beta-testing phase. New features will be added later, and maybe small API changes. - Example #54 with a file dialog.
Popupscan now be closed by pressing ESCAPE.- additional functions in
Mainfor dynamically updating global shortcuts.
Changed
- WARNING!
Table.createnow returns a private type. In order to obtain the layout you should then applyTable.get_layout. Layout.set_sizenow takes optional arguments for sizes (allows to reduce the number of calls toresize_content)Theme.set_integer_scaleis renamed toTheme.set_int_scaleto conform with the env var INT_SCALE.
20241212
Added
- New theme variable NATURAL_SCROLLING.
- New functions
Mouse.wheel_y,Mouse.set_wheel_speed. FlatandTowerhave new resizing strategies.Selectionnew functionsis_empty,size,range,first,last,invert.Tablelayouts can now be resized dynamically.- Can now navigate
tabswith TAB! ;) (preliminary) - Can now enable/disable a layout with
Layout.set_enabled. New Examples #53, #53bis. - changing text color in
Text_displayis now possible, usingWidget.html, see exemple 47. - underlining text in
Text_displayis now possible, usingWidget.html(but spaces between words are not underlined at this point), see example 6. Theme.get_pathis now public.Theme.get_font_path_optLabel.font_from_fileallows the use of arbitrary fonts in addition to the Theme fonts (which is not recommended anyways for good design).- font example 52.
Changed
- Scrolling direction is "natural" by default on Mac OS.
- Options for
Layout.flat*andLayout.tower*have changed. If you were using any ofscale_contentorkeep_resizeyou should use the newresizeoption instead. Layout.unload_texturesis renamedLayout.iter_unload_textures
Fixed
Tablelayouts can now be resized dynamically.- Better resizing for
tabs: menu height is fixed. - Better resizing for
flatandtower: margins are not scaled. Long_listlayouts can now be resized dynamically.Labelstyleparameter is now usable (ocamldoc invocation was wrong fortsdl_ttf), and can also be used forWidget.label.
Developement
- New
Resizemodule insideLayout. - clarify that
dstfield ofblitisNonemeans NO RENDERING. - experimental
Detectfor detecting flat and tower layouts.
20240928
Added
Avar.resetis now public.Layout.is_shown.Layout.insideis now public.Snapshot.to_cursor(experimental).Main.get_monitors_refresh_rate.- "NO_VSYNC" theme variable.
Changed
Main.runandTime.adaptive_fpshave an optional argumentvsync.- Enable adaptive vsync (through openGL) by default.
- There is now no difference between the types
sdl_eventandSdl.Event.enum.
Developement
- New
Time.adaptive_fpsusing swap interval. Main.get_window_refresh_rateDraw.surface_from_texture- We now use tsdl >= 1.0.0.
- We don't un/lock audio automatically anymore.
20240225
Warning: Last version compatible with tsdl < 0.9.9 (and >= 0.9.7)
Added
Text_input.activateis now publicBox.get_styleandBox.set_styleare now public.
Fixed
- Take advantage of recent SDL version to (greatly!) reduce power saving with idle.
- Fix too large cursor position when using Text_input.set
Developement
mouse_at_restnow usesTimeout.- Switch from
directoriestoxdgto work on Windows. - Remove symlinks in doc.
- The
example.mlfile is now calledexamples.ml, which is much more logical since it contains more than 50 examples. - Trying to enforce that all used submodules are aliased (to make it clear they are used) in the header of each file, example
module Time = B_time.
20231209
Added
- Use
directoriesto compute home and config paths, and add special care for Windows OS. - Deal with systems without audio device
Changed
Fixed
- fix flickering menus
- Workaround for Mac OS 13.0.1 cocoa bug when closing windows