From: jwalz Date: Sat, 5 Jan 2002 21:06:01 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: MOVE2GIT~3610 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=424d8922485cc230bd735507c0c901a6cbf5ca07;p=nethack *** empty log message *** --- diff --git a/win/gnome/gnopts.c b/win/gnome/gnopts.c new file mode 100644 index 000000000..1fb0e0dd9 --- /dev/null +++ b/win/gnome/gnopts.c @@ -0,0 +1,117 @@ +/* SCCS Id: @(#)gnopts.c 3.3 2000/07/16 */ +/* Copyright (C) 1998 by Erik Andersen */ +/* NetHack may be freely redistributed. See license for details. */ + +#include "gnopts.h" +#include "gnglyph.h" +#include "gnmain.h" +#include "gnmap.h" +#include +#include +#include "hack.h" + +static gint tileset; +static GtkWidget* clist; +const char* tilesets[] = { "Traditional (16x16)", "Big (32x32)", 0 }; + +static void +player_sel_key_hit (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + int i; + for (i = 0; tilesets[i] != 0; ++i) { + if (tilesets[i][0] == toupper(event->keyval)) { + tileset = i; + gtk_clist_select_row( GTK_CLIST (clist), i, 0); + } + } +} + +static void +player_sel_row_selected (GtkCList *cList, int row, int col, GdkEvent *event) +{ + tileset = row; +} + +void +ghack_settings_dialog() +{ + int i; + static GtkWidget* dialog; + static GtkWidget* swin; + static GtkWidget* frame1; + + dialog = gnome_dialog_new (_("GnomeHack Settings"), + GNOME_STOCK_BUTTON_OK, + GNOME_STOCK_BUTTON_CANCEL, + NULL); + gnome_dialog_close_hides (GNOME_DIALOG (dialog), FALSE); + gtk_signal_connect (GTK_OBJECT (dialog), "key_press_event", + GTK_SIGNAL_FUNC (player_sel_key_hit), tilesets ); + + frame1 = gtk_frame_new (_("Choose one of the following tilesets:")); + gtk_object_set_data (GTK_OBJECT (dialog), "frame1", frame1); + gtk_widget_show (frame1); + gtk_container_border_width (GTK_CONTAINER (frame1), 3); + + swin = gtk_scrolled_window_new (NULL, NULL); + clist = gtk_clist_new (2); + gtk_clist_column_titles_hide (GTK_CLIST (clist)); + gtk_widget_set_usize (GTK_WIDGET (clist), 100, 180); + gtk_container_add (GTK_CONTAINER (swin), clist); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + gtk_signal_connect (GTK_OBJECT (clist), "select_row", + GTK_SIGNAL_FUNC (player_sel_row_selected), NULL ); + + gtk_container_add (GTK_CONTAINER (frame1), swin); + gtk_box_pack_start_defaults (GTK_BOX (GNOME_DIALOG (dialog)->vbox), frame1); + + /* Add the tilesets into the list here... */ + for (i=0; tilesets[i]; i++) { + gchar accelBuf[BUFSZ]; + const char *text[3]={accelBuf, tilesets[i],NULL}; + sprintf( accelBuf, "%c ", tolower(tilesets[i][0])); + gtk_clist_insert (GTK_CLIST (clist), i, (char**)text); + } + + + gtk_clist_columns_autosize (GTK_CLIST (clist)); + gtk_widget_show_all (swin); + + /* Center the dialog over over parent */ + gnome_dialog_set_default( GNOME_DIALOG(dialog), 0); + gtk_window_set_modal( GTK_WINDOW(dialog), TRUE); + gnome_dialog_set_parent (GNOME_DIALOG (dialog), + GTK_WINDOW (ghack_get_main_window ()) ); + + /* Run the dialog -- returning whichever button was pressed */ + i = gnome_dialog_run (GNOME_DIALOG (dialog)); + gnome_dialog_close (GNOME_DIALOG (dialog)); + + /* They hit Quit or error */ + if (i != 0 ) { + return; + } + switch (tileset) { + case 0: + /* They selected traditional */ + ghack_free_glyphs(); + if (ghack_init_glyphs(HACKDIR "/x11tiles")) + g_error ("ERROR: Could not initialize glyphs.\n"); + ghack_reinit_map_window(); + break; + case 1: + ghack_free_glyphs(); + if (ghack_init_glyphs(HACKDIR "/t32-1024.xpm")) + g_error ("ERROR: Could not initialize glyphs.\n"); + ghack_reinit_map_window(); + + /* They selected big */ + break; + default: + /* This shouldn't happen */ + g_warning("This shouldn't happen\n"); + } +} +