feat: use withclones macro

This commit is contained in:
Gabriele Musco 2023-07-23 14:36:08 +02:00
commit 2272f02fa3
No known key found for this signature in database
GPG key ID: 1068D795C80E51DE
2 changed files with 21 additions and 17 deletions

View file

@ -36,6 +36,7 @@ use crate::ui::build_window::BuildWindowMsg;
use crate::ui::debug_view::DebugViewInit; use crate::ui::debug_view::DebugViewInit;
use crate::ui::libsurvive_setup_window::LibsurviveSetupMsg; use crate::ui::libsurvive_setup_window::LibsurviveSetupMsg;
use crate::ui::main_view::{MainView, MainViewInit, MainViewOutMsg}; use crate::ui::main_view::{MainView, MainViewInit, MainViewOutMsg};
use crate::withclones;
use crate::xr_devices::XRDevices; use crate::xr_devices::XRDevices;
use gtk::prelude::*; use gtk::prelude::*;
use relm4::actions::{AccelsPlus, ActionGroupName, RelmAction, RelmActionGroup}; use relm4::actions::{AccelsPlus, ActionGroupName, RelmAction, RelmActionGroup};
@ -596,16 +597,16 @@ impl SimpleComponent for App {
let mut actions = RelmActionGroup::<AppActionGroup>::new(); let mut actions = RelmActionGroup::<AppActionGroup>::new();
let buildprofile_action = { let buildprofile_action = {
let this_sender = sender.clone(); withclones![sender];
RelmAction::<BuildProfileAction>::new_stateless(move |_| { RelmAction::<BuildProfileAction>::new_stateless(move |_| {
this_sender.input_sender().emit(Msg::BuildProfile(false)); sender.input_sender().emit(Msg::BuildProfile(false));
}) })
}; };
let buildprofileclean_action = { let buildprofileclean_action = {
let this_sender = sender.clone(); withclones![sender];
RelmAction::<BuildProfileCleanAction>::new_stateless(move |_| { RelmAction::<BuildProfileCleanAction>::new_stateless(move |_| {
this_sender.input_sender().emit(Msg::BuildProfile(true)); sender.input_sender().emit(Msg::BuildProfile(true));
}) })
}; };
@ -617,27 +618,27 @@ impl SimpleComponent for App {
}; };
let libsurvive_setup_action = { let libsurvive_setup_action = {
let lss_sender = sender.clone(); withclones![sender];
RelmAction::<LibsurviveSetupAction>::new_stateless(move |_| { RelmAction::<LibsurviveSetupAction>::new_stateless(move |_| {
lss_sender.input(Msg::OpenLibsurviveSetup); sender.input(Msg::OpenLibsurviveSetup);
}) })
}; };
let quit_action = { let quit_action = {
let quit_sender = sender.clone(); withclones![sender];
RelmAction::<QuitAction>::new_stateless(move |_| { RelmAction::<QuitAction>::new_stateless(move |_| {
quit_sender.input(Msg::Quit); sender.input(Msg::Quit);
}) })
}; };
let debug_view_toggle_action: RelmAction<DebugViewToggleAction> = { let debug_view_toggle_action: RelmAction<DebugViewToggleAction> = {
let debugtoggle_sender = sender.clone(); withclones![sender];
RelmAction::<DebugViewToggleAction>::new_stateful( RelmAction::<DebugViewToggleAction>::new_stateful(
&model.enable_debug_view, &model.enable_debug_view,
move |_, state| { move |_, state| {
let s = *state; let s = *state;
*state = !s; *state = !s;
debugtoggle_sender.input(Msg::EnableDebugViewChanged(*state)); sender.input(Msg::EnableDebugViewChanged(*state));
}, },
) )
}; };
@ -666,11 +667,13 @@ impl SimpleComponent for App {
model.config.clone(), model.config.clone(),
)); ));
let timer_sender = sender.clone(); {
withclones![sender];
glib::timeout_add_local(Duration::from_millis(1000), move || { glib::timeout_add_local(Duration::from_millis(1000), move || {
timer_sender.input(Msg::ClockTicking); sender.input(Msg::ClockTicking);
return glib::Continue(true); return glib::Continue(true);
}); });
}
ComponentParts { model, widgets } ComponentParts { model, widgets }
} }

View file

@ -1,5 +1,6 @@
use crate::log_level::LogLevel; use crate::log_level::LogLevel;
use crate::log_parser::MonadoLog; use crate::log_parser::MonadoLog;
use crate::withclones;
use gtk::prelude::*; use gtk::prelude::*;
use relm4::prelude::*; use relm4::prelude::*;
use relm4::{ComponentSender, SimpleComponent}; use relm4::{ComponentSender, SimpleComponent};
@ -278,11 +279,11 @@ impl SimpleComponent for DebugView {
model.scrolledwin = Some(widgets.scrolledwin.clone()); model.scrolledwin = Some(widgets.scrolledwin.clone());
{ {
let dd_sender = sender.clone(); withclones![sender];
widgets widgets
.log_level_dropdown .log_level_dropdown
.connect_selected_notify(move |dd| { .connect_selected_notify(move |dd| {
dd_sender.input(Self::Input::LogLevelChanged( sender.input(Self::Input::LogLevelChanged(
LogLevel::iter() LogLevel::iter()
.as_slice() .as_slice()
.get(dd.selected() as usize) .get(dd.selected() as usize)