Unload studio command

This commit is contained in:
Nedko Arnaudov 2009-08-30 16:23:19 +03:00
parent f55a45416e
commit 5243fd33fa
5 changed files with 47 additions and 0 deletions

View File

@ -1607,6 +1607,12 @@ static void ladish_save_studio(method_call_t * call_ptr)
}
}
static void ladish_unload_studio(method_call_t * call_ptr)
{
studio_clear();
method_return_new_void(call_ptr);
}
bool studio_new(void * call_ptr, const char * studio_name)
{
studio_clear();
@ -1655,10 +1661,14 @@ METHOD_ARGS_END
METHOD_ARGS_BEGIN(Save, "Save studio")
METHOD_ARGS_END
METHOD_ARGS_BEGIN(Unload, "Unload studio")
METHOD_ARGS_END
METHODS_BEGIN
METHOD_DESCRIBE(GetName, ladish_get_studio_name)
METHOD_DESCRIBE(Rename, ladish_rename_studio)
METHOD_DESCRIBE(Save, ladish_save_studio)
METHOD_DESCRIBE(Unload, ladish_unload_studio)
METHODS_END
SIGNAL_ARGS_BEGIN(StudioRenamed, "Studio name changed")

View File

@ -82,6 +82,22 @@
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_item_unload_studio">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">_Unload Studio</property>
<property name="use_underline">True</property>
<accelerator key="U" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image5">
<property name="visible">True</property>
<property name="stock">gtk-save</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_item_delete_studio">
<property name="visible">True</property>

View File

@ -50,6 +50,7 @@ GtkWidget * g_buffer_size_combo;
GtkWidget * g_menu_item_new_studio;
GtkWidget * g_menu_item_save_studio;
GtkWidget * g_menu_item_unload_studio;
GtkWidget * g_menu_item_rename_studio;
GtkWidget * g_menu_item_create_room;
GtkWidget * g_menu_item_destroy_room;
@ -336,6 +337,16 @@ static void new_studio(void)
}
}
static void unload_studio(void)
{
lash_info("unload studio request");
if (!studio_proxy_unload())
{
lash_error("studio unload failed");
/* TODO: display error message */
}
}
static void rename_studio(void)
{
char * new_name;
@ -383,6 +394,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_unload_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);
@ -405,6 +417,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_unload_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);
@ -519,6 +532,7 @@ int main(int argc, char** argv)
g_buffer_size_combo = get_glade_widget("buffer_size_combo");
g_menu_item_new_studio = get_glade_widget("menu_item_new_studio");
g_menu_item_save_studio = get_glade_widget("menu_item_save_studio");
g_menu_item_unload_studio = get_glade_widget("menu_item_unload_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");
@ -560,6 +574,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_new_studio), "activate", G_CALLBACK(new_studio), NULL);
g_signal_connect(G_OBJECT(g_menu_item_unload_studio), "activate", G_CALLBACK(unload_studio), 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);

View File

@ -146,6 +146,11 @@ bool studio_proxy_save(void)
return dbus_call_simple(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "Save", "", "");
}
bool studio_proxy_unload(void)
{
return dbus_call_simple(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "Unload", "", "");
}
void studio_proxy_set_renamed_callback(void (* callback)(const char * new_studio_name))
{
g_renamed_callback = callback;

View File

@ -33,6 +33,7 @@ void studio_proxy_uninit(void);
bool studio_proxy_get_name(char ** name);
bool studio_proxy_rename(const char * name);
bool studio_proxy_save(void);
bool studio_proxy_unload(void);
void studio_proxy_set_renamed_callback(void (* callback)(const char * new_studio_name));
#endif /* #ifndef STUDIO_PROXY_H__2CEC623F_C998_4618_A947_D1A0016DF978__INCLUDED */