项目作者: Fusion

项目描述 :
Crystal-lang bindings for libui
高级语言: Crystal
项目地址: git://github.com/Fusion/libui.cr.git
创建时间: 2016-05-22T23:33:15Z
项目社区:https://github.com/Fusion/libui.cr

开源协议:MIT License

下载


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)

OS X

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:

  1. dependencies:
  2. libui:
  3. 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

  1. CUI.menubar "path_to_yml_file"
  2. CUI.inflate "path_to_yml_file"
  3. CUI.get/CUI.get!
  4. CUI.get_as_menuitem/CUI.get_as_menuitem!
  5. 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:

  1. crystal build --link-flags "-L$(pwd)" examples/controlgallery/main.cr
  2. 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:

  1. LD_LIBRARY_PATH=. ./main
  2. LD_LIBRARY_PATH=. ./crgallery

Contributing

  1. Fork it ( https://github.com/fusion/libui.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am ‘Add some feature’)
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • [fusion] Chris F Ravenscroft - creator, maintainer