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)
Black theme
Dark theme
Plain gray theme
Tan theme
Shake theme
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
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 Round/Rounded/Oval which are drawn using scalable vector graphics.
You can check the frames example to see all FrameType
's you can apply to you widgets.