fltk 0.1.10

Rust bindings for the FLTK GUI library
Documentation

fltk-rs

Rust bindings for the FLTK GUI library. Still in alpha.

The FLTK gui crate is a crossplatform lightweight library which can be linked to statically (LGPL) to produce small, self-contained and fast binaries.

Using in a project

Just add the following to your project's Cargo.toml file.

[dependencies]
fltk = "^0.1.10"

An example hello world application:

use fltk::window::*;

fn main() {
    let app = fl::App::default();
    let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
    wind.show();
    app.run().unwrap();
}

Please check the examples directory for more examples.

Building

To build, just run:

$ git clone https://github.com/MoAlyousef/fltk-rs
$ cd fltk-rs
$ cargo build

Dependencies

CMake and a C++ compiler need to be installed and in your PATH for a crossplatform build. After that on Windows and Mac OS X, normally no external dependencies are needed. For Linux, X11 development headers need to be installed for development. For Debian-based distribution, that means running:

$ sudo apt-get install libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev

Examples

To run the examples:

$ cargo run --example editor
$ cargo run --example calculator
$ cargo run --example gallery
$ cargo run --example button
$ cargo run --example hello

alt_test

alt_test Setting the scheme to Gtk.

alt_test

alt_test Setting the scheme to Gtk

Currently implemented widgets

Most common widgets are implemented:

  • Button
  • RadioButton
  • ToggleButton
  • RoundButton
  • CheckButton
  • LightButton
  • RepeatButton
  • Native FileDialog
  • Frame (Fl_Box)
  • Window
  • DoubleWindow
  • Group
  • Pack
  • Tabs
  • Scroll
  • Tile
  • TextDisplay
  • TextEditor
  • Input, IntInput, FloatInput, MultilineInput
  • Output, MultilineOutput
  • MenuBar
  • MenuItem
  • Choice (dropdown list)
  • Slider, ValueSlider
  • Dial
  • Counter
  • Scrollbar
  • Roller
  • Images

Todo

  • Complete widget set
  • Better documentation
  • Better testing

Contributions

Contributions are very welcome!