-/*\r
-BobToolz plugin for GtkRadiant\r
-Copyright (C) 2001 Gordon Biggans\r
-\r
-This library is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU Lesser General Public\r
-License as published by the Free Software Foundation; either\r
-version 2.1 of the License, or (at your option) any later version.\r
-\r
-This library is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-Lesser General Public License for more details.\r
-\r
-You should have received a copy of the GNU Lesser General Public\r
-License along with this library; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-*/\r
-\r
-#include "../StdAfx.h"\r
-#include "dialogs-gtk.h"\r
-#include "../funchandlers.h"\r
-#include "../lists.h"\r
-#include "../misc.h"\r
-\r
-/*--------------------------------\r
- Callback Functions\r
----------------------------------*/\r
-\r
-typedef struct {\r
- GtkWidget *cbTexChange;\r
- GtkWidget *editTexOld, *editTexNew;\r
-\r
- GtkWidget *cbScaleHor, *cbScaleVert;\r
- GtkWidget *editScaleHor, *editScaleVert;\r
-\r
- GtkWidget *cbShiftHor, *cbShiftVert;\r
- GtkWidget *editShiftHor, *editShiftVert;\r
-\r
- GtkWidget *cbRotation;\r
- GtkWidget *editRotation;\r
-}dlg_texReset_t;\r
-\r
-dlg_texReset_t dlgTexReset;\r
-\r
-void Update_TextureReseter();\r
-\r
-static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)\r
-{\r
- Update_TextureReseter();\r
-}\r
-\r
-void Update_TextureReseter()\r
-{\r
- gboolean check;\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);\r
-\r
- check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));\r
- gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);\r
-}\r
-\r
-static void dialog_button_callback (GtkWidget *widget, gpointer data)\r
-{\r
- GtkWidget *parent;\r
- int *loop, *ret;\r
- \r
- parent = gtk_widget_get_toplevel (widget);\r
- loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");\r
- ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");\r
- \r
- *loop = 0;\r
- *ret = (int)data;\r
-}\r
- \r
-static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)\r
-{\r
- int *loop;\r
- \r
- gtk_widget_hide (widget);\r
- loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");\r
- *loop = 0;\r
-\r
- return TRUE;\r
-}\r
-\r
-static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)\r
-{\r
- TwinWidget* tw = (TwinWidget*)data;\r
-\r
- GtkEntry* entry = GTK_ENTRY( tw->one );\r
- GtkCombo* combo = GTK_COMBO( tw->two );\r
-\r
- const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));\r
- gtk_entry_set_text( entry, tex);\r
-}\r
-\r
-/*--------------------------------\r
- Data validation Routines\r
----------------------------------*/\r
-\r
-bool ValidateTextFloat(const char* pData, char* error_title, float* value)\r
-{\r
- if(pData)\r
- {\r
- float testNum = (float)atof(pData);\r
-\r
- if((testNum == 0.0f) && strcmp(pData, "0"))\r
- {\r
- DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);\r
- return FALSE;\r
- }\r
- else\r
- {\r
- *value = testNum;\r
- return TRUE;\r
- }\r
- }\r
-\r
- DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);\r
- return FALSE;\r
-}\r
-\r
-bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)\r
-{\r
- char error_buffer[256];\r
- sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);\r
-\r
- if(pData)\r
- {\r
- float testNum = (float)atof(pData);\r
-\r
- if((testNum < min) || (testNum > max))\r
- {\r
- DoMessageBox(error_buffer, error_title, MB_OK);\r
- return FALSE;\r
- }\r
- else\r
- {\r
- *value = testNum;\r
- return TRUE;\r
- }\r
- }\r
-\r
- DoMessageBox(error_buffer, error_title, MB_OK);\r
- return FALSE;\r
-}\r
-\r
-bool ValidateTextIntRange(const char* pData, int min, int max, char* error_title, int* value)\r
-{\r
- char error_buffer[256];\r
- sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);\r
-\r
- if(pData)\r
- {\r
- int testNum = atoi(pData);\r
-\r
- if((testNum < min) || (testNum > max))\r
- {\r
- DoMessageBox(error_buffer, error_title, MB_OK);\r
- return FALSE;\r
- }\r
- else\r
- {\r
- *value = testNum;\r
- return TRUE;\r
- }\r
- }\r
-\r
- DoMessageBox(error_buffer, error_title, MB_OK);\r
- return FALSE;\r
-}\r
-\r
-bool ValidateTextInt(const char* pData, char* error_title, int* value)\r
-{\r
- if(pData)\r
- {\r
- int testNum = atoi(pData);\r
-\r
- if((testNum == 0) && strcmp(pData, "0"))\r
- {\r
- DoMessageBox("Please Enter An Integer", error_title, MB_OK);\r
- return FALSE;\r
- }\r
- else\r
- {\r
- *value = testNum;\r
- return TRUE;\r
- }\r
- }\r
-\r
- DoMessageBox("Please Enter An Integer", error_title, MB_OK);\r
- return FALSE;\r
-}\r
-\r
-/*--------------------------------\r
- Modal Dialog Boxes\r
----------------------------------*/\r
-\r
-/*\r
-\r
- Major clean up of variable names etc required, excluding Mars's ones,\r
- which are nicely done :)\r
-\r
-*/\r
-\r
-int DoMessageBox (const char* lpText, const char* lpCaption, guint32 uType)\r
-{\r
- GtkWidget *window, *w, *vbox, *hbox;\r
- int mode = (uType & MB_TYPEMASK), ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event",\r
- GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy",\r
- GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
- gtk_window_set_title (GTK_WINDOW (window), lpCaption);\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
- gtk_widget_realize (window);\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- w = gtk_label_new (lpText);\r
- gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_hseparator_new ();\r
- gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);\r
- gtk_widget_show (w);\r
- \r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- if (mode == MB_OK)\r
- {\r
- w = gtk_button_new_with_label ("Ok");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- ret = IDOK;\r
- }\r
- else if (mode == MB_OKCANCEL)\r
- {\r
- w = gtk_button_new_with_label ("Ok");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
- }\r
- else if (mode == MB_YESNOCANCEL)\r
- {\r
- w = gtk_button_new_with_label ("Yes");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("No");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
- }\r
- else /* if (mode == MB_YESNO) */\r
- {\r
- w = gtk_button_new_with_label ("Yes");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("No");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked",\r
- GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));\r
- gtk_widget_show (w);\r
- ret = IDNO;\r
- }\r
- \r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
- \r
- return ret;\r
-}\r
-\r
-int DoIntersectBox (IntersectRS* rs)\r
-{\r
- GtkWidget *window, *w, *vbox, *hbox;\r
- GtkWidget *radio1, *radio2;\r
- GtkWidget *check1, *check2;\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "Intersect");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
-\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");\r
- gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);\r
- gtk_widget_show (radio1);\r
-\r
- radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");\r
- gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);\r
- gtk_widget_show (radio2);\r
-\r
- w = gtk_hseparator_new ();\r
- gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);\r
- gtk_widget_show (w);\r
-\r
- check1 = gtk_check_button_new_with_label("Include Detail Brushes");\r
- gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);\r
- gtk_widget_show (check1); \r
-\r
- check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");\r
- gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);\r
- gtk_widget_show (check2); \r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ---- ok/cancel buttons\r
-\r
- w = gtk_button_new_with_label ("Ok");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
-\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
-\r
- // ---- /hbox ----\r
- \r
- // ---- /vbox ----\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- while (loop)\r
- gtk_main_iteration ();\r
-\r
- if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))\r
- rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))\r
- rs->nBrushOptions = BRUSH_OPT_SELECTED;\r
-\r
- rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;\r
- rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;\r
- \r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
-\r
-int DoPolygonBox (PolygonRS* rs)\r
-{\r
- GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;\r
-\r
- GtkWidget *check1, *check2, *check3;\r
- GtkWidget *text1, *text2;\r
-\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
-\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- \r
- vbox2 = gtk_vbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);\r
- gtk_widget_show (vbox2);\r
- \r
- // ---- vbox2 ----\r
-\r
- hbox2 = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox2);\r
-\r
- // ---- hbox2 ----\r
-\r
- text1 = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text((GtkEntry*)text1, "3");\r
- gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);\r
- gtk_widget_show (text1);\r
-\r
- w = gtk_label_new ("Number Of Sides");\r
- gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- // ---- /hbox2 ----\r
-\r
- hbox2 = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox2);\r
-\r
- // ---- hbox2 ----\r
-\r
- text2 = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text((GtkEntry*)text2, "8");\r
- gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);\r
- gtk_widget_show (text2);\r
-\r
- w = gtk_label_new ("Border Width");\r
- gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
- \r
- // ---- /hbox2 ----\r
-\r
- // ---- /vbox2 ----\r
-\r
-\r
- \r
- vbox2 = gtk_vbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);\r
- gtk_widget_show (vbox2);\r
- \r
- // ---- vbox2 ----\r
-\r
- check1 = gtk_check_button_new_with_label("Use Border");\r
- gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);\r
- gtk_widget_show (check1);\r
- \r
-\r
- check2 = gtk_check_button_new_with_label("Inverse Polygon");\r
- gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);\r
- gtk_widget_show (check2);\r
- \r
-\r
- check3 = gtk_check_button_new_with_label("Align Top Edge");\r
- gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);\r
- gtk_widget_show (check3);\r
- \r
- // ---- /vbox2 ----\r
-\r
- // ---- /hbox ----\r
- \r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- w = gtk_button_new_with_label ("Ok");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
-\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
-\r
- // ---- /hbox ----\r
- \r
- // ---- /vbox ----\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- bool dialogError = TRUE;\r
- while (dialogError)\r
- {\r
- loop = 1;\r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- dialogError = FALSE;\r
-\r
- if(ret == IDOK)\r
- {\r
- rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;\r
- rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;\r
- rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;\r
-\r
- if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))\r
- dialogError = TRUE;\r
-\r
- if(rs->bUseBorder)\r
- {\r
- if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))\r
- dialogError = TRUE;\r
- }\r
- }\r
- }\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
-\r
-// mars\r
-// for stair builder stuck as close as i could to the MFC version\r
-// obviously feel free to change it at will :)\r
-int DoBuildStairsBox(BuildStairsRS* rs)\r
-{\r
- // i made widgets for just about everything ... i think that's what i need to do dunno tho \r
- GtkWidget *window, *w, *vbox, *hbox;\r
- GtkWidget *textStairHeight, *textRiserTex, *textMainTex;\r
- GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value\r
- GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;\r
- GtkWidget *checkUseDetail;\r
- GSList *radioDirection, *radioStyle;\r
- int ret, loop;\r
-\r
- loop = 1;\r
-\r
- char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";\r
-\r
- window = gtk_window_new( GTK_WINDOW_TOPLEVEL );\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );\r
- \r
- gtk_container_border_width( GTK_CONTAINER( window ), 10 );\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
-\r
- // new vbox \r
- vbox = gtk_vbox_new( FALSE, 10 );\r
- gtk_container_add( GTK_CONTAINER( window ), vbox );\r
- gtk_widget_show( vbox );\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_container_add( GTK_CONTAINER( vbox ), hbox );\r
- gtk_widget_show( hbox );\r
- \r
- // dunno if you want this text or not ...\r
- w = gtk_label_new( text );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...\r
- gtk_widget_show( w );\r
-\r
- w = gtk_hseparator_new();\r
- gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
- \r
- // ------------------------- // indenting == good way of keeping track of lines :)\r
-\r
- // new hbox\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
- \r
- textStairHeight = gtk_entry_new_with_max_length( 256 ); \r
- gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );\r
- gtk_widget_show( textStairHeight );\r
-\r
- w = gtk_label_new( "Stair Height" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );\r
- gtk_widget_show( w );\r
-\r
- // ------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_label_new( "Direction:" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );\r
- gtk_widget_show( w );\r
-\r
- // -------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
- \r
- // radio buttons confuse me ...\r
- // but this _looks_ right\r
-\r
- // djbob: actually it looks very nice :), slightly better than the way i did it\r
- // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh\r
-\r
- radioNorth = gtk_radio_button_new_with_label( NULL, "North" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );\r
- gtk_widget_show( radioNorth );\r
-\r
- radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );\r
- \r
- radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );\r
- gtk_widget_show( radioSouth );\r
-\r
- radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );\r
-\r
- radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );\r
- gtk_widget_show( radioEast );\r
-\r
- radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );\r
-\r
- radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioWest );\r
-\r
- // --------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_label_new( "Style:" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );\r
- gtk_widget_show( w );\r
-\r
- // --------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
- \r
- radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioOldStyle );\r
-\r
- radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );\r
-\r
- radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioBobStyle );\r
- \r
- radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );\r
-\r
- radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioCornerStyle );\r
- \r
- // err, the q3r has an if or something so you need bob style checked before this \r
- // is "ungreyed out" but you'll need to do that, as i suck :)\r
-\r
- // djbob: er.... yeah um, im not at all sure how i'm gonna sort this\r
- // djbob: think we need some button callback functions or smuffin\r
- // FIXME: actually get around to doing what i suggested!!!!\r
-\r
- checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );\r
- gtk_widget_show( checkUseDetail );\r
-\r
- // --------------------------- // \r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- textMainTex = gtk_entry_new_with_max_length( 512 );\r
- gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);\r
- gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );\r
- gtk_widget_show( textMainTex );\r
-\r
- w = gtk_label_new( "Main Texture" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );\r
- gtk_widget_show( w );\r
-\r
- // -------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- textRiserTex = gtk_entry_new_with_max_length( 512 );\r
- gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );\r
- gtk_widget_show( textRiserTex );\r
-\r
- w = gtk_label_new( "Riser Texture" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );\r
- gtk_widget_show( w );\r
-\r
- // -------------------------- //\r
- w = gtk_hseparator_new();\r
- gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_button_new_with_label( "OK" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );\r
- GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );\r
- gtk_widget_grab_default( w );\r
- gtk_widget_show( w );\r
- \r
- w = gtk_button_new_with_label( "Cancel" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );\r
- gtk_widget_show( w );\r
- \r
- ret = IDCANCEL;\r
-\r
-// +djbob: need our "little" modal loop mars :P\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- bool dialogError = TRUE;\r
- while (dialogError)\r
- {\r
- loop = 1;\r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- dialogError = FALSE;\r
-\r
- if(ret == IDOK)\r
- {\r
- rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;\r
-\r
- strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));\r
- strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));\r
-\r
- if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))\r
- rs->direction = MOVE_NORTH;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))\r
- rs->direction = MOVE_SOUTH;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))\r
- rs->direction = MOVE_EAST;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))\r
- rs->direction = MOVE_WEST;\r
-\r
- if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))\r
- dialogError = TRUE;\r
-\r
- if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))\r
- rs->style = STYLE_ORIGINAL;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))\r
- rs->style = STYLE_BOB;\r
- else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))\r
- rs->style = STYLE_CORNER;\r
- }\r
- }\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-// -djbob\r
- \r
- // there we go, all done ... on my end at least, not bad for a night's work\r
-}\r
-\r
-int DoDoorsBox(DoorRS* rs)\r
-{\r
- GtkWidget *window, *hbox, *vbox, *w;\r
- GtkWidget *textFrontBackTex, *textTrimTex;\r
- GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;\r
- GtkWidget *comboMain, *comboTrim;\r
- GtkWidget *buttonSetMain, *buttonSetTrim;\r
- GtkWidget *radioNS, *radioEW; \r
- GSList *radioOrientation;\r
- TwinWidget tw1, tw2;\r
- int ret, loop;\r
-\r
- loop = 1;\r
- \r
- window = gtk_window_new( GTK_WINDOW_TOPLEVEL );\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );\r
- \r
- gtk_container_border_width( GTK_CONTAINER( window ), 10 );\r
-\r
- g_object_set_data( G_OBJECT( window ), "loop", &loop );\r
- g_object_set_data( G_OBJECT( window ), "ret", &ret );\r
-\r
- gtk_widget_realize (window);\r
- \r
- char buffer[256];\r
- GList *listMainTextures = NULL;\r
- GList *listTrimTextures = NULL;\r
- LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);\r
- LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);\r
- \r
- vbox = gtk_vbox_new( FALSE, 10 );\r
- gtk_container_add( GTK_CONTAINER( window ), vbox );\r
- gtk_widget_show( vbox );\r
-\r
- // -------------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- textFrontBackTex = gtk_entry_new_with_max_length( 512 );\r
- gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);\r
- gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );\r
- gtk_widget_show( textFrontBackTex );\r
-\r
- w = gtk_label_new( "Door Front/Back Texture" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- // ------------------------ //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- textTrimTex = gtk_entry_new_with_max_length( 512 );\r
- gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );\r
- gtk_widget_show( textTrimTex );\r
-\r
- w = gtk_label_new( "Door Trim Texture" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- // ----------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- // sp: horizontally ????\r
- // djbob: yes mars, u can spell :]\r
- checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );\r
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);\r
- gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );\r
- gtk_widget_show( checkScaleMainH );\r
-\r
- checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );\r
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);\r
- gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );\r
- gtk_widget_show( checkScaleTrimH );\r
-\r
- // ---------------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );\r
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);\r
- gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );\r
- gtk_widget_show( checkScaleMainV );\r
-\r
- checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );\r
- gtk_widget_show( checkScaleTrimV );\r
- \r
- // --------------------- // \r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- // djbob: lists added\r
-\r
- comboMain = gtk_combo_new();\r
- gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );\r
- gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );\r
- gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );\r
- gtk_widget_show( comboMain );\r
-\r
- tw1.one = textFrontBackTex;\r
- tw1.two = comboMain;\r
-\r
- buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );\r
- gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );\r
- gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );\r
- gtk_widget_show( buttonSetMain );\r
-\r
- // ------------------- //\r
- \r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- comboTrim = gtk_combo_new();\r
- gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );\r
- gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );\r
- gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );\r
- gtk_widget_show( comboTrim );\r
-\r
- tw2.one = textTrimTex;\r
- tw2.two = comboTrim;\r
-\r
- buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );\r
- gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );\r
- gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );\r
- gtk_widget_show( buttonSetTrim );\r
-\r
- // ------------------ //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_label_new( "Orientation" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- // argh more radio buttons! \r
- radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioNS );\r
-\r
- radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );\r
-\r
- radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );\r
- gtk_widget_show( radioEW );\r
-\r
- // ----------------- //\r
-\r
- w = gtk_hseparator_new();\r
- gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- // ----------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_button_new_with_label( "OK" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );\r
- GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );\r
- gtk_widget_grab_default( w );\r
- gtk_widget_show( w );\r
- \r
- w = gtk_button_new_with_label( "Cancel" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );\r
- gtk_widget_show( w );\r
- ret = IDCANCEL;\r
-\r
- // ----------------- //\r
-\r
-//+djbob\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- while (loop)\r
- gtk_main_iteration ();\r
-\r
- strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));\r
- strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));\r
-\r
- rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;\r
- rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;\r
- rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;\r
- rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;\r
-\r
- if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))\r
- rs->nOrientation = DIRECTION_NS;\r
- else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))\r
- rs->nOrientation = DIRECTION_EW;\r
- \r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-//-djbob\r
-}\r
-\r
-int DoPathPlotterBox(PathPlotterRS* rs)\r
-{\r
- GtkWidget *window, *w, *vbox, *hbox;\r
-\r
- GtkWidget *text1, *text2, *text3;\r
- GtkWidget *check1, *check2;\r
-\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
-\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- text1 = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text((GtkEntry*)text1, "25");\r
- gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);\r
- gtk_widget_show (text1);\r
-\r
- w = gtk_label_new ("Number Of Points");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- // ---- /hbox ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- text2 = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text((GtkEntry*)text2, "3");\r
- gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);\r
- gtk_widget_show (text2);\r
-\r
- w = gtk_label_new ("Multipler");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- // ---- /hbox ----\r
-\r
- w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");\r
- gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- text3 = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text((GtkEntry*)text3, "-800");\r
- gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);\r
- gtk_widget_show (text3);\r
-\r
- w = gtk_label_new ("Gravity");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- // ---- /hbox ----\r
- \r
- w = gtk_hseparator_new();\r
- gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- check1 = gtk_check_button_new_with_label( "No Dynamic Update" );\r
- gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );\r
- gtk_widget_show( check1 );\r
-\r
- check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );\r
- gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );\r
- gtk_widget_show( check2 );\r
-\r
- // ---- /vbox ----\r
-\r
-\r
- // ----------------- //\r
-\r
- w = gtk_hseparator_new();\r
- gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );\r
- gtk_widget_show( w );\r
-\r
- // ----------------- //\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- w = gtk_button_new_with_label( "Enable" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDYES ) );\r
- gtk_widget_show( w );\r
- \r
- GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );\r
- gtk_widget_grab_default( w );\r
-\r
- w = gtk_button_new_with_label( "Disable" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDNO ) );\r
- gtk_widget_show( w );\r
- \r
- w = gtk_button_new_with_label( "Cancel" );\r
- gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );\r
- gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );\r
- gtk_widget_show( w );\r
- \r
- ret = IDCANCEL;\r
-\r
- // ----------------- //\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- bool dialogError = TRUE;\r
- while (dialogError)\r
- {\r
- loop = 1;\r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- dialogError = FALSE;\r
-\r
- if(ret == IDYES)\r
- {\r
- if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))\r
- dialogError = TRUE;\r
-\r
- rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;\r
- rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;\r
- }\r
- }\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
-\r
-int DoCTFColourChangeBox ()\r
-{\r
- GtkWidget *window, *w, *vbox, *hbox;\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
-\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- hbox = gtk_hbox_new( FALSE, 10 );\r
- gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );\r
- gtk_widget_show( hbox );\r
-\r
- // ---- hbox ---- ok/cancel buttons\r
-\r
- w = gtk_button_new_with_label ("Red->Blue");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
-\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Blue->Red");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));\r
- gtk_widget_show (w);\r
-\r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
-\r
- // ---- /hbox ----\r
- \r
- // ---- /vbox ----\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- while (loop)\r
- gtk_main_iteration ();\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
-\r
-int DoResetTextureBox (ResetTextureRS* rs)\r
-{\r
- Str texSelected;\r
-\r
- GtkWidget *window, *w, *vbox, *hbox, *frame, *table;\r
-\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- g_object_set_data (G_OBJECT (window), "loop", &loop);\r
- g_object_set_data (G_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- texSelected = "Currently Selected Face: ";\r
- if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {\r
- texSelected += GetCurrentTexture();\r
- }\r
-\r
- w = gtk_label_new (texSelected);\r
- gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);\r
- gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);\r
- gtk_widget_show (w);\r
-\r
- // ---- /hbox ----\r
-\r
- frame = gtk_frame_new ("Reset Texture Names");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");\r
- gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);\r
- gtk_widget_show (dlgTexReset.cbTexChange);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("Old Name: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editTexOld);\r
-\r
- w = gtk_label_new ("New Name: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editTexNew);\r
-\r
- // ---- /frame ----\r
-\r
- frame = gtk_frame_new ("Reset Scales");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");\r
- gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);\r
- gtk_widget_show (dlgTexReset.cbScaleHor);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("New Horizontal Scale: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editScaleHor);\r
-\r
-\r
- dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");\r
- gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);\r
- gtk_widget_show (dlgTexReset.cbScaleVert);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("New Vertical Scale: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editScaleVert);\r
-\r
- // ---- /frame ----\r
-\r
- frame = gtk_frame_new ("Reset Shift");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");\r
- gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);\r
- gtk_widget_show (dlgTexReset.cbShiftHor);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("New Horizontal Shift: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editShiftHor);\r
-\r
-\r
- dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");\r
- gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);\r
- gtk_widget_show (dlgTexReset.cbShiftVert);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("New Vertical Shift: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editShiftVert);\r
-\r
- // ---- /frame ----\r
-\r
- frame = gtk_frame_new ("Reset Rotation");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (1, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");\r
- gtk_widget_show (dlgTexReset.cbRotation);\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
-\r
- w = gtk_label_new ("New Rotation Value: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");\r
- gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (dlgTexReset.editRotation);\r
-\r
- // ---- /frame ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- w = gtk_button_new_with_label ("Use Selected Brushes");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
-\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Use All Brushes");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));\r
- gtk_widget_show (w);\r
-\r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
-\r
- // ---- /hbox ----\r
- \r
- // ---- /vbox ----\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- Update_TextureReseter();\r
-\r
- bool dialogError = TRUE;\r
- while (dialogError)\r
- {\r
- loop = 1;\r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- dialogError = FALSE;\r
-\r
- if(ret != IDCANCEL)\r
- {\r
- rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));\r
- if(rs->bResetRotation)\r
- if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))\r
- dialogError = TRUE;\r
-\r
- rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));\r
- if(rs->bResetScale[0])\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))\r
- dialogError = TRUE;\r
-\r
- rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));\r
- if(rs->bResetScale[1])\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))\r
- dialogError = TRUE;\r
-\r
- rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));\r
- if(rs->bResetShift[0])\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))\r
- dialogError = TRUE;\r
-\r
- rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));\r
- if(rs->bResetShift[1])\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))\r
- dialogError = TRUE;\r
-\r
- rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));\r
- if(rs->bResetTextureName)\r
- {\r
- strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));\r
- strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));\r
- }\r
- }\r
- }\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
-\r
-int DoTrainThingBox (TrainThingRS* rs)\r
-{\r
- Str texSelected;\r
-\r
- GtkWidget *window, *w, *vbox, *hbox, *frame, *table;\r
-\r
- GtkWidget *radiusX, *radiusY;\r
- GtkWidget *angleStart, *angleEnd;\r
- GtkWidget *heightStart, *heightEnd;\r
- GtkWidget *numPoints;\r
-\r
- int ret, loop = 1;\r
- \r
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\r
- \r
- gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);\r
- gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);\r
-\r
- gtk_window_set_title (GTK_WINDOW (window), "Train Thing");\r
- gtk_container_border_width (GTK_CONTAINER (window), 10);\r
-\r
- gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);\r
- gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);\r
-\r
- gtk_widget_realize (window);\r
- \r
- vbox = gtk_vbox_new (FALSE, 10);\r
- gtk_container_add (GTK_CONTAINER (window), vbox);\r
- gtk_widget_show (vbox);\r
- \r
- // ---- vbox ----\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
-\r
- // ---- /hbox ----\r
-\r
- frame = gtk_frame_new ("Radii");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- w = gtk_label_new ("X: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- radiusX = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(radiusX), "100");\r
- gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (radiusX);\r
-\r
-\r
-\r
- w = gtk_label_new ("Y: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- radiusY = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(radiusY), "100");\r
- gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (radiusY);\r
-\r
-\r
-\r
- frame = gtk_frame_new ("Angles");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- w = gtk_label_new ("Start: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- angleStart = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(angleStart), "0");\r
- gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (angleStart);\r
-\r
-\r
-\r
- w = gtk_label_new ("End: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- angleEnd = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");\r
- gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (angleEnd);\r
-\r
-\r
- frame = gtk_frame_new ("Height");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- w = gtk_label_new ("Start: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- heightStart = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(heightStart), "0");\r
- gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (heightStart);\r
-\r
-\r
-\r
- w = gtk_label_new ("End: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- heightEnd = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");\r
- gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (heightEnd);\r
-\r
-\r
-\r
- frame = gtk_frame_new ("Points");\r
- gtk_widget_show (frame);\r
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);\r
-\r
- table = gtk_table_new (2, 3, TRUE);\r
- gtk_widget_show (table);\r
- gtk_container_add (GTK_CONTAINER (frame), table);\r
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);\r
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);\r
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);\r
-\r
- // ---- frame ----\r
-\r
- w = gtk_label_new ("Number: ");\r
- gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (w);\r
-\r
- numPoints = gtk_entry_new_with_max_length(256);\r
- gtk_entry_set_text(GTK_ENTRY(numPoints), "0");\r
- gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,\r
- (GtkAttachOptions) (GTK_FILL),\r
- (GtkAttachOptions) (0), 0, 0);\r
- gtk_widget_show (numPoints);\r
-\r
-\r
- hbox = gtk_hbox_new (FALSE, 10);\r
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);\r
- gtk_widget_show (hbox);\r
- \r
- // ---- hbox ----\r
-\r
- w = gtk_button_new_with_label ("Ok");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));\r
-\r
- GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);\r
- gtk_widget_grab_default (w);\r
- gtk_widget_show (w);\r
- \r
- w = gtk_button_new_with_label ("Cancel");\r
- gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);\r
- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));\r
- gtk_widget_show (w);\r
- ret = IDCANCEL;\r
-\r
- // ---- /hbox ----\r
- \r
-\r
-\r
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);\r
- gtk_widget_show (window);\r
- gtk_grab_add (window);\r
- \r
- bool dialogError = TRUE;\r
- while (dialogError)\r
- {\r
- loop = 1;\r
- while (loop)\r
- gtk_main_iteration ();\r
- \r
- dialogError = FALSE;\r
-\r
- if(ret != IDCANCEL)\r
- {\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))\r
- dialogError = TRUE;\r
-\r
- if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))\r
- dialogError = TRUE;\r
- }\r
- }\r
-\r
- gtk_grab_remove (window);\r
- gtk_widget_destroy (window);\r
-\r
- return ret;\r
-}\r
+/*
+BobToolz plugin for GtkRadiant
+Copyright (C) 2001 Gordon Biggans
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#include "../StdAfx.h"
+#include "dialogs-gtk.h"
+#include "../funchandlers.h"
+#include "../lists.h"
+#include "../misc.h"
+
+/*--------------------------------
+ Callback Functions
+---------------------------------*/
+
+typedef struct {
+ GtkWidget *cbTexChange;
+ GtkWidget *editTexOld, *editTexNew;
+
+ GtkWidget *cbScaleHor, *cbScaleVert;
+ GtkWidget *editScaleHor, *editScaleVert;
+
+ GtkWidget *cbShiftHor, *cbShiftVert;
+ GtkWidget *editShiftHor, *editShiftVert;
+
+ GtkWidget *cbRotation;
+ GtkWidget *editRotation;
+}dlg_texReset_t;
+
+dlg_texReset_t dlgTexReset;
+
+void Update_TextureReseter();
+
+static void dialog_button_callback_texreset_update (GtkWidget *widget, gpointer data)
+{
+ Update_TextureReseter();
+}
+
+void Update_TextureReseter()
+{
+ gboolean check;
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexNew), check);
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editTexOld), check);
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleHor), check);
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editScaleVert), check);
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftHor), check);
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editShiftVert), check);
+
+ check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
+ gtk_entry_set_editable (GTK_ENTRY (dlgTexReset.editRotation), check);
+}
+
+static void dialog_button_callback (GtkWidget *widget, gpointer data)
+{
+ GtkWidget *parent;
+ int *loop, *ret;
+
+ parent = gtk_widget_get_toplevel (widget);
+ loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
+ ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
+
+ *loop = 0;
+ *ret = (int)data;
+}
+
+static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ int *loop;
+
+ gtk_widget_hide (widget);
+ loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
+ *loop = 0;
+
+ return TRUE;
+}
+
+static void dialog_button_callback_settex (GtkWidget *widget, gpointer data)
+{
+ TwinWidget* tw = (TwinWidget*)data;
+
+ GtkEntry* entry = GTK_ENTRY( tw->one );
+ GtkCombo* combo = GTK_COMBO( tw->two );
+
+ const gchar* tex = gtk_entry_get_text(GTK_ENTRY( combo->entry ));
+ gtk_entry_set_text( entry, tex);
+}
+
+/*--------------------------------
+ Data validation Routines
+---------------------------------*/
+
+bool ValidateTextFloat(const char* pData, char* error_title, float* value)
+{
+ if(pData)
+ {
+ float testNum = (float)atof(pData);
+
+ if((testNum == 0.0f) && strcmp(pData, "0"))
+ {
+ DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
+ return FALSE;
+ }
+ else
+ {
+ *value = testNum;
+ return TRUE;
+ }
+ }
+
+ DoMessageBox("Please Enter A Floating Point Number", error_title, MB_OK);
+ return FALSE;
+}
+
+bool ValidateTextFloatRange(const char* pData, float min, float max, char* error_title, float* value)
+{
+ char error_buffer[256];
+ sprintf(error_buffer, "Please Enter A Floating Point Number Between %.3f and %.3f", min, max);
+
+ if(pData)
+ {
+ float testNum = (float)atof(pData);
+
+ if((testNum < min) || (testNum > max))
+ {
+ DoMessageBox(error_buffer, error_title, MB_OK);
+ return FALSE;
+ }
+ else
+ {
+ *value = testNum;
+ return TRUE;
+ }
+ }
+
+ DoMessageBox(error_buffer, error_title, MB_OK);
+ return FALSE;
+}
+
+bool ValidateTextIntRange(const char* pData, int min, int max, char* error_title, int* value)
+{
+ char error_buffer[256];
+ sprintf(error_buffer, "Please Enter An Integer Between %i and %i", min, max);
+
+ if(pData)
+ {
+ int testNum = atoi(pData);
+
+ if((testNum < min) || (testNum > max))
+ {
+ DoMessageBox(error_buffer, error_title, MB_OK);
+ return FALSE;
+ }
+ else
+ {
+ *value = testNum;
+ return TRUE;
+ }
+ }
+
+ DoMessageBox(error_buffer, error_title, MB_OK);
+ return FALSE;
+}
+
+bool ValidateTextInt(const char* pData, char* error_title, int* value)
+{
+ if(pData)
+ {
+ int testNum = atoi(pData);
+
+ if((testNum == 0) && strcmp(pData, "0"))
+ {
+ DoMessageBox("Please Enter An Integer", error_title, MB_OK);
+ return FALSE;
+ }
+ else
+ {
+ *value = testNum;
+ return TRUE;
+ }
+ }
+
+ DoMessageBox("Please Enter An Integer", error_title, MB_OK);
+ return FALSE;
+}
+
+/*--------------------------------
+ Modal Dialog Boxes
+---------------------------------*/
+
+/*
+
+ Major clean up of variable names etc required, excluding Mars's ones,
+ which are nicely done :)
+
+*/
+
+int DoMessageBox (const char* lpText, const char* lpCaption, guint32 uType)
+{
+ GtkWidget *window, *w, *vbox, *hbox;
+ int mode = (uType & MB_TYPEMASK), ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event",
+ GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+ gtk_window_set_title (GTK_WINDOW (window), lpCaption);
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+ gtk_widget_realize (window);
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ w = gtk_label_new (lpText);
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ w = gtk_hseparator_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
+ gtk_widget_show (w);
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ if (mode == MB_OK)
+ {
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+ ret = IDOK;
+ }
+ else if (mode == MB_OKCANCEL)
+ {
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+ }
+ else if (mode == MB_YESNOCANCEL)
+ {
+ w = gtk_button_new_with_label ("Yes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("No");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+ }
+ else /* if (mode == MB_YESNO) */
+ {
+ w = gtk_button_new_with_label ("Yes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("No");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDNO));
+ gtk_widget_show (w);
+ ret = IDNO;
+ }
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ while (loop)
+ gtk_main_iteration ();
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+int DoIntersectBox (IntersectRS* rs)
+{
+ GtkWidget *window, *w, *vbox, *hbox;
+ GtkWidget *radio1, *radio2;
+ GtkWidget *check1, *check2;
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "Intersect");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ radio1 = gtk_radio_button_new_with_label(NULL, "Use Whole Map");
+ gtk_box_pack_start (GTK_BOX (vbox), radio1, FALSE, FALSE, 2);
+ gtk_widget_show (radio1);
+
+ radio2 = gtk_radio_button_new_with_label(((GtkRadioButton*)radio1)->group, "Use Selected Brushes");
+ gtk_box_pack_start (GTK_BOX (vbox), radio2, FALSE, FALSE, 2);
+ gtk_widget_show (radio2);
+
+ w = gtk_hseparator_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
+ gtk_widget_show (w);
+
+ check1 = gtk_check_button_new_with_label("Include Detail Brushes");
+ gtk_box_pack_start (GTK_BOX (vbox), check1, FALSE, FALSE, 0);
+ gtk_widget_show (check1);
+
+ check2 = gtk_check_button_new_with_label("Select Duplicate Brushes Only");
+ gtk_box_pack_start (GTK_BOX (vbox), check2, FALSE, FALSE, 0);
+ gtk_widget_show (check2);
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ---- ok/cancel buttons
+
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+
+ // ---- /hbox ----
+
+ // ---- /vbox ----
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ while (loop)
+ gtk_main_iteration ();
+
+ if(gtk_toggle_button_get_active((GtkToggleButton*)radio1))
+ rs->nBrushOptions = BRUSH_OPT_WHOLE_MAP;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radio2))
+ rs->nBrushOptions = BRUSH_OPT_SELECTED;
+
+ rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
+ rs->bDuplicateOnly = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+int DoPolygonBox (PolygonRS* rs)
+{
+ GtkWidget *window, *w, *vbox, *hbox, *vbox2, *hbox2;
+
+ GtkWidget *check1, *check2, *check3;
+ GtkWidget *text1, *text2;
+
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "Polygon Builder");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+
+ vbox2 = gtk_vbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
+ gtk_widget_show (vbox2);
+
+ // ---- vbox2 ----
+
+ hbox2 = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
+ gtk_widget_show (hbox2);
+
+ // ---- hbox2 ----
+
+ text1 = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text((GtkEntry*)text1, "3");
+ gtk_box_pack_start (GTK_BOX (hbox2), text1, FALSE, FALSE, 2);
+ gtk_widget_show (text1);
+
+ w = gtk_label_new ("Number Of Sides");
+ gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox2 ----
+
+ hbox2 = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 2);
+ gtk_widget_show (hbox2);
+
+ // ---- hbox2 ----
+
+ text2 = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text((GtkEntry*)text2, "8");
+ gtk_box_pack_start (GTK_BOX (hbox2), text2, FALSE, FALSE, 2);
+ gtk_widget_show (text2);
+
+ w = gtk_label_new ("Border Width");
+ gtk_box_pack_start (GTK_BOX (hbox2), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox2 ----
+
+ // ---- /vbox2 ----
+
+
+
+ vbox2 = gtk_vbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 2);
+ gtk_widget_show (vbox2);
+
+ // ---- vbox2 ----
+
+ check1 = gtk_check_button_new_with_label("Use Border");
+ gtk_box_pack_start (GTK_BOX (vbox2), check1, FALSE, FALSE, 0);
+ gtk_widget_show (check1);
+
+
+ check2 = gtk_check_button_new_with_label("Inverse Polygon");
+ gtk_box_pack_start (GTK_BOX (vbox2), check2, FALSE, FALSE, 0);
+ gtk_widget_show (check2);
+
+
+ check3 = gtk_check_button_new_with_label("Align Top Edge");
+ gtk_box_pack_start (GTK_BOX (vbox2), check3, FALSE, FALSE, 0);
+ gtk_widget_show (check3);
+
+ // ---- /vbox2 ----
+
+ // ---- /hbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+
+ // ---- /hbox ----
+
+ // ---- /vbox ----
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ bool dialogError = TRUE;
+ while (dialogError)
+ {
+ loop = 1;
+ while (loop)
+ gtk_main_iteration ();
+
+ dialogError = FALSE;
+
+ if(ret == IDOK)
+ {
+ rs->bUseBorder = gtk_toggle_button_get_active((GtkToggleButton*)check1) ? true : false;
+ rs->bInverse = gtk_toggle_button_get_active((GtkToggleButton*)check2) ? true : false;
+ rs->bAlignTop = gtk_toggle_button_get_active((GtkToggleButton*)check3) ? true : false;
+
+ if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text1), 3, 32, "Number Of Sides", &rs->nSides))
+ dialogError = TRUE;
+
+ if(rs->bUseBorder)
+ {
+ if(!ValidateTextIntRange(gtk_entry_get_text((GtkEntry*)text2), 8, 256, "Border Width", &rs->nBorderWidth))
+ dialogError = TRUE;
+ }
+ }
+ }
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+// mars
+// for stair builder stuck as close as i could to the MFC version
+// obviously feel free to change it at will :)
+int DoBuildStairsBox(BuildStairsRS* rs)
+{
+ // i made widgets for just about everything ... i think that's what i need to do dunno tho
+ GtkWidget *window, *w, *vbox, *hbox;
+ GtkWidget *textStairHeight, *textRiserTex, *textMainTex;
+ GtkWidget *radioNorth, *radioSouth, *radioEast, *radioWest; // i'm guessing we can't just abuse 'w' for these if we're getting a value
+ GtkWidget *radioOldStyle, *radioBobStyle, *radioCornerStyle;
+ GtkWidget *checkUseDetail;
+ GSList *radioDirection, *radioStyle;
+ int ret, loop;
+
+ loop = 1;
+
+ char *text = "Please set a value in the boxes below and press 'OK' to build the stairs";
+
+ window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title( GTK_WINDOW( window ), "Stair Builder" );
+
+ gtk_container_border_width( GTK_CONTAINER( window ), 10 );
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+ // new vbox
+ vbox = gtk_vbox_new( FALSE, 10 );
+ gtk_container_add( GTK_CONTAINER( window ), vbox );
+ gtk_widget_show( vbox );
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_container_add( GTK_CONTAINER( vbox ), hbox );
+ gtk_widget_show( hbox );
+
+ // dunno if you want this text or not ...
+ w = gtk_label_new( text );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 ); // not entirely sure on all the parameters / what they do ...
+ gtk_widget_show( w );
+
+ w = gtk_hseparator_new();
+ gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // ------------------------- // indenting == good way of keeping track of lines :)
+
+ // new hbox
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ textStairHeight = gtk_entry_new_with_max_length( 256 );
+ gtk_box_pack_start( GTK_BOX( hbox ), textStairHeight, FALSE, FALSE, 1 );
+ gtk_widget_show( textStairHeight );
+
+ w = gtk_label_new( "Stair Height" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
+ gtk_widget_show( w );
+
+ // ------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_label_new( "Direction:" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
+ gtk_widget_show( w );
+
+ // -------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ // radio buttons confuse me ...
+ // but this _looks_ right
+
+ // djbob: actually it looks very nice :), slightly better than the way i did it
+ // edit: actually it doesn't work :P, you must pass the last radio item each time, ugh
+
+ radioNorth = gtk_radio_button_new_with_label( NULL, "North" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioNorth, FALSE, FALSE, 3 );
+ gtk_widget_show( radioNorth );
+
+ radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNorth ) );
+
+ radioSouth = gtk_radio_button_new_with_label( radioDirection, "South" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioSouth, FALSE, FALSE, 2 );
+ gtk_widget_show( radioSouth );
+
+ radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioSouth ) );
+
+ radioEast = gtk_radio_button_new_with_label( radioDirection, "East" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioEast, FALSE, FALSE, 1 );
+ gtk_widget_show( radioEast );
+
+ radioDirection = gtk_radio_button_group( GTK_RADIO_BUTTON( radioEast ) );
+
+ radioWest = gtk_radio_button_new_with_label( radioDirection, "West" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioWest, FALSE, FALSE, 0 );
+ gtk_widget_show( radioWest );
+
+ // --------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_label_new( "Style:" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 5 );
+ gtk_widget_show( w );
+
+ // --------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ radioOldStyle = gtk_radio_button_new_with_label( NULL, "Original" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioOldStyle, FALSE, FALSE, 0 );
+ gtk_widget_show( radioOldStyle );
+
+ radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioOldStyle ) );
+
+ radioBobStyle = gtk_radio_button_new_with_label( radioStyle, "Bob's Style" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioBobStyle, FALSE, FALSE, 0 );
+ gtk_widget_show( radioBobStyle );
+
+ radioStyle = gtk_radio_button_group( GTK_RADIO_BUTTON( radioBobStyle ) );
+
+ radioCornerStyle = gtk_radio_button_new_with_label( radioStyle, "Corner Style" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioCornerStyle, FALSE, FALSE, 0 );
+ gtk_widget_show( radioCornerStyle );
+
+ // err, the q3r has an if or something so you need bob style checked before this
+ // is "ungreyed out" but you'll need to do that, as i suck :)
+
+ // djbob: er.... yeah um, im not at all sure how i'm gonna sort this
+ // djbob: think we need some button callback functions or smuffin
+ // FIXME: actually get around to doing what i suggested!!!!
+
+ checkUseDetail = gtk_check_button_new_with_label( "Use Detail Brushes" );
+ gtk_box_pack_start( GTK_BOX( hbox ), checkUseDetail, FALSE, FALSE, 0 );
+ gtk_widget_show( checkUseDetail );
+
+ // --------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ textMainTex = gtk_entry_new_with_max_length( 512 );
+ gtk_entry_set_text(GTK_ENTRY(textMainTex), rs->mainTexture);
+ gtk_box_pack_start( GTK_BOX( hbox ), textMainTex, FALSE, FALSE, 0 );
+ gtk_widget_show( textMainTex );
+
+ w = gtk_label_new( "Main Texture" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
+ gtk_widget_show( w );
+
+ // -------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ textRiserTex = gtk_entry_new_with_max_length( 512 );
+ gtk_box_pack_start( GTK_BOX( hbox ), textRiserTex, FALSE, FALSE, 0 );
+ gtk_widget_show( textRiserTex );
+
+ w = gtk_label_new( "Riser Texture" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 1 );
+ gtk_widget_show( w );
+
+ // -------------------------- //
+ w = gtk_hseparator_new();
+ gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_button_new_with_label( "OK" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
+ GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+ gtk_widget_grab_default( w );
+ gtk_widget_show( w );
+
+ w = gtk_button_new_with_label( "Cancel" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
+ gtk_widget_show( w );
+
+ ret = IDCANCEL;
+
+// +djbob: need our "little" modal loop mars :P
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ bool dialogError = TRUE;
+ while (dialogError)
+ {
+ loop = 1;
+ while (loop)
+ gtk_main_iteration ();
+
+ dialogError = FALSE;
+
+ if(ret == IDOK)
+ {
+ rs->bUseDetail = gtk_toggle_button_get_active((GtkToggleButton*)checkUseDetail) ? true : false;
+
+ strcpy(rs->riserTexture, gtk_entry_get_text((GtkEntry*)textRiserTex));
+ strcpy(rs->mainTexture, gtk_entry_get_text((GtkEntry*)textMainTex));
+
+ if(gtk_toggle_button_get_active((GtkToggleButton*)radioNorth))
+ rs->direction = MOVE_NORTH;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radioSouth))
+ rs->direction = MOVE_SOUTH;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radioEast))
+ rs->direction = MOVE_EAST;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radioWest))
+ rs->direction = MOVE_WEST;
+
+ if(!ValidateTextInt(gtk_entry_get_text((GtkEntry*)textStairHeight), "Stair Height", &rs->stairHeight))
+ dialogError = TRUE;
+
+ if(gtk_toggle_button_get_active((GtkToggleButton*)radioOldStyle))
+ rs->style = STYLE_ORIGINAL;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radioBobStyle))
+ rs->style = STYLE_BOB;
+ else if(gtk_toggle_button_get_active((GtkToggleButton*)radioCornerStyle))
+ rs->style = STYLE_CORNER;
+ }
+ }
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+// -djbob
+
+ // there we go, all done ... on my end at least, not bad for a night's work
+}
+
+int DoDoorsBox(DoorRS* rs)
+{
+ GtkWidget *window, *hbox, *vbox, *w;
+ GtkWidget *textFrontBackTex, *textTrimTex;
+ GtkWidget *checkScaleMainH, *checkScaleMainV, *checkScaleTrimH, *checkScaleTrimV;
+ GtkWidget *comboMain, *comboTrim;
+ GtkWidget *buttonSetMain, *buttonSetTrim;
+ GtkWidget *radioNS, *radioEW;
+ GSList *radioOrientation;
+ TwinWidget tw1, tw2;
+ int ret, loop;
+
+ loop = 1;
+
+ window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title( GTK_WINDOW( window ), "Door Builder" );
+
+ gtk_container_border_width( GTK_CONTAINER( window ), 10 );
+
+ g_object_set_data( G_OBJECT( window ), "loop", &loop );
+ g_object_set_data( G_OBJECT( window ), "ret", &ret );
+
+ gtk_widget_realize (window);
+
+ char buffer[256];
+ GList *listMainTextures = NULL;
+ GList *listTrimTextures = NULL;
+ LoadGList(GetFilename(buffer, "plugins/bt/door-tex.txt"), &listMainTextures);
+ LoadGList(GetFilename(buffer, "plugins/bt/door-tex-trim.txt"), &listTrimTextures);
+
+ vbox = gtk_vbox_new( FALSE, 10 );
+ gtk_container_add( GTK_CONTAINER( window ), vbox );
+ gtk_widget_show( vbox );
+
+ // -------------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ textFrontBackTex = gtk_entry_new_with_max_length( 512 );
+ gtk_entry_set_text( GTK_ENTRY( textFrontBackTex ), rs->mainTexture);
+ gtk_box_pack_start( GTK_BOX( hbox ), textFrontBackTex, FALSE, FALSE, 0 );
+ gtk_widget_show( textFrontBackTex );
+
+ w = gtk_label_new( "Door Front/Back Texture" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // ------------------------ //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ textTrimTex = gtk_entry_new_with_max_length( 512 );
+ gtk_box_pack_start( GTK_BOX( hbox ), textTrimTex, FALSE, FALSE, 0 );
+ gtk_widget_show( textTrimTex );
+
+ w = gtk_label_new( "Door Trim Texture" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // ----------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ // sp: horizontally ????
+ // djbob: yes mars, u can spell :]
+ checkScaleMainH = gtk_check_button_new_with_label( "Scale Main Texture Horizontally" );
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainH ), TRUE);
+ gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainH, FALSE, FALSE, 0 );
+ gtk_widget_show( checkScaleMainH );
+
+ checkScaleTrimH = gtk_check_button_new_with_label( "Scale Trim Texture Horizontally" );
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleTrimH ), TRUE);
+ gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimH, FALSE, FALSE, 0 );
+ gtk_widget_show( checkScaleTrimH );
+
+ // ---------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ checkScaleMainV = gtk_check_button_new_with_label( "Scale Main Texture Vertically" );
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( checkScaleMainV ), TRUE);
+ gtk_box_pack_start( GTK_BOX( hbox ), checkScaleMainV, FALSE, FALSE, 0 );
+ gtk_widget_show( checkScaleMainV );
+
+ checkScaleTrimV = gtk_check_button_new_with_label( "Scale Trim Texture Vertically" );
+ gtk_box_pack_start( GTK_BOX( hbox ), checkScaleTrimV, FALSE, FALSE, 0 );
+ gtk_widget_show( checkScaleTrimV );
+
+ // --------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ // djbob: lists added
+
+ comboMain = gtk_combo_new();
+ gtk_box_pack_start( GTK_BOX( hbox ), comboMain, FALSE, FALSE, 0 );
+ gtk_combo_set_popdown_strings( GTK_COMBO( comboMain ), listMainTextures );
+ gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
+ gtk_widget_show( comboMain );
+
+ tw1.one = textFrontBackTex;
+ tw1.two = comboMain;
+
+ buttonSetMain = gtk_button_new_with_label( "Set As Main Texture" );
+ gtk_signal_connect( GTK_OBJECT( buttonSetMain ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw1 );
+ gtk_box_pack_start( GTK_BOX( hbox ), buttonSetMain, FALSE, FALSE, 0 );
+ gtk_widget_show( buttonSetMain );
+
+ // ------------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ comboTrim = gtk_combo_new();
+ gtk_box_pack_start( GTK_BOX( hbox ), comboTrim, FALSE, FALSE, 0 );
+ gtk_combo_set_popdown_strings( GTK_COMBO( comboTrim ), listTrimTextures );
+ gtk_combo_set_use_arrows( GTK_COMBO( comboMain ), 1 );
+ gtk_widget_show( comboTrim );
+
+ tw2.one = textTrimTex;
+ tw2.two = comboTrim;
+
+ buttonSetTrim = gtk_button_new_with_label( "Set As Trim Texture" );
+ gtk_signal_connect( GTK_OBJECT( buttonSetTrim ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback_settex ), &tw2 );
+ gtk_box_pack_start( GTK_BOX( hbox ), buttonSetTrim, FALSE, FALSE, 0 );
+ gtk_widget_show( buttonSetTrim );
+
+ // ------------------ //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_label_new( "Orientation" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // argh more radio buttons!
+ radioNS = gtk_radio_button_new_with_label( NULL, "North - South" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioNS, FALSE, FALSE, 0 );
+ gtk_widget_show( radioNS );
+
+ radioOrientation = gtk_radio_button_group( GTK_RADIO_BUTTON( radioNS ) );
+
+ radioEW = gtk_radio_button_new_with_label( radioOrientation, "East - West" );
+ gtk_box_pack_start( GTK_BOX( hbox ), radioEW, FALSE, FALSE, 0 );
+ gtk_widget_show( radioEW );
+
+ // ----------------- //
+
+ w = gtk_hseparator_new();
+ gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // ----------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_button_new_with_label( "OK" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
+ GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+ gtk_widget_grab_default( w );
+ gtk_widget_show( w );
+
+ w = gtk_button_new_with_label( "Cancel" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
+ gtk_widget_show( w );
+ ret = IDCANCEL;
+
+ // ----------------- //
+
+//+djbob
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ while (loop)
+ gtk_main_iteration ();
+
+ strcpy(rs->mainTexture, gtk_entry_get_text( GTK_ENTRY( textFrontBackTex ) ));
+ strcpy(rs->trimTexture, gtk_entry_get_text( GTK_ENTRY( textTrimTex ) ));
+
+ rs->bScaleMainH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainH)) ? true : false;
+ rs->bScaleMainV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleMainV)) ? true : false;
+ rs->bScaleTrimH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimH)) ? true : false;
+ rs->bScaleTrimV = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkScaleTrimV)) ? true : false;
+
+ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioNS)))
+ rs->nOrientation = DIRECTION_NS;
+ else if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radioEW)))
+ rs->nOrientation = DIRECTION_EW;
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+//-djbob
+}
+
+int DoPathPlotterBox(PathPlotterRS* rs)
+{
+ GtkWidget *window, *w, *vbox, *hbox;
+
+ GtkWidget *text1, *text2, *text3;
+ GtkWidget *check1, *check2;
+
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ text1 = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text((GtkEntry*)text1, "25");
+ gtk_box_pack_start (GTK_BOX (hbox), text1, FALSE, FALSE, 2);
+ gtk_widget_show (text1);
+
+ w = gtk_label_new ("Number Of Points");
+ gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ text2 = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text((GtkEntry*)text2, "3");
+ gtk_box_pack_start (GTK_BOX (hbox), text2, FALSE, FALSE, 2);
+ gtk_widget_show (text2);
+
+ w = gtk_label_new ("Multipler");
+ gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox ----
+
+ w = gtk_label_new ("Path Distance = dist(start -> apex) * multiplier");
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ text3 = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text((GtkEntry*)text3, "-800");
+ gtk_box_pack_start (GTK_BOX (hbox), text3, FALSE, FALSE, 2);
+ gtk_widget_show (text3);
+
+ w = gtk_label_new ("Gravity");
+ gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox ----
+
+ w = gtk_hseparator_new();
+ gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ check1 = gtk_check_button_new_with_label( "No Dynamic Update" );
+ gtk_box_pack_start( GTK_BOX( vbox ), check1, FALSE, FALSE, 0 );
+ gtk_widget_show( check1 );
+
+ check2 = gtk_check_button_new_with_label( "Show Bounding Lines" );
+ gtk_box_pack_start( GTK_BOX( vbox ), check2, FALSE, FALSE, 0 );
+ gtk_widget_show( check2 );
+
+ // ---- /vbox ----
+
+
+ // ----------------- //
+
+ w = gtk_hseparator_new();
+ gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
+ gtk_widget_show( w );
+
+ // ----------------- //
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
+ gtk_widget_show( hbox );
+
+ w = gtk_button_new_with_label( "Enable" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDYES ) );
+ gtk_widget_show( w );
+
+ GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
+ gtk_widget_grab_default( w );
+
+ w = gtk_button_new_with_label( "Disable" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0);
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDNO ) );
+ gtk_widget_show( w );
+
+ w = gtk_button_new_with_label( "Cancel" );
+ gtk_box_pack_start( GTK_BOX( hbox ), w, TRUE, TRUE, 0 );
+ gtk_signal_connect( GTK_OBJECT( w ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) );
+ gtk_widget_show( w );
+
+ ret = IDCANCEL;
+
+ // ----------------- //
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ bool dialogError = TRUE;
+ while (dialogError)
+ {
+ loop = 1;
+ while (loop)
+ gtk_main_iteration ();
+
+ dialogError = FALSE;
+
+ if(ret == IDYES)
+ {
+ if(!ValidateTextIntRange(gtk_entry_get_text(GTK_ENTRY(text1)), 1, 200, "Number Of Points", &rs->nPoints))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text2)), 1.0f, 10.0f, "Multiplier", &rs->fMultiplier))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloatRange(gtk_entry_get_text(GTK_ENTRY(text3)), -10000.0f, -1.0f, "Gravity", &rs->fGravity))
+ dialogError = TRUE;
+
+ rs->bNoUpdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check1)) ? true : false;
+ rs->bShowExtra = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check2)) ? true : false;
+ }
+ }
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+int DoCTFColourChangeBox ()
+{
+ GtkWidget *window, *w, *vbox, *hbox;
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "CTF Colour Changer");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ hbox = gtk_hbox_new( FALSE, 10 );
+ gtk_box_pack_start( GTK_BOX( vbox ), hbox, TRUE, TRUE, 0 );
+ gtk_widget_show( hbox );
+
+ // ---- hbox ---- ok/cancel buttons
+
+ w = gtk_button_new_with_label ("Red->Blue");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Blue->Red");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+
+ // ---- /hbox ----
+
+ // ---- /vbox ----
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ while (loop)
+ gtk_main_iteration ();
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+int DoResetTextureBox (ResetTextureRS* rs)
+{
+ Str texSelected;
+
+ GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
+
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "Texture Reset");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ g_object_set_data (G_OBJECT (window), "loop", &loop);
+ g_object_set_data (G_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ texSelected = "Currently Selected Face: ";
+ if(g_SelectedFaceTable.m_pfnGetSelectedFaceCount() == 1) {
+ texSelected += GetCurrentTexture();
+ }
+
+ w = gtk_label_new (texSelected);
+ gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ // ---- /hbox ----
+
+ frame = gtk_frame_new ("Reset Texture Names");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ dlgTexReset.cbTexChange = gtk_check_button_new_with_label("Enabled");
+ gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbTexChange), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
+ gtk_widget_show (dlgTexReset.cbTexChange);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbTexChange, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("Old Name: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editTexOld = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexOld), rs->textureName);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexOld, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editTexOld);
+
+ w = gtk_label_new ("New Name: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editTexNew = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editTexNew), rs->textureName);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editTexNew, 2, 3, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editTexNew);
+
+ // ---- /frame ----
+
+ frame = gtk_frame_new ("Reset Scales");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ dlgTexReset.cbScaleHor = gtk_check_button_new_with_label("Enabled");
+ gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
+ gtk_widget_show (dlgTexReset.cbScaleHor);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleHor, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("New Horizontal Scale: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editScaleHor = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleHor), "0.5");
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleHor, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editScaleHor);
+
+
+ dlgTexReset.cbScaleVert = gtk_check_button_new_with_label("Enabled");
+ gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbScaleVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
+ gtk_widget_show (dlgTexReset.cbScaleVert);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbScaleVert, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("New Vertical Scale: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editScaleVert = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editScaleVert), "0.5");
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editScaleVert, 2, 3, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editScaleVert);
+
+ // ---- /frame ----
+
+ frame = gtk_frame_new ("Reset Shift");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ dlgTexReset.cbShiftHor = gtk_check_button_new_with_label("Enabled");
+ gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftHor), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
+ gtk_widget_show (dlgTexReset.cbShiftHor);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftHor, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("New Horizontal Shift: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editShiftHor = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftHor), "0");
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftHor, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editShiftHor);
+
+
+ dlgTexReset.cbShiftVert = gtk_check_button_new_with_label("Enabled");
+ gtk_signal_connect (GTK_OBJECT (dlgTexReset.cbShiftVert), "toggled", GTK_SIGNAL_FUNC (dialog_button_callback_texreset_update), NULL);
+ gtk_widget_show (dlgTexReset.cbShiftVert);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbShiftVert, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("New Vertical Shift: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editShiftVert = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editShiftVert), "0");
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editShiftVert, 2, 3, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editShiftVert);
+
+ // ---- /frame ----
+
+ frame = gtk_frame_new ("Reset Rotation");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (1, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ dlgTexReset.cbRotation = gtk_check_button_new_with_label("Enabled");
+ gtk_widget_show (dlgTexReset.cbRotation);
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.cbRotation, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+
+ w = gtk_label_new ("New Rotation Value: ");
+ gtk_table_attach (GTK_TABLE (table), w, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ dlgTexReset.editRotation = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(dlgTexReset.editRotation), "0");
+ gtk_table_attach (GTK_TABLE (table), dlgTexReset.editRotation, 2, 3, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (dlgTexReset.editRotation);
+
+ // ---- /frame ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ w = gtk_button_new_with_label ("Use Selected Brushes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Use All Brushes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDYES));
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+
+ // ---- /hbox ----
+
+ // ---- /vbox ----
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ Update_TextureReseter();
+
+ bool dialogError = TRUE;
+ while (dialogError)
+ {
+ loop = 1;
+ while (loop)
+ gtk_main_iteration ();
+
+ dialogError = FALSE;
+
+ if(ret != IDCANCEL)
+ {
+ rs->bResetRotation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbRotation ));
+ if(rs->bResetRotation)
+ if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editRotation)), "Rotation", &rs->rotation))
+ dialogError = TRUE;
+
+ rs->bResetScale[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleHor ));
+ if(rs->bResetScale[0])
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleHor)), "Horizontal Scale", &rs->fScale[0]))
+ dialogError = TRUE;
+
+ rs->bResetScale[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbScaleVert ));
+ if(rs->bResetScale[1])
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editScaleVert)), "Vertical Scale", &rs->fScale[1]))
+ dialogError = TRUE;
+
+ rs->bResetShift[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftHor ));
+ if(rs->bResetShift[0])
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftHor)), "Horizontal Shift", &rs->fShift[0]))
+ dialogError = TRUE;
+
+ rs->bResetShift[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbShiftVert ));
+ if(rs->bResetShift[1])
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(dlgTexReset.editShiftVert)), "Vertical Shift", &rs->fShift[1]))
+ dialogError = TRUE;
+
+ rs->bResetTextureName = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( dlgTexReset.cbTexChange ));
+ if(rs->bResetTextureName)
+ {
+ strcpy(rs->textureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexOld )));
+ strcpy(rs->newTextureName, gtk_entry_get_text(GTK_ENTRY( dlgTexReset.editTexNew )));
+ }
+ }
+ }
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+int DoTrainThingBox (TrainThingRS* rs)
+{
+ Str texSelected;
+
+ GtkWidget *window, *w, *vbox, *hbox, *frame, *table;
+
+ GtkWidget *radiusX, *radiusY;
+ GtkWidget *angleStart, *angleEnd;
+ GtkWidget *heightStart, *heightEnd;
+ GtkWidget *numPoints;
+
+ int ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "Train Thing");
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+
+ gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
+ gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
+
+ gtk_widget_realize (window);
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ // ---- vbox ----
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- /hbox ----
+
+ frame = gtk_frame_new ("Radii");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ w = gtk_label_new ("X: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ radiusX = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(radiusX), "100");
+ gtk_table_attach (GTK_TABLE (table), radiusX, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (radiusX);
+
+
+
+ w = gtk_label_new ("Y: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ radiusY = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(radiusY), "100");
+ gtk_table_attach (GTK_TABLE (table), radiusY, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (radiusY);
+
+
+
+ frame = gtk_frame_new ("Angles");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ w = gtk_label_new ("Start: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ angleStart = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(angleStart), "0");
+ gtk_table_attach (GTK_TABLE (table), angleStart, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (angleStart);
+
+
+
+ w = gtk_label_new ("End: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ angleEnd = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(angleEnd), "90");
+ gtk_table_attach (GTK_TABLE (table), angleEnd, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (angleEnd);
+
+
+ frame = gtk_frame_new ("Height");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ w = gtk_label_new ("Start: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ heightStart = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(heightStart), "0");
+ gtk_table_attach (GTK_TABLE (table), heightStart, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (heightStart);
+
+
+
+ w = gtk_label_new ("End: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ heightEnd = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(heightEnd), "0");
+ gtk_table_attach (GTK_TABLE (table), heightEnd, 1, 2, 1, 2,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (heightEnd);
+
+
+
+ frame = gtk_frame_new ("Points");
+ gtk_widget_show (frame);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
+
+ table = gtk_table_new (2, 3, TRUE);
+ gtk_widget_show (table);
+ gtk_container_add (GTK_CONTAINER (frame), table);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 5);
+
+ // ---- frame ----
+
+ w = gtk_label_new ("Number: ");
+ gtk_table_attach (GTK_TABLE (table), w, 0, 1, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (w);
+
+ numPoints = gtk_entry_new_with_max_length(256);
+ gtk_entry_set_text(GTK_ENTRY(numPoints), "0");
+ gtk_table_attach (GTK_TABLE (table), numPoints, 1, 2, 0, 1,
+ (GtkAttachOptions) (GTK_FILL),
+ (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_show (numPoints);
+
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ // ---- hbox ----
+
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
+
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
+ gtk_widget_show (w);
+ ret = IDCANCEL;
+
+ // ---- /hbox ----
+
+
+
+ gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ bool dialogError = TRUE;
+ while (dialogError)
+ {
+ loop = 1;
+ while (loop)
+ gtk_main_iteration ();
+
+ dialogError = FALSE;
+
+ if(ret != IDCANCEL)
+ {
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusX)), "Radius (X)", &rs->fRadiusX))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(radiusY)), "Radius (Y)", &rs->fRadiusY))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleStart)), "Angle (Start)", &rs->fStartAngle))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(angleEnd)), "Angle (End)", &rs->fEndAngle))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightStart)), "Height (Start)", &rs->fStartHeight))
+ dialogError = TRUE;
+
+ if(!ValidateTextFloat(gtk_entry_get_text(GTK_ENTRY(heightEnd)), "Height (End)", &rs->fEndHeight))
+ dialogError = TRUE;
+
+ if(!ValidateTextInt(gtk_entry_get_text(GTK_ENTRY(numPoints)), "Num Points", &rs->iNumPoints))
+ dialogError = TRUE;
+ }
+ }
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}