#include <vector>
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include <config.h>
#include "LString.h"
using std::make_pair;
-string const browseFile(LyXView * lv, string const & filename,
+string const browseFile(string const & filename,
string const & title,
string const & pattern,
bool save,
if (!filename.empty())
lastPath = OnlyPath(filename);
- FileDialog fileDlg(lv, title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
+ FileDialog fileDlg(title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
FileDialog::Result result;
while (true) {
- if (save)
+ if (save)
result = fileDlg.save(lastPath, pattern,
OnlyFilename(filename));
else
}
-string const browseRelFile(LyXView * lv, string const & filename,
+string const browseRelFile(string const & filename,
string const & refpath,
string const & title,
string const & pattern,
- bool save,
+ bool save,
pair<string,string> const & dir1,
pair<string,string> const & dir2)
{
string const fname = MakeAbsPath(filename, refpath);
- string const outname = browseFile(lv, fname, title, pattern, save,
+ string const outname = browseFile(fname, title, pattern, save,
dir1, dir2);
string const reloutname = MakeRelPath(outname, refpath);
if (prefixIs(reloutname, "../"))
}
+string const browseDir(string const & pathname,
+ string const & title,
+ pair<string,string> const & dir1,
+ pair<string,string> const & dir2)
+{
+ string lastPath(".");
+ if (!pathname.empty())
+ lastPath = OnlyPath(pathname);
+
+ FileDialog fileDlg(title, LFUN_SELECT_FILE_SYNC, dir1, dir2);
+
+ FileDialog::Result result;
+
+ while (true) {
+ result = fileDlg.opendir(lastPath,
+ OnlyFilename(pathname));
+
+ if (result.second.empty())
+ return result.second;
+
+ lastPath = OnlyPath(result.second);
+
+ if (result.second.find_first_of("#~$% ") == string::npos)
+ break;
+
+ Alert::alert(_("directory name can't contain any "
+ "of these characters:"),
+ _("space, '#', '~', '$' or '%'."));
+ }
+
+ return result.second;
+}
+
+
// sorry this is just a temporary hack we should include vspace.h! (Jug)
extern const char * stringFromUnit(int);