2 Copyright (C) 1999-2007 id Software, Inc. and contributors.
\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
\r
5 This file is part of GtkRadiant.
\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
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
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
22 #include <gtk/gtk.h>
\r
23 #include <gdk/gdkkeysyms.h>
\r
25 #include "surfdlg_plugin.h"
\r
27 #include "surfaceflagsdialog_quake2.h"
\r
29 GtkWidget *notebook1;
\r
31 GtkWidget *surface_lightbutton;
\r
32 GtkWidget *surface_slickbutton;
\r
33 GtkWidget *surface_skybutton;
\r
34 GtkWidget *surface_warpbutton;
\r
35 GtkWidget *surface_trans33button;
\r
36 GtkWidget *surface_trans66button;
\r
37 GtkWidget *surface_flowingbutton;
\r
38 GtkWidget *surface_nodrawbutton;
\r
39 GtkWidget *surface_hintbutton;
\r
40 GtkWidget *surface_skipbutton;
\r
42 GtkWidget *content_solidbutton;
\r
43 GtkWidget *content_windowbutton;
\r
44 GtkWidget *content_auxbutton;
\r
45 GtkWidget *content_lavabutton;
\r
46 GtkWidget *content_slimebutton;
\r
47 GtkWidget *content_waterbutton;
\r
48 GtkWidget *content_mistbutton;
\r
49 GtkWidget *content_areaportalbutton;
\r
50 GtkWidget *content_playerclipbutton;
\r
51 GtkWidget *content_monsterclipbutton;
\r
52 GtkWidget *content_current0button;
\r
53 GtkWidget *content_current90button;
\r
54 GtkWidget *content_current180button;
\r
55 GtkWidget *content_current270button;
\r
56 GtkWidget *content_currentUPbutton;
\r
57 GtkWidget *content_currentDOWNbutton;
\r
58 GtkWidget *content_originbutton;
\r
59 GtkWidget *content_detailbutton;
\r
60 GtkWidget *content_translucentbutton;
\r
61 GtkWidget *content_ladderbutton;
\r
63 GtkWidget *surfacebutton;
\r
64 GtkWidget *contentbutton;
\r
66 GtkWidget *value_entry;
\r
67 gboolean setup_buttons = TRUE;
\r
69 int working_surface_flags;
\r
71 int working_content_flags;
\r
75 inline void set_inconsistent(GtkWidget *toggle_button)
\r
77 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON (toggle_button), TRUE);
\r
80 inline void clear_inconsistent(GtkWidget *toggle_button)
\r
82 GtkWidget *button_label;
\r
84 if ( gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (toggle_button)) )
\r
86 gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON (toggle_button), FALSE);
\r
91 void clear_all_inconsistent(void)
\r
93 clear_inconsistent( surface_lightbutton );
\r
94 clear_inconsistent( surface_slickbutton );
\r
95 clear_inconsistent( surface_skybutton );
\r
96 clear_inconsistent( surface_warpbutton );
\r
97 clear_inconsistent( surface_trans33button );
\r
98 clear_inconsistent( surface_trans66button );
\r
99 clear_inconsistent( surface_flowingbutton );
\r
100 clear_inconsistent( surface_nodrawbutton );
\r
101 clear_inconsistent( surface_hintbutton );
\r
102 clear_inconsistent( surface_skipbutton );
\r
104 clear_inconsistent( content_solidbutton );
\r
105 clear_inconsistent( content_windowbutton );
\r
106 clear_inconsistent( content_auxbutton );
\r
107 clear_inconsistent( content_lavabutton );
\r
108 clear_inconsistent( content_slimebutton );
\r
109 clear_inconsistent( content_waterbutton );
\r
110 clear_inconsistent( content_mistbutton );
\r
111 clear_inconsistent( content_areaportalbutton );
\r
112 clear_inconsistent( content_playerclipbutton );
\r
113 clear_inconsistent( content_monsterclipbutton );
\r
114 clear_inconsistent( content_current0button );
\r
115 clear_inconsistent( content_current90button );
\r
116 clear_inconsistent( content_current180button );
\r
117 clear_inconsistent( content_current270button );
\r
118 clear_inconsistent( content_currentUPbutton );
\r
119 clear_inconsistent( content_currentDOWNbutton );
\r
120 clear_inconsistent( content_originbutton );
\r
121 clear_inconsistent( content_detailbutton );
\r
122 clear_inconsistent( content_translucentbutton );
\r
123 clear_inconsistent( content_ladderbutton );
\r
126 void clear_all_buttons_and_values()
\r
128 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_lightbutton ), FALSE);
\r
129 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_slickbutton ), FALSE);
\r
130 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skybutton ), FALSE);
\r
131 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_warpbutton ), FALSE);
\r
132 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans33button ), FALSE);
\r
133 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans66button ), FALSE);
\r
134 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_flowingbutton ), FALSE);
\r
135 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_nodrawbutton ), FALSE);
\r
136 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_hintbutton ), FALSE);
\r
137 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skipbutton ), FALSE);
\r
139 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_solidbutton ), FALSE);
\r
140 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_windowbutton ), FALSE);
\r
141 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_auxbutton ), FALSE);
\r
142 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_lavabutton ), FALSE);
\r
143 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_slimebutton ), FALSE);
\r
144 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_waterbutton ), FALSE);
\r
145 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_mistbutton ), FALSE);
\r
146 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_areaportalbutton ), FALSE);
\r
147 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_playerclipbutton ), FALSE);
\r
148 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_monsterclipbutton ), FALSE);
\r
149 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current0button ), FALSE);
\r
150 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current90button ), FALSE);
\r
151 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current180button ), FALSE);
\r
152 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current270button ), FALSE);
\r
153 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentUPbutton ), FALSE);
\r
154 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentDOWNbutton ), FALSE);
\r
155 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_originbutton ), FALSE);
\r
156 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_detailbutton ), FALSE);
\r
157 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_translucentbutton ), FALSE);
\r
158 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_ladderbutton ), FALSE);
\r
160 gtk_entry_set_text( (GtkEntry *)value_entry, "");
\r
163 void SetFlagButtons_Quake2(texdef_to_face_t *texdef_face_list, bool b_isListEmpty)
\r
169 int diff_contents = 0;
\r
170 int diff_flags = 0;
\r
171 gboolean diff_value = FALSE;
\r
173 texdef_t* tmp_texdef;
\r
174 texdef_to_face_t* temp_texdef_face_list;
\r
177 setup_buttons = TRUE;
\r
178 working_surface_flags = 0;
\r
180 working_content_flags = 0;
\r
186 tmp_texdef = &texdef_face_list->texdef;
\r
187 contents = tmp_texdef->contents;
\r
188 flags = tmp_texdef->flags;
\r
189 value = tmp_texdef->value;
\r
191 Sys_Printf("Surface: %d\tContents: %d\tValue: %d\ttmp_texdef\n",tmp_texdef->flags,tmp_texdef->contents,tmp_texdef->value);
\r
192 Sys_Printf("Surface: %d\tContents: %d\tValue: %d\n",flags,contents,value);
\r
194 for (temp_texdef_face_list = texdef_face_list->next; temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next)
\r
196 tmp_texdef = &temp_texdef_face_list->texdef;
\r
197 diff_contents |= contents ^ tmp_texdef->contents; // Figure out which buttons are inconsistent
\r
198 diff_flags |= flags ^ tmp_texdef->flags;
\r
199 if (tmp_texdef->value != value)
\r
202 Sys_Printf("Surface: %d\tContents: %d\tValue: %d\ttmp_texdef\n",tmp_texdef->flags,tmp_texdef->contents,tmp_texdef->value);
\r
203 Sys_Printf("Surface: %d\tContents: %d\tValue: %d\n",flags,contents,value);
\r
210 clear_all_inconsistent();
\r
212 // If no faces/brushes are selected, clear everything and bail
\r
215 clear_all_buttons_and_values();
\r
216 setup_buttons = FALSE;
\r
220 // Set surface buttons to reflect brush/face flags, contents, and values
\r
221 if(diff_flags & QUAKE2_SURF_LIGHT)
\r
222 set_inconsistent(surface_lightbutton);
\r
223 else if(flags & QUAKE2_SURF_LIGHT)
\r
224 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (surface_lightbutton), TRUE);
\r
226 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (surface_lightbutton), FALSE);
\r
228 if(diff_flags & QUAKE2_SURF_SLICK)
\r
229 set_inconsistent(surface_slickbutton);
\r
230 else if(flags & QUAKE2_SURF_SLICK)
\r
231 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_slickbutton ), TRUE);
\r
233 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_slickbutton ), FALSE);
\r
235 if(diff_flags & QUAKE2_SURF_SKY)
\r
236 set_inconsistent(surface_skybutton);
\r
237 else if(flags & QUAKE2_SURF_SKY)
\r
238 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skybutton ), TRUE);
\r
240 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skybutton ), FALSE);
\r
242 if(diff_flags & QUAKE2_SURF_WARP)
\r
243 set_inconsistent(surface_warpbutton);
\r
244 else if(flags & QUAKE2_SURF_WARP)
\r
245 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_warpbutton ), TRUE);
\r
247 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_warpbutton ), FALSE);
\r
249 if(diff_flags & QUAKE2_SURF_TRANS33)
\r
250 set_inconsistent(surface_trans33button);
\r
251 else if(flags & QUAKE2_SURF_TRANS33)
\r
252 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans33button ), TRUE);
\r
254 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans33button ), FALSE);
\r
256 if(diff_flags & QUAKE2_SURF_TRANS66)
\r
257 set_inconsistent(surface_trans66button);
\r
258 else if(flags & QUAKE2_SURF_TRANS66)
\r
259 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans66button ), TRUE);
\r
261 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_trans66button ), FALSE);
\r
263 if(diff_flags & QUAKE2_SURF_FLOWING)
\r
264 set_inconsistent(surface_flowingbutton);
\r
265 else if(flags & QUAKE2_SURF_FLOWING)
\r
266 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_flowingbutton ), TRUE);
\r
268 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_flowingbutton ), FALSE);
\r
270 if(diff_flags & QUAKE2_SURF_NODRAW)
\r
271 set_inconsistent(surface_nodrawbutton);
\r
272 else if(flags & QUAKE2_SURF_NODRAW)
\r
273 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_nodrawbutton ), TRUE);
\r
275 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_nodrawbutton ), FALSE);
\r
277 if(diff_flags & QUAKE2_SURF_HINT)
\r
278 set_inconsistent(surface_hintbutton);
\r
279 else if(flags & QUAKE2_SURF_HINT)
\r
280 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_hintbutton ), TRUE);
\r
282 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_hintbutton ), FALSE);
\r
284 if(diff_flags & QUAKE2_SURF_SKIP)
\r
285 set_inconsistent(surface_skipbutton);
\r
286 else if(flags & QUAKE2_SURF_SKIP)
\r
287 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skipbutton ), TRUE);
\r
289 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( surface_skipbutton ), FALSE);
\r
291 // Set content buttons to reflect brush values
\r
292 if(diff_contents & QUAKE2_CONTENTS_SOLID)
\r
293 set_inconsistent(content_solidbutton);
\r
294 else if(contents & QUAKE2_CONTENTS_SOLID)
\r
295 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_solidbutton ), TRUE);
\r
297 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_solidbutton ), FALSE);
\r
299 if(diff_contents & QUAKE2_CONTENTS_WINDOW)
\r
300 set_inconsistent(content_windowbutton);
\r
301 else if(contents & QUAKE2_CONTENTS_WINDOW)
\r
302 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_windowbutton ), TRUE);
\r
304 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_windowbutton ), FALSE);
\r
306 if(diff_contents & QUAKE2_CONTENTS_AUX)
\r
307 set_inconsistent(content_auxbutton);
\r
308 else if(contents & QUAKE2_CONTENTS_AUX)
\r
309 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_auxbutton ), TRUE);
\r
311 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_auxbutton ), FALSE);
\r
313 if(diff_contents & QUAKE2_CONTENTS_LAVA)
\r
314 set_inconsistent(content_lavabutton);
\r
315 else if(contents & QUAKE2_CONTENTS_LAVA)
\r
316 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_lavabutton ), TRUE);
\r
318 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_lavabutton ), FALSE);
\r
320 if(diff_contents & QUAKE2_CONTENTS_SLIME)
\r
321 set_inconsistent(content_slimebutton);
\r
322 else if(contents & QUAKE2_CONTENTS_SLIME)
\r
323 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_slimebutton ), TRUE);
\r
325 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_slimebutton ), FALSE);
\r
327 if(diff_contents & QUAKE2_CONTENTS_WATER)
\r
328 set_inconsistent(content_waterbutton);
\r
329 else if(contents & QUAKE2_CONTENTS_WATER)
\r
330 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_waterbutton ), TRUE);
\r
332 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_waterbutton ), FALSE);
\r
334 if(diff_contents & QUAKE2_CONTENTS_MIST)
\r
335 set_inconsistent(content_mistbutton);
\r
336 else if(contents & QUAKE2_CONTENTS_MIST)
\r
337 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_mistbutton ), TRUE);
\r
339 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_mistbutton ), FALSE);
\r
341 if(diff_contents & QUAKE2_CONTENTS_AREAPORTAL)
\r
342 set_inconsistent(content_areaportalbutton);
\r
343 else if(contents & QUAKE2_CONTENTS_AREAPORTAL)
\r
344 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_areaportalbutton ), TRUE);
\r
346 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_areaportalbutton ), FALSE);
\r
348 if(diff_contents & QUAKE2_CONTENTS_PLAYERCLIP)
\r
349 set_inconsistent(content_playerclipbutton);
\r
350 else if(contents & QUAKE2_CONTENTS_PLAYERCLIP)
\r
351 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_playerclipbutton ), TRUE);
\r
353 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_playerclipbutton ), FALSE);
\r
355 if(diff_contents & QUAKE2_CONTENTS_MONSTERCLIP)
\r
356 set_inconsistent(content_monsterclipbutton);
\r
357 else if(contents & QUAKE2_CONTENTS_MONSTERCLIP)
\r
358 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_monsterclipbutton ), TRUE);
\r
360 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_monsterclipbutton ), FALSE);
\r
362 if(diff_contents & QUAKE2_CONTENTS_CURRENT_0)
\r
363 set_inconsistent(content_current0button);
\r
364 else if(contents & QUAKE2_CONTENTS_CURRENT_0)
\r
365 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current0button ), TRUE);
\r
367 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current0button ), FALSE);
\r
369 if(diff_contents & QUAKE2_CONTENTS_CURRENT_90)
\r
370 set_inconsistent(content_current90button);
\r
371 else if(contents & QUAKE2_CONTENTS_CURRENT_90)
\r
372 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current90button ), TRUE);
\r
374 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current90button ), FALSE);
\r
376 if(diff_contents & QUAKE2_CONTENTS_CURRENT_180)
\r
377 set_inconsistent(content_current180button);
\r
378 else if(contents & QUAKE2_CONTENTS_CURRENT_180)
\r
379 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current180button ), TRUE);
\r
381 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current180button ), FALSE);
\r
383 if(diff_contents & QUAKE2_CONTENTS_CURRENT_270)
\r
384 set_inconsistent(content_current270button);
\r
385 else if(contents & QUAKE2_CONTENTS_CURRENT_270)
\r
386 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current270button ), TRUE);
\r
388 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_current270button ), FALSE);
\r
390 if(diff_contents & QUAKE2_CONTENTS_CURRENT_UP)
\r
391 set_inconsistent(content_currentUPbutton);
\r
392 else if(contents & QUAKE2_CONTENTS_CURRENT_UP)
\r
393 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentUPbutton ), TRUE);
\r
395 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentUPbutton ), FALSE);
\r
397 if(diff_contents & QUAKE2_CONTENTS_CURRENT_DOWN)
\r
398 set_inconsistent(content_currentDOWNbutton);
\r
399 else if(contents & QUAKE2_CONTENTS_CURRENT_DOWN)
\r
400 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentDOWNbutton ), TRUE);
\r
402 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_currentDOWNbutton ), FALSE);
\r
404 if(diff_contents & QUAKE2_CONTENTS_ORIGIN)
\r
405 set_inconsistent(content_originbutton);
\r
406 else if(contents & QUAKE2_CONTENTS_ORIGIN)
\r
407 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_originbutton ), TRUE);
\r
409 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_originbutton ), FALSE);
\r
411 if(diff_contents & QUAKE2_CONTENTS_DETAIL)
\r
412 set_inconsistent(content_detailbutton);
\r
413 else if(contents & QUAKE2_CONTENTS_DETAIL)
\r
414 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_detailbutton ), TRUE);
\r
416 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_detailbutton ), FALSE);
\r
418 if(diff_contents & QUAKE2_CONTENTS_TRANSLUCENT)
\r
419 set_inconsistent(content_translucentbutton);
\r
420 else if(contents & QUAKE2_CONTENTS_TRANSLUCENT)
\r
421 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_translucentbutton ), TRUE);
\r
423 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_translucentbutton ), FALSE);
\r
425 if(diff_contents & QUAKE2_CONTENTS_LADDER)
\r
426 set_inconsistent(content_ladderbutton);
\r
427 else if(contents & QUAKE2_CONTENTS_LADDER)
\r
428 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_ladderbutton ), TRUE);
\r
430 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON ( content_ladderbutton ), FALSE);
\r
434 gtk_entry_set_text( (GtkEntry *)value_entry, "");
\r
437 working_value = value;
\r
438 sprintf( tex_buff, "%d", value);
\r
439 gtk_entry_set_text( (GtkEntry *)value_entry, tex_buff);
\r
442 setup_buttons = FALSE;
\r
445 void SetChangeInFlags_Face_Quake2 (texdef_to_face_t *texdef_face_list)
\r
447 texdef_to_face_t *temp_texdef_face_list;
\r
448 texdef_t *tmp_texdef;
\r
450 for (temp_texdef_face_list = texdef_face_list; temp_texdef_face_list; temp_texdef_face_list = temp_texdef_face_list->next)
\r
452 tmp_texdef = &temp_texdef_face_list->texdef;
\r
453 tmp_texdef->flags = (tmp_texdef->flags & ~surface_mask) | working_surface_flags;
\r
454 tmp_texdef->contents = (tmp_texdef->contents & ~content_mask) | working_content_flags;
\r
455 tmp_texdef->value = working_value;
\r
456 Sys_Printf("content_flag: %d content_mask: %d\n",working_content_flags,content_mask);
\r
457 Sys_Printf("content: %d\n",tmp_texdef->contents);
\r
461 inline void change_surfaceflag (GtkWidget *togglebutton, int sur_flag, gboolean change_flag_to)
\r
464 if (!setup_buttons) // If we're setting up the buttons, we really don't need to
\r
465 { // set flags that are already set
\r
467 if (gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (togglebutton))) // Clear out inconsistent, if set
\r
468 clear_inconsistent(GTK_WIDGET (togglebutton));
\r
470 surface_mask |= sur_flag;
\r
472 if (change_flag_to)
\r
473 working_surface_flags |= sur_flag;
\r
475 working_surface_flags &= ~sur_flag;
\r
479 inline void change_contentflag (GtkWidget *togglebutton, int content_flag, gboolean change_flag_to)
\r
482 if ( (!setup_buttons) ) // If we're setting up the buttons, we really don't need to
\r
483 { // set flags that are already set
\r
485 if (gtk_toggle_button_get_inconsistent(GTK_TOGGLE_BUTTON (togglebutton)))
\r
486 clear_inconsistent(togglebutton);
\r
487 //if (g_ptrSelectedFaces.GetSize() == 0) // Only changing content flags on whole brushes, not faces.
\r
489 content_mask |= content_flag;
\r
491 if (change_flag_to)
\r
492 working_content_flags |= content_flag;
\r
494 working_content_flags &= ~content_flag;
\r
496 Sys_Printf("content_flag: %d content_mask: %d\n",content_flag,content_mask);
\r
500 // Surface Flags Callbacks
\r
502 on_surface_lightbutton_toggled (GtkToggleButton *togglebutton,
\r
503 gpointer user_data)
\r
505 change_surfaceflag(surface_lightbutton, QUAKE2_SURF_LIGHT, (GTK_TOGGLE_BUTTON (surface_lightbutton)->active));
\r
510 on_surface_slickbutton_toggled (GtkToggleButton *togglebutton,
\r
511 gpointer user_data)
\r
513 change_surfaceflag(surface_slickbutton, QUAKE2_SURF_SLICK, (GTK_TOGGLE_BUTTON (surface_slickbutton)->active));
\r
518 on_surface_skybutton_toggled (GtkToggleButton *togglebutton,
\r
519 gpointer user_data)
\r
521 change_surfaceflag(surface_skybutton, QUAKE2_SURF_SKY, (GTK_TOGGLE_BUTTON (surface_skybutton)->active));
\r
525 on_surface_warpbutton_toggled (GtkToggleButton *togglebutton,
\r
526 gpointer user_data)
\r
528 change_surfaceflag(surface_warpbutton, QUAKE2_SURF_WARP, (GTK_TOGGLE_BUTTON (surface_warpbutton)->active));
\r
532 on_surface_trans33button_toggled (GtkToggleButton *togglebutton,
\r
533 gpointer user_data)
\r
535 change_surfaceflag(surface_trans33button, QUAKE2_SURF_TRANS33, (GTK_TOGGLE_BUTTON (surface_trans33button)->active));
\r
539 on_surface_trans66button_toggled (GtkToggleButton *togglebutton,
\r
540 gpointer user_data)
\r
542 change_surfaceflag(surface_trans66button, QUAKE2_SURF_TRANS66, (GTK_TOGGLE_BUTTON (surface_trans66button)->active));
\r
546 on_surface_flowingbutton_toggled (GtkToggleButton *togglebutton,
\r
547 gpointer user_data)
\r
549 change_surfaceflag(surface_flowingbutton, QUAKE2_SURF_FLOWING, (GTK_TOGGLE_BUTTON (surface_flowingbutton)->active));
\r
553 on_surface_nodrawbutton_toggled (GtkToggleButton *togglebutton,
\r
554 gpointer user_data)
\r
556 change_surfaceflag(surface_nodrawbutton, QUAKE2_SURF_NODRAW, (GTK_TOGGLE_BUTTON (surface_nodrawbutton)->active));
\r
560 on_surface_hintbutton_toggled (GtkToggleButton *togglebutton,
\r
561 gpointer user_data)
\r
563 change_surfaceflag(surface_hintbutton, QUAKE2_SURF_HINT, (GTK_TOGGLE_BUTTON (surface_hintbutton)->active));
\r
567 on_surface_skipbutton_toggled (GtkToggleButton *togglebutton,
\r
568 gpointer user_data)
\r
570 change_surfaceflag(surface_skipbutton, QUAKE2_SURF_SKIP, (GTK_TOGGLE_BUTTON (surface_skipbutton)->active));
\r
573 // Content Flags Callbacks
\r
575 on_content_solidbutton_toggled (GtkToggleButton *togglebutton,
\r
576 gpointer user_data)
\r
578 change_contentflag(content_solidbutton, QUAKE2_CONTENTS_SOLID, (GTK_TOGGLE_BUTTON (content_solidbutton)->active));
\r
582 on_content_windowbutton_toggled (GtkToggleButton *togglebutton,
\r
583 gpointer user_data)
\r
585 change_contentflag(content_windowbutton, QUAKE2_CONTENTS_WINDOW, (GTK_TOGGLE_BUTTON (content_windowbutton)->active));
\r
589 on_content_auxbutton_toggled (GtkToggleButton *togglebutton,
\r
590 gpointer user_data)
\r
592 change_contentflag(content_auxbutton, QUAKE2_CONTENTS_AUX, (GTK_TOGGLE_BUTTON (content_auxbutton)->active));
\r
596 on_content_lavabutton_toggled (GtkToggleButton *togglebutton,
\r
597 gpointer user_data)
\r
599 change_contentflag(content_lavabutton, QUAKE2_CONTENTS_LAVA, (GTK_TOGGLE_BUTTON (content_lavabutton)->active));
\r
603 on_content_slimebutton_toggled (GtkToggleButton *togglebutton,
\r
604 gpointer user_data)
\r
606 change_contentflag(content_slimebutton, QUAKE2_CONTENTS_SLIME, (GTK_TOGGLE_BUTTON (content_slimebutton)->active));
\r
610 on_content_waterbutton_toggled (GtkToggleButton *togglebutton,
\r
611 gpointer user_data)
\r
613 change_contentflag(content_waterbutton, QUAKE2_CONTENTS_WATER, (GTK_TOGGLE_BUTTON (content_waterbutton)->active));
\r
617 on_content_mistbutton_toggled (GtkToggleButton *togglebutton,
\r
618 gpointer user_data)
\r
620 change_contentflag(content_mistbutton, QUAKE2_CONTENTS_MIST, (GTK_TOGGLE_BUTTON (content_mistbutton)->active));
\r
624 on_content_areaportalbutton_toggled (GtkToggleButton *togglebutton,
\r
625 gpointer user_data)
\r
627 change_contentflag(content_areaportalbutton, QUAKE2_CONTENTS_AREAPORTAL, (GTK_TOGGLE_BUTTON (content_areaportalbutton)->active));
\r
631 on_content_playerclipbutton_toggled (GtkToggleButton *togglebutton,
\r
632 gpointer user_data)
\r
634 change_contentflag(content_playerclipbutton, QUAKE2_CONTENTS_PLAYERCLIP, (GTK_TOGGLE_BUTTON (content_playerclipbutton)->active));
\r
638 on_content_monsterclipbutton_toggled (GtkToggleButton *togglebutton,
\r
639 gpointer user_data)
\r
641 change_contentflag(content_monsterclipbutton, QUAKE2_CONTENTS_MONSTERCLIP, (GTK_TOGGLE_BUTTON (content_monsterclipbutton)->active));
\r
645 on_content_current0button_toggled (GtkToggleButton *togglebutton,
\r
646 gpointer user_data)
\r
648 change_contentflag(content_current0button, QUAKE2_CONTENTS_CURRENT_0, (GTK_TOGGLE_BUTTON (content_current0button)->active));
\r
652 on_content_current90button_toggled (GtkToggleButton *togglebutton,
\r
653 gpointer user_data)
\r
655 change_contentflag(content_current90button, QUAKE2_CONTENTS_CURRENT_90, (GTK_TOGGLE_BUTTON (content_current90button)->active));
\r
659 on_content_current180button_toggled (GtkToggleButton *togglebutton,
\r
660 gpointer user_data)
\r
662 change_contentflag(content_current180button, QUAKE2_CONTENTS_CURRENT_180, (GTK_TOGGLE_BUTTON (content_current180button)->active));
\r
666 on_content_current270button_toggled (GtkToggleButton *togglebutton,
\r
667 gpointer user_data)
\r
669 change_contentflag(content_current270button, QUAKE2_CONTENTS_CURRENT_270, (GTK_TOGGLE_BUTTON (content_current270button)->active));
\r
673 on_content_currentUPbutton_toggled (GtkToggleButton *togglebutton,
\r
674 gpointer user_data)
\r
676 change_contentflag(content_currentUPbutton, QUAKE2_CONTENTS_CURRENT_UP, (GTK_TOGGLE_BUTTON (content_currentUPbutton)->active));
\r
680 on_content_currentDOWNbutton_toggled (GtkToggleButton *togglebutton,
\r
681 gpointer user_data)
\r
683 change_contentflag(content_currentDOWNbutton, QUAKE2_CONTENTS_CURRENT_DOWN, (GTK_TOGGLE_BUTTON (content_currentDOWNbutton)->active));
\r
687 on_content_originbutton_toggled (GtkToggleButton *togglebutton,
\r
688 gpointer user_data)
\r
690 change_contentflag(content_originbutton, QUAKE2_CONTENTS_ORIGIN, (GTK_TOGGLE_BUTTON (content_originbutton)->active));
\r
694 on_content_detailbutton_toggled (GtkToggleButton *togglebutton,
\r
695 gpointer user_data)
\r
697 change_contentflag(content_detailbutton, QUAKE2_CONTENTS_DETAIL, (GTK_TOGGLE_BUTTON (content_detailbutton)->active));
\r
701 on_content_translucentbutton_toggled (GtkToggleButton *togglebutton,
\r
702 gpointer user_data)
\r
704 change_contentflag(content_translucentbutton, QUAKE2_CONTENTS_TRANSLUCENT, (GTK_TOGGLE_BUTTON (content_translucentbutton)->active));
\r
708 on_content_ladderbutton_toggled (GtkToggleButton *togglebutton,
\r
709 gpointer user_data)
\r
711 change_contentflag(content_ladderbutton, QUAKE2_CONTENTS_LADDER, (GTK_TOGGLE_BUTTON (content_ladderbutton)->active));
\r
714 // Value Entry Callback
\r
716 on_value_entry_changed (GtkEditable *editable,
\r
717 gpointer user_data)
\r
719 if ( (!setup_buttons) ) // If we're setting up the buttons, don't change value
\r
720 working_value = atoi( gtk_entry_get_text( (GtkEntry*)editable) );
\r
724 on_value_entry_insert_text (GtkEditable *editable,
\r
726 gint new_text_length,
\r
728 gpointer user_data)
\r
737 // Limit input to digits, throwing out anything else
\r
738 // Modified from Gtk FAQ for text filtering of GtkEntry
\r
739 result = g_new (gchar, new_text_length);
\r
741 for (i=0; i < new_text_length; i++) {
\r
742 if (!isdigit(new_text[i]))
\r
744 result[count++] = new_text[i];
\r
748 gtk_signal_handler_block_by_func (GTK_OBJECT (editable),
\r
749 GTK_SIGNAL_FUNC (on_value_entry_insert_text),
\r
751 gtk_editable_insert_text (editable, result, count, position);
\r
752 gtk_signal_handler_unblock_by_func (GTK_OBJECT (editable),
\r
753 GTK_SIGNAL_FUNC (on_value_entry_insert_text),
\r
756 gtk_signal_emit_stop_by_name (GTK_OBJECT (editable), "insert_text");
\r
762 on_surfacebutton_clicked (GtkButton *button,
\r
763 gpointer user_data)
\r
765 gtk_notebook_set_page (GTK_NOTEBOOK(notebook1), 0);
\r
769 on_contentbutton_clicked (GtkButton *button,
\r
770 gpointer user_data)
\r
772 gtk_notebook_set_page (GTK_NOTEBOOK(notebook1), 1);
\r
776 #define QUAKE2_FLAG_BUTTON_BORDER 3
\r
778 GtkWidget* Create_Quake2FlagsDialog (GtkWidget* surfacedialog_widget)
\r
788 GtkWidget *hseparator1;
\r
789 GtkWidget *value_label;
\r
796 frame1 = gtk_frame_new ("Flags");
\r
797 gtk_widget_show (frame1);
\r
798 gtk_container_add (GTK_CONTAINER (surfacedialog_widget), frame1);
\r
800 vbox1 = gtk_vbox_new (FALSE, 0);
\r
801 gtk_widget_show (vbox1);
\r
802 gtk_container_add (GTK_CONTAINER (frame1), vbox1);
\r
804 notebook1 = gtk_notebook_new ();
\r
805 gtk_widget_show (notebook1);
\r
806 gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0);
\r
807 gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook1), TRUE);
\r
808 gtk_container_set_border_width (GTK_CONTAINER (notebook1), 5);
\r
810 vbox2 = gtk_vbox_new (FALSE, 0);
\r
811 gtk_widget_show (vbox2);
\r
812 gtk_container_add (GTK_CONTAINER (notebook1), vbox2);
\r
814 table4 = gtk_table_new (3, 4, FALSE);
\r
815 gtk_widget_show (table4);
\r
816 gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0);
\r
818 surface_lightbutton = gtk_toggle_button_new_with_label ("Light");
\r
819 gtk_signal_connect (GTK_OBJECT (surface_lightbutton), "toggled",
\r
820 GTK_SIGNAL_FUNC (on_surface_lightbutton_toggled),
\r
822 gtk_widget_show (surface_lightbutton);
\r
823 gtk_table_attach (GTK_TABLE (table4), surface_lightbutton, 0, 1, 0, 1,
\r
824 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
825 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
826 gtk_container_set_border_width (GTK_CONTAINER (surface_lightbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
828 surface_slickbutton = gtk_toggle_button_new_with_label ("Slick");
\r
829 gtk_signal_connect (GTK_OBJECT (surface_slickbutton), "toggled",
\r
830 GTK_SIGNAL_FUNC (on_surface_slickbutton_toggled),
\r
832 gtk_widget_show (surface_slickbutton);
\r
833 gtk_table_attach (GTK_TABLE (table4), surface_slickbutton, 1, 2, 0, 1,
\r
834 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
835 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
836 gtk_container_set_border_width (GTK_CONTAINER (surface_slickbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
838 surface_skybutton = gtk_toggle_button_new_with_label ("Sky");
\r
839 gtk_signal_connect (GTK_OBJECT (surface_skybutton), "toggled",
\r
840 GTK_SIGNAL_FUNC (on_surface_skybutton_toggled),
\r
842 gtk_widget_show (surface_skybutton);
\r
843 gtk_table_attach (GTK_TABLE (table4), surface_skybutton, 2, 3, 0, 1,
\r
844 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
845 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
846 gtk_container_set_border_width (GTK_CONTAINER (surface_skybutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
848 surface_warpbutton = gtk_toggle_button_new_with_label ("Warp");
\r
849 gtk_signal_connect (GTK_OBJECT (surface_warpbutton), "toggled",
\r
850 GTK_SIGNAL_FUNC (on_surface_warpbutton_toggled),
\r
852 gtk_widget_show (surface_warpbutton);
\r
853 gtk_table_attach (GTK_TABLE (table4), surface_warpbutton, 3, 4, 0, 1,
\r
854 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
855 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
856 gtk_container_set_border_width (GTK_CONTAINER (surface_warpbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
858 surface_trans33button = gtk_toggle_button_new_with_label ("Trans 33");
\r
859 gtk_signal_connect (GTK_OBJECT (surface_trans33button), "toggled",
\r
860 GTK_SIGNAL_FUNC (on_surface_trans33button_toggled),
\r
862 gtk_widget_show (surface_trans33button);
\r
863 gtk_table_attach (GTK_TABLE (table4), surface_trans33button, 0, 1, 1, 2,
\r
864 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
865 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
866 gtk_container_set_border_width (GTK_CONTAINER (surface_trans33button), QUAKE2_FLAG_BUTTON_BORDER);
\r
868 surface_trans66button = gtk_toggle_button_new_with_label ("Trans 66");
\r
869 gtk_signal_connect (GTK_OBJECT (surface_trans66button), "toggled",
\r
870 GTK_SIGNAL_FUNC (on_surface_trans66button_toggled),
\r
872 gtk_widget_show (surface_trans66button);
\r
873 gtk_table_attach (GTK_TABLE (table4), surface_trans66button, 1, 2, 1, 2,
\r
874 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
875 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
876 gtk_container_set_border_width (GTK_CONTAINER (surface_trans66button), QUAKE2_FLAG_BUTTON_BORDER);
\r
878 surface_flowingbutton = gtk_toggle_button_new_with_label ("Flowing");
\r
879 gtk_signal_connect (GTK_OBJECT (surface_flowingbutton), "toggled",
\r
880 GTK_SIGNAL_FUNC (on_surface_flowingbutton_toggled),
\r
882 gtk_widget_show (surface_flowingbutton);
\r
883 gtk_table_attach (GTK_TABLE (table4), surface_flowingbutton, 2, 3, 1, 2,
\r
884 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
885 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
886 gtk_container_set_border_width (GTK_CONTAINER (surface_flowingbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
888 surface_nodrawbutton = gtk_toggle_button_new_with_label ("NoDraw");
\r
889 gtk_signal_connect (GTK_OBJECT (surface_nodrawbutton), "toggled",
\r
890 GTK_SIGNAL_FUNC (on_surface_nodrawbutton_toggled),
\r
892 gtk_widget_show (surface_nodrawbutton);
\r
893 gtk_table_attach (GTK_TABLE (table4), surface_nodrawbutton, 3, 4, 1, 2,
\r
894 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
895 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
896 gtk_container_set_border_width (GTK_CONTAINER (surface_nodrawbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
898 surface_hintbutton = gtk_toggle_button_new_with_label ("Hint");
\r
899 gtk_signal_connect (GTK_OBJECT (surface_hintbutton), "toggled",
\r
900 GTK_SIGNAL_FUNC (on_surface_hintbutton_toggled),
\r
902 gtk_widget_show (surface_hintbutton);
\r
903 gtk_table_attach (GTK_TABLE (table4), surface_hintbutton, 0, 1, 2, 3,
\r
904 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
905 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
906 gtk_container_set_border_width (GTK_CONTAINER (surface_hintbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
908 surface_skipbutton = gtk_toggle_button_new_with_label ("Skip");
\r
909 gtk_signal_connect (GTK_OBJECT (surface_skipbutton), "toggled",
\r
910 GTK_SIGNAL_FUNC (on_surface_skipbutton_toggled),
\r
912 gtk_widget_show (surface_skipbutton);
\r
913 gtk_table_attach (GTK_TABLE (table4), surface_skipbutton, 3, 4, 2, 3,
\r
914 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
915 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
916 gtk_container_set_border_width (GTK_CONTAINER (surface_skipbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
918 hseparator1 = gtk_hseparator_new ();
\r
919 gtk_widget_show (hseparator1);
\r
920 gtk_box_pack_start (GTK_BOX (vbox2), hseparator1, FALSE, FALSE, 0);
\r
921 gtk_widget_set_usize (hseparator1, -2, 5);
\r
923 hbox2 = gtk_hbox_new (FALSE, 0);
\r
924 gtk_widget_show (hbox2);
\r
925 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
\r
927 hbox3 = gtk_hbox_new (FALSE, 0);
\r
928 gtk_widget_show (hbox3);
\r
929 gtk_box_pack_start (GTK_BOX (hbox2), hbox3, TRUE, TRUE, 0);
\r
931 vbox4 = gtk_vbox_new (FALSE, 0);
\r
932 gtk_widget_show (vbox4);
\r
933 gtk_box_pack_start (GTK_BOX (hbox3), vbox4, TRUE, TRUE, 0);
\r
935 value_label = gtk_label_new (" Value: ");
\r
936 gtk_widget_show (value_label);
\r
937 gtk_box_pack_start (GTK_BOX (hbox3), value_label, FALSE, FALSE, 0);
\r
939 value_entry = gtk_entry_new ();
\r
940 gtk_signal_connect (GTK_OBJECT (value_entry), "changed",
\r
941 GTK_SIGNAL_FUNC (on_value_entry_changed),
\r
943 gtk_signal_connect (GTK_OBJECT (value_entry), "insert_text",
\r
944 GTK_SIGNAL_FUNC (on_value_entry_insert_text),
\r
946 gtk_entry_set_max_length( (GtkEntry *)value_entry, 11);
\r
947 gtk_widget_show (value_entry);
\r
948 gtk_box_pack_start (GTK_BOX (hbox3), value_entry, TRUE, TRUE, 0);
\r
950 vbox3 = gtk_vbox_new (FALSE, 0);
\r
951 gtk_widget_show (vbox3);
\r
952 gtk_box_pack_start (GTK_BOX (hbox3), vbox3, TRUE, TRUE, 0);
\r
954 label5 = gtk_label_new ("Surface Flags");
\r
955 gtk_widget_show (label5);
\r
956 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label5);
\r
958 table3 = gtk_table_new (5, 4, FALSE);
\r
959 gtk_widget_show (table3);
\r
960 gtk_container_add (GTK_CONTAINER (notebook1), table3);
\r
962 content_solidbutton = gtk_toggle_button_new_with_label ("Solid");
\r
963 gtk_signal_connect (GTK_OBJECT (content_solidbutton), "toggled",
\r
964 GTK_SIGNAL_FUNC (on_content_solidbutton_toggled),
\r
966 gtk_widget_show (content_solidbutton);
\r
967 gtk_table_attach (GTK_TABLE (table3), content_solidbutton, 0, 1, 0, 1,
\r
968 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
969 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
970 gtk_container_set_border_width (GTK_CONTAINER (content_solidbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
972 content_windowbutton = gtk_toggle_button_new_with_label ("Window");
\r
973 gtk_signal_connect (GTK_OBJECT (content_windowbutton), "toggled",
\r
974 GTK_SIGNAL_FUNC (on_content_windowbutton_toggled),
\r
976 gtk_widget_show (content_windowbutton);
\r
977 gtk_table_attach (GTK_TABLE (table3), content_windowbutton, 1, 2, 0, 1,
\r
978 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
979 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
980 gtk_container_set_border_width (GTK_CONTAINER (content_windowbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
982 content_auxbutton = gtk_toggle_button_new_with_label ("Aux");
\r
983 gtk_signal_connect (GTK_OBJECT (content_auxbutton), "toggled",
\r
984 GTK_SIGNAL_FUNC (on_content_auxbutton_toggled),
\r
986 gtk_widget_show (content_auxbutton);
\r
987 gtk_table_attach (GTK_TABLE (table3), content_auxbutton, 2, 3, 0, 1,
\r
988 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
989 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
990 gtk_container_set_border_width (GTK_CONTAINER (content_auxbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
992 content_lavabutton = gtk_toggle_button_new_with_label ("Lava");
\r
993 gtk_signal_connect (GTK_OBJECT (content_lavabutton), "toggled",
\r
994 GTK_SIGNAL_FUNC (on_content_lavabutton_toggled),
\r
996 gtk_widget_show (content_lavabutton);
\r
997 gtk_table_attach (GTK_TABLE (table3), content_lavabutton, 3, 4, 0, 1,
\r
998 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
999 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1000 gtk_container_set_border_width (GTK_CONTAINER (content_lavabutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1002 content_slimebutton = gtk_toggle_button_new_with_label ("Slime");
\r
1003 gtk_signal_connect (GTK_OBJECT (content_slimebutton), "toggled",
\r
1004 GTK_SIGNAL_FUNC (on_content_slimebutton_toggled),
\r
1006 gtk_widget_show (content_slimebutton);
\r
1007 gtk_table_attach (GTK_TABLE (table3), content_slimebutton, 0, 1, 1, 2,
\r
1008 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1009 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1010 gtk_container_set_border_width (GTK_CONTAINER (content_slimebutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1012 content_waterbutton = gtk_toggle_button_new_with_label ("Water");
\r
1013 gtk_signal_connect (GTK_OBJECT (content_waterbutton), "toggled",
\r
1014 GTK_SIGNAL_FUNC (on_content_waterbutton_toggled),
\r
1016 gtk_widget_show (content_waterbutton);
\r
1017 gtk_table_attach (GTK_TABLE (table3), content_waterbutton, 1, 2, 1, 2,
\r
1018 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1019 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1020 gtk_container_set_border_width (GTK_CONTAINER (content_waterbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1022 content_mistbutton = gtk_toggle_button_new_with_label ("Mist");
\r
1023 gtk_signal_connect (GTK_OBJECT (content_mistbutton), "toggled",
\r
1024 GTK_SIGNAL_FUNC (on_content_mistbutton_toggled),
\r
1026 gtk_widget_show (content_mistbutton);
\r
1027 gtk_table_attach (GTK_TABLE (table3), content_mistbutton, 2, 3, 1, 2,
\r
1028 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1029 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1030 gtk_container_set_border_width (GTK_CONTAINER (content_mistbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1032 content_areaportalbutton = gtk_toggle_button_new_with_label ("AreaPortal");
\r
1033 gtk_signal_connect (GTK_OBJECT (content_areaportalbutton), "toggled",
\r
1034 GTK_SIGNAL_FUNC (on_content_areaportalbutton_toggled),
\r
1036 gtk_widget_show (content_areaportalbutton);
\r
1037 gtk_table_attach (GTK_TABLE (table3), content_areaportalbutton, 3, 4, 1, 2,
\r
1038 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1039 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1040 gtk_container_set_border_width (GTK_CONTAINER (content_areaportalbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1042 content_playerclipbutton = gtk_toggle_button_new_with_label ("PlayerClip");
\r
1043 gtk_signal_connect (GTK_OBJECT (content_playerclipbutton), "toggled",
\r
1044 GTK_SIGNAL_FUNC (on_content_playerclipbutton_toggled),
\r
1046 gtk_widget_show (content_playerclipbutton);
\r
1047 gtk_table_attach (GTK_TABLE (table3), content_playerclipbutton, 0, 1, 2, 3,
\r
1048 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1049 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1050 gtk_container_set_border_width (GTK_CONTAINER (content_playerclipbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1052 content_monsterclipbutton = gtk_toggle_button_new_with_label ("MonsterClip");
\r
1053 gtk_signal_connect (GTK_OBJECT (content_monsterclipbutton), "toggled",
\r
1054 GTK_SIGNAL_FUNC (on_content_monsterclipbutton_toggled),
\r
1056 gtk_widget_show (content_monsterclipbutton);
\r
1057 gtk_table_attach (GTK_TABLE (table3), content_monsterclipbutton, 1, 2, 2, 3,
\r
1058 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1059 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1060 gtk_container_set_border_width (GTK_CONTAINER (content_monsterclipbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1062 content_current0button = gtk_toggle_button_new_with_label ("Current 0");
\r
1063 gtk_signal_connect (GTK_OBJECT (content_current0button), "toggled",
\r
1064 GTK_SIGNAL_FUNC (on_content_current0button_toggled),
\r
1066 gtk_widget_show (content_current0button);
\r
1067 gtk_table_attach (GTK_TABLE (table3), content_current0button, 2, 3, 2, 3,
\r
1068 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1069 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1070 gtk_container_set_border_width (GTK_CONTAINER (content_current0button), QUAKE2_FLAG_BUTTON_BORDER);
\r
1072 content_current90button = gtk_toggle_button_new_with_label ("Current 90");
\r
1073 gtk_signal_connect (GTK_OBJECT (content_current90button), "toggled",
\r
1074 GTK_SIGNAL_FUNC (on_content_current90button_toggled),
\r
1076 gtk_widget_show (content_current90button);
\r
1077 gtk_table_attach (GTK_TABLE (table3), content_current90button, 3, 4, 2, 3,
\r
1078 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1079 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1080 gtk_container_set_border_width (GTK_CONTAINER (content_current90button), QUAKE2_FLAG_BUTTON_BORDER);
\r
1082 content_current180button = gtk_toggle_button_new_with_label ("Current 180");
\r
1083 gtk_signal_connect (GTK_OBJECT (content_current180button), "toggled",
\r
1084 GTK_SIGNAL_FUNC (on_content_current180button_toggled),
\r
1086 gtk_widget_show (content_current180button);
\r
1087 gtk_table_attach (GTK_TABLE (table3), content_current180button, 0, 1, 3, 4,
\r
1088 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1089 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1090 gtk_container_set_border_width (GTK_CONTAINER (content_current180button), QUAKE2_FLAG_BUTTON_BORDER);
\r
1092 content_current270button = gtk_toggle_button_new_with_label ("Current 270");
\r
1093 gtk_signal_connect (GTK_OBJECT (content_current270button), "toggled",
\r
1094 GTK_SIGNAL_FUNC (on_content_current270button_toggled),
\r
1096 gtk_widget_show (content_current270button);
\r
1097 gtk_table_attach (GTK_TABLE (table3), content_current270button, 1, 2, 3, 4,
\r
1098 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1099 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1100 gtk_container_set_border_width (GTK_CONTAINER (content_current270button), QUAKE2_FLAG_BUTTON_BORDER);
\r
1102 content_currentUPbutton = gtk_toggle_button_new_with_label ("Current UP");
\r
1103 gtk_signal_connect (GTK_OBJECT (content_currentUPbutton), "toggled",
\r
1104 GTK_SIGNAL_FUNC (on_content_currentUPbutton_toggled),
\r
1106 gtk_widget_show (content_currentUPbutton);
\r
1107 gtk_table_attach (GTK_TABLE (table3), content_currentUPbutton, 2, 3, 3, 4,
\r
1108 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1109 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1110 gtk_container_set_border_width (GTK_CONTAINER (content_currentUPbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1112 content_currentDOWNbutton = gtk_toggle_button_new_with_label ("Current DOWN");
\r
1113 gtk_signal_connect (GTK_OBJECT (content_currentDOWNbutton), "toggled",
\r
1114 GTK_SIGNAL_FUNC (on_content_currentDOWNbutton_toggled),
\r
1116 gtk_widget_show (content_currentDOWNbutton);
\r
1117 gtk_table_attach (GTK_TABLE (table3), content_currentDOWNbutton, 3, 4, 3, 4,
\r
1118 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1119 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1120 gtk_container_set_border_width (GTK_CONTAINER (content_currentDOWNbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1122 content_originbutton = gtk_toggle_button_new_with_label ("Origin");
\r
1123 gtk_signal_connect (GTK_OBJECT (content_originbutton), "toggled",
\r
1124 GTK_SIGNAL_FUNC (on_content_originbutton_toggled),
\r
1126 gtk_widget_show (content_originbutton);
\r
1127 gtk_table_attach (GTK_TABLE (table3), content_originbutton, 0, 1, 4, 5,
\r
1128 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1129 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1130 gtk_container_set_border_width (GTK_CONTAINER (content_originbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1132 content_detailbutton = gtk_toggle_button_new_with_label ("Detail");
\r
1133 gtk_signal_connect (GTK_OBJECT (content_detailbutton), "toggled",
\r
1134 GTK_SIGNAL_FUNC (on_content_detailbutton_toggled),
\r
1136 gtk_widget_show (content_detailbutton);
\r
1137 gtk_table_attach (GTK_TABLE (table3), content_detailbutton, 1, 2, 4, 5,
\r
1138 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1139 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1140 gtk_container_set_border_width (GTK_CONTAINER (content_detailbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1142 content_translucentbutton = gtk_toggle_button_new_with_label ("Translucent");
\r
1143 gtk_signal_connect (GTK_OBJECT (content_translucentbutton), "toggled",
\r
1144 GTK_SIGNAL_FUNC (on_content_translucentbutton_toggled),
\r
1146 gtk_widget_show (content_translucentbutton);
\r
1147 gtk_table_attach (GTK_TABLE (table3), content_translucentbutton, 2, 3, 4, 5,
\r
1148 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1149 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1150 gtk_container_set_border_width (GTK_CONTAINER (content_translucentbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1152 content_ladderbutton = gtk_toggle_button_new_with_label ("Ladder");
\r
1153 gtk_signal_connect (GTK_OBJECT (content_ladderbutton), "toggled",
\r
1154 GTK_SIGNAL_FUNC (on_content_ladderbutton_toggled),
\r
1156 gtk_widget_show (content_ladderbutton);
\r
1157 gtk_table_attach (GTK_TABLE (table3), content_ladderbutton, 3, 4, 4, 5,
\r
1158 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
\r
1159 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
\r
1160 gtk_container_set_border_width (GTK_CONTAINER (content_ladderbutton), QUAKE2_FLAG_BUTTON_BORDER);
\r
1162 label6 = gtk_label_new ("Content Flags");
\r
1163 gtk_widget_show (label6);
\r
1164 gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label6);
\r