AddressList.__str__(): Get rid of useless, and broken method. Closes
[python/dscho.git] / Mac / Modules / folder / _Foldermodule.c
blob07d7bf544b9e661ec799b701cdea89a2ca84799e
2 /* ========================= Module _Folder ========================= */
4 #include "Python.h"
8 #ifdef _WIN32
9 #include "pywintoolbox.h"
10 #else
11 #include "macglue.h"
12 #include "pymactoolbox.h"
13 #endif
15 /* Macro to test whether a weak-loaded CFM function exists */
16 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
17 PyErr_SetString(PyExc_NotImplementedError, \
18 "Not available in this shared library/OS version"); \
19 return NULL; \
20 }} while(0)
23 #ifdef WITHOUT_FRAMEWORKS
24 #include <Folders.h>
25 #else
26 #include <Carbon/Carbon.h>
27 #endif
30 static PyObject *Folder_Error;
32 static PyObject *Folder_FindFolder(PyObject *_self, PyObject *_args)
34 PyObject *_res = NULL;
35 OSErr _err;
36 short vRefNum;
37 OSType folderType;
38 Boolean createFolder;
39 short foundVRefNum;
40 long foundDirID;
41 if (!PyArg_ParseTuple(_args, "hO&b",
42 &vRefNum,
43 PyMac_GetOSType, &folderType,
44 &createFolder))
45 return NULL;
46 _err = FindFolder(vRefNum,
47 folderType,
48 createFolder,
49 &foundVRefNum,
50 &foundDirID);
51 if (_err != noErr) return PyMac_Error(_err);
52 _res = Py_BuildValue("hl",
53 foundVRefNum,
54 foundDirID);
55 return _res;
58 static PyObject *Folder_ReleaseFolder(PyObject *_self, PyObject *_args)
60 PyObject *_res = NULL;
61 OSErr _err;
62 short vRefNum;
63 OSType folderType;
64 if (!PyArg_ParseTuple(_args, "hO&",
65 &vRefNum,
66 PyMac_GetOSType, &folderType))
67 return NULL;
68 _err = ReleaseFolder(vRefNum,
69 folderType);
70 if (_err != noErr) return PyMac_Error(_err);
71 Py_INCREF(Py_None);
72 _res = Py_None;
73 return _res;
76 static PyObject *Folder_FSFindFolder(PyObject *_self, PyObject *_args)
78 PyObject *_res = NULL;
79 OSErr _err;
80 short vRefNum;
81 OSType folderType;
82 Boolean createFolder;
83 FSRef foundRef;
84 if (!PyArg_ParseTuple(_args, "hO&b",
85 &vRefNum,
86 PyMac_GetOSType, &folderType,
87 &createFolder))
88 return NULL;
89 _err = FSFindFolder(vRefNum,
90 folderType,
91 createFolder,
92 &foundRef);
93 if (_err != noErr) return PyMac_Error(_err);
94 _res = Py_BuildValue("O&",
95 PyMac_BuildFSRef, &foundRef);
96 return _res;
99 static PyObject *Folder_AddFolderDescriptor(PyObject *_self, PyObject *_args)
101 PyObject *_res = NULL;
102 OSErr _err;
103 FolderType foldType;
104 FolderDescFlags flags;
105 FolderClass foldClass;
106 FolderLocation foldLocation;
107 OSType badgeSignature;
108 OSType badgeType;
109 Str255 name;
110 Boolean replaceFlag;
111 if (!PyArg_ParseTuple(_args, "O&lO&O&O&O&O&b",
112 PyMac_GetOSType, &foldType,
113 &flags,
114 PyMac_GetOSType, &foldClass,
115 PyMac_GetOSType, &foldLocation,
116 PyMac_GetOSType, &badgeSignature,
117 PyMac_GetOSType, &badgeType,
118 PyMac_GetStr255, name,
119 &replaceFlag))
120 return NULL;
121 _err = AddFolderDescriptor(foldType,
122 flags,
123 foldClass,
124 foldLocation,
125 badgeSignature,
126 badgeType,
127 name,
128 replaceFlag);
129 if (_err != noErr) return PyMac_Error(_err);
130 Py_INCREF(Py_None);
131 _res = Py_None;
132 return _res;
135 static PyObject *Folder_GetFolderTypes(PyObject *_self, PyObject *_args)
137 PyObject *_res = NULL;
138 OSErr _err;
139 UInt32 requestedTypeCount;
140 UInt32 totalTypeCount;
141 FolderType theTypes;
142 if (!PyArg_ParseTuple(_args, "l",
143 &requestedTypeCount))
144 return NULL;
145 _err = GetFolderTypes(requestedTypeCount,
146 &totalTypeCount,
147 &theTypes);
148 if (_err != noErr) return PyMac_Error(_err);
149 _res = Py_BuildValue("lO&",
150 totalTypeCount,
151 PyMac_BuildOSType, theTypes);
152 return _res;
155 static PyObject *Folder_RemoveFolderDescriptor(PyObject *_self, PyObject *_args)
157 PyObject *_res = NULL;
158 OSErr _err;
159 FolderType foldType;
160 if (!PyArg_ParseTuple(_args, "O&",
161 PyMac_GetOSType, &foldType))
162 return NULL;
163 _err = RemoveFolderDescriptor(foldType);
164 if (_err != noErr) return PyMac_Error(_err);
165 Py_INCREF(Py_None);
166 _res = Py_None;
167 return _res;
170 static PyObject *Folder_GetFolderName(PyObject *_self, PyObject *_args)
172 PyObject *_res = NULL;
173 OSErr _err;
174 short vRefNum;
175 OSType foldType;
176 short foundVRefNum;
177 Str255 name;
178 if (!PyArg_ParseTuple(_args, "hO&O&",
179 &vRefNum,
180 PyMac_GetOSType, &foldType,
181 PyMac_GetStr255, name))
182 return NULL;
183 _err = GetFolderName(vRefNum,
184 foldType,
185 &foundVRefNum,
186 name);
187 if (_err != noErr) return PyMac_Error(_err);
188 _res = Py_BuildValue("h",
189 foundVRefNum);
190 return _res;
193 static PyObject *Folder_AddFolderRouting(PyObject *_self, PyObject *_args)
195 PyObject *_res = NULL;
196 OSErr _err;
197 OSType fileType;
198 FolderType routeFromFolder;
199 FolderType routeToFolder;
200 RoutingFlags flags;
201 Boolean replaceFlag;
202 if (!PyArg_ParseTuple(_args, "O&O&O&lb",
203 PyMac_GetOSType, &fileType,
204 PyMac_GetOSType, &routeFromFolder,
205 PyMac_GetOSType, &routeToFolder,
206 &flags,
207 &replaceFlag))
208 return NULL;
209 _err = AddFolderRouting(fileType,
210 routeFromFolder,
211 routeToFolder,
212 flags,
213 replaceFlag);
214 if (_err != noErr) return PyMac_Error(_err);
215 Py_INCREF(Py_None);
216 _res = Py_None;
217 return _res;
220 static PyObject *Folder_RemoveFolderRouting(PyObject *_self, PyObject *_args)
222 PyObject *_res = NULL;
223 OSErr _err;
224 OSType fileType;
225 FolderType routeFromFolder;
226 if (!PyArg_ParseTuple(_args, "O&O&",
227 PyMac_GetOSType, &fileType,
228 PyMac_GetOSType, &routeFromFolder))
229 return NULL;
230 _err = RemoveFolderRouting(fileType,
231 routeFromFolder);
232 if (_err != noErr) return PyMac_Error(_err);
233 Py_INCREF(Py_None);
234 _res = Py_None;
235 return _res;
238 static PyObject *Folder_FindFolderRouting(PyObject *_self, PyObject *_args)
240 PyObject *_res = NULL;
241 OSErr _err;
242 OSType fileType;
243 FolderType routeFromFolder;
244 FolderType routeToFolder;
245 RoutingFlags flags;
246 if (!PyArg_ParseTuple(_args, "O&O&",
247 PyMac_GetOSType, &fileType,
248 PyMac_GetOSType, &routeFromFolder))
249 return NULL;
250 _err = FindFolderRouting(fileType,
251 routeFromFolder,
252 &routeToFolder,
253 &flags);
254 if (_err != noErr) return PyMac_Error(_err);
255 _res = Py_BuildValue("O&l",
256 PyMac_BuildOSType, routeToFolder,
257 flags);
258 return _res;
261 static PyObject *Folder_InvalidateFolderDescriptorCache(PyObject *_self, PyObject *_args)
263 PyObject *_res = NULL;
264 OSErr _err;
265 short vRefNum;
266 long dirID;
267 if (!PyArg_ParseTuple(_args, "hl",
268 &vRefNum,
269 &dirID))
270 return NULL;
271 _err = InvalidateFolderDescriptorCache(vRefNum,
272 dirID);
273 if (_err != noErr) return PyMac_Error(_err);
274 Py_INCREF(Py_None);
275 _res = Py_None;
276 return _res;
279 static PyObject *Folder_IdentifyFolder(PyObject *_self, PyObject *_args)
281 PyObject *_res = NULL;
282 OSErr _err;
283 short vRefNum;
284 long dirID;
285 FolderType foldType;
286 if (!PyArg_ParseTuple(_args, "hl",
287 &vRefNum,
288 &dirID))
289 return NULL;
290 _err = IdentifyFolder(vRefNum,
291 dirID,
292 &foldType);
293 if (_err != noErr) return PyMac_Error(_err);
294 _res = Py_BuildValue("O&",
295 PyMac_BuildOSType, foldType);
296 return _res;
299 static PyMethodDef Folder_methods[] = {
300 {"FindFolder", (PyCFunction)Folder_FindFolder, 1,
301 PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (short foundVRefNum, long foundDirID)")},
302 {"ReleaseFolder", (PyCFunction)Folder_ReleaseFolder, 1,
303 PyDoc_STR("(short vRefNum, OSType folderType) -> None")},
304 {"FSFindFolder", (PyCFunction)Folder_FSFindFolder, 1,
305 PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (FSRef foundRef)")},
306 {"AddFolderDescriptor", (PyCFunction)Folder_AddFolderDescriptor, 1,
307 PyDoc_STR("(FolderType foldType, FolderDescFlags flags, FolderClass foldClass, FolderLocation foldLocation, OSType badgeSignature, OSType badgeType, Str255 name, Boolean replaceFlag) -> None")},
308 {"GetFolderTypes", (PyCFunction)Folder_GetFolderTypes, 1,
309 PyDoc_STR("(UInt32 requestedTypeCount) -> (UInt32 totalTypeCount, FolderType theTypes)")},
310 {"RemoveFolderDescriptor", (PyCFunction)Folder_RemoveFolderDescriptor, 1,
311 PyDoc_STR("(FolderType foldType) -> None")},
312 {"GetFolderName", (PyCFunction)Folder_GetFolderName, 1,
313 PyDoc_STR("(short vRefNum, OSType foldType, Str255 name) -> (short foundVRefNum)")},
314 {"AddFolderRouting", (PyCFunction)Folder_AddFolderRouting, 1,
315 PyDoc_STR("(OSType fileType, FolderType routeFromFolder, FolderType routeToFolder, RoutingFlags flags, Boolean replaceFlag) -> None")},
316 {"RemoveFolderRouting", (PyCFunction)Folder_RemoveFolderRouting, 1,
317 PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> None")},
318 {"FindFolderRouting", (PyCFunction)Folder_FindFolderRouting, 1,
319 PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> (FolderType routeToFolder, RoutingFlags flags)")},
320 {"InvalidateFolderDescriptorCache", (PyCFunction)Folder_InvalidateFolderDescriptorCache, 1,
321 PyDoc_STR("(short vRefNum, long dirID) -> None")},
322 {"IdentifyFolder", (PyCFunction)Folder_IdentifyFolder, 1,
323 PyDoc_STR("(short vRefNum, long dirID) -> (FolderType foldType)")},
324 {NULL, NULL, 0}
330 void init_Folder(void)
332 PyObject *m;
333 PyObject *d;
338 m = Py_InitModule("_Folder", Folder_methods);
339 d = PyModule_GetDict(m);
340 Folder_Error = PyMac_GetOSErrException();
341 if (Folder_Error == NULL ||
342 PyDict_SetItemString(d, "Error", Folder_Error) != 0)
343 return;
346 /* ======================= End module _Folder ======================= */