Rename studio dialog

This commit is contained in:
Nedko Arnaudov 2009-08-23 12:13:43 +03:00
parent 58a5e9a56b
commit d6096db1dd
2 changed files with 166 additions and 0 deletions

View File

@ -36,6 +36,21 @@
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_item_rename_studio">
<property name="visible">True</property>
<property name="label" translatable="yes">_Rename Studio...</property>
<property name="use_underline">True</property>
<accelerator key="R" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image14">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_item_save_studio">
<property name="visible">True</property>
@ -753,4 +768,100 @@ along with LADI Session Handler; if not, write to the Free Software Foundation,
</widget>
</child>
</widget>
<widget class="GtkDialog" id="rename_dialog">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Rename</property>
<property name="modal">True</property>
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="transient_for">main_win</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox7">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">2</property>
<child>
<widget class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">10</property>
<child>
<widget class="GtkFrame" id="frame7">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label_xalign">0</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<child>
<widget class="GtkEntry" id="rename_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="activates_default">True</property>
</widget>
</child>
<child>
<widget class="GtkLabel" id="rename_label">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area7">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="rename_cancel_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="response_id">1</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="rename_ok_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">gtk-ok</property>
<property name="use_stock">True</property>
<property name="response_id">2</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>

View File

@ -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);