Rename studio dialog
This commit is contained in:
parent
58a5e9a56b
commit
d6096db1dd
111
gui/gui.glade
111
gui/gui.glade
|
@ -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"><b>Name</b></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>
|
||||
|
|
55
gui/main.c
55
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue