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"
23 #include "dialogs-gtk.h"
24 #include "../funchandlers.h"
27 #include "gtkr_list.h"
33 /*--------------------------------
35 ---------------------------------*/
38 GtkWidget *cbTexChange;
39 GtkWidget *editTexOld, *editTexNew;
41 GtkWidget *cbScaleHor, *cbScaleVert;
42 GtkWidget *editScaleHor, *editScaleVert;
44 GtkWidget *cbShiftHor, *cbShiftVert;
45 GtkWidget *editShiftHor, *editShiftVert;
47 GtkWidget *cbRotation;
48 GtkWidget *editRotation;
51 dlg_texReset_t dlgTexReset;
53 void Update_TextureReseter();
55 static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)
57 Update_TextureReseter();
60 void Update_TextureReseter()
64 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
65 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);
66 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);
68 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
69 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);
71 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
72 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);
74 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
75 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);
77 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
78 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);
80 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
81 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);
84 static void dialog_button_callback (GtkWidget *widget, gpointer data)
88 EMessageBoxReturn *ret;
90 parent = gtk_widget_get_toplevel (widget);
91 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
92 ret = (EMessageBoxReturn*)g_object_get_data (G_OBJECT (parent), "ret");
95 *ret = (EMessageBoxReturn)GPOINTER_TO_INT(data);
98 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
102 gtk_widget_hide (widget);
103 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
109 static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)
111 TwinWidget* tw = (TwinWidget*)data;
113 GtkEntry* entry = GTK_ENTRY( tw->one );
114 GtkCombo* combo = GTK_COMBO( tw->two );
116 const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));
117 gtk_entry_set_text( entry, tex);
120 /*--------------------------------
121 Data validation Routines
122 ---------------------------------*/
124 bool ValidateTextFloat(const char* pData, char* error_title, float* value)
128 float testNum = (float)atof(pData);
130 if((testNum == 0.0f) && strcmp(pData, "0"))
132 DoMessageBox("Please Enter A Floating Point Number", error_title, eMB_OK);
142 DoMessageBox("Please Enter A Floating Point Number", error_title, eMB_OK);
146 bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)
148 char error_buffer[256];
149 sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);
153 float testNum = (float)atof(pData);
155 if((testNum < min) || (testNum > max))
157 DoMessageBox(error_buffer, error_title, eMB_OK);
167 DoMessageBox(error_buffer, error_title, eMB_OK);
171 bool ValidateTextIntRange(const char* pData, int min, int max, char* error_title, int* value)
173 char error_buffer[256];
174 sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);
178 int testNum = atoi(pData);
180 if((testNum < min) || (testNum > max))
182 DoMessageBox(error_buffer, error_title, eMB_OK);
192 DoMessageBox(error_buffer, error_title, eMB_OK);
196 bool ValidateTextInt(const char* pData, char* error_title, int* value)
200 int testNum = atoi(pData);
202 if((testNum == 0) && strcmp(pData, "0"))
204 DoMessageBox("Please Enter An Integer", error_title, eMB_OK);
214 DoMessageBox("Please Enter An Integer", error_title, eMB_OK);
218 /*--------------------------------
220 ---------------------------------*/
224 Major clean up of variable names etc required, excluding Mars's ones,
225 which are nicely done :)
229 EMessageBoxReturn DoMessageBox (const char* lpText, const char* lpCaption, EMessageBoxType type)
231 GtkWidget *window, *w, *vbox, *hbox;
232 EMessageBoxReturn ret;
235 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
236 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
237 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
238 gtk_signal_connect (GTK_OBJECT (window), "destroy",
239 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
240 gtk_window_set_title (GTK_WINDOW (window), lpCaption);
241 gtk_container_border_width (GTK_CONTAINER (window), 10);
242 g_object_set_data (G_OBJECT (window), "loop", &loop);
243 g_object_set_data (G_OBJECT (window), "ret", &ret);
244 gtk_widget_realize (window);
246 vbox = gtk_vbox_new (FALSE, 10);
247 gtk_container_add (GTK_CONTAINER (window), vbox);
248 gtk_widget_show (vbox);
250 w = gtk_label_new (lpText);
251 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
252 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
255 w = gtk_hseparator_new ();
256 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
259 hbox = gtk_hbox_new (FALSE, 10);
260 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
261 gtk_widget_show (hbox);
265 w = gtk_button_new_with_label ("Ok");
266 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
267 gtk_signal_connect (GTK_OBJECT (w), "clicked",
268 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
269 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
270 gtk_widget_grab_default (w);
274 else if (type == eMB_OKCANCEL)
276 w = gtk_button_new_with_label ("Ok");
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 (eIDOK));
280 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
281 gtk_widget_grab_default (w);
284 w = gtk_button_new_with_label ("Cancel");
285 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
286 gtk_signal_connect (GTK_OBJECT (w), "clicked",
287 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
291 else if (type == eMB_YESNOCANCEL)
293 w = gtk_button_new_with_label ("Yes");
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 (eIDYES));
297 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
298 gtk_widget_grab_default (w);
301 w = gtk_button_new_with_label ("No");
302 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
303 gtk_signal_connect (GTK_OBJECT (w), "clicked",
304 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDNO));
307 w = gtk_button_new_with_label ("Cancel");
308 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
309 gtk_signal_connect (GTK_OBJECT (w), "clicked",
310 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
314 else /* if (mode == MB_YESNO) */
316 w = gtk_button_new_with_label ("Yes");
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 (eIDYES));
320 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
321 gtk_widget_grab_default (w);
324 w = gtk_button_new_with_label ("No");
325 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
326 gtk_signal_connect (GTK_OBJECT (w), "clicked",
327 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDNO));
332 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
333 gtk_widget_show (window);
334 gtk_grab_add (window);
337 gtk_main_iteration ();
339 gtk_grab_remove (window);
340 gtk_widget_destroy (window);
345 EMessageBoxReturn DoIntersectBox (IntersectRS* rs)
347 GtkWidget *window, *w, *vbox, *hbox;
348 GtkWidget *radio1, *radio2;
349 GtkWidget *check1, *check2;
350 EMessageBoxReturn ret;
353 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
355 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
356 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
358 gtk_window_set_title (GTK_WINDOW (window), "Intersect");
359 gtk_container_border_width (GTK_CONTAINER (window), 10);
361 g_object_set_data (G_OBJECT (window), "loop", &loop);
362 g_object_set_data (G_OBJECT (window), "ret", &ret);
364 gtk_widget_realize (window);
368 vbox = gtk_vbox_new (FALSE, 10);
369 gtk_container_add (GTK_CONTAINER (window), vbox);
370 gtk_widget_show (vbox);
374 radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");
375 gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);
376 gtk_widget_show (radio1);
378 radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");
379 gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);
380 gtk_widget_show (radio2);
382 w = gtk_hseparator_new ();
383 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
386 check1 = gtk_check_button_new_with_label("Include Detail Brushes");
387 gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);
388 gtk_widget_show (check1);
390 check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");
391 gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);
392 gtk_widget_show (check2);
394 hbox = gtk_hbox_new (FALSE, 10);
395 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
396 gtk_widget_show (hbox);
398 // ---- hbox ---- ok/cancel buttons
400 w = gtk_button_new_with_label ("Ok");
401 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
402 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
404 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
405 gtk_widget_grab_default (w);
408 w = gtk_button_new_with_label ("Cancel");
409 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
410 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
418 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
419 gtk_widget_show (window);
420 gtk_grab_add (window);
423 gtk_main_iteration ();
425 if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))
426 rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;
427 else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))
428 rs->nBrushOptions = BRUSH_OPT_SELECTED;
430 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
431 rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
433 gtk_grab_remove (window);
434 gtk_widget_destroy (window);
439 EMessageBoxReturn DoPolygonBox (PolygonRS* rs)
441 GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;
443 GtkWidget *check1, *check2, *check3;
444 GtkWidget *text1, *text2;
446 EMessageBoxReturn ret;
449 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
451 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
452 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
454 gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");
455 gtk_container_border_width (GTK_CONTAINER (window), 10);
457 g_object_set_data (G_OBJECT (window), "loop", &loop);
458 g_object_set_data (G_OBJECT (window), "ret", &ret);
460 gtk_widget_realize (window);
464 vbox = gtk_vbox_new (FALSE, 10);
465 gtk_container_add (GTK_CONTAINER (window), vbox);
466 gtk_widget_show (vbox);
470 hbox = gtk_hbox_new (FALSE, 10);
471 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
472 gtk_widget_show (hbox);
477 vbox2 = gtk_vbox_new (FALSE, 10);
478 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
479 gtk_widget_show (vbox2);
483 hbox2 = gtk_hbox_new (FALSE, 10);
484 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
485 gtk_widget_show (hbox2);
489 text1 = gtk_entry_new_with_max_length(256);
490 gtk_entry_set_text((GtkEntry*)text1, "3");
491 gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);
492 gtk_widget_show (text1);
494 w = gtk_label_new ("Number Of Sides");
495 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
496 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
501 hbox2 = gtk_hbox_new (FALSE, 10);
502 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
503 gtk_widget_show (hbox2);
507 text2 = gtk_entry_new_with_max_length(256);
508 gtk_entry_set_text((GtkEntry*)text2, "8");
509 gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);
510 gtk_widget_show (text2);
512 w = gtk_label_new ("Border Width");
513 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
514 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
523 vbox2 = gtk_vbox_new (FALSE, 10);
524 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
525 gtk_widget_show (vbox2);
529 check1 = gtk_check_button_new_with_label("Use Border");
530 gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);
531 gtk_widget_show (check1);
534 check2 = gtk_check_button_new_with_label("Inverse Polygon");
535 gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);
536 gtk_widget_show (check2);
539 check3 = gtk_check_button_new_with_label("Align Top Edge");
540 gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);
541 gtk_widget_show (check3);
547 hbox = gtk_hbox_new (FALSE, 10);
548 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
549 gtk_widget_show (hbox);
553 w = gtk_button_new_with_label ("Ok");
554 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
555 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
557 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
558 gtk_widget_grab_default (w);
561 w = gtk_button_new_with_label ("Cancel");
562 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
563 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
571 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
572 gtk_widget_show (window);
573 gtk_grab_add (window);
575 bool dialogError = TRUE;
580 gtk_main_iteration ();
586 rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
587 rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
588 rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;
590 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))
595 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))
601 gtk_grab_remove (window);
602 gtk_widget_destroy (window);
608 // for stair builder stuck as close as i could to the MFC version
609 // obviously feel free to change it at will :)
610 EMessageBoxReturn DoBuildStairsBox(BuildStairsRS* rs)
612 // i made widgets for just about everything ... i think that's what i need to do dunno tho
613 GtkWidget *window, *w, *vbox, *hbox;
614 GtkWidget *textStairHeight, *textRiserTex, *textMainTex;
615 GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value
616 GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;
617 GtkWidget *checkUseDetail;
618 GSList *radioDirection, *radioStyle;
619 EMessageBoxReturn ret;
622 char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";
624 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
626 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
627 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
629 gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );
631 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
633 g_object_set_data (G_OBJECT (window), "loop", &loop);
634 g_object_set_data (G_OBJECT (window), "ret", &ret);
636 gtk_widget_realize (window);
639 vbox = gtk_vbox_new( FALSE, 10 );
640 gtk_container_add( GTK_CONTAINER( window ), vbox );
641 gtk_widget_show( vbox );
643 hbox = gtk_hbox_new( FALSE, 10 );
644 gtk_container_add( GTK_CONTAINER( vbox ), hbox );
645 gtk_widget_show( hbox );
647 // dunno if you want this text or not ...
648 w = gtk_label_new( text );
649 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...
650 gtk_widget_show( w );
652 w = gtk_hseparator_new();
653 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
654 gtk_widget_show( w );
656 // ------------------------- // indenting == good way of keeping track of lines :)
659 hbox = gtk_hbox_new( FALSE, 10 );
660 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
661 gtk_widget_show( hbox );
663 textStairHeight = gtk_entry_new_with_max_length( 256 );
664 gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );
665 gtk_widget_show( textStairHeight );
667 w = gtk_label_new( "Stair Height" );
668 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
669 gtk_widget_show( w );
671 // ------------------------- //
673 hbox = gtk_hbox_new( FALSE, 10 );
674 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
675 gtk_widget_show( hbox );
677 w = gtk_label_new( "Direction:" );
678 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
679 gtk_widget_show( w );
681 // -------------------------- //
683 hbox = gtk_hbox_new( FALSE, 10 );
684 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
685 gtk_widget_show( hbox );
687 // radio buttons confuse me ...
688 // but this _looks_ right
690 // djbob: actually it looks very nice :), slightly better than the way i did it
691 // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh
693 radioNorth = gtk_radio_button_new_with_label( NULL, "North" );
694 gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );
695 gtk_widget_show( radioNorth );
697 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );
699 radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );
700 gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );
701 gtk_widget_show( radioSouth );
703 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );
705 radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );
706 gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );
707 gtk_widget_show( radioEast );
709 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );
711 radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );
712 gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );
713 gtk_widget_show( radioWest );
715 // --------------------------- //
717 hbox = gtk_hbox_new( FALSE, 10 );
718 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
719 gtk_widget_show( hbox );
721 w = gtk_label_new( "Style:" );
722 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
723 gtk_widget_show( w );
725 // --------------------------- //
727 hbox = gtk_hbox_new( FALSE, 10 );
728 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
729 gtk_widget_show( hbox );
731 radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );
732 gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );
733 gtk_widget_show( radioOldStyle );
735 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );
737 radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );
738 gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );
739 gtk_widget_show( radioBobStyle );
741 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );
743 radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );
744 gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );
745 gtk_widget_show( radioCornerStyle );
747 // err, the q3r has an if or something so you need bob style checked before this
748 // is "ungreyed out" but you'll need to do that, as i suck :)
750 // djbob: er.... yeah um, im not at all sure how i'm gonna sort this
751 // djbob: think we need some button callback functions or smuffin
752 // FIXME: actually get around to doing what i suggested!!!!
754 checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );
755 gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );
756 gtk_widget_show( checkUseDetail );
758 // --------------------------- //
760 hbox = gtk_hbox_new( FALSE, 10 );
761 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
762 gtk_widget_show( hbox );
764 textMainTex = gtk_entry_new_with_max_length( 512 );
765 gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);
766 gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );
767 gtk_widget_show( textMainTex );
769 w = gtk_label_new( "Main Texture" );
770 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
771 gtk_widget_show( w );
773 // -------------------------- //
775 hbox = gtk_hbox_new( FALSE, 10 );
776 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
777 gtk_widget_show( hbox );
779 textRiserTex = gtk_entry_new_with_max_length( 512 );
780 gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );
781 gtk_widget_show( textRiserTex );
783 w = gtk_label_new( "Riser Texture" );
784 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
785 gtk_widget_show( w );
787 // -------------------------- //
788 w = gtk_hseparator_new();
789 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
790 gtk_widget_show( w );
792 hbox = gtk_hbox_new( FALSE, 10 );
793 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
794 gtk_widget_show( hbox );
796 w = gtk_button_new_with_label( "OK" );
797 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
798 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
799 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
800 gtk_widget_grab_default( w );
801 gtk_widget_show( w );
803 w = gtk_button_new_with_label( "Cancel" );
804 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
805 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
806 gtk_widget_show( w );
810 // +djbob: need our "little" modal loop mars :P
811 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
812 gtk_widget_show (window);
813 gtk_grab_add (window);
815 bool dialogError = TRUE;
820 gtk_main_iteration ();
826 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;
828 strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));
829 strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));
831 if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))
832 rs->direction = MOVE_NORTH;
833 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))
834 rs->direction = MOVE_SOUTH;
835 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))
836 rs->direction = MOVE_EAST;
837 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))
838 rs->direction = MOVE_WEST;
840 if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))
843 if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))
844 rs->style = STYLE_ORIGINAL;
845 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))
846 rs->style = STYLE_BOB;
847 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))
848 rs->style = STYLE_CORNER;
852 gtk_grab_remove (window);
853 gtk_widget_destroy (window);
858 // there we go, all done ... on my end at least, not bad for a night's work
861 EMessageBoxReturn DoDoorsBox(DoorRS* rs)
863 GtkWidget *window, *hbox, *vbox, *w;
864 GtkWidget *textFrontBackTex, *textTrimTex;
865 GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;
866 GtkWidget *comboMain, *comboTrim;
867 GtkWidget *buttonSetMain, *buttonSetTrim;
868 GtkWidget *radioNS, *radioEW;
869 GSList *radioOrientation;
871 EMessageBoxReturn ret;
874 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
876 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
877 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
879 gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );
881 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
883 g_object_set_data( G_OBJECT( window ), "loop", &loop );
884 g_object_set_data( G_OBJECT( window ), "ret", &ret );
886 gtk_widget_realize (window);
889 GList *listMainTextures = NULL;
890 GList *listTrimTextures = NULL;
891 LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);
892 LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);
894 vbox = gtk_vbox_new( FALSE, 10 );
895 gtk_container_add( GTK_CONTAINER( window ), vbox );
896 gtk_widget_show( vbox );
898 // -------------------------- //
900 hbox = gtk_hbox_new( FALSE, 10 );
901 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
902 gtk_widget_show( hbox );
904 textFrontBackTex = gtk_entry_new_with_max_length( 512 );
905 gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);
906 gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );
907 gtk_widget_show( textFrontBackTex );
909 w = gtk_label_new( "Door Front/Back Texture" );
910 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
911 gtk_widget_show( w );
913 // ------------------------ //
915 hbox = gtk_hbox_new( FALSE, 10 );
916 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
917 gtk_widget_show( hbox );
919 textTrimTex = gtk_entry_new_with_max_length( 512 );
920 gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );
921 gtk_widget_show( textTrimTex );
923 w = gtk_label_new( "Door Trim Texture" );
924 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
925 gtk_widget_show( w );
927 // ----------------------- //
929 hbox = gtk_hbox_new( FALSE, 10 );
930 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
931 gtk_widget_show( hbox );
933 // sp: horizontally ????
934 // djbob: yes mars, u can spell :]
935 checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );
936 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);
937 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );
938 gtk_widget_show( checkScaleMainH );
940 checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );
941 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);
942 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );
943 gtk_widget_show( checkScaleTrimH );
945 // ---------------------- //
947 hbox = gtk_hbox_new( FALSE, 10 );
948 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
949 gtk_widget_show( hbox );
951 checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );
952 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);
953 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );
954 gtk_widget_show( checkScaleMainV );
956 checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );
957 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );
958 gtk_widget_show( checkScaleTrimV );
960 // --------------------- //
962 hbox = gtk_hbox_new( FALSE, 10 );
963 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
964 gtk_widget_show( hbox );
966 // djbob: lists added
968 comboMain = gtk_combo_new();
969 gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );
970 gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );
971 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
972 gtk_widget_show( comboMain );
974 tw1.one = textFrontBackTex;
977 buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );
978 gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );
979 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );
980 gtk_widget_show( buttonSetMain );
982 // ------------------- //
984 hbox = gtk_hbox_new( FALSE, 10 );
985 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
986 gtk_widget_show( hbox );
988 comboTrim = gtk_combo_new();
989 gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );
990 gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );
991 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
992 gtk_widget_show( comboTrim );
994 tw2.one = textTrimTex;
997 buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );
998 gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );
999 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );
1000 gtk_widget_show( buttonSetTrim );
1002 // ------------------ //
1004 hbox = gtk_hbox_new( FALSE, 10 );
1005 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1006 gtk_widget_show( hbox );
1008 w = gtk_label_new( "Orientation" );
1009 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
1010 gtk_widget_show( w );
1012 // argh more radio buttons!
1013 radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );
1014 gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );
1015 gtk_widget_show( radioNS );
1017 radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );
1019 radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );
1020 gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );
1021 gtk_widget_show( radioEW );
1023 // ----------------- //
1025 w = gtk_hseparator_new();
1026 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1027 gtk_widget_show( w );
1029 // ----------------- //
1031 hbox = gtk_hbox_new( FALSE, 10 );
1032 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1033 gtk_widget_show( hbox );
1035 w = gtk_button_new_with_label( "OK" );
1036 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1037 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDOK ) );
1038 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1039 gtk_widget_grab_default( w );
1040 gtk_widget_show( w );
1042 w = gtk_button_new_with_label( "Cancel" );
1043 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1044 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
1045 gtk_widget_show( w );
1048 // ----------------- //
1051 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1052 gtk_widget_show (window);
1053 gtk_grab_add (window);
1056 gtk_main_iteration ();
1058 strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));
1059 strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));
1061 rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;
1062 rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;
1063 rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;
1064 rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;
1066 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))
1067 rs->nOrientation = DIRECTION_NS;
1068 else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))
1069 rs->nOrientation = DIRECTION_EW;
1071 gtk_grab_remove (window);
1072 gtk_widget_destroy (window);
1078 EMessageBoxReturn DoPathPlotterBox(PathPlotterRS* rs)
1080 GtkWidget *window, *w, *vbox, *hbox;
1082 GtkWidget *text1, *text2, *text3;
1083 GtkWidget *check1, *check2;
1085 EMessageBoxReturn ret;
1088 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1090 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1091 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1093 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1094 gtk_container_border_width (GTK_CONTAINER (window), 10);
1096 g_object_set_data (G_OBJECT (window), "loop", &loop);
1097 g_object_set_data (G_OBJECT (window), "ret", &ret);
1099 gtk_widget_realize (window);
1103 vbox = gtk_vbox_new (FALSE, 10);
1104 gtk_container_add (GTK_CONTAINER (window), vbox);
1105 gtk_widget_show (vbox);
1109 hbox = gtk_hbox_new (FALSE, 10);
1110 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1111 gtk_widget_show (hbox);
1115 text1 = gtk_entry_new_with_max_length(256);
1116 gtk_entry_set_text((GtkEntry*)text1, "25");
1117 gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);
1118 gtk_widget_show (text1);
1120 w = gtk_label_new ("Number Of Points");
1121 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1122 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1123 gtk_widget_show (w);
1127 hbox = gtk_hbox_new (FALSE, 10);
1128 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1129 gtk_widget_show (hbox);
1133 text2 = gtk_entry_new_with_max_length(256);
1134 gtk_entry_set_text((GtkEntry*)text2, "3");
1135 gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);
1136 gtk_widget_show (text2);
1138 w = gtk_label_new ("Multipler");
1139 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1140 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1141 gtk_widget_show (w);
1145 w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");
1146 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
1147 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1148 gtk_widget_show (w);
1150 hbox = gtk_hbox_new (FALSE, 10);
1151 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1152 gtk_widget_show (hbox);
1156 text3 = gtk_entry_new_with_max_length(256);
1157 gtk_entry_set_text((GtkEntry*)text3, "-800");
1158 gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);
1159 gtk_widget_show (text3);
1161 w = gtk_label_new ("Gravity");
1162 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1163 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1164 gtk_widget_show (w);
1168 w = gtk_hseparator_new();
1169 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1170 gtk_widget_show( w );
1172 check1 = gtk_check_button_new_with_label( "No Dynamic Update" );
1173 gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );
1174 gtk_widget_show( check1 );
1176 check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );
1177 gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );
1178 gtk_widget_show( check2 );
1183 // ----------------- //
1185 w = gtk_hseparator_new();
1186 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1187 gtk_widget_show( w );
1189 // ----------------- //
1191 hbox = gtk_hbox_new( FALSE, 10 );
1192 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1193 gtk_widget_show( hbox );
1195 w = gtk_button_new_with_label( "Enable" );
1196 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1197 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDYES ) );
1198 gtk_widget_show( w );
1200 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1201 gtk_widget_grab_default( w );
1203 w = gtk_button_new_with_label( "Disable" );
1204 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1205 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDNO ) );
1206 gtk_widget_show( w );
1208 w = gtk_button_new_with_label( "Cancel" );
1209 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1210 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( eIDCANCEL ) );
1211 gtk_widget_show( w );
1215 // ----------------- //
1217 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1218 gtk_widget_show (window);
1219 gtk_grab_add (window);
1221 bool dialogError = TRUE;
1226 gtk_main_iteration ();
1228 dialogError = FALSE;
1232 if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))
1235 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))
1238 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))
1241 rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;
1242 rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;
1246 gtk_grab_remove (window);
1247 gtk_widget_destroy (window);
1252 EMessageBoxReturn DoCTFColourChangeBox ()
1254 GtkWidget *window, *w, *vbox, *hbox;
1255 EMessageBoxReturn ret;
1258 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1260 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1261 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1263 gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");
1264 gtk_container_border_width (GTK_CONTAINER (window), 10);
1266 g_object_set_data (G_OBJECT (window), "loop", &loop);
1267 g_object_set_data (G_OBJECT (window), "ret", &ret);
1269 gtk_widget_realize (window);
1273 vbox = gtk_vbox_new (FALSE, 10);
1274 gtk_container_add (GTK_CONTAINER (window), vbox);
1275 gtk_widget_show (vbox);
1279 hbox = gtk_hbox_new( FALSE, 10 );
1280 gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
1281 gtk_widget_show( hbox );
1283 // ---- hbox ---- ok/cancel buttons
1285 w = gtk_button_new_with_label ("Red->Blue");
1286 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1287 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
1289 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1290 gtk_widget_grab_default (w);
1291 gtk_widget_show (w);
1293 w = gtk_button_new_with_label ("Blue->Red");
1294 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1295 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
1296 gtk_widget_show (w);
1298 w = gtk_button_new_with_label ("Cancel");
1299 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1300 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1301 gtk_widget_show (w);
1308 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1309 gtk_widget_show (window);
1310 gtk_grab_add (window);
1313 gtk_main_iteration ();
1315 gtk_grab_remove (window);
1316 gtk_widget_destroy (window);
1321 EMessageBoxReturn DoResetTextureBox (ResetTextureRS* rs)
1325 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1327 EMessageBoxReturn ret;
1330 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1332 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1333 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1335 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1336 gtk_container_border_width (GTK_CONTAINER (window), 10);
1338 g_object_set_data (G_OBJECT (window), "loop", &loop);
1339 g_object_set_data (G_OBJECT (window), "ret", &ret);
1341 gtk_widget_realize (window);
1343 vbox = gtk_vbox_new (FALSE, 10);
1344 gtk_container_add (GTK_CONTAINER (window), vbox);
1345 gtk_widget_show (vbox);
1349 hbox = gtk_hbox_new (FALSE, 10);
1350 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1351 gtk_widget_show (hbox);
1355 texSelected = "Currently Selected Face: ";
1357 if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {
1358 texSelected += GetCurrentTexture();
1362 w = gtk_label_new (texSelected);
1363 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1364 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1365 gtk_widget_show (w);
1369 frame = gtk_frame_new ("Reset Texture Names");
1370 gtk_widget_show (frame);
1371 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1373 table = gtk_table_new (2, 3, TRUE);
1374 gtk_widget_show (table);
1375 gtk_container_add (GTK_CONTAINER (frame), table);
1376 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1377 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1378 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1382 dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");
1383 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1384 gtk_widget_show (dlgTexReset.cbTexChange);
1385 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,
1386 (GtkAttachOptions) (GTK_FILL),
1387 (GtkAttachOptions) (0), 0, 0);
1389 w = gtk_label_new ("Old Name: ");
1390 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1391 (GtkAttachOptions) (GTK_FILL),
1392 (GtkAttachOptions) (0), 0, 0);
1393 gtk_widget_show (w);
1395 dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);
1396 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);
1397 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,
1398 (GtkAttachOptions) (GTK_FILL),
1399 (GtkAttachOptions) (0), 0, 0);
1400 gtk_widget_show (dlgTexReset.editTexOld);
1402 w = gtk_label_new ("New Name: ");
1403 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1404 (GtkAttachOptions) (GTK_FILL),
1405 (GtkAttachOptions) (0), 0, 0);
1406 gtk_widget_show (w);
1408 dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);
1409 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);
1410 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,
1411 (GtkAttachOptions) (GTK_FILL),
1412 (GtkAttachOptions) (0), 0, 0);
1413 gtk_widget_show (dlgTexReset.editTexNew);
1417 frame = gtk_frame_new ("Reset Scales");
1418 gtk_widget_show (frame);
1419 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1421 table = gtk_table_new (2, 3, TRUE);
1422 gtk_widget_show (table);
1423 gtk_container_add (GTK_CONTAINER (frame), table);
1424 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1425 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1426 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1430 dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");
1431 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1432 gtk_widget_show (dlgTexReset.cbScaleHor);
1433 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,
1434 (GtkAttachOptions) (GTK_FILL),
1435 (GtkAttachOptions) (0), 0, 0);
1437 w = gtk_label_new ("New Horizontal Scale: ");
1438 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1439 (GtkAttachOptions) (GTK_FILL),
1440 (GtkAttachOptions) (0), 0, 0);
1441 gtk_widget_show (w);
1443 dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);
1444 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");
1445 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,
1446 (GtkAttachOptions) (GTK_FILL),
1447 (GtkAttachOptions) (0), 0, 0);
1448 gtk_widget_show (dlgTexReset.editScaleHor);
1451 dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");
1452 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1453 gtk_widget_show (dlgTexReset.cbScaleVert);
1454 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,
1455 (GtkAttachOptions) (GTK_FILL),
1456 (GtkAttachOptions) (0), 0, 0);
1458 w = gtk_label_new ("New Vertical Scale: ");
1459 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1460 (GtkAttachOptions) (GTK_FILL),
1461 (GtkAttachOptions) (0), 0, 0);
1462 gtk_widget_show (w);
1464 dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);
1465 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");
1466 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,
1467 (GtkAttachOptions) (GTK_FILL),
1468 (GtkAttachOptions) (0), 0, 0);
1469 gtk_widget_show (dlgTexReset.editScaleVert);
1473 frame = gtk_frame_new ("Reset Shift");
1474 gtk_widget_show (frame);
1475 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1477 table = gtk_table_new (2, 3, TRUE);
1478 gtk_widget_show (table);
1479 gtk_container_add (GTK_CONTAINER (frame), table);
1480 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1481 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1482 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1486 dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");
1487 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1488 gtk_widget_show (dlgTexReset.cbShiftHor);
1489 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,
1490 (GtkAttachOptions) (GTK_FILL),
1491 (GtkAttachOptions) (0), 0, 0);
1493 w = gtk_label_new ("New Horizontal Shift: ");
1494 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1495 (GtkAttachOptions) (GTK_FILL),
1496 (GtkAttachOptions) (0), 0, 0);
1497 gtk_widget_show (w);
1499 dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);
1500 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");
1501 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,
1502 (GtkAttachOptions) (GTK_FILL),
1503 (GtkAttachOptions) (0), 0, 0);
1504 gtk_widget_show (dlgTexReset.editShiftHor);
1507 dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");
1508 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1509 gtk_widget_show (dlgTexReset.cbShiftVert);
1510 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,
1511 (GtkAttachOptions) (GTK_FILL),
1512 (GtkAttachOptions) (0), 0, 0);
1514 w = gtk_label_new ("New Vertical Shift: ");
1515 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1516 (GtkAttachOptions) (GTK_FILL),
1517 (GtkAttachOptions) (0), 0, 0);
1518 gtk_widget_show (w);
1520 dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);
1521 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");
1522 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,
1523 (GtkAttachOptions) (GTK_FILL),
1524 (GtkAttachOptions) (0), 0, 0);
1525 gtk_widget_show (dlgTexReset.editShiftVert);
1529 frame = gtk_frame_new ("Reset Rotation");
1530 gtk_widget_show (frame);
1531 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1533 table = gtk_table_new (1, 3, TRUE);
1534 gtk_widget_show (table);
1535 gtk_container_add (GTK_CONTAINER (frame), table);
1536 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1537 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1538 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1542 dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");
1543 gtk_widget_show (dlgTexReset.cbRotation);
1544 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,
1545 (GtkAttachOptions) (GTK_FILL),
1546 (GtkAttachOptions) (0), 0, 0);
1548 w = gtk_label_new ("New Rotation Value: ");
1549 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1550 (GtkAttachOptions) (GTK_FILL),
1551 (GtkAttachOptions) (0), 0, 0);
1552 gtk_widget_show (w);
1554 dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);
1555 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");
1556 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,
1557 (GtkAttachOptions) (GTK_FILL),
1558 (GtkAttachOptions) (0), 0, 0);
1559 gtk_widget_show (dlgTexReset.editRotation);
1563 hbox = gtk_hbox_new (FALSE, 10);
1564 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1565 gtk_widget_show (hbox);
1569 w = gtk_button_new_with_label ("Use Selected Brushes");
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 (eIDOK));
1573 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1574 gtk_widget_grab_default (w);
1575 gtk_widget_show (w);
1577 w = gtk_button_new_with_label ("Use All Brushes");
1578 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1579 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDYES));
1580 gtk_widget_show (w);
1582 w = gtk_button_new_with_label ("Cancel");
1583 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1584 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1585 gtk_widget_show (w);
1592 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1593 gtk_widget_show (window);
1594 gtk_grab_add (window);
1596 Update_TextureReseter();
1598 bool dialogError = TRUE;
1603 gtk_main_iteration ();
1605 dialogError = FALSE;
1607 if(ret != eIDCANCEL)
1609 rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
1610 if(rs->bResetRotation)
1611 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))
1614 rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
1615 if(rs->bResetScale[0])
1616 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))
1619 rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
1620 if(rs->bResetScale[1])
1621 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))
1624 rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
1625 if(rs->bResetShift[0])
1626 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))
1629 rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
1630 if(rs->bResetShift[1])
1631 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))
1634 rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
1635 if(rs->bResetTextureName)
1637 strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));
1638 strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));
1643 gtk_grab_remove (window);
1644 gtk_widget_destroy (window);
1649 EMessageBoxReturn DoTrainThingBox (TrainThingRS* rs)
1653 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1655 GtkWidget *radiusX, *radiusY;
1656 GtkWidget *angleStart, *angleEnd;
1657 GtkWidget *heightStart, *heightEnd;
1658 GtkWidget *numPoints;
1660 EMessageBoxReturn ret;
1663 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1665 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1666 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1668 gtk_window_set_title (GTK_WINDOW (window), "Train Thing");
1669 gtk_container_border_width (GTK_CONTAINER (window), 10);
1671 gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
1672 gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
1674 gtk_widget_realize (window);
1676 vbox = gtk_vbox_new (FALSE, 10);
1677 gtk_container_add (GTK_CONTAINER (window), vbox);
1678 gtk_widget_show (vbox);
1682 hbox = gtk_hbox_new (FALSE, 10);
1683 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1684 gtk_widget_show (hbox);
1688 frame = gtk_frame_new ("Radii");
1689 gtk_widget_show (frame);
1690 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1692 table = gtk_table_new (2, 3, TRUE);
1693 gtk_widget_show (table);
1694 gtk_container_add (GTK_CONTAINER (frame), table);
1695 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1696 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1697 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1701 w = gtk_label_new ("X: ");
1702 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1703 (GtkAttachOptions) (GTK_FILL),
1704 (GtkAttachOptions) (0), 0, 0);
1705 gtk_widget_show (w);
1707 radiusX = gtk_entry_new_with_max_length(256);
1708 gtk_entry_set_text(GTK_ENTRY(radiusX), "100");
1709 gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,
1710 (GtkAttachOptions) (GTK_FILL),
1711 (GtkAttachOptions) (0), 0, 0);
1712 gtk_widget_show (radiusX);
1716 w = gtk_label_new ("Y: ");
1717 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1718 (GtkAttachOptions) (GTK_FILL),
1719 (GtkAttachOptions) (0), 0, 0);
1720 gtk_widget_show (w);
1722 radiusY = gtk_entry_new_with_max_length(256);
1723 gtk_entry_set_text(GTK_ENTRY(radiusY), "100");
1724 gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,
1725 (GtkAttachOptions) (GTK_FILL),
1726 (GtkAttachOptions) (0), 0, 0);
1727 gtk_widget_show (radiusY);
1731 frame = gtk_frame_new ("Angles");
1732 gtk_widget_show (frame);
1733 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1735 table = gtk_table_new (2, 3, TRUE);
1736 gtk_widget_show (table);
1737 gtk_container_add (GTK_CONTAINER (frame), table);
1738 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1739 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1740 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1744 w = gtk_label_new ("Start: ");
1745 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1746 (GtkAttachOptions) (GTK_FILL),
1747 (GtkAttachOptions) (0), 0, 0);
1748 gtk_widget_show (w);
1750 angleStart = gtk_entry_new_with_max_length(256);
1751 gtk_entry_set_text(GTK_ENTRY(angleStart), "0");
1752 gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,
1753 (GtkAttachOptions) (GTK_FILL),
1754 (GtkAttachOptions) (0), 0, 0);
1755 gtk_widget_show (angleStart);
1759 w = gtk_label_new ("End: ");
1760 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1761 (GtkAttachOptions) (GTK_FILL),
1762 (GtkAttachOptions) (0), 0, 0);
1763 gtk_widget_show (w);
1765 angleEnd = gtk_entry_new_with_max_length(256);
1766 gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");
1767 gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,
1768 (GtkAttachOptions) (GTK_FILL),
1769 (GtkAttachOptions) (0), 0, 0);
1770 gtk_widget_show (angleEnd);
1773 frame = gtk_frame_new ("Height");
1774 gtk_widget_show (frame);
1775 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1777 table = gtk_table_new (2, 3, TRUE);
1778 gtk_widget_show (table);
1779 gtk_container_add (GTK_CONTAINER (frame), table);
1780 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1781 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1782 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1786 w = gtk_label_new ("Start: ");
1787 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1788 (GtkAttachOptions) (GTK_FILL),
1789 (GtkAttachOptions) (0), 0, 0);
1790 gtk_widget_show (w);
1792 heightStart = gtk_entry_new_with_max_length(256);
1793 gtk_entry_set_text(GTK_ENTRY(heightStart), "0");
1794 gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,
1795 (GtkAttachOptions) (GTK_FILL),
1796 (GtkAttachOptions) (0), 0, 0);
1797 gtk_widget_show (heightStart);
1801 w = gtk_label_new ("End: ");
1802 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1803 (GtkAttachOptions) (GTK_FILL),
1804 (GtkAttachOptions) (0), 0, 0);
1805 gtk_widget_show (w);
1807 heightEnd = gtk_entry_new_with_max_length(256);
1808 gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");
1809 gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,
1810 (GtkAttachOptions) (GTK_FILL),
1811 (GtkAttachOptions) (0), 0, 0);
1812 gtk_widget_show (heightEnd);
1816 frame = gtk_frame_new ("Points");
1817 gtk_widget_show (frame);
1818 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1820 table = gtk_table_new (2, 3, TRUE);
1821 gtk_widget_show (table);
1822 gtk_container_add (GTK_CONTAINER (frame), table);
1823 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1824 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1825 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1829 w = gtk_label_new ("Number: ");
1830 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1831 (GtkAttachOptions) (GTK_FILL),
1832 (GtkAttachOptions) (0), 0, 0);
1833 gtk_widget_show (w);
1835 numPoints = gtk_entry_new_with_max_length(256);
1836 gtk_entry_set_text(GTK_ENTRY(numPoints), "0");
1837 gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,
1838 (GtkAttachOptions) (GTK_FILL),
1839 (GtkAttachOptions) (0), 0, 0);
1840 gtk_widget_show (numPoints);
1843 hbox = gtk_hbox_new (FALSE, 10);
1844 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1845 gtk_widget_show (hbox);
1849 w = gtk_button_new_with_label ("Ok");
1850 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1851 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
1853 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1854 gtk_widget_grab_default (w);
1855 gtk_widget_show (w);
1857 w = gtk_button_new_with_label ("Cancel");
1858 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1859 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
1860 gtk_widget_show (w);
1867 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1868 gtk_widget_show (window);
1869 gtk_grab_add (window);
1871 bool dialogError = TRUE;
1876 gtk_main_iteration ();
1878 dialogError = FALSE;
1880 if(ret != eIDCANCEL)
1882 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))
1885 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))
1888 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))
1891 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))
1894 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))
1897 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))
1900 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))
1905 gtk_grab_remove (window);
1906 gtk_widget_destroy (window);