aboutsummaryrefslogtreecommitdiff
path: root/gnu/chess/Xchess/message.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/chess/Xchess/message.c')
-rw-r--r--gnu/chess/Xchess/message.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/gnu/chess/Xchess/message.c b/gnu/chess/Xchess/message.c
new file mode 100644
index 000000000000..f1d500989d44
--- /dev/null
+++ b/gnu/chess/Xchess/message.c
@@ -0,0 +1,101 @@
+
+/* This file contains code for X-CHESS.
+ Copyright (C) 1986 Free Software Foundation, Inc.
+
+This file is part of X-CHESS.
+
+X-CHESS is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the X-CHESS General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+X-CHESS, but only under the conditions described in the
+X-CHESS General Public License. A copy of this license is
+supposed to have been given to you along with X-CHESS so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:14 $
+ * $Source: /a/cvs/386BSD/src/gnu/chess/Xchess/message.c,v $
+ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
+ * Permission is granted to do anything with this code except sell it
+ * or remove this message.
+ *
+ * Do stuff with the message window. Font 0 is the normal font, font 1
+ * is large, and font 2 is normal red.
+ */
+
+#include "xchess.h"
+
+#define MESSAGE_HEADER "\n1 XChess Messages0\n"
+
+void
+message_init(win)
+ windata *win;
+{
+ TxtGrab(win->display, win->messagewin, "xchess", win->medium,
+ win->textback.pixel, win->textcolor.pixel,
+ win->cursorcolor.pixel);
+ TxtAddFont(win->display, win->messagewin, 1, win->large, win->textcolor.pixel);
+ TxtAddFont(win->display, win->messagewin, 2, win->medium, win->errortext.pixel);
+ TxtAddFont(win->display, win->messagewin, 3, win->medium, win->playertext.pixel);
+
+ TxtWriteStr(win->display, win->messagewin, MESSAGE_HEADER);
+ return;
+}
+
+void
+message_add(win, string, err)
+ windata *win;
+ char *string;
+ bool err;
+{
+ if (err) {
+ TxtWriteStr(win->display, win->messagewin, "2");
+ TxtWriteStr(win->display, win->messagewin, string);
+ TxtWriteStr(win->display, win->messagewin, "0");
+ XBell(win->display, 50);
+ } else
+ TxtWriteStr(win->display, win->messagewin, string);
+
+ XSync(win->display, 0);
+ return;
+}
+
+void
+message_send(win, event)
+ windata *win;
+ XEvent *event;
+{
+ XKeyEvent *ev = &event->xkey;
+ KeySym keysym;
+ windata *ow = (win == win1) ? win2 : win1;
+ char buf[BSIZE], *s;
+ int i;
+
+ i = XLookupString(ev, buf, sizeof(buf) - 1, &keysym, &s);
+ buf[i] = '\0';
+ for (s = buf; *s; s++)
+ if (*s == '\r')
+ *s = '\n';
+ else if (*s == '\177')
+ *s = '';
+
+ TxtWriteStr(win->display, win->messagewin, "3");
+ TxtWriteStr(win->display, win->messagewin, buf);
+ TxtWriteStr(win->display, win->messagewin, "0");
+ XSync(win->display, 0);
+ if (ow) {
+ TxtWriteStr(ow->display, ow->messagewin, "3");
+ TxtWriteStr(ow->display, ow->messagewin, buf);
+ TxtWriteStr(ow->display, ow->messagewin, "0");
+ XSync(ow->display, 0);
+ }
+ return;
+}
+