Put front-end support for -recentEngines in XBoard
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 11 Feb 2012 11:59:04 +0000 (12:59 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 11 Feb 2012 11:59:04 +0000 (12:59 +0100)
The engines are added to the menu. Problem is still that in XBoard
startup engines are given by command, rather than selected by combobox,
so the command rather than the nickname ends up in the menu. If this is
then selected, it cannot be found in the list. To limit the damage,
Fairy-Max is now pre-installed without nickname. -recentEngines is now
configured to 4.

xboard.c
xboard.conf.in

index f9ba5cc..e4aec19 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -3891,6 +3891,39 @@ MenuBarSelect (Widget w, caddr_t addr, caddr_t index)
     (proc)(NULL, NULL, NULL, NULL);
 }
 
+static void
+MenuEngineSelect (Widget w, caddr_t addr, caddr_t index)
+{
+    RecentEngineEvent((int) addr);
+}
+
+void
+AppendEnginesToMenu (Widget menu, char *list)
+{
+    int i=0, j;
+    Widget entry;
+    MenuItem *mi;
+    Arg args[16];
+    char *p;
+
+    if(appData.recentEngines <= 0) return;
+    recentEngines = strdup(list);
+    j = 0;
+    XtSetArg(args[j], XtNleftMargin, 20);   j++;
+    XtSetArg(args[j], XtNrightMargin, 20);  j++;
+    while (*list) {
+       p = strchr(list, '\n'); if(p == NULL) break;
+       if(i == 0) XtCreateManagedWidget(_("----"), smeLineObjectClass, menu, args, j); // at least one valid item to add
+       *p = 0;
+       XtSetArg(args[j], XtNlabel, XtNewString(list));
+       entry = XtCreateManagedWidget("engine", smeBSBObjectClass, menu, args, j+1);
+       XtAddCallback(entry, XtNcallback,
+                         (XtCallbackProc) MenuEngineSelect,
+                         (caddr_t) i);
+       i++; *p = '\n'; list = p + 1;
+    }
+}
+
 void
 CreateMenuBarPopup (Widget parent, String name, Menu *mb)
 {
@@ -3919,6 +3952,7 @@ CreateMenuBarPopup (Widget parent, String name, Menu *mb)
        }
        mi++;
     }
+    if(!strcmp(mb->name, "Engine")) AppendEnginesToMenu(menu, appData.recentEngineList);
 }
 
 Widget
index ea719ee..c2a47a8 100644 (file)
@@ -29,7 +29,7 @@
 -darkBackTextureFile  "@pixmapsdir@/wood_d.xpm"
 -overrideLineGap 1
 -highlightMoveWithArrow true
--recentEngines 0
+-recentEngines 4
 ;
 ; Behavior
 ;
@@ -62,7 +62,7 @@
 ;
 -firstChessProgram fairymax
 -secondChessProgram fairymax
--firstChessProgramNames {"Fairy-Max" -fcp fairymax
+-firstChessProgramNames {fairymax
 "Fruit 2.1" -fcp fruit -fUCI
 "Crafty" -fcp crafty
 "GNU Chess" -fcp gnuchess