]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - plugins/surface_heretic2/surfaceflagsdialog_heretic2.cpp
transfer from internal tree r5311 branches/1.4-gpl
[xonotic/netradiant.git] / plugins / surface_heretic2 / surfaceflagsdialog_heretic2.cpp
1 /*\r
2 Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.\r
4 \r
5 This file is part of GtkRadiant.\r
6 \r
7 GtkRadiant is free software; you can redistribute it and/or modify\r
8 it under the terms of the GNU General Public License as published by\r
9 the Free Software Foundation; either version 2 of the License, or\r
10 (at your option) any later version.\r
11 \r
12 GtkRadiant is distributed in the hope that it will be useful,\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15 GNU General Public License for more details.\r
16 \r
17 You should have received a copy of the GNU General Public License\r
18 along with GtkRadiant; if not, write to the Free Software\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
20 */\r
21 \r
22 #include <gtk/gtk.h>\r
23 #include <gdk/gdkkeysyms.h>\r
24 \r
25 #include "surfdlg_plugin.h"\r
26 \r
27 #include "surfaceflagsdialog_heretic2.h"\r
28 \r
29   GtkWidget *surface_lightbutton;\r
30   GtkWidget *surface_slickbutton;\r
31   GtkWidget *surface_skybutton;\r
32   GtkWidget *surface_warpbutton;\r
33   GtkWidget *surface_trans33button;\r
34   GtkWidget *surface_trans66button;\r
35   GtkWidget *surface_flowingbutton;\r
36   GtkWidget *surface_nodrawbutton;\r
37   GtkWidget *surface_tallwallbutton;\r
38   GtkWidget *surface_alphatexbutton;\r
39   GtkWidget *surface_animspeedbutton;\r
40   GtkWidget *surface_undulatebutton;\r
41 \r
42   GtkWidget *surf_gravel_radiobutton;\r
43   GSList *surf_gravel_radiobutton_group = NULL;\r
44   GtkWidget *surf_metal_radiobutton;\r
45   GtkWidget *surf_stone_radiobutton;\r
46   GtkWidget *surf_wood_radiobutton;\r
47 \r
48   GtkWidget *surf_value_entry;\r
49 \r
50   GtkWidget *notebook1;\r
51 \r
52   GtkWidget *content_solidbutton;\r
53   GtkWidget *content_windowbutton;\r
54   GtkWidget *content_illusbutton;\r
55   GtkWidget *content_lavabutton;\r
56   GtkWidget *content_slimebutton;\r
57   GtkWidget *content_waterbutton;\r
58   GtkWidget *content_mistbutton;\r
59   GtkWidget *content_areaportalbutton;\r
60   GtkWidget *content_playerclipbutton;\r
61   GtkWidget *content_monsterclipbutton;\r
62   GtkWidget *content_current0button;\r
63   GtkWidget *content_current90button;\r
64   GtkWidget *content_current180button;\r
65   GtkWidget *content_current270button;\r
66   GtkWidget *content_currentUPbutton;\r
67   GtkWidget *content_currentDOWNbutton;\r
68   GtkWidget *content_originbutton;\r
69   GtkWidget *content_detailbutton;\r
70   GtkWidget *content_ladderbutton;\r
71   GtkWidget *content_camnoblockbutton;\r
72 \r
73 \r
74   gboolean setup_buttons = TRUE;\r
75 \r
76   int working_surface_flags;\r
77   int surface_mask;\r
78   int working_content_flags;\r
79   int content_mask;\r
80   int working_value;\r
81   gboolean surface_material_inconsistant = FALSE;\r
82 \r
83 inline void set_inconsistent(GtkWidget *toggle_button)\r
84 {\r
85   gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON (toggle_button), TRUE);\r
86 }\r
87 \r
88 inline void clear_inconsistent(GtkWidget *toggle_button)\r
89 {\r
90   if ( gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (toggle_button)) )\r
91   {\r
92     gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON (toggle_button), FALSE);\r
93   }\r
94 \r
95 }\r
96 \r
97 void clear_all_inconsistent(void)\r
98 {\r
99   clear_inconsistent( surface_lightbutton );\r
100   clear_inconsistent( surface_slickbutton );\r
101   clear_inconsistent( surface_skybutton );\r
102   clear_inconsistent( surface_warpbutton );\r
103   clear_inconsistent( surface_trans33button );\r
104   clear_inconsistent( surface_trans66button );\r
105   clear_inconsistent( surface_flowingbutton );\r
106   clear_inconsistent( surface_nodrawbutton );\r
107   clear_inconsistent( surface_tallwallbutton );\r
108   clear_inconsistent( surface_alphatexbutton );\r
109   clear_inconsistent( surface_animspeedbutton );\r
110   clear_inconsistent( surface_undulatebutton );\r
111 \r
112   clear_inconsistent( surf_gravel_radiobutton );\r
113   clear_inconsistent( surf_metal_radiobutton );\r
114   clear_inconsistent( surf_stone_radiobutton );\r
115   clear_inconsistent( surf_wood_radiobutton );\r
116 \r
117   clear_inconsistent( content_solidbutton );\r
118   clear_inconsistent( content_windowbutton );\r
119   clear_inconsistent( content_illusbutton );\r
120   clear_inconsistent( content_lavabutton );\r
121   clear_inconsistent( content_slimebutton );\r
122   clear_inconsistent( content_waterbutton );\r
123   clear_inconsistent( content_mistbutton );\r
124   clear_inconsistent( content_areaportalbutton );\r
125   clear_inconsistent( content_playerclipbutton );\r
126   clear_inconsistent( content_monsterclipbutton );\r
127   clear_inconsistent( content_current0button );\r
128   clear_inconsistent( content_current90button );\r
129   clear_inconsistent( content_current180button );\r
130   clear_inconsistent( content_current270button );\r
131   clear_inconsistent( content_currentUPbutton );\r
132   clear_inconsistent( content_currentDOWNbutton );\r
133   clear_inconsistent( content_originbutton );\r
134   clear_inconsistent( content_detailbutton );\r
135   clear_inconsistent( content_ladderbutton );\r
136   clear_inconsistent( content_camnoblockbutton );\r
137 }\r
138 \r
139 void clear_all_buttons_and_values()\r
140 {\r
141   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_lightbutton ), FALSE);\r
142   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_slickbutton ), FALSE);\r
143   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_skybutton ), FALSE);\r
144   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_warpbutton ), FALSE);\r
145   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_trans33button ), FALSE);\r
146   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_trans66button ), FALSE);\r
147   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_flowingbutton ), FALSE);\r
148   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_nodrawbutton ), FALSE);\r
149   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_tallwallbutton ), FALSE);\r
150   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_alphatexbutton ), FALSE);\r
151   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_animspeedbutton ), FALSE);\r
152   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( surface_undulatebutton ), FALSE);\r
153 \r
154 //  surface_material_inconsistant = TRUE;\r
155 \r
156   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_gravel_radiobutton ), FALSE);\r
157   set_inconsistent(surf_gravel_radiobutton);\r
158 \r
159   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_metal_radiobutton ), FALSE);\r
160   set_inconsistent(surf_metal_radiobutton);\r
161 \r
162   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_stone_radiobutton ), FALSE);\r
163   set_inconsistent(surf_stone_radiobutton);\r
164 \r
165   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_wood_radiobutton ), FALSE);\r
166   set_inconsistent(surf_wood_radiobutton);\r
167 \r
168   gtk_entry_set_text( (GtkEntry *)surf_value_entry, "");\r
169 \r
170   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_solidbutton ), FALSE);\r
171   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_windowbutton ), FALSE);\r
172   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_illusbutton ), FALSE);\r
173   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_lavabutton ), FALSE);\r
174   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_slimebutton ), FALSE);\r
175   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_waterbutton ), FALSE);\r
176   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_mistbutton ), FALSE);\r
177   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_areaportalbutton ), FALSE);\r
178   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_playerclipbutton ), FALSE);\r
179   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_monsterclipbutton ), FALSE);\r
180   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_current0button ), FALSE);\r
181   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_current90button ), FALSE);\r
182   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_current180button ), FALSE);\r
183   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_current270button ), FALSE);\r
184   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_currentUPbutton ), FALSE);\r
185   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_currentDOWNbutton ), FALSE);\r
186   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_originbutton ), FALSE);\r
187   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_detailbutton ), FALSE);\r
188   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_ladderbutton ), FALSE);\r
189   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( content_camnoblockbutton ), FALSE);\r
190 \r
191 }\r
192 \r
193 void SetFlagButtons_Heretic2(texdef_to_face_t *texdef_face_list, bool b_isListEmpty)\r
194 {\r
195   int i;\r
196   int contents = 0;\r
197   int flags = 0;\r
198   int value = 0;\r
199   int diff_contents = 0;\r
200   int diff_flags = 0;\r
201   gboolean diff_value = FALSE;\r
202   char tex_buff[11];\r
203   texdef_t* tmp_texdef;\r
204   texdef_to_face_t* temp_texdef_face_list;\r
205   gboolean surface_which_material_inconsistant[4];\r
206   int surface_iterator;\r
207 \r
208   setup_buttons = TRUE;\r
209   working_surface_flags = 0;\r
210   surface_mask = 0;\r
211   working_content_flags = 0;\r
212   content_mask = 0;\r
213   working_value = 0;\r
214   surface_material_inconsistant = FALSE;\r
215   surface_which_material_inconsistant[0] = FALSE;\r
216   surface_which_material_inconsistant[1] = FALSE;\r
217   surface_which_material_inconsistant[2] = FALSE;\r
218   surface_which_material_inconsistant[3] = FALSE;\r
219 \r
220   if(!b_isListEmpty)\r
221   {\r
222     tmp_texdef = &texdef_face_list->texdef;\r
223     contents = tmp_texdef->contents;\r
224     flags = tmp_texdef->flags;\r
225     value = tmp_texdef->value;\r
226 \r
227     surface_iterator = (tmp_texdef->flags & ~HERETIC2_SURF_MATERIAL_MASK) >> 24;  // Inconsistant Material?\r
228     surface_which_material_inconsistant[surface_iterator] = TRUE;\r
229 \r
230     for (temp_texdef_face_list = texdef_face_list->next; temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next)\r
231     {\r
232       tmp_texdef = &temp_texdef_face_list->texdef;\r
233       diff_contents |= contents ^ tmp_texdef->contents;  // Figure out which buttons are inconsistent\r
234       diff_flags |= flags ^ tmp_texdef->flags;\r
235       if (tmp_texdef->value != value)\r
236         diff_value = TRUE;\r
237 \r
238       surface_iterator = (tmp_texdef->flags & ~HERETIC2_SURF_MATERIAL_MASK) >> 24;  // Inconsistant Material?\r
239       surface_which_material_inconsistant[surface_iterator] = TRUE;\r
240 \r
241       Sys_Printf("Diff_Flags: %d\t Surf_Iter: %d\n",diff_flags, surface_iterator);\r
242 \r
243     }\r
244   }\r
245 \r
246 \r
247   clear_all_inconsistent();\r
248 \r
249   // If no faces/brushes are selected, clear everything and bail\r
250   if(b_isListEmpty)\r
251   {\r
252     clear_all_buttons_and_values();\r
253     setup_buttons = FALSE;\r
254     return;\r
255   }\r
256 \r
257   // Set surface buttons to reflect brush/face flags, contents, and values\r
258   if(diff_flags & HERETIC2_SURF_LIGHT)\r
259     set_inconsistent(surface_lightbutton);\r
260   else\r
261     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (surface_lightbutton), (flags & HERETIC2_SURF_LIGHT));\r
262 \r
263   if(diff_flags & HERETIC2_SURF_SLICK)\r
264     set_inconsistent(surface_slickbutton);\r
265   else if(flags & HERETIC2_SURF_SLICK)\r
266         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_slickbutton ), TRUE);\r
267   else\r
268         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_slickbutton ), FALSE);\r
269 \r
270   if(diff_flags & HERETIC2_SURF_SKY)\r
271     set_inconsistent(surface_skybutton);\r
272   else if(flags & HERETIC2_SURF_SKY)\r
273         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skybutton ), TRUE);\r
274   else\r
275         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skybutton ), FALSE);\r
276 \r
277   if(diff_flags & HERETIC2_SURF_WARP)\r
278     set_inconsistent(surface_warpbutton);\r
279   else if(flags & HERETIC2_SURF_WARP)\r
280         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_warpbutton ), TRUE);\r
281   else\r
282         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_warpbutton ), FALSE);\r
283 \r
284   if(diff_flags & HERETIC2_SURF_TRANS33)\r
285     set_inconsistent(surface_trans33button);\r
286   else if(flags & HERETIC2_SURF_TRANS33)\r
287         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans33button ), TRUE);\r
288   else\r
289         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans33button ), FALSE);\r
290 \r
291   if(diff_flags & HERETIC2_SURF_TRANS66)\r
292     set_inconsistent(surface_trans66button);\r
293   else if(flags & HERETIC2_SURF_TRANS66)\r
294         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans66button ), TRUE);\r
295   else\r
296         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans66button ), FALSE);\r
297 \r
298   if(diff_flags & HERETIC2_SURF_FLOWING)\r
299     set_inconsistent(surface_flowingbutton);\r
300   else if(flags & HERETIC2_SURF_FLOWING)\r
301         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_flowingbutton ), TRUE);\r
302   else\r
303         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_flowingbutton ), FALSE);\r
304 \r
305   if(diff_flags & HERETIC2_SURF_NODRAW)\r
306     set_inconsistent(surface_nodrawbutton);\r
307   else if(flags & HERETIC2_SURF_NODRAW)\r
308         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_nodrawbutton ), TRUE);\r
309   else\r
310         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_nodrawbutton ), FALSE);\r
311 \r
312   if(diff_flags & HERETIC2_SURF_TALL_WALL)\r
313     set_inconsistent(surface_tallwallbutton);\r
314   else if(flags & HERETIC2_SURF_TALL_WALL)\r
315         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_tallwallbutton ), TRUE);\r
316   else\r
317         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_tallwallbutton ), FALSE);\r
318 \r
319   if(diff_flags & HERETIC2_SURF_ALPHA_TEXTURE)\r
320     set_inconsistent(surface_alphatexbutton);\r
321   else if(flags & HERETIC2_SURF_ALPHA_TEXTURE)\r
322         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_alphatexbutton ), TRUE);\r
323   else\r
324         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_alphatexbutton ), FALSE);\r
325 \r
326   if(diff_flags & HERETIC2_SURF_ANIMSPEED)\r
327     set_inconsistent(surface_animspeedbutton);\r
328   else if(flags & HERETIC2_SURF_ANIMSPEED)\r
329         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_animspeedbutton ), TRUE);\r
330   else\r
331         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_animspeedbutton ), FALSE);\r
332 \r
333   if(diff_flags & HERETIC2_SURF_UNDULATE)\r
334     set_inconsistent(surface_undulatebutton);\r
335   else if(flags & HERETIC2_SURF_UNDULATE)\r
336         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_undulatebutton ), TRUE);\r
337   else\r
338         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_undulatebutton ), FALSE);\r
339 \r
340   if(diff_flags & ~HERETIC2_SURF_MATERIAL_MASK)\r
341   {\r
342     Sys_Printf("--> %d\n", (diff_flags & ~HERETIC2_SURF_MATERIAL_MASK) );\r
343     Sys_Printf("%d\t%d\t%d\t%d\n", surface_which_material_inconsistant[0], surface_which_material_inconsistant[1], surface_which_material_inconsistant[2], surface_which_material_inconsistant[3]);\r
344 \r
345     if (surface_which_material_inconsistant[0])\r
346     {\r
347       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_gravel_radiobutton ), FALSE);\r
348       surface_material_inconsistant = TRUE;\r
349       set_inconsistent(surf_gravel_radiobutton);\r
350     }\r
351     if (surface_which_material_inconsistant[1])\r
352     {\r
353       //if (!surface_material_inconsistant)\r
354       //{\r
355         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_metal_radiobutton ), FALSE);\r
356         surface_material_inconsistant = TRUE;\r
357       //}\r
358       set_inconsistent(surf_metal_radiobutton);\r
359     }\r
360     if (surface_which_material_inconsistant[2])\r
361     {\r
362       //if (!surface_material_inconsistant)\r
363       //{\r
364         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_stone_radiobutton ), FALSE);\r
365         surface_material_inconsistant = TRUE;\r
366       //}\r
367       set_inconsistent(surf_stone_radiobutton);\r
368     }\r
369     if (surface_which_material_inconsistant[3])\r
370     {\r
371       //if (!surface_material_inconsistant)\r
372       //{\r
373         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_wood_radiobutton ), FALSE);\r
374         surface_material_inconsistant = TRUE;\r
375       //}\r
376       set_inconsistent(surf_wood_radiobutton);\r
377     }\r
378   }\r
379   else\r
380   {\r
381     if(flags & ~HERETIC2_SURF_MATERIAL_MASK)\r
382     {\r
383       surface_iterator = (flags & ~HERETIC2_SURF_MATERIAL_MASK) >> 24;\r
384       if( surface_iterator == 1)\r
385         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_metal_radiobutton ), TRUE);\r
386       else if(surface_iterator == 2)\r
387         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_stone_radiobutton ), TRUE);\r
388       else if(surface_iterator == 3)\r
389         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_wood_radiobutton ), TRUE);\r
390     }\r
391     else\r
392     {\r
393       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surf_gravel_radiobutton ), TRUE);\r
394     }\r
395   }\r
396 \r
397   // Set content buttons to reflect brush values\r
398   if(diff_contents & HERETIC2_CONTENTS_SOLID)\r
399     set_inconsistent(content_solidbutton);\r
400   else if(contents & HERETIC2_CONTENTS_SOLID)\r
401         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_solidbutton ), TRUE);\r
402   else\r
403         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_solidbutton ), FALSE);\r
404 \r
405   if(diff_contents & HERETIC2_CONTENTS_WINDOW)\r
406     set_inconsistent(content_windowbutton);\r
407   else if(contents & HERETIC2_CONTENTS_WINDOW)\r
408         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_windowbutton ), TRUE);\r
409   else\r
410         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_windowbutton ), FALSE);\r
411 \r
412   if(diff_contents & HERETIC2_CONTENTS_ILLUSIONARY)\r
413     set_inconsistent(content_illusbutton);\r
414   else if(contents & HERETIC2_CONTENTS_ILLUSIONARY)\r
415         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_illusbutton ), TRUE);\r
416   else\r
417         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_illusbutton ), FALSE);\r
418 \r
419   if(diff_contents & HERETIC2_CONTENTS_LAVA)\r
420     set_inconsistent(content_lavabutton);\r
421   else if(contents & HERETIC2_CONTENTS_LAVA)\r
422         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_lavabutton ), TRUE);\r
423   else\r
424         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_lavabutton ), FALSE);\r
425 \r
426   if(diff_contents & HERETIC2_CONTENTS_SLIME)\r
427     set_inconsistent(content_slimebutton);\r
428   else if(contents & HERETIC2_CONTENTS_SLIME)\r
429         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_slimebutton ), TRUE);\r
430   else\r
431         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_slimebutton ), FALSE);\r
432 \r
433   if(diff_contents & HERETIC2_CONTENTS_WATER)\r
434     set_inconsistent(content_waterbutton);\r
435   else if(contents & HERETIC2_CONTENTS_WATER)\r
436         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_waterbutton ), TRUE);\r
437   else\r
438         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_waterbutton ), FALSE);\r
439 \r
440   if(diff_contents & HERETIC2_CONTENTS_MIST)\r
441     set_inconsistent(content_mistbutton);\r
442   else if(contents & HERETIC2_CONTENTS_MIST)\r
443         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_mistbutton ), TRUE);\r
444   else\r
445         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_mistbutton ), FALSE);\r
446 \r
447   if(diff_contents & HERETIC2_CONTENTS_AREAPORTAL)\r
448     set_inconsistent(content_areaportalbutton);\r
449   else if(contents & HERETIC2_CONTENTS_AREAPORTAL)\r
450         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_areaportalbutton ), TRUE);\r
451   else\r
452         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_areaportalbutton ), FALSE);\r
453 \r
454   if(diff_contents & HERETIC2_CONTENTS_PLAYERCLIP)\r
455     set_inconsistent(content_playerclipbutton);\r
456   else if(contents & HERETIC2_CONTENTS_PLAYERCLIP)\r
457         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_playerclipbutton ), TRUE);\r
458   else\r
459         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_playerclipbutton ), FALSE);\r
460 \r
461   if(diff_contents & HERETIC2_CONTENTS_MONSTERCLIP)\r
462     set_inconsistent(content_monsterclipbutton);\r
463   else if(contents & HERETIC2_CONTENTS_MONSTERCLIP)\r
464         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_monsterclipbutton ), TRUE);\r
465   else\r
466         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_monsterclipbutton ), FALSE);\r
467 \r
468   if(diff_contents & HERETIC2_CONTENTS_CURRENT_0)\r
469     set_inconsistent(content_current0button);\r
470   else if(contents & HERETIC2_CONTENTS_CURRENT_0)\r
471         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current0button ), TRUE);\r
472   else\r
473         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current0button ), FALSE);\r
474 \r
475   if(diff_contents & HERETIC2_CONTENTS_CURRENT_90)\r
476     set_inconsistent(content_current90button);\r
477   else if(contents & HERETIC2_CONTENTS_CURRENT_90)\r
478         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current90button ), TRUE);\r
479   else\r
480         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current90button ), FALSE);\r
481 \r
482   if(diff_contents & HERETIC2_CONTENTS_CURRENT_180)\r
483     set_inconsistent(content_current180button);\r
484   else if(contents & HERETIC2_CONTENTS_CURRENT_180)\r
485         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current180button ), TRUE);\r
486   else\r
487         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current180button ), FALSE);\r
488 \r
489   if(diff_contents & HERETIC2_CONTENTS_CURRENT_270)\r
490     set_inconsistent(content_current270button);\r
491   else if(contents & HERETIC2_CONTENTS_CURRENT_270)\r
492         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current270button ), TRUE);\r
493   else\r
494         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current270button ), FALSE);\r
495 \r
496   if(diff_contents & HERETIC2_CONTENTS_CURRENT_UP)\r
497     set_inconsistent(content_currentUPbutton);\r
498   else if(contents & HERETIC2_CONTENTS_CURRENT_UP)\r
499         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentUPbutton ), TRUE);\r
500   else\r
501         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentUPbutton ), FALSE);\r
502 \r
503   if(diff_contents & HERETIC2_CONTENTS_CURRENT_DOWN)\r
504     set_inconsistent(content_currentDOWNbutton);\r
505   else if(contents & HERETIC2_CONTENTS_CURRENT_DOWN)\r
506         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentDOWNbutton ), TRUE);\r
507   else\r
508         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentDOWNbutton ), FALSE);\r
509 \r
510   if(diff_contents & HERETIC2_CONTENTS_ORIGIN)\r
511     set_inconsistent(content_originbutton);\r
512   else if(contents & HERETIC2_CONTENTS_ORIGIN)\r
513         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_originbutton ), TRUE);\r
514   else\r
515         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_originbutton ), FALSE);\r
516 \r
517   if(diff_contents & HERETIC2_CONTENTS_DETAIL)\r
518     set_inconsistent(content_detailbutton);\r
519   else if(contents & HERETIC2_CONTENTS_DETAIL)\r
520         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_detailbutton ), TRUE);\r
521   else\r
522         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_detailbutton ), FALSE);\r
523 \r
524   if(diff_contents & HERETIC2_CONTENTS_LADDER)\r
525     set_inconsistent(content_ladderbutton);\r
526   else if(contents & HERETIC2_CONTENTS_LADDER)\r
527         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_ladderbutton ), TRUE);\r
528   else\r
529         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_ladderbutton ), FALSE);\r
530 \r
531   if(diff_contents & HERETIC2_CONTENTS_CAMERANOBLOCK)\r
532     set_inconsistent(content_camnoblockbutton);\r
533   else if(contents & HERETIC2_CONTENTS_CAMERANOBLOCK)\r
534         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_camnoblockbutton ), TRUE);\r
535   else\r
536         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_camnoblockbutton ), FALSE);\r
537 \r
538   // Set Value\r
539   if(diff_value)\r
540     gtk_entry_set_text( (GtkEntry *)surf_value_entry, "");\r
541   else\r
542   {\r
543     working_value = value;\r
544     sprintf( tex_buff, "%d", value);\r
545     gtk_entry_set_text( (GtkEntry *)surf_value_entry, tex_buff);\r
546   }\r
547 \r
548   setup_buttons = FALSE;\r
549 }\r
550 \r
551 void SetChangeInFlags_Face_Heretic2 (texdef_to_face_t *texdef_face_list)\r
552 {\r
553   texdef_to_face_t *temp_texdef_face_list;\r
554   texdef_t *tmp_texdef;\r
555 \r
556   for (temp_texdef_face_list = texdef_face_list; temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next)\r
557   {\r
558     tmp_texdef = &temp_texdef_face_list->texdef;\r
559     tmp_texdef->flags = (tmp_texdef->flags & ~surface_mask) | working_surface_flags;\r
560     tmp_texdef->contents = (tmp_texdef->contents & ~content_mask) | working_content_flags;\r
561     tmp_texdef->value = working_value;\r
562     Sys_Printf("content_flag: %d     content_mask: %d\n",working_content_flags,content_mask);\r
563     Sys_Printf("content: %d\n",tmp_texdef->contents);\r
564   }\r
565 }\r
566 \r
567 inline void change_surfaceflag (GtkWidget *togglebutton, int sur_flag) // For Material\r
568 {\r
569   if (!setup_buttons) // If we're setting up the buttons, we really don't need to\r
570   {                   // set flags that are already set\r
571     if (surface_material_inconsistant)\r
572     {\r
573       clear_inconsistent( surf_gravel_radiobutton );\r
574       clear_inconsistent( surf_metal_radiobutton );\r
575       clear_inconsistent( surf_stone_radiobutton );\r
576       clear_inconsistent( surf_wood_radiobutton );\r
577     }\r
578     surface_mask |= ~HERETIC2_SURF_MATERIAL_MASK;\r
579     working_surface_flags = (working_surface_flags & HERETIC2_SURF_MATERIAL_MASK) | sur_flag;\r
580   }\r
581 }\r
582 \r
583 inline void change_material (GtkWidget *togglebutton)\r
584 {\r
585   if (!setup_buttons) // If we're setting up the buttons, we really don't need to\r
586   {                   // set flags that are already set\r
587     if (surface_material_inconsistant)\r
588     {\r
589       clear_inconsistent( surf_gravel_radiobutton );\r
590       clear_inconsistent( surf_metal_radiobutton );\r
591       clear_inconsistent( surf_stone_radiobutton );\r
592       clear_inconsistent( surf_wood_radiobutton );\r
593     }\r
594     if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_gravel_radiobutton))  )\r
595     {\r
596       surface_mask |= ~HERETIC2_SURF_MATERIAL_MASK;\r
597       working_surface_flags = (working_surface_flags & HERETIC2_SURF_MATERIAL_MASK) | HERETIC2_SURF_TYPE_GRAVEL;\r
598     }\r
599     else if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_metal_radiobutton)) )\r
600     {\r
601       surface_mask |= ~HERETIC2_SURF_MATERIAL_MASK;\r
602       working_surface_flags = (working_surface_flags & HERETIC2_SURF_MATERIAL_MASK) | HERETIC2_SURF_TYPE_METAL;\r
603     }\r
604     else if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_stone_radiobutton)) )\r
605     {\r
606       surface_mask |= ~HERETIC2_SURF_MATERIAL_MASK;\r
607       working_surface_flags = (working_surface_flags & HERETIC2_SURF_MATERIAL_MASK) | HERETIC2_SURF_TYPE_STONE;\r
608     }\r
609     else if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_wood_radiobutton)) )\r
610     {\r
611       surface_mask |= ~HERETIC2_SURF_MATERIAL_MASK;\r
612       working_surface_flags = (working_surface_flags & HERETIC2_SURF_MATERIAL_MASK) | HERETIC2_SURF_TYPE_WOOD;\r
613     }\r
614   }\r
615 }\r
616 \r
617 inline void change_surfaceflag (GtkWidget *togglebutton, int sur_flag, gboolean change_flag_to)\r
618 {\r
619 \r
620   if (!setup_buttons) // If we're setting up the buttons, we really don't need to\r
621   {                   // set flags that are already set\r
622     if (gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (togglebutton))) // Clear out inconsistent, if set\r
623             clear_inconsistent(GTK_WIDGET (togglebutton));\r
624 \r
625     surface_mask |= sur_flag;\r
626 \r
627     if (change_flag_to)\r
628       working_surface_flags |= sur_flag;\r
629     else\r
630       working_surface_flags &= ~sur_flag;\r
631   }\r
632 }\r
633 \r
634 inline void change_contentflag (GtkWidget *togglebutton, int content_flag, gboolean change_flag_to)\r
635 {\r
636 \r
637   if ( (!setup_buttons) )  // If we're setting up the buttons, we really don't need to\r
638   {                        // set flags that are already set\r
639 \r
640     if (gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (togglebutton)))\r
641             clear_inconsistent(togglebutton);\r
642     //if (g_ptrSelectedFaces.GetSize() == 0)  // Only changing content flags on whole brushes, not faces.\r
643     //{\r
644       content_mask |= content_flag;\r
645 \r
646     if (change_flag_to)\r
647       working_content_flags |= content_flag;\r
648     else\r
649       working_content_flags &= ~content_flag;\r
650     //}\r
651   }\r
652 }\r
653 \r
654 // Surface Flags Callbacks\r
655 void\r
656 on_surface_lightbutton_toggled         (GtkToggleButton *togglebutton,\r
657                                         gpointer         user_data)\r
658 {\r
659   change_surfaceflag(surface_lightbutton, HERETIC2_SURF_LIGHT, (GTK_TOGGLE_BUTTON (surface_lightbutton)->active));\r
660 }\r
661 \r
662 \r
663 void\r
664 on_surface_slickbutton_toggled         (GtkToggleButton *togglebutton,\r
665                                         gpointer         user_data)\r
666 {\r
667   change_surfaceflag(surface_slickbutton, HERETIC2_SURF_SLICK, (GTK_TOGGLE_BUTTON (surface_slickbutton)->active));\r
668 }\r
669 \r
670 \r
671 void\r
672 on_surface_skybutton_toggled           (GtkToggleButton *togglebutton,\r
673                                         gpointer         user_data)\r
674 {\r
675   change_surfaceflag(surface_skybutton, HERETIC2_SURF_SKY, (GTK_TOGGLE_BUTTON (surface_skybutton)->active));\r
676 }\r
677 \r
678 \r
679 void\r
680 on_surface_warpbutton_toggled          (GtkToggleButton *togglebutton,\r
681                                         gpointer         user_data)\r
682 {\r
683   change_surfaceflag(surface_warpbutton, HERETIC2_SURF_WARP, (GTK_TOGGLE_BUTTON (surface_warpbutton)->active));\r
684 }\r
685 \r
686 \r
687 void\r
688 on_surface_trans33button_toggled       (GtkToggleButton *togglebutton,\r
689                                         gpointer         user_data)\r
690 {\r
691   change_surfaceflag(surface_trans33button, HERETIC2_SURF_TRANS33, (GTK_TOGGLE_BUTTON (surface_trans33button)->active));\r
692 }\r
693 \r
694 \r
695 void\r
696 on_surface_trans66button_toggled       (GtkToggleButton *togglebutton,\r
697                                         gpointer         user_data)\r
698 {\r
699   change_surfaceflag(surface_trans66button, HERETIC2_SURF_TRANS66, (GTK_TOGGLE_BUTTON (surface_trans66button)->active));\r
700 }\r
701 \r
702 \r
703 void\r
704 on_surface_flowingbutton_toggled       (GtkToggleButton *togglebutton,\r
705                                         gpointer         user_data)\r
706 {\r
707   change_surfaceflag(surface_flowingbutton, HERETIC2_SURF_FLOWING, (GTK_TOGGLE_BUTTON (surface_flowingbutton)->active));\r
708 }\r
709 \r
710 \r
711 void\r
712 on_surface_nodrawbutton_toggled        (GtkToggleButton *togglebutton,\r
713                                         gpointer         user_data)\r
714 {\r
715   change_surfaceflag(surface_nodrawbutton, HERETIC2_SURF_NODRAW, (GTK_TOGGLE_BUTTON (surface_nodrawbutton)->active));\r
716 }\r
717 \r
718 \r
719 void\r
720 on_surface_tallwallbutton_toggled      (GtkToggleButton *togglebutton,\r
721                                         gpointer         user_data)\r
722 {\r
723   change_surfaceflag(surface_tallwallbutton, HERETIC2_SURF_TALL_WALL, (GTK_TOGGLE_BUTTON (surface_tallwallbutton)->active));\r
724 }\r
725 \r
726 \r
727 void\r
728 on_surface_alphatexbutton_toggled      (GtkToggleButton *togglebutton,\r
729                                         gpointer         user_data)\r
730 {\r
731   change_surfaceflag(surface_alphatexbutton, HERETIC2_SURF_ALPHA_TEXTURE, (GTK_TOGGLE_BUTTON (surface_alphatexbutton)->active));\r
732 }\r
733 \r
734 \r
735 void\r
736 on_surface_animspeedbutton_toggled     (GtkToggleButton *togglebutton,\r
737                                         gpointer         user_data)\r
738 {\r
739   change_surfaceflag(surface_animspeedbutton, HERETIC2_SURF_ANIMSPEED, (GTK_TOGGLE_BUTTON (surface_animspeedbutton)->active));\r
740 }\r
741 \r
742 \r
743 void\r
744 on_surface_undulatebutton_toggled      (GtkToggleButton *togglebutton,\r
745                                         gpointer         user_data)\r
746 {\r
747   change_surfaceflag(surface_undulatebutton, HERETIC2_SURF_UNDULATE, (GTK_TOGGLE_BUTTON (surface_undulatebutton)->active));\r
748 }\r
749 \r
750 \r
751 void\r
752 on_surf_gravel_radiobutton_toggled     (GtkToggleButton *togglebutton,\r
753                                         gpointer         user_data)\r
754 {\r
755   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_gravel_radiobutton)))\r
756     change_material(GTK_WIDGET(togglebutton));\r
757 }\r
758 \r
759 void\r
760 on_surf_metal_radiobutton_toggled     (GtkToggleButton *togglebutton,\r
761                                         gpointer         user_data)\r
762 {\r
763   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_metal_radiobutton)))\r
764     change_material(GTK_WIDGET(togglebutton));\r
765 }\r
766 \r
767 void\r
768 on_surf_stone_radiobutton_toggled     (GtkToggleButton *togglebutton,\r
769                                         gpointer         user_data)\r
770 {\r
771   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_stone_radiobutton)))\r
772     change_material(GTK_WIDGET(togglebutton));\r
773 }\r
774 \r
775 void\r
776 on_surf_wood_radiobutton_toggled     (GtkToggleButton *togglebutton,\r
777                                         gpointer         user_data)\r
778 {\r
779   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(surf_wood_radiobutton)))\r
780     change_material(GTK_WIDGET(togglebutton));\r
781 }\r
782 \r
783 // Content Flags Callbacks\r
784 void\r
785 on_content_solidbutton_toggled         (GtkToggleButton *togglebutton,\r
786                                         gpointer         user_data)\r
787 {\r
788   change_contentflag(content_solidbutton, HERETIC2_CONTENTS_SOLID, (GTK_TOGGLE_BUTTON (content_solidbutton)->active));\r
789 }\r
790 \r
791 \r
792 void\r
793 on_content_windowbutton_toggled        (GtkToggleButton *togglebutton,\r
794                                         gpointer         user_data)\r
795 {\r
796   change_contentflag(content_windowbutton, HERETIC2_CONTENTS_WINDOW, (GTK_TOGGLE_BUTTON (content_windowbutton)->active));\r
797 }\r
798 \r
799 \r
800 void\r
801 on_content_illusbutton_toggled         (GtkToggleButton *togglebutton,\r
802                                         gpointer         user_data)\r
803 {\r
804   change_contentflag(content_illusbutton, HERETIC2_CONTENTS_ILLUSIONARY, (GTK_TOGGLE_BUTTON (content_illusbutton)->active));\r
805 }\r
806 \r
807 \r
808 void\r
809 on_content_lavabutton_toggled          (GtkToggleButton *togglebutton,\r
810                                         gpointer         user_data)\r
811 {\r
812   change_contentflag(content_lavabutton, HERETIC2_CONTENTS_LAVA, (GTK_TOGGLE_BUTTON (content_lavabutton)->active));\r
813 }\r
814 \r
815 \r
816 void\r
817 on_content_slimebutton_toggled         (GtkToggleButton *togglebutton,\r
818                                         gpointer         user_data)\r
819 {\r
820   change_contentflag(content_slimebutton, HERETIC2_CONTENTS_SLIME, (GTK_TOGGLE_BUTTON (content_slimebutton)->active));\r
821 }\r
822 \r
823 \r
824 void\r
825 on_content_waterbutton_toggled         (GtkToggleButton *togglebutton,\r
826                                         gpointer         user_data)\r
827 {\r
828   change_contentflag(content_waterbutton, HERETIC2_CONTENTS_WATER, (GTK_TOGGLE_BUTTON (content_waterbutton)->active));\r
829 }\r
830 \r
831 \r
832 void\r
833 on_content_mistbutton_toggled          (GtkToggleButton *togglebutton,\r
834                                         gpointer         user_data)\r
835 {\r
836   change_contentflag(content_mistbutton, HERETIC2_CONTENTS_MIST, (GTK_TOGGLE_BUTTON (content_mistbutton)->active));\r
837 }\r
838 \r
839 \r
840 void\r
841 on_content_areaportalbutton_toggled    (GtkToggleButton *togglebutton,\r
842                                         gpointer         user_data)\r
843 {\r
844   change_contentflag(content_areaportalbutton, HERETIC2_CONTENTS_AREAPORTAL, (GTK_TOGGLE_BUTTON (content_areaportalbutton)->active));\r
845 }\r
846 \r
847 \r
848 void\r
849 on_content_playerclipbutton_toggled    (GtkToggleButton *togglebutton,\r
850                                         gpointer         user_data)\r
851 {\r
852   change_contentflag(content_playerclipbutton, HERETIC2_CONTENTS_PLAYERCLIP, (GTK_TOGGLE_BUTTON (content_playerclipbutton)->active));\r
853 }\r
854 \r
855 \r
856 void\r
857 on_content_monsterclipbutton_toggled   (GtkToggleButton *togglebutton,\r
858                                         gpointer         user_data)\r
859 {\r
860   change_contentflag(content_monsterclipbutton, HERETIC2_CONTENTS_MONSTERCLIP, (GTK_TOGGLE_BUTTON (content_monsterclipbutton)->active));\r
861 }\r
862 \r
863 \r
864 void\r
865 on_content_current0button_toggled      (GtkToggleButton *togglebutton,\r
866                                         gpointer         user_data)\r
867 {\r
868   change_contentflag(content_current0button, HERETIC2_CONTENTS_CURRENT_0, (GTK_TOGGLE_BUTTON (content_current0button)->active));\r
869 }\r
870 \r
871 \r
872 void\r
873 on_content_current90button_toggled     (GtkToggleButton *togglebutton,\r
874                                         gpointer         user_data)\r
875 {\r
876   change_contentflag(content_current90button, HERETIC2_CONTENTS_CURRENT_90, (GTK_TOGGLE_BUTTON (content_current90button)->active));\r
877 }\r
878 \r
879 \r
880 void\r
881 on_content_current180button_toggled    (GtkToggleButton *togglebutton,\r
882                                         gpointer         user_data)\r
883 {\r
884   change_contentflag(content_current180button, HERETIC2_CONTENTS_CURRENT_180, (GTK_TOGGLE_BUTTON (content_current180button)->active));\r
885 }\r
886 \r
887 \r
888 void\r
889 on_content_current270button_toggled    (GtkToggleButton *togglebutton,\r
890                                         gpointer         user_data)\r
891 {\r
892   change_contentflag(content_current270button, HERETIC2_CONTENTS_CURRENT_270, (GTK_TOGGLE_BUTTON (content_current270button)->active));\r
893 }\r
894 \r
895 \r
896 void\r
897 on_content_currentUPbutton_toggled     (GtkToggleButton *togglebutton,\r
898                                         gpointer         user_data)\r
899 {\r
900   change_contentflag(content_currentUPbutton, HERETIC2_CONTENTS_CURRENT_UP, (GTK_TOGGLE_BUTTON (content_currentUPbutton)->active));\r
901 }\r
902 \r
903 \r
904 void\r
905 on_content_currentDOWNbutton_toggled   (GtkToggleButton *togglebutton,\r
906                                         gpointer         user_data)\r
907 {\r
908   change_contentflag(content_currentDOWNbutton, HERETIC2_CONTENTS_CURRENT_DOWN, (GTK_TOGGLE_BUTTON (content_currentDOWNbutton)->active));\r
909 }\r
910 \r
911 \r
912 void\r
913 on_content_originbutton_toggled        (GtkToggleButton *togglebutton,\r
914                                         gpointer         user_data)\r
915 {\r
916   change_contentflag(content_originbutton, HERETIC2_CONTENTS_ORIGIN, (GTK_TOGGLE_BUTTON (content_originbutton)->active));\r
917 }\r
918 \r
919 \r
920 void\r
921 on_content_detailbutton_toggled        (GtkToggleButton *togglebutton,\r
922                                         gpointer         user_data)\r
923 {\r
924   change_contentflag(content_detailbutton, HERETIC2_CONTENTS_DETAIL, (GTK_TOGGLE_BUTTON (content_detailbutton)->active));\r
925 }\r
926 \r
927 \r
928 void\r
929 on_content_ladderbutton_toggled        (GtkToggleButton *togglebutton,\r
930                                         gpointer         user_data)\r
931 {\r
932   change_contentflag(content_ladderbutton, HERETIC2_CONTENTS_LADDER, (GTK_TOGGLE_BUTTON (content_ladderbutton)->active));\r
933 }\r
934 \r
935 \r
936 void\r
937 on_content_camnoblockbutton_toggled    (GtkToggleButton *togglebutton,\r
938                                         gpointer         user_data)\r
939 {\r
940   change_contentflag(content_camnoblockbutton, HERETIC2_CONTENTS_CAMERANOBLOCK, (GTK_TOGGLE_BUTTON (content_camnoblockbutton)->active));\r
941 }\r
942 \r
943 // Value Entry Callback\r
944 void\r
945 on_surf_value_entry_changed             (GtkEditable     *editable,\r
946                                         gpointer         user_data)\r
947 {\r
948   if ( (!setup_buttons) )  // If we're setting up the buttons, don't change value\r
949     working_value = atoi( gtk_entry_get_text( (GtkEntry*)editable) );\r
950 }\r
951 \r
952 void\r
953 on_surf_value_entry_insert_text         (GtkEditable     *editable,\r
954                                         gchar           *new_text,\r
955                                         gint             new_text_length,\r
956                                         gint            *position,\r
957                                         gpointer         user_data)\r
958 {\r
959   int i, count=0;\r
960   gchar *result;\r
961   int entry_value;\r
962   texdef_t *pt;\r
963   brush_t *b;\r
964   face_t *f;\r
965 \r
966   // Limit input to digits, throwing out anything else\r
967   // Modified from Gtk FAQ for text filtering of GtkEntry\r
968   result = g_new (gchar, new_text_length);\r
969 \r
970   for (i=0; i < new_text_length; i++) {\r
971     if (!isdigit(new_text[i]))\r
972       continue;\r
973   result[count++] = new_text[i];\r
974   }\r
975 \r
976   if (count > 0) {\r
977     gtk_signal_handler_block_by_func (GTK_OBJECT (editable),\r
978                                       GTK_SIGNAL_FUNC (on_surf_value_entry_insert_text),\r
979                                       user_data);\r
980     gtk_editable_insert_text (editable, result, count, position);\r
981     gtk_signal_handler_unblock_by_func (GTK_OBJECT (editable),\r
982                                         GTK_SIGNAL_FUNC (on_surf_value_entry_insert_text),\r
983                                         user_data);\r
984   }\r
985   gtk_signal_emit_stop_by_name (GTK_OBJECT (editable), "insert_text");\r
986   \r
987   g_free (result);\r
988 }\r
989 \r
990 #define HERETIC2_FLAG_BUTTON_BORDER 3\r
991 \r
992 GtkWidget* Create_Heretic2FlagsDialog (GtkWidget* surfacedialog_widget)\r
993 {\r
994   GtkWidget *frame1;\r
995   GtkWidget *notebook1;\r
996   GtkWidget *vbox3;\r
997   GtkWidget *table1;\r
998   GtkWidget *frame2;\r
999   GtkWidget *hbox4;\r
1000   GtkWidget *label4;\r
1001   GtkWidget *vbox4;\r
1002   GtkWidget *table3;\r
1003   GtkWidget *label5;\r
1004 \r
1005   GtkWidget *hbox1;\r
1006   GtkWidget *hbox2;\r
1007   GtkWidget *label2;\r
1008   GtkWidget *table2;\r
1009   GtkWidget *label3;\r
1010 \r
1011 \r
1012   frame1 = gtk_frame_new ("Brush/Face Flags");\r
1013   gtk_widget_show (frame1);\r
1014   gtk_container_add (GTK_CONTAINER (surfacedialog_widget), frame1);\r
1015 \r
1016   notebook1 = gtk_notebook_new ();\r
1017   gtk_widget_show (notebook1);\r
1018   gtk_container_add (GTK_CONTAINER (frame1), notebook1);\r
1019 \r
1020   vbox3 = gtk_vbox_new (FALSE, 0);\r
1021   gtk_widget_show (vbox3);\r
1022   gtk_container_add (GTK_CONTAINER (notebook1), vbox3);\r
1023 \r
1024   table1 = gtk_table_new (3, 4, TRUE);\r
1025   gtk_widget_show (table1);\r
1026   gtk_box_pack_start (GTK_BOX (vbox3), table1, TRUE, TRUE, 0);\r
1027 \r
1028   surface_lightbutton = gtk_toggle_button_new_with_mnemonic ("Light");\r
1029   gtk_widget_show (surface_lightbutton);\r
1030   gtk_table_attach (GTK_TABLE (table1), surface_lightbutton, 0, 1, 0, 1,\r
1031                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1032                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1033 \r
1034   surface_slickbutton = gtk_toggle_button_new_with_mnemonic ("Slick");\r
1035   gtk_widget_show (surface_slickbutton);\r
1036   gtk_table_attach (GTK_TABLE (table1), surface_slickbutton, 1, 2, 0, 1,\r
1037                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1038                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1039 \r
1040   surface_skybutton = gtk_toggle_button_new_with_mnemonic ("Sky");\r
1041   gtk_widget_show (surface_skybutton);\r
1042   gtk_table_attach (GTK_TABLE (table1), surface_skybutton, 2, 3, 0, 1,\r
1043                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1044                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1045 \r
1046   surface_warpbutton = gtk_toggle_button_new_with_mnemonic ("Warp");\r
1047   gtk_widget_show (surface_warpbutton);\r
1048   gtk_table_attach (GTK_TABLE (table1), surface_warpbutton, 3, 4, 0, 1,\r
1049                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1050                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1051 \r
1052   surface_trans33button = gtk_toggle_button_new_with_mnemonic ("Trans33");\r
1053   gtk_widget_show (surface_trans33button);\r
1054   gtk_table_attach (GTK_TABLE (table1), surface_trans33button, 0, 1, 1, 2,\r
1055                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1056                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1057 \r
1058   surface_trans66button = gtk_toggle_button_new_with_mnemonic ("Trans66");\r
1059   gtk_widget_show (surface_trans66button);\r
1060   gtk_table_attach (GTK_TABLE (table1), surface_trans66button, 1, 2, 1, 2,\r
1061                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1062                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1063 \r
1064   surface_flowingbutton = gtk_toggle_button_new_with_mnemonic ("Flowing");\r
1065   gtk_widget_show (surface_flowingbutton);\r
1066   gtk_table_attach (GTK_TABLE (table1), surface_flowingbutton, 2, 3, 1, 2,\r
1067                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1068                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1069 \r
1070   surface_nodrawbutton = gtk_toggle_button_new_with_mnemonic ("NoDraw");\r
1071   gtk_widget_show (surface_nodrawbutton);\r
1072   gtk_table_attach (GTK_TABLE (table1), surface_nodrawbutton, 3, 4, 1, 2,\r
1073                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1074                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1075 \r
1076   surface_tallwallbutton = gtk_toggle_button_new_with_mnemonic ("TallWall");\r
1077   gtk_widget_show (surface_tallwallbutton);\r
1078   gtk_table_attach (GTK_TABLE (table1), surface_tallwallbutton, 0, 1, 2, 3,\r
1079                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1080                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1081 \r
1082   surface_alphatexbutton = gtk_toggle_button_new_with_mnemonic ("AlphaTex");\r
1083   gtk_widget_show (surface_alphatexbutton);\r
1084   gtk_table_attach (GTK_TABLE (table1), surface_alphatexbutton, 1, 2, 2, 3,\r
1085                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1086                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1087 \r
1088   surface_animspeedbutton = gtk_toggle_button_new_with_mnemonic ("AnimSpeed");\r
1089   gtk_widget_show (surface_animspeedbutton);\r
1090   gtk_table_attach (GTK_TABLE (table1), surface_animspeedbutton, 2, 3, 2, 3,\r
1091                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1092                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1093 \r
1094   surface_undulatebutton = gtk_toggle_button_new_with_mnemonic ("Undulate");\r
1095   gtk_widget_show (surface_undulatebutton);\r
1096   gtk_table_attach (GTK_TABLE (table1), surface_undulatebutton, 3, 4, 2, 3,\r
1097                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1098                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1099 \r
1100   frame2 = gtk_frame_new (NULL);\r
1101   gtk_widget_show (frame2);\r
1102   gtk_box_pack_start (GTK_BOX (vbox3), frame2, FALSE, FALSE, 0);\r
1103   gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_ETCHED_OUT);\r
1104   gtk_container_set_border_width (GTK_CONTAINER (frame2), 4);\r
1105 \r
1106   hbox4 = gtk_hbox_new (FALSE, 0);\r
1107   gtk_widget_show (hbox4);\r
1108   gtk_container_add (GTK_CONTAINER (frame2), hbox4);\r
1109 \r
1110   surf_gravel_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, "Gravel");\r
1111   gtk_widget_show (surf_gravel_radiobutton);\r
1112   gtk_box_pack_start (GTK_BOX (hbox4), surf_gravel_radiobutton, TRUE, FALSE, 0);\r
1113 \r
1114   surf_metal_radiobutton = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(surf_gravel_radiobutton), "Metal");\r
1115   gtk_widget_show (surf_metal_radiobutton);\r
1116   gtk_box_pack_start (GTK_BOX (hbox4), surf_metal_radiobutton, TRUE, FALSE, 0);\r
1117 \r
1118   surf_stone_radiobutton = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(surf_metal_radiobutton), "Stone");\r
1119   gtk_widget_show (surf_stone_radiobutton);\r
1120   gtk_box_pack_start (GTK_BOX (hbox4), surf_stone_radiobutton, TRUE, FALSE, 0);\r
1121 \r
1122   surf_wood_radiobutton = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(surf_stone_radiobutton), "Wood");\r
1123   gtk_widget_show (surf_wood_radiobutton);\r
1124   gtk_box_pack_start (GTK_BOX (hbox4), surf_wood_radiobutton, TRUE, FALSE, 0);\r
1125 \r
1126   label4 = gtk_label_new ("Material");\r
1127   gtk_widget_show (label4);\r
1128   gtk_frame_set_label_widget (GTK_FRAME (frame2), label4);\r
1129   gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_LEFT);\r
1130 \r
1131   table3 = gtk_table_new (1, 4, FALSE);\r
1132   gtk_widget_show (table3);\r
1133   gtk_box_pack_start (GTK_BOX (vbox3), table3, FALSE, FALSE, 0);\r
1134   gtk_container_set_border_width (GTK_CONTAINER (table3), 3);\r
1135 \r
1136   hbox1 = gtk_hbox_new (FALSE, 0);\r
1137   gtk_widget_show (hbox1);\r
1138   gtk_table_attach (GTK_TABLE (table3), hbox1, 0, 1, 0, 1,\r
1139                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1140                     (GtkAttachOptions) (GTK_FILL), 0, 0);\r
1141 \r
1142   label5 = gtk_label_new ("Value: ");\r
1143   gtk_widget_show (label5);\r
1144   gtk_table_attach (GTK_TABLE (table3), label5, 1, 2, 0, 1,\r
1145                     (GtkAttachOptions) (0),\r
1146                     (GtkAttachOptions) (0), 0, 0);\r
1147   gtk_misc_set_alignment (GTK_MISC (label5), 0, 0);\r
1148   gtk_label_set_justify (GTK_LABEL (label5), GTK_JUSTIFY_RIGHT);\r
1149 \r
1150   surf_value_entry = gtk_entry_new ();\r
1151   gtk_widget_show (surf_value_entry);\r
1152   gtk_table_attach (GTK_TABLE (table3), surf_value_entry, 2, 3, 0, 1,\r
1153                     (GtkAttachOptions) (GTK_FILL),\r
1154                     (GtkAttachOptions) (0), 0, 0);\r
1155 \r
1156   hbox2 = gtk_hbox_new (FALSE, 0);\r
1157   gtk_widget_show (hbox2);\r
1158   gtk_table_attach (GTK_TABLE (table3), hbox2, 3, 4, 0, 1,\r
1159                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1160                     (GtkAttachOptions) (GTK_FILL), 0, 0);\r
1161 \r
1162   label2 = gtk_label_new ("Surface Flags");\r
1163   gtk_widget_show (label2);\r
1164   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label2);\r
1165   gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_LEFT);\r
1166 \r
1167   table2 = gtk_table_new (5, 4, TRUE);\r
1168   gtk_widget_show (table2);\r
1169   gtk_container_add (GTK_CONTAINER (notebook1), table2);\r
1170 \r
1171   content_solidbutton = gtk_toggle_button_new_with_mnemonic ("Solid");\r
1172   gtk_widget_show (content_solidbutton);\r
1173   gtk_table_attach (GTK_TABLE (table2), content_solidbutton, 0, 1, 0, 1,\r
1174                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1175                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1176 \r
1177   content_windowbutton = gtk_toggle_button_new_with_mnemonic ("Window");\r
1178   gtk_widget_show (content_windowbutton);\r
1179   gtk_table_attach (GTK_TABLE (table2), content_windowbutton, 1, 2, 0, 1,\r
1180                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1181                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1182 \r
1183   content_illusbutton = gtk_toggle_button_new_with_mnemonic ("Illusion");\r
1184   gtk_widget_show (content_illusbutton);\r
1185   gtk_table_attach (GTK_TABLE (table2), content_illusbutton, 2, 3, 0, 1,\r
1186                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1187                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1188 \r
1189   content_lavabutton = gtk_toggle_button_new_with_mnemonic ("Lava");\r
1190   gtk_widget_show (content_lavabutton);\r
1191   gtk_table_attach (GTK_TABLE (table2), content_lavabutton, 3, 4, 0, 1,\r
1192                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1193                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1194 \r
1195   content_slimebutton = gtk_toggle_button_new_with_mnemonic ("Slime");\r
1196   gtk_widget_show (content_slimebutton);\r
1197   gtk_table_attach (GTK_TABLE (table2), content_slimebutton, 0, 1, 1, 2,\r
1198                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1199                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1200 \r
1201   content_waterbutton = gtk_toggle_button_new_with_mnemonic ("Water");\r
1202   gtk_widget_show (content_waterbutton);\r
1203   gtk_table_attach (GTK_TABLE (table2), content_waterbutton, 1, 2, 1, 2,\r
1204                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1205                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1206 \r
1207   content_mistbutton = gtk_toggle_button_new_with_mnemonic ("Mist");\r
1208   gtk_widget_show (content_mistbutton);\r
1209   gtk_table_attach (GTK_TABLE (table2), content_mistbutton, 2, 3, 1, 2,\r
1210                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1211                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1212 \r
1213   content_areaportalbutton = gtk_toggle_button_new_with_mnemonic ("AreaPortal");\r
1214   gtk_widget_show (content_areaportalbutton);\r
1215   gtk_table_attach (GTK_TABLE (table2), content_areaportalbutton, 3, 4, 1, 2,\r
1216                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1217                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1218 \r
1219   content_playerclipbutton = gtk_toggle_button_new_with_mnemonic ("PlayerClip");\r
1220   gtk_widget_show (content_playerclipbutton);\r
1221   gtk_table_attach (GTK_TABLE (table2), content_playerclipbutton, 0, 1, 2, 3,\r
1222                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1223                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1224 \r
1225   content_monsterclipbutton = gtk_toggle_button_new_with_mnemonic ("MonsterClip");\r
1226   gtk_widget_show (content_monsterclipbutton);\r
1227   gtk_table_attach (GTK_TABLE (table2), content_monsterclipbutton, 1, 2, 2, 3,\r
1228                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1229                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1230 \r
1231   content_current0button = gtk_toggle_button_new_with_mnemonic ("Current 0");\r
1232   gtk_widget_show (content_current0button);\r
1233   gtk_table_attach (GTK_TABLE (table2), content_current0button, 2, 3, 2, 3,\r
1234                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1235                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1236 \r
1237   content_current90button = gtk_toggle_button_new_with_mnemonic ("Current 90");\r
1238   gtk_widget_show (content_current90button);\r
1239   gtk_table_attach (GTK_TABLE (table2), content_current90button, 3, 4, 2, 3,\r
1240                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1241                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1242 \r
1243   content_current180button = gtk_toggle_button_new_with_mnemonic ("Current 180");\r
1244   gtk_widget_show (content_current180button);\r
1245   gtk_table_attach (GTK_TABLE (table2), content_current180button, 0, 1, 3, 4,\r
1246                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1247                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1248 \r
1249   content_current270button = gtk_toggle_button_new_with_mnemonic ("Current 270");\r
1250   gtk_widget_show (content_current270button);\r
1251   gtk_table_attach (GTK_TABLE (table2), content_current270button, 1, 2, 3, 4,\r
1252                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1253                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1254 \r
1255   content_currentUPbutton = gtk_toggle_button_new_with_mnemonic ("Current UP");\r
1256   gtk_widget_show (content_currentUPbutton);\r
1257   gtk_table_attach (GTK_TABLE (table2), content_currentUPbutton, 2, 3, 3, 4,\r
1258                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1259                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1260 \r
1261   content_currentDOWNbutton = gtk_toggle_button_new_with_mnemonic ("Current DOWN");\r
1262   gtk_widget_show (content_currentDOWNbutton);\r
1263   gtk_table_attach (GTK_TABLE (table2), content_currentDOWNbutton, 3, 4, 3, 4,\r
1264                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1265                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1266 \r
1267   content_originbutton = gtk_toggle_button_new_with_mnemonic ("Origin");\r
1268   gtk_widget_show (content_originbutton);\r
1269   gtk_table_attach (GTK_TABLE (table2), content_originbutton, 0, 1, 4, 5,\r
1270                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1271                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1272 \r
1273   content_detailbutton = gtk_toggle_button_new_with_mnemonic ("Detail");\r
1274   gtk_widget_show (content_detailbutton);\r
1275   gtk_table_attach (GTK_TABLE (table2), content_detailbutton, 1, 2, 4, 5,\r
1276                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1277                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1278 \r
1279   content_ladderbutton = gtk_toggle_button_new_with_mnemonic ("Ladder");\r
1280   gtk_widget_show (content_ladderbutton);\r
1281   gtk_table_attach (GTK_TABLE (table2), content_ladderbutton, 2, 3, 4, 5,\r
1282                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1283                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1284 \r
1285   content_camnoblockbutton = gtk_toggle_button_new_with_mnemonic ("Cam No Block");\r
1286   gtk_widget_show (content_camnoblockbutton);\r
1287   gtk_table_attach (GTK_TABLE (table2), content_camnoblockbutton, 3, 4, 4, 5,\r
1288                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),\r
1289                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);\r
1290 \r
1291   label3 = gtk_label_new ("Content Flags");\r
1292   gtk_widget_show (label3);\r
1293   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label3);\r
1294   gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_LEFT);\r
1295 \r
1296   // Signal Connects\r
1297   g_signal_connect ((gpointer) surface_lightbutton, "toggled",\r
1298                     G_CALLBACK (on_surface_lightbutton_toggled),\r
1299                     NULL);\r
1300   g_signal_connect ((gpointer) surface_slickbutton, "toggled",\r
1301                     G_CALLBACK (on_surface_slickbutton_toggled),\r
1302                     NULL);\r
1303   g_signal_connect ((gpointer) surface_skybutton, "toggled",\r
1304                     G_CALLBACK (on_surface_skybutton_toggled),\r
1305                     NULL);\r
1306   g_signal_connect ((gpointer) surface_warpbutton, "toggled",\r
1307                     G_CALLBACK (on_surface_warpbutton_toggled),\r
1308                     NULL);\r
1309   g_signal_connect ((gpointer) surface_trans33button, "toggled",\r
1310                     G_CALLBACK (on_surface_trans33button_toggled),\r
1311                     NULL);\r
1312   g_signal_connect ((gpointer) surface_trans66button, "toggled",\r
1313                     G_CALLBACK (on_surface_trans66button_toggled),\r
1314                     NULL);\r
1315   g_signal_connect ((gpointer) surface_flowingbutton, "toggled",\r
1316                     G_CALLBACK (on_surface_flowingbutton_toggled),\r
1317                     NULL);\r
1318   g_signal_connect ((gpointer) surface_nodrawbutton, "toggled",\r
1319                     G_CALLBACK (on_surface_nodrawbutton_toggled),\r
1320                     NULL);\r
1321   g_signal_connect ((gpointer) surface_tallwallbutton, "toggled",\r
1322                     G_CALLBACK (on_surface_tallwallbutton_toggled),\r
1323                     NULL);\r
1324   g_signal_connect ((gpointer) surface_alphatexbutton, "toggled",\r
1325                     G_CALLBACK (on_surface_alphatexbutton_toggled),\r
1326                     NULL);\r
1327   g_signal_connect ((gpointer) surface_animspeedbutton, "toggled",\r
1328                     G_CALLBACK (on_surface_animspeedbutton_toggled),\r
1329                     NULL);\r
1330   g_signal_connect ((gpointer) surface_undulatebutton, "toggled",\r
1331                     G_CALLBACK (on_surface_undulatebutton_toggled),\r
1332                     NULL);\r
1333 \r
1334   g_signal_connect ((gpointer) surf_gravel_radiobutton, "toggled",\r
1335                     G_CALLBACK (on_surf_gravel_radiobutton_toggled),\r
1336                     NULL);\r
1337   g_signal_connect ((gpointer) surf_metal_radiobutton, "toggled",\r
1338                     G_CALLBACK (on_surf_metal_radiobutton_toggled),\r
1339                     NULL);\r
1340   g_signal_connect ((gpointer) surf_stone_radiobutton, "toggled",\r
1341                     G_CALLBACK (on_surf_stone_radiobutton_toggled),\r
1342                     NULL);\r
1343   g_signal_connect ((gpointer) surf_wood_radiobutton, "toggled",\r
1344                     G_CALLBACK (on_surf_wood_radiobutton_toggled),\r
1345                     NULL);\r
1346 \r
1347   g_signal_connect ((gpointer) surf_value_entry, "changed",\r
1348                     G_CALLBACK (on_surf_value_entry_changed),\r
1349                     NULL);\r
1350   g_signal_connect ((gpointer) surf_value_entry, "insert_text",\r
1351                     G_CALLBACK (on_surf_value_entry_insert_text),\r
1352                     NULL);\r
1353   g_signal_connect ((gpointer) content_solidbutton, "toggled",\r
1354                     G_CALLBACK (on_content_solidbutton_toggled),\r
1355                     NULL);\r
1356   g_signal_connect ((gpointer) content_windowbutton, "toggled",\r
1357                     G_CALLBACK (on_content_windowbutton_toggled),\r
1358                     NULL);\r
1359   g_signal_connect ((gpointer) content_illusbutton, "toggled",\r
1360                     G_CALLBACK (on_content_illusbutton_toggled),\r
1361                     NULL);\r
1362   g_signal_connect ((gpointer) content_lavabutton, "toggled",\r
1363                     G_CALLBACK (on_content_lavabutton_toggled),\r
1364                     NULL);\r
1365   g_signal_connect ((gpointer) content_slimebutton, "toggled",\r
1366                     G_CALLBACK (on_content_slimebutton_toggled),\r
1367                     NULL);\r
1368   g_signal_connect ((gpointer) content_waterbutton, "toggled",\r
1369                     G_CALLBACK (on_content_waterbutton_toggled),\r
1370                     NULL);\r
1371   g_signal_connect ((gpointer) content_mistbutton, "toggled",\r
1372                     G_CALLBACK (on_content_mistbutton_toggled),\r
1373                     NULL);\r
1374   g_signal_connect ((gpointer) content_areaportalbutton, "toggled",\r
1375                     G_CALLBACK (on_content_areaportalbutton_toggled),\r
1376                     NULL);\r
1377   g_signal_connect ((gpointer) content_playerclipbutton, "toggled",\r
1378                     G_CALLBACK (on_content_playerclipbutton_toggled),\r
1379                     NULL);\r
1380   g_signal_connect ((gpointer) content_monsterclipbutton, "toggled",\r
1381                     G_CALLBACK (on_content_monsterclipbutton_toggled),\r
1382                     NULL);\r
1383   g_signal_connect ((gpointer) content_current0button, "toggled",\r
1384                     G_CALLBACK (on_content_current0button_toggled),\r
1385                     NULL);\r
1386   g_signal_connect ((gpointer) content_current90button, "toggled",\r
1387                     G_CALLBACK (on_content_current90button_toggled),\r
1388                     NULL);\r
1389   g_signal_connect ((gpointer) content_current180button, "toggled",\r
1390                     G_CALLBACK (on_content_current180button_toggled),\r
1391                     NULL);\r
1392   g_signal_connect ((gpointer) content_current270button, "toggled",\r
1393                     G_CALLBACK (on_content_current270button_toggled),\r
1394                     NULL);\r
1395   g_signal_connect ((gpointer) content_currentUPbutton, "toggled",\r
1396                     G_CALLBACK (on_content_currentUPbutton_toggled),\r
1397                     NULL);\r
1398   g_signal_connect ((gpointer) content_currentDOWNbutton, "toggled",\r
1399                     G_CALLBACK (on_content_currentDOWNbutton_toggled),\r
1400                     NULL);\r
1401   g_signal_connect ((gpointer) content_originbutton, "toggled",\r
1402                     G_CALLBACK (on_content_originbutton_toggled),\r
1403                     NULL);\r
1404   g_signal_connect ((gpointer) content_detailbutton, "toggled",\r
1405                     G_CALLBACK (on_content_detailbutton_toggled),\r
1406                     NULL);\r
1407   g_signal_connect ((gpointer) content_ladderbutton, "toggled",\r
1408                     G_CALLBACK (on_content_ladderbutton_toggled),\r
1409                     NULL);\r
1410   g_signal_connect ((gpointer) content_camnoblockbutton, "toggled",\r
1411                     G_CALLBACK (on_content_camnoblockbutton_toggled),\r
1412                     NULL);\r
1413 \r
1414 \r
1415   return frame1;\r
1416 }\r
1417 \r