]> git.lyx.org Git - lyx.git/blobdiff - src/support/os_unix.C
hopefully fix tex2lyx linking.
[lyx.git] / src / support / os_unix.C
index b5d67f34e3f220b7f344ecac71a8f2881ed554f4..fb266089fc9bb87a0688127842e14ca14a2d41eb 100644 (file)
 
 #include "support/os.h"
 
+#ifdef __APPLE__
+#include <Carbon/Carbon.h>
+#endif
+
 using std::string;
 
 
@@ -63,6 +67,24 @@ string internal_path(string const & p)
 }
 
 
+string external_path_list(string const & p)
+{
+       return p;
+}
+
+
+string internal_path_list(string const & p)
+{
+       return p;
+}
+
+
+string latex_path(string const & p)
+{
+       return p;
+}
+
+
 bool is_absolute_path(string const & p)
 {
        return !p.empty() && p[0] == '/';
@@ -87,6 +109,81 @@ shell_type shell()
        return UNIX;
 }
 
+
+char path_separator()
+{
+       return ':';
+}
+
+
+void windows_style_tex_paths(bool)
+{}
+
+bool canAutoOpenFile(string const & ext, auto_open_mode const mode)
+{
+#ifdef __APPLE__
+// Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/
+       CFStringRef cfs_ext = CFStringCreateWithBytes(kCFAllocatorDefault,
+                                       (UInt8 *) ext.c_str(), ext.length(),
+                                       kCFStringEncodingISOLatin1, false);
+       LSRolesMask role = (mode == VIEW) ? kLSRolesViewer :  kLSRolesEditor;
+       FSRef outAppRef;
+       OSStatus status = 
+               LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator,
+                                       cfs_ext, role, &outAppRef, NULL);
+       CFRelease(cfs_ext);
+
+       return status != kLSApplicationNotFoundErr;
+#else
+       // silence compiler warnings
+       (void)ext;
+       (void)mode;
+
+       // currently, no default viewer is tried for non-windows system
+       // support for KDE/Gnome/Macintosh may be added later
+       return false;
+#endif
+}
+
+
+bool autoOpenFile(string const & filename, auto_open_mode const mode)
+{
+#ifdef __APPLE__
+// Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/
+    FSRef fileref;
+    OSStatus status = 
+        FSPathMakeRef((UInt8 *) filename.c_str(), &fileref, NULL);
+    if (status != 0)
+        return false;
+        
+       LSRolesMask role = (mode == VIEW) ? kLSRolesViewer :  kLSRolesEditor;
+       FSRef outAppRef;
+
+       status = LSGetApplicationForItem(&fileref, role, &outAppRef, NULL);
+       if (status == kLSApplicationNotFoundErr)
+               return false;
+
+       LSLaunchFSRefSpec inLaunchSpec;
+       inLaunchSpec.appRef = &outAppRef;
+       inLaunchSpec.numDocs = 1;
+       inLaunchSpec.itemRefs = &fileref;
+       inLaunchSpec.passThruParams = NULL;
+       inLaunchSpec.launchFlags = kLSLaunchDefaults;
+       inLaunchSpec.asyncRefCon = NULL;
+       status = LSOpenFromRefSpec(&inLaunchSpec, NULL);
+
+       return status != kLSApplicationNotFoundErr;     
+#else
+       // silence compiler warnings
+       (void)filename;
+       (void)mode;
+
+       // currently, no default viewer is tried for non-windows system
+       // support for KDE/Gnome/Macintosh may be added later
+       return false;
+#endif
+}
+
 } // namespace os
 } // namespace support
 } // namespace lyx