]> git.lyx.org Git - lyx.git/blobdiff - src/Format.cpp
update the ACM SIGPLAN files to latest layout and fileformat
[lyx.git] / src / Format.cpp
index 2ece9f874205208533e91f9f29d56cf480e22a40..6bd5ecb8c8e13951f8ce83a94d2c9370914f37df 100644 (file)
 #include "support/os.h"
 #include "support/Systemcall.h"
 
+// FIXME: Q_WS_MACX is not available, it's in Qt
+#ifdef USE_MACOSX_PACKAGING
+#include "support/linkback/LinkBackProxy.h"
+#endif
+
 using namespace std;
 using namespace lyx::support;
 
@@ -129,7 +134,7 @@ string Formats::getFormatFromFile(FileName const & filename) const
                return format;
 
        // try to find a format from the file extension.
-       string const ext = support::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
@@ -279,13 +284,14 @@ bool Formats::view(Buffer const & buffer, FileName const & filename,
 
        if (format_name == "dvi" &&
            !lyxrc.view_dvi_paper_option.empty()) {
-               command += ' ' + lyxrc.view_dvi_paper_option;
-               string paper_size = buffer.params().paperSizeName();
-               if (paper_size == "letter")
-                       paper_size = "us";
-               command += ' ' + paper_size;
-               if (buffer.params().orientation == ORIENTATION_LANDSCAPE)
-                       command += 'r';
+               string paper_size = buffer.params().paperSizeName(BufferParams::XDVI);
+               if (!paper_size.empty()) {
+                       command += ' ' + lyxrc.view_dvi_paper_option;
+                       command += ' ' + paper_size;
+                       if (buffer.params().orientation == ORIENTATION_LANDSCAPE &&
+                           buffer.params().papersize != PAPER_CUSTOM)
+                               command += 'r';
+               }
        }
 
        if (!contains(command, token_from_format))
@@ -321,6 +327,18 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename,
                return false;
        }
 
+       // LinkBack files look like PDF, but have the .linkback extension
+       string const ext = getExtension(filename.absFilename());
+       if (format_name == "pdf" && ext == "linkback") {
+#ifdef USE_MACOSX_PACKAGING
+               return editLinkBackFile(filename.absFilename().c_str());
+#else
+               Alert::error(_("Cannot edit file"),
+                            _("LinkBack files can only be edited on Apple Mac OSX."));
+               return false;
+#endif // USE_MACOSX_PACKAGING
+       }
+
        Format const * format = getFormat(format_name);
        if (format && format->editor().empty() &&
            format->isChildFormat())
@@ -333,6 +351,7 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename,
                                prettyName(format_name)));
                return false;
        }
+       
        // editor is 'auto'
        if (format->editor() == "auto") {
                if (os::autoOpenFile(filename.absFilename(), os::EDIT))