]> git.lyx.org Git - lyx.git/blobdiff - src/Format.cpp
Fix compilation for platforms besides Windows
[lyx.git] / src / Format.cpp
index 6bd5ecb8c8e13951f8ce83a94d2c9370914f37df..7e82f9a3b073756f4eadaed6ebc4bc702f9ed9d7 100644 (file)
@@ -25,6 +25,8 @@
 #include "support/os.h"
 #include "support/Systemcall.h"
 
+#include <algorithm>
+
 // FIXME: Q_WS_MACX is not available, it's in Qt
 #ifdef USE_MACOSX_PACKAGING
 #include "support/linkback/LinkBackProxy.h"
@@ -134,7 +136,7 @@ string Formats::getFormatFromFile(FileName const & filename) const
                return format;
 
        // try to find a format from the file extension.
-       string const ext = getExtension(filename.absFilename());
+       string const ext = getExtension(filename.absFileName());
        if (!ext.empty()) {
                // this is ambigous if two formats have the same extension,
                // but better than nothing
@@ -246,13 +248,45 @@ void Formats::setViewer(string const & name, string const & command)
 }
 
 
+void Formats::setEditor(string const & name, string const & command)
+{
+       add(name);
+       FormatList::iterator it =
+               find_if(formatlist.begin(), formatlist.end(),
+                       FormatNamesEqual(name));
+       if (it != formatlist.end())
+               it->setEditor(command);
+}
+
+
+bool Formats::viewURL(docstring const & url) {
+       Format const * format = getFormat("html");
+       if (!format)
+               return false;
+
+       string command = libScriptSearch(format->viewer());
+
+       if (!contains(command, token_from_format))
+               command += ' ' + token_from_format;
+       command = subst(command, token_from_format, quoteName(to_utf8(url)));
+
+       LYXERR(Debug::FILES, "Executing command: " << command);
+
+       Systemcall one;
+       one.startscript(Systemcall::DontWait, command);
+
+       // we can't report any sort of error, since we aren't waiting
+       return true;
+}
+
+
 bool Formats::view(Buffer const & buffer, FileName const & filename,
                   string const & format_name) const
 {
        if (filename.empty() || !filename.exists()) {
                Alert::error(_("Cannot view file"),
                        bformat(_("File does not exist: %1$s"),
-                               from_utf8(filename.absFilename())));
+                               from_utf8(filename.absFileName())));
                return false;
        }
 
@@ -270,12 +304,12 @@ bool Formats::view(Buffer const & buffer, FileName const & filename,
        }
        // viewer is 'auto'
        if (format->viewer() == "auto") {
-               if (os::autoOpenFile(filename.absFilename(), os::VIEW))
+               if (os::autoOpenFile(filename.absFileName(), os::VIEW))
                        return true;
                else {
                        Alert::error(_("Cannot view file"),
                                bformat(_("Auto-view file %1$s failed"),
-                                       from_utf8(filename.absFilename())));
+                                       from_utf8(filename.absFileName())));
                        return false;
                }
        }
@@ -305,14 +339,9 @@ bool Formats::view(Buffer const & buffer, FileName const & filename,
        buffer.message(_("Executing command: ") + from_utf8(command));
 
        Systemcall one;
-       int const res = one.startscript(Systemcall::DontWait, command);
+       one.startscript(Systemcall::DontWait, command);
 
-       if (res) {
-               Alert::error(_("Cannot view file"),
-                            bformat(_("An error occurred whilst running %1$s"),
-                              makeDisplayPath(command, 50)));
-               return false;
-       }
+       // we can't report any sort of error, since we aren't waiting
        return true;
 }
 
@@ -323,15 +352,15 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename,
        if (filename.empty() || !filename.exists()) {
                Alert::error(_("Cannot edit file"),
                        bformat(_("File does not exist: %1$s"),
-                               from_utf8(filename.absFilename())));
+                               from_utf8(filename.absFileName())));
                return false;
        }
 
        // LinkBack files look like PDF, but have the .linkback extension
-       string const ext = getExtension(filename.absFilename());
+       string const ext = getExtension(filename.absFileName());
        if (format_name == "pdf" && ext == "linkback") {
 #ifdef USE_MACOSX_PACKAGING
-               return editLinkBackFile(filename.absFilename().c_str());
+               return editLinkBackFile(filename.absFileName().c_str());
 #else
                Alert::error(_("Cannot edit file"),
                             _("LinkBack files can only be edited on Apple Mac OSX."));
@@ -354,12 +383,12 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename,
        
        // editor is 'auto'
        if (format->editor() == "auto") {
-               if (os::autoOpenFile(filename.absFilename(), os::EDIT))
+               if (os::autoOpenFile(filename.absFileName(), os::EDIT))
                        return true;
                else {
                        Alert::error(_("Cannot edit file"),
                                bformat(_("Auto-edit file %1$s failed"),
-                                       from_utf8(filename.absFilename())));
+                                       from_utf8(filename.absFileName())));
                        return false;
                }
        }
@@ -377,14 +406,9 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename,
        buffer.message(_("Executing command: ") + from_utf8(command));
 
        Systemcall one;
-       int const res = one.startscript(Systemcall::DontWait, command);
+       one.startscript(Systemcall::DontWait, command);
 
-       if (res) {
-               Alert::error(_("Cannot edit file"),
-                            bformat(_("An error occurred whilst running %1$s"),
-                              makeDisplayPath(command, 50)));
-               return false;
-       }
+       // we can't report any sort of error, since we aren't waiting
        return true;
 }