X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=c2ac39290d2a540fc31ad3b34a09541d0ce4ff33;hb=ca99bd4de57d0b079024cbdf5435de1ae61d5fd9;hp=5640fee7535f34f85d170a2242d33bfa8074701b;hpb=762e18baef5f815cc46019ba3e082bd5ec1980f6;p=xboard.git diff --git a/xhistory.c b/xhistory.c index 5640fee..c2ac392 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,7 +86,7 @@ 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; }; @@ -91,6 +94,7 @@ struct History{ struct History *hist=0; String dots=" ... "; Position gameHistoryX, gameHistoryY; + void HistoryPopDown(w, client_data, call_data) Widget w; @@ -101,9 +105,9 @@ HistoryPopDown(w, client_data, call_data) 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); + XtSetArg(args[j], XtNx, &gameHistoryX); j++; + XtSetArg(args[j], XtNy, &gameHistoryY); j++; + XtGetValues(hist->sh, args, j); XtPopdown(hist->sh); hist->Up=False; @@ -117,7 +121,6 @@ HistoryPopDown(w, client_data, call_data) void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data) { int to; - XawListReturnStruct *R = (XawListReturnStruct *) call_data; if (w == hist->mvn || w == hist->mvw) { to=2*R->list_index-1; @@ -136,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; @@ -161,7 +164,6 @@ void HistoryAlloc(int len){ } -#if 1 /* Find empty space inside vbox form widget and redistribute it amongst the list widgets inside it. */ /* This version sort of works */ @@ -193,7 +195,7 @@ HistoryFill() } else { extra = extra/2; } - + j = 0; XtSetArg(args[j], XtNwidth, &w); j++; XtGetValues(hist->mvw, args, j); @@ -210,65 +212,13 @@ HistoryFill() XtSetArg(args[j], XtNwidth, w); j++; XtSetValues(hist->mvb, args, j); } -#else -/* Find empty space inside vbox form widget and redistribute it amongst - the list widgets inside it. */ -/* This version doesn't work */ -void -HistoryFill() -{ - Arg args[16]; - Dimension fw, niw, wiw, biw, nbw, wbw, bbw; - int j, nl, wl, bl, fdd; - long extra; - - j = 0; - XtSetArg(args[j], XtNwidth, &fw); j++; - XtSetArg(args[j], XtNdefaultDistance, &fdd); j++; - XtGetValues(hist->vbox, args, j); - - j = 0; - XtSetArg(args[j], XtNlongest, &nl); j++; - XtSetArg(args[j], XtNinternalWidth, &niw); j++; - XtSetArg(args[j], XtNborderWidth, &nbw); j++; - XtGetValues(hist->mvn, args, j); - - j = 0; - XtSetArg(args[j], XtNlongest, &wl); j++; - XtSetArg(args[j], XtNinternalWidth, &wiw); j++; - XtSetArg(args[j], XtNborderWidth, &wbw); j++; - XtGetValues(hist->mvw, args, j); - - j = 0; - XtSetArg(args[j], XtNlongest, &bl); j++; - XtSetArg(args[j], XtNinternalWidth, &biw); j++; - XtSetArg(args[j], XtNborderWidth, &bbw); j++; - XtGetValues(hist->mvb, args, j); - - extra = fw - 4*fdd - - nl - 1 - 2*niw - 2*nbw - wl - 2*wiw - 2*wbw - bl - 2*biw - 2*bbw; - if (extra < 0) extra = 0; - - j = 0; - XtSetArg(args[j], XtNwidth, nl + 1 + 2*niw); j++; - XtSetValues(hist->mvn, args, j); - - j = 0; - XtSetArg(args[j], XtNwidth, wl + 2*wiw + extra/2); j++; - XtSetValues(hist->mvw, args, j); - - j = 0; - XtSetArg(args[j], XtNwidth, bl + 2*biw + extra/2); j++; - XtSetValues(hist->mvb, args, j); -} -#endif void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){ int i,b,m; 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); } @@ -288,7 +238,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],""); } @@ -332,31 +282,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; @@ -382,13 +332,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++; @@ -403,8 +353,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++; @@ -420,7 +370,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++; @@ -437,11 +387,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"); @@ -450,12 +400,6 @@ Widget HistoryCreate() strcpy(hist->white[i],dots); strcpy(hist->black[i],""); } - - // [HGM] remember old position - j = 0; - XtSetArg(args[j], XtNx, &gameHistoryX); j++; - XtSetArg(args[j], XtNy, &gameHistoryY); j++; - XtGetValues(hist->sh, args, j); return hist->sh; } @@ -467,13 +411,14 @@ 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); + 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++; @@ -482,7 +427,7 @@ HistoryPopUp() hist->Up=True; } - + void HistoryShowProc(w, event, prms, nprms) Widget w; @@ -500,4 +445,4 @@ HistoryShowProc(w, event, prms, nprms) } ToNrEvent(currentMove); } - +