From d7966693c005fbe060aacf43e400bab4c6aaeefd Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Wed, 21 Oct 2009 17:09:05 +0100 Subject: Dim buttons in context view if nothing is bound to them --- src/context.c | 20 ++++++++++++++++++++ src/main.c | 58 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/src/context.c b/src/context.c index 03eea96..fa754c2 100644 --- a/src/context.c +++ b/src/context.c @@ -266,6 +266,7 @@ static gboolean context_action_info_info(struct rbug_event *e, GtkTreeIter iter; GdkPixbuf *buf = NULL; gboolean ret; + int k; info = (struct rbug_proto_context_info_reply *)header; @@ -297,6 +298,25 @@ static gboolean context_action_info_info(struct rbug_event *e, else gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(p->tool.break_after), FALSE); + + + /* disable buttons that don't have a valid target */ + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_FRAGMENT]), (info->fragment)); + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_VERTEX]), (info->vertex)); + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_GEOM]), false); + + for (k = 0; k < 8; k++) { + bool active = (unsigned)k < info->cbufs_len && info->cbufs[k]; + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_COLOR0+k]), active); + } + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_ZS]), (info->zsbuf)); + + for (k = 0; k < 16; k++) { + bool active = (unsigned)k < info->texs_len && info->texs[k]; + gtk_action_set_sensitive(GTK_ACTION(p->context.ra[CTX_VIEW_TEXTURE0+k]), active); + } + + /* find the proper view */ ret = FALSE; switch (p->context.view_id) { case CTX_VIEW_FRAGMENT: diff --git a/src/main.c b/src/main.c index f57e4ba..aae22c6 100644 --- a/src/main.c +++ b/src/main.c @@ -426,35 +426,35 @@ void main_window_create(struct program *p) g_signal_connect(tool_refresh, "clicked", G_CALLBACK(refresh), p); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), p); - p->context.ra[0] = gtk_builder_get_object(builder, "ra_ctx_fragment"); - p->context.ra[1] = gtk_builder_get_object(builder, "ra_ctx_vertex"); - p->context.ra[2] = gtk_builder_get_object(builder, "ra_ctx_geom"); - p->context.ra[3] = gtk_builder_get_object(builder, "ra_ctx_zs"); - p->context.ra[4] = gtk_builder_get_object(builder, "ra_ctx_color0"); - p->context.ra[5] = gtk_builder_get_object(builder, "ra_ctx_color1"); - p->context.ra[6] = gtk_builder_get_object(builder, "ra_ctx_color2"); - p->context.ra[7] = gtk_builder_get_object(builder, "ra_ctx_color3"); - p->context.ra[8] = gtk_builder_get_object(builder, "ra_ctx_color4"); - p->context.ra[9] = gtk_builder_get_object(builder, "ra_ctx_color5"); - p->context.ra[10] = gtk_builder_get_object(builder, "ra_ctx_color6"); - p->context.ra[11] = gtk_builder_get_object(builder, "ra_ctx_color7"); - - p->context.ra[12] = gtk_builder_get_object(builder, "ra_ctx_texture0"); - p->context.ra[13] = gtk_builder_get_object(builder, "ra_ctx_texture1"); - p->context.ra[14] = gtk_builder_get_object(builder, "ra_ctx_texture2"); - p->context.ra[15] = gtk_builder_get_object(builder, "ra_ctx_texture3"); - p->context.ra[16] = gtk_builder_get_object(builder, "ra_ctx_texture4"); - p->context.ra[17] = gtk_builder_get_object(builder, "ra_ctx_texture5"); - p->context.ra[18] = gtk_builder_get_object(builder, "ra_ctx_texture6"); - p->context.ra[19] = gtk_builder_get_object(builder, "ra_ctx_texture7"); - p->context.ra[20] = gtk_builder_get_object(builder, "ra_ctx_texture8"); - p->context.ra[21] = gtk_builder_get_object(builder, "ra_ctx_texture9"); - p->context.ra[22] = gtk_builder_get_object(builder, "ra_ctx_texture10"); - p->context.ra[23] = gtk_builder_get_object(builder, "ra_ctx_texture11"); - p->context.ra[24] = gtk_builder_get_object(builder, "ra_ctx_texture12"); - p->context.ra[25] = gtk_builder_get_object(builder, "ra_ctx_texture13"); - p->context.ra[26] = gtk_builder_get_object(builder, "ra_ctx_texture14"); - p->context.ra[27] = gtk_builder_get_object(builder, "ra_ctx_texture15"); + p->context.ra[CTX_VIEW_FRAGMENT] = gtk_builder_get_object(builder, "ra_ctx_fragment"); + p->context.ra[CTX_VIEW_VERTEX] = gtk_builder_get_object(builder, "ra_ctx_vertex"); + p->context.ra[CTX_VIEW_GEOM] = gtk_builder_get_object(builder, "ra_ctx_geom"); + p->context.ra[CTX_VIEW_ZS] = gtk_builder_get_object(builder, "ra_ctx_zs"); + p->context.ra[CTX_VIEW_COLOR0] = gtk_builder_get_object(builder, "ra_ctx_color0"); + p->context.ra[CTX_VIEW_COLOR1] = gtk_builder_get_object(builder, "ra_ctx_color1"); + p->context.ra[CTX_VIEW_COLOR2] = gtk_builder_get_object(builder, "ra_ctx_color2"); + p->context.ra[CTX_VIEW_COLOR3] = gtk_builder_get_object(builder, "ra_ctx_color3"); + p->context.ra[CTX_VIEW_COLOR4] = gtk_builder_get_object(builder, "ra_ctx_color4"); + p->context.ra[CTX_VIEW_COLOR5] = gtk_builder_get_object(builder, "ra_ctx_color5"); + p->context.ra[CTX_VIEW_COLOR6] = gtk_builder_get_object(builder, "ra_ctx_color6"); + p->context.ra[CTX_VIEW_COLOR7] = gtk_builder_get_object(builder, "ra_ctx_color7"); + + p->context.ra[CTX_VIEW_TEXTURE0] = gtk_builder_get_object(builder, "ra_ctx_texture0"); + p->context.ra[CTX_VIEW_TEXTURE1] = gtk_builder_get_object(builder, "ra_ctx_texture1"); + p->context.ra[CTX_VIEW_TEXTURE2] = gtk_builder_get_object(builder, "ra_ctx_texture2"); + p->context.ra[CTX_VIEW_TEXTURE3] = gtk_builder_get_object(builder, "ra_ctx_texture3"); + p->context.ra[CTX_VIEW_TEXTURE4] = gtk_builder_get_object(builder, "ra_ctx_texture4"); + p->context.ra[CTX_VIEW_TEXTURE5] = gtk_builder_get_object(builder, "ra_ctx_texture5"); + p->context.ra[CTX_VIEW_TEXTURE6] = gtk_builder_get_object(builder, "ra_ctx_texture6"); + p->context.ra[CTX_VIEW_TEXTURE7] = gtk_builder_get_object(builder, "ra_ctx_texture7"); + p->context.ra[CTX_VIEW_TEXTURE8] = gtk_builder_get_object(builder, "ra_ctx_texture8"); + p->context.ra[CTX_VIEW_TEXTURE9] = gtk_builder_get_object(builder, "ra_ctx_texture9"); + p->context.ra[CTX_VIEW_TEXTURE10] = gtk_builder_get_object(builder, "ra_ctx_texture10"); + p->context.ra[CTX_VIEW_TEXTURE11] = gtk_builder_get_object(builder, "ra_ctx_texture11"); + p->context.ra[CTX_VIEW_TEXTURE12] = gtk_builder_get_object(builder, "ra_ctx_texture12"); + p->context.ra[CTX_VIEW_TEXTURE13] = gtk_builder_get_object(builder, "ra_ctx_texture13"); + p->context.ra[CTX_VIEW_TEXTURE14] = gtk_builder_get_object(builder, "ra_ctx_texture14"); + p->context.ra[CTX_VIEW_TEXTURE15] = gtk_builder_get_object(builder, "ra_ctx_texture15"); g_assert(27 < CTX_VIEW_NUM); -- cgit v1.2.3