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. */
8 /* Pick an arbitrary number of chars such as 80 col X 40 rows text = 3200
10 #define nCharsBeforeDeletingStuff 3200
12 /* Message Window widgets */
15 GtkWidget
*MW_scrollbar
;
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 */
24 len
= gtk_text_get_length(GTK_TEXT(MW_text
));
26 if (len
< nCharsBeforeDeletingStuff
)
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
));
39 ghack_message_window_destroy(GtkWidget
*win
, gpointer data
)
44 ghack_message_window_display(GtkWidget
*widget
, boolean block
, gpointer data
)
49 ghack_message_window_put_string(GtkWidget
*widget
, int attr
, const char *text
,
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);
61 ghack_message_window_use_RIP(int how
)
66 ghack_message_window_scroll(int dx
, int dy
)
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
),
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
);