X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fcontrollers%2FControlGraphics.C;h=b1de9231ad39bbedf71bc4f6dfd806e4603419c1;hb=b97138d0e8b5f107a7eac52fcbf5ee9d9f01af0b;hp=63aa81561b8d3d3c2b6c1af063d50d902b8e6956;hpb=7c49abda63c6e26e6ad75eef72f93ed3dee3c84b;p=lyx.git diff --git a/src/frontends/controllers/ControlGraphics.C b/src/frontends/controllers/ControlGraphics.C index 63aa81561b..b1de9231ad 100644 --- a/src/frontends/controllers/ControlGraphics.C +++ b/src/frontends/controllers/ControlGraphics.C @@ -1,5 +1,5 @@ /* This file is part of - * ====================================================== + * ====================================================== * * LyX, The Document Processor * @@ -12,18 +12,19 @@ * \author Herbert Voss */ -#include +#include #include #ifdef __GNUG__ #pragma implementation -#endif +#endif #include "ViewBase.h" #include "ButtonControllerBase.h" #include "ControlGraphics.h" #include "ControlInset.tmpl" #include "buffer.h" +#include "BufferView.h" #include "Dialogs.h" #include "LyXView.h" #include "gettext.h" @@ -33,10 +34,9 @@ #include "insets/insetgraphicsParams.h" // need operator!=() #include "support/FileInfo.h" // for FileInfo -#include "helper_funcs.h" // for browseFile +#include "helper_funcs.h" #include "support/lstrings.h" -#include "support/filetools.h" // for AddName -#include "BufferView.h" +#include "support/filetools.h" // for AddName, zippedFile using std::pair; using std::make_pair; @@ -58,7 +58,7 @@ InsetGraphicsParams const ControlGraphics::getParams(string const &) InsetGraphicsParams const ControlGraphics::getParams(InsetGraphics const & inset) { - return inset.getParams(); + return inset.params(); } @@ -81,35 +81,41 @@ void ControlGraphics::applyParamsNoInset() extern string system_lyxdir; extern string user_lyxdir; + string const ControlGraphics::Browse(string const & in_name) { - string const title = N_("Graphics"); - // FIXME: currently we need the second '|' to prevent mis-interpretation + string const title = N_("Select graphics file"); + // FIXME: currently we need the second '|' to prevent mis-interpretation string const pattern = "*.(ps|eps|png|jpeg|jpg|gif|gz)|"; - // Does user clipart directory exist? - string clipdir = AddName (user_lyxdir, "clipart"); - FileInfo fileInfo(clipdir); - if (!(fileInfo.isOK() && fileInfo.isDir())) - // No - bail out to system clipart directory - clipdir = AddName (system_lyxdir, "clipart"); + // Does user clipart directory exist? + string clipdir = AddName (user_lyxdir, "clipart"); + FileInfo fileInfo(clipdir); + if (!(fileInfo.isOK() && fileInfo.isDir())) + // No - bail out to system clipart directory + clipdir = AddName (system_lyxdir, "clipart"); pair dir1(N_("Clipart|#C#c"), clipdir); pair dir2(N_("Documents|#o#O"), string(lyxrc.document_path)); // Show the file browser dialog - return browseFile(&lv_, in_name, title, pattern, dir1, dir2); + return browseRelFile(&lv_, in_name, lv_.buffer()->filePath(), + title, pattern, dir1, dir2); } + string const ControlGraphics::readBB(string const & file) { // in a file it's an entry like %%BoundingBox:23 45 321 345 // the first number can following without a space, so we have -// to check a bit more. +// to check a bit more. // on the other hand some plot programs write the bb at the // end of the file. Than we have in the header a -// %%BoundingBox: (atend) +// %%BoundingBox: (atend) // In this case we must check until the end. - std::ifstream is(file.c_str()); - if (!contains(getExtFromContents(file),"ps")) // bb exists? + string file_ = file; + if (zippedFile(file_)) + file_ = unzipFile(file_); + std::ifstream is(file_.c_str()); + if (!contains(getExtFromContents(file_),"ps")) // bb exists? return string(); while (is) { string s; @@ -118,7 +124,7 @@ string const ControlGraphics::readBB(string const & file) string a, b, c, d; is >> a >> b >> c >> d; if (is && !contains(a,"atend")) { // bb at the end? - if (s != "%%BoundingBox:") + if (s != "%%BoundingBox:") return (s.substr(14)+" "+a+" "+b+" "+c+" "); else return (a+" "+b+" "+c+" "+d+" "); @@ -128,8 +134,10 @@ string const ControlGraphics::readBB(string const & file) return string(); } -void ControlGraphics::help() const + +bool ControlGraphics::isFilenameValid(string const & fname) const { - lv_.getDialogs()->showFile(i18nLibFileSearch("help","Graphics.hlp")); + // It may be that the filename is relative. + string const name = MakeAbsPath(fname, lv_.buffer()->filePath()); + return IsFileReadable(name); } -