From 39554d8d99aef81e74a2a84c7f1daff20d96fd29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Cerveau?= Date: Fri, 18 Feb 2022 16:52:07 +0100 Subject: [PATCH] logger: add a popup menu to clear the logs Add a way to clear the logs. --- src/app.rs | 2 ++ src/ui/gps.ui | 8 ++++++++ src/ui/logger.rs | 27 +++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/src/app.rs b/src/app.rs index 1327dd7..2eac9fc 100644 --- a/src/app.rs +++ b/src/app.rs @@ -272,6 +272,8 @@ impl GPSApp { application.add_action(&gio::SimpleAction::new("favorite.remove", None)); + application.add_action(&gio::SimpleAction::new("logger.clear", None)); + application.add_action(&gio::SimpleAction::new("graph.check", None)); application.add_action(&gio::SimpleAction::new("graph.pipeline_details", None)); diff --git a/src/ui/gps.ui b/src/ui/gps.ui index c151f19..6a36037 100644 --- a/src/ui/gps.ui +++ b/src/ui/gps.ui @@ -60,6 +60,14 @@ app.favorite.remove + + +
+ + _Clear + app.logger.clear + +
diff --git a/src/ui/logger.rs b/src/ui/logger.rs index c28c9a8..5b23e90 100644 --- a/src/ui/logger.rs +++ b/src/ui/logger.rs @@ -9,6 +9,7 @@ use crate::app::GPSApp; use crate::ui::treeview; use gtk::prelude::*; +use gtk::{gio, glib}; use gtk::{ListStore, TreeView}; @@ -30,6 +31,32 @@ pub fn setup_logger_list(app: &GPSApp) { .object("treeview-logger") .expect("Couldn't get treeview-logger"); reset_logger_list(&logger_list); + + let gesture = gtk::GestureClick::new(); + gesture.set_button(0); + let app_weak = app.downgrade(); + gesture.connect_pressed( + glib::clone!(@weak logger_list => move |gesture, _n_press, x, y| { + let app = upgrade_weak!(app_weak); + if gesture.current_button() == gtk::gdk::BUTTON_SECONDARY { + let pop_menu = app.app_pop_menu_at_position(&logger_list, x, y); + let menu: gio::MenuModel = app + .builder + .object("logger_menu") + .expect("Couldn't get fav_menu model"); + pop_menu.set_menu_model(Some(&menu)); + + app.connect_app_menu_action("logger.clear", + move |_,_| { + reset_logger_list(&logger_list); + } + ); + + pop_menu.show(); + } + }), + ); + logger_list.add_controller(&gesture); } pub fn add_to_logger_list(app: &GPSApp, log_entry: &str) {