Move callbacks to separate module
- Modularity - Redability - Separation of logic
This commit is contained in:
parent
47efaa2d08
commit
34ccdb6ba0
11
src/main.rs
11
src/main.rs
@ -6,6 +6,7 @@ use i_slint_backend_winit::{
|
||||
},
|
||||
};
|
||||
use slint::{LogicalPosition, LogicalSize};
|
||||
mod widgets;
|
||||
slint::include_modules!();
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
@ -33,13 +34,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
ui.set_bar_width(bar_width);
|
||||
ui.set_bar_height(bar_height);
|
||||
|
||||
let weak = ui.as_weak();
|
||||
ui.on_open_program(move || {
|
||||
if let Some(_ui) = weak.upgrade() {
|
||||
// Launch a program on click
|
||||
std::process::Command::new("xclock").spawn().ok();
|
||||
}
|
||||
});
|
||||
// Install all widget callbacks
|
||||
widgets::install_callbacks(&ui);
|
||||
|
||||
// Size the window to match the bar.
|
||||
#[allow(clippy::cast_precision_loss)]
|
||||
ui.window()
|
||||
|
||||
15
src/widgets.rs
Normal file
15
src/widgets.rs
Normal file
@ -0,0 +1,15 @@
|
||||
use crate::TopBar;
|
||||
use slint::ComponentHandle;
|
||||
use std::process::Command;
|
||||
|
||||
/// Connect widget callbacks for the top bar.
|
||||
pub fn install_callbacks(ui: &TopBar) {
|
||||
let weak = ui.as_weak();
|
||||
|
||||
ui.on_open_program(move || {
|
||||
if weak.upgrade().is_some() {
|
||||
// Run program on click
|
||||
Command::new("xclock").spawn().ok();
|
||||
}
|
||||
});
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user