Redo Game List Options with generic popup
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 21 Mar 2012 16:58:27 +0000 (17:58 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 10 Apr 2012 09:35:10 +0000 (11:35 +0200)
dialogs.c
xboard.c
xgamelist.c
xgamelist.h

index 922fb49..10de8cf 100644 (file)
--- 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 -----------------------------
 
 /*
index ada34c2..4ee3c19 100644 (file)
--- 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 },
index 5aa9201..0f0b53e 100644 (file)
@@ -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);
-}
-
 
index 5376771..17dec72 100644 (file)
@@ -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,