gui: menu item for controling raw jack graph display

This commit is contained in:
Nedko Arnaudov 2010-04-05 14:06:18 +03:00
parent 49812cd219
commit edf72d3972
4 changed files with 52 additions and 21 deletions

View File

@ -230,6 +230,14 @@
<signal name="activate" handler="on_menu_view_toolbar_activate"/>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="menu_item_view_raw_jack">
<property name="visible">True</property>
<property name="label" translatable="yes">_JACK</property>
<property name="use_underline">True</property>
<accelerator key="J" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="menu_item_view_arrange">
<property name="label">_Arrange</property>

View File

@ -73,9 +73,11 @@ GtkWidget * g_xruns_label;
GtkWidget * g_xrun_progress_bar;
graph_view_handle g_jack_view = NULL;
graph_view_handle g_studio_view = NULL;
bool g_jack_view_enabled = false;
graph_view_handle g_jack_view = NULL;
static guint g_jack_poll_source_tag;
static guint g_ladishd_poll_source_tag;
static double g_jack_max_dsp_load = 0.0;
@ -973,20 +975,33 @@ void jack_stopped(void)
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(g_xrun_progress_bar), 0.0);
}
static void update_raw_jack_visibility(void)
{
/* if there is no jack view and its display is enabled and jack is avaialable, create the raw jack view */
if (g_jack_view == NULL && g_jack_view_enabled && g_jack_state != JACK_STATE_NA)
{
if (!create_view("Raw JACK", JACKDBUS_SERVICE_NAME, JACKDBUS_OBJECT_PATH, false, false, true, &g_jack_view))
{
log_error("create_view() failed for jack");
return;
}
}
/* if there is jack view and its display is disabled or it is enabled byt jack is not avaialable, destroy the raw jack view */
if (g_jack_view != NULL && (!g_jack_view_enabled || g_jack_state == JACK_STATE_NA))
{
destroy_view(g_jack_view);
g_jack_view = NULL;
}
}
void jack_appeared(void)
{
log_info("JACK appeared");
g_jack_state = JACK_STATE_STOPPED;
studio_state_changed(NULL);
#if defined(SHOW_RAW_JACK)
if (!create_view("Raw JACK", JACKDBUS_SERVICE_NAME, JACKDBUS_OBJECT_PATH, false, false, true, &g_jack_view))
{
log_error("create_view() failed for jack");
return;
}
#endif
update_raw_jack_visibility();
}
void jack_disappeared(void)
@ -997,14 +1012,7 @@ void jack_disappeared(void)
g_jack_state = JACK_STATE_NA;
studio_state_changed(NULL);
#if defined(SHOW_RAW_JACK)
if (g_jack_view != NULL)
{
destroy_view(g_jack_view);
g_jack_view = NULL;
}
#endif
update_raw_jack_visibility();
}
static void room_appeared(const char * opath, const char * name, const char * template)
@ -1086,6 +1094,13 @@ void menu_request_toggle_toolbar(bool visible)
}
}
void menu_request_toggle_raw_jack(bool visible)
{
//log_info("toogle raw jack visibility -> %s", visible ? "visible" : "invisible");
g_jack_view_enabled = visible;
update_raw_jack_visibility();
}
static char * read_file_contents(const char * filename)
{
int fd;

View File

@ -50,13 +50,16 @@ static GtkCheckMenuItem * g_menu_item_jack_latency_2048;
static GtkCheckMenuItem * g_menu_item_jack_latency_4096;
static GtkCheckMenuItem * g_menu_item_jack_latency_8192;
static GtkWidget * g_menu_item_view_toolbar;
static GtkWidget * g_menu_item_view_raw_jack;
static GtkWidget * g_menu_item_start_app;
static bool g_latency_changing;
static void toggle_toolbar(void)
typedef void (* menu_request_toggle_func)(bool visible);
static void toggled(GtkCheckMenuItem * checkmenuitem, gpointer user_data)
{
menu_request_toggle_toolbar(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(g_menu_item_view_toolbar)));
((menu_request_toggle_func)user_data)(gtk_check_menu_item_get_active(checkmenuitem));
}
static void buffer_size_change_request(GtkCheckMenuItem * item_ptr, gpointer user_data)
@ -90,6 +93,7 @@ void menu_init(void)
g_menu_item_daemon_exit = get_gtk_builder_widget("menu_item_daemon_exit");
g_menu_item_jack_configure = get_gtk_builder_widget("menu_item_jack_configure");
g_menu_item_view_toolbar = get_gtk_builder_widget("menu_item_view_toolbar");
g_menu_item_view_raw_jack = get_gtk_builder_widget("menu_item_view_raw_jack");
g_menu_item_jack_latency_32 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_32"));
g_menu_item_jack_latency_64 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_64"));
@ -101,7 +105,9 @@ void menu_init(void)
g_menu_item_jack_latency_4096 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_4096"));
g_menu_item_jack_latency_8192 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_8192"));
g_signal_connect(G_OBJECT(g_menu_item_view_toolbar), "activate", G_CALLBACK(toggle_toolbar), NULL);
g_signal_connect(G_OBJECT(g_menu_item_view_toolbar), "toggled", G_CALLBACK(toggled), menu_request_toggle_toolbar);
g_signal_connect(G_OBJECT(g_menu_item_view_raw_jack), "toggled", G_CALLBACK(toggled), menu_request_toggle_raw_jack);
g_signal_connect(G_OBJECT(g_menu_item_new_studio), "activate", G_CALLBACK(menu_request_new_studio), NULL);
g_signal_connect(G_OBJECT(g_menu_item_start_studio), "activate", G_CALLBACK(menu_request_start_studio), NULL);
g_signal_connect(G_OBJECT(g_menu_item_stop_studio), "activate", G_CALLBACK(menu_request_stop_studio), NULL);

View File

@ -34,7 +34,6 @@ 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);
void menu_request_jack_configure(void);
void menu_request_save_studio(void);
void menu_request_save_as_studio(void);
@ -48,4 +47,7 @@ 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_toggle_toolbar(bool visible);
void menu_request_toggle_raw_jack(bool visible);
#endif /* #ifndef MENU_H__37ACA2FE_C43D_4FA8_B7CF_6DD345F17CD1__INCLUDED */