NHDT->ANH, nethack->anethack, nhdat->anhdat
[aNetHack.git] / win / gnome / gnmesg.c
blob933f4c6561c0a46f63a74d8f3aa00a27b62aef0a
1 /* aNetHack 0.0.1 gnmesg.c $ANH-Date: 1432512805 2015/05/25 00:13:25 $ $ANH-Branch: master $:$ANH-Revision: 1.8 $ */
2 /* Copyright (C) 1998 by Erik Andersen <andersee@debian.org> */
3 /* aNetHack may be freely redistributed. See license for details. */
5 #include "gnmesg.h"
6 #include "gnsignal.h"
8 /* Pick an arbitrary number of chars such as 80 col X 40 rows text = 3200
9 * chars */
10 #define nCharsBeforeDeletingStuff 3200
12 /* Message Window widgets */
13 GtkWidget *MW_table;
14 GtkWidget *MW_text;
15 GtkWidget *MW_scrollbar;
17 void
18 ghack_message_window_clear(GtkWidget *widget, gpointer data)
20 /* Seems anethack calls this after every move -- we don't want
21 * to really clear the window at all though. Ignore the request */
22 gint len;
24 len = gtk_text_get_length(GTK_TEXT(MW_text));
26 if (len < nCharsBeforeDeletingStuff)
27 return;
29 gtk_text_freeze(GTK_TEXT(MW_text));
30 gtk_text_set_point(GTK_TEXT(MW_text), 0);
31 gtk_text_forward_delete(GTK_TEXT(MW_text),
32 len - ((guint)(nCharsBeforeDeletingStuff * 0.5)));
33 gtk_text_set_point(GTK_TEXT(MW_text),
34 (guint)(nCharsBeforeDeletingStuff * 0.5));
35 gtk_text_thaw(GTK_TEXT(MW_text));
38 void
39 ghack_message_window_destroy(GtkWidget *win, gpointer data)
43 void
44 ghack_message_window_display(GtkWidget *widget, boolean block, gpointer data)
48 void
49 ghack_message_window_put_string(GtkWidget *widget, int attr, const char *text,
50 gpointer data)
52 if (text == NULL)
53 return;
55 /* Don't bother with attributes yet */
56 gtk_text_insert(GTK_TEXT(MW_text), NULL, NULL, NULL, text, -1);
57 gtk_text_insert(GTK_TEXT(MW_text), NULL, NULL, NULL, "\n", -1);
60 void
61 ghack_message_window_use_RIP(int how)
65 void
66 ghack_message_window_scroll(int dx, int dy)
70 GtkWidget *
71 ghack_init_message_window(void)
73 MW_table = gtk_table_new(2, 1, FALSE);
74 gtk_table_set_row_spacing(GTK_TABLE(MW_table), 0, 2);
76 MW_text = gtk_text_new(NULL, NULL);
77 gtk_text_set_editable(GTK_TEXT(MW_text), FALSE);
78 gtk_text_set_word_wrap(GTK_TEXT(MW_text), TRUE);
79 gtk_table_attach(GTK_TABLE(MW_table), MW_text, 0, 1, 0, 1,
80 (GTK_EXPAND | GTK_FILL), (GTK_EXPAND | GTK_FILL), 0, 0);
82 MW_scrollbar = gtk_vscrollbar_new(GTK_TEXT(MW_text)->vadj);
83 gtk_table_attach(GTK_TABLE(MW_table), MW_scrollbar, 1, 2, 0, 1, GTK_FILL,
84 (GTK_EXPAND | GTK_FILL), 0, 0);
86 gtk_signal_connect(GTK_OBJECT(MW_table), "ghack_putstr",
87 GTK_SIGNAL_FUNC(ghack_message_window_put_string),
88 NULL);
90 gtk_signal_connect(GTK_OBJECT(MW_table), "ghack_clear",
91 GTK_SIGNAL_FUNC(ghack_message_window_clear), NULL);
93 gtk_signal_connect(GTK_OBJECT(MW_table), "gnome_delay_output",
94 GTK_SIGNAL_FUNC(ghack_delay), NULL);
96 gtk_widget_show_all(MW_table);
98 return GTK_WIDGET(MW_table);