A theming crate for fltk-rs, based on work by Remy Oukaour and Greg Ercolano, and schemes developed by the NTK GUI library.
toml
[dependencies]
fltk = "1.1.6"
fltk-theme = "0.1"
Setting the color theme:
```rust use fltk::{prelude::*, *}; use fltktheme::{ColorTheme, colorthemes};
fn main() { let a = app::App::default().withscheme(app::Scheme::Gtk); let theme = ColorTheme::fromcolormap(colorthemes::BLACKTHEME); theme.apply(); let mut win = window::Window::default().withsize(400, 300); let mut btn = button::Button::new(160, 200, 80, 40, "Hello"); btn.setcolor(btn.color().lighter()); win.end(); win.show(); a.run().unwrap(); } ```
Setting the widget theme:
```rust use fltk::{prelude::*, *}; use fltktheme::{widgetthemes, WidgetTheme, ThemeType};
fn main() { let a = app::App::default(); let widgettheme = WidgetTheme::new(ThemeType::Aqua); widgettheme.apply(); let mut win = window::Window::default().withsize(400, 300); let mut btn = button::Button::new(160, 200, 80, 30, "Hello"); btn.setframe(widgetthemes::OSDEFAULTBUTTONUP_BOX); win.end(); win.show(); a.run().unwrap(); } ```
Setting the widget scheme: ```rust use fltk::{prelude::*, *}; use fltk_theme::{WidgetScheme, SchemeType};
fn main() { let a = app::App::default(); let widgetscheme = WidgetScheme::new(SchemeType::Clean); widgetscheme.apply(); let mut win = window::Window::default().with_size(400, 300); let mut btn = button::Button::new(160, 200, 80, 30, "Hello"); win.end(); win.show(); a.run().unwrap(); } ```
Classic (old Windows theme)
Aero (Windows 7 theme)
Aqua (MacOS theme)
Dark
High Contrast
Blue
Metro (Windows 8 theme)
Greybird (Gnome xfce)
Choosing a WidgetTheme will also define a set of FrameTypes which can be used for your widgets.
OS_BUTTON_UP_BOX
OS_CHECK_DOWN_BOX
OS_BUTTON_UP_FRAME
OS_CHECK_DOWN_FRAME
OS_PANEL_THIN_UP_BOX
OS_SPACER_THIN_DOWN_BOX
OS_PANEL_THIN_UP_FRAME
OS_SPACER_THIN_DOWN_FRAME
OS_RADIO_ROUND_DOWN_BOX
OS_HOVERED_UP_BOX
OS_DEPRESSED_DOWN_BOX
OS_HOVERED_UP_FRAME
OS_DEPRESSED_DOWN_FRAME
OS_INPUT_THIN_DOWN_BOX
OS_INPUT_THIN_DOWN_FRAME
OS_MINI_BUTTON_UP_BOX
OS_MINI_DEPRESSED_DOWN_BOX
OS_MINI_BUTTON_UP_FRAME
OS_MINI_DEPRESSED_DOWN_FRAME
OS_DEFAULT_BUTTON_UP_BOX
OS_DEFAULT_HOVERED_UP_BOX
OS_DEFAULT_DEPRESSED_DOWN_BOX
OS_TOOLBAR_BUTTON_HOVER_BOX
OS_TABS_BOX
OS_SWATCH_BOX
OS_SWATCH_FRAME
OS_BG_BOX
You can check the frames example to see all FrameType
's you can apply to you widgets.
Black theme
Dark theme
Plain gray theme
Tan theme
Shake theme
These provide schemes for widgets without color theming. Currently there are 4 schemes:
- Clean: Taken from NTK's clear scheme.
Crystal: Taken from NTK's crystal scheme.
Gleam: Taken from NTK's gleam scheme.
SvgBased: This overrides FLTK's Base scheme round/rounded/oval FrameTypes which are drawn using scalable vector graphics.