-void PrefsDlg::BuildDialog ()
-{
- // Main Preferences dialog
- GtkWidget *dialog, *mainvbox, *hbox, *sc_win, *preflabel;
-
- // Widgets on notebook pages
- GtkWidget *check, *label, *scale, *hbox2, *combo,
- *table, *spin, *entry, *pixmap,
- *radio, *button, *pageframe, *vbox;
-
- GList *combo_list = (GList*)NULL;
-
- GtkObject *adj;
-
- dialog = m_pWidget;
- gtk_window_set_title(GTK_WINDOW(dialog), "GtkRadiant Preferences");
- gtk_widget_realize(dialog);
-
- mainvbox = gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(dialog), mainvbox);
- gtk_container_set_border_width(GTK_CONTAINER(mainvbox), 5);
- gtk_widget_show(mainvbox);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_widget_show(hbox);
- gtk_box_pack_end(GTK_BOX(mainvbox), hbox, FALSE, TRUE, 0);
-
- button = gtk_button_new_with_label("OK");
- gtk_widget_show(button);
- gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
- gtk_widget_set_usize(button, 60, -2);
- AddModalButton(button, IDOK);
-
- button = gtk_button_new_with_label("Cancel");
- gtk_widget_show(button);
- gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
- gtk_widget_set_usize(button, 60, -2);
- AddModalButton(button, IDCANCEL);
-
- button = gtk_button_new_with_label ("Clean");
- gtk_widget_show(button);
- gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(OnButtonClean), this);
- gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
- gtk_widget_set_usize (button, 60, -2);
-
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(mainvbox), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- sc_win = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_box_pack_start(GTK_BOX(hbox), sc_win, FALSE, FALSE, 0);
- gtk_widget_show(sc_win);
-
- // prefs pages notebook
- notebook = gtk_notebook_new();
- // hide the notebook tabs since its not supposed to look like a notebook
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
- gtk_box_pack_start(GTK_BOX(hbox), notebook, TRUE, TRUE, 0);
- gtk_widget_show(notebook);
-
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sc_win), GTK_SHADOW_IN);
-
- {
- GtkTreeStore* store = gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
-
- GtkWidget* view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);
-
- {
- GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
- GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes("Preferences", renderer, "text", 0, NULL);
- gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
- }
-
- {
- GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
- g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(treeSelection), this);
- }
-
- gtk_widget_show(view);
-
- gtk_container_add(GTK_CONTAINER (sc_win), view);
-
- {
- /********************************************************************/
- /* Add preference tree options */
- /********************************************************************/
- {
- GtkTreeIter group;
- gtk_tree_store_append(store, &group, NULL);
- gtk_tree_store_set(store, &group, 0, "Globals", 1, PTAB_FRONT, -1);
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Game settings", 1, (gpointer)PTAB_GAME_SETTINGS, -1);
- }
- }
-
- {
- GtkTreeIter group;
- gtk_tree_store_append(store, &group, NULL);
- gtk_tree_store_set(store, &group, 0, "Display", 1, PTAB_FRONT, -1);
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "2D Display/Rendering", 1, (gpointer)PTAB_2D, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "3D View", 1, (gpointer)PTAB_CAMERA, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Texture Settings", 1, (gpointer)PTAB_TEXTURE, -1);
- }
- }
-
- {
- GtkTreeIter group;
- gtk_tree_store_append(store, &group, NULL);
- gtk_tree_store_set(store, &group, 0, "Interface", 1, PTAB_FRONT, -1);
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Layout", 1, (gpointer)PTAB_LAYOUT, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Mouse", 1, (gpointer)PTAB_MOUSE, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Editing", 1, (gpointer)PTAB_EDITING, -1);
- }
- }
-
- {
- GtkTreeIter group;
- gtk_tree_store_append(store, &group, NULL);
- gtk_tree_store_set(store, &group, 0, "Other", 1, PTAB_FRONT, -1);
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Startup/Auto save", 1, (gpointer)PTAB_STARTUP, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Paths", 1, (gpointer)PTAB_PATHS, -1);
- }
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "Misc", 1, (gpointer)PTAB_MISC, -1);
- }
- if (!g_qeglobals.bBSPFrontendPlugin)
- {
- GtkTreeIter tab;
- gtk_tree_store_append(store, &tab, &group);
- gtk_tree_store_set(store, &tab, 0, "BSP Monitoring", 1, (gpointer)PTAB_BSPMONITOR, -1);
- }
- }
- }
-
- gtk_tree_view_expand_all(GTK_TREE_VIEW(view));
-
- g_object_unref(G_OBJECT(store));
- }
-
- /**********************************************************************/
- /* build the prefs pages */
- /**********************************************************************/
-
- // Front page...
- // todo : add something interesting here
- // NOTE TTimo: tip of the day? or a logo?
- preflabel = gtk_label_new("Front Page");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new(NULL);
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_widget_set_usize(GTK_WIDGET(vbox), 350, -2);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** global preferences group ****************************/
- preflabel = gtk_label_new("Globals");
- gtk_widget_show(preflabel);
-
- pageframe = mGamesDialog.GetGlobalFrame();
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** 2D prefs group (xy views/rendering options) *********/
- preflabel = gtk_label_new("2D Display");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("2D Display");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // OpenGL Display Lists
- check = gtk_check_button_new_with_label("OpenGL Display Lists");
- gtk_widget_show(check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData(check, &m_bDisplayLists, DLG_CHECK_BOOL);
-
- // Antialiased points & lines
- // Fishman - Add antialiazed points and lines support. 09/03/00
- check = gtk_check_button_new_with_label ("OpenGL antialiased points and lines");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bAntialiasedPointsAndLines, DLG_CHECK_BOOL);
-
- // Solid selection boxes
- check = gtk_check_button_new_with_label ("Solid selection boxes");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bNoStipple, DLG_CHECK_BOOL);
-
- // Display size info
- check = gtk_check_button_new_with_label ("Display size info");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bSizePaint, DLG_CHECK_BOOL);
-
- // Alternate vertex/edge handles
- // Gef: Kyro GL_POINT work around 25-aug-2001
- check = gtk_check_button_new_with_label ("Alternate vertex/edge handles");
- gtk_widget_show(check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData(check, &m_bGlPtWorkaround, DLG_CHECK_BOOL);
-
- g_list_free (combo_list);
-
-#ifdef ATIHACK_812
- // ATI bugs
- // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=812
- check = gtk_check_button_new_with_label ("ATI cards with broken drivers - bug #802");
- gtk_widget_show(check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData(check, &m_bGlATIHack, DLG_CHECK_BOOL);
-#endif
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** 3D Camera view group *********/
- preflabel = gtk_label_new("3D View");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("3D View");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // Directional velocity (Movement Velocity)
- // label container
- hbox2 = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
-
- // label
- label = gtk_label_new("Movement Velocity");
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- gtk_widget_show(label);
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
-
- // adjustment
- adj = gtk_adjustment_new(100, 50, 300, 1, 10, 10);
- AddDialogData(adj, &m_nMoveSpeed, DLG_ADJ_INT);
-
- // scale
- scale = gtk_hscale_new(GTK_ADJUSTMENT(adj));
- gtk_widget_show(scale);
- gtk_box_pack_start(GTK_BOX (vbox), scale, FALSE, TRUE, 2);
-
- gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
-
- // Angular velocity (Rotational Velocity)
- // label container
- hbox2 = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
-
- // label
- label = gtk_label_new ("Rotational Velocity");
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- gtk_widget_show (label);
- gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
-
- // adjustment
- adj = gtk_adjustment_new (3, 1, 180, 1, 10, 10); // value, low, high, step, page_step, page_size
- AddDialogData (adj, &m_nAngleSpeed, DLG_ADJ_INT);
-
- // scale
- scale = gtk_hscale_new (GTK_ADJUSTMENT (adj));
- gtk_widget_show (scale);
- gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, TRUE, 2);
- gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
-
- // Text under the velocity sliders
- // container
- hbox2 = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
-
- // label
- label = gtk_label_new ("slow");
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-
- // label
- label = gtk_label_new ("fast");
- gtk_widget_show (label);
- gtk_box_pack_end (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-
- // Allow drag to select multiple faces/brushes
- // container
- table = gtk_table_new(2, 1, FALSE);
- gtk_widget_show(table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- label = gtk_label_new ("Use paint-select in camera view:");
- gtk_widget_show (label);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- combo_list = NULL;
- combo_list = g_list_append (combo_list, (void *)"No");
- combo_list = g_list_append (combo_list, (void *)"Yes");
- combo_list = g_list_append (combo_list, (void *)"Yes (Classic Key Setup)");
-
- combo = gtk_combo_new ();
- gtk_combo_set_popdown_strings (GTK_COMBO (combo), combo_list);
- gtk_widget_show (combo);
- gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
- AddDialogData (combo, &m_nCamDragMultiSelect, DLG_COMBO_INT);
-
- // Freelook in Camera view
- check = gtk_check_button_new_with_label ("Freelook in Camera view");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (GTK_BIN (check)->child), GTK_JUSTIFY_LEFT);
- AddDialogData (check, &m_bCamFreeLook, DLG_CHECK_BOOL);
-
- // Freelook in Camera view w/ forward & back strafing instead of up and down looking
- check = gtk_check_button_new_with_label ("Freelook strafes Forward and Back");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (GTK_BIN (check)->child), GTK_JUSTIFY_LEFT);
- AddDialogData (check, &m_bCamFreeLookStrafe, DLG_CHECK_BOOL);
-
- // Invert mouse in freelook
- check = gtk_check_button_new_with_label ("Invert mouse in freelook");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (GTK_BIN (check)->child), GTK_JUSTIFY_LEFT);
- AddDialogData (check, &m_bCamInverseMouse, DLG_CHECK_BOOL);
-
- // Discrete movement
- check = gtk_check_button_new_with_label ("Discrete movement");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (GTK_BIN (check)->child), GTK_JUSTIFY_LEFT);
- AddDialogData (check, &m_bCamDiscrete, DLG_CHECK_BOOL);
-
- // Update XY views on camera move
- check = gtk_check_button_new_with_label ("Update XY views on camera move");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (GTK_BIN (check)->child), GTK_JUSTIFY_LEFT);
- AddDialogData (check, &m_bCamXYUpdate, DLG_CHECK_BOOL);
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Texture group *********/
- preflabel = gtk_label_new("Textures");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Textures");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 6);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // Texture quality slider
- // label
- label = gtk_label_new ("Texture quality");
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-
- // adjustment
- adj = gtk_adjustment_new (0, 0, 4, 1, 1, 1);
- AddDialogData (adj, &m_nLatchedTextureQuality, DLG_ADJ_INT);
-
- // scale
- scale = gtk_hscale_new (GTK_ADJUSTMENT (adj));
- gtk_widget_show (scale);
- gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
- gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
-
- // text under the texture slider
- hbox2 = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox2);
- gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
- label = gtk_label_new ("low");
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
- label = gtk_label_new ("high");
- gtk_widget_show (label);
- gtk_box_pack_end (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-
- // texture subsets
- check = gtk_check_button_new_with_label ("Texture subsets");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bTextureWindow, DLG_CHECK_BOOL);
-
- // texture scrollbar
- check = gtk_check_button_new_with_label ("Texture scrollbar");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bTextureScrollbar, DLG_CHECK_BOOL);
-
- // texture increment matches grid
- check = gtk_check_button_new_with_label ("Tex increment matches grid");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bSnapTToGrid, DLG_CHECK_BOOL);
-
- // RIANT
- // Texture compression choice label
- // container
- table = gtk_table_new(2, 1, FALSE);
- gtk_widget_show(table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- label = gtk_label_new ("Texture Compression (if available):");
- gtk_widget_show (label);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- // Texture compression choice label
- combo_list = NULL;
- // NONE will always be in pos 0
- combo_list = g_list_append (combo_list, (void *)"None");
-
- // if OpenGL compression is enabled it will always be
- // in pos 1
- if (g_qeglobals.m_bOpenGLCompressionSupported)
- {
- combo_list = g_list_append (combo_list, (void *)"OpenGL ARB");
- }
-
- // If S3 is enabled offer all 3 valid compression schemes in RGBA
- if (g_qeglobals.m_bS3CompressionSupported)
- {
- combo_list = g_list_append (combo_list, (void *)"S3TC DXT1");
- combo_list = g_list_append (combo_list, (void *)"S3TC DXT3");
- combo_list = g_list_append (combo_list, (void *)"S3TC DXT5");
- }
-
- combo = gtk_combo_new ();
- gtk_combo_set_popdown_strings (GTK_COMBO (combo), combo_list);
- gtk_widget_show (combo);
- gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
- AddDialogData (combo, &m_nTextureCompressionFormat, DLG_COMBO_INT);
- g_list_free (combo_list);
-
- // container
- table = gtk_table_new(2, 1, FALSE);
- gtk_widget_show(table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- // Startup shaders
- // label
- label = gtk_label_new ("Startup Shaders:");
- gtk_widget_show (label);
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- // combo list
- combo_list = NULL;
- combo_list = g_list_append (combo_list, (void *)"None");
- if (g_pGameDescription->mGameFile == "jk2.game" || g_pGameDescription->mGameFile == "ja.game")
- combo_list = g_list_append (combo_list, (void *)"System");
- else if (g_pGameDescription->mGameFile == "sof2.game")
- combo_list = g_list_append (combo_list, (void *)"Tools");
- else
- combo_list = g_list_append (combo_list, (void *)"Common");
- combo_list = g_list_append (combo_list, (void *)"All");
- combo = gtk_combo_new ();
- gtk_combo_set_popdown_strings (GTK_COMBO (combo), combo_list);
- gtk_widget_show (combo);
- gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
- AddDialogData (combo, &m_nLatchedShader, DLG_COMBO_INT);
- g_list_free (combo_list);
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Layout group *********/
- preflabel = gtk_label_new("Layout");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Layout");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // View types
- // table
- table = gtk_table_new (2, 4, FALSE);
- gtk_widget_show (table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- // view type 1
- pixmap = new_pixmap (g_pParentWnd->m_pWidget, "window1.bmp");
- gtk_widget_show (pixmap);
- gtk_table_attach (GTK_TABLE (table), pixmap, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 2
- pixmap = new_pixmap (g_pParentWnd->m_pWidget, "window2.bmp");
- gtk_widget_show (pixmap);
- gtk_table_attach (GTK_TABLE (table), pixmap, 1, 2, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 3
- pixmap = new_pixmap (g_pParentWnd->m_pWidget, "window3.bmp");
- gtk_widget_show (pixmap);
- gtk_table_attach (GTK_TABLE (table), pixmap, 2, 3, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 4
- pixmap = new_pixmap (g_pParentWnd->m_pWidget, "window4.bmp");
- gtk_widget_show (pixmap);
- gtk_table_attach (GTK_TABLE (table), pixmap, 3, 4, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 1 selector
- radio = gtk_radio_button_new (NULL);
- gtk_widget_show (radio);
- gtk_table_attach (GTK_TABLE (table), radio, 0, 1, 1, 2,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 2 selector
- radio = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio));
- gtk_widget_show (radio);
- gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 1, 2,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 3 selector
- radio = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio));
- gtk_widget_show (radio);
- gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 1, 2,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // view type 4 selector
- radio = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio));
- gtk_widget_show (radio);
- gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 1, 2,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
- AddDialogData (radio, &m_nLatchedView, DLG_RADIO_INT);
-
- // Floating Z window
- check = gtk_check_button_new_with_label ("Floating Z Window");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLatchedFloatingZ, DLG_CHECK_BOOL);
-
- // show menu tear-off seperators
- check = gtk_check_button_new_with_label ("Detachable Menus");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLatchedDetachableMenus, DLG_CHECK_BOOL);
-
- if (!g_pGameDescription->mNoPatch)
- {
- // show patch toolbar
- check = gtk_check_button_new_with_label ("Patch Toolbar");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- g_object_set_data (G_OBJECT (dialog), "check_patchtoolbar", check); // Allow to be disabled for Q1/Q2
- AddDialogData (check, &m_bLatchedPatchToolbar, DLG_CHECK_BOOL);
- }
-
- // use wide toolbar
- check = gtk_check_button_new_with_label ("Wide Toolbar");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLatchedWideToolbar, DLG_CHECK_BOOL);
-
- // use plugin toolbar
- check = gtk_check_button_new_with_label ("Plugin Toolbar");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLatchedPluginToolbar, DLG_CHECK_BOOL);
-
-#ifdef _WIN32
- // win32 file dialog
- check = gtk_check_button_new_with_label ("Use win32 file load dialog");
- gtk_widget_show (check);
- // gtk_container_add (GTK_CONTAINER (vbox), check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bNativeGUI, DLG_CHECK_BOOL);
-
- // position on primary monitor
- check = gtk_check_button_new_with_label ("Start on Primary Monitor");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- g_object_set_data (G_OBJECT (dialog), "check_startonprimary", check);
- gtk_signal_connect( GTK_OBJECT (check), "clicked", GTK_SIGNAL_FUNC(UpdateSensitivity), this );
- AddDialogData (check, &m_bStartOnPrimMon, DLG_CHECK_BOOL);
-#endif
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Mouse group *********/
- preflabel = gtk_label_new("Mouse");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Mouse");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // Buttons
- // container
- hbox2 = gtk_hbox_new (FALSE, 5);
- gtk_widget_show (hbox2);
- gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0);
-
- // 2 button radio
- radio = gtk_radio_button_new_with_label (NULL, "2 button");
- gtk_widget_show (radio);
- gtk_box_pack_start (GTK_BOX (hbox2), radio, FALSE, FALSE, 0);
-
- // 3 button radio
- radio = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio), "3 button");
- gtk_widget_show (radio);
- gtk_box_pack_start (GTK_BOX (hbox2), radio, FALSE, FALSE, 0);
- AddDialogData (radio, &m_nMouse, DLG_RADIO_INT);
-
- // right click to drop entity
- check = gtk_check_button_new_with_label ("Right click to drop entities");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bRightClick, DLG_CHECK_BOOL);
-
- // Mouse chaser (and this does what?)
- check = gtk_check_button_new_with_label ("Mouse chaser");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bChaseMouse, DLG_CHECK_BOOL);
-
- // Alt + multi-drag
- check = gtk_check_button_new_with_label ("ALT + multi-drag");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bALTEdge, DLG_CHECK_BOOL);
-
- // Mouse wheel increments
- // container
- hbox2 = gtk_hbox_new (FALSE, 5);
- gtk_widget_show (hbox2);
- gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0);
-
- // label
- label = gtk_label_new ("Wheel Mouse inc:");
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-
- // entry
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- gtk_widget_set_usize (entry, 40, -2);
- gtk_box_pack_start (GTK_BOX (hbox2), entry, FALSE, FALSE, 0);
- AddDialogData (entry, &m_nWheelInc, DLG_ENTRY_INT);
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Editing group *********/
- preflabel = gtk_label_new("Editing");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Editing");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // Vertex editing splits faces
- check = gtk_check_button_new_with_label ("Vertex editing splits face");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bVertexSplit, DLG_CHECK_BOOL);
-
- // Fix target/targetname collisions
- check = gtk_check_button_new_with_label ("Fix target/targetname collisions");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bDoTargetFix, DLG_CHECK_BOOL);
-
- // Clipper tool uses caulk
- check = gtk_check_button_new_with_label ("Clipper tool uses caulk");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bClipCaulk, DLG_CHECK_BOOL);
-
- // Don't clamp plane points
- check = gtk_check_button_new_with_label ("Don't clamp plane points");
- gtk_widget_show (check);
- gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bNoClamp, DLG_CHECK_BOOL);
-
- // Select patch by bounding box
- check = gtk_check_button_new_with_label ("Select patches by bounding box");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bPatchBBoxSelect, DLG_CHECK_BOOL);
-
- // Rotation increment
- // container
- table = gtk_table_new (2, 3, FALSE);
- gtk_widget_show (table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- // label
- label = gtk_label_new ("Rotation increment:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // entry
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- gtk_widget_set_usize (entry, 60, -2);
- gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- AddDialogData (entry, &m_nRotation, DLG_ENTRY_INT);
-
- // Undo levels
- // label
- label = gtk_label_new ("Undo Levels:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // spinner (allows undo levels to be set to zero)
- spin = gtk_spin_button_new (GTK_ADJUSTMENT (gtk_adjustment_new (1, 0, 64, 1, 10, 10)), 1, 0);
- gtk_widget_show (spin);
- gtk_table_attach (GTK_TABLE (table), spin, 1, 2, 1, 2,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_widget_set_usize (spin, 60, -2);
- AddDialogData (spin, &m_nUndoLevels, DLG_SPIN_INT);
-
- // Patch subdivisions
- // label
- label = gtk_label_new ("Patch subdivisions:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-
- // entry (spinner perhaps? [2-16])
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- gtk_widget_set_usize (entry, 60, -2);
- gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- AddDialogData (entry, &m_nSubdivisions, DLG_ENTRY_INT);
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Save/Load group *********/
- preflabel = gtk_label_new("Startup/Auto save");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Startup/Auto save");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // Snapshots
- check = gtk_check_button_new_with_label ("Snapshots");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bSnapShots, DLG_CHECK_BOOL);
-
- // load last project on open
- check = gtk_check_button_new_with_label ("Load last project on open");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLoadLast, DLG_CHECK_BOOL);
-
- // load last map on open
- check = gtk_check_button_new_with_label ("Load last map on open");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bLoadLastMap, DLG_CHECK_BOOL);
-
- // Auto save..
- // container
- hbox2 = gtk_hbox_new (FALSE, 5);
- gtk_widget_show (hbox2);
- gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (hbox2), 0);
-
- // label
- check = gtk_check_button_new_with_label ("Auto save every");
- gtk_widget_show (check);
- gtk_box_pack_start (GTK_BOX (hbox2), check, FALSE, FALSE, 0);
- AddDialogData (check, &m_bAutoSave, DLG_CHECK_BOOL);
-
- // spinner
- spin = gtk_spin_button_new (GTK_ADJUSTMENT (gtk_adjustment_new (1, 1, 60, 1, 10, 10)), 1, 0);
- gtk_widget_show (spin);
- gtk_box_pack_start (GTK_BOX (hbox2), spin, FALSE, FALSE, 0);
- gtk_widget_set_usize (spin, 60, -2);
- AddDialogData (spin, &m_nAutoSave, DLG_SPIN_INT);
-
- // label
- label = gtk_label_new ("minutes");
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-
- // Add the page to the notebook
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), pageframe, preflabel);
-
- /******** Paths group *********/
- preflabel = gtk_label_new("Paths");
- gtk_widget_show(preflabel);
- pageframe = gtk_frame_new("Paths");
- gtk_container_set_border_width(GTK_CONTAINER(pageframe), 5);
- gtk_widget_show(pageframe);
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_widget_show(vbox);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
- gtk_container_add(GTK_CONTAINER(pageframe), vbox);
-
- // prefab path
- // table
- table = gtk_table_new (3, 3, FALSE);
- gtk_widget_show (table);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
- // label
- label = gtk_label_new ("Prefab path:");
- gtk_widget_show (label);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
-
- // path entry
- entry = gtk_entry_new ();
- gtk_widget_show (entry);
- gtk_widget_set_usize(GTK_WIDGET(entry), 240, -2);
- gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 1, 0);
- AddDialogData (entry, &m_strPrefabPath, DLG_ENTRY_TEXT);
-
- // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=805
-#if 0
- // browse button
- button = gtk_button_new_with_label ("...");
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnBtnBrowseprefab), this);
- gtk_table_attach (GTK_TABLE (table), button, 2, 3, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
-#endif