mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Fix bug #7540. Patch based upon one added to bug report by Max Funk.
Basically, patch adds routine that calcuates relative paths to parent rather than child directories. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38915 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
5c0697ea17
commit
82d6524298
@ -435,7 +435,7 @@ QString GuiBibtex::browseBib(QString const & in_name) const
|
|||||||
QString const label1 = qt_("Documents|#o#O");
|
QString const label1 = qt_("Documents|#o#O");
|
||||||
QString const dir1 = toqstr(lyxrc.document_path);
|
QString const dir1 = toqstr(lyxrc.document_path);
|
||||||
QStringList const filter(qt_("BibTeX Databases (*.bib)"));
|
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);
|
qt_("Select a BibTeX database to add"), filter, false, label1, dir1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -445,7 +445,7 @@ QString GuiBibtex::browseBst(QString const & in_name) const
|
|||||||
QString const label1 = qt_("Documents|#o#O");
|
QString const label1 = qt_("Documents|#o#O");
|
||||||
QString const dir1 = toqstr(lyxrc.document_path);
|
QString const dir1 = toqstr(lyxrc.document_path);
|
||||||
QStringList const filter(qt_("BibTeX Styles (*.bst)"));
|
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);
|
qt_("Select a BibTeX style"), filter, false, label1, dir1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,11 +158,11 @@ QString GuiCompare::browse(QString const & in_name) const
|
|||||||
QString filename;
|
QString filename;
|
||||||
if (lyxview().documentBufferView()) {
|
if (lyxview().documentBufferView()) {
|
||||||
QString path = bufferFilePath();
|
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));
|
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
||||||
} else {
|
} else {
|
||||||
QString path = toqstr(lyxrc.document_path);
|
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));
|
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
||||||
filename = makeAbsPath(rel_filename, path);
|
filename = makeAbsPath(rel_filename, path);
|
||||||
}
|
}
|
||||||
|
@ -1817,7 +1817,7 @@ void GuiDocument::browseLayout()
|
|||||||
QString const label1 = qt_("Layouts|#o#O");
|
QString const label1 = qt_("Layouts|#o#O");
|
||||||
QString const dir1 = toqstr(lyxrc.document_path);
|
QString const dir1 = toqstr(lyxrc.document_path);
|
||||||
QStringList const filter(qt_("LyX Layout (*.layout)"));
|
QStringList const filter(qt_("LyX Layout (*.layout)"));
|
||||||
QString file = browseRelFile(QString(), bufferFilePath(),
|
QString file = browseRelToParent(QString(), bufferFilePath(),
|
||||||
qt_("Local layout file"), filter, false,
|
qt_("Local layout file"), filter, false,
|
||||||
label1, dir1);
|
label1, dir1);
|
||||||
|
|
||||||
@ -1873,7 +1873,7 @@ void GuiDocument::browseMaster()
|
|||||||
QString const old = latexModule->childDocLE->text();
|
QString const old = latexModule->childDocLE->text();
|
||||||
QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
|
QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
|
||||||
QStringList const filter(qt_("LyX Files (*.lyx)"));
|
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));
|
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
||||||
|
|
||||||
if (!file.isEmpty())
|
if (!file.isEmpty())
|
||||||
|
@ -639,7 +639,7 @@ QString GuiExternal::browse(QString const & input,
|
|||||||
QString const label1 = qt_("Documents|#o#O");
|
QString const label1 = qt_("Documents|#o#O");
|
||||||
QString const dir1 = toqstr(lyxrc.document_path);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -793,7 +793,7 @@ QString GuiGraphics::browse(QString const & in_name) const
|
|||||||
if (!clip.isDirectory())
|
if (!clip.isDirectory())
|
||||||
clipdir = addName(package().system_support().absFileName(), "clipart");
|
clipdir = addName(package().system_support().absFileName(), "clipart");
|
||||||
|
|
||||||
return browseRelFile(in_name, bufferFilePath(),
|
return browseRelToParent(in_name, bufferFilePath(),
|
||||||
title, fileFilters(QString()), false,
|
title, fileFilters(QString()), false,
|
||||||
qt_("Clipart|#C#c"), toqstr(clipdir),
|
qt_("Clipart|#C#c"), toqstr(clipdir),
|
||||||
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
||||||
|
@ -328,7 +328,7 @@ QString GuiInclude::browse(QString const & in_name, Type in_type) const
|
|||||||
|
|
||||||
QString const docpath = toqstr(support::onlyPath(buffer().absFileName()));
|
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));
|
qt_("Documents|#o#O"), toqstr(lyxrc.document_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ namespace frontend {
|
|||||||
/** Launch a file dialog and return the chosen file.
|
/** Launch a file dialog and return the chosen file.
|
||||||
filename: a suggested filename.
|
filename: a suggested filename.
|
||||||
title: the title of the dialog.
|
title: the title of the dialog.
|
||||||
pattern: *.ps etc.
|
filters: *.ps etc.
|
||||||
dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
|
dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
|
||||||
*/
|
*/
|
||||||
QString browseFile(QString const & filename,
|
QString browseFile(QString const & filename,
|
||||||
@ -194,19 +194,18 @@ QString browseDir(QString const & pathname,
|
|||||||
} // namespace frontend
|
} // 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 & title, QStringList const & filters, bool save,
|
||||||
QString const & label1, QString const & dir1,
|
QString const & label1, QString const & dir1,
|
||||||
QString const & label2, QString const & dir2)
|
QString const & label2, QString const & dir2)
|
||||||
{
|
{
|
||||||
QString const fname = makeAbsPath(filename, refpath);
|
QString const fname = makeAbsPath(filename, relpath);
|
||||||
|
|
||||||
|
|
||||||
QString const outname =
|
QString const outname =
|
||||||
frontend::browseFile(fname, title, filters, save, label1, dir1, label2, dir2);
|
frontend::browseFile(fname, title, filters, save, label1, dir1, label2, dir2);
|
||||||
|
|
||||||
QString const reloutname =
|
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("../"))
|
if (reloutname.startsWith("../"))
|
||||||
return outname;
|
return outname;
|
||||||
@ -215,6 +214,29 @@ QString browseRelFile(QString const & filename, QString const & refpath,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -84,7 +84,7 @@ void GuiPrint::change_adaptor()
|
|||||||
void GuiPrint::browseClicked()
|
void GuiPrint::browseClicked()
|
||||||
{
|
{
|
||||||
QString file =
|
QString file =
|
||||||
browseRelFile(QString(), bufferFilePath(), qt_("Print to file"),
|
browseRelToParent(QString(), bufferFilePath(), qt_("Print to file"),
|
||||||
QStringList(qt_("PostScript files (*.ps)")), true);
|
QStringList(qt_("PostScript files (*.ps)")), true);
|
||||||
if (!file.isEmpty()) {
|
if (!file.isEmpty()) {
|
||||||
fileED->setText(file);
|
fileED->setText(file);
|
||||||
|
@ -84,14 +84,29 @@ support::FileName libFileSearch(QString const & dir, QString const & name,
|
|||||||
support::FileName imageLibFileSearch(QString & dir, QString const & name,
|
support::FileName imageLibFileSearch(QString & dir, QString const & name,
|
||||||
QString const & ext = QString());
|
QString const & ext = QString());
|
||||||
|
|
||||||
/** Wrapper around browseFile which tries to provide a filename
|
/** Wrappers around browseFile which try to provide a filename
|
||||||
relative to relpath. If the relative path is of the form "foo.txt"
|
relative to relpath.
|
||||||
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
|
\param title: title for dialog
|
||||||
intended to be useful for insets which encapsulate files/
|
|
||||||
|
\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 browseRelToParent(QString const & filename,
|
||||||
QString const & refpath,
|
QString const & relpath,
|
||||||
QString const & title,
|
QString const & title,
|
||||||
QStringList const & filters,
|
QStringList const & filters,
|
||||||
bool save = false,
|
bool save = false,
|
||||||
@ -100,6 +115,15 @@ QString browseRelFile(QString const & filename,
|
|||||||
QString const & label2 = QString(),
|
QString const & label2 = QString(),
|
||||||
QString const & dir2 = 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
|
/** Build filelists of all availabe bst/cls/sty-files. Done through
|
||||||
* kpsewhich and an external script, saved in *Files.lst.
|
* kpsewhich and an external script, saved in *Files.lst.
|
||||||
|
Loading…
Reference in New Issue
Block a user