native-windows-gui 1.0.13

A rust library to develop native GUI applications on the desktop for Microsoft Windows. Native-windows-gui wraps the native win32 window controls in a rustic API
Documentation
/*!

    An application that load new fonts from file
*/


extern crate native_windows_gui as nwg;
extern crate native_windows_derive as nwd;

use nwd::NwgUi;
use nwg::NativeUi;

#[derive(Default, NwgUi)]
pub struct CustomFontApp {
    #[nwg_control(size: (300, 200), position: (300, 300), title: "Custom Fonts")]
    #[nwg_events( OnWindowClose: [nwg::stop_thread_dispatch()] )]
    window: nwg::Window,

    #[nwg_layout(parent: window, spacing: 1, min_size: [200, 100])]
    grid: nwg::GridLayout,

    #[nwg_resource(family: "Fredoka One", size: 28)]
    font1: nwg::Font,

    #[nwg_resource(family: "MS Sans Serif", size: 22)]
    font2: nwg::Font,

    #[nwg_resource(family: "Indie Flower", size: 30)]
    font3: nwg::Font,

    #[nwg_control(text: "Hello World", font: Some(&data.font1))]
    #[nwg_layout_item(layout: grid, row: 0, col: 0)]
    label1: nwg::Label,

    #[nwg_control(text: "The quick brown fox", font: Some(&data.font2))]
    #[nwg_layout_item(layout: grid, row: 1, col: 0)]
    label2: nwg::Label,

    #[nwg_control(text: "WATCH THE SKY", font: Some(&data.font3))]
    #[nwg_layout_item(layout: grid, row: 2, col: 0)]
    label3: nwg::Label,
}

fn main() {
    nwg::init().expect("Failed to init Native Windows GUI");

    // Font data loaded from memory must be mutable. 
    // You should use embedded resources or load them directly from disk if possible
    let font_data = include_bytes!("../test_rc/FredokaOne-Regular.ttf");
    let mut font_data_mut = font_data.to_vec(); 
    let mem_font = nwg::Font::add_memory_font(&mut font_data_mut).expect("Failed to load font from memory");

    // Loading a font from a file is that simple
    nwg::Font::add_font("./test_rc/IndieFlower-Regular.ttf");

    let _app = CustomFontApp::build_ui(Default::default()).expect("Failed to build UI");
    nwg::dispatch_thread_events();

    nwg::Font::remove_memory_font(mem_font);
    nwg::Font::remove_font("./test_rc/IndieFlower-Regular.ttf");
}