Adjusted alternative joining method to obey keepLineBreaksICS
[xboard.git] / xoptions.c
index b8a8a68..969a97d 100644 (file)
@@ -78,6 +78,8 @@ extern char *getenv();
 # define N_(s)  s
 #endif
 
+extern void SendToProgram P((char *message, ChessProgramState *cps));
+
 extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
 extern Display *xDisplay;
 extern int squareSize;
@@ -1079,7 +1081,7 @@ void NewVariantPopUp()
                                  "for missing bitmaps. (See manual.)")); j++;
     XtCreateManagedWidget("warning", labelWidgetClass, form, args, j);
 
-    XtRealizeWidget(popup);
+           XtRealizeWidget(popup);
     CatchDeleteWindow(popup, "NewVariantPopDown");
     
     XQueryPointer(xDisplay, xBoardWindow, &root, &child,
@@ -1473,18 +1475,21 @@ void CreateComboPopup(parent, name, n, mb)
 void SettingsPopUp(ChessProgramState *cps)
 {
     Arg args[16];
-    Widget popup, layout, dialog, edit, form, oldform, last, b_ok, b_cancel;
+    Widget popup, layout, dialog, edit=NULL, form, oldform, last, b_ok, b_cancel, leftMargin = NULL;
     Window root, child;
-    int x, y, i, j;
+    int x, y, i, j, height, width, h, c;
     int win_x, win_y;
     unsigned int mask;
     char def[80], *p, *q;
+    static char pane[6] = "paneX";
 
     // to do: start up second engine if needed
     if(!cps->initDone || !cps->nrOptions) return; // nothing to be done
     currentCps = cps;
 
-    i = 0;
+    if(cps->nrOptions > 50) width = 4; else if(cps->nrOptions>24) width = 2; else width = 1;
+    height = cps->nrOptions / width + 1;
+     i = 0;
     XtSetArg(args[i], XtNresizable, True); i++;
     SettingsShell = popup =
       XtCreatePopupShell(_("Settings Menu"), transientShellWidgetClass,
@@ -1493,12 +1498,20 @@ void SettingsPopUp(ChessProgramState *cps)
     layout =
       XtCreateManagedWidget(layoutName, formWidgetClass, popup,
                            layoutArgs, XtNumber(layoutArgs));
-  
+  for(c=0; c<width; c++) {
+    pane[4] = 'A'+c;
     form =
-      XtCreateManagedWidget(layoutName, formWidgetClass, layout,
+      XtCreateManagedWidget(pane, formWidgetClass, layout,
                            formArgs, XtNumber(formArgs));
+    j=0;
+    XtSetArg(args[j], XtNfromHoriz, leftMargin);  j++;
+    XtSetValues(form, args, j);
+    leftMargin = form;
     last = NULL;
-    for(i=0; i<cps->nrOptions; i++) {
+    for(h=0; h<height; h++) {
+       i = h + c*height;
+        if(i >= cps->nrOptions) break;
        switch(cps->option[i].type) {
          case Spin:
            sprintf(def, "%d", cps->option[i].value);
@@ -1586,7 +1599,7 @@ void SettingsPopUp(ChessProgramState *cps)
            break;
        }
     }
-
+  }
     j=0;
     XtSetArg(args[j], XtNfromVert, last);  j++;
     XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
@@ -1614,7 +1627,7 @@ void SettingsPopUp(ChessProgramState *cps)
     SettingsUp = True;
 
     previous = NULL;
-    SetFocus(edit, popup, (XEvent*) NULL, False);
+    if(edit)SetFocus(edit, popup, (XEvent*) NULL, False);
 }
 
 void FirstSettingsProc(w, event, prms, nprms)
@@ -1635,107 +1648,10 @@ void SecondSettingsProc(w, event, prms, nprms)
    SettingsPopUp(&second);
 }
 
-//--------------------------- General Popup for Cloning ----------------------------------
-#if 0
-int XXXUp;
-Widget XXXShell;
-
-void XXXPopDown()
-{
-    if (!XXXUp) return;
-    XtPopdown(XXXShell);
-    XtDestroyWidget(XXXShell);
-    XXXUp = False;
-    ModeHighlight();
-}
-
-void XXXCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, _("cancel")) == 0) {
-        XXXPopDown();
-        return;
-    }
-    if (strcmp(name, _("ok")) == 0) {
-       int nr; String name;
-        name = XawDialogGetValueString(w2 = XtParent(w));
-       if(sscanf(name ,"%d",&nr) != 1) {
-           sprintf(buf, "%d", appData.defaultFrcPosition);
-           XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
-           XtSetValues(w2, args, 1);
-           return;
-       }
-        XXXPopDown();
-        return;
-    }
-}
+//---------------------------- Chat Windows ----------------------------------------------
 
-void XXXPopUp()
+void OutputChatMessage(int partner, char *mess)
 {
-    Arg args[16];
-    Widget popup, layout, dialog, edit;
-    Window root, child;
-    int x, y, i;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    XXXShell = popup =
-      XtCreatePopupShell(_("XXX Menu"), transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    sprintf(def, "%d\n", appData.defaultFrcPosition);
-    i = 0;
-    XtSetArg(args[i], XtNlabel, ""); i++;
-    XtSetArg(args[i], XtNvalue, def); i++;
-    XtSetArg(args[i], XtNborderWidth, 0); i++;
-    dialog = XtCreateManagedWidget("XXX", dialogWidgetClass,
-                                  layout, args, i);
-    
-    XawDialogAddButton(dialog, _("ok"), XXXCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, _("cancel"), XXXCallback, (XtPointer) dialog);
-    
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "XXXPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    XXXUp = True;
-    
-    edit = XtNameToWidget(dialog, "*value");
-
-    previous = NULL;
-    SetFocus(engThreshold, popup, (XEvent*) NULL, False);
+    return; // dummy
 }
 
-void XXXMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   XXXPopUp();
-}
-#endif
\ No newline at end of file