gui: delete room implemented

This commit is contained in:
Nedko Arnaudov 2010-03-21 18:57:44 +02:00
parent 3ee262014b
commit 6eda583e2e
7 changed files with 53 additions and 2 deletions

View File

@ -28,6 +28,7 @@
#include "graph_view.h" #include "graph_view.h"
#include "gtk_builder.h" #include "gtk_builder.h"
#include "world_tree.h" #include "world_tree.h"
#include "menu.h"
struct graph_view struct graph_view
{ {
@ -244,6 +245,7 @@ void activate_view(graph_view_handle view)
{ {
attach_canvas(view_ptr); attach_canvas(view_ptr);
set_main_window_title(view); set_main_window_title(view);
menu_view_activated(is_room_view(view));
} }
const char * get_view_name(graph_view_handle view) const char * get_view_name(graph_view_handle view)
@ -290,6 +292,21 @@ canvas_handle get_current_canvas(void)
return graph_canvas_get_canvas(g_current_view->graph_canvas); return graph_canvas_get_canvas(g_current_view->graph_canvas);
} }
const char * get_current_view_room_name(void)
{
if (g_current_view == NULL || !is_room_view((graph_view_handle)g_current_view))
{
return NULL;
}
return g_current_view->name;
}
bool is_room_view(graph_view_handle view)
{
return strcmp(graph_proxy_get_object(view_ptr->graph), STUDIO_OBJECT_PATH) != 0;
}
bool app_run_custom(graph_view_handle view, const char * command, const char * name, bool run_in_terminal, uint8_t level) bool app_run_custom(graph_view_handle view, const char * command, const char * name, bool run_in_terminal, uint8_t level)
{ {
return ladish_app_supervisor_proxy_run_custom(view_ptr->app_supervisor, command, name, run_in_terminal, level); return ladish_app_supervisor_proxy_run_custom(view_ptr->app_supervisor, command, name, run_in_terminal, level);

View File

@ -50,6 +50,8 @@ const char * get_view_name(graph_view_handle view);
const char * get_view_opath(graph_view_handle view); const char * get_view_opath(graph_view_handle view);
bool set_view_name(graph_view_handle view, const char * name); bool set_view_name(graph_view_handle view, const char * name);
canvas_handle get_current_canvas(void); canvas_handle get_current_canvas(void);
const char * get_current_view_room_name(void);
bool is_room_view(graph_view_handle view);
ladish_app_supervisor_proxy_handle graph_view_get_app_supervisor(graph_view_handle view); ladish_app_supervisor_proxy_handle graph_view_get_app_supervisor(graph_view_handle view);
bool app_run_custom(graph_view_handle view, const char * command, const char * name, bool run_in_terminal, uint8_t level); bool app_run_custom(graph_view_handle view, const char * command, const char * name, bool run_in_terminal, uint8_t level);

View File

@ -786,6 +786,25 @@ void menu_request_create_room(void)
} }
} }
void menu_request_destroy_room(void)
{
const char * room;
room = get_current_view_room_name();
if (room == NULL)
{
ASSERT_NO_PASS;
return;
}
log_info("destroy room '%s' request", room);
if (!studio_proxy_delete_room(room))
{
error_message_box("Room deletion failed, please inspect logs.");
}
}
static gboolean poll_jack(gpointer data) static gboolean poll_jack(gpointer data)
{ {
update_load(); update_load();

View File

@ -113,6 +113,7 @@ void menu_init(void)
g_signal_connect(G_OBJECT(g_menu_item_jack_configure), "activate", G_CALLBACK(menu_request_jack_configure), NULL); g_signal_connect(G_OBJECT(g_menu_item_jack_configure), "activate", G_CALLBACK(menu_request_jack_configure), NULL);
g_signal_connect(G_OBJECT(g_menu_item_start_app), "activate", G_CALLBACK(menu_request_start_app), NULL); g_signal_connect(G_OBJECT(g_menu_item_start_app), "activate", G_CALLBACK(menu_request_start_app), NULL);
g_signal_connect(G_OBJECT(g_menu_item_create_room), "activate", G_CALLBACK(menu_request_create_room), NULL); g_signal_connect(G_OBJECT(g_menu_item_create_room), "activate", G_CALLBACK(menu_request_create_room), NULL);
g_signal_connect(G_OBJECT(g_menu_item_destroy_room), "activate", G_CALLBACK(menu_request_destroy_room), NULL);
g_signal_connect(G_OBJECT(g_menu_item_jack_latency_32), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)32); g_signal_connect(G_OBJECT(g_menu_item_jack_latency_32), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)32);
g_signal_connect(G_OBJECT(g_menu_item_jack_latency_64), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)64); g_signal_connect(G_OBJECT(g_menu_item_jack_latency_64), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)64);
@ -135,8 +136,6 @@ void menu_studio_state_changed(unsigned int studio_state)
gtk_widget_set_sensitive(g_menu_item_rename_studio, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED); gtk_widget_set_sensitive(g_menu_item_rename_studio, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED);
gtk_widget_set_sensitive(g_menu_item_start_app, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED); gtk_widget_set_sensitive(g_menu_item_start_app, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED);
gtk_widget_set_sensitive(g_menu_item_create_room, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED); gtk_widget_set_sensitive(g_menu_item_create_room, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED);
//gtk_widget_set_sensitive(g_menu_item_destroy_room, studio_state == STUDIO_STATE_STOPPED || studio_state == STUDIO_STATE_STARTED);
//gtk_widget_set_sensitive(g_menu_item_load_project, studio_state == STUDIO_STATE_STARTED);
} }
void menu_set_jack_latency_items_sensivity(bool sensitive) void menu_set_jack_latency_items_sensivity(bool sensitive)
@ -200,3 +199,9 @@ bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr)
return true; return true;
} }
void menu_view_activated(bool room)
{
gtk_widget_set_sensitive(g_menu_item_destroy_room, room);
//gtk_widget_set_sensitive(g_menu_item_load_project, room);
}

View File

@ -31,6 +31,7 @@ void menu_init(void);
void menu_studio_state_changed(unsigned int studio_state); void menu_studio_state_changed(unsigned int studio_state);
void menu_set_jack_latency_items_sensivity(bool sensitive); void menu_set_jack_latency_items_sensivity(bool sensitive);
bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr); bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr);
void menu_view_activated(bool room);
void menu_request_daemon_exit(void); void menu_request_daemon_exit(void);
void menu_request_toggle_toolbar(bool visible); void menu_request_toggle_toolbar(bool visible);
@ -44,6 +45,7 @@ void menu_request_stop_studio(void);
void menu_request_unload_studio(void); void menu_request_unload_studio(void);
void menu_request_rename_studio(void); void menu_request_rename_studio(void);
void menu_request_create_room(void); void menu_request_create_room(void);
void menu_request_destroy_room(void);
void menu_request_jack_latency_change(uint32_t buffer_size); void menu_request_jack_latency_change(uint32_t buffer_size);
#endif /* #ifndef MENU_H__37ACA2FE_C43D_4FA8_B7CF_6DD345F17CD1__INCLUDED */ #endif /* #ifndef MENU_H__37ACA2FE_C43D_4FA8_B7CF_6DD345F17CD1__INCLUDED */

View File

@ -334,3 +334,8 @@ bool studio_proxy_create_room(const char * name, const char * template)
{ {
return dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "NewRoom", "ss", &name, &template, ""); return dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "NewRoom", "ss", &name, &template, "");
} }
bool studio_proxy_delete_room(const char * name)
{
return dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "DeleteRoom", "s", &name, "");
}

View File

@ -51,5 +51,6 @@ studio_proxy_set_room_callbacks(
void (* changed)(const char * opath, const char * name, const char * template)); void (* changed)(const char * opath, const char * name, const char * template));
bool studio_proxy_create_room(const char * name, const char * template); bool studio_proxy_create_room(const char * name, const char * template);
bool studio_proxy_delete_room(const char * name);
#endif /* #ifndef STUDIO_PROXY_H__2CEC623F_C998_4618_A947_D1A0016DF978__INCLUDED */ #endif /* #ifndef STUDIO_PROXY_H__2CEC623F_C998_4618_A947_D1A0016DF978__INCLUDED */