/*
* xoptions.c -- Move list window, part of X front end for XBoard
*
- * Copyright 2000, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * Copyright 2000, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
* ------------------------------------------------------------------------
*
* GNU XBoard is free software: you can redistribute it and/or modify
};
void
+CursorAtEnd (Option *opt)
+{
+}
+
+void
GetWidgetText (Option *opt, char **buf)
{
Arg arg;
}
void
-LoadListBox (Option *opt, char *emptyText)
+LoadListBox (Option *opt, char *emptyText, int n1, int n2)
{
static char *dummyList[2];
dummyList[0] = emptyText; // empty listboxes tend to crash X, so display user-supplied warning string instead
}
void
+HighlightText (Option *opt, int start, int end, Boolean on)
+{
+ if(on)
+ XawTextSetSelection( opt->handle, start, end ); // for lack of a better method, use selection for highighting
+ else
+ XawTextSetSelection( opt->handle, 0, 0 );
+}
+
+void
FocusOnWidget (Option *opt, DialogClass dlg)
{
UnCaret();
if(list[0] == NULL) return NULL; // avoid empty menus, as they cause crash
menu = XtCreatePopupShell(opt->name, simpleMenuWidgetClass, parent, NULL, 0);
- for (i=0; 1; i++)
+ for (i=0; 1; i++)
{
char *msg = fromList ? list[i] : mb[i].string;
if(!msg) break;
};
void
-AddHandler (Option *opt, int nr)
+AddHandler (Option *opt, DialogClass dlg, int nr)
{
XtOverrideTranslations(opt->handle, XtParseTranslationTable(translationTable[nr]));
}
SubstructureRedirectMask | SubstructureNotifyMask,
&xev);
- XFlush(xDisplay);
+ XFlush(xDisplay);
XSync(xDisplay, False);
}
currentOption = dialogOptions[dlg=data>>16]; data &= 0xFFFF;
oldSh = shells[dlg]; shells[dlg] = sh; // bow to reality
if (data == 30000) { // cancel
- PopDown(dlg);
+ PopDown(dlg);
} else
if (data == 30001) { // save buttons imply OK
if(GenericReadout(currentOption, -1)) PopDown(dlg); // calls OK-proc after full readout, but no popdown if it returns false
if(engineDlg) { // Settings popup for engine: format through heuristic
int n = currentCps->nrOptions;
- if(!n) { DisplayNote(_("Engine has no options")); currentCps = NULL; return 0; }
if(n > 50) width = 4; else if(n>24) width = 2; else width = 1;
height = n / width + 1;
if(n && (currentOption[n-1].type == Button || currentOption[n-1].type == SaveButton)) currentOption[n].min = SAME_ROW; // OK on same line
XtSetArg(args[j], XtNdisplayCaret, False); j++;
XtSetArg(args[j], XtNresizable, True); j++;
XtSetArg(args[j], XtNinsertPosition, 9999); j++;
- XtSetArg(args[j], XtNstring, option[i].type==Spin || option[i].type==Fractional ? def :
+ XtSetArg(args[j], XtNstring, option[i].type==Spin || option[i].type==Fractional ? def :
engineDlg ? option[i].textValue : *(char**)option[i].target); j++;
edit = last;
option[i].handle = (void*)
XtAddEventHandler(last, ButtonPressMask, False, CheckCallback, (XtPointer)(intptr_t) i + 256*dlgNr);
shrink = TRUE; // following buttons must get text height
break;
+ case Icon:
case Label:
msg = option[i].name;
if(!msg) break;
case PopUp: // note: used only after Graph, so 'last' refers to the Graph widget
option[i].handle = (void*) CreateComboPopup(last, option + i, i + 256*dlgNr, TRUE, option[i].value);
break;
+ case BarBegin:
case BoxBegin:
if(option[i].min & SAME_ROW) forelast = lastrow;
j = SetPositionAndSize(args, last, lastrow, 0 /* border */,
(last = XtCreateManagedWidget(option[i].name, menuButtonWidgetClass, form, args, j));
option[i].textValue = (char*) CreateComboPopup(last, option + i, i + 256*dlgNr, FALSE, -1);
break;
+ case BarEnd:
case BoxEnd:
XtManageChildren(&form, 1);
SqueezeIntoBox(&option[box], i-box, option[box].max);
XSetInputFocus(xDisplay, XtWindow(opt->handle), RevertToPointerRoot, CurrentTime);
}
-
+void
+FileNamePopUpWrapper (char *label, char *def, char *filter, FileProc proc, Boolean pathFlag, char *openMode, char **openName, FILE **openFP)
+{
+ Browse(BoardWindow, label, (def[0] ? def : NULL), filter, False, openMode, openName, openFP);
+}