X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=dialogs.c;h=306bc97c3fdcd5ef38da8402de10e647f26c14bf;hb=39298ae34f47966df637ad5044250a7a2a15e46a;hp=19b69af10e458836f1e1a68563a9d8608c31682c;hpb=fcf1b04ac104178d84c30b2824804f199061e250;p=xboard.git diff --git a/dialogs.c b/dialogs.c index 19b69af..306bc97 100644 --- a/dialogs.c +++ b/dialogs.c @@ -1620,6 +1620,131 @@ ShuffleMenuProc () GenericPopUp(shuffleOptions, _("New Shuffle Game"), TransientDlg, BoardWindow, MODAL, 0); } +//--------------------------------------------------- Fonts ------------------------------ + +static void AdjustFont P((int n)); + +static int +FontsOK (int n) +{ + extern Option historyOptions[], engoutOptions[], gamesOptions[], chatOptions[]; + int i; + DisplayBothClocks(); + ApplyFont(&mainOptions[W_MESSG], NULL); + for(i=1; i<6; i++) ApplyFont(&mainOptions[W_BUTTON+i], NULL); + ApplyFont(&tagsOptions[1], NULL); + ApplyFont(&historyOptions[0], NULL); + ApplyFont(&engoutOptions[5], NULL); + ApplyFont(&engoutOptions[12], NULL); + ApplyFont(&gamesOptions[0], NULL); + ApplyFont(&chatOptions[11], appData.icsFont); + AppendColorized(&chatOptions[6], NULL, 0); // kludge to replace font tag + DrawPosition(TRUE, NULL); // for coord font + return 1; +} + +static Option fontOptions[] = { + { 0, 60, 200, NULL, (void*) &appData.clockFont, NULL, NULL, TextBox, N_("Clocks (requires restart):") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.font, NULL, NULL, TextBox, N_("Message (above board):") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.icsFont, NULL, NULL, TextBox, N_("ICS Chat/Console:") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.tagsFont, NULL, NULL, TextBox, N_("Edit tags / book / engine list:") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.commentFont, NULL, NULL, TextBox, N_("Edit comments:") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.historyFont, NULL, NULL, TextBox, N_("Move history / Engine Output:") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 60, 70, NULL, (void*) &appData.gameListFont, NULL, NULL, TextBox, N_("Game list:") }, + { 1, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("+") }, + { 2, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("-") }, + { 3, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("B") }, + { 4, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("I") }, + { 666, SAME_ROW, 0, NULL, (void*) &AdjustFont, NULL, NULL, Button, N_("*") }, + { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("\nThe * buttons will set the font to the one selected below:") }, + { 0, 0, 0, NULL, NULL, NULL, NULL, Button, "fontsel" }, + { 0, 0, 0, NULL, (void*) &FontsOK, "", NULL, EndMark , "" } +}; + +static char name[MSG_SIZ], *bold, *ital, points; + +static void +BreakUp (char *font) +{ + char *p = name, *norm; + safeStrCpy(name, font, MSG_SIZ); + bold = StrCaseStr(name, "bold"); + ital = StrCaseStr(name, "ital"); + norm = StrCaseStr(name, "normal"); + points = 0; + while(p && *p && !(points = atoi(p))) p = strchr(p+1, ' '); + if(points) p[*p == ' '] = 0; + if(bold) *bold = 0; + if(ital) *ital = 0; + if(norm) *norm = 0; +} + +static void +Collect () +{ + if(bold) strcat(name, "Bold "); + if(ital) strcat(name, "Italic "); + if(!ital && !bold && strlen(name) < 2) strncpy(name, "Normal ", MSG_SIZ); + if(points) sprintf(name + strlen(name), "%d", points); else strcat(name, "%d"); +} + +static void +AdjustFont (int n) +{ + int button = fontOptions[n].value, base = n - button; + char *oldFont; + GetWidgetText(&fontOptions[base], &oldFont); + BreakUp(oldFont); // take apart old font name + switch(button) { + case 1: points++; break; + case 2: points--; break; + case 3: if(bold) bold = NULL; else bold = name; break; + case 4: if(ital) ital = NULL; else ital = name; break; + } + Collect(); + SetWidgetText(&fontOptions[base], name, TransientDlg); + ApplyFont(&fontOptions[base], name); +} + +void +FontsProc () +{ + int i; + if(strstr(appData.font, "-*-")) { DisplayNote(_("This only works in the GTK build")); return; } + GenericPopUp(fontOptions, _("Fonts"), TransientDlg, BoardWindow, MODAL, 0); + for(i=0; i<6; i++) ApplyFont(&fontOptions[6*i], *(char**)fontOptions[6*i].target); +} + //------------------------------------------------------ Time Control ----------------------------------- static int TcOK P((int n)); @@ -2481,10 +2606,10 @@ GetHelpText (FILE *f, char *name) len = strlen(buf); for(len=3; buf[len] && buf[len] != '(' && buf[len] != ':' && buf[len] != '.' && buf[len] != '?' && buf[len] != '\n'; len++); buf[len] = NULLCHAR; - while(buf[--len] == ' ') buf[len] = NULLCHAR; + while(buf[--len] == ' ') buf[len] = NULLCHAR; len++; snprintf(title, MSG_SIZ, "Help on '%s'", buf+3); while((line = ReadLine(f))) { - if(!strncmp(line, buf, ++len) || !strncmp(line, ".SS ", 4) && !strncmp(line+4, buf+3, len-3) + if(!strncmp(line, buf, len) || !strncmp(line, ".SS ", 4) && !strncmp(line+4, buf+3, len-3) || !strncmp(line, ".IX Item \"", 10) && !strncmp(line+10, buf+3, len-3)) { while((line = ReadLine(f)) && (cnt == 0 || strncmp(line, ".B ", 3) && strncmp(line, ".SS ", 4) && strncmp(line, ".IX ", 4))) { if(!*line) { *p++ = '\n'; *p++ = '\n'; q = p; continue; } @@ -2514,7 +2639,7 @@ GetHelpText (FILE *f, char *name) return; } } - snprintf(text, MSG_SIZ, "No help on '%s'\n", buf+3); + snprintf(text, MSG_SIZ, "No help available on '%s'\n", buf+3); DisplayNote(text); }