X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xgamelist.c;h=009356b5689009dab59dcd1da98ea18686b2ca1f;hb=72eba140eb3a03c3f84a5906c13556730ea71be5;hp=403db0447cf7fe24ca607dc6e63c31083c20e184;hpb=05bc30b15e31c427ce208495a889e9ff36e6642b;p=xboard.git diff --git a/xgamelist.c b/xgamelist.c index 403db04..009356b 100644 --- a/xgamelist.c +++ b/xgamelist.c @@ -1,29 +1,24 @@ /* * xgamelist.c -- Game list window, part of X front end for XBoard - * $Id$ * - * Copyright 1995 Free Software Foundation, Inc. - * - * The following terms apply to the enhanced version of XBoard distributed - * by the Free Software Foundation: + * Copyright 1995,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" @@ -85,8 +80,18 @@ extern char *getenv(); #include "backend.h" #include "xboard.h" #include "xgamelist.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 -extern Widget formWidget, shellWidget, boardWidget, menuBarWidget; + +extern Widget formWidget, shellWidget, boardWidget, menuBarWidget, gameListShell; extern Display *xDisplay; extern int squareSize; extern Pixmap xMarkPixmap; @@ -132,11 +137,11 @@ GameListCreate(name, callback, client_data) XtSetArg(args[j], XtNresizable, True); j++; XtSetArg(args[j], XtNallowShellResize, True); j++; #if TOPLEVEL - shell = + shell = gameListShell = XtCreatePopupShell(name, topLevelShellWidgetClass, shellWidget, args, j); #else - shell = + shell = gameListShell = XtCreatePopupShell(name, transientShellWidgetClass, shellWidget, args, j); #endif @@ -177,7 +182,7 @@ GameListCreate(name, callback, client_data) XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; b_load = - XtCreateManagedWidget("load", commandWidgetClass, form, args, j); + XtCreateManagedWidget(_("load"), commandWidgetClass, form, args, j); XtAddCallback(b_load, XtNcallback, callback, client_data); j = 0; @@ -188,7 +193,7 @@ GameListCreate(name, callback, client_data) XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; b_loadprev = - XtCreateManagedWidget("prev", commandWidgetClass, form, args, j); + XtCreateManagedWidget(_("prev"), commandWidgetClass, form, args, j); XtAddCallback(b_loadprev, XtNcallback, callback, client_data); j = 0; @@ -199,7 +204,7 @@ GameListCreate(name, callback, client_data) XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; b_loadnext = - XtCreateManagedWidget("next", commandWidgetClass, form, args, j); + XtCreateManagedWidget(_("next"), commandWidgetClass, form, args, j); XtAddCallback(b_loadnext, XtNcallback, callback, client_data); j = 0; @@ -210,9 +215,16 @@ GameListCreate(name, callback, client_data) XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; b_close = - XtCreateManagedWidget("close", commandWidgetClass, form, args, j); + XtCreateManagedWidget(_("close"), commandWidgetClass, form, args, j); XtAddCallback(b_close, XtNcallback, callback, client_data); + if(wpGameList.width > 0) { + glc->x = wpGameList.x; + glc->y = wpGameList.y; + glc->w = wpGameList.width; + glc->h = wpGameList.height; + } + if (glc->x == -1) { Position y1; Dimension h1; @@ -276,29 +288,29 @@ GameListCallback(w, client_data, call_data) XtSetArg(args[j], XtNlabel, &name); j++; XtGetValues(w, args, j); - if (strcmp(name, "close") == 0) { + if (strcmp(name, _("close")) == 0) { GameListPopDown(); return; } listwidg = XtNameToWidget(glc->shell, "*form.viewport.list"); rs = XawListShowCurrent(listwidg); - if (strcmp(name, "load") == 0) { + if (strcmp(name, _("load")) == 0) { index = rs->list_index; if (index < 0) { - DisplayError("No game selected", 0); + DisplayError(_("No game selected"), 0); return; } - } else if (strcmp(name, "next") == 0) { + } else if (strcmp(name, _("next")) == 0) { index = rs->list_index + 1; if (index >= ((ListGame *) gameList.tailPred)->number) { - DisplayError("Can't go forward any further", 0); + DisplayError(_("Can't go forward any further"), 0); return; } XawListHighlight(listwidg, index); - } else if (strcmp(name, "prev") == 0) { + } else if (strcmp(name, _("prev")) == 0) { index = rs->list_index - 1; if (index < 0) { - DisplayError("Can't back up any further", 0); + DisplayError(_("Can't back up any further"), 0); return; } XawListHighlight(listwidg, index); @@ -399,7 +411,7 @@ ShowGameListProc(w, event, prms, nprms) int j; if (glc == NULL) { - DisplayError("There is no game list", 0); + DisplayError(_("There is no game list"), 0); return; } if (glc->up) { @@ -450,6 +462,10 @@ GameListPopDown() XtSetArg(args[j], XtNheight, &glc->h); j++; XtSetArg(args[j], XtNwidth, &glc->w); j++; XtGetValues(glc->shell, args, j); + wpGameList.x = glc->x - 4; + wpGameList.y = glc->y - 23; + wpGameList.width = glc->w; + wpGameList.height = glc->h; XtPopdown(glc->shell); XtSetKeyboardFocus(shellWidget, formWidget); glc->up = False; @@ -468,3 +484,9 @@ GameListHighlight(index) listwidg = XtNameToWidget(glc->shell, "*form.viewport.list"); XawListHighlight(listwidg, index - 1); } + +Boolean +GameListIsUp() +{ + return glc && glc->up; +}