libui.cr alternatives and similar shards
Based on the "Low level bindings" category.
Alternatively, view libui.cr alternatives based on common mentions on social networks and blogs.
-
termbox-crystal
Bindings, wrapper, and utilities for termbox (terminal interface library) in Crystal -
java.cr
Java Native Interface (JNI) bindings (and generator) for Crystal -
wkhtmltopdf-crystal
Crystal C bindings and wrapper for libwkhtmltox library -
serialport.cr
Crystal bindings for libserialport: cross-platform library for accessing serial ports. -
crystal-liblmdb
Crystal language bindings for the Symas LMDB database
Tired of breaking your main and manually rebasing outdated pull requests?
Do you think we are missing an alternative of libui.cr or a related project?
README
libui.cr
Crystal-lang bindings for libui, a GUI library for Linux, OS X and Windows.
(well, forget about Windows for now, this is Crystal)
What's New
04/15/17
- Sync'd to upstream #5fa7ba4
- Updated for Crystal 0.21.1
08/13/16
- Sync'd to upstream #6e45859
- Control Gallery not updated, but yml examples were
- Proper component stretching and margins
- Waiting for tables definition to materialize
07/24/16
- Now with YAML builder
06/19/16
- Sync'd to upstream #9656a81
- Control Gallery example not updated but library is.
Installation
Add these package to your dependencies in shard.yml:
dependencies:
libui:
github: fusion/libui.cr
Usage
Standard (C-like) usage
Have a look at examples/controlgallery, which is a direct port of a C example.
Crystal-only YAML builder
(see examples/crgallery)
This is a feature I am introducing in addition to the library bindings. It allows devs to specify a UI without hard coding it and maintain it using fragments described in simple .yml files.
Some advantages:
- No need to recompile your code to test a UI change
- Team collaboration now easier
- Descriptive UI
- Separation of concerns
Obvious drawback:
- No compile-time checks
Note that inflating fragments and pure coding can be mixed.
API
CUI.menubar "path_to_yml_file"
CUI.inflate "path_to_yml_file"
CUI.get/CUI.get!
CUI.get_as_menuitem/CUI.get_as_menuitem!
CUI.get_mainwindow/CUI.get_mainwindow!
The '!' forms will throw an exception if component is not found.
Development
Recent versions of Crystal now require you to include the current path explicitly to find libraries:
crystal build --link-flags "-L$(pwd)" examples/controlgallery/main.cr
crystal build --link-flags "-L$(pwd)" examples/crgallery/crgallery.cr
If you omit this flag, libui.A.dylib or libui.so (system-specific) will not be found.
Note: in this example, I used the current directory but it could be -L/usr/local/includes
or any
other location depending on your setup.
To run the generated binaries:
LD_LIBRARY_PATH=. ./main
LD_LIBRARY_PATH=. ./crgallery
Contributing
- Fork it ( https://github.com/fusion/libui.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- [fusion] Chris F Ravenscroft - creator, maintainer