GOTTEM
This commit is contained in:
65
src/gui.rs
65
src/gui.rs
@@ -3,6 +3,7 @@ use iced::executor;
|
||||
use iced::keyboard;
|
||||
use iced::subscription;
|
||||
use iced::{Alignment, Element, Application, Settings, Subscription, Theme, Command};
|
||||
use iced_futures::backend::native::async_std::time::every;
|
||||
|
||||
use crate::stream::OutputStream;
|
||||
use crate::config::GUI;
|
||||
@@ -59,6 +60,7 @@ struct Stick {
|
||||
#[derive(Debug, Clone)]
|
||||
enum Message {
|
||||
EventOccurred(iced_native::Event),
|
||||
Tick,
|
||||
Up,
|
||||
Down,
|
||||
Left,
|
||||
@@ -110,6 +112,33 @@ impl Application for Main {
|
||||
|
||||
fn update(&mut self, msg: Message) -> Command<Message> {
|
||||
match msg.clone() {
|
||||
Message::Tick => {
|
||||
let mut s = vec![];
|
||||
for key_code in self.keys_down.iter() {
|
||||
let nope = String::from("");
|
||||
let s2 = match key_code {
|
||||
_ if key_code == &self.inputs.stick.up => &self.flags.cfg.up,
|
||||
_ if key_code == &self.inputs.stick.down => &self.flags.cfg.down,
|
||||
_ if key_code == &self.inputs.stick.left => &self.flags.cfg.left,
|
||||
_ if key_code == &self.inputs.stick.right => &self.flags.cfg.right,
|
||||
_ if key_code == &self.inputs.a => &self.flags.cfg.a,
|
||||
_ if key_code == &self.inputs.b => &self.flags.cfg.b,
|
||||
_ if key_code == &self.inputs.x => &self.flags.cfg.x,
|
||||
_ if key_code == &self.inputs.y => &self.flags.cfg.y,
|
||||
_ if key_code == &self.inputs.l => &self.flags.cfg.l,
|
||||
_ if key_code == &self.inputs.r => &self.flags.cfg.r,
|
||||
_ => &nope,
|
||||
};
|
||||
if s2.len() > 0 {
|
||||
for c in s2.chars() {
|
||||
s.push(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
if s.len() > 0 {
|
||||
self.flags.output_stream.put(s);
|
||||
}
|
||||
},
|
||||
Message::EventOccurred(event) if self.configuring.is_some() => {
|
||||
match event {
|
||||
iced::event::Event::Keyboard(keyboard::Event::KeyPressed{
|
||||
@@ -163,39 +192,17 @@ impl Application for Main {
|
||||
self.ntfy = format!("push a key to bind to {:?}", msg.clone());
|
||||
},
|
||||
}
|
||||
let mut s = vec![];
|
||||
for key_code in self.keys_down.iter() {
|
||||
let nope = String::from("");
|
||||
let s2 = match key_code {
|
||||
_ if key_code == &self.inputs.stick.up => &self.flags.cfg.up,
|
||||
_ if key_code == &self.inputs.stick.down => &self.flags.cfg.down,
|
||||
_ if key_code == &self.inputs.stick.left => &self.flags.cfg.left,
|
||||
_ if key_code == &self.inputs.stick.right => &self.flags.cfg.right,
|
||||
_ if key_code == &self.inputs.a => &self.flags.cfg.a,
|
||||
_ if key_code == &self.inputs.b => &self.flags.cfg.b,
|
||||
_ if key_code == &self.inputs.x => &self.flags.cfg.x,
|
||||
_ if key_code == &self.inputs.y => &self.flags.cfg.y,
|
||||
_ if key_code == &self.inputs.l => &self.flags.cfg.l,
|
||||
_ if key_code == &self.inputs.r => &self.flags.cfg.r,
|
||||
_ => &nope,
|
||||
};
|
||||
if s2.len() > 0 {
|
||||
for c in s2.chars() {
|
||||
s.push(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
if s.len() > 0 {
|
||||
self.flags.output_stream.put(s);
|
||||
}
|
||||
return Command::none();
|
||||
}
|
||||
|
||||
fn subscription(&self) -> Subscription<Message> {
|
||||
return subscription::events_with(|event, _| match event {
|
||||
iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)),
|
||||
_ => None,
|
||||
});
|
||||
return subscription::Subscription::batch(vec![
|
||||
subscription::events_with(|event, _| match event {
|
||||
iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)),
|
||||
_ => None,
|
||||
}),
|
||||
every(std::time::Duration::from_millis(25)).map(|_| Message::Tick),
|
||||
]);
|
||||
}
|
||||
|
||||
fn view(&self) -> Element<Message> {
|
||||
|
||||
Reference in New Issue
Block a user