symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/launch/_Launchmodule.c
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/launch/_Launchmodule.c	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,481 @@
+
+/* ========================= Module _Launch ========================= */
+
+#include "Python.h"
+
+
+
+#include "pymactoolbox.h"
+
+/* Macro to test whether a weak-loaded CFM function exists */
+#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
+        PyErr_SetString(PyExc_NotImplementedError, \
+        "Not available in this shared library/OS version"); \
+        return NULL; \
+    }} while(0)
+
+
+#if PY_VERSION_HEX < 0x02040000
+PyObject *PyMac_GetOSErrException(void);
+#endif
+
+#include <ApplicationServices/ApplicationServices.h>
+
+/*
+** Optional CFStringRef. None will pass NULL
+*/
+static int
+OptCFStringRefObj_Convert(PyObject *v, CFStringRef *spec)
+{
+        if (v == Py_None) {
+                *spec = NULL;
+                return 1;
+        }
+        return CFStringRefObj_Convert(v, spec);
+}
+
+PyObject *
+OptCFStringRefObj_New(CFStringRef it)
+{
+        if (it == NULL) {
+                Py_INCREF(Py_None);
+                return Py_None;
+        }
+        return CFStringRefObj_New(it);
+}
+
+/*
+** Convert LSItemInfoRecord to Python.
+*/
+PyObject *
+LSItemInfoRecord_New(LSItemInfoRecord *it)
+{
+#ifndef __LP64__
+        return Py_BuildValue("{s:is:O&s:O&s:O&s:O&s:i}",
+                "flags", it->flags,
+                "filetype", PyMac_BuildOSType, it->filetype,
+                "creator", PyMac_BuildOSType, it->creator,
+                "extension", OptCFStringRefObj_New, it->extension,
+                "iconFileName", OptCFStringRefObj_New, it->iconFileName,
+                "kindID", it->kindID);
+#else
+        return Py_BuildValue("{s:is:O&s:O&s:O&}",
+                "flags", it->flags,
+                "filetype", PyMac_BuildOSType, it->filetype,
+                "creator", PyMac_BuildOSType, it->creator,
+                "extension", OptCFStringRefObj_New, it->extension);
+#endif
+}
+
+static PyObject *Launch_Error;
+
+static PyObject *Launch_LSCopyItemInfoForRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inItemRef;
+	LSRequestedInfo inWhichInfo;
+	LSItemInfoRecord outItemInfo;
+	if (!PyArg_ParseTuple(_args, "O&l",
+	                      PyMac_GetFSRef, &inItemRef,
+	                      &inWhichInfo))
+		return NULL;
+	_err = LSCopyItemInfoForRef(&inItemRef,
+	                            inWhichInfo,
+	                            &outItemInfo);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     LSItemInfoRecord_New, &outItemInfo);
+	return _res;
+}
+
+static PyObject *Launch_LSCopyItemInfoForURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	LSRequestedInfo inWhichInfo;
+	LSItemInfoRecord outItemInfo;
+	if (!PyArg_ParseTuple(_args, "O&l",
+	                      CFURLRefObj_Convert, &inURL,
+	                      &inWhichInfo))
+		return NULL;
+	_err = LSCopyItemInfoForURL(inURL,
+	                            inWhichInfo,
+	                            &outItemInfo);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     LSItemInfoRecord_New, &outItemInfo);
+	return _res;
+}
+
+static PyObject *Launch_LSGetExtensionInfo(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	UniChar *inNameLen__in__;
+	UniCharCount inNameLen__len__;
+	int inNameLen__in_len__;
+	UniCharCount outExtStartIndex;
+	if (!PyArg_ParseTuple(_args, "u#",
+	                      &inNameLen__in__, &inNameLen__in_len__))
+		return NULL;
+	inNameLen__len__ = inNameLen__in_len__;
+	_err = LSGetExtensionInfo(inNameLen__len__, inNameLen__in__,
+	                          &outExtStartIndex);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("l",
+	                     outExtStartIndex);
+	return _res;
+}
+
+static PyObject *Launch_LSCopyDisplayNameForRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inRef;
+	CFStringRef outDisplayName;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      PyMac_GetFSRef, &inRef))
+		return NULL;
+	_err = LSCopyDisplayNameForRef(&inRef,
+	                               &outDisplayName);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFStringRefObj_New, outDisplayName);
+	return _res;
+}
+
+static PyObject *Launch_LSCopyDisplayNameForURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	CFStringRef outDisplayName;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      CFURLRefObj_Convert, &inURL))
+		return NULL;
+	_err = LSCopyDisplayNameForURL(inURL,
+	                               &outDisplayName);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFStringRefObj_New, outDisplayName);
+	return _res;
+}
+
+static PyObject *Launch_LSSetExtensionHiddenForRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inRef;
+	Boolean inHide;
+	if (!PyArg_ParseTuple(_args, "O&b",
+	                      PyMac_GetFSRef, &inRef,
+	                      &inHide))
+		return NULL;
+	_err = LSSetExtensionHiddenForRef(&inRef,
+	                                  inHide);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+static PyObject *Launch_LSSetExtensionHiddenForURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	Boolean inHide;
+	if (!PyArg_ParseTuple(_args, "O&b",
+	                      CFURLRefObj_Convert, &inURL,
+	                      &inHide))
+		return NULL;
+	_err = LSSetExtensionHiddenForURL(inURL,
+	                                  inHide);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+static PyObject *Launch_LSCopyKindStringForRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inFSRef;
+	CFStringRef outKindString;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      PyMac_GetFSRef, &inFSRef))
+		return NULL;
+	_err = LSCopyKindStringForRef(&inFSRef,
+	                              &outKindString);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFStringRefObj_New, outKindString);
+	return _res;
+}
+
+static PyObject *Launch_LSCopyKindStringForURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	CFStringRef outKindString;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      CFURLRefObj_Convert, &inURL))
+		return NULL;
+	_err = LSCopyKindStringForURL(inURL,
+	                              &outKindString);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFStringRefObj_New, outKindString);
+	return _res;
+}
+
+static PyObject *Launch_LSGetApplicationForItem(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inItemRef;
+	LSRolesMask inRoleMask;
+	FSRef outAppRef;
+	CFURLRef outAppURL;
+	if (!PyArg_ParseTuple(_args, "O&l",
+	                      PyMac_GetFSRef, &inItemRef,
+	                      &inRoleMask))
+		return NULL;
+	_err = LSGetApplicationForItem(&inItemRef,
+	                               inRoleMask,
+	                               &outAppRef,
+	                               &outAppURL);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&O&",
+	                     PyMac_BuildFSRef, &outAppRef,
+	                     CFURLRefObj_New, outAppURL);
+	return _res;
+}
+
+static PyObject *Launch_LSGetApplicationForInfo(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	OSType inType;
+	OSType inCreator;
+	CFStringRef inExtension;
+	LSRolesMask inRoleMask;
+	FSRef outAppRef;
+	CFURLRef outAppURL;
+	if (!PyArg_ParseTuple(_args, "O&O&O&l",
+	                      PyMac_GetOSType, &inType,
+	                      PyMac_GetOSType, &inCreator,
+	                      OptCFStringRefObj_Convert, &inExtension,
+	                      &inRoleMask))
+		return NULL;
+	_err = LSGetApplicationForInfo(inType,
+	                               inCreator,
+	                               inExtension,
+	                               inRoleMask,
+	                               &outAppRef,
+	                               &outAppURL);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&O&",
+	                     PyMac_BuildFSRef, &outAppRef,
+	                     CFURLRefObj_New, outAppURL);
+	return _res;
+}
+
+static PyObject *Launch_LSGetApplicationForURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	LSRolesMask inRoleMask;
+	FSRef outAppRef;
+	CFURLRef outAppURL;
+	if (!PyArg_ParseTuple(_args, "O&l",
+	                      CFURLRefObj_Convert, &inURL,
+	                      &inRoleMask))
+		return NULL;
+	_err = LSGetApplicationForURL(inURL,
+	                              inRoleMask,
+	                              &outAppRef,
+	                              &outAppURL);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&O&",
+	                     PyMac_BuildFSRef, &outAppRef,
+	                     CFURLRefObj_New, outAppURL);
+	return _res;
+}
+
+static PyObject *Launch_LSFindApplicationForInfo(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	OSType inCreator;
+	CFStringRef inBundleID;
+	CFStringRef inName;
+	FSRef outAppRef;
+	CFURLRef outAppURL;
+	if (!PyArg_ParseTuple(_args, "O&O&O&",
+	                      PyMac_GetOSType, &inCreator,
+	                      OptCFStringRefObj_Convert, &inBundleID,
+	                      OptCFStringRefObj_Convert, &inName))
+		return NULL;
+	_err = LSFindApplicationForInfo(inCreator,
+	                                inBundleID,
+	                                inName,
+	                                &outAppRef,
+	                                &outAppURL);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&O&",
+	                     PyMac_BuildFSRef, &outAppRef,
+	                     CFURLRefObj_New, outAppURL);
+	return _res;
+}
+
+static PyObject *Launch_LSCanRefAcceptItem(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inItemFSRef;
+	FSRef inTargetRef;
+	LSRolesMask inRoleMask;
+	LSAcceptanceFlags inFlags;
+	Boolean outAcceptsItem;
+	if (!PyArg_ParseTuple(_args, "O&O&ll",
+	                      PyMac_GetFSRef, &inItemFSRef,
+	                      PyMac_GetFSRef, &inTargetRef,
+	                      &inRoleMask,
+	                      &inFlags))
+		return NULL;
+	_err = LSCanRefAcceptItem(&inItemFSRef,
+	                          &inTargetRef,
+	                          inRoleMask,
+	                          inFlags,
+	                          &outAcceptsItem);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("b",
+	                     outAcceptsItem);
+	return _res;
+}
+
+static PyObject *Launch_LSCanURLAcceptURL(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inItemURL;
+	CFURLRef inTargetURL;
+	LSRolesMask inRoleMask;
+	LSAcceptanceFlags inFlags;
+	Boolean outAcceptsItem;
+	if (!PyArg_ParseTuple(_args, "O&O&ll",
+	                      CFURLRefObj_Convert, &inItemURL,
+	                      CFURLRefObj_Convert, &inTargetURL,
+	                      &inRoleMask,
+	                      &inFlags))
+		return NULL;
+	_err = LSCanURLAcceptURL(inItemURL,
+	                         inTargetURL,
+	                         inRoleMask,
+	                         inFlags,
+	                         &outAcceptsItem);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("b",
+	                     outAcceptsItem);
+	return _res;
+}
+
+static PyObject *Launch_LSOpenFSRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	FSRef inRef;
+	FSRef outLaunchedRef;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      PyMac_GetFSRef, &inRef))
+		return NULL;
+	_err = LSOpenFSRef(&inRef,
+	                   &outLaunchedRef);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     PyMac_BuildFSRef, &outLaunchedRef);
+	return _res;
+}
+
+static PyObject *Launch_LSOpenCFURLRef(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFURLRef inURL;
+	CFURLRef outLaunchedURL;
+	if (!PyArg_ParseTuple(_args, "O&",
+	                      CFURLRefObj_Convert, &inURL))
+		return NULL;
+	_err = LSOpenCFURLRef(inURL,
+	                      &outLaunchedURL);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFURLRefObj_New, outLaunchedURL);
+	return _res;
+}
+
+static PyMethodDef Launch_methods[] = {
+	{"LSCopyItemInfoForRef", (PyCFunction)Launch_LSCopyItemInfoForRef, 1,
+	 PyDoc_STR("(FSRef inItemRef, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")},
+	{"LSCopyItemInfoForURL", (PyCFunction)Launch_LSCopyItemInfoForURL, 1,
+	 PyDoc_STR("(CFURLRef inURL, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")},
+	{"LSGetExtensionInfo", (PyCFunction)Launch_LSGetExtensionInfo, 1,
+	 PyDoc_STR("(Buffer inNameLen) -> (UniCharCount outExtStartIndex)")},
+	{"LSCopyDisplayNameForRef", (PyCFunction)Launch_LSCopyDisplayNameForRef, 1,
+	 PyDoc_STR("(FSRef inRef) -> (CFStringRef outDisplayName)")},
+	{"LSCopyDisplayNameForURL", (PyCFunction)Launch_LSCopyDisplayNameForURL, 1,
+	 PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outDisplayName)")},
+	{"LSSetExtensionHiddenForRef", (PyCFunction)Launch_LSSetExtensionHiddenForRef, 1,
+	 PyDoc_STR("(FSRef inRef, Boolean inHide) -> None")},
+	{"LSSetExtensionHiddenForURL", (PyCFunction)Launch_LSSetExtensionHiddenForURL, 1,
+	 PyDoc_STR("(CFURLRef inURL, Boolean inHide) -> None")},
+	{"LSCopyKindStringForRef", (PyCFunction)Launch_LSCopyKindStringForRef, 1,
+	 PyDoc_STR("(FSRef inFSRef) -> (CFStringRef outKindString)")},
+	{"LSCopyKindStringForURL", (PyCFunction)Launch_LSCopyKindStringForURL, 1,
+	 PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outKindString)")},
+	{"LSGetApplicationForItem", (PyCFunction)Launch_LSGetApplicationForItem, 1,
+	 PyDoc_STR("(FSRef inItemRef, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
+	{"LSGetApplicationForInfo", (PyCFunction)Launch_LSGetApplicationForInfo, 1,
+	 PyDoc_STR("(OSType inType, OSType inCreator, CFStringRef inExtension, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
+	{"LSGetApplicationForURL", (PyCFunction)Launch_LSGetApplicationForURL, 1,
+	 PyDoc_STR("(CFURLRef inURL, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
+	{"LSFindApplicationForInfo", (PyCFunction)Launch_LSFindApplicationForInfo, 1,
+	 PyDoc_STR("(OSType inCreator, CFStringRef inBundleID, CFStringRef inName) -> (FSRef outAppRef, CFURLRef outAppURL)")},
+	{"LSCanRefAcceptItem", (PyCFunction)Launch_LSCanRefAcceptItem, 1,
+	 PyDoc_STR("(FSRef inItemFSRef, FSRef inTargetRef, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")},
+	{"LSCanURLAcceptURL", (PyCFunction)Launch_LSCanURLAcceptURL, 1,
+	 PyDoc_STR("(CFURLRef inItemURL, CFURLRef inTargetURL, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")},
+	{"LSOpenFSRef", (PyCFunction)Launch_LSOpenFSRef, 1,
+	 PyDoc_STR("(FSRef inRef) -> (FSRef outLaunchedRef)")},
+	{"LSOpenCFURLRef", (PyCFunction)Launch_LSOpenCFURLRef, 1,
+	 PyDoc_STR("(CFURLRef inURL) -> (CFURLRef outLaunchedURL)")},
+	{NULL, NULL, 0}
+};
+
+
+
+
+void init_Launch(void)
+{
+	PyObject *m;
+	PyObject *d;
+
+
+
+
+	m = Py_InitModule("_Launch", Launch_methods);
+	d = PyModule_GetDict(m);
+	Launch_Error = PyMac_GetOSErrException();
+	if (Launch_Error == NULL ||
+	    PyDict_SetItemString(d, "Error", Launch_Error) != 0)
+		return;
+}
+
+/* ======================= End module _Launch ======================= */
+