[][src]Crate fl2rust

fl2rust

A fluid (fltk ui designer) file to Rust transpiler. To run on the command-line, install using cargo-install:

$ cargo install fl2rust

Then run:

$ fl2rust <fl file>.fl > <output file>.rs

To automate through cargo, you can use fl2rust as a library by adding it to your build-dependencies:

# Cargo.toml
[dependencies]
fltk = "0.12"
[build-dependencies]
fl2rust = "0.1"
// build.rs
fn main() {
    use std::path::PathBuf;
    use std::env;
    println!("cargo:rerun-if-changed=src/myuifile.fl");
    let g = fl2rust::Generator::default();
    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    g.in_out("src/myuifile.fl", out_path.join("myuifile.rs").to_str().unwrap()).expect("Failed to generate rust from fl file!");
}
version 1.0400
header_name {.h}
code_name {.cxx}
class UserInterface {open
} {
  Function {make_window()} {open
  } {
    Fl_Window {} {open selected
      xywh {138 161 440 355} type Double visible
    } {
      Fl_Button but {
        label {Click me}
        xywh {175 230 95 45}
      }
    }
  }
}
// src/myuifile.rs
#![allow(unused_variables)]
#![allow(unused_mut)]
#![allow(unused_imports)]
include!(concat!(env!("OUT_DIR"), "/myuifile.rs"));
// src/main.rs
use fltk::*;
mod myuifile;

fn main() {
    let app = app::App::default();
    let mut ui = myuifile::UserInterface::make_window();
    ui.but.set_callback(move || {
        println!("Works!");
    });
    app.run().unwrap();
}

Modules

gen
parser

Structs

Generator