summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2009-10-21 17:09:05 +0100
committerJakob Bornecrantz <jakob@vmware.com>2009-10-21 17:09:05 +0100
commitd7966693c005fbe060aacf43e400bab4c6aaeefd (patch)
tree50db6bb38b1a9be3bb0038ddbcabf53c8b68aec0
parent6498f763a38869322c0063dd2a701fe5c06c70dc (diff)
Dim buttons in context view if nothing is bound to them
-rw-r--r--src/context.c20
-rw-r--r--src/main.c58
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);