RUBY-UI IS ALPHA SOFTWARE!
-
Duncan Mac-Vicar P. <[email protected]>
-
Josef Reidinger <[email protected]>
ruby-ui is a library that allows you to create simple user interfaces in ruby.
but… Shoes?
ruby-ui is based on the mature libyui library from the YaST (SUSE’s installer/systems management console) project. This means any user interface you write with ruby-ui can be automatically rendered with Qt, Gtk or in text mode (ncurses).
Additionally, ruby-ui provides the following features:
-
Sugar: ruby DSL to build the widgets
-
Slim (www.slim-lang.org) template support
You can create a simple widget in ruby like this:
require 'ui' dialog = UI.main_dialog { vbox { label "Fill in this please" input_field "User Name:" hbox { push_button "Ok" push_button "Cancel" } } }.wait_for_event
Or you can use a Slim template:
{include:file:examples/slim_template.rb}
Ruby-UI support same set of properties as libyui. To query list of properties use method #Widget#properties. Properties can be also automatic set with slim Templates. It is needed to pass correct type. For boolean true or false. For Integer Fixnum or Bignum and for String String object.
Properties via builder
{include:file:examples/basic_properties.rb}
Properties in Slim
{include:file:examples/slim_properties.rb}
There is basically three ways how to handle events. It is possible to handle it in event loop, define callbacks on widgets or combination of both approach. Events are documented in #UI::Event and its ancestor.
You can use Dialog#wait_for_event to wait and capture the next event.
{include:file:examples/basic_event.rb}
You can also provide a block to Dialog#wait_for_event and a loop will be started, passing each event as a parameter to the block.
{include:file:examples/loop_event.rb}
Example where handling of clear action is moved to callback
{include:file:examples/callback_event.rb}
-
ruby-ui is licensed under the MIT License. Mind that libyui is GPL (we will try to change that)