#include "xstat.h"
#include "selfile.h"
+#include "../gettext.h"
#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
extern char *getwd();
#endif /* !defined(SVR4) && !defined(SYSV) && !defined(USG) */
+#ifdef ENABLE_NLS
+# define _(s) gettext (s)
+# define N_(s) gettext_noop (s)
+#else
+# define _(s) (s)
+# define N_(s) s
+#endif
+
+
int SFstatus = SEL_FILE_NULL;
char
- SFstartDir[MAXPATHLEN],
- SFcurrentPath[MAXPATHLEN],
- SFlastPath[MAXPATHLEN],
- SFcurrentDir[MAXPATHLEN];
+ SFstartDir[MAXPATHLEN+1],
+ SFcurrentPath[MAXPATHLEN+1],
+ SFlastPath[MAXPATHLEN+1],
+ SFcurrentDir[MAXPATHLEN+1];
Widget
selFile,
int SFpathScrollWidth, SFvScrollHeight, SFhScrollWidth;
-char SFtextBuffer[MAXPATHLEN];
+char SFtextBuffer[MAXPATHLEN+1];
-char SFfilterBuffer[MAXPATHLEN];
+char SFfilterBuffer[MAXPATHLEN+1];
XtIntervalId SFdirModTimerId;
i = 0;
XtSetArg(arglist[i], XtNtransientFor, toplevel); i++;
- selFile = XtAppCreateShell("Browse", "SelFile",
+ selFile = XtAppCreateShell(_("Browse"), "SelFile",
transientShellWidgetClass, SFdisplay, arglist, i);
/* Add WM_DELETE_WINDOW protocol */
XtSetArg(arglist[i], XtNeditType, XawtextEdit); i++;
XtSetArg(arglist[i], XtNwrap, XawtextWrapWord); i++;
XtSetArg(arglist[i], XtNresize, XawtextResizeHeight); i++;
- XtSetArg(arglist[i], XtNuseStringInPlace, True); i++;
selFileField = XtCreateManagedWidget("selFileField",
asciiTextWidgetClass, selFileForm, arglist, i);
XtAddEventHandler(selFileField, ButtonPressMask, False, SFsetFocus, (XtPointer) selFileForm);
i = 0;
- XtSetArg(arglist[i], XtNlabel, "Filter on extensions:"); i++;
+ XtSetArg(arglist[i], XtNlabel, _("Filter on extensions:")); i++;
XtSetArg(arglist[i], XtNvertDistance, 5); i++;
XtSetArg(arglist[i], XtNfromVert, selFileField); i++;
XtSetArg(arglist[i], XtNresizable, True); i++;
}
void
+SFupdateTextBuffer()
+{
+ Arg arglist[2];
+ int i;
+ char *v;
+
+ i = 0;
+ XtSetArg(arglist[i], XtNstring, &v); i++;
+ XtGetValues(selFileField, arglist, i);
+ strncpy(SFtextBuffer, v, MAXPATHLEN);
+}
+
+void
+SFsetText(path)
+ char *path;
+{
+ Arg arglist[2];
+ int i;
+
+ i = 0;
+ XtSetArg(arglist[i], XtNstring, path); i++;
+ XtSetValues(selFileField, arglist, i);
+ XawTextSetInsertionPoint(selFileField, strlen(path));
+}
+
+void
SFtextChanged()
{
+ SFupdateTextBuffer();
if ((SFtextBuffer[0] == '/') || (SFtextBuffer[0] == '~')) {
(void) strncpy(SFcurrentPath, SFtextBuffer, MAXPATHLEN);
FILE *fp;
if (!prompt) {
- prompt = "Pathname:";
+ prompt = _("Pathname:");
}
if (!ok) {
- ok = "OK";
+ ok = _("OK");
}
if (!cancel) {
- cancel = "Cancel";
+ cancel = _("Cancel");
}
if(SFpathFlag != (mode && mode[0] == 'p') || strcmp(SFfilterBuffer, filter)) {
XtSetValues(filterField, arglist, i);
strncpy(SFfilterBuffer, filter, MAXPATHLEN-1);
+ SFupdateTextBuffer();
strncpy(SFlastPath, SFtextBuffer, MAXPATHLEN-1); // remember for cancel
SFpositionWidget(selFile);
if (!getwd(SFstartDir)) {
#endif /* defined(SVR4) || defined(SYSV) || defined(USG) */
- XtAppError(SFapp, "XsraSelFile: can't get current directory");
+ XtAppError(SFapp, _("XsraSelFile: can't get current directory"));
}
(void) strcat(SFstartDir, "/");
(void) strncpy(SFcurrentDir, SFstartDir, MAXPATHLEN);
SFprepareToReturn();
return stderr;
}
- if ((*name_return)[strlen(*name_return)-1] != '/' && // [HGM] refuse directories
+ if ((!(*name_return)[0] || (*name_return)[strlen(*name_return)-1] != '/') && // [HGM] refuse directories
(fp = SFopenFile(*name_return, mode, prompt, failed))) {
SFprepareToReturn();
return fp;
break;
}
}
+
}