diff options
author | Jakob Bornecrantz <wallbraker@gmail.com> | 2009-06-09 15:55:12 +0100 |
---|---|---|
committer | Jakob Bornecrantz <wallbraker@gmail.com> | 2009-06-09 15:55:12 +0100 |
commit | 6498f763a38869322c0063dd2a701fe5c06c70dc (patch) | |
tree | 234cc3f26462940896a3c31dbbb19a116cb56b69 | |
parent | 359805d723586ba39c83cadf481a04e8ae8ce674 (diff) |
Support viewing currently bound textures from context view
-rw-r--r-- | res/main.xml | 173 | ||||
-rw-r--r-- | src/context.c | 71 | ||||
-rw-r--r-- | src/main.c | 19 | ||||
-rw-r--r-- | src/program.h | 20 |
4 files changed, 248 insertions, 35 deletions
diff --git a/res/main.xml b/res/main.xml index 8f8e485..b9d9cf3 100644 --- a/res/main.xml +++ b/res/main.xml @@ -270,7 +270,7 @@ <child> <object class="GtkTable" id="_table1"> <property name="visible">True</property> - <property name="n_rows">2</property> + <property name="n_rows">3</property> <property name="n_columns">2</property> <child> <object class="GtkLabel" id="_label1"> @@ -283,7 +283,7 @@ <object class="GtkLabel" id="_label2"> <property name="visible">True</property> <property name="xalign">1</property> - <property name="label" translatable="yes">Surfaces: </property> + <property name="label" translatable="yes">Textures: </property> </object> <packing> <property name="top_attach">1</property> @@ -291,6 +291,17 @@ </packing> </child> <child> + <object class="GtkLabel" id="_label3"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">Surfaces: </property> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> <object class="GtkHButtonBox" id="_hbuttonbox1"> <property name="visible">True</property> <property name="spacing">2</property> @@ -333,9 +344,91 @@ <object class="GtkHButtonBox" id="_hbuttonbox2"> <property name="visible">True</property> <property name="spacing">2</property> + <child> + <object class="GtkToggleButton" id="_togglebutton4"> + <property name="label" translatable="yes">Texture 1</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">ra_ctx_texture0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="_togglebutton5"> + <property name="label" translatable="yes">Texture 2</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">ra_ctx_texture1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="_togglebutton6"> + <property name="label" translatable="yes">Texture 3</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">ra_ctx_texture2</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="_togglebutton7"> + <property name="label" translatable="yes">Texture 4</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">ra_ctx_texture3</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="_togglebutton8"> + <property name="label" translatable="yes">Texture 5</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">ra_ctx_texture4</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="_hbuttonbox3"> + <property name="visible">True</property> + <property name="spacing">2</property> <property name="layout_style">start</property> <child> - <object class="GtkToggleButton" id="_togglebutton3"> + <object class="GtkToggleButton" id="_togglebutton19"> <property name="label" translatable="yes">Color 1</property> <property name="visible">True</property> <property name="can_focus">True</property> @@ -349,7 +442,7 @@ </packing> </child> <child> - <object class="GtkToggleButton" id="_togglebutton4"> + <object class="GtkToggleButton" id="_togglebutton20"> <property name="label" translatable="yes">Color 2</property> <property name="visible">True</property> <property name="can_focus">True</property> @@ -363,7 +456,7 @@ </packing> </child> <child> - <object class="GtkToggleButton" id="_togglebutton5"> + <object class="GtkToggleButton" id="_togglebutton21"> <property name="label" translatable="yes">Color 3</property> <property name="visible">True</property> <property name="can_focus">True</property> @@ -377,7 +470,7 @@ </packing> </child> <child> - <object class="GtkToggleButton" id="_togglebutton6"> + <object class="GtkToggleButton" id="_togglebutton22"> <property name="label" translatable="yes">ZS</property> <property name="visible">True</property> <property name="can_focus">True</property> @@ -394,8 +487,8 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> </object> @@ -512,4 +605,68 @@ <property name="draw_as_radio">True</property> <property name="group">ra_ctx_fragment</property> </object> + <object class="GtkRadioAction" id="ra_ctx_texture0"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture1"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture2"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture3"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture4"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture5"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture6"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture7"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture8"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture9"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture10"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture11"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture12"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture13"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture14"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> + <object class="GtkRadioAction" id="ra_ctx_texture15"> + <property name="draw_as_radio">True</property> + <property name="group">ra_ctx_fragment</property> + </object> </interface> diff --git a/src/context.c b/src/context.c index 2ed0cf8..03eea96 100644 --- a/src/context.c +++ b/src/context.c @@ -193,10 +193,10 @@ void context_unselected(struct program *p) for (i = 0; i < CTX_VIEW_NUM; i++) g_signal_handler_disconnect(p->context.ra[i], p->context.sid[i]); - g_signal_handler_disconnect(p->tool.step, p->context.sid[12]); - g_signal_handler_disconnect(p->tool.break_before, p->context.sid[13]); - g_signal_handler_disconnect(p->tool.break_after, p->context.sid[14]); - g_signal_handler_disconnect(p->tool.flush, p->context.sid[15]); + g_signal_handler_disconnect(p->tool.step, p->context.sid[i++]); + g_signal_handler_disconnect(p->tool.break_before, p->context.sid[i++]); + g_signal_handler_disconnect(p->tool.break_after, p->context.sid[i++]); + g_signal_handler_disconnect(p->tool.flush, p->context.sid[i++]); } void context_selected(struct program *p) @@ -206,10 +206,10 @@ void context_selected(struct program *p) for (i = 0; i < CTX_VIEW_NUM; i++) p->context.sid[i] = g_signal_connect(p->context.ra[i], "toggled", G_CALLBACK(ra), p); - p->context.sid[12] = g_signal_connect(p->tool.step, "clicked", G_CALLBACK(step), p); - p->context.sid[13] = g_signal_connect(p->tool.break_before, "toggled", G_CALLBACK(break_before), p); - p->context.sid[14] = g_signal_connect(p->tool.break_after, "toggled", G_CALLBACK(break_after), p); - p->context.sid[15] = g_signal_connect(p->tool.flush, "clicked", G_CALLBACK(flush), p); + p->context.sid[i++] = g_signal_connect(p->tool.step, "clicked", G_CALLBACK(step), p); + p->context.sid[i++] = g_signal_connect(p->tool.break_before, "toggled", G_CALLBACK(break_before), p); + p->context.sid[i++] = g_signal_connect(p->tool.break_after, "toggled", G_CALLBACK(break_after), p); + p->context.sid[i++] = g_signal_connect(p->tool.flush, "clicked", G_CALLBACK(flush), p); gtk_widget_show(p->main.context_view); gtk_widget_show(p->tool.break_before); @@ -306,31 +306,52 @@ static gboolean context_action_info_info(struct rbug_event *e, ret = main_find_id(info->vertex, &iter, p); break; case CTX_VIEW_COLOR0: - if (info->cbufs_len < 1) - break; - if (info->cbufs[0] == 0) - break; - ret = main_find_id(info->cbufs[0], &iter, p); - break; case CTX_VIEW_COLOR1: - if (info->cbufs_len < 2) - break; - if (info->cbufs[1] == 0) - break; - ret = main_find_id(info->cbufs[1], &iter, p); - break; case CTX_VIEW_COLOR2: - if (info->cbufs_len < 3) - break; - if (info->cbufs[2] == 0) + case CTX_VIEW_COLOR3: + case CTX_VIEW_COLOR4: + case CTX_VIEW_COLOR5: + case CTX_VIEW_COLOR6: + case CTX_VIEW_COLOR7: + { + unsigned i = p->context.view_id - CTX_VIEW_COLOR0; + if (info->cbufs_len < i + 1) + break; + if (info->cbufs[i] == 0) + break; + ret = main_find_id(info->cbufs[i], &iter, p); break; - ret = main_find_id(info->cbufs[2], &iter, p); - break; + } case CTX_VIEW_ZS: if (info->zsbuf == 0) break; ret = main_find_id(info->zsbuf, &iter, p); break; + case CTX_VIEW_TEXTURE0: + case CTX_VIEW_TEXTURE1: + case CTX_VIEW_TEXTURE2: + case CTX_VIEW_TEXTURE3: + case CTX_VIEW_TEXTURE4: + case CTX_VIEW_TEXTURE5: + case CTX_VIEW_TEXTURE6: + case CTX_VIEW_TEXTURE7: + case CTX_VIEW_TEXTURE8: + case CTX_VIEW_TEXTURE9: + case CTX_VIEW_TEXTURE10: + case CTX_VIEW_TEXTURE11: + case CTX_VIEW_TEXTURE12: + case CTX_VIEW_TEXTURE13: + case CTX_VIEW_TEXTURE14: + case CTX_VIEW_TEXTURE15: + { + unsigned i = p->context.view_id - CTX_VIEW_TEXTURE0; + if (info->texs_len < i + 1) + break; + if (info->texs[i] == 0) + break; + ret = main_find_id(info->texs[i], &iter, p); + break; + } default: break; } @@ -439,6 +439,25 @@ void main_window_create(struct program *p) 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"); + + g_assert(27 < CTX_VIEW_NUM); + p->main.draw = draw; p->main.window = window; p->main.textview = textview; diff --git a/src/program.h b/src/program.h index c49101e..3d8b779 100644 --- a/src/program.h +++ b/src/program.h @@ -67,6 +67,22 @@ enum ctx_view_id { CTX_VIEW_COLOR5, CTX_VIEW_COLOR6, CTX_VIEW_COLOR7, + CTX_VIEW_TEXTURE0, + CTX_VIEW_TEXTURE1, + CTX_VIEW_TEXTURE2, + CTX_VIEW_TEXTURE3, + CTX_VIEW_TEXTURE4, + CTX_VIEW_TEXTURE5, + CTX_VIEW_TEXTURE6, + CTX_VIEW_TEXTURE7, + CTX_VIEW_TEXTURE8, + CTX_VIEW_TEXTURE9, + CTX_VIEW_TEXTURE10, + CTX_VIEW_TEXTURE11, + CTX_VIEW_TEXTURE12, + CTX_VIEW_TEXTURE13, + CTX_VIEW_TEXTURE14, + CTX_VIEW_TEXTURE15, CTX_VIEW_NUM, }; @@ -135,9 +151,9 @@ struct program struct { /* signal ids */ - gulong sid[16]; + gulong sid[6 + CTX_VIEW_NUM]; - GObject *ra[12]; + GObject *ra[CTX_VIEW_NUM]; enum ctx_view_id view_id; |