Skip to content

Latest commit

 

History

History
1108 lines (782 loc) · 57.7 KB

CHANGELOG.md

File metadata and controls

1108 lines (782 loc) · 57.7 KB

Change Log

0.12.4

  • Fix issue #67 (The Japanese text is displayed strangely), thanks to PR #68 by @junogura

0.12.3

  • Upgrade to libui 0.1.2 (final version of 0.1.2.pre)

0.12.2

  • New code_entry control [ALPHA/EXPERIMENTAL/INCOMPLETE/UNSTABLE] (similar to code_area, but with code editing functionality).
  • New examples/basic_code_entry.rb
  • Update examples/basic_code_area.rb to have padding inside the code_area and no window padding anymore
  • Have code_area handle italic syntax highlighting styles
  • Support code_area font_family and font_size options
  • Controls prepend Parent mixin to keep track of their children via children attribute
  • tab_item always generates a vertical_box root container (root_proxy) before adding its child content within it (also, it does not generate a horizontal_box anymore by default if it had no content to start, yet a vertical_box all the time)
  • Upgrade to glimmer 2.7.9
  • Fix issue in code_area not recognizing indentation

0.12.1

  • Fix issue with getting error "superclass mismatch for class Array" when concurrent-ruby is included in a desktop applications as it is required to load concurrent-ruby before glimmer, so now glimmer-dsl-libui will attempt loading concurrent-ruby if available or default to old behavior otherwise.

0.12.0

  • Custom Control Component Slots (containers that could accept content within different parts of a Custom Component)

0.11.10

  • Fix issue with not being able to add content to the body root of a custom control by opening a block when invoking the custom control keyword

0.11.9

  • Support Content Data-Binding to multiple model attributes via computed_by option (e.g. content(@game, :scale, computed_by: [:width, :height]) or content(@game, computed_by: [:scale, :width, :height]) will rebuild content on changes to :scale, :width, or :height)

0.11.8

  • Fix issue with applying a transform inside a Glimmer::LibUI::Application, Glimmer::LibUI::CustomControl, Glimmer::LibUI::CustomWindow, or Glimmer::LibUI::CustomShape (it otherwise worked when using Glimmer GUI DSL in top-level object)
  • Refactor/simplify examples by removing unnecessary vertical_box/horizontal_box uses

0.11.7

  • Fix issue with table checkbox_text_color_column checkbox edits not working

0.11.6

  • Organize scaffolded application menus under a menu_bar method
  • Optimize performance of startup time, cutting ~26ms by delaying load of certain gems until needed:
    • Cut ~16ms of startup time by not loading perfect-shape gem until area canvas graphics are used
    • Cut ~10ms of startup time by not loading color gem until used by Glimmer::LibUI.interpret_color method
  • Optimize performance of scaffolding, cutting ~54ms by not loading facets gem completely, yet load used part of facets only ('facets/string/titlecase')
  • Optimize performance of glimmer command listing of gems, cutting ~54ms by not loading facets gem completely, yet load used part of facets only ('facets/string/titlecase')
  • Fix issue with listener_expression.rb failing for TextProxy due to not having can_handle_listener? method.
  • Fix issue with TextProxy.can_handle_listener? crashing when text is nested under area on_draw

0.11.5

  • Support table explicit data-binding with a model attribute that returns an Enumerator (instead of an Array)

0.11.4

  • Fix issue with Content Data-Binding not working
  • Fix issue with not successfully processing layout properties (e.g. stretchy) when nested under custom controls/windows

0.11.3

  • Support nesting on_mouse_* listeners under text

0.11.2

  • Fix issue with getting error when nesting property content under custom controls/shapes/windows (fixes examples/basic_custom_shape.rb)

0.11.1

  • Refactor examples/dynamic_form.rb
  • Freeze LibUI version at 0.1.2.pre because 0.1.3.pre has issues like preventing the ability to close window with CMD+Q shortcut by default on Mac

0.11.0

  • Control content data-binding to generate nested controls dynamically based on a model attribute change
  • examples/dynamic_form.rb to demonstrate control content data-binding

0.10.2

  • In Snake example, change snake direction on key press instead of key release to be more responsive for players who are not used to releasing pressed keys quickly
  • In Snake example, fix issue with detecting collision too soon if a snake fills the entire space horizontally or vertically
  • In Snake example, fix issue of hearing beeps on every direction change because of not properly informing LibUI when the area key down event is handled
  • In Snake example, refactor Snake::Model::Snake to be more readable like high-level game domain rules (especially move method)

0.10.1

  • Scaffold custom shape
  • Scaffold custom shape gem
  • List Custom Shape Gems (expected name format: glimmer-libui-cs-gemname-namespace) via glimmer list:gems:customshape[query]

0.10.0

  • Support Custom Shapes by mixing in Glimmer::LibUI::CustomShape to abstract composite shapes/text/image concepts inside an area
  • examples/basic_custom_shape.rb example
  • Support nesting listeners under a Custom Shape that will automatically get added to its body_root control
  • Support nesting listeners under a Custom Control that will automatically get added to its body_root control
  • Do not include Glimmer in top-level class when scaffolding Applications/Custom-Window-gems as it is unnecessary

0.9.7

  • Scaffold Custom Control Gem via glimmer scaffold:gem:customcontrol[name,namespace] (or alias: glimmer scaffold:gem:cc[name,namespace])
  • List Custom Control Gems (expected name format: glimmer-libui-cc-gemname-namespace) via glimmer list:gems:customcontrol[query] (or alias: glimmer list:gems:cc[query])

0.9.6

  • Scaffold Custom Window Gem via glimmer scaffold:gem:customwindow[name,namespace] (or alias: glimmer scaffold:gem:cw[name,namespace])
  • List Custom Window Gems (expected name format: glimmer-libui-cw-gemname-namespace) via glimmer list:gems:customwindow[query] (or alias: glimmer list:gems:cw[query])
  • List Glimmer DSLs via glimmer list:gems:dsl[query]

0.9.5

  • Scaffold Custom Control via glimmer scaffold:customcontrol[name,namespace] (or alias: glimmer scaffold:cc[name,namespace])

0.9.4

  • Scaffold Custom Window via glimmer scaffold:customwindow[name,namespace] (or alias: glimmer scaffold:cw[name,namespace])

0.9.3

  • Application Scaffolding via glimmer scaffold[app_name] includes a Model layer

0.9.2

  • Add glimmer commands glimmer package:gem, glimmer package:gemspec, and glimmer package:clean

0.9.1

  • Scaffold an application via Glimmer Command: glimmer scaffold[app_name]
  • Hide unsupported Scaffolding tasks in Glimmer Command
  • Add missing Glimmer Command gem dependencies: rake, rake-tui, text-table, puts_debuggerer

0.9.0

  • Support glimmer command to more conveniently run applications (glimmer app_path) and examples (glimmer examples)

0.8.0

  • Support composite_shape keyword (alias: shape) as aggregate (composite) shape that can have arbitrary shapes, text, transforms underneath, which inherit its fill/stroke colors and transform. composite_shape also supports nesting mouse listeners, which check mouse click point containment against all nested shapes automatically.
  • New examples/basic_composite_shape.rb with use of shape + drag and drop support for moving shapes and click support for changing shape colors
  • Invert Glimmer::LibUI::ControlProxy::KEYWORD_ALIASES to enable adding multiple aliases per keyword
  • Support Glimmer::LibUI::Shape::KEYWORD_ALIASES to enable adding multiple aliases per keyword
  • Small update for examples/button_counter.rb

0.7.8

  • Upgrade to perfect-shape gem version 1.0.8 to fix a crashing issue in examples/shape_coloring.rb

0.7.7

  • Support ability for area on_key_event/on_key_down/on_key_up listeners to return a boolean value indicating whether they handled a key event or not in case some key events need to be left to other operating system key handlers like COMMAND+Q for the Mac quit menu item
  • Update examples/tetris.rb to return false in its on_key_down listener for unhandled events
  • Update examples/area_gallery.rb to return false in its on_key_event/on_key_down/on_key_up listeners for unhandled events

0.7.6

  • Fix issue with hearing "fonk" sound on every key press when handling on_key_event/on_key_down/on_key_up listeners (by returning expected 1 value if the listeners are handled properly or otherwise allowing the "fonk" sound to ring when the listeners are not handled)
  • Update examples/tetris.rb with COMMAND+Q shortcut for quitting on the Mac and ALT+F4 shortcut for quitting on Windows/Linux

0.7.5

  • Fix issue 46 (GTK Error rendering table with zero initial elements), which happens when explicitly data-binding table cell_rows to an empty array

0.7.4

  • table sortable property (default: true) to enable automatic table sorting support when cell_rows is an Array (does not sort if cell_rows is a lazy enumerable)
  • Fix issue with not auto-checking checkboxes for zero-or-many table selection in examples/basic_table_selection2.rb
  • Rename examples/basic_table_selection.rb to examples/basic_table_selection3.rb and add new examples/basic_table_selection.rb with automated table selection via sortable property (default: true)
  • Disable automatic sorting by default in refined_table (set its table sortable property to false) since it does not sort over the entire collection, yet the visible collection only
  • Disable sortable sorting for table button_column since it does not make sense for it

0.7.3

  • table selection data-binding support
  • table column sort_indicator data-binding support
  • New examples/basic_table_selection2.rb that uses selection, selection_mode, header_visible, and sort_indicator data-binding support

0.7.2

  • table on_selection_changed listener arguments now provide extra arguments of selection, added_selection, removed_selection after first argument (table)
  • Update examples/basic_table_selection.rb to use new on_selection_changed arguments of selection, added_selection, and removed_selection

0.7.1

  • table column on_clicked listener (can be nested under text_column, text_color_column, button_column, checkbox_column, checkbox_text_color_column, image_column, image_text_color_column, image_text_column, and progress_bar_column)
  • table column sort_indicator property (can be nil, :ascending [aliases: :asc, :a], :descending [aliases: :desc, :d])
  • table column set_sort_indicator alias for sort_indicator= can accept an option of reset_columns: false to avoid resetting sort indicator of other columns when setting sort indicator on a specific column
  • table header_visible property (Boolean)
  • Fix issue with table selection_mode getting set to nil if not specified

0.7.0

  • Upgrade to libui v0.1.2.pre (including newer libui-ng with table selection API)
  • table on_row_clicked, on_row_double_clicked, and on_selection_changed listeners
  • table selection property (including selection= attribute writer)
  • table selection_mode property supporting values: :zero_or_many , :none , :zero_or_one , and :one
  • Support radio_buttons selected value of nil, treating as -1 to clear selected radio button.
  • examples/basic_table_selection.rb

0.6.2

  • Fix issue with examples/lazy_table.rb not working in Windows due to error: block in apply_windows_fix: undefined method << for #:each> (NoMethodError) @cell_rows << new_row

0.6.1

  • examples/lazy_table.rb (4 versions) table lazy loading with a million rows via Enumerator or Enumerator::Lazy to enable instant app startup time
  • Support table cell_rows implicit data-binding to a collection of models (only supported an array of arrays before in implicit data-binding)

0.6.0

  • Upgrade to libui Ruby gem version 0.1.0.pre.0, which includes a newer C libui alpha release (libui-ng Nov 13, 2022)
  • Support table cell_rows Enumerator or Enumerator::Lazy value to do lazy loading of data upon display of rows instead of immediate loading of all table data, thus improving performance of table initial render for very large datasets
  • Fix issue with table progress_bar_column not getting updated successfully on Windows if there were dual or triple columns before it.
  • Fix issue with table progress_bar_column not getting updated successfully on Windows if data-binding table to an array of models instead of an array of arrays
  • Fix issue with table checkbox_column checkbox editing not working in Mac by including a new C libui-ng release
  • Fix issue with table checkbox_text_column checkbox editing not working in Mac or Windows by including a new C libui-ng release
  • Update examples/basic_table_checkbox.rb to enable editing checkbox values
  • Update examples/basic_table_checkbox_text.rb to enable editing checkbox/text values
  • [final] Optimize table scrolling performance when having many rows and columns (prevent recalculation of expanded_cell_rows on every cell evaluation). Resolve: #38
  • [final] refined_table pagination: false option to disable pagination, but keep filtering.
  • [final] Fix issue with Glimmer::LibUI::interpret_color support for [r, g, b, a] Array-based colors, returning [r, g, b] only without alpha value
  • [final] Fix issue "Cannot add rows to a table that started empty": #36
  • [final] window #open method as alias to #show
  • [final] window #focused? read-only property
  • [final] Document window on_focus_changed listener
  • [final] Update examples/basic_child_window.rb to demo on_focus_changed and focused?
  • [final] open_folder support
  • [final] examples/control_gallery.rb now includes an "Open Folder" File menu item

0.6.0.pre.3

  • Optimize table scrolling performance when having many rows and columns (prevent recalculation of expanded_cell_rows on every cell evaluation). Resolve: #38
  • refined_table pagination: false option to disable pagination, but keep filtering.
  • Fix issue with Glimmer::LibUI::interpret_color support for [r, g, b, a] Array-based colors, returning [r, g, b] only without alpha value

0.6.0.pre.2

  • Fix issue "Cannot add rows to a table that started empty": #36

0.6.0.pre.1

  • window #open method as alias to #show
  • window #focused? read-only property
  • Document window on_focus_changed listener
  • Update examples/basic_child_window.rb to demo on_focus_changed and focused?

0.6.0.pre.0

  • open_folder support
  • examples/control_gallery.rb now includes an "Open Folder" File menu item

0.5.24

  • Update examples/gp2_notepad.rb to avoid sorting ( thank you @kojix2 )
  • Fix issue with refined_table crashing when cell_rows contains nil values for some of the cells.

0.5.23

  • New examples/gp2_notepad.rb

0.5.22

  • Update support for refined_table column-specific term filtering to do an exact term filtering when entering a double-quoted column value (e.g. first_name:"John Doe")

0.5.21

  • Support refined_table AND-based filtering by treating multiple words as WORD1 AND WORD2, etc...
  • Support refined_table exact term filtering by surrounding word by double-quotes
  • Support refined_table column-specific term (column_name:term) filtering by concatenating column name (with or without double quotes) with column value (with or without double quotes) using colon
  • Support refined_table filter option that should be a lambda that accepts text, query args and returns true or false for whether the text matches the query (Glimmer::LibUI::CustomControl::RefinedTable::FILTER_DEFAULT is the default value)

0.5.20

  • Fix issue with selecting a radio_menu_item causing a crash when included with other types of menu_item under a menu

0.5.19

  • New refined_table filter_query option to set initial filter
  • Support refined_table filter_query=(new_query) method to enable setting a new filter_query programmatically after initial rendering, automatically filtering table content
  • Support refined_table model_array=(new_array) method to enable setting a new model_array programmatically after initial rendering, automatically filtering by filter_query if any
  • Rename refined_table paginated_model_array attribute to refined_model_array to represent its paginated filtered model array

0.5.18

  • CustomWindow.launch(...) returns the launched application/custom-window (e.g. PaginatedRefinedTable.launch returns the PaginatedRefinedTable instance that was automatically constructed)
  • CustomWindow.launched_application/CustomWindow.launched_custom_window returns the launched application of a previous .launch call. This can be useful for rescuing errors and performing cleanup on the view object attributes after .launch returned.

0.5.17

  • Ensure disabling pagination buttons in refined_table if page is at beginning or end
  • Add a "of #{page_count} pages" label after the text control in refined_table pagination area
  • Page count ("of #{page_count} pages" label) can be shown by setting visible_page_count: true in refined_table options
  • Correct initial page option passed to refined_table if out of range
  • If refined_table model_array has no more than a single page of data, then hide pagination buttons

0.5.16

  • refined_table custom control that renders a table with filtering and pagination, thus being able to handle a large data set (e.g. 50,000)
  • New examples/paginated_refined_table.rb

0.5.15

  • Fix an issue with rendering table content changes when the number of rows changes with new content that is not a subset of the old content or a container of it

0.5.14

  • Basic Child Window example
  • Modify default window closing behavior to autodetect if the window is a child window (not the main window), and if closed, ensure that does not quit the app.
  • Accept true and false as return values for on_closing window listener as aliases to 1 and 0

0.5.13

  • Fix issue with rendering table content changes when having many rows

0.5.12

  • Upgrade perfect-shape gem to 1.0.5 to address Ruby 3.1 issue with matrix gem getting extracted from Ruby into a bundled gem

0.5.11

  • Upgrade to perfect-shape 1.0.4
  • Update examples/shape_coloring.rb with basic drag and drop support
  • Support #move_by(x_delta, y_delta) (alias translate) method on all shapes and path (e.g. useful in drag and drop)
  • Support #move(x, y) method on all shapes and path to move to x,y coordinate directly
  • Support #min_x minimum x coordinate of shape/path (of top-left corner)
  • Support #min_y minimum y coordinate of shape/path (of top-left corner)
  • Support #max_x maximum x coordinate of shape/path (of bottom-right corner)
  • Support #max_y maximum y coordinate of shape/path (of bottom-right corner)
  • Support #center_point (Array of x,y) center point of shape/path
  • Support #center_x center x coordinate of shape/path
  • Support #center_y center y coordinate of shape/path

0.5.10

  • Support nesting area mouse listeners underneath shapes directly given the newly added support for the include?(x, y) method, which can be used to detect if a mouse event fired for a specific shape
  • examples/shape_coloring.rb

0.5.9

  • Upgrade to glimmer v2.7.3
  • Upgrade to perfect-shape v1.0.3
  • Support path/figure/shape #contain?, #include?, and #bounding_box methods via perfect-shape algorithms applying the path winding rule (aka draw_fill_mode)

0.5.8

  • Support code_area class-based custom control as a code-syntax-highlighted area control using the rouge gem
  • examples/basic_code_area.rb
  • Handle hex colors that have a 3-digit shorthand
  • Stop annoying false negative logs when using Glimmer::LibUI::CustomWindow

0.5.7

  • Support Custom Window keywords (aka Applications) using Glimmer::LibUI::CustomWindow or alias of Glimmer::LibUI::Application
  • Refactor examples/class_based_custom_controls.rb to use Glimmer::LibUI::Application (alias: Glimmer::LibUI::CustomWindow)

0.5.6

  • Upgrade to glimmer 2.7.1 and document its support for keyed data-binding
  • Support class-based custom controls
  • examples/class_based_custom_controls.rb example
  • Rename examples/method_based_custom_keyword.rb example to examples/method_based_custom_controls.rb

0.5.5

  • Upgrade to libui 0.0.15 (with official Mac ARM64 support)
  • Update README with Area Animation spinner custom control

0.5.4

  • Support figure bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Have path draw_fill_mode return :winding or :alternate while draw_fill_mode_value returns 0 or 1 respectively

0.5.3

  • Support polyline bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Support polygon bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Support polybezier bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)

0.5.2

  • Support line bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Support bezier bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)

0.5.1

  • Upgrade to libui 0.0.14
  • Alter Shape#contain? to support outline: and distance_tolerance: options as per perfect-shape gem
  • Support arc bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Support circle bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)

0.5.0

  • Upgrade to glimmer 2.6.0
  • Support rectangle bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)
  • Support square bounding_box (minx, miny, width, height), contain? method (checking if shape contains point inside) and include? method (checking on outline if stroked and inside if filled?)

0.4.22

  • examples/tetris.rb "Show Next Block Preview" menu item under "View" menu
  • examples/tetris.rb "Speed" menu
  • Fix issue with examples/tetris.rb not accelerating upon level ups

0.4.21

  • Pause via spacebar in examples/snake.rb (all versions)
  • Upgrade to glimmer 2.5.5

0.4.20

  • New examples/area_based_custom_controls.rb
  • Fix issue with calling destroy multiple times on children of vertical_box/horizontal_box/form (worked only the first time before this fix)

0.4.19

  • Have line optionally support 4 arguments instead of 2 to use outside of a figure
  • Have bezier optionally support 8 arguments instead of 6 to use outside of a figure
  • Minor fix to observe keyword code (had the wrong DSL name)

0.4.18

  • Support setting table cell_rows after the table definition completed (e.g. @table.cell_rows = data after table {} curly braces closed already)
  • Support adding to table cell_rows piecemeal after the table definition completed (e.g. data.each { |row| @table.cell_rows << row } after table {} curly braces closed already)
  • Support notifying observers of control property changes when calling the set_attribute version of attribute writers, not just attribute=
  • Hide background field in examples/custom_draw_text.rb on Windows since it is not supported there
  • Fix issue with quit_menu_item click resulting in a stack overflow on Windows

0.4.17

  • Remove Windows workaround of always adding an extra row at the bottom of table as it is no longer necessary after adding a better workaround (on Windows, add & remove row just after constructing table to get rid of double-delete glitch)
  • Improved parsing code of examples/cpu_percentage.rb for Windows to make it more resilient
  • Upgrade to glimmer 2.5.3 to silently ignore frozen observables with observe(*args, ignore_frozen: true)
  • Added equalizer gem dependency to properly provide equality methods for Glimmer::LibUI::ControlProxy::ImageProxy

0.4.16

  • Upgrade to glimmer 2.5.1
  • Fix issue on Windows with table having image column crashing when empty

0.4.15

  • Support ability to attach multiple listeners on a control (e.g. multiple on_changed {} on entry or multiple on_clicked on button)
  • Ensure clearing custom listeners on #destroy of a control
  • Add on_destroyed as alias for on_destroy listener on window
  • Avoid wasting time on destroy of a control (e.g. freeing resources) when the main window is getting destroyed, thus closing entire application instantaneously
  • Have validation in examples/form_table.rb complain about nil values (no value entered)
  • Fix Reset button in examples/meta_example.rb when on a version other than version 1
  • Fix issue with calling #destroy on open_type_features

0.4.14

  • Support passing width or height alone to image keyword, calculating the other dimension automatically while preserving original aspect ratio
  • Support passing x and y coordinates to image keyword as 2nd and 3rd arguments of 5 arguments (file, x, y, width, height)
  • Support passing x, y, width, height to image keyword as options kwargs

0.4.13

  • Shorten height of examples/cpu_percentage.rb
  • Optimize table image object by caching for multiple images sharing the same arguments

0.4.12

  • Support table data-binding to model rows when utilizing dual-columns or triple-columns (e.g. columns having color and/or a checkbox in addition to text)
  • Support passing table image/image_text cell_rows image data as file path/image args directly (without using image keyword)
  • Add examples/basic_table_color.rb version that data-binds to model rows instead of raw data
  • Simplify examples/basic_table_color.rb to pass image data as file-path/width/height arguments directly
  • Simplify examples/basic_table_image.rb to pass image data as file url directly
  • Simplify examples/basic_table_image_text.rb to pass image data as file url directly
  • Fix issue with hex color support for colors starting with '#'

0.4.11

  • Support table cell_rows explicit bidirectional data-binding (with <=> sign)
  • Support table cell_rows explicit bidirectional data-binding with model-based rows (not Arrays of column cells) by expecting model attributes to match underscored column names
  • Support specifying column_attributes as Hash map (e.g. {'State/Province' => :state}) in table cell_rows explicit bidirectional data-binding with model-based rows (not Arrays of column cells)
  • Support specifying column_attributes as Array (e.g. [:name, :email, :phone, :city, :state]) in table cell_rows explicit bidirectional data-binding with model-based rows (not Arrays of column cells)
  • Ensure post_add_content is not called on controls and shapes during Shine syntax data-binding
  • Improve examples/basic_table_button.rb with bidirectional data-binding for table cell_rows
  • Improve examples/form_table.rb with bidirectional data-binding for table cell_rows
  • Ensure examples/meta_example.rb has examples sorted
  • Fix minor issue in examples/meta_example.rb by deselecting radio in basic examples when selecting an advanced example (and vice versa)

0.4.10

  • examples/cpu_percentage.rb
  • Bring back non-data-binding versions of examples/snake.rb and examples/tic_tac_toe.rb for educational purposes

0.4.9

  • Support unidirectional data-binding on all control properties that support bidirectional data-binding
  • Fix issue in examples/snake.rb with double-turn causing instant death due to snake illogically going back against itself

0.4.8

  • Support checkbox checked bidirectional data-binding (with <=> sign)
  • Support check_menu_item checked bidirectional data-binding (with <=> sign)
  • Support radio_menu_item checked bidirectional data-binding (with <=> sign)
  • Support radio_buttons selected property bidirectional data-binding (with <=> sign)
  • Improve examples/tetris.rb with bidirectional data-binding for check_menu_item/radio_menu_item checked
  • Update default dimensions of Meta-Example to 1000x500
  • Fix minor issue with Meta-Example selecting first radio button in Advanced examples despite it not being the truly selected example on launch of the app (now, it starts explicitly deselected)
  • Fix minor issue with Meta-Example showing basic examples as advanced

0.4.7

  • Support date_time_picker/date_picker/time_picker time bidirectional data-binding (with <=> sign)
  • Support combobox selected/selected_item bidirectional data-binding (with <=> sign)
  • Support editable_combobox text bidirectional data-binding (with <=> sign)
  • Improve examples/date_time_picker.rb with bidirectional data-binding for date_time_picker time
  • Improve examples/midi_player.rb with bidirectional data-binding for combobox selected/selected_item

0.4.6

  • Support slider value bidirectional data-binding (with <=> sign)
  • Support color_button color bidirectional data-binding (with <=> sign)
  • Support font_button font write-only unidirectional data-binding (with <=> sign)
  • Improve examples/color_button.rb with bidirectional data-binding for color_button color
  • Improve examples/histogram.rb with bidirectional data-binding for color_button color
  • Improve examples/font_button.rb with bidirectional data-binding for font_button font

0.4.5

  • Support spinbox value bidirectional data-binding (with <=> sign)
  • Improve examples/dynamic_area.rb with bidirectional data-binding for spinbox value
  • Improve examples/histogram.rb with bidirectional data-binding for spinbox value
  • Improve examples/timer.rb with bidirectional data-binding for spinbox value

0.4.4

  • Fix issue with data-binding shapes and attributed strings, which broke Snake and Tic Tac Toe examples

0.4.3

  • Support entry text bidirectional data-binding (with <=> sign)
  • Support search_entry text property bidirectional data-binding (with <=> sign)
  • Support multiline_entry text property bidirectional data-binding (with <=> sign)
  • Support non_wrapping_multiline_entry text property bidirectional data-binding (with <=> sign)
  • Improve examples/basic_entry.rb with bidirectional data-binding for entry text
  • Improve examples/form.rb with bidirectional data-binding for entry text
  • Improve examples/form_table.rb with bidirectional data-binding for entry text
  • Improve examples/login.rb with bidirectional data-binding for entry text
  • Improve examples/method_based_custom_keyword.rb with bidirectional data-binding for entry text
  • Improve examples/meta_example.rb with bidirectional data-binding for non_wrapping_multiline_entry text

0.4.2

  • examples/button_counter.rb (takes advantage of unidirectional data-binding)
  • Ensure that upon re-opening #content {} of area, path, shapes, image, table, text, and general controls, post_add_content initialization is prevented from running multiple times where inappropriate.
  • Document LibUI API methods
  • Fix issue with examples/meta_example.rb showing more versions in counts than available

0.4.1

  • Document observe keyword
  • Document unidirectional data-binding in more detail (like :before_read, :on_read, and :after_read options)
  • Simplify examples/tetris.rb with observe keyword
  • Simplify examples/method_based_custom_keyword.rb with observe keyword
  • Simplify examples/color_the_circles.rb with observe keyword
  • Simplify examples/snake.rb with observe keyword

0.4.0

  • Upgrade to LibUI 0.0.13
  • Support general control/shape/attributed_string property unidirectional data-binding (with <= sign or <=>)
  • Support observe DSL keyword for simple model observation outside of GUI (e.g. observe(model, attribute) { do_something } )
  • Simplify examples/snake.rb with data-binding and make smaller (20x20) to be more challenging and fun
  • Simplify examples/tic_tac_toe.rb with data-binding
  • Fix issue with Shape#redraw method calling AreaProxy#auto_redraw instead of AreaProxy#redraw

0.3.5

  • Fixed Area Gallery example (all versions) after a recent refactoring broke it

0.3.4

  • New examples/basic_scrolling_area.rb
  • Smart defaults for scrolling_area control + convenience width and height attributes
  • Simplify examples/basic_area.rb (all versions) by nesting shapes directly under area
  • Support #content {} method in figure to be able to reopen a figure's content to add more shapes in.

0.3.3

  • Support nesting shapes directly under area to represent paths having one shape, and nesting fill/stroke within the shapes (not path)
  • Simplify examples/area_gallery.rb (all versions) by nesting shapes directly under area
  • Simplify examples/basic_transform.rb by nesting shapes directly under area (and provide original version as 2nd version)
  • Simplify examples/color_the_circles.rb by nesting shapes directly under area
  • Simplify examples/dynamic_area.rb (all versions) by nesting shapes directly under area
  • Simplify examples/histogram.rb (all versions) by nesting shapes directly under area
  • Simplify examples/tetris.rb by nesting shapes directly under area
  • Simplify examples/tic_tac_toe.rb by nesting shapes directly under area
  • Simplify examples/snake.rb by nesting shapes directly under area
  • Add a second tab to examples/meta_example.rb to fit more examples
  • Upgrade glimmer to 2.5.0
  • Fix issue in examples/tic_tac_toe.rb permitting change of symbol in marked area
  • Update Style Guide and add an example for each bullet point

0.3.2

  • Fix issue with attempting to free image as an object from memory by mistake when used as a control (not an object for table)

0.3.1

  • Support building image_column image objects in a table via file property (simplify through automation of use of image_part for .png image files given that chunky_png is now included in the gem)
  • Support Web URL as image control file property
  • Add key_code as alias to key_value in area_key_event Hash
  • Fix issue with editing text_color_column in table having editable true property
  • Fix issue with editing checkbox_text_column text in table having editable true or editable_text true property

0.3.0

  • Upgrade to glimmer 2.4.1
  • Add chunky_png gem to support .png images natively
  • New image Glimmer custom control that can be nested under area to render an image (it is not part of LibUI, so it has some performance caveats, but is better than nothing and is fast with smaller image width/height)

0.2.24

  • Support hex colors as String with '#' prefix (e.g. '#ffaa92')

0.2.23

  • Improve examples/tetris.rb by having high score dialog pause the game if running and resume after closed
  • Adjust Area Gallery example text size to 11 in Windows/Linux
  • Fix Glimmer::LibUI::timer {} behavior so that the block return value will not affect repetition outcome if it is Integer (only Booleans affect it)
  • Fix Tetris down button for Windows (it was going too fast before making tetrominos invisible before they hit the bottom)
  • Fix Tetris double-downs (or multiple downs) happening after game over (it was firing an additional down timer after game over by mistake before)
  • Fix Tetris by prechecking Turn Left on Up radio menu item since it is the one selected upon launch of the game
  • Fix Tic-Tac-Toe text-size for Windows/Linux

0.2.22

  • examples/snake.rb implemented test-first

0.2.21

  • examples/tic_tac_toe.rb
  • Glimmer::LibUI::enum_names provides all possible enum names to use with Glimmer::LibUI::enum_symbols(enum_name)
  • Document all Glimmer::LibUI custom operations
  • Fix issue with retrieving Glimmer::LibUI::enum_symbols for :at enum name

0.2.20

  • Improve examples/tetris.rb with menus, high score dialog, and options
  • Prevent examples/tetris.rb window from being resized
  • Support window resizable property (resizable false means one cannot resize window)
  • Support calling window.content_size = [x, y] as an alternative to window.set_content_size(x, y)
  • Fix issue with hooking on_content_size_changed listener to window
  • Fix issue with using window content_size property getter

0.2.19

  • Improve examples/tetris.rb with a score board (indicating next Tetromino, score, level, and lines)
  • Add instant down action to examples/tetris.rb upon hitting the space button

0.2.18

  • Support polygon (closed figure of lines), polyline (open figure of lines), and polybezier (open figure of beziers) shape keywords to use under path
  • Improve examples/tetris.rb with bevel block 3D look and restarting upon game over
  • Update examples/area_gallery.rb to add uses of polygon, polyline, and polybezier
  • Refactor examples/histogram.rb to utilize new polygon and polyline keywords
  • Support area request_auto_redraw, pause_auto_redraw, and resume_auto_redraw, operations, and auto_redraw_enabled property.

0.2.17

  • Tetris example - basic version with simple color squares

0.2.16

  • Document all examples with Windows screenshots
  • Fix examples/basic_transform.rb issue on Windows where it shows an uncentered different graphic than what is shown on Mac and Linux

0.2.15

  • Make examples/meta_example.rb output catch up more quickly with event puts statements
  • Fix examples/color_the_circles.rb on Windows (it was crashing upon losing)

0.2.14

  • Revise examples/meta_example.rb to avoid blocking upon launching examples, thus permitting launching multiple examples at the same time
  • Automatically provide shifted :key characters in area_key_event provided in area key listeners on_key_event, on_key_down, and on_key_up given that libui does not support out of the box (e.g. ! for SHIFT+1)
  • Support message_box as an alias for msg_box (and message_box_error for msg_box_error too)
  • Tolerate nil input for any widget String attributes (e.g. entry text attribute)
  • Fix issue regarding arcs and circles on Windows by auto-starting a figure if not started already (on Mac and Linux that is not needed)
  • Fix Color The Shapes (Circles) and rename back to Color The Circles due to fixing circle support on Windows

0.2.13

  • Rename examples/color_the_circles.rb to examples/color_the_shapes.rb to fix/make compatible with Windows by rendering only Squares on Windows, but Squares and Circles on Mac/Linux
  • Fix examples/basic_table_button.rb double-deletion issue on Windows via a temporary workaround (generating an extra empty row on Windows only)
  • Fix examples/basic_table_checkbox.rb , examples/basic_table_checkbox_text.rb , and examples/basic_table_color.rb on Windows
  • Fix examples/basic_table_progress_bar.rb crash due to an issue on Windows when switching from -1 to a positive value
  • Fix examples/area_gallery.rb (all its versions) by disabling arc/circle on Windows where they don't work due to issue in libui
  • Fix girb on Windows
  • Removed redundant table on_change notification
  • Fix issue with supplying a font without all its keys (e.g. missing :weight) to attributed string nested under text, tolerating missing font keys.
  • Fix issue with examples/color_the_circles.rb when clicking outside the playing area causing this error:
examples/color_the_circles.rb:82:in `block in color_circle': undefined method `include?' for nil:NilClass (NoMethodError)
        from examples/color_the_circles.rb:81:in `each'
        from examples/color_the_circles.rb:81:in `find'
        from examples/color_the_circles.rb:81:in `color_circle'
        from examples/color_the_circles.rb:212:in `block (4 levels) in launch'

0.2.12

  • Upgrade to glimmer 2.4.0
  • Upgrade to LibUI 0.0.12
  • Support passing string value as an argument to attributed string keyword
  • Support setting string value as a property on attributed string keyword (automatically redrawing)

0.2.11

  • Fix issue with running examples that rely on local assets from gem (they work fine from locally cloned project)
  • Fix issue with not showing puts output in Basic Table Button and Editable Table examples when run from Meta Example

0.2.10

  • New examples/method_based_custom_keyword.rb
  • Update examples/form.rb to have two more fields
  • Update color_button example to show how to preset initial color
  • Support path fill/stroke :type of :linear_gradient
  • Support path fill/stroke :type of :radial_gradient
  • Add text to Area Gallery examples
  • Update variable names in examples/meta_example.rb to be more meaningful
  • Update examples/meta_example.rb to show terminal/command-line output for run examples

0.2.9

  • Upgrade to glimmer 2.3.0
  • Use glimmer 2.3.0 to support automatic table row change when performing a direct deep row/column update in cell_rows (e.g. data[3][0] = 'new value') as opposed to a general shallow row update (e.g. data[3] = ['new value', 'other new value'] <- already supported)

0.2.8

  • Support table on_changed listener to report all changes (of operation type :deleted, :changed, :inserted)
  • Support table on_edited listener to report changes happening through direct table editing only
  • Default value of text width argument looks into x and adjusts by leaving the same space on the right side

0.2.7

  • New examples/basic_table_color.rb
  • Support background_color_column for table
  • Support text_color_column for table
  • Support checkbox_text_color_column for table
  • Support image_text_color_column for table

0.2.6

  • Support string control property: open_type_features
  • Auto-free attributed string objects from memory

0.2.5

  • Support attributed string underline_color property (built-in enum symbols and custom color)

0.2.4

  • Support examples/custom_draw_text.rb
  • Support stable text control nestable under area
  • Support string control property: background
  • Support string control property: font
  • Support string control property: underline
  • Enhance combobox to accept String value for selected item instead of just Integer index
  • Add selected_item read-only property to combobox to return selected item String value
  • Fix color property support for string to accept 255-based rgb values
  • Fix issue with alternating string colors in examples/basic_draw_text.rb

0.2.3

  • Update examples/midi_player.rb to read sounds locally from gem
  • Support examples/basic_draw_text.rb
  • Support dynamic text control to be called in area on_draw listener
  • Support text control default_font property
  • Support string control nestable under text to represent an attributed/unattributed string (depending on nestable properties)
  • Support string control property: color
  • Support enum symbols for align property of text control
  • Support enum symbols for :italic font descriptor key (in addition to numbers)
  • Support enum symbols for :stretch font descriptor key (in addition to numbers)
  • Support enum symbols for :weight font descriptor key (in addition to numbers)

0.2.2

  • Automatically add vertical_box parent to area if it did not have a box parent (otherwise, it seems not to show up on Linux, even when directly under grid)

0.2.1

  • Have examples/timer.rb show msg_box on finish
  • Have examples/color_the_circles.rb push colored circles when colored behind uncolored circles to keep uncolored circles visible
  • Fix non-blocking dialog issue on Linux with examples/color_the_circles.rb
  • Support all LibUI methods through Glimmer::LibUI (with some enhanced, like timer and queue_main, which accept blocks)

0.2.0

  • Support examples/timer.rb
  • Support examples/color_the_circles.rb
  • Support timer and queue_main with simple blocks through Glimmer::LibUI.timer(time_in_seconds=0.1, repeat: true, &block) and Glimmer::LibUI.queue_main(&block)
  • Support radio_menu_item (similar to check_menu_item, but auto-unchecks sibling radio_menu_items when checked)
  • Support degrees for arc arguments (instead of radians)
  • Support circle shape and use in examples/area_gallery.rb (all versions)
  • Support Glimmer::LibUI.x11_colors to obtain all available X11 color symbols
  • Support #include? method in circle, rectangle, and square to test containment of a point x,y coordinates

0.1.11

  • New examples/login.rb
  • Amend examples/form_table.rb with use of a search_entry to support table filtering
  • Support password_entry control
  • Support search_entry control
  • Fix issue with setting control enabled property

0.1.10

  • Upgrade to glimmer 2.2.1
  • Add a 3rd tab to examples/grid.rb showcasing the halign and valign properties
  • Support grid halign/valign symbol values of :fill (default), :start, :center, :end
  • Add key_value to area_key_event Hash
  • Add ext_key_value to area_key_event Hash

0.1.9

  • Support area listener: on_key_event
  • Support area listener: on_key_down
  • Support area listener: on_key_up

0.1.8

  • Support area listener: on_mouse_event
  • Support area listener: on_mouse_down
  • Support area listener: on_mouse_up
  • Support area listener: on_mouse_drag_start
  • Support area listener: on_mouse_drag
  • Support area listener: on_mouse_drop
  • Support area listener: on_mouse_crossed
  • Support area listener: on_mouse_enter
  • Support area listener: on_mouse_exit
  • Support area listener: on_drag_broken

0.1.7

  • Support stroke :dashes and use in examples/area_gallery.rb
  • Support symbol values for draw_line_cap (:round, :square, :flat) and draw_line_join (:miter, :round, :bevel) and draw_fill_mode (:winding and :alternate)

0.1.6

  • Update default window width to 190
  • Improve layout of examples/meta_example.rb
  • Enhance examples/meta_example.rb to enable choosing versions with a spinbox instead of adding them to examples list
  • Nest control proxies under Glimmer::LibUI::ControlProxy namespace
  • Nest shapes under Glimmer::LibUI::Shape namespace
  • Nest vertical_box and horizontal_box under Glimmer::LibUI::ControlProxy::Box namespace
  • Nest columns under Glimmer::LibUI::ControlProxy::Column namespace
  • Nest menu item proxies under Glimmer::LibUI::ControlProxy::MenuItemProxy namespace
  • Nest date time picker proxies under Glimmer::LibUI::ControlProxy::DateTimePickerProxy namespace
  • Nest multiline entry proxies under Glimmer::LibUI::ControlProxy::MultinlineEntryProxy namespace
  • Support time_picker control explicitly
  • Support X11 color names (via color gem)
  • Support passing :red, :green, :blue, :alpha keys to fill/stroke (not just :r,:g,:b,:a)
  • Support 3-number hex color shorthand
  • Support ability to set fill/stroke to x11/Integer/String color directly (e.g. fill 'steelblue' , optionally with extra hash key/value pairs e.g. fill 0x238232, a: 0.5)
  • Support ability to set color_button.color to {color: x11/Integer/String}
  • Default main_window_proxy first argument for msg_box/msg_box_error (and empty strings for following args if not passed)
  • Default main_window_proxy argument for open_file and save_file

0.1.5

  • Support examples/histogram.rb
  • Support examples/basic_transform.rb
  • Support color_button color=/set_color setter
  • Switch color_button color API to return a hash of {:r, :g, :b, :a} instead of an array for consistency with other libui APIs (like fill and stroke brush)
  • Implement color_button fine-grained setters (e.g. cg.red = 144)
  • Support hex colors in color_button (by passing an Integer 0xFFBBAA or String hex 'ffbbaa') and path fill and stroke (with :color key)
  • Eliminate need for passing area_draw_params to path when declared underneath area on_draw listener
  • Support path transform property for building matrix objects (either through path { transform {operations} } directly or through m1 = matrix {operations}; path { transform m1 } to reuse a matrix)
  • Support area transform property for building matrix objects (either through area { transform {operations} } directly or through m1 = matrix {operations}; area { transform m1 } to reuse a matrix)
  • Ensure matrix rotate method accepts degrees (not radians)
  • Support matrix multiply method that accepts a Glimmer::LibUI::MatrixProxy object
  • Support matrix invertible? property that returns a Boolean
  • Automatically reparent an area that is added directly under window with vertical_box. This fixes issue with display of area added directly under window in Linux.

0.1.4

  • Update examples/basic_table_progress_bar.rb with a listener
  • Set default values for shape parameters and support passing shape parameters as properties inside their body (e.g. rectangle {x 2; y 3; width 400; height 800})
  • New examples/area_gallery2.rb (utilizing properties instead of args)
  • New examples/area_gallery3.rb (semi-declarative on_draw dynamic paths)
  • New examples/area_gallery4.rb (utilizing properties instead of args with semi-declarative on_draw dynamic paths)

0.1.3

  • New examples/area_gallery.rb
  • Support figure(x = nil, y = nil) {} (draw_path_new_figure)
  • Support closed true property inside nested figure (draw_path_close_figure)
  • Support line
  • Support bezier
  • Support arc (draw_path_arc_to if draw_path_new_figure was called already or draw_path_new_figure_with_arc if parent is a figure without x,y)
  • Support square with x, y, and length properties

0.1.2

  • Support re-opening a control by using #content {...}
  • Ensure destroying path/rectangle after drawing if it is declared inside on_draw
  • Observe path fill and stroke hashes for changes and automatically redraw area accordingly
  • New examples/dynamic_area2.rb (using stable paths)

0.1.1

  • Support area listener: on_draw
  • New examples/basic_area2.rb

0.1.0

  • Support examples/basic_area.rb
  • Support area control
  • Support path(fill_mode) control
  • Support rectangle(x, y, width, height) figure
  • Support path fill property
  • Support path stroke property

0.0.28

  • Support automatic table row change when updating a row in cell_rows (e.g. data[3] = ['new', 'row', 'cell', 'values'])
  • Support editable property for checkbox_column (checkbox editing only works in Windows due to a libui limitation)
  • Support editable, editable_checkbox, and editable_text properties for checkbox_text_column (checkbox editing only works in Windows due to a libui limitation)
  • Fix examples/basic_table_checkbox_text.rb by removing editable property

0.0.27

  • New examples/form_table.rb
  • Support automatic table row insertion upon inserting data rows into cell_rows

0.0.26

  • New examples/basic_table_progress_bar.rb
  • Support table progress_bar_column

0.0.25

  • New examples/basic_table_checkbox_text.rb
  • Support table checkbox_text_column

0.0.24

  • New examples/basic_table_checkbox.rb
  • Support table checkbox_column
  • Improve support for table row deletion upon actual cell_rows deletion by handling multiple-row deletion not just single-row deletion

0.0.23

  • Have image not require width and height if it only has one image_part (defaults to image_part width and height)
  • Upgrade to LibUI version 0.0.10

0.0.22

  • New examples/basic_table_button.rb
  • Support table button_column
  • Support table button_column enabled property
  • Support on_clicked listener for button_column
  • Support automatic table cell value reading management (table row deletion upon actual cell_rows deletion due to implicit data-binding)

0.0.21

  • New examples/editable_column_table_image_text.rb
  • Support table image_text_column

0.0.20

  • New examples/editable_column_table.rb
  • Support editable property for text_column

0.0.19

  • New examples/editable_table.rb
  • Support editable table control
  • Fix issue with table text_column repeating the first column as the second

0.0.18

  • Support examples/basic_table_image.rb
  • Support table image_column
  • Support image and image_part for building images from rgba byte arrays
  • Rename Glimmer::LibUI::ControlProxy.all_control_proxies to Glimmer::LibUI::ControlProxy.control_proxies
  • Add Glimmer::LibUI::ControlProxy.image_proxies

0.0.17

  • Support examples/basic_table.rb
  • Support non-editable table control
  • Support table text_column
  • Support table cell_rows property as an Array (rows) of Arrays (row columns) of cell values

0.0.16

  • Support ability to instantiate without args and set args as properties afterwards inside block (e.g. window { title 'Greeter'; content_size 300, 400; button {text 'Greet'; on_clicked {puts 'Hi'}} })
    • window (was supported before, but changed default title to empty string)
    • button
    • checkbox
    • group
    • label

0.0.15

  • New examples/form.rb
  • Support form control and child attributes of stretchy and label
  • Smart defaults for form child attributes stretchy (true) and label ('')

0.0.14

  • New examples/grid.rb
  • Support grid control and child attributes of left, top, xspan, yspan, hexpand, halign, vexpand, and valign
  • Smart defaults for grid child attributes left (0), top (0), xspan (1), yspan (1), hexpand (false), halign (0), vexpand (false), and valign (0)

0.0.13

  • Support examples/date_time_picker.rb
  • Support date_time_picker, date_picker, and time_picker controls having time/time=/set_time property

0.0.12

  • Have examples/meta_example.rb allow code editing to enable experimentation and learning
  • Fix issue with examples/meta_example using puts_debuggerer (a development gem)

0.0.11

  • New examples/basic_color.rb
  • Support color_button color property
  • Proper destroy of controls (deleting from parent box, window, or group first)
  • On the Mac only, if no menu is specified, add a Quit menu item automatically to allow quitting with CMD+Q

0.0.10

  • Support examples/font_button.rb
  • Support font_button control
  • Add File -> Quit menu item to examples/meta_example.rb
  • Glimmer Style Guide added to README.md

0.0.9

  • Build a meta-example (example of examples)

0.0.8

  • Add ? suffixed aliases to all boolean property methods
  • Make C bool properties return boolean in Ruby (not 1 or 0)
  • Support passing boolean values to C bool properties in addition to 1 or 0
  • Support passing boolean values to C bool constructor args in addition to 1 or 0
  • Update all examples to utilize booleans
  • Make window properties title='Glimmer', content_size=150,150 & has_menubar=1 if not specified as args in constructor
  • Have string properties (e.g. text and title) return String not fiddle pointer

0.0.7

  • Make padded 1 the default in horizontal_box and vertical_box to achieve nicer looking GUI by default
  • Make margined 1 the default in group to achieve nicer looking GUI by default
  • Destroy main window upon hitting quit on quit menu item
  • Rename ControlProxy::all_controls to ControlProxy::all_control_proxies to more accurately describe its contents
  • Add ControlProxy::main_window_proxy method to retrieve main window proxy
  • Define a #window_proxy method on ControlProxy to retrieve window control proxy for any control

0.0.6

  • Make listener block provide Ruby proxy object as optional argument (not Fiddle pointer)
  • Handle tab_item scenario where it has an empty block or no block (auto-generate empty horizontal_box content as a smart default to avoid crashing)
  • Support non_wrapping_multiline_entry propeties/operations via LibUI.multiline_entry_* methods (enhancing them to accept Ruby objects in addition to pointers)
  • Support splatting items array for radio_buttons, editable_combobox, and combobox items
  • Fix issue with menu_item on_clicked listeners crashing in examples/control_gallery.rb due to garbage collection

0.0.5

  • Support examples/control_gallery.rb
  • Support open_file and save_file
  • Support quit_menu_item with on_clicked listener
  • Support preferences_menu_item and about_menu_item
  • Support check_menu_item and separator_menu_item
  • Support enabled= & set_enabled on all controls (making enabled property read/write by relying on enable/disable operations)
  • Support visible= & set_visible on all controls (making visible property read/write by relying on show/hide operations)
  • Support horizontal_box and vertical_box propeties (padded) & operations (append, delete) via LibUI.box_* methods
  • Support editable_combobox, radio_buttons, and group
  • Support tab and tab_item
  • Fix issue with always setting menu item text to 'Version' (correctly set to passed argument instead)

0.0.4

  • Support examples/midi_player.rb
  • Support combobox items attribute to append text value array declaratively
  • Support menu and menu_item controls

0.0.3

  • Support examples/simple_notepad.rb

0.0.2

  • Support vertical_box and horizontal_box
  • Support examples/basic_entry.rb

0.0.1

  • LibUI general control and window support
  • LibUI listener support
  • LibUI property support
  • girb (Glimmer IRB)
  • Support examples/basic_window.rb
  • Support examples/basic_button.rb