2 BobToolz plugin for GtkRadiant
3 Copyright (C) 2001 Gordon Biggans
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include "../StdAfx.h"
21 #include "dialogs-gtk.h"
22 #include "../funchandlers.h"
25 #include <glib/gi18n.h>
27 /*--------------------------------
29 ---------------------------------*/
32 GtkWidget *cbTexChange;
33 GtkWidget *editTexOld, *editTexNew;
35 GtkWidget *cbScaleHor, *cbScaleVert;
36 GtkWidget *editScaleHor, *editScaleVert;
38 GtkWidget *cbShiftHor, *cbShiftVert;
39 GtkWidget *editShiftHor, *editShiftVert;
41 GtkWidget *cbRotation;
42 GtkWidget *editRotation;
45 dlg_texReset_t dlgTexReset;
47 void Update_TextureReseter();
49 static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)
51 Update_TextureReseter();
54 void Update_TextureReseter()
58 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
59 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);
60 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);
62 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
63 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);
65 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
66 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);
68 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
69 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);
71 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
72 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);
74 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
75 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);
78 static void dialog_button_callback (GtkWidget *widget, gpointer data)
83 parent = gtk_widget_get_toplevel (widget);
84 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
85 ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
91 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
95 gtk_widget_hide (widget);
96 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
102 static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)
104 TwinWidget* tw = (TwinWidget*)data;
106 GtkEntry* entry = GTK_ENTRY( tw->one );
107 GtkCombo* combo = GTK_COMBO( tw->two );
109 const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));
110 gtk_entry_set_text( entry, tex);
113 /*--------------------------------
114 Data validation Routines
115 ---------------------------------*/
117 bool ValidateTextFloat(const char* pData, char* error_title, float* value)
121 float testNum = (float)atof(pData);
123 if((testNum == 0.0f) && strcmp(pData, "0"))
125 DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
135 DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
139 bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)
141 char error_buffer[256];
142 sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);
146 float testNum = (float)atof(pData);
148 if((testNum < min) || (testNum > max))
150 DoMessageBox(error_buffer, error_title, MB_OK);
160 DoMessageBox(error_buffer, error_title, MB_OK);
164 bool ValidateTextIntRange(const char* pData, int min, int max, const char* error_title, int* value)
166 char error_buffer[256];
167 sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);
171 int testNum = atoi(pData);
173 if((testNum < min) || (testNum > max))
175 DoMessageBox(error_buffer, error_title, MB_OK);
185 DoMessageBox(error_buffer, error_title, MB_OK);
189 bool ValidateTextInt(const char* pData, char* error_title, int* value)
193 int testNum = atoi(pData);
195 if((testNum == 0) && strcmp(pData, "0"))
197 DoMessageBox("Please Enter An Integer", error_title, MB_OK);
207 DoMessageBox("Please Enter An Integer", error_title, MB_OK);
211 /*--------------------------------
213 ---------------------------------*/
217 Major clean up of variable names etc required, excluding Mars's ones,
218 which are nicely done :)
222 int DoMessageBox (const char* lpText, const char* lpCaption, guint32 uType)
224 GtkWidget *window, *w, *vbox, *hbox;
225 int mode = (uType & MB_TYPEMASK), ret, loop = 1;
227 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
228 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
229 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
230 gtk_signal_connect (GTK_OBJECT (window), "destroy",
231 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
232 gtk_window_set_title (GTK_WINDOW (window), lpCaption);
233 gtk_container_border_width (GTK_CONTAINER (window), 10);
234 g_object_set_data (G_OBJECT (window), "loop", &loop);
235 g_object_set_data (G_OBJECT (window), "ret", &ret);
236 gtk_widget_realize (window);
238 vbox = gtk_vbox_new (FALSE, 10);
239 gtk_container_add (GTK_CONTAINER (window), vbox);
240 gtk_widget_show (vbox);
242 w = gtk_label_new (lpText);
243 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
244 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
247 w = gtk_hseparator_new ();
248 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
251 hbox = gtk_hbox_new (FALSE, 10);
252 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
253 gtk_widget_show (hbox);
257 w = gtk_button_new_with_label ("Ok");
258 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
259 gtk_signal_connect (GTK_OBJECT (w), "clicked",
260 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
261 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
262 gtk_widget_grab_default (w);
266 else if (mode == MB_OKCANCEL)
268 w = gtk_button_new_with_label ("Ok");
269 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
270 gtk_signal_connect (GTK_OBJECT (w), "clicked",
271 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
272 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
273 gtk_widget_grab_default (w);
276 w = gtk_button_new_with_label ("Cancel");
277 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
278 gtk_signal_connect (GTK_OBJECT (w), "clicked",
279 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
283 else if (mode == MB_YESNOCANCEL)
285 w = gtk_button_new_with_label ("Yes");
286 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
287 gtk_signal_connect (GTK_OBJECT (w), "clicked",
288 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
289 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
290 gtk_widget_grab_default (w);
293 w = gtk_button_new_with_label ("No");
294 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
295 gtk_signal_connect (GTK_OBJECT (w), "clicked",
296 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
299 w = gtk_button_new_with_label ("Cancel");
300 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
301 gtk_signal_connect (GTK_OBJECT (w), "clicked",
302 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
306 else /* if (mode == MB_YESNO) */
308 w = gtk_button_new_with_label ("Yes");
309 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
310 gtk_signal_connect (GTK_OBJECT (w), "clicked",
311 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
312 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
313 gtk_widget_grab_default (w);
316 w = gtk_button_new_with_label ("No");
317 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
318 gtk_signal_connect (GTK_OBJECT (w), "clicked",
319 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
324 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
325 gtk_widget_show (window);
326 gtk_grab_add (window);
329 gtk_main_iteration ();
331 gtk_grab_remove (window);
332 gtk_widget_destroy (window);
337 int DoIntersectBox (IntersectRS* rs)
339 GtkWidget *window, *w, *vbox, *hbox;
340 GtkWidget *radio1, *radio2;
341 GtkWidget *check1, *check2;
344 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
346 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
347 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
349 gtk_window_set_title (GTK_WINDOW (window), "Intersect");
350 gtk_container_border_width (GTK_CONTAINER (window), 10);
352 g_object_set_data (G_OBJECT (window), "loop", &loop);
353 g_object_set_data (G_OBJECT (window), "ret", &ret);
355 gtk_widget_realize (window);
359 vbox = gtk_vbox_new (FALSE, 10);
360 gtk_container_add (GTK_CONTAINER (window), vbox);
361 gtk_widget_show (vbox);
365 radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");
366 gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);
367 gtk_widget_show (radio1);
369 radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");
370 gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);
371 gtk_widget_show (radio2);
373 w = gtk_hseparator_new ();
374 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
377 check1 = gtk_check_button_new_with_label("Include Detail Brushes");
378 gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);
379 gtk_widget_show (check1);
381 check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");
382 gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);
383 gtk_widget_show (check2);
385 hbox = gtk_hbox_new (FALSE, 10);
386 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
387 gtk_widget_show (hbox);
389 // ---- hbox ---- ok/cancel buttons
391 w = gtk_button_new_with_label ("Ok");
392 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
393 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
395 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
396 gtk_widget_grab_default (w);
399 w = gtk_button_new_with_label ("Cancel");
400 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
401 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
409 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
410 gtk_widget_show (window);
411 gtk_grab_add (window);
414 gtk_main_iteration ();
416 if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))
417 rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;
418 else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))
419 rs->nBrushOptions = BRUSH_OPT_SELECTED;
421 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
422 rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
424 gtk_grab_remove (window);
425 gtk_widget_destroy (window);
430 int DoPolygonBox (PolygonRS* rs)
432 GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;
434 GtkWidget *check1, *check2, *check3;
435 GtkWidget *text1, *text2;
439 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
441 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
442 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
444 gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");
445 gtk_container_border_width (GTK_CONTAINER (window), 10);
447 g_object_set_data (G_OBJECT (window), "loop", &loop);
448 g_object_set_data (G_OBJECT (window), "ret", &ret);
450 gtk_widget_realize (window);
454 vbox = gtk_vbox_new (FALSE, 10);
455 gtk_container_add (GTK_CONTAINER (window), vbox);
456 gtk_widget_show (vbox);
460 hbox = gtk_hbox_new (FALSE, 10);
461 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
462 gtk_widget_show (hbox);
467 vbox2 = gtk_vbox_new (FALSE, 10);
468 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
469 gtk_widget_show (vbox2);
473 hbox2 = gtk_hbox_new (FALSE, 10);
474 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
475 gtk_widget_show (hbox2);
479 text1 = gtk_entry_new_with_max_length(256);
480 gtk_entry_set_text((GtkEntry*)text1, "3");
481 gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);
482 gtk_widget_show (text1);
484 w = gtk_label_new ("Number Of Sides");
485 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
486 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
491 hbox2 = gtk_hbox_new (FALSE, 10);
492 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
493 gtk_widget_show (hbox2);
497 text2 = gtk_entry_new_with_max_length(256);
498 gtk_entry_set_text((GtkEntry*)text2, "8");
499 gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);
500 gtk_widget_show (text2);
502 w = gtk_label_new ("Border Width");
503 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
504 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
513 vbox2 = gtk_vbox_new (FALSE, 10);
514 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
515 gtk_widget_show (vbox2);
519 check1 = gtk_check_button_new_with_label("Use Border");
520 gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);
521 gtk_widget_show (check1);
524 check2 = gtk_check_button_new_with_label("Inverse Polygon");
525 gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);
526 gtk_widget_show (check2);
529 check3 = gtk_check_button_new_with_label("Align Top Edge");
530 gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);
531 gtk_widget_show (check3);
537 hbox = gtk_hbox_new (FALSE, 10);
538 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
539 gtk_widget_show (hbox);
543 w = gtk_button_new_with_label ("Ok");
544 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
545 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
547 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
548 gtk_widget_grab_default (w);
551 w = gtk_button_new_with_label ("Cancel");
552 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
553 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
561 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
562 gtk_widget_show (window);
563 gtk_grab_add (window);
565 bool dialogError = TRUE;
570 gtk_main_iteration ();
576 rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
577 rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
578 rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;
580 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))
585 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))
591 gtk_grab_remove (window);
592 gtk_widget_destroy (window);
598 // for stair builder stuck as close as i could to the MFC version
599 // obviously feel free to change it at will :)
600 int DoBuildStairsBox(BuildStairsRS* rs)
602 // i made widgets for just about everything ... i think that's what i need to do dunno tho
603 GtkWidget *window, *w, *vbox, *hbox;
604 GtkWidget *textStairHeight, *textRiserTex, *textMainTex;
605 GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value
606 GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;
607 GtkWidget *checkUseDetail;
608 GSList *radioDirection, *radioStyle;
613 char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";
615 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
617 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
618 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
620 gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );
622 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
624 g_object_set_data (G_OBJECT (window), "loop", &loop);
625 g_object_set_data (G_OBJECT (window), "ret", &ret);
627 gtk_widget_realize (window);
630 vbox = gtk_vbox_new( FALSE, 10 );
631 gtk_container_add( GTK_CONTAINER( window ), vbox );
632 gtk_widget_show( vbox );
634 hbox = gtk_hbox_new( FALSE, 10 );
635 gtk_container_add( GTK_CONTAINER( vbox ), hbox );
636 gtk_widget_show( hbox );
638 // dunno if you want this text or not ...
639 w = gtk_label_new( text );
640 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...
641 gtk_widget_show( w );
643 w = gtk_hseparator_new();
644 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
645 gtk_widget_show( w );
647 // ------------------------- // indenting == good way of keeping track of lines :)
650 hbox = gtk_hbox_new( FALSE, 10 );
651 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
652 gtk_widget_show( hbox );
654 textStairHeight = gtk_entry_new_with_max_length( 256 );
655 gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );
656 gtk_widget_show( textStairHeight );
658 w = gtk_label_new( "Stair Height" );
659 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
660 gtk_widget_show( w );
662 // ------------------------- //
664 hbox = gtk_hbox_new( FALSE, 10 );
665 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
666 gtk_widget_show( hbox );
668 w = gtk_label_new( "Direction:" );
669 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
670 gtk_widget_show( w );
672 // -------------------------- //
674 hbox = gtk_hbox_new( FALSE, 10 );
675 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
676 gtk_widget_show( hbox );
678 // radio buttons confuse me ...
679 // but this _looks_ right
681 // djbob: actually it looks very nice :), slightly better than the way i did it
682 // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh
684 radioNorth = gtk_radio_button_new_with_label( NULL, "North" );
685 gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );
686 gtk_widget_show( radioNorth );
688 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );
690 radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );
691 gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );
692 gtk_widget_show( radioSouth );
694 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );
696 radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );
697 gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );
698 gtk_widget_show( radioEast );
700 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );
702 radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );
703 gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );
704 gtk_widget_show( radioWest );
706 // --------------------------- //
708 hbox = gtk_hbox_new( FALSE, 10 );
709 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
710 gtk_widget_show( hbox );
712 w = gtk_label_new( "Style:" );
713 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
714 gtk_widget_show( w );
716 // --------------------------- //
718 hbox = gtk_hbox_new( FALSE, 10 );
719 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
720 gtk_widget_show( hbox );
722 radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );
723 gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );
724 gtk_widget_show( radioOldStyle );
726 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );
728 radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );
729 gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );
730 gtk_widget_show( radioBobStyle );
732 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );
734 radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );
735 gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );
736 gtk_widget_show( radioCornerStyle );
738 // err, the q3r has an if or something so you need bob style checked before this
739 // is "ungreyed out" but you'll need to do that, as i suck :)
741 // djbob: er.... yeah um, im not at all sure how i'm gonna sort this
742 // djbob: think we need some button callback functions or smuffin
743 // FIXME: actually get around to doing what i suggested!!!!
745 checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );
746 gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );
747 gtk_widget_show( checkUseDetail );
749 // --------------------------- //
751 hbox = gtk_hbox_new( FALSE, 10 );
752 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
753 gtk_widget_show( hbox );
755 textMainTex = gtk_entry_new_with_max_length( 512 );
756 gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);
757 gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );
758 gtk_widget_show( textMainTex );
760 w = gtk_label_new( "Main Texture" );
761 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
762 gtk_widget_show( w );
764 // -------------------------- //
766 hbox = gtk_hbox_new( FALSE, 10 );
767 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
768 gtk_widget_show( hbox );
770 textRiserTex = gtk_entry_new_with_max_length( 512 );
771 gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );
772 gtk_widget_show( textRiserTex );
774 w = gtk_label_new( "Riser Texture" );
775 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
776 gtk_widget_show( w );
778 // -------------------------- //
779 w = gtk_hseparator_new();
780 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
781 gtk_widget_show( w );
783 hbox = gtk_hbox_new( FALSE, 10 );
784 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
785 gtk_widget_show( hbox );
787 w = gtk_button_new_with_label( "OK" );
788 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
789 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
790 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
791 gtk_widget_grab_default( w );
792 gtk_widget_show( w );
794 w = gtk_button_new_with_label( "Cancel" );
795 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
796 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
797 gtk_widget_show( w );
801 // +djbob: need our "little" modal loop mars :P
802 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
803 gtk_widget_show (window);
804 gtk_grab_add (window);
806 bool dialogError = TRUE;
811 gtk_main_iteration ();
817 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;
819 strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));
820 strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));
822 if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))
823 rs->direction = MOVE_NORTH;
824 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))
825 rs->direction = MOVE_SOUTH;
826 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))
827 rs->direction = MOVE_EAST;
828 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))
829 rs->direction = MOVE_WEST;
831 if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))
834 if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))
835 rs->style = STYLE_ORIGINAL;
836 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))
837 rs->style = STYLE_BOB;
838 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))
839 rs->style = STYLE_CORNER;
843 gtk_grab_remove (window);
844 gtk_widget_destroy (window);
849 // there we go, all done ... on my end at least, not bad for a night's work
852 int DoDoorsBox(DoorRS* rs)
854 GtkWidget *window, *hbox, *vbox, *w;
855 GtkWidget *textFrontBackTex, *textTrimTex;
856 GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;
857 GtkWidget *comboMain, *comboTrim;
858 GtkWidget *buttonSetMain, *buttonSetTrim;
859 GtkWidget *radioNS, *radioEW;
860 GSList *radioOrientation;
866 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
868 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
869 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
871 gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );
873 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
875 g_object_set_data( G_OBJECT( window ), "loop", &loop );
876 g_object_set_data( G_OBJECT( window ), "ret", &ret );
878 gtk_widget_realize (window);
881 GList *listMainTextures = NULL;
882 GList *listTrimTextures = NULL;
883 LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);
884 LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);
886 vbox = gtk_vbox_new( FALSE, 10 );
887 gtk_container_add( GTK_CONTAINER( window ), vbox );
888 gtk_widget_show( vbox );
890 // -------------------------- //
892 hbox = gtk_hbox_new( FALSE, 10 );
893 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
894 gtk_widget_show( hbox );
896 textFrontBackTex = gtk_entry_new_with_max_length( 512 );
897 gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);
898 gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );
899 gtk_widget_show( textFrontBackTex );
901 w = gtk_label_new( "Door Front/Back Texture" );
902 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
903 gtk_widget_show( w );
905 // ------------------------ //
907 hbox = gtk_hbox_new( FALSE, 10 );
908 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
909 gtk_widget_show( hbox );
911 textTrimTex = gtk_entry_new_with_max_length( 512 );
912 gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );
913 gtk_widget_show( textTrimTex );
915 w = gtk_label_new( "Door Trim Texture" );
916 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
917 gtk_widget_show( w );
919 // ----------------------- //
921 hbox = gtk_hbox_new( FALSE, 10 );
922 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
923 gtk_widget_show( hbox );
925 // sp: horizontally ????
926 // djbob: yes mars, u can spell :]
927 checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );
928 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);
929 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );
930 gtk_widget_show( checkScaleMainH );
932 checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );
933 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);
934 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );
935 gtk_widget_show( checkScaleTrimH );
937 // ---------------------- //
939 hbox = gtk_hbox_new( FALSE, 10 );
940 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
941 gtk_widget_show( hbox );
943 checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );
944 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);
945 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );
946 gtk_widget_show( checkScaleMainV );
948 checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );
949 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );
950 gtk_widget_show( checkScaleTrimV );
952 // --------------------- //
954 hbox = gtk_hbox_new( FALSE, 10 );
955 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
956 gtk_widget_show( hbox );
958 // djbob: lists added
960 comboMain = gtk_combo_new();
961 gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );
962 gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );
963 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
964 gtk_widget_show( comboMain );
966 tw1.one = textFrontBackTex;
969 buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );
970 gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );
971 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );
972 gtk_widget_show( buttonSetMain );
974 // ------------------- //
976 hbox = gtk_hbox_new( FALSE, 10 );
977 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
978 gtk_widget_show( hbox );
980 comboTrim = gtk_combo_new();
981 gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );
982 gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );
983 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
984 gtk_widget_show( comboTrim );
986 tw2.one = textTrimTex;
989 buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );
990 gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );
991 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );
992 gtk_widget_show( buttonSetTrim );
994 // ------------------ //
996 hbox = gtk_hbox_new( FALSE, 10 );
997 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
998 gtk_widget_show( hbox );
1000 w = gtk_label_new( "Orientation" );
1001 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
1002 gtk_widget_show( w );
1004 // argh more radio buttons!
1005 radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );
1006 gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );
1007 gtk_widget_show( radioNS );
1009 radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );
1011 radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );
1012 gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );
1013 gtk_widget_show( radioEW );
1015 // ----------------- //
1017 w = gtk_hseparator_new();
1018 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1019 gtk_widget_show( w );
1021 // ----------------- //
1023 hbox = gtk_hbox_new( FALSE, 10 );
1024 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1025 gtk_widget_show( hbox );
1027 w = gtk_button_new_with_label( "OK" );
1028 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1029 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
1030 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1031 gtk_widget_grab_default( w );
1032 gtk_widget_show( w );
1034 w = gtk_button_new_with_label( "Cancel" );
1035 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1036 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
1037 gtk_widget_show( w );
1040 // ----------------- //
1043 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1044 gtk_widget_show (window);
1045 gtk_grab_add (window);
1048 gtk_main_iteration ();
1050 strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));
1051 strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));
1053 rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;
1054 rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;
1055 rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;
1056 rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;
1058 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))
1059 rs->nOrientation = DIRECTION_NS;
1060 else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))
1061 rs->nOrientation = DIRECTION_EW;
1063 gtk_grab_remove (window);
1064 gtk_widget_destroy (window);
1070 int DoPathPlotterBox(PathPlotterRS* rs)
1072 GtkWidget *window, *w, *vbox, *hbox;
1074 GtkWidget *text1, *text2, *text3;
1075 GtkWidget *check1, *check2;
1079 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1081 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1082 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1084 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1085 gtk_container_border_width (GTK_CONTAINER (window), 10);
1087 g_object_set_data (G_OBJECT (window), "loop", &loop);
1088 g_object_set_data (G_OBJECT (window), "ret", &ret);
1090 gtk_widget_realize (window);
1094 vbox = gtk_vbox_new (FALSE, 10);
1095 gtk_container_add (GTK_CONTAINER (window), vbox);
1096 gtk_widget_show (vbox);
1100 hbox = gtk_hbox_new (FALSE, 10);
1101 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1102 gtk_widget_show (hbox);
1106 text1 = gtk_entry_new_with_max_length(256);
1107 gtk_entry_set_text((GtkEntry*)text1, "25");
1108 gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);
1109 gtk_widget_show (text1);
1111 w = gtk_label_new ("Number Of Points");
1112 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1113 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1114 gtk_widget_show (w);
1118 hbox = gtk_hbox_new (FALSE, 10);
1119 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1120 gtk_widget_show (hbox);
1124 text2 = gtk_entry_new_with_max_length(256);
1125 gtk_entry_set_text((GtkEntry*)text2, "3");
1126 gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);
1127 gtk_widget_show (text2);
1129 w = gtk_label_new ("Multipler");
1130 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1131 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1132 gtk_widget_show (w);
1136 w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");
1137 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
1138 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1139 gtk_widget_show (w);
1141 hbox = gtk_hbox_new (FALSE, 10);
1142 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1143 gtk_widget_show (hbox);
1147 text3 = gtk_entry_new_with_max_length(256);
1148 gtk_entry_set_text((GtkEntry*)text3, "-800");
1149 gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);
1150 gtk_widget_show (text3);
1152 w = gtk_label_new ("Gravity");
1153 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1154 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1155 gtk_widget_show (w);
1159 w = gtk_hseparator_new();
1160 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1161 gtk_widget_show( w );
1163 check1 = gtk_check_button_new_with_label( "No Dynamic Update" );
1164 gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );
1165 gtk_widget_show( check1 );
1167 check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );
1168 gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );
1169 gtk_widget_show( check2 );
1174 // ----------------- //
1176 w = gtk_hseparator_new();
1177 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1178 gtk_widget_show( w );
1180 // ----------------- //
1182 hbox = gtk_hbox_new( FALSE, 10 );
1183 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1184 gtk_widget_show( hbox );
1186 w = gtk_button_new_with_label( "Enable" );
1187 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1188 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDYES ) );
1189 gtk_widget_show( w );
1191 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1192 gtk_widget_grab_default( w );
1194 w = gtk_button_new_with_label( "Disable" );
1195 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1196 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDNO ) );
1197 gtk_widget_show( w );
1199 w = gtk_button_new_with_label( "Cancel" );
1200 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1201 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
1202 gtk_widget_show( w );
1206 // ----------------- //
1208 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1209 gtk_widget_show (window);
1210 gtk_grab_add (window);
1212 bool dialogError = TRUE;
1217 gtk_main_iteration ();
1219 dialogError = FALSE;
1223 if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))
1226 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))
1229 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))
1232 rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;
1233 rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;
1237 gtk_grab_remove (window);
1238 gtk_widget_destroy (window);
1243 int DoCTFColourChangeBox ()
1245 GtkWidget *window, *w, *vbox, *hbox;
1248 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1250 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1251 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1253 gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");
1254 gtk_container_border_width (GTK_CONTAINER (window), 10);
1256 g_object_set_data (G_OBJECT (window), "loop", &loop);
1257 g_object_set_data (G_OBJECT (window), "ret", &ret);
1259 gtk_widget_realize (window);
1263 vbox = gtk_vbox_new (FALSE, 10);
1264 gtk_container_add (GTK_CONTAINER (window), vbox);
1265 gtk_widget_show (vbox);
1269 hbox = gtk_hbox_new( FALSE, 10 );
1270 gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
1271 gtk_widget_show( hbox );
1273 // ---- hbox ---- ok/cancel buttons
1275 w = gtk_button_new_with_label ("Red->Blue");
1276 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1277 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1279 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1280 gtk_widget_grab_default (w);
1281 gtk_widget_show (w);
1283 w = gtk_button_new_with_label ("Blue->Red");
1284 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1285 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
1286 gtk_widget_show (w);
1288 w = gtk_button_new_with_label ("Cancel");
1289 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1290 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1291 gtk_widget_show (w);
1298 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1299 gtk_widget_show (window);
1300 gtk_grab_add (window);
1303 gtk_main_iteration ();
1305 gtk_grab_remove (window);
1306 gtk_widget_destroy (window);
1311 int DoResetTextureBox (ResetTextureRS* rs)
1315 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1319 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1321 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1322 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1324 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1325 gtk_container_border_width (GTK_CONTAINER (window), 10);
1327 g_object_set_data (G_OBJECT (window), "loop", &loop);
1328 g_object_set_data (G_OBJECT (window), "ret", &ret);
1330 gtk_widget_realize (window);
1332 vbox = gtk_vbox_new (FALSE, 10);
1333 gtk_container_add (GTK_CONTAINER (window), vbox);
1334 gtk_widget_show (vbox);
1338 hbox = gtk_hbox_new (FALSE, 10);
1339 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1340 gtk_widget_show (hbox);
1344 texSelected = "Currently Selected Face: ";
1345 if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {
1346 texSelected += GetCurrentTexture();
1349 w = gtk_label_new (texSelected);
1350 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1351 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1352 gtk_widget_show (w);
1356 frame = gtk_frame_new (_("Reset Texture Names"));
1357 gtk_widget_show (frame);
1358 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1360 table = gtk_table_new (2, 3, TRUE);
1361 gtk_widget_show (table);
1362 gtk_container_add (GTK_CONTAINER (frame), table);
1363 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1364 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1365 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1369 dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");
1370 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1371 gtk_widget_show (dlgTexReset.cbTexChange);
1372 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,
1373 (GtkAttachOptions) (GTK_FILL),
1374 (GtkAttachOptions) (0), 0, 0);
1376 w = gtk_label_new ("Old Name: ");
1377 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1378 (GtkAttachOptions) (GTK_FILL),
1379 (GtkAttachOptions) (0), 0, 0);
1380 gtk_widget_show (w);
1382 dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);
1383 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);
1384 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,
1385 (GtkAttachOptions) (GTK_FILL),
1386 (GtkAttachOptions) (0), 0, 0);
1387 gtk_widget_show (dlgTexReset.editTexOld);
1389 w = gtk_label_new ("New Name: ");
1390 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1391 (GtkAttachOptions) (GTK_FILL),
1392 (GtkAttachOptions) (0), 0, 0);
1393 gtk_widget_show (w);
1395 dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);
1396 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);
1397 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,
1398 (GtkAttachOptions) (GTK_FILL),
1399 (GtkAttachOptions) (0), 0, 0);
1400 gtk_widget_show (dlgTexReset.editTexNew);
1404 frame = gtk_frame_new (_("Reset Scales"));
1405 gtk_widget_show (frame);
1406 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1408 table = gtk_table_new (2, 3, TRUE);
1409 gtk_widget_show (table);
1410 gtk_container_add (GTK_CONTAINER (frame), table);
1411 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1412 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1413 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1417 dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");
1418 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1419 gtk_widget_show (dlgTexReset.cbScaleHor);
1420 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,
1421 (GtkAttachOptions) (GTK_FILL),
1422 (GtkAttachOptions) (0), 0, 0);
1424 w = gtk_label_new ("New Horizontal Scale: ");
1425 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1426 (GtkAttachOptions) (GTK_FILL),
1427 (GtkAttachOptions) (0), 0, 0);
1428 gtk_widget_show (w);
1430 dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);
1431 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");
1432 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,
1433 (GtkAttachOptions) (GTK_FILL),
1434 (GtkAttachOptions) (0), 0, 0);
1435 gtk_widget_show (dlgTexReset.editScaleHor);
1438 dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");
1439 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1440 gtk_widget_show (dlgTexReset.cbScaleVert);
1441 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,
1442 (GtkAttachOptions) (GTK_FILL),
1443 (GtkAttachOptions) (0), 0, 0);
1445 w = gtk_label_new ("New Vertical Scale: ");
1446 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1447 (GtkAttachOptions) (GTK_FILL),
1448 (GtkAttachOptions) (0), 0, 0);
1449 gtk_widget_show (w);
1451 dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);
1452 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");
1453 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,
1454 (GtkAttachOptions) (GTK_FILL),
1455 (GtkAttachOptions) (0), 0, 0);
1456 gtk_widget_show (dlgTexReset.editScaleVert);
1460 frame = gtk_frame_new (_("Reset Shift"));
1461 gtk_widget_show (frame);
1462 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1464 table = gtk_table_new (2, 3, TRUE);
1465 gtk_widget_show (table);
1466 gtk_container_add (GTK_CONTAINER (frame), table);
1467 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1468 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1469 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1473 dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");
1474 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1475 gtk_widget_show (dlgTexReset.cbShiftHor);
1476 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,
1477 (GtkAttachOptions) (GTK_FILL),
1478 (GtkAttachOptions) (0), 0, 0);
1480 w = gtk_label_new ("New Horizontal Shift: ");
1481 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1482 (GtkAttachOptions) (GTK_FILL),
1483 (GtkAttachOptions) (0), 0, 0);
1484 gtk_widget_show (w);
1486 dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);
1487 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");
1488 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,
1489 (GtkAttachOptions) (GTK_FILL),
1490 (GtkAttachOptions) (0), 0, 0);
1491 gtk_widget_show (dlgTexReset.editShiftHor);
1494 dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");
1495 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1496 gtk_widget_show (dlgTexReset.cbShiftVert);
1497 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,
1498 (GtkAttachOptions) (GTK_FILL),
1499 (GtkAttachOptions) (0), 0, 0);
1501 w = gtk_label_new ("New Vertical Shift: ");
1502 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1503 (GtkAttachOptions) (GTK_FILL),
1504 (GtkAttachOptions) (0), 0, 0);
1505 gtk_widget_show (w);
1507 dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);
1508 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");
1509 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,
1510 (GtkAttachOptions) (GTK_FILL),
1511 (GtkAttachOptions) (0), 0, 0);
1512 gtk_widget_show (dlgTexReset.editShiftVert);
1516 frame = gtk_frame_new (_("Reset Rotation"));
1517 gtk_widget_show (frame);
1518 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1520 table = gtk_table_new (1, 3, TRUE);
1521 gtk_widget_show (table);
1522 gtk_container_add (GTK_CONTAINER (frame), table);
1523 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1524 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1525 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1529 dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");
1530 gtk_widget_show (dlgTexReset.cbRotation);
1531 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,
1532 (GtkAttachOptions) (GTK_FILL),
1533 (GtkAttachOptions) (0), 0, 0);
1535 w = gtk_label_new ("New Rotation Value: ");
1536 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1537 (GtkAttachOptions) (GTK_FILL),
1538 (GtkAttachOptions) (0), 0, 0);
1539 gtk_widget_show (w);
1541 dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);
1542 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");
1543 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,
1544 (GtkAttachOptions) (GTK_FILL),
1545 (GtkAttachOptions) (0), 0, 0);
1546 gtk_widget_show (dlgTexReset.editRotation);
1550 hbox = gtk_hbox_new (FALSE, 10);
1551 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1552 gtk_widget_show (hbox);
1556 w = gtk_button_new_with_label ("Use Selected Brushes");
1557 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1558 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1560 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1561 gtk_widget_grab_default (w);
1562 gtk_widget_show (w);
1564 w = gtk_button_new_with_label ("Use All Brushes");
1565 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1566 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
1567 gtk_widget_show (w);
1569 w = gtk_button_new_with_label ("Cancel");
1570 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1571 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1572 gtk_widget_show (w);
1579 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1580 gtk_widget_show (window);
1581 gtk_grab_add (window);
1583 Update_TextureReseter();
1585 bool dialogError = TRUE;
1590 gtk_main_iteration ();
1592 dialogError = FALSE;
1596 rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
1597 if(rs->bResetRotation)
1598 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))
1601 rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
1602 if(rs->bResetScale[0])
1603 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))
1606 rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
1607 if(rs->bResetScale[1])
1608 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))
1611 rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
1612 if(rs->bResetShift[0])
1613 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))
1616 rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
1617 if(rs->bResetShift[1])
1618 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))
1621 rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
1622 if(rs->bResetTextureName)
1624 strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));
1625 strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));
1630 gtk_grab_remove (window);
1631 gtk_widget_destroy (window);
1636 int DoTrainThingBox (TrainThingRS* rs)
1640 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1642 GtkWidget *radiusX, *radiusY;
1643 GtkWidget *angleStart, *angleEnd;
1644 GtkWidget *heightStart, *heightEnd;
1645 GtkWidget *numPoints;
1649 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1651 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1652 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1654 gtk_window_set_title (GTK_WINDOW (window), "Train Thing");
1655 gtk_container_border_width (GTK_CONTAINER (window), 10);
1657 gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
1658 gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
1660 gtk_widget_realize (window);
1662 vbox = gtk_vbox_new (FALSE, 10);
1663 gtk_container_add (GTK_CONTAINER (window), vbox);
1664 gtk_widget_show (vbox);
1668 hbox = gtk_hbox_new (FALSE, 10);
1669 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1670 gtk_widget_show (hbox);
1674 frame = gtk_frame_new (_("Radii"));
1675 gtk_widget_show (frame);
1676 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1678 table = gtk_table_new (2, 3, TRUE);
1679 gtk_widget_show (table);
1680 gtk_container_add (GTK_CONTAINER (frame), table);
1681 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1682 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1683 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1687 w = gtk_label_new ("X: ");
1688 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1689 (GtkAttachOptions) (GTK_FILL),
1690 (GtkAttachOptions) (0), 0, 0);
1691 gtk_widget_show (w);
1693 radiusX = gtk_entry_new_with_max_length(256);
1694 gtk_entry_set_text(GTK_ENTRY(radiusX), "100");
1695 gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,
1696 (GtkAttachOptions) (GTK_FILL),
1697 (GtkAttachOptions) (0), 0, 0);
1698 gtk_widget_show (radiusX);
1702 w = gtk_label_new ("Y: ");
1703 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1704 (GtkAttachOptions) (GTK_FILL),
1705 (GtkAttachOptions) (0), 0, 0);
1706 gtk_widget_show (w);
1708 radiusY = gtk_entry_new_with_max_length(256);
1709 gtk_entry_set_text(GTK_ENTRY(radiusY), "100");
1710 gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,
1711 (GtkAttachOptions) (GTK_FILL),
1712 (GtkAttachOptions) (0), 0, 0);
1713 gtk_widget_show (radiusY);
1717 frame = gtk_frame_new (_("Angles"));
1718 gtk_widget_show (frame);
1719 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1721 table = gtk_table_new (2, 3, TRUE);
1722 gtk_widget_show (table);
1723 gtk_container_add (GTK_CONTAINER (frame), table);
1724 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1725 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1726 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1730 w = gtk_label_new ("Start: ");
1731 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1732 (GtkAttachOptions) (GTK_FILL),
1733 (GtkAttachOptions) (0), 0, 0);
1734 gtk_widget_show (w);
1736 angleStart = gtk_entry_new_with_max_length(256);
1737 gtk_entry_set_text(GTK_ENTRY(angleStart), "0");
1738 gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,
1739 (GtkAttachOptions) (GTK_FILL),
1740 (GtkAttachOptions) (0), 0, 0);
1741 gtk_widget_show (angleStart);
1745 w = gtk_label_new ("End: ");
1746 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1747 (GtkAttachOptions) (GTK_FILL),
1748 (GtkAttachOptions) (0), 0, 0);
1749 gtk_widget_show (w);
1751 angleEnd = gtk_entry_new_with_max_length(256);
1752 gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");
1753 gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,
1754 (GtkAttachOptions) (GTK_FILL),
1755 (GtkAttachOptions) (0), 0, 0);
1756 gtk_widget_show (angleEnd);
1759 frame = gtk_frame_new (_("Height"));
1760 gtk_widget_show (frame);
1761 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1763 table = gtk_table_new (2, 3, TRUE);
1764 gtk_widget_show (table);
1765 gtk_container_add (GTK_CONTAINER (frame), table);
1766 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1767 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1768 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1772 w = gtk_label_new ("Start: ");
1773 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1774 (GtkAttachOptions) (GTK_FILL),
1775 (GtkAttachOptions) (0), 0, 0);
1776 gtk_widget_show (w);
1778 heightStart = gtk_entry_new_with_max_length(256);
1779 gtk_entry_set_text(GTK_ENTRY(heightStart), "0");
1780 gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,
1781 (GtkAttachOptions) (GTK_FILL),
1782 (GtkAttachOptions) (0), 0, 0);
1783 gtk_widget_show (heightStart);
1787 w = gtk_label_new ("End: ");
1788 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1789 (GtkAttachOptions) (GTK_FILL),
1790 (GtkAttachOptions) (0), 0, 0);
1791 gtk_widget_show (w);
1793 heightEnd = gtk_entry_new_with_max_length(256);
1794 gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");
1795 gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,
1796 (GtkAttachOptions) (GTK_FILL),
1797 (GtkAttachOptions) (0), 0, 0);
1798 gtk_widget_show (heightEnd);
1802 frame = gtk_frame_new (_("Points"));
1803 gtk_widget_show (frame);
1804 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1806 table = gtk_table_new (2, 3, TRUE);
1807 gtk_widget_show (table);
1808 gtk_container_add (GTK_CONTAINER (frame), table);
1809 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1810 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1811 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1815 w = gtk_label_new ("Number: ");
1816 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1817 (GtkAttachOptions) (GTK_FILL),
1818 (GtkAttachOptions) (0), 0, 0);
1819 gtk_widget_show (w);
1821 numPoints = gtk_entry_new_with_max_length(256);
1822 gtk_entry_set_text(GTK_ENTRY(numPoints), "0");
1823 gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,
1824 (GtkAttachOptions) (GTK_FILL),
1825 (GtkAttachOptions) (0), 0, 0);
1826 gtk_widget_show (numPoints);
1829 hbox = gtk_hbox_new (FALSE, 10);
1830 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1831 gtk_widget_show (hbox);
1835 w = gtk_button_new_with_label ("Ok");
1836 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1837 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1839 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1840 gtk_widget_grab_default (w);
1841 gtk_widget_show (w);
1843 w = gtk_button_new_with_label ("Cancel");
1844 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1845 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1846 gtk_widget_show (w);
1853 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1854 gtk_widget_show (window);
1855 gtk_grab_add (window);
1857 bool dialogError = TRUE;
1862 gtk_main_iteration ();
1864 dialogError = FALSE;
1868 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))
1871 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))
1874 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))
1877 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))
1880 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))
1883 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))
1886 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))
1891 gtk_grab_remove (window);
1892 gtk_widget_destroy (window);