From: jwalz Date: Sat, 5 Jan 2002 21:06:01 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: MOVE2GIT~3602 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8d4123f32b4afcfd966309f88b66299d021fc8cd;p=nethack *** empty log message *** --- diff --git a/win/gnome/gntext.c b/win/gnome/gntext.c new file mode 100644 index 000000000..ece5f7798 --- /dev/null +++ b/win/gnome/gntext.c @@ -0,0 +1,155 @@ +/* SCCS Id: @(#)gntext.c 3.3 2000/07/16 */ +/* Copyright (C) 1998 by Erik Andersen */ +/* NetHack may be freely redistributed. See license for details. */ + +#include "gntext.h" +#include "gnmain.h" +#include + +/* include the standard RIP window (win/X11/rip.xpm) */ +#include "gn_rip.h" + +/* dimensions of the pixmap */ +#define RIP_IMAGE_WIDTH 400 +#define RIP_IMAGE_HEIGHT 200 + +/* dimensions and location of area where we can draw text on the pixmap */ +#define RIP_DRAW_WIDTH 84 +#define RIP_DRAW_HEIGHT 89 +#define RIP_DRAW_X 114 +#define RIP_DRAW_Y 69 + + + +/* Text Window widgets */ +GtkWidget *RIP = NULL; +GtkWidget *RIPlabel = NULL; +GtkWidget *TW_window = NULL; +GnomeLess *gless; + +static int showRIP = 0; + + + + +void ghack_text_window_clear(GtkWidget *widget, gpointer data) +{ + g_assert (gless != NULL); + gtk_editable_delete_text (GTK_EDITABLE (gless->text), 0, 0); +} + +void ghack_text_window_destroy() +{ +} + +void ghack_text_window_display(GtkWidget *widget, boolean block, + gpointer data) +{ + if(showRIP == 1) { + gtk_widget_show (GTK_WIDGET ( RIP)); + gtk_window_set_title(GTK_WINDOW( TW_window), "Rest In Peace"); + } + + if (block) + gnome_dialog_run(GNOME_DIALOG(TW_window)); + else + gnome_dialog_run_and_close(GNOME_DIALOG(TW_window)); + + if(showRIP == 1) { + showRIP = 0; + gtk_widget_hide (GTK_WIDGET ( RIP)); + gtk_window_set_title(GTK_WINDOW(TW_window), "Text Window"); + } +} + +void ghack_text_window_put_string(GtkWidget *widget, int attr, + const char* text, gpointer data) +{ + if(text == NULL) + return; + + /* Don't bother with attributes yet */ + gtk_text_insert (GTK_TEXT (gless->text), NULL, NULL, NULL, text, -1); + gtk_text_insert (GTK_TEXT (gless->text), NULL, NULL, NULL, "\n", -1); +} + + +GtkWidget* ghack_init_text_window ( ) +{ + GtkWidget *pixmap; + if(TW_window) + return(GTK_WIDGET(TW_window)); + + TW_window = gnome_dialog_new("Text Window", GNOME_STOCK_BUTTON_OK, NULL); + gtk_window_set_default_size( GTK_WINDOW(TW_window), 500, 400); + gtk_window_set_policy(GTK_WINDOW(TW_window), TRUE, TRUE, FALSE); + gtk_window_set_title(GTK_WINDOW(TW_window), "Text Window"); + + /* create GNOME pixmap object */ + pixmap = gnome_pixmap_new_from_xpm_d (rip_xpm); + g_assert (pixmap != NULL); + gtk_widget_show (GTK_WIDGET (pixmap)); + + /* create label with our "death message", sized to fit into the + * tombstone */ + RIPlabel = gtk_label_new ("RIP"); + g_assert (RIPlabel != NULL); + /* gtk_label_set_justify is broken? */ + gtk_label_set_justify (GTK_LABEL (RIPlabel), GTK_JUSTIFY_CENTER); + gtk_label_set_line_wrap (GTK_LABEL (RIPlabel), TRUE); + gtk_widget_set_usize (RIPlabel, RIP_DRAW_WIDTH, RIP_DRAW_HEIGHT); + gtk_widget_show (RIPlabel); + + /* create a fixed sized widget for the RIP pixmap */ + RIP = gtk_fixed_new (); + g_assert (RIP != NULL); + gtk_widget_set_usize (RIP, RIP_IMAGE_WIDTH, RIP_IMAGE_HEIGHT); + gtk_fixed_put (GTK_FIXED (RIP), pixmap, 0, 0); + gtk_fixed_put (GTK_FIXED (RIP), RIPlabel, RIP_DRAW_X, RIP_DRAW_Y); + gtk_widget_show (RIP); + gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(TW_window)->vbox), RIP, + TRUE, TRUE, 0); + + /* create a gnome Less widget for the text stuff */ + gless = GNOME_LESS (gnome_less_new ()); + g_assert (gless != NULL); + gtk_widget_show (GTK_WIDGET (gless)); + gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(TW_window)->vbox), + GTK_WIDGET (gless), TRUE, TRUE, 0); + + /* Hook up some signals */ + gtk_signal_connect(GTK_OBJECT(TW_window), "ghack_putstr", + GTK_SIGNAL_FUNC(ghack_text_window_put_string), + NULL); + + gtk_signal_connect(GTK_OBJECT(TW_window), "ghack_clear", + GTK_SIGNAL_FUNC(ghack_text_window_clear), + NULL); + + gtk_signal_connect(GTK_OBJECT(TW_window), "ghack_display", + GTK_SIGNAL_FUNC(ghack_text_window_display), + NULL); + + /* Center the dialog over over parent */ + gnome_dialog_set_parent( GNOME_DIALOG (TW_window), + GTK_WINDOW(ghack_get_main_window()) ); + + gtk_window_set_modal( GTK_WINDOW(TW_window), TRUE); + gtk_widget_show_all(TW_window); + gtk_widget_hide (GTK_WIDGET ( RIP)); + gnome_dialog_close_hides (GNOME_DIALOG (TW_window), TRUE); + + return GTK_WIDGET(TW_window); + +} + + +void ghack_text_window_rip_string( const char* string) +{ + /* This is called to specify that the next message window will + * be a RIP window, which will include this text */ + + showRIP = 1; + gtk_label_set( GTK_LABEL( RIPlabel), string); +} +