libui
:radio_button: libui - a portable GUI library -for Ruby
Installation
gem install libui
The libui gem uses the standard Ruby library Fiddle to call C functions. And this gem contains the official release of the libui shared library version 4.1 for Windows, Mac, and Linux. That means there is no need to install anything other than this gem.
Usage
require 'libui'
UI = LibUI
UI.init
main_window = UI.new_window('hello world', 300, 200, 1)
UI.window_on_closing(main_window) do
puts 'Bye Bye'
UI.control_destroy(main_window)
UI.quit
0
end
= UI.('Button')
UI.() do
UI.msg_box(main_window, 'Information', 'You clicked the button')
0
end
UI.window_set_child(main_window, )
UI.control_show(main_window)
UI.main
UI.quit
See examples directory.
General Rules
- The method names are snake_case.
- If the last argument is nil, it can be omitted.
- You can pass a block as a callback.
- Please return 0 explicitly in the block.
- The block will be converted to a Proc object and added to the last argument.
- Even in that case, it is possible to omit the last argument nil.
Not object oriented?
- At the moment, it is not object-oriented.
- Instead of providing a half-baked object-oriented approach, leave it as is.
How to use fiddle pointers?
require 'libui'
UI = LibUI
UI.init
Convert a pointer to a string.
label = UI.new_label("Ruby")
p pointer = UI.label_text(label) # #<Fiddle::Pointer>
p pointer.to_s # Ruby
If you need to use C structs, you can do the following.
= UI.
# Allocate memory
font_descriptor = UI::FFI::FontDescriptor.malloc
UI.() do
UI.(, font_descriptor)
p family: font_descriptor.Family.to_s,
size: font_descriptor.Size,
weight: font_descriptor.Weight,
italic: font_descriptor.Italic,
stretch: font_descriptor.Stretch
end
How to create an executable (.exe) on Windows
OCRA (One-Click Ruby Application) builds Windows executables from Ruby source code.
Development
git clone https://github.com/kojix2/libui
cd libui
bundle install
bundle exec rake vendor:all
bundle exec rake test
Use the following rake tasks to download the libui binary files and save them in the vendor directory.
rake -T
rake vendor:all # Download libui.so, libui.dylib, and libui.dll to ve...
rake vendor:linux # Download libui.so for Linux to vendor directory
rake vendor:mac # Download libui.dylib for Mac to vendor directory
rake vendor:windows # Download libui.dll for Windows to vendor directory
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/kojix2/libui.
Acknowledgement
This project is inspired by libui-ruby.
While libui-ruby uses Ruby-FFI, this gem uses Fiddle.