From 412e5bff85b4e47d337cfb4923cc406325903df2 Mon Sep 17 00:00:00 2001 From: H.G. Muller Date: Wed, 21 Mar 2012 17:58:27 +0100 Subject: [PATCH] Redo Game List Options with generic popup --- dialogs.c | 88 +++++++++++++++++++++++++ xboard.c | 1 - xgamelist.c | 207 ----------------------------------------------------------- xgamelist.h | 1 - 4 files changed, 88 insertions(+), 209 deletions(-) diff --git a/dialogs.c b/dialogs.c index 922fb49..10de8cf 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1472,6 +1472,94 @@ OutputChatMessage (int partner, char *mess) return; // dummy } +//--------------------------------- Game-List options dialog ------------------------------------------ + +char *strings[LPUSERGLT_SIZE]; +int stringPtr; + +void +GLT_ClearList () +{ + strings[0] = NULL; + stringPtr = 0; +} + +void +GLT_AddToList (char *name) +{ + strings[stringPtr++] = name; + strings[stringPtr] = NULL; +} + +Boolean +GLT_GetFromList (int index, char *name) +{ + safeStrCpy(name, strings[index], MSG_SIZ); + return TRUE; +} + +void +GLT_DeSelectList () +{ +} + +static void GLT_Button P((int n)); +static int GLT_OK P((int n)); + +static Option listOptions[] = { +{ 0, LR|TB, 200, NULL, (void*) strings, "", NULL, ListBox, "" }, +{ 0, 0, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("factory") }, +{ 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("up") }, +{ 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("down") }, +{ 0, SAME_ROW, 0, NULL, (void*) &GLT_OK, "", NULL, EndMark , "" } +}; + +static int +GLT_OK (int n) +{ + GLT_ParseList(); + appData.gameListTags = strdup(lpUserGLT); + return 1; +} + +static void +GLT_Button (int n) +{ + int index = SelectedListBoxItem (&listOptions[0]); + char *p; + if (index < 0) { + DisplayError(_("No tag selected"), 0); + return; + } + p = strings[index]; + if (n == 3) { + if(index >= strlen(GLT_ALL_TAGS)) return; + strings[index] = strings[index+1]; + strings[++index] = p; + } else + if (n == 2) { + if(index == 0) return; + strings[index] = strings[index-1]; + strings[--index] = p; + } else + if (n == 1) { + safeStrCpy(lpUserGLT, GLT_DEFAULT_TAGS, LPUSERGLT_SIZE); + GLT_TagsToList(lpUserGLT); + index = 0; + LoadListBox(&listOptions[0]); // Note: the others don't need this, as the highligh + } + HighlightListBoxItem(&listOptions[0], index); +} + +void +GameListOptionsPopUp () +{ + safeStrCpy(lpUserGLT, appData.gameListTags, LPUSERGLT_SIZE); + GLT_TagsToList(lpUserGLT); + + GenericPopUp(listOptions, _("Game-list options"), TransientDlg); +} + //----------------------------- Error popup in various uses ----------------------------- /* diff --git a/xboard.c b/xboard.c index ada34c2..4ee3c19 100644 --- a/xboard.c +++ b/xboard.c @@ -523,7 +523,6 @@ XtActionsRec boardActions[] = { { "TempForwardProc", TempForwardProc }, { "CommentClick", (XtActionProc) CommentClick }, { "GameListPopDown", (XtActionProc) GameListPopDown }, - { "GameListOptionsPopDown", (XtActionProc) GameListOptionsPopDown }, { "EngineOutputPopDown", (XtActionProc) EngineOutputPopDown }, { "EvalGraphPopDown", (XtActionProc) EvalGraphPopDown }, { "GenericPopDown", (XtActionProc) GenericPopDown }, diff --git a/xgamelist.c b/xgamelist.c index 5aa9201..0f0b53e 100644 --- a/xgamelist.c +++ b/xgamelist.c @@ -681,211 +681,4 @@ SaveGameListAsText (FILE *f) } return False; } -//--------------------------------- Game-List options dialog ------------------------------------------ - -Widget gameListOptShell, listwidg; - -char *strings[20]; -int stringPtr; - -void -GLT_ClearList () -{ - strings[0] = NULL; - stringPtr = 0; -} - -void -GLT_AddToList (char *name) -{ - strings[stringPtr++] = name; - strings[stringPtr] = NULL; -} - -Boolean -GLT_GetFromList (int index, char *name) -{ - safeStrCpy(name, strings[index], MSG_SIZ); - return TRUE; -} - -void -GLT_DeSelectList () -{ - XawListChange(listwidg, strings, 0, 0, True); - XawListHighlight(listwidg, 0); -} - -void -GameListOptionsPopDown () -{ - if (gameListOptShell == NULL) return; - - XtPopdown(gameListOptShell); - XtDestroyWidget(gameListOptShell); - gameListOptShell = 0; - XtSetKeyboardFocus(shellWidget, formWidget); -} - -void -GameListOptionsCallback (Widget w, XtPointer client_data, XtPointer call_data) -{ - String name; - Arg args[16]; - int j; - Widget listwidg; - XawListReturnStruct *rs; - int index; - char *p; - - j = 0; - XtSetArg(args[j], XtNlabel, &name); j++; - XtGetValues(w, args, j); - - if (strcmp(name, _("OK")) == 0) { - GLT_ParseList(); - appData.gameListTags = strdup(lpUserGLT); - GameListOptionsPopDown(); - return; - } else - if (strcmp(name, _("cancel")) == 0) { - GameListOptionsPopDown(); - return; - } - listwidg = XtNameToWidget(gameListOptShell, "*form.list"); - rs = XawListShowCurrent(listwidg); - index = rs->list_index; - if (index < 0) { - DisplayError(_("No tag selected"), 0); - return; - } - p = strings[index]; - if (strcmp(name, _("down")) == 0) { - if(index >= strlen(GLT_ALL_TAGS)) return; - strings[index] = strings[index+1]; - strings[++index] = p; - } else - if (strcmp(name, _("up")) == 0) { - if(index == 0) return; - strings[index] = strings[index-1]; - strings[--index] = p; - } else - if (strcmp(name, _("factory")) == 0) { - safeStrCpy(lpUserGLT, GLT_DEFAULT_TAGS, LPUSERGLT_SIZE); - GLT_TagsToList(lpUserGLT); - index = 0; - } - XawListHighlight(listwidg, index); -} - -Widget -GameListOptionsCreate () -{ - Arg args[16]; - Widget shell, form, viewport, layout; - Widget b_load, b_loadprev, b_loadnext, b_close, b_cancel; - Dimension fw_width; - XtPointer client_data = NULL; - int j; - - j = 0; - XtSetArg(args[j], XtNwidth, &fw_width); j++; - XtGetValues(formWidget, args, j); - - j = 0; - XtSetArg(args[j], XtNresizable, True); j++; - XtSetArg(args[j], XtNallowShellResize, True); j++; - shell = gameListOptShell = - XtCreatePopupShell(_("Game-list options"), transientShellWidgetClass, - shellWidget, args, j); - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, shell, - layoutArgs, XtNumber(layoutArgs)); - j = 0; - XtSetArg(args[j], XtNborderWidth, 0); j++; - form = - XtCreateManagedWidget("form", formWidgetClass, layout, args, j); - - j = 0; - XtSetArg(args[j], XtNdefaultColumns, 1); j++; - XtSetArg(args[j], XtNforceColumns, True); j++; - XtSetArg(args[j], XtNverticalList, True); j++; - listwidg = viewport = - XtCreateManagedWidget("list", listWidgetClass, form, args, j); - XawListHighlight(listwidg, 0); -// XtAugmentTranslations(listwidg, -// XtParseTranslationTable(gameListOptTranslations)); - - j = 0; - XtSetArg(args[j], XtNfromVert, viewport); j++; - XtSetArg(args[j], XtNtop, XtChainBottom); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - b_load = - XtCreateManagedWidget(_("factory"), commandWidgetClass, form, args, j); - XtAddCallback(b_load, XtNcallback, GameListOptionsCallback, client_data); - - j = 0; - XtSetArg(args[j], XtNfromVert, viewport); j++; - XtSetArg(args[j], XtNfromHoriz, b_load); j++; - XtSetArg(args[j], XtNtop, XtChainBottom); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - b_loadprev = - XtCreateManagedWidget(_("up"), commandWidgetClass, form, args, j); - XtAddCallback(b_loadprev, XtNcallback, GameListOptionsCallback, client_data); - - j = 0; - XtSetArg(args[j], XtNfromVert, viewport); j++; - XtSetArg(args[j], XtNfromHoriz, b_loadprev); j++; - XtSetArg(args[j], XtNtop, XtChainBottom); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - b_loadnext = - XtCreateManagedWidget(_("down"), commandWidgetClass, form, args, j); - XtAddCallback(b_loadnext, XtNcallback, GameListOptionsCallback, client_data); - - j = 0; - XtSetArg(args[j], XtNfromVert, viewport); j++; - XtSetArg(args[j], XtNfromHoriz, b_loadnext); j++; - XtSetArg(args[j], XtNtop, XtChainBottom); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - b_cancel = - XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j); - XtAddCallback(b_cancel, XtNcallback, GameListOptionsCallback, client_data); - - j = 0; - XtSetArg(args[j], XtNfromVert, viewport); j++; - XtSetArg(args[j], XtNfromHoriz, b_cancel); j++; - XtSetArg(args[j], XtNtop, XtChainBottom); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - b_close = - XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j); - XtAddCallback(b_close, XtNcallback, GameListOptionsCallback, client_data); - - safeStrCpy(lpUserGLT, appData.gameListTags, LPUSERGLT_SIZE); - GLT_TagsToList(lpUserGLT); - - XtRealizeWidget(shell); - CatchDeleteWindow(shell, "GameListOptionsPopDown"); - - return shell; -} - -void -GameListOptionsPopUp (Widget w, XEvent *event, String *prms, Cardinal *nprms) -{ - if (gameListOptShell == NULL) - gameListOptShell = GameListOptionsCreate(); - - XtPopup(gameListOptShell, XtGrabNone); -} - diff --git a/xgamelist.h b/xgamelist.h index 5376771..17dec72 100644 --- a/xgamelist.h +++ b/xgamelist.h @@ -24,7 +24,6 @@ #define _XGAMEL_H 1 void ShowGameListProc P((void)); -void GameListOptionsPopDown P((void)); void LoadSelectedProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void SetFilterProc P((Widget w, XEvent *event, -- 1.7.0.4