From d6096db1ddcdfa42ab097804f492fd90d596cd43 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Sun, 23 Aug 2009 12:13:43 +0300 Subject: [PATCH] Rename studio dialog --- gui/gui.glade | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++ gui/main.c | 55 +++++++++++++++++++++++++ 2 files changed, 166 insertions(+) diff --git a/gui/gui.glade b/gui/gui.glade index 7157fbc5..39f2a919 100644 --- a/gui/gui.glade +++ b/gui/gui.glade @@ -36,6 +36,21 @@ + + + True + _Rename Studio... + True + + + + True + gtk-edit + 1 + + + + True @@ -753,4 +768,100 @@ along with LADI Session Handler; if not, write to the Free Software Foundation, + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + Rename + True + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + main_win + False + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 10 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + GTK_SHADOW_NONE + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Name</b> + True + + + label_item + + + + + False + + + + + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_BUTTONBOX_END + + + True + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-cancel + True + 1 + + + + + True + True + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-ok + True + 2 + + + 1 + + + + + False + GTK_PACK_END + + + + + diff --git a/gui/main.c b/gui/main.c index 2b947817..7de95998 100644 --- a/gui/main.c +++ b/gui/main.c @@ -42,15 +42,20 @@ #include "../studio_proxy.h" GtkWidget * g_main_win; + GtkWidget * g_clear_load_button; GtkWidget * g_xrun_progress_bar; GtkWidget * g_buffer_size_combo; + GtkWidget * g_menu_item_save_studio; +GtkWidget * g_menu_item_rename_studio; GtkWidget * g_menu_item_create_room; GtkWidget * g_menu_item_destroy_room; GtkWidget * g_menu_item_load_project; GtkWidget * g_menu_item_start_app; +GtkWidget * g_rename_dialog; + graph_view_handle g_jack_view = NULL; graph_view_handle g_studio_view = NULL; @@ -157,6 +162,35 @@ static void clear_load(void) gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(g_xrun_progress_bar), 0.0); } +bool rename_dialog(const char * object, const char * old_name, char ** new_name) +{ + guint result; + bool renamed; + GtkEntry * entry = GTK_ENTRY(get_glade_widget("rename_entry")); + + gtk_widget_show(g_rename_dialog); + + gtk_label_set_text(GTK_LABEL(get_glade_widget("rename_label")), object); + gtk_entry_set_text(entry, old_name); + gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); + + result = gtk_dialog_run(GTK_DIALOG(g_rename_dialog)); + renamed = result == 2; + if (renamed) + { + *new_name = strdup(gtk_entry_get_text(entry)); + if (*new_name == NULL) + { + lash_error("strdup failed for new name (rename)"); + renamed = false; + } + } + + gtk_widget_hide(g_rename_dialog); + + return renamed; +} + static void arrange(void) { canvas_handle canvas; @@ -179,6 +213,21 @@ static void save_studio(void) } } +static void rename_studio(void) +{ + char * new_name; + + if (rename_dialog("Studio name", get_view_name(g_studio_view), &new_name)) + { + if (!studio_proxy_rename(new_name)) + { + lash_error("studio rename failed"); + } + + free(new_name); + } +} + static gboolean poll_jack(gpointer data) { update_load(); @@ -210,6 +259,7 @@ void control_proxy_on_studio_appeared(void) } gtk_widget_set_sensitive(g_menu_item_save_studio, true); + gtk_widget_set_sensitive(g_menu_item_rename_studio, true); gtk_widget_set_sensitive(g_menu_item_create_room, true); gtk_widget_set_sensitive(g_menu_item_destroy_room, true); gtk_widget_set_sensitive(g_menu_item_load_project, true); @@ -231,6 +281,7 @@ void control_proxy_on_studio_disappeared(void) } gtk_widget_set_sensitive(g_menu_item_save_studio, false); + gtk_widget_set_sensitive(g_menu_item_rename_studio, false); gtk_widget_set_sensitive(g_menu_item_create_room, false); gtk_widget_set_sensitive(g_menu_item_destroy_room, false); gtk_widget_set_sensitive(g_menu_item_load_project, false); @@ -316,11 +367,14 @@ int main(int argc, char** argv) g_xrun_progress_bar = get_glade_widget("xrun_progress_bar"); g_buffer_size_combo = get_glade_widget("buffer_size_combo"); g_menu_item_save_studio = get_glade_widget("menu_item_save_studio"); + g_menu_item_rename_studio = get_glade_widget("menu_item_rename_studio"); g_menu_item_create_room = get_glade_widget("menu_item_create_room"); g_menu_item_destroy_room = get_glade_widget("menu_item_destroy_room"); g_menu_item_load_project = get_glade_widget("menu_item_load_project"); g_menu_item_start_app = get_glade_widget("menu_item_start_app"); + g_rename_dialog = get_glade_widget("rename_dialog"); + world_tree_init(); view_init(); @@ -344,6 +398,7 @@ int main(int argc, char** argv) g_signal_connect(G_OBJECT(g_clear_load_button), "clicked", G_CALLBACK(clear_load), NULL); g_signal_connect(G_OBJECT(get_glade_widget("menu_item_view_arrange")), "activate", G_CALLBACK(arrange), NULL); g_signal_connect(G_OBJECT(g_menu_item_save_studio), "activate", G_CALLBACK(save_studio), NULL); + g_signal_connect(G_OBJECT(g_menu_item_rename_studio), "activate", G_CALLBACK(rename_studio), NULL); gtk_widget_show(g_main_win);