Changeset 391 for python/trunk/Mac/Modules/folder
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Mac/Modules/folder/_Foldermodule.c
r2 r391 10 10 /* Macro to test whether a weak-loaded CFM function exists */ 11 11 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ 12 13 14 12 PyErr_SetString(PyExc_NotImplementedError, \ 13 "Not available in this shared library/OS version"); \ 14 return NULL; \ 15 15 }} while(0) 16 16 … … 23 23 static PyObject *Folder_FindFolder(PyObject *_self, PyObject *_args) 24 24 { 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 25 PyObject *_res = NULL; 26 OSErr _err; 27 short vRefNum; 28 OSType folderType; 29 Boolean createFolder; 30 FSVolumeRefNum foundVRefNum; 31 SInt32 foundDirID; 32 if (!PyArg_ParseTuple(_args, "hO&b", 33 &vRefNum, 34 PyMac_GetOSType, &folderType, 35 &createFolder)) 36 return NULL; 37 _err = FindFolder(vRefNum, 38 folderType, 39 createFolder, 40 &foundVRefNum, 41 &foundDirID); 42 if (_err != noErr) return PyMac_Error(_err); 43 _res = Py_BuildValue("hl", 44 foundVRefNum, 45 foundDirID); 46 return _res; 47 47 } 48 48 49 49 static PyObject *Folder_ReleaseFolder(PyObject *_self, PyObject *_args) 50 50 { 51 52 53 54 55 56 57 58 59 60 61 62 63 64 51 PyObject *_res = NULL; 52 OSErr _err; 53 short vRefNum; 54 OSType folderType; 55 if (!PyArg_ParseTuple(_args, "hO&", 56 &vRefNum, 57 PyMac_GetOSType, &folderType)) 58 return NULL; 59 _err = ReleaseFolder(vRefNum, 60 folderType); 61 if (_err != noErr) return PyMac_Error(_err); 62 Py_INCREF(Py_None); 63 _res = Py_None; 64 return _res; 65 65 } 66 66 67 67 static PyObject *Folder_FSFindFolder(PyObject *_self, PyObject *_args) 68 68 { 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 69 PyObject *_res = NULL; 70 OSErr _err; 71 short vRefNum; 72 OSType folderType; 73 Boolean createFolder; 74 FSRef foundRef; 75 if (!PyArg_ParseTuple(_args, "hO&b", 76 &vRefNum, 77 PyMac_GetOSType, &folderType, 78 &createFolder)) 79 return NULL; 80 _err = FSFindFolder(vRefNum, 81 folderType, 82 createFolder, 83 &foundRef); 84 if (_err != noErr) return PyMac_Error(_err); 85 _res = Py_BuildValue("O&", 86 PyMac_BuildFSRef, &foundRef); 87 return _res; 88 88 } 89 89 90 90 static PyObject *Folder_AddFolderDescriptor(PyObject *_self, PyObject *_args) 91 91 { 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 92 PyObject *_res = NULL; 93 OSErr _err; 94 FolderType foldType; 95 FolderDescFlags flags; 96 FolderClass foldClass; 97 FolderLocation foldLocation; 98 OSType badgeSignature; 99 OSType badgeType; 100 Str255 name; 101 Boolean replaceFlag; 102 if (!PyArg_ParseTuple(_args, "O&lO&O&O&O&O&b", 103 PyMac_GetOSType, &foldType, 104 &flags, 105 PyMac_GetOSType, &foldClass, 106 PyMac_GetOSType, &foldLocation, 107 PyMac_GetOSType, &badgeSignature, 108 PyMac_GetOSType, &badgeType, 109 PyMac_GetStr255, name, 110 &replaceFlag)) 111 return NULL; 112 _err = AddFolderDescriptor(foldType, 113 flags, 114 foldClass, 115 foldLocation, 116 badgeSignature, 117 badgeType, 118 name, 119 replaceFlag); 120 if (_err != noErr) return PyMac_Error(_err); 121 Py_INCREF(Py_None); 122 _res = Py_None; 123 return _res; 124 124 } 125 125 126 126 static PyObject *Folder_GetFolderTypes(PyObject *_self, PyObject *_args) 127 127 { 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 128 PyObject *_res = NULL; 129 OSErr _err; 130 UInt32 requestedTypeCount; 131 UInt32 totalTypeCount; 132 FolderType theTypes; 133 if (!PyArg_ParseTuple(_args, "l", 134 &requestedTypeCount)) 135 return NULL; 136 _err = GetFolderTypes(requestedTypeCount, 137 &totalTypeCount, 138 &theTypes); 139 if (_err != noErr) return PyMac_Error(_err); 140 _res = Py_BuildValue("lO&", 141 totalTypeCount, 142 PyMac_BuildOSType, theTypes); 143 return _res; 144 144 } 145 145 146 146 static PyObject *Folder_RemoveFolderDescriptor(PyObject *_self, PyObject *_args) 147 147 { 148 149 150 151 152 153 154 155 156 157 158 148 PyObject *_res = NULL; 149 OSErr _err; 150 FolderType foldType; 151 if (!PyArg_ParseTuple(_args, "O&", 152 PyMac_GetOSType, &foldType)) 153 return NULL; 154 _err = RemoveFolderDescriptor(foldType); 155 if (_err != noErr) return PyMac_Error(_err); 156 Py_INCREF(Py_None); 157 _res = Py_None; 158 return _res; 159 159 } 160 160 … … 162 162 static PyObject *Folder_GetFolderName(PyObject *_self, PyObject *_args) 163 163 { 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 164 PyObject *_res = NULL; 165 OSErr _err; 166 short vRefNum; 167 OSType foldType; 168 short foundVRefNum; 169 Str255 name; 170 if (!PyArg_ParseTuple(_args, "hO&O&", 171 &vRefNum, 172 PyMac_GetOSType, &foldType, 173 PyMac_GetStr255, name)) 174 return NULL; 175 _err = GetFolderName(vRefNum, 176 foldType, 177 &foundVRefNum, 178 name); 179 if (_err != noErr) return PyMac_Error(_err); 180 _res = Py_BuildValue("h", 181 foundVRefNum); 182 return _res; 183 183 } 184 184 185 185 static PyObject *Folder_AddFolderRouting(PyObject *_self, PyObject *_args) 186 186 { 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 187 PyObject *_res = NULL; 188 OSErr _err; 189 OSType fileType; 190 FolderType routeFromFolder; 191 FolderType routeToFolder; 192 RoutingFlags flags; 193 Boolean replaceFlag; 194 if (!PyArg_ParseTuple(_args, "O&O&O&lb", 195 PyMac_GetOSType, &fileType, 196 PyMac_GetOSType, &routeFromFolder, 197 PyMac_GetOSType, &routeToFolder, 198 &flags, 199 &replaceFlag)) 200 return NULL; 201 _err = AddFolderRouting(fileType, 202 routeFromFolder, 203 routeToFolder, 204 flags, 205 replaceFlag); 206 if (_err != noErr) return PyMac_Error(_err); 207 Py_INCREF(Py_None); 208 _res = Py_None; 209 return _res; 210 210 } 211 211 212 212 static PyObject *Folder_RemoveFolderRouting(PyObject *_self, PyObject *_args) 213 213 { 214 215 216 217 218 219 220 221 222 223 224 225 226 227 214 PyObject *_res = NULL; 215 OSErr _err; 216 OSType fileType; 217 FolderType routeFromFolder; 218 if (!PyArg_ParseTuple(_args, "O&O&", 219 PyMac_GetOSType, &fileType, 220 PyMac_GetOSType, &routeFromFolder)) 221 return NULL; 222 _err = RemoveFolderRouting(fileType, 223 routeFromFolder); 224 if (_err != noErr) return PyMac_Error(_err); 225 Py_INCREF(Py_None); 226 _res = Py_None; 227 return _res; 228 228 } 229 229 230 230 static PyObject *Folder_FindFolderRouting(PyObject *_self, PyObject *_args) 231 231 { 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 232 PyObject *_res = NULL; 233 OSErr _err; 234 OSType fileType; 235 FolderType routeFromFolder; 236 FolderType routeToFolder; 237 RoutingFlags flags; 238 if (!PyArg_ParseTuple(_args, "O&O&", 239 PyMac_GetOSType, &fileType, 240 PyMac_GetOSType, &routeFromFolder)) 241 return NULL; 242 _err = FindFolderRouting(fileType, 243 routeFromFolder, 244 &routeToFolder, 245 &flags); 246 if (_err != noErr) return PyMac_Error(_err); 247 _res = Py_BuildValue("O&l", 248 PyMac_BuildOSType, routeToFolder, 249 flags); 250 return _res; 251 251 } 252 252 #endif /* !__LP64__ */ … … 254 254 static PyObject *Folder_InvalidateFolderDescriptorCache(PyObject *_self, PyObject *_args) 255 255 { 256 257 258 259 260 261 262 263 264 265 266 267 268 269 256 PyObject *_res = NULL; 257 OSErr _err; 258 short vRefNum; 259 long dirID; 260 if (!PyArg_ParseTuple(_args, "hl", 261 &vRefNum, 262 &dirID)) 263 return NULL; 264 _err = InvalidateFolderDescriptorCache(vRefNum, 265 dirID); 266 if (_err != noErr) return PyMac_Error(_err); 267 Py_INCREF(Py_None); 268 _res = Py_None; 269 return _res; 270 270 } 271 271 272 272 static PyObject *Folder_IdentifyFolder(PyObject *_self, PyObject *_args) 273 273 { 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 274 PyObject *_res = NULL; 275 OSErr _err; 276 short vRefNum; 277 long dirID; 278 FolderType foldType; 279 if (!PyArg_ParseTuple(_args, "hl", 280 &vRefNum, 281 &dirID)) 282 return NULL; 283 _err = IdentifyFolder(vRefNum, 284 dirID, 285 &foldType); 286 if (_err != noErr) return PyMac_Error(_err); 287 _res = Py_BuildValue("O&", 288 PyMac_BuildOSType, foldType); 289 return _res; 290 290 } 291 291 292 292 static PyMethodDef Folder_methods[] = { 293 294 295 296 297 298 299 300 301 302 303 304 293 {"FindFolder", (PyCFunction)Folder_FindFolder, 1, 294 PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (short foundVRefNum, long foundDirID)")}, 295 {"ReleaseFolder", (PyCFunction)Folder_ReleaseFolder, 1, 296 PyDoc_STR("(short vRefNum, OSType folderType) -> None")}, 297 {"FSFindFolder", (PyCFunction)Folder_FSFindFolder, 1, 298 PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (FSRef foundRef)")}, 299 {"AddFolderDescriptor", (PyCFunction)Folder_AddFolderDescriptor, 1, 300 PyDoc_STR("(FolderType foldType, FolderDescFlags flags, FolderClass foldClass, FolderLocation foldLocation, OSType badgeSignature, OSType badgeType, Str255 name, Boolean replaceFlag) -> None")}, 301 {"GetFolderTypes", (PyCFunction)Folder_GetFolderTypes, 1, 302 PyDoc_STR("(UInt32 requestedTypeCount) -> (UInt32 totalTypeCount, FolderType theTypes)")}, 303 {"RemoveFolderDescriptor", (PyCFunction)Folder_RemoveFolderDescriptor, 1, 304 PyDoc_STR("(FolderType foldType) -> None")}, 305 305 #ifndef __LP64__ 306 307 308 309 310 311 312 313 306 {"GetFolderName", (PyCFunction)Folder_GetFolderName, 1, 307 PyDoc_STR("(short vRefNum, OSType foldType, Str255 name) -> (short foundVRefNum)")}, 308 {"AddFolderRouting", (PyCFunction)Folder_AddFolderRouting, 1, 309 PyDoc_STR("(OSType fileType, FolderType routeFromFolder, FolderType routeToFolder, RoutingFlags flags, Boolean replaceFlag) -> None")}, 310 {"RemoveFolderRouting", (PyCFunction)Folder_RemoveFolderRouting, 1, 311 PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> None")}, 312 {"FindFolderRouting", (PyCFunction)Folder_FindFolderRouting, 1, 313 PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> (FolderType routeToFolder, RoutingFlags flags)")}, 314 314 #endif /* !__LP64__ */ 315 316 317 318 319 315 {"InvalidateFolderDescriptorCache", (PyCFunction)Folder_InvalidateFolderDescriptorCache, 1, 316 PyDoc_STR("(short vRefNum, long dirID) -> None")}, 317 {"IdentifyFolder", (PyCFunction)Folder_IdentifyFolder, 1, 318 PyDoc_STR("(short vRefNum, long dirID) -> (FolderType foldType)")}, 319 {NULL, NULL, 0} 320 320 }; 321 321 … … 325 325 void init_Folder(void) 326 326 { 327 328 329 330 331 332 333 334 335 336 337 338 327 PyObject *m; 328 PyObject *d; 329 330 331 332 333 m = Py_InitModule("_Folder", Folder_methods); 334 d = PyModule_GetDict(m); 335 Folder_Error = PyMac_GetOSErrException(); 336 if (Folder_Error == NULL || 337 PyDict_SetItemString(d, "Error", Folder_Error) != 0) 338 return; 339 339 } 340 340
Note:
See TracChangeset
for help on using the changeset viewer.