X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=02c9ec3643c6eb94212be431c72a11f03b4e5b1a;hb=b7a79fc5f838b5553d9d48ac26afad1c21111e95;hp=7f02ab80fd6c4f2341abf48927d7ad5bd7deb8ca;hpb=86517e539f33650be656c482020a878fec0723c9;p=xboard.git diff --git a/xhistory.c b/xhistory.c index 7f02ab8..02c9ec3 100644 --- a/xhistory.c +++ b/xhistory.c @@ -1,29 +1,24 @@ /* * xhistory.c -- Move list window, part of X front end for XBoard - * $Id: xhistory.c,v 2.1 2003/10/27 19:21:00 mann Exp $ * - * Copyright 2000 Free Software Foundation, Inc. - * - * The following terms apply to the enhanced version of XBoard distributed - * by the Free Software Foundation: + * Copyright 2000,2009 Free Software Foundation, Inc. * ------------------------------------------------------------------------ - * This program is free software; you can redistribute it and/or modify + * + * GNU XBoard is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU XBoard is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ + * along with this program. If not, see http://www.gnu.org/licenses/. * * - * See the file ChangeLog for a revision history. - */ + *------------------------------------------------------------------------ + ** See the file ChangeLog for a revision history. */ #include "config.h" @@ -71,7 +66,15 @@ extern char *getenv(); #include "backend.h" #include "xboard.h" #include "xhistory.h" +#include "gettext.h" +#ifdef ENABLE_NLS +# define _(s) gettext (s) +# define N_(s) gettext_noop (s) +#else +# define _(s) (s) +# define N_(s) s +#endif #define _LL_ 100 @@ -83,13 +86,14 @@ extern char *layoutName; struct History{ String *Nr,*white,*black; - int aNr; /* space actually alocated */ + int aNr; /* space actually alocated */ Widget mvn,mvw,mvb,vbox,viewport,sh; char Up; }; struct History *hist=0; String dots=" ... "; +Position gameHistoryX, gameHistoryY; void HistoryPopDown(w, client_data, call_data) @@ -98,14 +102,19 @@ HistoryPopDown(w, client_data, call_data) { Arg args[16]; int j; - if(hist) - - XtPopdown(hist->sh); - hist->Up=False; + if(hist) { + // [HGM] remember old position + j = 0; + XtSetArg(args[j], XtNx, &gameHistoryX); j++; + XtSetArg(args[j], XtNy, &gameHistoryY); j++; + XtGetValues(hist->sh, args, j); + XtPopdown(hist->sh); + hist->Up=False; + } j=0; XtSetArg(args[j], XtNleftBitmap, None); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"), + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"), args, j); } @@ -130,20 +139,20 @@ void HistoryAlloc(int len){ free(hist->Nr);free(hist->white);free(hist->black); } else{ - hist=(struct History*)malloc(sizeof(struct History)); + hist=(struct History*)malloc(sizeof(struct History)); } hist->aNr=len; hist->Nr=(String*)malloc(hist->aNr*sizeof(String*)); hist->white=(String*)malloc(hist->aNr*sizeof(String*)); hist->black=(String*)malloc(hist->aNr*sizeof(String*)); - + hist->Nr[0]=(String)malloc(hist->aNr*6); hist->white[0]=(String)malloc(hist->aNr*MOVE_LEN); hist->black[0]=(String)malloc(hist->aNr*MOVE_LEN); sprintf(hist->Nr[0]," "); - sprintf(hist->white[0],"White "); - sprintf(hist->black[0],"Black "); + sprintf(hist->white[0],_("White ")); + sprintf(hist->black[0],_("Black ")); for(i=1;iaNr;i++){ hist->Nr[i]= hist->Nr[i-1]+6; hist->white[i]= hist->white[i-1]+MOVE_LEN; @@ -187,7 +196,7 @@ HistoryFill() } else { extra = extra/2; } - + j = 0; XtSetArg(args[j], XtNwidth, &w); j++; XtGetValues(hist->mvw, args, j); @@ -262,7 +271,7 @@ void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){ if(hist){ if(last >= hist->aNr) HistoryAlloc(last+_LL_); for(i=0;iwhite[i/2+1][p-movelist[i]] = NULLCHAR; } else { strcpy(hist->white[i/2+1],movelist[i]); - } + } } else { strcpy(hist->white[i/2+1],dots); } @@ -282,7 +291,7 @@ void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){ hist->black[i/2+1][p-movelist[i]] = NULLCHAR; } else { strcpy(hist->black[i/2+1],movelist[i]); - } + } } else { strcpy(hist->black[i/2+1],""); } @@ -326,31 +335,31 @@ Widget HistoryCreate() Right: ForwardProc() \n"; /*--- allocate memory for move-strings ---*/ HistoryAlloc(_LL_); - + /*-------- create the widgets ---------------*/ j = 0; XtSetArg(args[j], XtNresizable, True); j++; - XtSetArg(args[j], XtNallowShellResize, True); j++; + XtSetArg(args[j], XtNallowShellResize, True); j++; #if TOPLEVEL hist->sh = - XtCreatePopupShell("Move list", topLevelShellWidgetClass, + XtCreatePopupShell(_("Move list"), topLevelShellWidgetClass, shellWidget, args, j); #else hist->sh = - XtCreatePopupShell("Move list", transientShellWidgetClass, + XtCreatePopupShell(_("Move list"), transientShellWidgetClass, shellWidget, args, j); -#endif +#endif j = 0; XtSetArg(args[j], XtNborderWidth, 0); j++; XtSetArg(args[j], XtNdefaultDistance, 0); j++; layout = XtCreateManagedWidget(layoutName, formWidgetClass, hist->sh, args, j); - + j = 0; XtSetArg(args[j], XtNborderWidth, 0); j++; XtSetArg(args[j], XtNresizable, True); j++; - + form = XtCreateManagedWidget("form", formWidgetClass, layout, args, j); j=0; @@ -376,13 +385,13 @@ Widget HistoryCreate() XtSetArg(args[j], XtNorientation,XtorientHorizontal);j++; hist->vbox = XtCreateManagedWidget("vbox", formWidgetClass, hist->viewport, args, j); - + j=0; XtSetArg(args[j], XtNtop, XtChainTop); j++; XtSetArg(args[j], XtNbottom, XtChainTop); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - + XtSetArg(args[j], XtNright, XtChainLeft); j++; + XtSetArg(args[j], XtNdefaultColumns, 1); j++; XtSetArg(args[j], XtNforceColumns, True); j++; XtSetArg(args[j], XtNverticalList, True); j++; @@ -397,8 +406,8 @@ Widget HistoryCreate() XtSetArg(args[j], XtNtop, XtChainTop); j++; XtSetArg(args[j], XtNbottom, XtChainTop); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtRubber); j++; - + XtSetArg(args[j], XtNright, XtRubber); j++; + XtSetArg(args[j], XtNdefaultColumns, 1); j++; XtSetArg(args[j], XtNforceColumns, True); j++; XtSetArg(args[j], XtNverticalList, True); j++; @@ -414,7 +423,7 @@ Widget HistoryCreate() XtSetArg(args[j], XtNbottom, XtChainTop); j++; XtSetArg(args[j], XtNleft, XtRubber); j++; XtSetArg(args[j], XtNright, XtRubber); j++; - + XtSetArg(args[j], XtNdefaultColumns, 1); j++; XtSetArg(args[j], XtNforceColumns, True); j++; XtSetArg(args[j], XtNverticalList, True); j++; @@ -431,11 +440,11 @@ Widget HistoryCreate() XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; XtSetArg(args[j], XtNfromVert, hist->viewport); j++; - b_close= XtCreateManagedWidget("Close", commandWidgetClass, - form, args, j); + b_close= XtCreateManagedWidget(_("Close"), commandWidgetClass, + form, args, j); XtAddCallback(b_close, XtNcallback, HistoryPopDown, (XtPointer) 0); - XtAugmentTranslations(hist->sh,XtParseTranslationTable (trstr)); + XtAugmentTranslations(hist->sh,XtParseTranslationTable (trstr)); XtRealizeWidget(hist->sh); CatchDeleteWindow(hist->sh, "HistoryPopDown"); @@ -444,7 +453,7 @@ Widget HistoryCreate() strcpy(hist->white[i],dots); strcpy(hist->black[i],""); } - + return hist->sh; } @@ -455,15 +464,23 @@ HistoryPopUp() int j; if(!hist) HistoryCreate(); + XtPopup(hist->sh, XtGrabNone); + + // [HGM] restore old position + j = 0; + XtSetArg(args[j], XtNx, gameHistoryX); j++; + XtSetArg(args[j], XtNy, gameHistoryY); j++; + XtSetValues(hist->sh, args, j); + j=0; XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"), + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"), args, j); hist->Up=True; } - + void HistoryShowProc(w, event, prms, nprms) Widget w; @@ -481,4 +498,4 @@ HistoryShowProc(w, event, prms, nprms) } ToNrEvent(currentMove); } - +