Add -dialogColor and -buttonColor options
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 5 Apr 2012 19:56:52 +0000 (21:56 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 10 Apr 2012 09:35:10 +0000 (11:35 +0200)
These only override system defaults if they are non-empty strings.

args.h
common.h
xboard.c
xboard.h
xoptions.c

diff --git a/args.h b/args.h
index 0e91101..a08d49b 100644 (file)
--- a/args.h
+++ b/args.h
@@ -651,6 +651,8 @@ ArgDescriptor argDescriptors[] = {
   { "viewerOptions", ArgString, (void *) &appData.viewerOptions, TRUE, (ArgIniType) "-ncp -engineOutputUp false -saveSettingsOnExit false" },
   { "autoCopyPV", ArgBoolean, (void *) &appData.autoCopyPV, TRUE, FALSE },
   { "topLevel", ArgBoolean, (void *) &appData.topLevel, XBOARD, (ArgIniType) TOPLEVEL },
+  { "dialogColor", ArgString, (void *) &appData.dialogColor, XBOARD, (ArgIniType) "" },
+  { "buttonColor", ArgString, (void *) &appData.buttonColor, XBOARD, (ArgIniType) "" },
 
 #if ZIPPY
   { "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK },
index 236a69d..2d8162b 100644 (file)
--- a/common.h
+++ b/common.h
@@ -384,6 +384,8 @@ typedef struct {
     char *jailSquareColor;
     char *highlightSquareColor;
     char *premoveHighlightColor;
+    char *dialogColor;
+    char *buttonColor;
 #else
     int whitePieceColor;
     int blackPieceColor;
index 81477c5..ada34c2 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -301,7 +301,7 @@ int xScreen;
 Display *xDisplay;
 Window xBoardWindow;
 Pixel lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor,
-  highlightSquareColor, premoveHighlightColor;
+  highlightSquareColor, premoveHighlightColor, dialogColor, buttonColor;
 Pixel lowTimeWarningColor;
 GC lightSquareGC, darkSquareGC, lineGC, wdPieceGC, wlPieceGC,
   bdPieceGC, blPieceGC, wbPieceGC, bwPieceGC, coordGC, highlineGC,
@@ -1258,6 +1258,8 @@ MakeColors ()
     forceMono |= MakeOneColor(appData.blackPieceColor, &blackPieceColor);
     forceMono |= MakeOneColor(appData.highlightSquareColor, &highlightSquareColor);
     forceMono |= MakeOneColor(appData.premoveHighlightColor, &premoveHighlightColor);
+    if(appData.dialogColor[0]) MakeOneColor(appData.dialogColor, &dialogColor);
+    if(appData.buttonColor[0]) MakeOneColor(appData.buttonColor, &buttonColor);
 
     return forceMono;
 }
index 7f12900..188e507 100644 (file)
--- a/xboard.h
+++ b/xboard.h
@@ -159,7 +159,7 @@ extern int squareSize;
 extern Pixmap xMarkPixmap, wIconPixmap, bIconPixmap;
 extern char *layoutName;
 extern Arg layoutArgs[2], formArgs[2], messageArgs[4];
-extern Pixel timerForegroundPixel, timerBackgroundPixel;
+extern Pixel timerForegroundPixel, timerBackgroundPixel, dialogColor, buttonColor;
 extern int searchTime;
 extern Atom wm_delete_window;
 extern int squareSize, lineGap, defaultLineGap, useImages, useImageSqs;
index 1c711bb..528ab3a 100644 (file)
@@ -676,6 +676,12 @@ SetPositionAndSize (Arg *args, Widget leftNeigbor, Widget topNeigbor, int b, int
     // set size (if given)
     if(w) XtSetArg(args[j], XtNwidth, w), j++;
     if(h) XtSetArg(args[j], XtNheight, h),  j++;
+    // color
+    if(!appData.monoMode) {
+       if(!b && appData.dialogColor[0]) XtSetArg(args[j], XtNbackground, dialogColor),  j++;
+       if(b == 3 && appData.buttonColor[0]) XtSetArg(args[j], XtNbackground, buttonColor),  j++;
+       if(b == 3) b = 1;
+    }
     // border
     XtSetArg(args[j], XtNborderWidth, b);  j++;
     return j;
@@ -726,6 +732,9 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
     layout =
       XtCreateManagedWidget(layoutName, formWidgetClass, popup,
                            layoutArgs, XtNumber(layoutArgs));
+    if(!appData.monoMode && appData.dialogColor[0]) XtSetArg(args[0], XtNbackground, dialogColor);
+    XtSetValues(layout, args, 1);
+
   for(c=0; c<width; c++) {
     pane[4] = 'A'+c;
     form =
@@ -733,6 +742,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
                            formArgs, XtNumber(formArgs));
     j=0;
     XtSetArg(args[j], stack ? XtNfromVert : XtNfromHoriz, previousPane);  j++;
+    if(!appData.monoMode && appData.dialogColor[0]) XtSetArg(args[j], XtNbackground, dialogColor),  j++;
     XtSetValues(form, args, j);
     lastrow = forelast = NULL;
     previousPane = form;
@@ -797,7 +807,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
            } else {
                w = 20; msg = "+"; j = textHeight/2; // spin button
            }
-           j = SetPositionAndSize(args, last, edit, 1 /* border */,
+           j = SetPositionAndSize(args, last, edit, 3 /* border */,
                                   w /* w */, j /* h */, 0x31 /* chain to right edge */);
            edit = XtCreateManagedWidget(msg, commandWidgetClass, form, args, j);
            XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer)(intptr_t) i + 256*dlgNr);
@@ -805,7 +815,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
 
            if(option[i].type != Spin) break;
 
-           j = SetPositionAndSize(args, last, edit, 1 /* border */,
+           j = SetPositionAndSize(args, last, edit, 3 /* border */,
                                   20 /* w */, textHeight/2 /* h */, 0x31 /* chain to right edge */);
            XtSetArg(args[j], XtNvertDistance, -1);  j++;
            last = XtCreateManagedWidget("-", commandWidgetClass, form, args, j);
@@ -854,7 +864,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
                chain = 0x31; // 0011.0001 = both left and right side to right edge
                forelast = lastrow;
            } else chain = 0, shrink = FALSE;
-           j = SetPositionAndSize(args, last, lastrow, 1 /* border */,
+           j = SetPositionAndSize(args, last, lastrow, 3 /* border */,
                                   option[i].max /* w */, shrink ? textHeight : 0 /* h */, chain /* chain */);
            XtSetArg(args[j], XtNlabel, _(option[i].name));  j++;
            if(option[i].textValue) { // special for buttons of New Variant dialog
@@ -1030,7 +1040,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
        }
        lastrow = forelast;
     } else shrink = FALSE, lastrow = last, last = widest ? widest : dialog;
-    j = SetPositionAndSize(args, last, anchor ? anchor : lastrow, 1 /* border */,
+    j = SetPositionAndSize(args, last, anchor ? anchor : lastrow, 3 /* border */,
                           0 /* w */, shrink ? textHeight : 0 /* h */, 0x37 /* chain: right, bottom and use both neighbors */);
 
   if(!(option[i].min & NO_OK)) {