mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2024-11-25 10:30:59 +00:00
GPSApp: Able to clear the graph with new
Able to clear with new file and load a preconfigured graph with clear button
This commit is contained in:
parent
a0bb503b27
commit
a15c9c7353
2 changed files with 24 additions and 15 deletions
10
graphs/video.xml
Normal file
10
graphs/video.xml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Graph>
|
||||||
|
<Node name="videotestsrc" id="1" type="Source">
|
||||||
|
<Port name="out" id="1" direction="Output" />
|
||||||
|
</Node>
|
||||||
|
<Node name="autovideosink" id="2" type="Sink">
|
||||||
|
<Port name="in" id="2" direction="Input" />
|
||||||
|
</Node>
|
||||||
|
<Link id="1" node_from="1" node_to="2" port_from="1" port_to="2" active="true" />
|
||||||
|
</Graph>
|
29
src/app.rs
29
src/app.rs
|
@ -256,7 +256,13 @@ impl GPSApp {
|
||||||
application.set_accels_for_action("app.quit", &["<primary>q"]);
|
application.set_accels_for_action("app.quit", &["<primary>q"]);
|
||||||
|
|
||||||
let action = gio::SimpleAction::new("new-window", None);
|
let action = gio::SimpleAction::new("new-window", None);
|
||||||
|
let app_weak = self.downgrade();
|
||||||
|
action.connect_activate({
|
||||||
|
move |_, _| {
|
||||||
|
let app = upgrade_weak!(app_weak);
|
||||||
|
app.clear_graph();
|
||||||
|
}
|
||||||
|
});
|
||||||
application.add_action(&action);
|
application.add_action(&action);
|
||||||
application.set_accels_for_action("app.new-window", &["<primary>n"]);
|
application.set_accels_for_action("app.new-window", &["<primary>n"]);
|
||||||
|
|
||||||
|
@ -339,19 +345,7 @@ impl GPSApp {
|
||||||
let app_weak = self.downgrade();
|
let app_weak = self.downgrade();
|
||||||
add_button.connect_clicked(glib::clone!(@weak window => move |_| {
|
add_button.connect_clicked(glib::clone!(@weak window => move |_| {
|
||||||
let app = upgrade_weak!(app_weak);
|
let app = upgrade_weak!(app_weak);
|
||||||
let graph_view = app.graphview.borrow_mut();
|
app.load_graph("graphs/video.xml").expect("Unable to open file");
|
||||||
graph_view.remove_all_nodes();
|
|
||||||
let node_id = graph_view.next_node_id();
|
|
||||||
graph_view.add_node_with_port(
|
|
||||||
node_id,
|
|
||||||
Node::new(
|
|
||||||
node_id,
|
|
||||||
"filesrc",
|
|
||||||
Pipeline::element_type("videotestsrc"),
|
|
||||||
),
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let app_weak = self.downgrade();
|
let app_weak = self.downgrade();
|
||||||
|
@ -510,6 +504,11 @@ impl GPSApp {
|
||||||
node.update_node_properties(properties);
|
node.update_node_properties(properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn clear_graph(&self) {
|
||||||
|
let graph_view = self.graphview.borrow_mut();
|
||||||
|
graph_view.remove_all_nodes();
|
||||||
|
}
|
||||||
|
|
||||||
pub fn save_graph(&self, filename: &str) -> anyhow::Result<(), Box<dyn error::Error>> {
|
pub fn save_graph(&self, filename: &str) -> anyhow::Result<(), Box<dyn error::Error>> {
|
||||||
let graph_view = self.graphview.borrow_mut();
|
let graph_view = self.graphview.borrow_mut();
|
||||||
graph_view.render_xml(filename)?;
|
graph_view.render_xml(filename)?;
|
||||||
|
@ -517,8 +516,8 @@ impl GPSApp {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_graph(&self, filename: &str) -> anyhow::Result<(), Box<dyn error::Error>> {
|
pub fn load_graph(&self, filename: &str) -> anyhow::Result<(), Box<dyn error::Error>> {
|
||||||
|
self.clear_graph();
|
||||||
let graph_view = self.graphview.borrow_mut();
|
let graph_view = self.graphview.borrow_mut();
|
||||||
graph_view.remove_all_nodes();
|
|
||||||
graph_view.load_xml(filename)?;
|
graph_view.load_xml(filename)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue