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 "dialogs-gtk.h"
21 #include "../funchandlers.h"
30 /*--------------------------------
32 ---------------------------------*/
35 GtkWidget *cbTexChange;
36 GtkWidget *editTexOld, *editTexNew;
38 GtkWidget *cbScaleHor, *cbScaleVert;
39 GtkWidget *editScaleHor, *editScaleVert;
41 GtkWidget *cbShiftHor, *cbShiftVert;
42 GtkWidget *editShiftHor, *editShiftVert;
44 GtkWidget *cbRotation;
45 GtkWidget *editRotation;
48 dlg_texReset_t dlgTexReset;
50 void Update_TextureReseter();
52 static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)
54 Update_TextureReseter();
57 void Update_TextureReseter()
61 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
62 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);
63 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);
65 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
66 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);
68 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
69 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);
71 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
72 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);
74 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
75 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);
77 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
78 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);
81 static void dialog_button_callback (GtkWidget *widget, gpointer data)
85 EMessageBoxReturn *ret;
87 parent = gtk_widget_get_toplevel (widget);
88 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
89 ret = (EMessageBoxReturn*)g_object_get_data (G_OBJECT (parent), "ret");
92 *ret = (EMessageBoxReturn)GPOINTER_TO_INT(data);
95 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
99 gtk_widget_hide (widget);
100 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
106 static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)
108 TwinWidget* tw = (TwinWidget*)data;
110 GtkEntry* entry = GTK_ENTRY( tw->one );
111 GtkCombo* combo = GTK_COMBO( tw->two );
113 const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));
114 gtk_entry_set_text( entry, tex);
117 /*--------------------------------
118 Data validation Routines
119 ---------------------------------*/
121 bool ValidateTextFloat(const char* pData, char* error_title, float* value)
125 float testNum = (float)atof(pData);
127 if((testNum == 0.0f) && strcmp(pData, "0"))
129 DoMessageBox("Please Enter A Floating Point Number", error_title, eMB_OK);
139 DoMessageBox("Please Enter A Floating Point Number", error_title, eMB_OK);
143 bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)
145 char error_buffer[256];
146 sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);
150 float testNum = (float)atof(pData);
152 if((testNum < min) || (testNum > max))
154 DoMessageBox(error_buffer, error_title, eMB_OK);
164 DoMessageBox(error_buffer, error_title, eMB_OK);
168 bool ValidateTextIntRange(const char* pData, int min, int max, char* error_title, int* value)
170 char error_buffer[256];
171 sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);
175 int testNum = atoi(pData);
177 if((testNum < min) || (testNum > max))
179 DoMessageBox(error_buffer, error_title, eMB_OK);
189 DoMessageBox(error_buffer, error_title, eMB_OK);
193 bool ValidateTextInt(const char* pData, char* error_title, int* value)
197 int testNum = atoi(pData);
199 if((testNum == 0) && strcmp(pData, "0"))
201 DoMessageBox("Please Enter An Integer", error_title, eMB_OK);
211 DoMessageBox("Please Enter An Integer", error_title, eMB_OK);
215 /*--------------------------------
217 ---------------------------------*/
221 Major clean up of variable names etc required, excluding Mars's ones,
222 which are nicely done :)
226 EMessageBoxReturn DoMessageBox (const char* lpText, const char* lpCaption, EMessageBoxType type)
228 GtkWidget *window, *w, *vbox, *hbox;
229 EMessageBoxReturn ret;
232 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
233 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
234 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
235 gtk_signal_connect (GTK_OBJECT (window), "destroy",
236 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
237 gtk_window_set_title (GTK_WINDOW (window), lpCaption);
238 gtk_container_border_width (GTK_CONTAINER (window), 10);
239 g_object_set_data (G_OBJECT (window), "loop", &loop);
240 g_object_set_data (G_OBJECT (window), "ret", &ret);
241 gtk_widget_realize (window);
243 vbox = gtk_vbox_new (FALSE, 10);
244 gtk_container_add (GTK_CONTAINER (window), vbox);
245 gtk_widget_show (vbox);
247 w = gtk_label_new (lpText);
248 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
249 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
252 w = gtk_hseparator_new ();
253 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
256 hbox = gtk_hbox_new (FALSE, 10);
257 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
258 gtk_widget_show (hbox);
262 w = gtk_button_new_with_label ("Ok");
263 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
264 gtk_signal_connect (GTK_OBJECT (w), "clicked",
265 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
266 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
267 gtk_widget_grab_default (w);
271 else if (type == eMB_OKCANCEL)
273 w = gtk_button_new_with_label ("Ok");
274 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
275 gtk_signal_connect (GTK_OBJECT (w), "clicked",
276 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
277 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
278 gtk_widget_grab_default (w);
281 w = gtk_button_new_with_label ("Cancel");
282 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
283 gtk_signal_connect (GTK_OBJECT (w), "clicked",
284 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
288 else if (type == eMB_YESNOCANCEL)
290 w = gtk_button_new_with_label ("Yes");
291 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
292 gtk_signal_connect (GTK_OBJECT (w), "clicked",
293 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
294 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
295 gtk_widget_grab_default (w);
298 w = gtk_button_new_with_label ("No");
299 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
300 gtk_signal_connect (GTK_OBJECT (w), "clicked",
301 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDNO));
304 w = gtk_button_new_with_label ("Cancel");
305 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
306 gtk_signal_connect (GTK_OBJECT (w), "clicked",
307 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
311 else /* if (mode == MB_YESNO) */
313 w = gtk_button_new_with_label ("Yes");
314 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
315 gtk_signal_connect (GTK_OBJECT (w), "clicked",
316 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
317 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
318 gtk_widget_grab_default (w);
321 w = gtk_button_new_with_label ("No");
322 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
323 gtk_signal_connect (GTK_OBJECT (w), "clicked",
324 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDNO));
329 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
330 gtk_widget_show (window);
331 gtk_grab_add (window);
334 gtk_main_iteration ();
336 gtk_grab_remove (window);
337 gtk_widget_destroy (window);
342 EMessageBoxReturn DoIntersectBox (IntersectRS* rs)
344 GtkWidget *window, *w, *vbox, *hbox;
345 GtkWidget *radio1, *radio2;
346 GtkWidget *check1, *check2;
347 EMessageBoxReturn ret;
350 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
352 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
353 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
355 gtk_window_set_title (GTK_WINDOW (window), "Intersect");
356 gtk_container_border_width (GTK_CONTAINER (window), 10);
358 g_object_set_data (G_OBJECT (window), "loop", &loop);
359 g_object_set_data (G_OBJECT (window), "ret", &ret);
361 gtk_widget_realize (window);
365 vbox = gtk_vbox_new (FALSE, 10);
366 gtk_container_add (GTK_CONTAINER (window), vbox);
367 gtk_widget_show (vbox);
371 radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");
372 gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);
373 gtk_widget_show (radio1);
375 radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");
376 gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);
377 gtk_widget_show (radio2);
379 w = gtk_hseparator_new ();
380 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
383 check1 = gtk_check_button_new_with_label("Include Detail Brushes");
384 gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);
385 gtk_widget_show (check1);
387 check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");
388 gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);
389 gtk_widget_show (check2);
391 hbox = gtk_hbox_new (FALSE, 10);
392 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
393 gtk_widget_show (hbox);
395 // ---- hbox ---- ok/cancel buttons
397 w = gtk_button_new_with_label ("Ok");
398 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
399 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
401 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
402 gtk_widget_grab_default (w);
405 w = gtk_button_new_with_label ("Cancel");
406 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
407 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
415 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
416 gtk_widget_show (window);
417 gtk_grab_add (window);
420 gtk_main_iteration ();
422 if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))
423 rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;
424 else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))
425 rs->nBrushOptions = BRUSH_OPT_SELECTED;
427 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
428 rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
430 gtk_grab_remove (window);
431 gtk_widget_destroy (window);
436 EMessageBoxReturn DoPolygonBox (PolygonRS* rs)
438 GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;
440 GtkWidget *check1, *check2, *check3;
441 GtkWidget *text1, *text2;
443 EMessageBoxReturn ret;
446 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
448 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
449 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
451 gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");
452 gtk_container_border_width (GTK_CONTAINER (window), 10);
454 g_object_set_data (G_OBJECT (window), "loop", &loop);
455 g_object_set_data (G_OBJECT (window), "ret", &ret);
457 gtk_widget_realize (window);
461 vbox = gtk_vbox_new (FALSE, 10);
462 gtk_container_add (GTK_CONTAINER (window), vbox);
463 gtk_widget_show (vbox);
467 hbox = gtk_hbox_new (FALSE, 10);
468 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
469 gtk_widget_show (hbox);
474 vbox2 = gtk_vbox_new (FALSE, 10);
475 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
476 gtk_widget_show (vbox2);
480 hbox2 = gtk_hbox_new (FALSE, 10);
481 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
482 gtk_widget_show (hbox2);
486 text1 = gtk_entry_new_with_max_length(256);
487 gtk_entry_set_text((GtkEntry*)text1, "3");
488 gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);
489 gtk_widget_show (text1);
491 w = gtk_label_new ("Number Of Sides");
492 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
493 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
498 hbox2 = gtk_hbox_new (FALSE, 10);
499 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
500 gtk_widget_show (hbox2);
504 text2 = gtk_entry_new_with_max_length(256);
505 gtk_entry_set_text((GtkEntry*)text2, "8");
506 gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);
507 gtk_widget_show (text2);
509 w = gtk_label_new ("Border Width");
510 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
511 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
520 vbox2 = gtk_vbox_new (FALSE, 10);
521 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
522 gtk_widget_show (vbox2);
526 check1 = gtk_check_button_new_with_label("Use Border");
527 gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);
528 gtk_widget_show (check1);
531 check2 = gtk_check_button_new_with_label("Inverse Polygon");
532 gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);
533 gtk_widget_show (check2);
536 check3 = gtk_check_button_new_with_label("Align Top Edge");
537 gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);
538 gtk_widget_show (check3);
544 hbox = gtk_hbox_new (FALSE, 10);
545 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
546 gtk_widget_show (hbox);
550 w = gtk_button_new_with_label ("Ok");
551 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
552 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
554 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
555 gtk_widget_grab_default (w);
558 w = gtk_button_new_with_label ("Cancel");
559 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
560 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
568 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
569 gtk_widget_show (window);
570 gtk_grab_add (window);
572 bool dialogError = TRUE;
577 gtk_main_iteration ();
583 rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
584 rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
585 rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;
587 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))
592 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))
598 gtk_grab_remove (window);
599 gtk_widget_destroy (window);
605 // for stair builder stuck as close as i could to the MFC version
606 // obviously feel free to change it at will :)
607 EMessageBoxReturn DoBuildStairsBox(BuildStairsRS* rs)
609 // i made widgets for just about everything ... i think that's what i need to do dunno tho
610 GtkWidget *window, *w, *vbox, *hbox;
611 GtkWidget *textStairHeight, *textRiserTex, *textMainTex;
612 GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value
613 GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;
614 GtkWidget *checkUseDetail;
615 GSList *radioDirection, *radioStyle;
616 EMessageBoxReturn ret;
619 char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";
621 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
623 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
624 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
626 gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );
628 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
630 g_object_set_data (G_OBJECT (window), "loop", &loop);
631 g_object_set_data (G_OBJECT (window), "ret", &ret);
633 gtk_widget_realize (window);
636 vbox = gtk_vbox_new( FALSE, 10 );
637 gtk_container_add( GTK_CONTAINER( window ), vbox );
638 gtk_widget_show( vbox );
640 hbox = gtk_hbox_new( FALSE, 10 );
641 gtk_container_add( GTK_CONTAINER( vbox ), hbox );
642 gtk_widget_show( hbox );
644 // dunno if you want this text or not ...
645 w = gtk_label_new( text );
646 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...
647 gtk_widget_show( w );
649 w = gtk_hseparator_new();
650 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
651 gtk_widget_show( w );
653 // ------------------------- // indenting == good way of keeping track of lines :)
656 hbox = gtk_hbox_new( FALSE, 10 );
657 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
658 gtk_widget_show( hbox );
660 textStairHeight = gtk_entry_new_with_max_length( 256 );
661 gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );
662 gtk_widget_show( textStairHeight );
664 w = gtk_label_new( "Stair Height" );
665 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
666 gtk_widget_show( w );
668 // ------------------------- //
670 hbox = gtk_hbox_new( FALSE, 10 );
671 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
672 gtk_widget_show( hbox );
674 w = gtk_label_new( "Direction:" );
675 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
676 gtk_widget_show( w );
678 // -------------------------- //
680 hbox = gtk_hbox_new( FALSE, 10 );
681 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
682 gtk_widget_show( hbox );
684 // radio buttons confuse me ...
685 // but this _looks_ right
687 // djbob: actually it looks very nice :), slightly better than the way i did it
688 // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh
690 radioNorth = gtk_radio_button_new_with_label( NULL, "North" );
691 gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );
692 gtk_widget_show( radioNorth );
694 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );
696 radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );
697 gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );
698 gtk_widget_show( radioSouth );
700 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );
702 radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );
703 gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );
704 gtk_widget_show( radioEast );
706 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );
708 radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );
709 gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );
710 gtk_widget_show( radioWest );
712 // --------------------------- //
714 hbox = gtk_hbox_new( FALSE, 10 );
715 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
716 gtk_widget_show( hbox );
718 w = gtk_label_new( "Style:" );
719 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
720 gtk_widget_show( w );
722 // --------------------------- //
724 hbox = gtk_hbox_new( FALSE, 10 );
725 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
726 gtk_widget_show( hbox );
728 radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );
729 gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );
730 gtk_widget_show( radioOldStyle );
732 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );
734 radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );
735 gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );
736 gtk_widget_show( radioBobStyle );
738 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );
740 radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );
741 gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );
742 gtk_widget_show( radioCornerStyle );
744 // err, the q3r has an if or something so you need bob style checked before this
745 // is "ungreyed out" but you'll need to do that, as i suck :)
747 // djbob: er.... yeah um, im not at all sure how i'm gonna sort this
748 // djbob: think we need some button callback functions or smuffin
749 // FIXME: actually get around to doing what i suggested!!!!
751 checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );
752 gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );
753 gtk_widget_show( checkUseDetail );
755 // --------------------------- //
757 hbox = gtk_hbox_new( FALSE, 10 );
758 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
759 gtk_widget_show( hbox );
761 textMainTex = gtk_entry_new_with_max_length( 512 );
762 gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);
763 gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );
764 gtk_widget_show( textMainTex );
766 w = gtk_label_new( "Main Texture" );
767 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
768 gtk_widget_show( w );
770 // -------------------------- //
772 hbox = gtk_hbox_new( FALSE, 10 );
773 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
774 gtk_widget_show( hbox );
776 textRiserTex = gtk_entry_new_with_max_length( 512 );
777 gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );
778 gtk_widget_show( textRiserTex );
780 w = gtk_label_new( "Riser Texture" );
781 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
782 gtk_widget_show( w );
784 // -------------------------- //
785 w = gtk_hseparator_new();
786 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
787 gtk_widget_show( w );
789 hbox = gtk_hbox_new( FALSE, 10 );
790 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
791 gtk_widget_show( hbox );
793 w = gtk_button_new_with_label( "OK" );
794 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
795 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
796 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
797 gtk_widget_grab_default( w );
798 gtk_widget_show( w );
800 w = gtk_button_new_with_label( "Cancel" );
801 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
802 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
803 gtk_widget_show( w );
807 // +djbob: need our "little" modal loop mars :P
808 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
809 gtk_widget_show (window);
810 gtk_grab_add (window);
812 bool dialogError = TRUE;
817 gtk_main_iteration ();
823 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;
825 strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));
826 strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));
828 if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))
829 rs->direction = MOVE_NORTH;
830 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))
831 rs->direction = MOVE_SOUTH;
832 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))
833 rs->direction = MOVE_EAST;
834 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))
835 rs->direction = MOVE_WEST;
837 if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))
840 if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))
841 rs->style = STYLE_ORIGINAL;
842 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))
843 rs->style = STYLE_BOB;
844 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))
845 rs->style = STYLE_CORNER;
849 gtk_grab_remove (window);
850 gtk_widget_destroy (window);
855 // there we go, all done ... on my end at least, not bad for a night's work
858 EMessageBoxReturn DoDoorsBox(DoorRS* rs)
860 GtkWidget *window, *hbox, *vbox, *w;
861 GtkWidget *textFrontBackTex, *textTrimTex;
862 GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;
863 GtkWidget *comboMain, *comboTrim;
864 GtkWidget *buttonSetMain, *buttonSetTrim;
865 GtkWidget *radioNS, *radioEW;
866 GSList *radioOrientation;
868 EMessageBoxReturn ret;
871 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
873 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
874 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
876 gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );
878 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
880 g_object_set_data( G_OBJECT( window ), "loop", &loop );
881 g_object_set_data( G_OBJECT( window ), "ret", &ret );
883 gtk_widget_realize (window);
886 GList *listMainTextures = NULL;
887 GList *listTrimTextures = NULL;
888 LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);
889 LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);
891 vbox = gtk_vbox_new( FALSE, 10 );
892 gtk_container_add( GTK_CONTAINER( window ), vbox );
893 gtk_widget_show( vbox );
895 // -------------------------- //
897 hbox = gtk_hbox_new( FALSE, 10 );
898 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
899 gtk_widget_show( hbox );
901 textFrontBackTex = gtk_entry_new_with_max_length( 512 );
902 gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);
903 gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );
904 gtk_widget_show( textFrontBackTex );
906 w = gtk_label_new( "Door Front/Back Texture" );
907 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
908 gtk_widget_show( w );
910 // ------------------------ //
912 hbox = gtk_hbox_new( FALSE, 10 );
913 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
914 gtk_widget_show( hbox );
916 textTrimTex = gtk_entry_new_with_max_length( 512 );
917 gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );
918 gtk_widget_show( textTrimTex );
920 w = gtk_label_new( "Door Trim Texture" );
921 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
922 gtk_widget_show( w );
924 // ----------------------- //
926 hbox = gtk_hbox_new( FALSE, 10 );
927 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
928 gtk_widget_show( hbox );
930 // sp: horizontally ????
931 // djbob: yes mars, u can spell :]
932 checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );
933 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);
934 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );
935 gtk_widget_show( checkScaleMainH );
937 checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );
938 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);
939 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );
940 gtk_widget_show( checkScaleTrimH );
942 // ---------------------- //
944 hbox = gtk_hbox_new( FALSE, 10 );
945 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
946 gtk_widget_show( hbox );
948 checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );
949 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);
950 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );
951 gtk_widget_show( checkScaleMainV );
953 checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );
954 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );
955 gtk_widget_show( checkScaleTrimV );
957 // --------------------- //
959 hbox = gtk_hbox_new( FALSE, 10 );
960 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
961 gtk_widget_show( hbox );
963 // djbob: lists added
965 comboMain = gtk_combo_new();
966 gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );
967 gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );
968 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
969 gtk_widget_show( comboMain );
971 tw1.one = textFrontBackTex;
974 buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );
975 gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );
976 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );
977 gtk_widget_show( buttonSetMain );
979 // ------------------- //
981 hbox = gtk_hbox_new( FALSE, 10 );
982 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
983 gtk_widget_show( hbox );
985 comboTrim = gtk_combo_new();
986 gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );
987 gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );
988 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
989 gtk_widget_show( comboTrim );
991 tw2.one = textTrimTex;
994 buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );
995 gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );
996 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );
997 gtk_widget_show( buttonSetTrim );
999 // ------------------ //
1001 hbox = gtk_hbox_new( FALSE, 10 );
1002 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1003 gtk_widget_show( hbox );
1005 w = gtk_label_new( "Orientation" );
1006 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
1007 gtk_widget_show( w );
1009 // argh more radio buttons!
1010 radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );
1011 gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );
1012 gtk_widget_show( radioNS );
1014 radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );
1016 radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );
1017 gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );
1018 gtk_widget_show( radioEW );
1020 // ----------------- //
1022 w = gtk_hseparator_new();
1023 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1024 gtk_widget_show( w );
1026 // ----------------- //
1028 hbox = gtk_hbox_new( FALSE, 10 );
1029 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1030 gtk_widget_show( hbox );
1032 w = gtk_button_new_with_label( "OK" );
1033 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1034 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
1035 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1036 gtk_widget_grab_default( w );
1037 gtk_widget_show( w );
1039 w = gtk_button_new_with_label( "Cancel" );
1040 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1041 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
1042 gtk_widget_show( w );
1045 // ----------------- //
1048 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1049 gtk_widget_show (window);
1050 gtk_grab_add (window);
1053 gtk_main_iteration ();
1055 strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));
1056 strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));
1058 rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;
1059 rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;
1060 rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;
1061 rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;
1063 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))
1064 rs->nOrientation = DIRECTION_NS;
1065 else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))
1066 rs->nOrientation = DIRECTION_EW;
1068 gtk_grab_remove (window);
1069 gtk_widget_destroy (window);
1075 EMessageBoxReturn DoPathPlotterBox(PathPlotterRS* rs)
1077 GtkWidget *window, *w, *vbox, *hbox;
1079 GtkWidget *text1, *text2, *text3;
1080 GtkWidget *check1, *check2;
1082 EMessageBoxReturn ret;
1085 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1087 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1088 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1090 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1091 gtk_container_border_width (GTK_CONTAINER (window), 10);
1093 g_object_set_data (G_OBJECT (window), "loop", &loop);
1094 g_object_set_data (G_OBJECT (window), "ret", &ret);
1096 gtk_widget_realize (window);
1100 vbox = gtk_vbox_new (FALSE, 10);
1101 gtk_container_add (GTK_CONTAINER (window), vbox);
1102 gtk_widget_show (vbox);
1106 hbox = gtk_hbox_new (FALSE, 10);
1107 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1108 gtk_widget_show (hbox);
1112 text1 = gtk_entry_new_with_max_length(256);
1113 gtk_entry_set_text((GtkEntry*)text1, "25");
1114 gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);
1115 gtk_widget_show (text1);
1117 w = gtk_label_new ("Number Of Points");
1118 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1119 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1120 gtk_widget_show (w);
1124 hbox = gtk_hbox_new (FALSE, 10);
1125 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1126 gtk_widget_show (hbox);
1130 text2 = gtk_entry_new_with_max_length(256);
1131 gtk_entry_set_text((GtkEntry*)text2, "3");
1132 gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);
1133 gtk_widget_show (text2);
1135 w = gtk_label_new ("Multipler");
1136 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1137 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1138 gtk_widget_show (w);
1142 w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");
1143 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
1144 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1145 gtk_widget_show (w);
1147 hbox = gtk_hbox_new (FALSE, 10);
1148 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1149 gtk_widget_show (hbox);
1153 text3 = gtk_entry_new_with_max_length(256);
1154 gtk_entry_set_text((GtkEntry*)text3, "-800");
1155 gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);
1156 gtk_widget_show (text3);
1158 w = gtk_label_new ("Gravity");
1159 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1160 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1161 gtk_widget_show (w);
1165 w = gtk_hseparator_new();
1166 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1167 gtk_widget_show( w );
1169 check1 = gtk_check_button_new_with_label( "No Dynamic Update" );
1170 gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );
1171 gtk_widget_show( check1 );
1173 check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );
1174 gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );
1175 gtk_widget_show( check2 );
1180 // ----------------- //
1182 w = gtk_hseparator_new();
1183 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1184 gtk_widget_show( w );
1186 // ----------------- //
1188 hbox = gtk_hbox_new( FALSE, 10 );
1189 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1190 gtk_widget_show( hbox );
1192 w = gtk_button_new_with_label( "Enable" );
1193 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1194 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDYES ) );
1195 gtk_widget_show( w );
1197 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1198 gtk_widget_grab_default( w );
1200 w = gtk_button_new_with_label( "Disable" );
1201 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1202 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDNO ) );
1203 gtk_widget_show( w );
1205 w = gtk_button_new_with_label( "Cancel" );
1206 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1207 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
1208 gtk_widget_show( w );
1212 // ----------------- //
1214 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1215 gtk_widget_show (window);
1216 gtk_grab_add (window);
1218 bool dialogError = TRUE;
1223 gtk_main_iteration ();
1225 dialogError = FALSE;
1229 if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))
1232 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))
1235 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))
1238 rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;
1239 rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;
1243 gtk_grab_remove (window);
1244 gtk_widget_destroy (window);
1249 EMessageBoxReturn DoCTFColourChangeBox ()
1251 GtkWidget *window, *w, *vbox, *hbox;
1252 EMessageBoxReturn ret;
1255 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1257 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1258 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1260 gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");
1261 gtk_container_border_width (GTK_CONTAINER (window), 10);
1263 g_object_set_data (G_OBJECT (window), "loop", &loop);
1264 g_object_set_data (G_OBJECT (window), "ret", &ret);
1266 gtk_widget_realize (window);
1270 vbox = gtk_vbox_new (FALSE, 10);
1271 gtk_container_add (GTK_CONTAINER (window), vbox);
1272 gtk_widget_show (vbox);
1276 hbox = gtk_hbox_new( FALSE, 10 );
1277 gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
1278 gtk_widget_show( hbox );
1280 // ---- hbox ---- ok/cancel buttons
1282 w = gtk_button_new_with_label ("Red->Blue");
1283 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1284 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
1286 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1287 gtk_widget_grab_default (w);
1288 gtk_widget_show (w);
1290 w = gtk_button_new_with_label ("Blue->Red");
1291 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1292 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
1293 gtk_widget_show (w);
1295 w = gtk_button_new_with_label ("Cancel");
1296 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1297 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1298 gtk_widget_show (w);
1305 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1306 gtk_widget_show (window);
1307 gtk_grab_add (window);
1310 gtk_main_iteration ();
1312 gtk_grab_remove (window);
1313 gtk_widget_destroy (window);
1318 EMessageBoxReturn DoResetTextureBox (ResetTextureRS* rs)
1322 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1324 EMessageBoxReturn ret;
1327 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1329 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1330 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1332 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1333 gtk_container_border_width (GTK_CONTAINER (window), 10);
1335 g_object_set_data (G_OBJECT (window), "loop", &loop);
1336 g_object_set_data (G_OBJECT (window), "ret", &ret);
1338 gtk_widget_realize (window);
1340 vbox = gtk_vbox_new (FALSE, 10);
1341 gtk_container_add (GTK_CONTAINER (window), vbox);
1342 gtk_widget_show (vbox);
1346 hbox = gtk_hbox_new (FALSE, 10);
1347 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1348 gtk_widget_show (hbox);
1352 texSelected = "Currently Selected Face: ";
1354 if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {
1355 texSelected += GetCurrentTexture();
1359 w = gtk_label_new (texSelected);
1360 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1361 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1362 gtk_widget_show (w);
1366 frame = gtk_frame_new ("Reset Texture Names");
1367 gtk_widget_show (frame);
1368 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1370 table = gtk_table_new (2, 3, TRUE);
1371 gtk_widget_show (table);
1372 gtk_container_add (GTK_CONTAINER (frame), table);
1373 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1374 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1375 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1379 dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");
1380 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1381 gtk_widget_show (dlgTexReset.cbTexChange);
1382 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,
1383 (GtkAttachOptions) (GTK_FILL),
1384 (GtkAttachOptions) (0), 0, 0);
1386 w = gtk_label_new ("Old Name: ");
1387 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1388 (GtkAttachOptions) (GTK_FILL),
1389 (GtkAttachOptions) (0), 0, 0);
1390 gtk_widget_show (w);
1392 dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);
1393 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);
1394 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,
1395 (GtkAttachOptions) (GTK_FILL),
1396 (GtkAttachOptions) (0), 0, 0);
1397 gtk_widget_show (dlgTexReset.editTexOld);
1399 w = gtk_label_new ("New Name: ");
1400 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1401 (GtkAttachOptions) (GTK_FILL),
1402 (GtkAttachOptions) (0), 0, 0);
1403 gtk_widget_show (w);
1405 dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);
1406 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);
1407 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,
1408 (GtkAttachOptions) (GTK_FILL),
1409 (GtkAttachOptions) (0), 0, 0);
1410 gtk_widget_show (dlgTexReset.editTexNew);
1414 frame = gtk_frame_new ("Reset Scales");
1415 gtk_widget_show (frame);
1416 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1418 table = gtk_table_new (2, 3, TRUE);
1419 gtk_widget_show (table);
1420 gtk_container_add (GTK_CONTAINER (frame), table);
1421 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1422 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1423 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1427 dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");
1428 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1429 gtk_widget_show (dlgTexReset.cbScaleHor);
1430 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,
1431 (GtkAttachOptions) (GTK_FILL),
1432 (GtkAttachOptions) (0), 0, 0);
1434 w = gtk_label_new ("New Horizontal Scale: ");
1435 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1436 (GtkAttachOptions) (GTK_FILL),
1437 (GtkAttachOptions) (0), 0, 0);
1438 gtk_widget_show (w);
1440 dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);
1441 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");
1442 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,
1443 (GtkAttachOptions) (GTK_FILL),
1444 (GtkAttachOptions) (0), 0, 0);
1445 gtk_widget_show (dlgTexReset.editScaleHor);
1448 dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");
1449 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1450 gtk_widget_show (dlgTexReset.cbScaleVert);
1451 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,
1452 (GtkAttachOptions) (GTK_FILL),
1453 (GtkAttachOptions) (0), 0, 0);
1455 w = gtk_label_new ("New Vertical Scale: ");
1456 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1457 (GtkAttachOptions) (GTK_FILL),
1458 (GtkAttachOptions) (0), 0, 0);
1459 gtk_widget_show (w);
1461 dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);
1462 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");
1463 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,
1464 (GtkAttachOptions) (GTK_FILL),
1465 (GtkAttachOptions) (0), 0, 0);
1466 gtk_widget_show (dlgTexReset.editScaleVert);
1470 frame = gtk_frame_new ("Reset Shift");
1471 gtk_widget_show (frame);
1472 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1474 table = gtk_table_new (2, 3, TRUE);
1475 gtk_widget_show (table);
1476 gtk_container_add (GTK_CONTAINER (frame), table);
1477 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1478 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1479 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1483 dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");
1484 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1485 gtk_widget_show (dlgTexReset.cbShiftHor);
1486 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,
1487 (GtkAttachOptions) (GTK_FILL),
1488 (GtkAttachOptions) (0), 0, 0);
1490 w = gtk_label_new ("New Horizontal Shift: ");
1491 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1492 (GtkAttachOptions) (GTK_FILL),
1493 (GtkAttachOptions) (0), 0, 0);
1494 gtk_widget_show (w);
1496 dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);
1497 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");
1498 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,
1499 (GtkAttachOptions) (GTK_FILL),
1500 (GtkAttachOptions) (0), 0, 0);
1501 gtk_widget_show (dlgTexReset.editShiftHor);
1504 dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");
1505 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1506 gtk_widget_show (dlgTexReset.cbShiftVert);
1507 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,
1508 (GtkAttachOptions) (GTK_FILL),
1509 (GtkAttachOptions) (0), 0, 0);
1511 w = gtk_label_new ("New Vertical Shift: ");
1512 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1513 (GtkAttachOptions) (GTK_FILL),
1514 (GtkAttachOptions) (0), 0, 0);
1515 gtk_widget_show (w);
1517 dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);
1518 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");
1519 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,
1520 (GtkAttachOptions) (GTK_FILL),
1521 (GtkAttachOptions) (0), 0, 0);
1522 gtk_widget_show (dlgTexReset.editShiftVert);
1526 frame = gtk_frame_new ("Reset Rotation");
1527 gtk_widget_show (frame);
1528 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1530 table = gtk_table_new (1, 3, TRUE);
1531 gtk_widget_show (table);
1532 gtk_container_add (GTK_CONTAINER (frame), table);
1533 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1534 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1535 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1539 dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");
1540 gtk_widget_show (dlgTexReset.cbRotation);
1541 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,
1542 (GtkAttachOptions) (GTK_FILL),
1543 (GtkAttachOptions) (0), 0, 0);
1545 w = gtk_label_new ("New Rotation Value: ");
1546 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1547 (GtkAttachOptions) (GTK_FILL),
1548 (GtkAttachOptions) (0), 0, 0);
1549 gtk_widget_show (w);
1551 dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);
1552 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");
1553 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,
1554 (GtkAttachOptions) (GTK_FILL),
1555 (GtkAttachOptions) (0), 0, 0);
1556 gtk_widget_show (dlgTexReset.editRotation);
1560 hbox = gtk_hbox_new (FALSE, 10);
1561 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1562 gtk_widget_show (hbox);
1566 w = gtk_button_new_with_label ("Use Selected Brushes");
1567 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1568 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
1570 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1571 gtk_widget_grab_default (w);
1572 gtk_widget_show (w);
1574 w = gtk_button_new_with_label ("Use All Brushes");
1575 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1576 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
1577 gtk_widget_show (w);
1579 w = gtk_button_new_with_label ("Cancel");
1580 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1581 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1582 gtk_widget_show (w);
1589 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1590 gtk_widget_show (window);
1591 gtk_grab_add (window);
1593 Update_TextureReseter();
1595 bool dialogError = TRUE;
1600 gtk_main_iteration ();
1602 dialogError = FALSE;
1604 if(ret != eIDCANCEL)
1606 rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
1607 if(rs->bResetRotation)
1608 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))
1611 rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
1612 if(rs->bResetScale[0])
1613 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))
1616 rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
1617 if(rs->bResetScale[1])
1618 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))
1621 rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
1622 if(rs->bResetShift[0])
1623 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))
1626 rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
1627 if(rs->bResetShift[1])
1628 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))
1631 rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
1632 if(rs->bResetTextureName)
1634 strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));
1635 strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));
1640 gtk_grab_remove (window);
1641 gtk_widget_destroy (window);
1646 EMessageBoxReturn DoTrainThingBox (TrainThingRS* rs)
1650 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1652 GtkWidget *radiusX, *radiusY;
1653 GtkWidget *angleStart, *angleEnd;
1654 GtkWidget *heightStart, *heightEnd;
1655 GtkWidget *numPoints;
1657 EMessageBoxReturn ret;
1660 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1662 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1663 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1665 gtk_window_set_title (GTK_WINDOW (window), "Train Thing");
1666 gtk_container_border_width (GTK_CONTAINER (window), 10);
1668 gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
1669 gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
1671 gtk_widget_realize (window);
1673 vbox = gtk_vbox_new (FALSE, 10);
1674 gtk_container_add (GTK_CONTAINER (window), vbox);
1675 gtk_widget_show (vbox);
1679 hbox = gtk_hbox_new (FALSE, 10);
1680 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1681 gtk_widget_show (hbox);
1685 frame = gtk_frame_new ("Radii");
1686 gtk_widget_show (frame);
1687 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1689 table = gtk_table_new (2, 3, TRUE);
1690 gtk_widget_show (table);
1691 gtk_container_add (GTK_CONTAINER (frame), table);
1692 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1693 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1694 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1698 w = gtk_label_new ("X: ");
1699 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1700 (GtkAttachOptions) (GTK_FILL),
1701 (GtkAttachOptions) (0), 0, 0);
1702 gtk_widget_show (w);
1704 radiusX = gtk_entry_new_with_max_length(256);
1705 gtk_entry_set_text(GTK_ENTRY(radiusX), "100");
1706 gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,
1707 (GtkAttachOptions) (GTK_FILL),
1708 (GtkAttachOptions) (0), 0, 0);
1709 gtk_widget_show (radiusX);
1713 w = gtk_label_new ("Y: ");
1714 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1715 (GtkAttachOptions) (GTK_FILL),
1716 (GtkAttachOptions) (0), 0, 0);
1717 gtk_widget_show (w);
1719 radiusY = gtk_entry_new_with_max_length(256);
1720 gtk_entry_set_text(GTK_ENTRY(radiusY), "100");
1721 gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,
1722 (GtkAttachOptions) (GTK_FILL),
1723 (GtkAttachOptions) (0), 0, 0);
1724 gtk_widget_show (radiusY);
1728 frame = gtk_frame_new ("Angles");
1729 gtk_widget_show (frame);
1730 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1732 table = gtk_table_new (2, 3, TRUE);
1733 gtk_widget_show (table);
1734 gtk_container_add (GTK_CONTAINER (frame), table);
1735 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1736 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1737 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1741 w = gtk_label_new ("Start: ");
1742 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1743 (GtkAttachOptions) (GTK_FILL),
1744 (GtkAttachOptions) (0), 0, 0);
1745 gtk_widget_show (w);
1747 angleStart = gtk_entry_new_with_max_length(256);
1748 gtk_entry_set_text(GTK_ENTRY(angleStart), "0");
1749 gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,
1750 (GtkAttachOptions) (GTK_FILL),
1751 (GtkAttachOptions) (0), 0, 0);
1752 gtk_widget_show (angleStart);
1756 w = gtk_label_new ("End: ");
1757 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1758 (GtkAttachOptions) (GTK_FILL),
1759 (GtkAttachOptions) (0), 0, 0);
1760 gtk_widget_show (w);
1762 angleEnd = gtk_entry_new_with_max_length(256);
1763 gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");
1764 gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,
1765 (GtkAttachOptions) (GTK_FILL),
1766 (GtkAttachOptions) (0), 0, 0);
1767 gtk_widget_show (angleEnd);
1770 frame = gtk_frame_new ("Height");
1771 gtk_widget_show (frame);
1772 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1774 table = gtk_table_new (2, 3, TRUE);
1775 gtk_widget_show (table);
1776 gtk_container_add (GTK_CONTAINER (frame), table);
1777 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1778 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1779 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1783 w = gtk_label_new ("Start: ");
1784 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1785 (GtkAttachOptions) (GTK_FILL),
1786 (GtkAttachOptions) (0), 0, 0);
1787 gtk_widget_show (w);
1789 heightStart = gtk_entry_new_with_max_length(256);
1790 gtk_entry_set_text(GTK_ENTRY(heightStart), "0");
1791 gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,
1792 (GtkAttachOptions) (GTK_FILL),
1793 (GtkAttachOptions) (0), 0, 0);
1794 gtk_widget_show (heightStart);
1798 w = gtk_label_new ("End: ");
1799 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1800 (GtkAttachOptions) (GTK_FILL),
1801 (GtkAttachOptions) (0), 0, 0);
1802 gtk_widget_show (w);
1804 heightEnd = gtk_entry_new_with_max_length(256);
1805 gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");
1806 gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,
1807 (GtkAttachOptions) (GTK_FILL),
1808 (GtkAttachOptions) (0), 0, 0);
1809 gtk_widget_show (heightEnd);
1813 frame = gtk_frame_new ("Points");
1814 gtk_widget_show (frame);
1815 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1817 table = gtk_table_new (2, 3, TRUE);
1818 gtk_widget_show (table);
1819 gtk_container_add (GTK_CONTAINER (frame), table);
1820 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1821 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1822 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1826 w = gtk_label_new ("Number: ");
1827 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1828 (GtkAttachOptions) (GTK_FILL),
1829 (GtkAttachOptions) (0), 0, 0);
1830 gtk_widget_show (w);
1832 numPoints = gtk_entry_new_with_max_length(256);
1833 gtk_entry_set_text(GTK_ENTRY(numPoints), "0");
1834 gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,
1835 (GtkAttachOptions) (GTK_FILL),
1836 (GtkAttachOptions) (0), 0, 0);
1837 gtk_widget_show (numPoints);
1840 hbox = gtk_hbox_new (FALSE, 10);
1841 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1842 gtk_widget_show (hbox);
1846 w = gtk_button_new_with_label ("Ok");
1847 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1848 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
1850 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1851 gtk_widget_grab_default (w);
1852 gtk_widget_show (w);
1854 w = gtk_button_new_with_label ("Cancel");
1855 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1856 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1857 gtk_widget_show (w);
1864 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1865 gtk_widget_show (window);
1866 gtk_grab_add (window);
1868 bool dialogError = TRUE;
1873 gtk_main_iteration ();
1875 dialogError = FALSE;
1877 if(ret != eIDCANCEL)
1879 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))
1882 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))
1885 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))
1888 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))
1891 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))
1894 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))
1897 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))
1902 gtk_grab_remove (window);
1903 gtk_widget_destroy (window);