extern GtkWidget *GUI_History;
extern GtkListStore *LIST_MoveHistory;
+extern GtkTreeView *TREE_History;
String dots=" ... ";
Position gameHistoryX, gameHistoryY;
return;
}
-void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)
+void
+HistoryMoveProc(window, event, data)
+ GtkWindow *window;
+ GdkEvent *event;
+ gpointer data;
{
- int to;
- /*
- XawListReturnStruct *R = (XawListReturnStruct *) call_data;
- if (w == hist->mvn || w == hist->mvw) {
- to=2*R->list_index-1;
- ToNrEvent(to);
- }
- else if (w == hist->mvb) {
- to=2*R->list_index;
- ToNrEvent(to);
+ int to; /* the move we want to go to */
+
+ /* check if the mouse was clicked */
+ if(event->type == GDK_BUTTON_PRESS)
+ {
+ GtkTreeViewColumn *column;
+ GtkTreePath *path;
+ GList *cols;
+ gint *indices;
+ gint row,col;
+
+ /* can we convert this into an element of the history list? */
+ if(gtk_tree_view_get_path_at_pos(TREE_History,
+ (gint)event->button.x, (gint)event->button.y,
+ &path,&column,NULL,NULL))
+ {
+ /* find out which row and column the user clicked on */
+ indices = gtk_tree_path_get_indices(path);
+ row = indices[0];
+ cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(column->tree_view));
+ col = g_list_index(cols,(gpointer)column);
+ g_list_free(cols);
+ gtk_tree_path_free(path);
+
+ printf("DEBUG: row %d col %d\n",row,col);
+
+
+ if(col)
+ {
+ /* user didn't click on the move number */
+
+ to = 2*row + col;
+ printf("DEBUG: going to %d\n",to);fflush(stdout);
+
+ /* set board to that move */
+ ToNrEvent(to);
+ }
+ }
}
- */
+ return;
}
/* TODO need to add highlights for current move */
/* TODO need to add navigation by keyboard or mouse (double click on move) */
+ strcpy(movewhite,"");
+ strcpy(moveblack,"");
+
/* first clear everything, do we need this? */
gtk_list_store_clear(LIST_MoveHistory);
/* save move */
gtk_list_store_append (LIST_MoveHistory, &iter);
gtk_list_store_set (LIST_MoveHistory, &iter,
- 0, i,
+ 0, (i/2 +1),
1, movewhite,
2, moveblack,
-1);
/* check if there is a white move left */
if(movewhite[0])
{
- i++;
strcpy(moveblack,"");
+
/* save move */
gtk_list_store_append (LIST_MoveHistory, &iter);
gtk_list_store_set (LIST_MoveHistory, &iter,
- 0, i,
+ 0, (i/2 +1),
1, movewhite,
2, moveblack,
-1);
};
+
//TODO
// EvalGraphSet( first, last, current, pvInfoList ); // piggy-backed