if(opt != &chatOptions[CHAT_IN] && !(opt == &chatOptions[CHAT_PARTNER] && n == 33)) return 0;
switch(n) {
case 33: // <Esc>
+ if(1) BoardToTop(); else
if(hidden) BoardToTop();
else PaneSwitch();
break;
void
ConsoleAutoPopUp (char *buf)
{
+ if(*buf == 27) { if(appData.icsActive && DialogExists(ChatDlg)) HardSetFocus (&chatOptions[CHAT_IN], ChatDlg); return; }
if(!appData.autoBox) return;
if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box
if(DialogExists(ChatDlg)) { // box already exists: append to current contents
Option mainOptions[] = { // description of main window in terms of generic dialog creator
{ 0, 0xCA, 0, NULL, NULL, "", NULL, BarBegin, "" }, // menu bar
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("File") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Edit") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("View") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Mode") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Action") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Engine") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Options") },
- { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Help") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_File") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Edit") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_View") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Mode") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Action") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("E_ngine") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Options") },
+ { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Help") },
{ 0, 0, 0, NULL, (void*)&SizeKludge, "", NULL, BarEnd, "" },
{ 0, LR|T2T|BORDER|SAME_ROW, 0, NULL, NULL, NULL, NULL, Label, "1" }, // optional title in window
{ 50, LL|TT, 100, NULL, (void*) &LogoW, NULL, NULL, Skip, "" }, // white logo
static int but1, but3, oldW, oldH;
int menuNr = -3, sizing, f, r;
TimeMark now;
+ extern Boolean right;
+
+ if(right) { // kludgy way to let button 1 double as button 3 when back-end requests this
+ if(but1 && n == 0) but1 = 0, but3 = 1;
+ else if(n == -1) n = -3, right = FALSE;
+ }
if(n == 0) { // motion
if(SeekGraphClick(Press, x, y, 1)) return NULL;
#define MAXFILES 1000
+static DialogClass savDlg;
static ChessProgramState *savCps;
static FILE **savFP;
static char *fileName, *extFilter, *savMode, **namePtr;
snprintf(title, MSG_SIZ, "%s", fileName);
else
snprintf(title, MSG_SIZ, "%s/%s", curDir, fileName);
- SetWidgetText((Option*) savFP, title, TransientDlg);
+ SetWidgetText((Option*) savFP, title, savDlg);
currentCps = savCps; // could return to Engine Settings dialog!
return TRUE;
}
}
void
+StartDir (char *filter, char *newName)
+{
+ static char *gamesDir, *trnDir, *imgDir, *bookDir;
+ static char curDir[MSG_SIZ];
+ char **res = NULL;
+ if(!filter || !*filter) return;
+ if(strstr(filter, "pgn")) res = &gamesDir; else
+ if(strstr(filter, "bin")) res = &bookDir; else
+ if(strstr(filter, "png")) res = &imgDir; else
+ if(strstr(filter, "trn")) res = &trnDir; else
+ if(strstr(filter, "fen")) res = &appData.positionDir;
+ if(res) {
+ if(newName) {
+ char *p, *q;
+ if(*newName) {
+ ASSIGN(*res, newName);
+ for(p=*res; q=strchr(p, '/');) p = q + 1; *p = NULLCHAR;
+ }
+ if(*curDir) chdir(curDir);
+ *curDir = NULLCHAR;
+ } else {
+ getcwd(curDir, MSG_SIZ);
+ if(*res && **res) chdir(*res);
+ }
+ }
+}
+
+void
Browse (DialogClass dlg, char *label, char *proposed, char *ext, Boolean pathFlag, char *mode, char **name, FILE **fp)
{
int j=0;
- savFP = fp; savMode = mode, namePtr = name, savCps = currentCps, oldVal = values[9]; // save params, for use in callback
+ savFP = fp; savMode = mode, namePtr = name, savCps = currentCps, oldVal = values[9], savDlg = dlg; // save params, for use in callback
ASSIGN(extFilter, ext);
ASSIGN(fileName, proposed ? proposed : "");
for(j=0; Extensions[j]; j++) // look up actual value in list of possible values, to get selection nr