2 PrtView plugin for GtkRadiant
\r
3 Copyright (C) 2001 Geoffrey Dewan, Loki software and qeradiant.com
\r
5 This library is free software; you can redistribute it and/or
\r
6 modify it under the terms of the GNU Lesser General Public
\r
7 License as published by the Free Software Foundation; either
\r
8 version 2.1 of the License, or (at your option) any later version.
\r
10 This library is distributed in the hope that it will be useful,
\r
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
13 Lesser General Public License for more details.
\r
15 You should have received a copy of the GNU Lesser General Public
\r
16 License along with this library; if not, write to the Free Software
\r
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 // ConfigDialog.cpp : implementation file
\r
27 #define new DEBUG_NEW
\r
29 //static char THIS_FILE[] = __FILE__;
\r
32 /////////////////////////////////////////////////////////////////////////////
\r
33 // CConfigDialog dialog
\r
37 static void dialog_button_callback (GtkWidget *widget, gpointer data)
\r
42 parent = gtk_widget_get_toplevel (widget);
\r
43 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
\r
44 ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
\r
50 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
\r
54 gtk_widget_hide (widget);
\r
55 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
\r
61 // =============================================================================
\r
62 // Color selection dialog
\r
64 static int DoColor (COLORREF *c)
\r
68 int loop = 1, ret = IDCANCEL;
\r
70 clr[0] = ((double)GetRValue (*c)) / 255.0;
\r
71 clr[1] = ((double)GetGValue (*c)) / 255.0;
\r
72 clr[2] = ((double)GetBValue (*c)) / 255.0;
\r
74 dlg = gtk_color_selection_dialog_new ("Choose Color");
\r
75 gtk_color_selection_set_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dlg)->colorsel), clr);
\r
76 gtk_signal_connect (GTK_OBJECT (dlg), "delete_event",
\r
77 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
\r
78 gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
\r
79 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
\r
80 gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (dlg)->ok_button), "clicked",
\r
81 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
\r
82 gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (dlg)->cancel_button), "clicked",
\r
83 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
\r
84 g_object_set_data (G_OBJECT (dlg), "loop", &loop);
\r
85 g_object_set_data (G_OBJECT (dlg), "ret", &ret);
\r
87 gtk_widget_show(dlg);
\r
91 gtk_main_iteration ();
\r
93 gtk_color_selection_get_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dlg)->colorsel), clr);
\r
95 gtk_grab_remove (dlg);
\r
96 gtk_widget_destroy (dlg);
\r
100 *c = RGB (clr[0]*255, clr[1]*255, clr[2]*255);
\r
106 static void Set2DText (GtkWidget* label)
\r
110 sprintf(s, "Line Width = %6.3f", portals.width_2d * 0.5f);
\r
112 gtk_label_set_text (GTK_LABEL (label), s);
\r
115 static void Set3DText (GtkWidget* label)
\r
119 sprintf(s, "Line Width = %6.3f", portals.width_3d * 0.5f);
\r
121 gtk_label_set_text (GTK_LABEL (label), s);
\r
124 static void Set3DTransText (GtkWidget* label)
\r
128 sprintf(s, "Polygon transparency = %d%%", (int)portals.trans_3d);
\r
130 gtk_label_set_text (GTK_LABEL (label), s);
\r
133 static void SetClipText (GtkWidget* label)
\r
137 sprintf(s, "Cubic clip range = %d", (int)portals.clip_range * 64);
\r
139 gtk_label_set_text (GTK_LABEL (label), s);
\r
142 static void OnScroll2d (GtkAdjustment *adj, gpointer data)
\r
144 portals.width_2d = adj->value;
\r
145 Set2DText (GTK_WIDGET (data));
\r
147 if(interfaces_started)
\r
148 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
151 static void OnScroll3d (GtkAdjustment *adj, gpointer data)
\r
153 portals.width_3d = adj->value;
\r
154 Set3DText (GTK_WIDGET (data));
\r
156 if(interfaces_started)
\r
157 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
160 static void OnScrollTrans (GtkAdjustment *adj, gpointer data)
\r
162 portals.trans_3d = adj->value;
\r
163 Set3DTransText (GTK_WIDGET (data));
\r
165 if(interfaces_started)
\r
166 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
169 static void OnScrollClip (GtkAdjustment *adj, gpointer data)
\r
171 portals.clip_range = adj->value;
\r
172 SetClipText (GTK_WIDGET (data));
\r
174 if(interfaces_started)
\r
175 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
178 static void OnAntiAlias2d (GtkWidget *widget, gpointer data)
\r
180 portals.aa_2d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
182 if(interfaces_started)
\r
183 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
186 static void OnConfig2d (GtkWidget *widget, gpointer data)
\r
188 portals.show_2d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
190 if(interfaces_started)
\r
191 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
194 static void OnColor2d (GtkWidget *widget, gpointer data)
\r
196 if (DoColor (&portals.color_2d) == IDOK)
\r
198 portals.FixColors();
\r
200 if(interfaces_started)
\r
201 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
205 static void OnConfig3d (GtkWidget *widget, gpointer data)
\r
207 portals.show_3d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
209 if(interfaces_started)
\r
210 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
214 static void OnAntiAlias3d (GtkWidget *widget, gpointer data)
\r
216 portals.aa_3d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
218 if(interfaces_started)
\r
219 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
222 static void OnColor3d (GtkWidget *widget, gpointer data)
\r
224 if (DoColor (&portals.color_3d) == IDOK)
\r
226 portals.FixColors();
\r
228 if(interfaces_started)
\r
229 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
233 static void OnColorFog (GtkWidget *widget, gpointer data)
\r
235 if (DoColor (&portals.color_fog) == IDOK)
\r
237 portals.FixColors();
\r
239 if(interfaces_started)
\r
240 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
244 static void OnFog (GtkWidget *widget, gpointer data)
\r
246 portals.fog = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
248 if(interfaces_started)
\r
249 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
252 static void OnSelchangeZbuffer (GtkWidget *widget, gpointer data)
\r
254 portals.zbuffer = GPOINTER_TO_INT (data);
\r
256 if(interfaces_started)
\r
257 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
260 static void OnPoly (GtkWidget *widget, gpointer data)
\r
262 portals.polygons = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
\r
264 if(interfaces_started)
\r
265 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
268 static void OnLines (GtkWidget *widget, gpointer data)
\r
270 portals.lines = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
\r
272 if(interfaces_started)
\r
273 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
276 static void OnClip (GtkWidget *widget, gpointer data)
\r
278 portals.clip = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
\r
280 if(interfaces_started)
\r
281 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
284 void DoConfigDialog ()
\r
286 GtkWidget *dlg, *hbox, *vbox, *vbox2, *button, *table, *frame;
\r
287 GtkWidget *lw3slider, *lw3label, *lw2slider, *lw2label, *zlist, *menu, *item;
\r
288 GtkWidget *aa2check, *aa3check, *depthcheck, *linescheck, *polyscheck;
\r
289 GtkWidget *transslider, *translabel, *clipslider, *cliplabel;
\r
290 GtkWidget *show2check, *show3check, *portalcheck;
\r
291 int loop = 1, ret = IDCANCEL;
\r
294 dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
\r
295 gtk_window_set_title (GTK_WINDOW (dlg), "Portal Viewer Configuration");
\r
296 gtk_signal_connect (GTK_OBJECT (dlg), "delete_event",
\r
297 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
\r
298 gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
\r
299 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
\r
300 g_object_set_data (G_OBJECT (dlg), "loop", &loop);
\r
301 g_object_set_data (G_OBJECT (dlg), "ret", &ret);
\r
303 vbox = gtk_vbox_new (FALSE, 5);
\r
304 gtk_widget_show (vbox);
\r
305 gtk_container_add (GTK_CONTAINER (dlg), vbox);
\r
306 gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
\r
308 frame = gtk_frame_new ("3D View");
\r
309 gtk_widget_show (frame);
\r
310 gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
\r
312 vbox2 = gtk_vbox_new (FALSE, 5);
\r
313 gtk_widget_show (vbox2);
\r
314 gtk_container_add (GTK_CONTAINER (frame), vbox2);
\r
315 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5);
\r
317 hbox = gtk_hbox_new (FALSE, 5);
\r
318 gtk_widget_show (hbox);
\r
319 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, TRUE, 0);
\r
321 adj = gtk_adjustment_new (portals.width_3d, 2, 40, 1, 1, 1);
\r
322 lw3slider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
\r
323 gtk_widget_show (lw3slider);
\r
324 gtk_box_pack_start (GTK_BOX (hbox), lw3slider, TRUE, TRUE, 0);
\r
325 gtk_scale_set_draw_value (GTK_SCALE (lw3slider), FALSE);
\r
327 lw3label = gtk_label_new ("");
\r
328 gtk_widget_show (lw3label);
\r
329 gtk_box_pack_start (GTK_BOX (hbox), lw3label, FALSE, TRUE, 0);
\r
330 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScroll3d), lw3label);
\r
332 table = gtk_table_new (2, 4, FALSE);
\r
333 gtk_widget_show (table);
\r
334 gtk_box_pack_start (GTK_BOX (vbox2), table, TRUE, TRUE, 0);
\r
335 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
\r
336 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
\r
338 button = gtk_button_new_with_label ("Color");
\r
339 gtk_widget_show (button);
\r
340 gtk_table_attach (GTK_TABLE (table), button, 0, 1, 0, 1,
\r
341 (GtkAttachOptions) (GTK_FILL),
\r
342 (GtkAttachOptions) (0), 0, 0);
\r
343 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColor3d), NULL);
\r
345 button = gtk_button_new_with_label ("Depth Color");
\r
346 gtk_widget_show (button);
\r
347 gtk_table_attach (GTK_TABLE (table), button, 0, 1, 1, 2,
\r
348 (GtkAttachOptions) (GTK_FILL),
\r
349 (GtkAttachOptions) (0), 0, 0);
\r
350 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColorFog), NULL);
\r
352 aa3check = gtk_check_button_new_with_label ("Anti-Alias (May not work on some video cards)");
\r
353 gtk_widget_show (aa3check);
\r
354 gtk_table_attach (GTK_TABLE (table), aa3check, 1, 4, 0, 1,
\r
355 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
356 (GtkAttachOptions) (0), 0, 0);
\r
357 gtk_signal_connect (GTK_OBJECT (aa3check), "toggled", GTK_SIGNAL_FUNC (OnAntiAlias3d), NULL);
\r
359 depthcheck = gtk_check_button_new_with_label ("Depth Cue");
\r
360 gtk_widget_show (depthcheck);
\r
361 gtk_table_attach (GTK_TABLE (table), depthcheck, 1, 2, 1, 2,
\r
362 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
363 (GtkAttachOptions) (0), 0, 0);
\r
364 gtk_signal_connect (GTK_OBJECT (depthcheck), "toggled", GTK_SIGNAL_FUNC (OnFog), NULL);
\r
366 linescheck = gtk_check_button_new_with_label ("Lines");
\r
367 gtk_widget_show (linescheck);
\r
368 gtk_table_attach (GTK_TABLE (table), linescheck, 2, 3, 1, 2,
\r
369 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
370 (GtkAttachOptions) (0), 0, 0);
\r
371 gtk_signal_connect (GTK_OBJECT (linescheck), "toggled", GTK_SIGNAL_FUNC (OnLines), NULL);
\r
373 polyscheck = gtk_check_button_new_with_label ("Polygons");
\r
374 gtk_widget_show (polyscheck);
\r
375 gtk_table_attach (GTK_TABLE (table), polyscheck, 3, 4, 1, 2,
\r
376 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
377 (GtkAttachOptions) (0), 0, 0);
\r
378 gtk_signal_connect (GTK_OBJECT (polyscheck), "toggled", GTK_SIGNAL_FUNC (OnPoly), NULL);
\r
380 zlist = gtk_option_menu_new ();
\r
381 gtk_widget_show (zlist);
\r
382 gtk_box_pack_start (GTK_BOX (vbox2), zlist, TRUE, FALSE, 0);
\r
384 menu = gtk_menu_new ();
\r
385 gtk_widget_show (menu);
\r
386 gtk_option_menu_set_menu (GTK_OPTION_MENU (zlist), menu);
\r
388 item = gtk_menu_item_new_with_label ("Z-Buffer Test and Write (recommended for solid or no polygons)");
\r
389 gtk_widget_show (item);
\r
390 gtk_signal_connect (GTK_OBJECT (item), "activate",
\r
391 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (0));
\r
392 gtk_menu_append (GTK_MENU (menu), item);
\r
394 item = gtk_menu_item_new_with_label ("Z-Buffer Test Only (recommended for transparent polygons)");
\r
395 gtk_widget_show (item);
\r
396 gtk_signal_connect (GTK_OBJECT (item), "activate",
\r
397 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (1));
\r
398 gtk_menu_append (GTK_MENU (menu), item);
\r
400 item = gtk_menu_item_new_with_label ("Z-Buffer Off");
\r
401 gtk_widget_show (item);
\r
402 gtk_signal_connect (GTK_OBJECT (item), "activate",
\r
403 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (2));
\r
404 gtk_menu_append (GTK_MENU (menu), item);
\r
406 table = gtk_table_new (2, 2, FALSE);
\r
407 gtk_widget_show (table);
\r
408 gtk_box_pack_start (GTK_BOX (vbox2), table, TRUE, TRUE, 0);
\r
409 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
\r
410 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
\r
412 adj = gtk_adjustment_new (portals.trans_3d, 0, 100, 1, 1, 1);
\r
413 transslider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
\r
414 gtk_widget_show (transslider);
\r
415 gtk_table_attach (GTK_TABLE (table), transslider, 0, 1, 0, 1,
\r
416 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
417 (GtkAttachOptions) (0), 0, 0);
\r
418 gtk_scale_set_draw_value (GTK_SCALE (transslider), FALSE);
\r
420 translabel = gtk_label_new ("");
\r
421 gtk_widget_show (translabel);
\r
422 gtk_table_attach (GTK_TABLE (table), translabel, 1, 2, 0, 1,
\r
423 (GtkAttachOptions) (GTK_FILL),
\r
424 (GtkAttachOptions) (0), 0, 0);
\r
425 gtk_misc_set_alignment (GTK_MISC (translabel), 0.0, 0.0);
\r
426 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScrollTrans), translabel);
\r
428 adj = gtk_adjustment_new (portals.clip_range, 1, 128, 1, 1, 1);
\r
429 clipslider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
\r
430 gtk_widget_show (clipslider);
\r
431 gtk_table_attach (GTK_TABLE (table), clipslider, 0, 1, 1, 2,
\r
432 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
\r
433 (GtkAttachOptions) (0), 0, 0);
\r
434 gtk_scale_set_draw_value (GTK_SCALE (clipslider), FALSE);
\r
436 cliplabel = gtk_label_new ("");
\r
437 gtk_widget_show (cliplabel);
\r
438 gtk_table_attach (GTK_TABLE (table), cliplabel, 1, 2, 1, 2,
\r
439 (GtkAttachOptions) (GTK_FILL),
\r
440 (GtkAttachOptions) (0), 0, 0);
\r
441 gtk_misc_set_alignment (GTK_MISC (cliplabel), 0.0, 0.0);
\r
442 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScrollClip), cliplabel);
\r
444 hbox = gtk_hbox_new (TRUE, 5);
\r
445 gtk_widget_show (hbox);
\r
446 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
\r
448 show3check = gtk_check_button_new_with_label ("Show");
\r
449 gtk_widget_show (show3check);
\r
450 gtk_box_pack_start (GTK_BOX (hbox), show3check, TRUE, TRUE, 0);
\r
451 gtk_signal_connect (GTK_OBJECT (show3check), "toggled", GTK_SIGNAL_FUNC (OnConfig3d), NULL);
\r
453 portalcheck = gtk_check_button_new_with_label ("Portal cubic clipper");
\r
454 gtk_widget_show (portalcheck);
\r
455 gtk_box_pack_start (GTK_BOX (hbox), portalcheck, TRUE, TRUE, 0);
\r
456 gtk_signal_connect (GTK_OBJECT (portalcheck), "toggled", GTK_SIGNAL_FUNC (OnClip), NULL);
\r
458 frame = gtk_frame_new ("2D View");
\r
459 gtk_widget_show (frame);
\r
460 gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
\r
462 vbox2 = gtk_vbox_new (FALSE, 5);
\r
463 gtk_widget_show (vbox2);
\r
464 gtk_container_add (GTK_CONTAINER (frame), vbox2);
\r
465 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5);
\r
467 hbox = gtk_hbox_new (FALSE, 5);
\r
468 gtk_widget_show (hbox);
\r
469 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
\r
471 adj = gtk_adjustment_new (portals.width_2d, 2, 40, 1, 1, 1);
\r
472 lw2slider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
\r
473 gtk_widget_show (lw2slider);
\r
474 gtk_box_pack_start (GTK_BOX (hbox), lw2slider, TRUE, TRUE, 0);
\r
475 gtk_scale_set_draw_value (GTK_SCALE (lw2slider), FALSE);
\r
477 lw2label = gtk_label_new ("");
\r
478 gtk_widget_show (lw2label);
\r
479 gtk_box_pack_start (GTK_BOX (hbox), lw2label, FALSE, TRUE, 0);
\r
480 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScroll2d), lw2label);
\r
482 hbox = gtk_hbox_new (FALSE, 5);
\r
483 gtk_widget_show (hbox);
\r
484 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
\r
486 button = gtk_button_new_with_label ("Color");
\r
487 gtk_widget_show (button);
\r
488 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
\r
489 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColor2d), NULL);
\r
490 gtk_widget_set_usize (button, 60, -2);
\r
492 aa2check = gtk_check_button_new_with_label ("Anti-Alias (May not work on some video cards)");
\r
493 gtk_widget_show (aa2check);
\r
494 gtk_box_pack_start (GTK_BOX (hbox), aa2check, TRUE, TRUE, 0);
\r
495 gtk_signal_connect (GTK_OBJECT (aa2check), "toggled", GTK_SIGNAL_FUNC (OnAntiAlias2d), NULL);
\r
497 hbox = gtk_hbox_new (FALSE, 5);
\r
498 gtk_widget_show (hbox);
\r
499 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
\r
501 show2check = gtk_check_button_new_with_label ("Show");
\r
502 gtk_widget_show (show2check);
\r
503 gtk_box_pack_start (GTK_BOX (hbox), show2check, FALSE, FALSE, 0);
\r
504 gtk_signal_connect (GTK_OBJECT (show2check), "toggled", GTK_SIGNAL_FUNC (OnConfig2d), NULL);
\r
506 hbox = gtk_hbox_new (FALSE, 5);
\r
507 gtk_widget_show (hbox);
\r
508 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
\r
510 button = gtk_button_new_with_label ("OK");
\r
511 gtk_widget_show (button);
\r
512 gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
\r
513 gtk_signal_connect (GTK_OBJECT (button), "clicked",
\r
514 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
\r
515 gtk_widget_set_usize (button, 60, -2);
\r
517 // initialize dialog
\r
518 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show2check), portals.show_2d);
\r
519 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (aa2check), portals.aa_2d);
\r
520 Set2DText (lw2label);
\r
522 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show3check), portals.show_3d);
\r
523 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (depthcheck), portals.fog);
\r
524 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (polyscheck), portals.polygons);
\r
525 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linescheck), portals.lines);
\r
526 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (aa3check), portals.aa_3d);
\r
527 gtk_option_menu_set_history (GTK_OPTION_MENU (zlist), portals.zbuffer);
\r
528 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (portalcheck), portals.clip);
\r
530 Set3DText (lw3label);
\r
531 Set3DTransText (translabel);
\r
532 SetClipText (cliplabel);
\r
534 gtk_grab_add (dlg);
\r
535 gtk_widget_show (dlg);
\r
538 gtk_main_iteration ();
\r
540 gtk_grab_remove (dlg);
\r
541 gtk_widget_destroy (dlg);
\r
544 #else // GTK_PLUGIN
\r
546 CConfigDialog::CConfigDialog(CWnd* pParent /*=NULL*/)
\r
547 : CDialog(CConfigDialog::IDD, pParent)
\r
549 //{{AFX_DATA_INIT(CConfigDialog)
\r
554 void CConfigDialog::DoDataExchange(CDataExchange* pDX)
\r
556 CDialog::DoDataExchange(pDX);
\r
557 //{{AFX_DATA_MAP(CConfigDialog)
\r
558 DDX_Control(pDX, IDC_CLIP, m_clip_ctrl);
\r
559 DDX_Control(pDX, IDC_CUBIC, m_cubic_ctrl);
\r
560 DDX_Control(pDX, IDC_SCROLL_CUBIC, m_scroll_cubic_ctrl);
\r
561 DDX_Control(pDX, IDC_LINES, m_line_ctrl);
\r
562 DDX_Control(pDX, IDC_SCROLL_3D_TRANS, m_scroll_3d_trans_ctrl);
\r
563 DDX_Control(pDX, IDC_3D_TRANS, m_3d_trans_ctrl);
\r
564 DDX_Control(pDX, IDC_POLY, m_poly_ctrl);
\r
565 DDX_Control(pDX, IDC_FOG, m_fog_ctrl);
\r
566 DDX_Control(pDX, IDC_ZBUFFER, m_z_ctrl);
\r
567 DDX_Control(pDX, IDC_SCROLL_3D_WIDTH, m_scroll_3d_width_ctrl);
\r
568 DDX_Control(pDX, IDC_ANTI_ALIAS_3D, m_aa_3d_ctrl);
\r
569 DDX_Control(pDX, IDC_3D_WIDTH, m_3d_width_ctrl);
\r
570 DDX_Control(pDX, IDC_ANTI_ALIAS_2D, m_aa_2d_ctrl);
\r
571 DDX_Control(pDX, IDC_SCROLL_2D_WIDTH, m_scroll_2d_width_ctrl);
\r
572 DDX_Control(pDX, IDC_2D_WIDTH, m_2d_width_ctrl);
\r
573 DDX_Control(pDX, IDC_CONFIG_3D, m_3d_ctrl);
\r
574 DDX_Control(pDX, IDC_CONFIG_2D, m_2d_ctrl);
\r
579 BEGIN_MESSAGE_MAP(CConfigDialog, CDialog)
\r
580 //{{AFX_MSG_MAP(CConfigDialog)
\r
582 ON_BN_CLICKED(IDC_ANTI_ALIAS_2D, OnAntiAlias2d)
\r
583 ON_BN_CLICKED(IDC_CONFIG_2D, OnConfig2d)
\r
584 ON_BN_CLICKED(IDC_CONFIG_3D, OnConfig3d)
\r
585 ON_BN_CLICKED(IDC_COLOR_2D, OnColor2d)
\r
586 ON_BN_CLICKED(IDC_ANTI_ALIAS_3D, OnAntiAlias3d)
\r
587 ON_BN_CLICKED(IDC_COLOR_3D, OnColor3d)
\r
588 ON_BN_CLICKED(IDC_COLOR_FOG, OnColorFog)
\r
589 ON_BN_CLICKED(IDC_FOG, OnFog)
\r
590 ON_CBN_SELCHANGE(IDC_ZBUFFER, OnSelchangeZbuffer)
\r
591 ON_BN_CLICKED(IDC_POLY, OnPoly)
\r
592 ON_BN_CLICKED(IDC_LINES, OnLines)
\r
593 ON_BN_CLICKED(IDC_CLIP, OnClip)
\r
597 /////////////////////////////////////////////////////////////////////////////
\r
598 // CConfigDialog message handlers
\r
600 void CConfigDialog::Set2DText()
\r
604 sprintf(s, "Line Width = %6.3f", portals.width_2d * 0.5f);
\r
606 m_2d_width_ctrl.SetWindowText(s);
\r
609 void CConfigDialog::Set3DText()
\r
613 sprintf(s, "Line Width = %6.3f", portals.width_3d * 0.5f);
\r
615 m_3d_width_ctrl.SetWindowText(s);
\r
618 void CConfigDialog::Set3DTransText()
\r
622 sprintf(s, "Polygon transparency = %d%%", (int)portals.trans_3d);
\r
624 m_3d_trans_ctrl.SetWindowText(s);
\r
627 void CConfigDialog::SetClipText()
\r
631 sprintf(s, "Cubic clip range = %d", (int)portals.clip_range * 64);
\r
633 m_cubic_ctrl.SetWindowText(s);
\r
636 qboolean CConfigDialog::OnInitDialog()
\r
638 CDialog::OnInitDialog();
\r
640 m_2d_ctrl.SetCheck(portals.show_2d);
\r
641 m_aa_2d_ctrl.SetCheck(portals.aa_2d);
\r
644 m_scroll_2d_width_ctrl.SetScrollRange(2, 40, FALSE);
\r
645 m_scroll_2d_width_ctrl.SetScrollPos((int)portals.width_2d, TRUE);
\r
647 m_3d_ctrl.SetCheck(portals.show_3d);
\r
648 m_fog_ctrl.SetCheck(portals.fog);
\r
649 m_poly_ctrl.SetCheck(portals.polygons);
\r
650 m_line_ctrl.SetCheck(portals.lines);
\r
651 m_aa_3d_ctrl.SetCheck(portals.aa_3d);
\r
652 m_z_ctrl.SetCurSel(portals.zbuffer);
\r
653 m_clip_ctrl.SetCheck(portals.clip);
\r
659 m_scroll_3d_width_ctrl.SetScrollRange(2, 40, FALSE);
\r
660 m_scroll_3d_width_ctrl.SetScrollPos((int)portals.width_3d, TRUE);
\r
661 m_scroll_3d_trans_ctrl.SetScrollRange(0, 100, FALSE);
\r
662 m_scroll_3d_trans_ctrl.SetScrollPos((int)portals.trans_3d, TRUE);
\r
663 m_scroll_cubic_ctrl.SetScrollRange(1, 128, FALSE);
\r
664 m_scroll_cubic_ctrl.SetScrollPos((int)portals.clip_range, TRUE);
\r
666 return TRUE; // return TRUE unless you set the focus to a control
\r
667 // EXCEPTION: OCX Property Pages should return FALSE
\r
670 void CConfigDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
\r
673 float scr_min, scr_max, scr_big;
\r
675 if(nSBCode == SB_THUMBPOSITION)
\r
677 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
\r
681 if(pScrollBar == &m_scroll_2d_width_ctrl)
\r
687 adj = &portals.width_2d;
\r
689 else if(pScrollBar == &m_scroll_3d_width_ctrl)
\r
695 adj = &portals.width_3d;
\r
697 else if(pScrollBar == &m_scroll_3d_trans_ctrl)
\r
703 adj = &portals.trans_3d;
\r
705 else if(pScrollBar == &m_scroll_cubic_ctrl)
\r
711 adj = &portals.clip_range;
\r
715 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
\r
723 pScrollBar->SetScrollPos((int)scr_min, TRUE);
\r
727 pScrollBar->SetScrollPos((int)scr_max, TRUE);
\r
735 pScrollBar->SetScrollPos((int)(*adj), TRUE);
\r
744 pScrollBar->SetScrollPos((int)(*adj), TRUE);
\r
753 pScrollBar->SetScrollPos((int)(*adj), TRUE);
\r
762 pScrollBar->SetScrollPos((int)(*adj), TRUE);
\r
765 case SB_THUMBTRACK:
\r
766 *adj = (float)nPos;
\r
770 pScrollBar->SetScrollPos((int)(*adj), TRUE);
\r
774 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
\r
777 if(pScrollBar == &m_scroll_2d_width_ctrl)
\r
781 if(interfaces_started)
\r
782 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
784 else if(pScrollBar == &m_scroll_3d_width_ctrl)
\r
788 if(interfaces_started)
\r
789 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
791 else if(pScrollBar == &m_scroll_3d_trans_ctrl)
\r
795 if(interfaces_started)
\r
796 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
798 else if(pScrollBar == &m_scroll_cubic_ctrl)
\r
802 if(interfaces_started)
\r
803 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
807 void CConfigDialog::OnAntiAlias2d()
\r
809 portals.aa_2d = m_aa_2d_ctrl.GetCheck();
\r
811 if(interfaces_started)
\r
812 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
815 void CConfigDialog::OnConfig2d()
\r
817 portals.show_2d = m_2d_ctrl.GetCheck();
\r
819 if(interfaces_started)
\r
820 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
823 void CConfigDialog::OnColor2d()
\r
825 CColorDialog dlg(portals.color_2d, CC_ANYCOLOR, this);
\r
827 if(dlg.DoModal() == IDOK)
\r
829 portals.color_2d = dlg.GetColor();
\r
831 portals.FixColors();
\r
833 if(interfaces_started)
\r
834 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
\r
838 void CConfigDialog::OnConfig3d()
\r
840 portals.show_3d = m_3d_ctrl.GetCheck();
\r
842 if(interfaces_started)
\r
843 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
847 void CConfigDialog::OnAntiAlias3d()
\r
849 portals.aa_3d = m_aa_3d_ctrl.GetCheck();
\r
851 if(interfaces_started)
\r
852 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
855 void CConfigDialog::OnColor3d()
\r
857 CColorDialog dlg(portals.color_3d, CC_ANYCOLOR, this);
\r
859 if(dlg.DoModal() == IDOK)
\r
861 portals.color_3d = dlg.GetColor();
\r
863 portals.FixColors();
\r
865 if(interfaces_started)
\r
866 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
870 void CConfigDialog::OnColorFog()
\r
872 CColorDialog dlg(portals.color_fog, CC_ANYCOLOR, this);
\r
874 if(dlg.DoModal() == IDOK)
\r
876 portals.color_fog = dlg.GetColor();
\r
878 portals.FixColors();
\r
880 if(interfaces_started)
\r
881 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
885 void CConfigDialog::OnFog()
\r
887 portals.fog = m_fog_ctrl.GetCheck();
\r
889 if(interfaces_started)
\r
890 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
893 void CConfigDialog::OnSelchangeZbuffer()
\r
895 portals.zbuffer = m_z_ctrl.GetCurSel();
\r
897 if(interfaces_started)
\r
898 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
901 void CConfigDialog::OnPoly()
\r
903 portals.polygons = m_poly_ctrl.GetCheck();
\r
905 if(interfaces_started)
\r
906 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
909 void CConfigDialog::OnLines()
\r
911 portals.lines = m_line_ctrl.GetCheck();
\r
913 if(interfaces_started)
\r
914 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
917 void CConfigDialog::OnClip()
\r
919 portals.clip = m_clip_ctrl.GetCheck();
\r
921 if(interfaces_started)
\r
922 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
\r
925 #endif // GTK_PLUGIN
\r