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;
66 Position gameHistoryX, gameHistoryY;
67 Dimension gameHistoryW, gameHistoryH;
70 HistoryPopDown(object, user_data)
74 /* hides the history window */
76 gtk_widget_hide (GUI_History);
80 void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)
84 XawListReturnStruct *R = (XawListReturnStruct *) call_data;
85 if (w == hist->mvn || w == hist->mvw) {
89 else if (w == hist->mvb) {
97 void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current)
100 char movewhite[2*MOVE_LEN],moveblack[2*MOVE_LEN],move[2*MOVE_LEN];
103 /* TODO need to add highlights for current move */
104 /* TODO need to add navigation by keyboard or mouse (double click on move) */
107 /* first clear everything, do we need this? */
108 gtk_list_store_clear(LIST_MoveHistory);
110 /* copy move list into history window */
112 /* go through all moves */
115 /* test if there is a move */
118 /* only copy everything before a ' ' */
119 char* p = strchr(movelist[i], ' ');
122 strncpy(move, movelist[i], p-movelist[i]);
123 move[p-movelist[i]] = NULLCHAR;
127 strcpy(move,movelist[i]);
136 strcpy(movewhite,move);
141 strcpy(moveblack,move);
144 gtk_list_store_append (LIST_MoveHistory, &iter);
145 gtk_list_store_set (LIST_MoveHistory, &iter,
151 strcpy(movewhite,"");
152 strcpy(moveblack,"");
156 /* check if there is a white move left */
159 strcpy(moveblack,"");
162 gtk_list_store_append (LIST_MoveHistory, &iter);
163 gtk_list_store_set (LIST_MoveHistory, &iter,
172 // EvalGraphSet( first, last, current, pvInfoList ); // piggy-backed
180 "<Key>Up: BackwardProc() \n \
181 <Key>Left: BackwardProc() \n \
182 <Key>Down: ForwardProc() \n \
183 <Key>Right: ForwardProc() \n";
186 // if(wpMoveHistory.width > 0) {
187 // gameHistoryW = wpMoveHistory.width;
188 // gameHistoryH = wpMoveHistory.height;
189 // gameHistoryX = wpMoveHistory.x;
190 // gameHistoryY = wpMoveHistory.y;
193 // // [HGM] restore old position
194 // if(gameHistoryW > 0) {
196 // XtSetArg(args[j], XtNx, gameHistoryX); j++;
197 // XtSetArg(args[j], XtNy, gameHistoryY); j++;
198 // XtSetArg(args[j], XtNwidth, gameHistoryW); j++;
199 // XtSetArg(args[j], XtNheight, gameHistoryH); j++;
200 // XtSetValues(hist->sh, args, j);
207 /* show history window */
209 gtk_widget_show (GUI_History);
215 HistoryShowProc(object, user_data)
221 //TODO: ToNrEvent(currentMove);
229 /* return status of history window */
231 return gtk_widget_get_visible (GUI_History);