package bogue

  1. Overview
  2. Docs

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: Mailbox for sending arbitrary message to widgets (experimental, but should be quite powerful to help organizing large and complex UIs)
  • I18n.make_context is now public.

Changed

  • breaking! Colors are now separated in two modules RGB and RGBA. Several functions have been moved to these modules. If you want to cheaply workaround this, just add

      open Bogue.RGBA
    open Bogue.RGB

    at the top of your file, this should do the job in most cases.

  • argument max_size of Text_input.create and Widget.text_input is now renamed to max_len ("size" is used for font size).

Removed

  • Remove colors dir 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_button and Popup.two_buttons now have a bg optional 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: File for 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.
  • Popups can now be closed by pressing ESCAPE.
  • additional functions in Main for dynamically updating global shortcuts.

Changed

  • WARNING! Table.create now returns a private type. In order to obtain the layout you should then apply Table.get_layout.
  • Layout.set_size now takes optional arguments for sizes (allows to reduce the number of calls to resize_content)
  • Theme.set_integer_scale is renamed to Theme.set_int_scale to conform with the env var INT_SCALE.

20241212

Added

  • New theme variable NATURAL_SCROLLING.
  • New functions Mouse.wheel_y, Mouse.set_wheel_speed.
  • Flat and Tower have new resizing strategies.
  • Selection new functions is_empty, size, range, first, last, invert.
  • Table layouts can now be resized dynamically.
  • Can now navigate tabs with TAB! ;) (preliminary)
  • Can now enable/disable a layout with Layout.set_enabled. New Examples #53, #53bis.
  • changing text color in Text_display is now possible, using Widget.html, see exemple 47.
  • underlining text in Text_display is now possible, using Widget.html (but spaces between words are not underlined at this point), see example 6.
  • Theme.get_path is now public.
  • Theme.get_font_path_opt
  • Label.font_from_file allows 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* and Layout.tower* have changed. If you were using any of scale_content or keep_resize you should use the new resize option instead.
  • Layout.unload_textures is renamed Layout.iter_unload_textures

Fixed

  • Table layouts can now be resized dynamically.
  • Better resizing for tabs: menu height is fixed.
  • Better resizing for flat and tower: margins are not scaled.
  • Long_list layouts can now be resized dynamically.
  • Label style parameter is now usable (ocamldoc invocation was wrong for tsdl_ttf), and can also be used for Widget.label.

Developement

  • New Resize module inside Layout.
  • clarify that dst field of blit is None means NO RENDERING.
  • experimental Detect for detecting flat and tower layouts.

20240928

Added

  • Avar.reset is now public.
  • Layout.is_shown.
  • Layout.inside is now public.
  • Snapshot.to_cursor (experimental).
  • Main.get_monitors_refresh_rate.
  • "NO_VSYNC" theme variable.

Changed

  • Main.run and Time.adaptive_fps have an optional argument vsync.
  • Enable adaptive vsync (through openGL) by default.
  • There is now no difference between the types sdl_event and Sdl.Event.enum.

Developement

  • New Time.adaptive_fps using swap interval.
  • Main.get_window_refresh_rate
  • Draw.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.activate is now public
  • Box.get_style and Box.set_style are 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_rest now uses Timeout.
  • Switch from directories to xdg to work on Windows.
  • Remove symlinks in doc.
  • The example.ml file is now called examples.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 directories to 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
etc.

20221112

older versions are not documented here yet...