8000 pigg-953 by andrewdavidmackenzie · Pull Request #993 · andrewdavidmackenzie/pigg · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

pigg-953 #993

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions piggui/src/persistence.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ mod test {
.pin_functions
.insert(7, PinFunction::Output(Some(true))); // GPIO7 output set to 1

let output_dir = tempdir().expect("Could not create a tempdir").into_path();
let output_dir = tempdir().expect("Could not create a tempdir").keep();
let test_file = output_dir.join("test.pigg");

super::save_cfg(
Expand All @@ -151,7 +151,7 @@ mod test {
};
config.pin_functions.insert(7, PinFunction::Output(None)); // GPIO7 output set to 1

let output_dir = tempdir().expect("Could not create a tempdir").into_path();
let output_dir = tempdir().expect("Could not create a tempdir").keep();
let test_file = output_dir.join("test.pigg");

super::save_cfg(
Expand All @@ -172,7 +172,7 @@ mod test {
pin_functions: HashMap::new(),
};
config.pin_functions.insert(1, PinFunction::Input(None));
let output_dir = tempdir().expect("Could not create a tempdir").into_path();
let output_dir = tempdir().expect("Could not create a tempdir").keep();
let test_file = output_dir.join("test.pigg");

super::save_cfg(
Expand All @@ -192,7 +192,7 @@ mod test {
#[test]
fn load_one_pin_config_input_no_pull() {
let pin_config = r#"{"pin_functions":{"1":{"Input":null}}}"#;
let output_dir = tempdir().expect("Could not create a tempdir").into_path();
let output_dir = tempdir().expect("Could not create a tempdir").keep();
let test_file = output_dir.join("test.pigg");
let mut file = File::create(&test_file).expect("Could not create test file");
file.write_all(pin_config.as_bytes())
Expand Down
5 changes: 4 additions & 1 deletion piggui/src/piggui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ mod views;
mod widgets;

const PIGGUI_ID: &str = "piggui";
const CONNECTION_ERROR: &str = "Connection Error";

/// These are the messages that Piggui responds to
#[derive(Debug, Clone)]
Expand Down Expand Up @@ -146,6 +147,7 @@ fn reset_ssid(serial_number: SerialNumber) -> Task<Message> {
impl Piggui {
/// Disconnect from the hardware
fn disconnect(&mut self) {
self.info_row.clear_info_messages(); // Clear out of date messages
self.info_row
.add_info_message(Info("Disconnected".to_string()));
self.config_filename = None;
Expand Down Expand Up @@ -302,6 +304,7 @@ impl Piggui {
self.connect_dialog.enable_widgets_and_hide_spinner();
#[cfg(any(feature = "iroh", feature = "tcp"))]
self.connect_dialog.hide_modal();
self.info_row.clear_info_messages(); // Hide out of date messages
self.info_row
.add_info_message(Info("Connected".to_string()));
#[cfg(debug_assertions)] // Output used in testing - DON'T REMOVE
Expand All @@ -313,7 +316,7 @@ impl Piggui {
#[cfg(any(feature = "iroh", feature = "tcp"))]
self.connect_dialog.enable_widgets_and_hide_spinner();
self.info_row
.add_info_message(Error("Connection Error".to_string(), details.clone()));
.add_info_message(Error(CONNECTION_ERROR.to_string(), details.clone()));
#[cfg(any(feature = "iroh", feature = "tcp"))]
self.connect_dialog.set_error(details);
}
Expand Down
5 changes: 5 additions & 0 deletions piggui/src/views/info_row.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,11 @@ impl InfoRow {
self.message_row.add_message(msg);
}

/// Clear all messages from the info message display and queue
pub fn clear_info_messages(&mut self) {
self.message_row.clear_messages();
}

/// Update state based on [MessageRowMessage] messages received
pub fn update(&mut self, message: MessageRowMessage) -> Task<Message> {
self.message_row.update(message)
Expand Down
29 changes: 19 additions & 10 deletions piggui/src/views/message_box.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ pub enum InfoMessage {
pub enum MessageRowMessage {
ShowStatusMessage(InfoMessage),
ClearStatusMessage,
ClearMessageQueue,
}

#[derive(Default)]
pub struct MessageQueue {
struct MessageQueue {
queue: Vec<InfoMessage>,
current_message: Option<InfoMessage>,
}
Expand All @@ -41,7 +42,7 @@ impl MessageQueue {
/// Add a new [InfoMessage] to be displayed
/// If none is being displayed currently, set it as the one that will be displayed by view().
/// If a message is currently being displayed, add this one to the queue.
pub fn add_message(&mut self, message: InfoMessage) {
fn add_message(&mut self, message: InfoMessage) {
match self.current_message {
None => self.current_message = Some(message),
Some(_) => {
Expand All @@ -53,17 +54,19 @@ impl MessageQueue {

/// Clear the current message being displayed.
/// If there is another message in the queue then it sets that as the new message to be shown
/// If there is no other message queues to be shown, then set to None and no message is shown
pub fn clear_message(&mut self) {
if self.queue.is_empty() {
self.current_message = None;
} else {
self.current_message = self.queue.pop();
}
/// If there is no other message queued to be shown, then set to None and no message is shown
fn clear_message(&mut self) {
self.current_message = self.queue.pop();
}

/// Clear all messages from the queue and the current message being displayed
fn clear_queue(&mut self) {
self.queue.clear();
self.current_message = None;
}

/// Are there any [InfoMessage] of type Info in the queue waiting to be displayed?
pub fn showing_info_message(&self) -> bool {
fn showing_info_message(&self) -> bool {
matches!(self.current_message, Some(InfoMessage::Info(_)))
}
}
Expand All @@ -85,11 +88,17 @@ impl MessageRow {
self.message_queue.add_message(msg);
}

/// Clear the current message and all queued messages
pub fn clear_messages(&mut self) {
self.message_queue.clear_queue()
}

/// Update the state and do actions depending on the [MessageRowMessage] sent
pub fn update(&mut self, message: MessageRowMessage) -> Task<Message> {
match message {
MessageRowMessage::ShowStatusMessage(msg) => self.add_message(msg),
MessageRowMessage::ClearStatusMessage => self.message_queue.clear_message(),
MessageRowMessage::ClearMessageQueue => self.message_queue.clear_queue(),
}

Task::none()
Expand Down
2 changes: 1 addition & 1 deletion piglet/src/piglet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ mod test {
#[cfg(feature = "iroh")]
#[test]
fn write_info_file() {
let output_dir = tempdir().expect("Could not create a tempdir").into_path();
let output_dir = tempdir().expect("Could not create a tempdir").keep();
let test_file = output_dir.join("test.info");
let nodeid = iroh::NodeId::from_str("rxci3kuuxljxqej7hau727aaemcjo43zvf2zefnqla4p436sqwhq")
.expect("Could not create nodeid");
Expand Down
Loading
0