QString const label1 = qt_("Documents|#o#O");
QString const dir1 = toqstr(lyxrc.document_path);
QStringList const filter(qt_("BibTeX Databases (*.bib)"));
- return browseRelFile(in_name, bufferFilePath(),
+ return browseRelToParent(in_name, bufferFilePath(),
qt_("Select a BibTeX database to add"), filter, false, label1, dir1);
}
QString const label1 = qt_("Documents|#o#O");
QString const dir1 = toqstr(lyxrc.document_path);
QStringList const filter(qt_("BibTeX Styles (*.bst)"));
- return browseRelFile(in_name, bufferFilePath(),
+ return browseRelToParent(in_name, bufferFilePath(),
qt_("Select a BibTeX style"), filter, false, label1, dir1);
}
QString filename;
if (lyxview().documentBufferView()) {
QString path = bufferFilePath();
- filename = browseRelFile(in_name, path, title, filters, false,
+ filename = browseRelToParent(in_name, path, title, filters, false,
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
} else {
QString path = toqstr(lyxrc.document_path);
- QString rel_filename = browseRelFile(in_name, path, title, filters, false,
+ QString rel_filename = browseRelToParent(in_name, path, title, filters, false,
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
filename = makeAbsPath(rel_filename, path);
}
QString const label1 = qt_("Layouts|#o#O");
QString const dir1 = toqstr(lyxrc.document_path);
QStringList const filter(qt_("LyX Layout (*.layout)"));
- QString file = browseRelFile(QString(), bufferFilePath(),
+ QString file = browseRelToParent(QString(), bufferFilePath(),
qt_("Local layout file"), filter, false,
label1, dir1);
QString const old = latexModule->childDocLE->text();
QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
QStringList const filter(qt_("LyX Files (*.lyx)"));
- QString file = browseRelFile(old, docpath, title, filter, false,
+ QString file = browseRelToSub(old, docpath, title, filter, false,
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
if (!file.isEmpty())
QString const label1 = qt_("Documents|#o#O");
QString const dir1 = toqstr(lyxrc.document_path);
- return browseRelFile(input, bufpath, title, filter, false, label1, dir1);
+ return browseRelToParent(input, bufpath, title, filter, false, label1, dir1);
}
if (!clip.isDirectory())
clipdir = addName(package().system_support().absFileName(), "clipart");
- return browseRelFile(in_name, bufferFilePath(),
+ return browseRelToParent(in_name, bufferFilePath(),
title, fileFilters(QString()), false,
qt_("Clipart|#C#c"), toqstr(clipdir),
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
- return browseRelFile(in_name, docpath, title, filters, false,
+ return browseRelToParent(in_name, docpath, title, filters, false,
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
}
/** Launch a file dialog and return the chosen file.
filename: a suggested filename.
title: the title of the dialog.
- pattern: *.ps etc.
+ filters: *.ps etc.
dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
*/
QString browseFile(QString const & filename,
} // namespace frontend
-QString browseRelFile(QString const & filename, QString const & refpath,
+QString browseRelToParent(QString const & filename, QString const & relpath,
QString const & title, QStringList const & filters, bool save,
QString const & label1, QString const & dir1,
QString const & label2, QString const & dir2)
{
- QString const fname = makeAbsPath(filename, refpath);
-
+ QString const fname = makeAbsPath(filename, relpath);
QString const outname =
frontend::browseFile(fname, title, filters, save, label1, dir1, label2, dir2);
QString const reloutname =
- toqstr(makeRelPath(qstring_to_ucs4(outname), qstring_to_ucs4(refpath)));
+ toqstr(makeRelPath(qstring_to_ucs4(outname), qstring_to_ucs4(relpath)));
if (reloutname.startsWith("../"))
return outname;
}
+QString browseRelToSub(QString const & filename, QString const & relpath,
+ QString const & title, QStringList const & filters, bool save,
+ QString const & label1, QString const & dir1,
+ QString const & label2, QString const & dir2)
+{
+ QString const fname = makeAbsPath(filename, relpath);
+
+ QString const outname =
+ frontend::browseFile(fname, title, filters, save, label1, dir1, label2, dir2);
+
+ QString const reloutname =
+ toqstr(makeRelPath(qstring_to_ucs4(outname), qstring_to_ucs4(relpath)));
+
+ QString testname = reloutname;
+ testname.remove(QRegExp("^(\\.\\./)+"));
+
+ if (testname.contains("/"))
+ return outname;
+ else
+ return reloutname;
+}
+
+
/////////////////////////////////////////////////////////////////////
//
void GuiPrint::browseClicked()
{
QString file =
- browseRelFile(QString(), bufferFilePath(), qt_("Print to file"),
+ browseRelToParent(QString(), bufferFilePath(), qt_("Print to file"),
QStringList(qt_("PostScript files (*.ps)")), true);
if (!file.isEmpty()) {
fileED->setText(file);
support::FileName imageLibFileSearch(QString & dir, QString const & name,
QString const & ext = QString());
-/** Wrapper around browseFile which tries to provide a filename
- relative to relpath. If the relative path is of the form "foo.txt"
- or "bar/foo.txt", then it is returned as relative. OTOH, if it is
- of the form "../baz/foo.txt", an absolute path is returned. This is
- intended to be useful for insets which encapsulate files/
+/** Wrappers around browseFile which try to provide a filename
+ relative to relpath.
+
+\param title: title for dialog
+
+\param filters: *.ps, etc
+
+\param save: whether to save dialog info (current path, etc) for next use.
+
+The \param labelN and \param dirN arguments provide for extra buttons
+in the dialog (e.g., "Templates" and a path to that directory).
+
+The difference between the functions concerns when we think we have a
+relative path.
+
+In \c browseRelToParent, we return a relative path only if it IS NOT of
+ the form "../../foo.txt".
+
+In \c browseRelToSub, we return a relative path only if it IS of the
+ form "../../foo.txt".
*/
-QString browseRelFile(QString const & filename,
- QString const & refpath,
+QString browseRelToParent(QString const & filename,
+ QString const & relpath,
QString const & title,
QStringList const & filters,
bool save = false,
QString const & label2 = QString(),
QString const & dir2 = QString());
+QString browseRelToSub(QString const & filename,
+ QString const & relpath,
+ QString const & title,
+ QStringList const & filters,
+ bool save = false,
+ QString const & label1 = QString(),
+ QString const & dir1 = QString(),
+ QString const & label2 = QString(),
+ QString const & dir2 = QString());
/** Build filelists of all availabe bst/cls/sty-files. Done through
* kpsewhich and an external script, saved in *Files.lst.