#include <vector>
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include <config.h>
#include "LString.h"
using std::vector;
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,
pair<string,string> const & dir1,
pair<string,string> const & dir2)
{
- string lastPath = ".";
+ string lastPath(".");
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 (1) {
- result = fileDlg.Select(lastPath, pattern, OnlyFilename(filename));
+ while (true) {
+ if (save)
+ result = fileDlg.save(lastPath, pattern,
+ OnlyFilename(filename));
+ else
+ result = fileDlg.open(lastPath, pattern,
+ OnlyFilename(filename));
if (result.second.empty())
return result.second;
}
-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,
pair<string,string> const & dir1,
pair<string,string> const & dir2)
{
string const fname = MakeAbsPath(filename, refpath);
- string const outname = browseFile(lv, fname, title, pattern,
+ 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);
vector<string> const getLatexUnits()
{
vector<string> units;
- const char * str;
- for(int i=0; (str = stringFromUnit(i)); ++i)
+ char const * str;
+ for (int i = 0; (str = stringFromUnit(i)); ++i)
units.push_back(str);
return units;