gui: delete room implemented
This commit is contained in:
parent
3ee262014b
commit
6eda583e2e
|
@ -28,6 +28,7 @@
|
|||
#include "graph_view.h"
|
||||
#include "gtk_builder.h"
|
||||
#include "world_tree.h"
|
||||
#include "menu.h"
|
||||
|
||||
struct graph_view
|
||||
{
|
||||
|
@ -244,6 +245,7 @@ void activate_view(graph_view_handle view)
|
|||
{
|
||||
attach_canvas(view_ptr);
|
||||
set_main_window_title(view);
|
||||
menu_view_activated(is_room_view(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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return ladish_app_supervisor_proxy_run_custom(view_ptr->app_supervisor, command, name, run_in_terminal, level);
|
||||
|
|
|
@ -50,6 +50,8 @@ const char * get_view_name(graph_view_handle view);
|
|||
const char * get_view_opath(graph_view_handle view);
|
||||
bool set_view_name(graph_view_handle view, const char * name);
|
||||
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);
|
||||
bool app_run_custom(graph_view_handle view, const char * command, const char * name, bool run_in_terminal, uint8_t level);
|
||||
|
|
19
gui/main.c
19
gui/main.c
|
@ -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)
|
||||
{
|
||||
update_load();
|
||||
|
|
|
@ -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_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_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_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_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_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)
|
||||
|
@ -200,3 +199,9 @@ bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr)
|
|||
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ void menu_init(void);
|
|||
void menu_studio_state_changed(unsigned int studio_state);
|
||||
void menu_set_jack_latency_items_sensivity(bool sensitive);
|
||||
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_toggle_toolbar(bool visible);
|
||||
|
@ -44,6 +45,7 @@ void menu_request_stop_studio(void);
|
|||
void menu_request_unload_studio(void);
|
||||
void menu_request_rename_studio(void);
|
||||
void menu_request_create_room(void);
|
||||
void menu_request_destroy_room(void);
|
||||
void menu_request_jack_latency_change(uint32_t buffer_size);
|
||||
|
||||
#endif /* #ifndef MENU_H__37ACA2FE_C43D_4FA8_B7CF_6DD345F17CD1__INCLUDED */
|
||||
|
|
|
@ -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, "");
|
||||
}
|
||||
|
||||
bool studio_proxy_delete_room(const char * name)
|
||||
{
|
||||
return dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "DeleteRoom", "s", &name, "");
|
||||
}
|
||||
|
|
|
@ -51,5 +51,6 @@ studio_proxy_set_room_callbacks(
|
|||
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_delete_room(const char * name);
|
||||
|
||||
#endif /* #ifndef STUDIO_PROXY_H__2CEC623F_C998_4618_A947_D1A0016DF978__INCLUDED */
|
||||
|
|
Loading…
Reference in New Issue