2 * xhistory.c -- Move list window, part of X front end for XBoard
4 * Copyright 2000,2009 Free Software Foundation, Inc.
5 * ------------------------------------------------------------------------
7 * GNU XBoard is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or (at
10 * your option) any later version.
12 * GNU XBoard is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see http://www.gnu.org/licenses/. *
20 *------------------------------------------------------------------------
21 ** See the file ChangeLog for a revision history. */
29 #include <sys/types.h>
34 #else /* not STDC_HEADERS */
35 extern char *getenv();
38 # else /* not HAVE_STRING_H */
40 # endif /* not HAVE_STRING_H */
41 #endif /* not STDC_HEADERS */
55 # define _(s) gettext (s)
56 # define N_(s) gettext_noop (s)
62 extern GtkWidget *GUI_History;
63 extern GtkListStore *LIST_MoveHistory;
68 HistoryPopDown(object, user_data)
72 gtk_widget_hide (GUI_History);
76 void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)
80 XawListReturnStruct *R = (XawListReturnStruct *) call_data;
81 if (w == hist->mvn || w == hist->mvw) {
85 else if (w == hist->mvb) {
93 void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current)
96 char movewhite[2*MOVE_LEN],moveblack[2*MOVE_LEN],move[2*MOVE_LEN];
99 /* TODO need to add highlights for current move */
100 /* TODO need to add navigation by keyboard or mouse (double click on move) */
102 /* first clear everything, do we need this? */
103 gtk_list_store_clear(LIST_MoveHistory);
105 /* copy move list into history window */
107 /* go through all moves */
110 /* test if there is a move */
113 /* only copy everything before a ' ' */
114 char* p = strchr(movelist[i], ' ');
117 strncpy(move, movelist[i], p-movelist[i]);
118 move[p-movelist[i]] = NULLCHAR;
122 strcpy(move,movelist[i]);
131 strcpy(movewhite,move);
136 strcpy(moveblack,move);
139 gtk_list_store_append (LIST_MoveHistory, &iter);
140 gtk_list_store_set (LIST_MoveHistory, &iter,
146 strcpy(movewhite,"");
147 strcpy(moveblack,"");
150 /* check if ther is a white move left */
154 strcpy(moveblack,"");
156 gtk_list_store_append (LIST_MoveHistory, &iter);
157 gtk_list_store_set (LIST_MoveHistory, &iter,
170 "<Key>Up: BackwardProc() \n \
171 <Key>Left: BackwardProc() \n \
172 <Key>Down: ForwardProc() \n \
173 <Key>Right: ForwardProc() \n";
181 // if(!hist) HistoryCreate();
183 gtk_widget_show (GUI_History);
190 HistoryShowProc(object, user_data)
196 //TODO: ToNrEvent(currentMove);