From 60280f1b897ef4e48bfaf8aba1b5eb649bbdac40 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Wed, 1 Jun 2011 04:18:16 +0300 Subject: [PATCH] vport rename --- daemon/graph_manager.c | 17 ++++++++++++++++- gui/canvas.cpp | 7 +++++++ gui/canvas.h | 6 +++++- gui/graph_canvas.c | 26 +++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/daemon/graph_manager.c b/daemon/graph_manager.c index 7d09b692..729e2a79 100644 --- a/daemon/graph_manager.c +++ b/daemon/graph_manager.c @@ -118,6 +118,7 @@ static void ladish_graph_manager_dbus_rename_port(struct dbus_method_call * call { uint64_t port_id; const char * newname; + ladish_port_handle port; if (!dbus_message_get_args( call_ptr->message, @@ -133,7 +134,21 @@ static void ladish_graph_manager_dbus_rename_port(struct dbus_method_call * call log_info("rename port request, graph '%s', port %"PRIu64", newname '%s'", ladish_graph_get_description(graph), port_id, newname); - method_return_new_void(call_ptr); + port = ladish_graph_find_port_by_id(graph, port_id); + if (port == NULL) + { + lash_dbus_error(call_ptr, LASH_DBUS_ERROR_INVALID_ARGS, "Cannot rename unknown port"); + return; + } + + if (!ladish_graph_rename_port(graph, port, newname)) + { + lash_dbus_error(call_ptr, LASH_DBUS_ERROR_GENERIC, "port rename failed"); + } + else + { + method_return_new_void(call_ptr); + } } static void ladish_graph_manager_dbus_move_port(struct dbus_method_call * call_ptr) diff --git a/gui/canvas.cpp b/gui/canvas.cpp index 7a89c083..2ae5026a 100644 --- a/gui/canvas.cpp +++ b/gui/canvas.cpp @@ -414,6 +414,13 @@ canvas_set_port_name( port_ptr->get()->set_name(name); } +const char * +canvas_get_port_name( + canvas_port_handle port) +{ + return port_ptr->get()->name().c_str(); +} + #undef port_ptr #define port1_ptr ((boost::shared_ptr *)port1) #define port2_ptr ((boost::shared_ptr *)port2) diff --git a/gui/canvas.h b/gui/canvas.h index 84014568..15eaf7a9 100644 --- a/gui/canvas.h +++ b/gui/canvas.h @@ -2,7 +2,7 @@ /* * LADI Session Handler (ladish) * - * Copyright (C) 2009, 2010 Nedko Arnaudov + * Copyright (C) 2009, 2010, 2011 Nedko Arnaudov * ************************************************************************** * This file contains the interface to the canvas functionality @@ -140,6 +140,10 @@ canvas_set_port_name( canvas_port_handle port, const char * name); +const char * +canvas_get_port_name( + canvas_port_handle port); + bool canvas_add_connection( canvas_handle canvas, diff --git a/gui/graph_canvas.c b/gui/graph_canvas.c index e4025f5b..6c4d6e95 100644 --- a/gui/graph_canvas.c +++ b/gui/graph_canvas.c @@ -29,6 +29,7 @@ #include "graph_canvas.h" #include "../dbus_constants.h" #include "../common/catdup.h" +#include "internal.h" struct graph_canvas { @@ -195,11 +196,34 @@ static void fill_module_menu(GtkMenu * menu, void * module_context) #undef client_ptr -#define port_ptr ((struct client *)port_context) +#define port_ptr ((struct port *)port_context) + +static void on_popup_menu_action_port_rename(GtkWidget * menuitem, gpointer port_context) +{ + log_info("on_popup_menu_action_port_rename %"PRIu64, port_ptr->id); + + char * new_name; + + if (name_dialog(_("Rename port"), _("Port name"), canvas_get_port_name(port_ptr->canvas_port), &new_name)) + { + if (!graph_proxy_rename_port(port_ptr->graph_canvas->graph, port_ptr->id, new_name)) + { + error_message_box("Rename failed"); + } + + free(new_name); + } +} static void fill_port_menu(GtkMenu * menu, void * port_context) { + GtkWidget * menuitem; + log_info("fill_port_menu %"PRIu64, port_ptr->id); + + menuitem = gtk_menu_item_new_with_label(_("Rename")); + g_signal_connect(menuitem, "activate", (GCallback)on_popup_menu_action_port_rename, port_ptr); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } #undef port_ptr