2 BobToolz plugin for GtkRadiant
3 Copyright (C) 2001 Gordon Biggans
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include "../StdAfx.h"
21 #include "dialogs-gtk.h"
22 #include "../funchandlers.h"
26 /*--------------------------------
28 ---------------------------------*/
31 GtkWidget *cbTexChange;
32 GtkWidget *editTexOld, *editTexNew;
34 GtkWidget *cbScaleHor, *cbScaleVert;
35 GtkWidget *editScaleHor, *editScaleVert;
37 GtkWidget *cbShiftHor, *cbShiftVert;
38 GtkWidget *editShiftHor, *editShiftVert;
40 GtkWidget *cbRotation;
41 GtkWidget *editRotation;
44 dlg_texReset_t dlgTexReset;
46 void Update_TextureReseter();
48 static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)
50 Update_TextureReseter();
53 void Update_TextureReseter()
57 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
58 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);
59 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);
61 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
62 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);
64 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
65 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);
67 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
68 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);
70 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
71 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);
73 check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
74 gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);
77 static void dialog_button_callback (GtkWidget *widget, gpointer data)
82 parent = gtk_widget_get_toplevel (widget);
83 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
84 ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
90 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
94 gtk_widget_hide (widget);
95 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
101 static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)
103 TwinWidget* tw = (TwinWidget*)data;
105 GtkEntry* entry = GTK_ENTRY( tw->one );
106 GtkCombo* combo = GTK_COMBO( tw->two );
108 const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));
109 gtk_entry_set_text( entry, tex);
112 /*--------------------------------
113 Data validation Routines
114 ---------------------------------*/
116 bool ValidateTextFloat(const char* pData, char* error_title, float* value)
120 float testNum = (float)atof(pData);
122 if((testNum == 0.0f) && strcmp(pData, "0"))
124 DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
134 DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
138 bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)
140 char error_buffer[256];
141 sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);
145 float testNum = (float)atof(pData);
147 if((testNum < min) || (testNum > max))
149 DoMessageBox(error_buffer, error_title, MB_OK);
159 DoMessageBox(error_buffer, error_title, MB_OK);
163 bool ValidateTextIntRange(const char* pData, int min, int max, char* error_title, int* value)
165 char error_buffer[256];
166 sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);
170 int testNum = atoi(pData);
172 if((testNum < min) || (testNum > max))
174 DoMessageBox(error_buffer, error_title, MB_OK);
184 DoMessageBox(error_buffer, error_title, MB_OK);
188 bool ValidateTextInt(const char* pData, char* error_title, int* value)
192 int testNum = atoi(pData);
194 if((testNum == 0) && strcmp(pData, "0"))
196 DoMessageBox("Please Enter An Integer", error_title, MB_OK);
206 DoMessageBox("Please Enter An Integer", error_title, MB_OK);
210 /*--------------------------------
212 ---------------------------------*/
216 Major clean up of variable names etc required, excluding Mars's ones,
217 which are nicely done :)
221 int DoMessageBox (const char* lpText, const char* lpCaption, guint32 uType)
223 GtkWidget *window, *w, *vbox, *hbox;
224 int mode = (uType & MB_TYPEMASK), ret, loop = 1;
226 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
227 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
228 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
229 gtk_signal_connect (GTK_OBJECT (window), "destroy",
230 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
231 gtk_window_set_title (GTK_WINDOW (window), lpCaption);
232 gtk_container_border_width (GTK_CONTAINER (window), 10);
233 g_object_set_data (G_OBJECT (window), "loop", &loop);
234 g_object_set_data (G_OBJECT (window), "ret", &ret);
235 gtk_widget_realize (window);
237 vbox = gtk_vbox_new (FALSE, 10);
238 gtk_container_add (GTK_CONTAINER (window), vbox);
239 gtk_widget_show (vbox);
241 w = gtk_label_new (lpText);
242 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
243 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
246 w = gtk_hseparator_new ();
247 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
250 hbox = gtk_hbox_new (FALSE, 10);
251 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
252 gtk_widget_show (hbox);
256 w = gtk_button_new_with_label ("Ok");
257 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
258 gtk_signal_connect (GTK_OBJECT (w), "clicked",
259 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
260 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
261 gtk_widget_grab_default (w);
265 else if (mode == MB_OKCANCEL)
267 w = gtk_button_new_with_label ("Ok");
268 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
269 gtk_signal_connect (GTK_OBJECT (w), "clicked",
270 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
271 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
272 gtk_widget_grab_default (w);
275 w = gtk_button_new_with_label ("Cancel");
276 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
277 gtk_signal_connect (GTK_OBJECT (w), "clicked",
278 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
282 else if (mode == MB_YESNOCANCEL)
284 w = gtk_button_new_with_label ("Yes");
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 (IDYES));
288 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
289 gtk_widget_grab_default (w);
292 w = gtk_button_new_with_label ("No");
293 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
294 gtk_signal_connect (GTK_OBJECT (w), "clicked",
295 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
298 w = gtk_button_new_with_label ("Cancel");
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 (IDCANCEL));
305 else /* if (mode == MB_YESNO) */
307 w = gtk_button_new_with_label ("Yes");
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 (IDYES));
311 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
312 gtk_widget_grab_default (w);
315 w = gtk_button_new_with_label ("No");
316 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
317 gtk_signal_connect (GTK_OBJECT (w), "clicked",
318 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
323 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
324 gtk_widget_show (window);
325 gtk_grab_add (window);
328 gtk_main_iteration ();
330 gtk_grab_remove (window);
331 gtk_widget_destroy (window);
336 int DoIntersectBox (IntersectRS* rs)
338 GtkWidget *window, *w, *vbox, *hbox;
339 GtkWidget *radio1, *radio2;
340 GtkWidget *check1, *check2;
343 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
345 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
346 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
348 gtk_window_set_title (GTK_WINDOW (window), "Intersect");
349 gtk_container_border_width (GTK_CONTAINER (window), 10);
351 g_object_set_data (G_OBJECT (window), "loop", &loop);
352 g_object_set_data (G_OBJECT (window), "ret", &ret);
354 gtk_widget_realize (window);
358 vbox = gtk_vbox_new (FALSE, 10);
359 gtk_container_add (GTK_CONTAINER (window), vbox);
360 gtk_widget_show (vbox);
364 radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");
365 gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);
366 gtk_widget_show (radio1);
368 radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");
369 gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);
370 gtk_widget_show (radio2);
372 w = gtk_hseparator_new ();
373 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
376 check1 = gtk_check_button_new_with_label("Include Detail Brushes");
377 gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);
378 gtk_widget_show (check1);
380 check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");
381 gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);
382 gtk_widget_show (check2);
384 hbox = gtk_hbox_new (FALSE, 10);
385 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
386 gtk_widget_show (hbox);
388 // ---- hbox ---- ok/cancel buttons
390 w = gtk_button_new_with_label ("Ok");
391 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
392 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
394 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
395 gtk_widget_grab_default (w);
398 w = gtk_button_new_with_label ("Cancel");
399 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
400 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
408 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
409 gtk_widget_show (window);
410 gtk_grab_add (window);
413 gtk_main_iteration ();
415 if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))
416 rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;
417 else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))
418 rs->nBrushOptions = BRUSH_OPT_SELECTED;
420 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
421 rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
423 gtk_grab_remove (window);
424 gtk_widget_destroy (window);
429 int DoPolygonBox (PolygonRS* rs)
431 GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;
433 GtkWidget *check1, *check2, *check3;
434 GtkWidget *text1, *text2;
438 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
440 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
441 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
443 gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");
444 gtk_container_border_width (GTK_CONTAINER (window), 10);
446 g_object_set_data (G_OBJECT (window), "loop", &loop);
447 g_object_set_data (G_OBJECT (window), "ret", &ret);
449 gtk_widget_realize (window);
453 vbox = gtk_vbox_new (FALSE, 10);
454 gtk_container_add (GTK_CONTAINER (window), vbox);
455 gtk_widget_show (vbox);
459 hbox = gtk_hbox_new (FALSE, 10);
460 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
461 gtk_widget_show (hbox);
466 vbox2 = gtk_vbox_new (FALSE, 10);
467 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
468 gtk_widget_show (vbox2);
472 hbox2 = gtk_hbox_new (FALSE, 10);
473 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
474 gtk_widget_show (hbox2);
478 text1 = gtk_entry_new_with_max_length(256);
479 gtk_entry_set_text((GtkEntry*)text1, "3");
480 gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);
481 gtk_widget_show (text1);
483 w = gtk_label_new ("Number Of Sides");
484 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
485 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
490 hbox2 = gtk_hbox_new (FALSE, 10);
491 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
492 gtk_widget_show (hbox2);
496 text2 = gtk_entry_new_with_max_length(256);
497 gtk_entry_set_text((GtkEntry*)text2, "8");
498 gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);
499 gtk_widget_show (text2);
501 w = gtk_label_new ("Border Width");
502 gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
503 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
512 vbox2 = gtk_vbox_new (FALSE, 10);
513 gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
514 gtk_widget_show (vbox2);
518 check1 = gtk_check_button_new_with_label("Use Border");
519 gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);
520 gtk_widget_show (check1);
523 check2 = gtk_check_button_new_with_label("Inverse Polygon");
524 gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);
525 gtk_widget_show (check2);
528 check3 = gtk_check_button_new_with_label("Align Top Edge");
529 gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);
530 gtk_widget_show (check3);
536 hbox = gtk_hbox_new (FALSE, 10);
537 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
538 gtk_widget_show (hbox);
542 w = gtk_button_new_with_label ("Ok");
543 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
544 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
546 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
547 gtk_widget_grab_default (w);
550 w = gtk_button_new_with_label ("Cancel");
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 (IDCANCEL));
560 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
561 gtk_widget_show (window);
562 gtk_grab_add (window);
564 bool dialogError = TRUE;
569 gtk_main_iteration ();
575 rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
576 rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
577 rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;
579 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))
584 if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))
590 gtk_grab_remove (window);
591 gtk_widget_destroy (window);
597 // for stair builder stuck as close as i could to the MFC version
598 // obviously feel free to change it at will :)
599 int DoBuildStairsBox(BuildStairsRS* rs)
601 // i made widgets for just about everything ... i think that's what i need to do dunno tho
602 GtkWidget *window, *w, *vbox, *hbox;
603 GtkWidget *textStairHeight, *textRiserTex, *textMainTex;
604 GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value
605 GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;
606 GtkWidget *checkUseDetail;
607 GSList *radioDirection, *radioStyle;
612 char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";
614 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
616 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
617 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
619 gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );
621 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
623 g_object_set_data (G_OBJECT (window), "loop", &loop);
624 g_object_set_data (G_OBJECT (window), "ret", &ret);
626 gtk_widget_realize (window);
629 vbox = gtk_vbox_new( FALSE, 10 );
630 gtk_container_add( GTK_CONTAINER( window ), vbox );
631 gtk_widget_show( vbox );
633 hbox = gtk_hbox_new( FALSE, 10 );
634 gtk_container_add( GTK_CONTAINER( vbox ), hbox );
635 gtk_widget_show( hbox );
637 // dunno if you want this text or not ...
638 w = gtk_label_new( text );
639 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...
640 gtk_widget_show( w );
642 w = gtk_hseparator_new();
643 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
644 gtk_widget_show( w );
646 // ------------------------- // indenting == good way of keeping track of lines :)
649 hbox = gtk_hbox_new( FALSE, 10 );
650 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
651 gtk_widget_show( hbox );
653 textStairHeight = gtk_entry_new_with_max_length( 256 );
654 gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );
655 gtk_widget_show( textStairHeight );
657 w = gtk_label_new( "Stair Height" );
658 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
659 gtk_widget_show( w );
661 // ------------------------- //
663 hbox = gtk_hbox_new( FALSE, 10 );
664 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
665 gtk_widget_show( hbox );
667 w = gtk_label_new( "Direction:" );
668 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
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 // radio buttons confuse me ...
678 // but this _looks_ right
680 // djbob: actually it looks very nice :), slightly better than the way i did it
681 // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh
683 radioNorth = gtk_radio_button_new_with_label( NULL, "North" );
684 gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );
685 gtk_widget_show( radioNorth );
687 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );
689 radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );
690 gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );
691 gtk_widget_show( radioSouth );
693 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );
695 radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );
696 gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );
697 gtk_widget_show( radioEast );
699 radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );
701 radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );
702 gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );
703 gtk_widget_show( radioWest );
705 // --------------------------- //
707 hbox = gtk_hbox_new( FALSE, 10 );
708 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
709 gtk_widget_show( hbox );
711 w = gtk_label_new( "Style:" );
712 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
713 gtk_widget_show( w );
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 radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );
722 gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );
723 gtk_widget_show( radioOldStyle );
725 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );
727 radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );
728 gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );
729 gtk_widget_show( radioBobStyle );
731 radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );
733 radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );
734 gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );
735 gtk_widget_show( radioCornerStyle );
737 // err, the q3r has an if or something so you need bob style checked before this
738 // is "ungreyed out" but you'll need to do that, as i suck :)
740 // djbob: er.... yeah um, im not at all sure how i'm gonna sort this
741 // djbob: think we need some button callback functions or smuffin
742 // FIXME: actually get around to doing what i suggested!!!!
744 checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );
745 gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );
746 gtk_widget_show( checkUseDetail );
748 // --------------------------- //
750 hbox = gtk_hbox_new( FALSE, 10 );
751 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
752 gtk_widget_show( hbox );
754 textMainTex = gtk_entry_new_with_max_length( 512 );
755 gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);
756 gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );
757 gtk_widget_show( textMainTex );
759 w = gtk_label_new( "Main Texture" );
760 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
761 gtk_widget_show( w );
763 // -------------------------- //
765 hbox = gtk_hbox_new( FALSE, 10 );
766 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
767 gtk_widget_show( hbox );
769 textRiserTex = gtk_entry_new_with_max_length( 512 );
770 gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );
771 gtk_widget_show( textRiserTex );
773 w = gtk_label_new( "Riser Texture" );
774 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
775 gtk_widget_show( w );
777 // -------------------------- //
778 w = gtk_hseparator_new();
779 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
780 gtk_widget_show( w );
782 hbox = gtk_hbox_new( FALSE, 10 );
783 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
784 gtk_widget_show( hbox );
786 w = gtk_button_new_with_label( "OK" );
787 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
788 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
789 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
790 gtk_widget_grab_default( w );
791 gtk_widget_show( w );
793 w = gtk_button_new_with_label( "Cancel" );
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( IDCANCEL ) );
796 gtk_widget_show( w );
800 // +djbob: need our "little" modal loop mars :P
801 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
802 gtk_widget_show (window);
803 gtk_grab_add (window);
805 bool dialogError = TRUE;
810 gtk_main_iteration ();
816 rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;
818 strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));
819 strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));
821 if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))
822 rs->direction = MOVE_NORTH;
823 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))
824 rs->direction = MOVE_SOUTH;
825 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))
826 rs->direction = MOVE_EAST;
827 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))
828 rs->direction = MOVE_WEST;
830 if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))
833 if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))
834 rs->style = STYLE_ORIGINAL;
835 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))
836 rs->style = STYLE_BOB;
837 else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))
838 rs->style = STYLE_CORNER;
842 gtk_grab_remove (window);
843 gtk_widget_destroy (window);
848 // there we go, all done ... on my end at least, not bad for a night's work
851 int DoDoorsBox(DoorRS* rs)
853 GtkWidget *window, *hbox, *vbox, *w;
854 GtkWidget *textFrontBackTex, *textTrimTex;
855 GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;
856 GtkWidget *comboMain, *comboTrim;
857 GtkWidget *buttonSetMain, *buttonSetTrim;
858 GtkWidget *radioNS, *radioEW;
859 GSList *radioOrientation;
865 window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
867 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
868 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
870 gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );
872 gtk_container_border_width( GTK_CONTAINER( window ), 10 );
874 g_object_set_data( G_OBJECT( window ), "loop", &loop );
875 g_object_set_data( G_OBJECT( window ), "ret", &ret );
877 gtk_widget_realize (window);
880 GList *listMainTextures = NULL;
881 GList *listTrimTextures = NULL;
882 LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);
883 LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);
885 vbox = gtk_vbox_new( FALSE, 10 );
886 gtk_container_add( GTK_CONTAINER( window ), vbox );
887 gtk_widget_show( vbox );
889 // -------------------------- //
891 hbox = gtk_hbox_new( FALSE, 10 );
892 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
893 gtk_widget_show( hbox );
895 textFrontBackTex = gtk_entry_new_with_max_length( 512 );
896 gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);
897 gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );
898 gtk_widget_show( textFrontBackTex );
900 w = gtk_label_new( "Door Front/Back Texture" );
901 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
902 gtk_widget_show( w );
904 // ------------------------ //
906 hbox = gtk_hbox_new( FALSE, 10 );
907 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
908 gtk_widget_show( hbox );
910 textTrimTex = gtk_entry_new_with_max_length( 512 );
911 gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );
912 gtk_widget_show( textTrimTex );
914 w = gtk_label_new( "Door Trim Texture" );
915 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
916 gtk_widget_show( w );
918 // ----------------------- //
920 hbox = gtk_hbox_new( FALSE, 10 );
921 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
922 gtk_widget_show( hbox );
924 // sp: horizontally ????
925 // djbob: yes mars, u can spell :]
926 checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );
927 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);
928 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );
929 gtk_widget_show( checkScaleMainH );
931 checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );
932 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);
933 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );
934 gtk_widget_show( checkScaleTrimH );
936 // ---------------------- //
938 hbox = gtk_hbox_new( FALSE, 10 );
939 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
940 gtk_widget_show( hbox );
942 checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );
943 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);
944 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );
945 gtk_widget_show( checkScaleMainV );
947 checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );
948 gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );
949 gtk_widget_show( checkScaleTrimV );
951 // --------------------- //
953 hbox = gtk_hbox_new( FALSE, 10 );
954 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
955 gtk_widget_show( hbox );
957 // djbob: lists added
959 comboMain = gtk_combo_new();
960 gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );
961 gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );
962 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
963 gtk_widget_show( comboMain );
965 tw1.one = textFrontBackTex;
968 buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );
969 gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );
970 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );
971 gtk_widget_show( buttonSetMain );
973 // ------------------- //
975 hbox = gtk_hbox_new( FALSE, 10 );
976 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
977 gtk_widget_show( hbox );
979 comboTrim = gtk_combo_new();
980 gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );
981 gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );
982 gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
983 gtk_widget_show( comboTrim );
985 tw2.one = textTrimTex;
988 buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );
989 gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );
990 gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );
991 gtk_widget_show( buttonSetTrim );
993 // ------------------ //
995 hbox = gtk_hbox_new( FALSE, 10 );
996 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
997 gtk_widget_show( hbox );
999 w = gtk_label_new( "Orientation" );
1000 gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
1001 gtk_widget_show( w );
1003 // argh more radio buttons!
1004 radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );
1005 gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );
1006 gtk_widget_show( radioNS );
1008 radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );
1010 radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );
1011 gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );
1012 gtk_widget_show( radioEW );
1014 // ----------------- //
1016 w = gtk_hseparator_new();
1017 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1018 gtk_widget_show( w );
1020 // ----------------- //
1022 hbox = gtk_hbox_new( FALSE, 10 );
1023 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1024 gtk_widget_show( hbox );
1026 w = gtk_button_new_with_label( "OK" );
1027 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1028 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
1029 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1030 gtk_widget_grab_default( w );
1031 gtk_widget_show( w );
1033 w = gtk_button_new_with_label( "Cancel" );
1034 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1035 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
1036 gtk_widget_show( w );
1039 // ----------------- //
1042 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1043 gtk_widget_show (window);
1044 gtk_grab_add (window);
1047 gtk_main_iteration ();
1049 strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));
1050 strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));
1052 rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;
1053 rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;
1054 rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;
1055 rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;
1057 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))
1058 rs->nOrientation = DIRECTION_NS;
1059 else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))
1060 rs->nOrientation = DIRECTION_EW;
1062 gtk_grab_remove (window);
1063 gtk_widget_destroy (window);
1069 int DoPathPlotterBox(PathPlotterRS* rs)
1071 GtkWidget *window, *w, *vbox, *hbox;
1073 GtkWidget *text1, *text2, *text3;
1074 GtkWidget *check1, *check2;
1078 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1080 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1081 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1083 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1084 gtk_container_border_width (GTK_CONTAINER (window), 10);
1086 g_object_set_data (G_OBJECT (window), "loop", &loop);
1087 g_object_set_data (G_OBJECT (window), "ret", &ret);
1089 gtk_widget_realize (window);
1093 vbox = gtk_vbox_new (FALSE, 10);
1094 gtk_container_add (GTK_CONTAINER (window), vbox);
1095 gtk_widget_show (vbox);
1099 hbox = gtk_hbox_new (FALSE, 10);
1100 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1101 gtk_widget_show (hbox);
1105 text1 = gtk_entry_new_with_max_length(256);
1106 gtk_entry_set_text((GtkEntry*)text1, "25");
1107 gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);
1108 gtk_widget_show (text1);
1110 w = gtk_label_new ("Number Of Points");
1111 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1112 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1113 gtk_widget_show (w);
1117 hbox = gtk_hbox_new (FALSE, 10);
1118 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1119 gtk_widget_show (hbox);
1123 text2 = gtk_entry_new_with_max_length(256);
1124 gtk_entry_set_text((GtkEntry*)text2, "3");
1125 gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);
1126 gtk_widget_show (text2);
1128 w = gtk_label_new ("Multipler");
1129 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1130 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1131 gtk_widget_show (w);
1135 w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");
1136 gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
1137 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1138 gtk_widget_show (w);
1140 hbox = gtk_hbox_new (FALSE, 10);
1141 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1142 gtk_widget_show (hbox);
1146 text3 = gtk_entry_new_with_max_length(256);
1147 gtk_entry_set_text((GtkEntry*)text3, "-800");
1148 gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);
1149 gtk_widget_show (text3);
1151 w = gtk_label_new ("Gravity");
1152 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1153 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1154 gtk_widget_show (w);
1158 w = gtk_hseparator_new();
1159 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1160 gtk_widget_show( w );
1162 check1 = gtk_check_button_new_with_label( "No Dynamic Update" );
1163 gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );
1164 gtk_widget_show( check1 );
1166 check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );
1167 gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );
1168 gtk_widget_show( check2 );
1173 // ----------------- //
1175 w = gtk_hseparator_new();
1176 gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
1177 gtk_widget_show( w );
1179 // ----------------- //
1181 hbox = gtk_hbox_new( FALSE, 10 );
1182 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
1183 gtk_widget_show( hbox );
1185 w = gtk_button_new_with_label( "Enable" );
1186 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1187 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDYES ) );
1188 gtk_widget_show( w );
1190 GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
1191 gtk_widget_grab_default( w );
1193 w = gtk_button_new_with_label( "Disable" );
1194 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
1195 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDNO ) );
1196 gtk_widget_show( w );
1198 w = gtk_button_new_with_label( "Cancel" );
1199 gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
1200 gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
1201 gtk_widget_show( w );
1205 // ----------------- //
1207 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1208 gtk_widget_show (window);
1209 gtk_grab_add (window);
1211 bool dialogError = TRUE;
1216 gtk_main_iteration ();
1218 dialogError = FALSE;
1222 if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))
1225 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))
1228 if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))
1231 rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;
1232 rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;
1236 gtk_grab_remove (window);
1237 gtk_widget_destroy (window);
1242 int DoCTFColourChangeBox ()
1244 GtkWidget *window, *w, *vbox, *hbox;
1247 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1249 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1250 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1252 gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");
1253 gtk_container_border_width (GTK_CONTAINER (window), 10);
1255 g_object_set_data (G_OBJECT (window), "loop", &loop);
1256 g_object_set_data (G_OBJECT (window), "ret", &ret);
1258 gtk_widget_realize (window);
1262 vbox = gtk_vbox_new (FALSE, 10);
1263 gtk_container_add (GTK_CONTAINER (window), vbox);
1264 gtk_widget_show (vbox);
1268 hbox = gtk_hbox_new( FALSE, 10 );
1269 gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
1270 gtk_widget_show( hbox );
1272 // ---- hbox ---- ok/cancel buttons
1274 w = gtk_button_new_with_label ("Red->Blue");
1275 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1276 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1278 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1279 gtk_widget_grab_default (w);
1280 gtk_widget_show (w);
1282 w = gtk_button_new_with_label ("Blue->Red");
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 (IDYES));
1285 gtk_widget_show (w);
1287 w = gtk_button_new_with_label ("Cancel");
1288 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1289 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1290 gtk_widget_show (w);
1297 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1298 gtk_widget_show (window);
1299 gtk_grab_add (window);
1302 gtk_main_iteration ();
1304 gtk_grab_remove (window);
1305 gtk_widget_destroy (window);
1310 int DoResetTextureBox (ResetTextureRS* rs)
1314 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1318 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1320 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1321 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1323 gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
1324 gtk_container_border_width (GTK_CONTAINER (window), 10);
1326 g_object_set_data (G_OBJECT (window), "loop", &loop);
1327 g_object_set_data (G_OBJECT (window), "ret", &ret);
1329 gtk_widget_realize (window);
1331 vbox = gtk_vbox_new (FALSE, 10);
1332 gtk_container_add (GTK_CONTAINER (window), vbox);
1333 gtk_widget_show (vbox);
1337 hbox = gtk_hbox_new (FALSE, 10);
1338 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1339 gtk_widget_show (hbox);
1343 texSelected = "Currently Selected Face: ";
1344 if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {
1345 texSelected += GetCurrentTexture();
1348 w = gtk_label_new (texSelected);
1349 gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
1350 gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
1351 gtk_widget_show (w);
1355 frame = gtk_frame_new ("Reset Texture Names");
1356 gtk_widget_show (frame);
1357 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1359 table = gtk_table_new (2, 3, TRUE);
1360 gtk_widget_show (table);
1361 gtk_container_add (GTK_CONTAINER (frame), table);
1362 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1363 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1364 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1368 dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");
1369 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1370 gtk_widget_show (dlgTexReset.cbTexChange);
1371 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,
1372 (GtkAttachOptions) (GTK_FILL),
1373 (GtkAttachOptions) (0), 0, 0);
1375 w = gtk_label_new ("Old Name: ");
1376 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1377 (GtkAttachOptions) (GTK_FILL),
1378 (GtkAttachOptions) (0), 0, 0);
1379 gtk_widget_show (w);
1381 dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);
1382 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);
1383 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,
1384 (GtkAttachOptions) (GTK_FILL),
1385 (GtkAttachOptions) (0), 0, 0);
1386 gtk_widget_show (dlgTexReset.editTexOld);
1388 w = gtk_label_new ("New Name: ");
1389 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1390 (GtkAttachOptions) (GTK_FILL),
1391 (GtkAttachOptions) (0), 0, 0);
1392 gtk_widget_show (w);
1394 dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);
1395 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);
1396 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,
1397 (GtkAttachOptions) (GTK_FILL),
1398 (GtkAttachOptions) (0), 0, 0);
1399 gtk_widget_show (dlgTexReset.editTexNew);
1403 frame = gtk_frame_new ("Reset Scales");
1404 gtk_widget_show (frame);
1405 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1407 table = gtk_table_new (2, 3, TRUE);
1408 gtk_widget_show (table);
1409 gtk_container_add (GTK_CONTAINER (frame), table);
1410 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1411 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1412 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1416 dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");
1417 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1418 gtk_widget_show (dlgTexReset.cbScaleHor);
1419 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,
1420 (GtkAttachOptions) (GTK_FILL),
1421 (GtkAttachOptions) (0), 0, 0);
1423 w = gtk_label_new ("New Horizontal Scale: ");
1424 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1425 (GtkAttachOptions) (GTK_FILL),
1426 (GtkAttachOptions) (0), 0, 0);
1427 gtk_widget_show (w);
1429 dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);
1430 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");
1431 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,
1432 (GtkAttachOptions) (GTK_FILL),
1433 (GtkAttachOptions) (0), 0, 0);
1434 gtk_widget_show (dlgTexReset.editScaleHor);
1437 dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");
1438 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1439 gtk_widget_show (dlgTexReset.cbScaleVert);
1440 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,
1441 (GtkAttachOptions) (GTK_FILL),
1442 (GtkAttachOptions) (0), 0, 0);
1444 w = gtk_label_new ("New Vertical Scale: ");
1445 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1446 (GtkAttachOptions) (GTK_FILL),
1447 (GtkAttachOptions) (0), 0, 0);
1448 gtk_widget_show (w);
1450 dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);
1451 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");
1452 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,
1453 (GtkAttachOptions) (GTK_FILL),
1454 (GtkAttachOptions) (0), 0, 0);
1455 gtk_widget_show (dlgTexReset.editScaleVert);
1459 frame = gtk_frame_new ("Reset Shift");
1460 gtk_widget_show (frame);
1461 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1463 table = gtk_table_new (2, 3, TRUE);
1464 gtk_widget_show (table);
1465 gtk_container_add (GTK_CONTAINER (frame), table);
1466 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1467 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1468 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1472 dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");
1473 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1474 gtk_widget_show (dlgTexReset.cbShiftHor);
1475 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,
1476 (GtkAttachOptions) (GTK_FILL),
1477 (GtkAttachOptions) (0), 0, 0);
1479 w = gtk_label_new ("New Horizontal Shift: ");
1480 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1481 (GtkAttachOptions) (GTK_FILL),
1482 (GtkAttachOptions) (0), 0, 0);
1483 gtk_widget_show (w);
1485 dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);
1486 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");
1487 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,
1488 (GtkAttachOptions) (GTK_FILL),
1489 (GtkAttachOptions) (0), 0, 0);
1490 gtk_widget_show (dlgTexReset.editShiftHor);
1493 dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");
1494 gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
1495 gtk_widget_show (dlgTexReset.cbShiftVert);
1496 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,
1497 (GtkAttachOptions) (GTK_FILL),
1498 (GtkAttachOptions) (0), 0, 0);
1500 w = gtk_label_new ("New Vertical Shift: ");
1501 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
1502 (GtkAttachOptions) (GTK_FILL),
1503 (GtkAttachOptions) (0), 0, 0);
1504 gtk_widget_show (w);
1506 dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);
1507 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");
1508 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,
1509 (GtkAttachOptions) (GTK_FILL),
1510 (GtkAttachOptions) (0), 0, 0);
1511 gtk_widget_show (dlgTexReset.editShiftVert);
1515 frame = gtk_frame_new ("Reset Rotation");
1516 gtk_widget_show (frame);
1517 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1519 table = gtk_table_new (1, 3, TRUE);
1520 gtk_widget_show (table);
1521 gtk_container_add (GTK_CONTAINER (frame), table);
1522 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1523 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1524 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1528 dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");
1529 gtk_widget_show (dlgTexReset.cbRotation);
1530 gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,
1531 (GtkAttachOptions) (GTK_FILL),
1532 (GtkAttachOptions) (0), 0, 0);
1534 w = gtk_label_new ("New Rotation Value: ");
1535 gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
1536 (GtkAttachOptions) (GTK_FILL),
1537 (GtkAttachOptions) (0), 0, 0);
1538 gtk_widget_show (w);
1540 dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);
1541 gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");
1542 gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,
1543 (GtkAttachOptions) (GTK_FILL),
1544 (GtkAttachOptions) (0), 0, 0);
1545 gtk_widget_show (dlgTexReset.editRotation);
1549 hbox = gtk_hbox_new (FALSE, 10);
1550 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1551 gtk_widget_show (hbox);
1555 w = gtk_button_new_with_label ("Use Selected Brushes");
1556 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1557 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1559 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1560 gtk_widget_grab_default (w);
1561 gtk_widget_show (w);
1563 w = gtk_button_new_with_label ("Use All Brushes");
1564 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1565 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
1566 gtk_widget_show (w);
1568 w = gtk_button_new_with_label ("Cancel");
1569 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1570 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1571 gtk_widget_show (w);
1578 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1579 gtk_widget_show (window);
1580 gtk_grab_add (window);
1582 Update_TextureReseter();
1584 bool dialogError = TRUE;
1589 gtk_main_iteration ();
1591 dialogError = FALSE;
1595 rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
1596 if(rs->bResetRotation)
1597 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))
1600 rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
1601 if(rs->bResetScale[0])
1602 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))
1605 rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
1606 if(rs->bResetScale[1])
1607 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))
1610 rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
1611 if(rs->bResetShift[0])
1612 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))
1615 rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
1616 if(rs->bResetShift[1])
1617 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))
1620 rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
1621 if(rs->bResetTextureName)
1623 strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));
1624 strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));
1629 gtk_grab_remove (window);
1630 gtk_widget_destroy (window);
1635 int DoTrainThingBox (TrainThingRS* rs)
1639 GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
1641 GtkWidget *radiusX, *radiusY;
1642 GtkWidget *angleStart, *angleEnd;
1643 GtkWidget *heightStart, *heightEnd;
1644 GtkWidget *numPoints;
1648 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1650 gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
1651 gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
1653 gtk_window_set_title (GTK_WINDOW (window), "Train Thing");
1654 gtk_container_border_width (GTK_CONTAINER (window), 10);
1656 gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
1657 gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
1659 gtk_widget_realize (window);
1661 vbox = gtk_vbox_new (FALSE, 10);
1662 gtk_container_add (GTK_CONTAINER (window), vbox);
1663 gtk_widget_show (vbox);
1667 hbox = gtk_hbox_new (FALSE, 10);
1668 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1669 gtk_widget_show (hbox);
1673 frame = gtk_frame_new ("Radii");
1674 gtk_widget_show (frame);
1675 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1677 table = gtk_table_new (2, 3, TRUE);
1678 gtk_widget_show (table);
1679 gtk_container_add (GTK_CONTAINER (frame), table);
1680 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1681 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1682 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1686 w = gtk_label_new ("X: ");
1687 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1688 (GtkAttachOptions) (GTK_FILL),
1689 (GtkAttachOptions) (0), 0, 0);
1690 gtk_widget_show (w);
1692 radiusX = gtk_entry_new_with_max_length(256);
1693 gtk_entry_set_text(GTK_ENTRY(radiusX), "100");
1694 gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,
1695 (GtkAttachOptions) (GTK_FILL),
1696 (GtkAttachOptions) (0), 0, 0);
1697 gtk_widget_show (radiusX);
1701 w = gtk_label_new ("Y: ");
1702 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1703 (GtkAttachOptions) (GTK_FILL),
1704 (GtkAttachOptions) (0), 0, 0);
1705 gtk_widget_show (w);
1707 radiusY = gtk_entry_new_with_max_length(256);
1708 gtk_entry_set_text(GTK_ENTRY(radiusY), "100");
1709 gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,
1710 (GtkAttachOptions) (GTK_FILL),
1711 (GtkAttachOptions) (0), 0, 0);
1712 gtk_widget_show (radiusY);
1716 frame = gtk_frame_new ("Angles");
1717 gtk_widget_show (frame);
1718 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1720 table = gtk_table_new (2, 3, TRUE);
1721 gtk_widget_show (table);
1722 gtk_container_add (GTK_CONTAINER (frame), table);
1723 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1724 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1725 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1729 w = gtk_label_new ("Start: ");
1730 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1731 (GtkAttachOptions) (GTK_FILL),
1732 (GtkAttachOptions) (0), 0, 0);
1733 gtk_widget_show (w);
1735 angleStart = gtk_entry_new_with_max_length(256);
1736 gtk_entry_set_text(GTK_ENTRY(angleStart), "0");
1737 gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,
1738 (GtkAttachOptions) (GTK_FILL),
1739 (GtkAttachOptions) (0), 0, 0);
1740 gtk_widget_show (angleStart);
1744 w = gtk_label_new ("End: ");
1745 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1746 (GtkAttachOptions) (GTK_FILL),
1747 (GtkAttachOptions) (0), 0, 0);
1748 gtk_widget_show (w);
1750 angleEnd = gtk_entry_new_with_max_length(256);
1751 gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");
1752 gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,
1753 (GtkAttachOptions) (GTK_FILL),
1754 (GtkAttachOptions) (0), 0, 0);
1755 gtk_widget_show (angleEnd);
1758 frame = gtk_frame_new ("Height");
1759 gtk_widget_show (frame);
1760 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1762 table = gtk_table_new (2, 3, TRUE);
1763 gtk_widget_show (table);
1764 gtk_container_add (GTK_CONTAINER (frame), table);
1765 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1766 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1767 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1771 w = gtk_label_new ("Start: ");
1772 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1773 (GtkAttachOptions) (GTK_FILL),
1774 (GtkAttachOptions) (0), 0, 0);
1775 gtk_widget_show (w);
1777 heightStart = gtk_entry_new_with_max_length(256);
1778 gtk_entry_set_text(GTK_ENTRY(heightStart), "0");
1779 gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,
1780 (GtkAttachOptions) (GTK_FILL),
1781 (GtkAttachOptions) (0), 0, 0);
1782 gtk_widget_show (heightStart);
1786 w = gtk_label_new ("End: ");
1787 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
1788 (GtkAttachOptions) (GTK_FILL),
1789 (GtkAttachOptions) (0), 0, 0);
1790 gtk_widget_show (w);
1792 heightEnd = gtk_entry_new_with_max_length(256);
1793 gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");
1794 gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,
1795 (GtkAttachOptions) (GTK_FILL),
1796 (GtkAttachOptions) (0), 0, 0);
1797 gtk_widget_show (heightEnd);
1801 frame = gtk_frame_new ("Points");
1802 gtk_widget_show (frame);
1803 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
1805 table = gtk_table_new (2, 3, TRUE);
1806 gtk_widget_show (table);
1807 gtk_container_add (GTK_CONTAINER (frame), table);
1808 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
1809 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
1810 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
1814 w = gtk_label_new ("Number: ");
1815 gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
1816 (GtkAttachOptions) (GTK_FILL),
1817 (GtkAttachOptions) (0), 0, 0);
1818 gtk_widget_show (w);
1820 numPoints = gtk_entry_new_with_max_length(256);
1821 gtk_entry_set_text(GTK_ENTRY(numPoints), "0");
1822 gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,
1823 (GtkAttachOptions) (GTK_FILL),
1824 (GtkAttachOptions) (0), 0, 0);
1825 gtk_widget_show (numPoints);
1828 hbox = gtk_hbox_new (FALSE, 10);
1829 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
1830 gtk_widget_show (hbox);
1834 w = gtk_button_new_with_label ("Ok");
1835 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1836 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
1838 GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
1839 gtk_widget_grab_default (w);
1840 gtk_widget_show (w);
1842 w = gtk_button_new_with_label ("Cancel");
1843 gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
1844 gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
1845 gtk_widget_show (w);
1852 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
1853 gtk_widget_show (window);
1854 gtk_grab_add (window);
1856 bool dialogError = TRUE;
1861 gtk_main_iteration ();
1863 dialogError = FALSE;
1867 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))
1870 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))
1873 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))
1876 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))
1879 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))
1882 if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))
1885 if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))
1890 gtk_grab_remove (window);
1891 gtk_widget_destroy (window);