From 71e68b846fe77ba630ff3c79fe5175d74f293213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Cerveau?= Date: Thu, 20 Jan 2022 11:53:06 +0100 Subject: [PATCH] app: Display a tooltip on node Handle node-added signal to set a tooltip on each node. --- src/app.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/app.rs b/src/app.rs index 7077259..4aceed9 100644 --- a/src/app.rs +++ b/src/app.rs @@ -39,7 +39,7 @@ use crate::gps::{ElementInfo, PadInfo, Pipeline, PipelineState}; use crate::logger; use crate::plugindialogs; use crate::settings::Settings; -use crate::{GPS_DEBUG, GPS_ERROR, GPS_TRACE, GPS_WARN}; +use crate::{GPS_DEBUG, GPS_ERROR, GPS_INFO, GPS_TRACE, GPS_WARN}; use crate::graphmanager::{GraphView, PortDirection, PortPresence}; @@ -668,7 +668,22 @@ impl GPSApp { let app = upgrade_weak!(app_weak); app.clear_graph(); }); - + let app_weak = self.downgrade(); + self.graphview.borrow().connect_local( + "node-added", + false, + glib::clone!(@weak application => @default-return None, move |values: &[Value]| { + let app = upgrade_weak!(app_weak, None); + let graph_id = values[1].get::().expect("graph id in args[1]"); + let node_id = values[2].get::().expect("node id in args[2]"); + GPS_INFO!("Node added node id={} in graph id={}", node_id, graph_id); + if let Some(node) = app.graphview.borrow().node(node_id) { + let description = ElementInfo::element_description(&node.name()).ok(); + node.set_tooltip_markup(description.as_deref()); + } + None + }), + ); let app_weak = self.downgrade(); self.graphview.borrow().connect_local( "graph-updated",