synched with trunk at revision 34793
[blender.git] / intern / ghost / intern / GHOST_SystemPathsCocoa.mm
1 /**\r
2  * $Id: GHOST_SystemPathsCocoa.mm 34106 2011-01-05 19:19:49Z gsrb3d $\r
3  *\r
4  * ***** BEGIN GPL LICENSE BLOCK *****\r
5  *\r
6  * This program is free software; you can redistribute it and/or\r
7  * modify it under the terms of the GNU General Public License\r
8  * as published by the Free Software Foundation; either version 2\r
9  * of the License, or (at your option) any later version. \r
10  *\r
11  * This program is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with this program; if not, write to the Free Software Foundation,\r
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
19  *\r
20  * The Original Code is Copyright (C) 2010 Blender Foundation.\r
21  * All rights reserved.\r
22  *\r
23  * \r
24  * Contributor(s): Damien Plisson 2010\r
25  *\r
26  * ***** END GPL LICENSE BLOCK *****\r
27  */\r
28 \r
29 #import <Cocoa/Cocoa.h>\r
30 \r
31 /*For the currently not ported to Cocoa keyboard layout functions (64bit & 10.6 compatible)*/\r
32 #include <Carbon/Carbon.h>\r
33 \r
34 #include <sys/time.h>\r
35 #include <sys/types.h>\r
36 #include <sys/sysctl.h>\r
37 \r
38 #include "GHOST_SystemPathsCocoa.h"\r
39 \r
40 \r
41 #pragma mark initialization/finalization\r
42 \r
43 \r
44 GHOST_SystemPathsCocoa::GHOST_SystemPathsCocoa()\r
45 {\r
46 }\r
47 \r
48 GHOST_SystemPathsCocoa::~GHOST_SystemPathsCocoa()\r
49 {\r
50 }\r
51 \r
52 \r
53 #pragma mark Base directories retrieval\r
54 \r
55 const GHOST_TUns8* GHOST_SystemPathsCocoa::getSystemDir() const\r
56 {\r
57         static GHOST_TUns8 tempPath[512] = "";\r
58         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
59         NSString *basePath;\r
60         NSArray *paths;\r
61         \r
62         paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES);\r
63         \r
64         if ([paths count] > 0)\r
65                 basePath = [paths objectAtIndex:0];\r
66         else { \r
67                 [pool drain];\r
68                 return NULL;\r
69         }\r
70         \r
71         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
72         \r
73         [pool drain];\r
74         return tempPath;\r
75 }\r
76 \r
77 const GHOST_TUns8* GHOST_SystemPathsCocoa::getUserDir() const\r
78 {\r
79         static GHOST_TUns8 tempPath[512] = "";\r
80         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
81         NSString *basePath;\r
82         NSArray *paths;\r
83 \r
84         paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);\r
85 \r
86         if ([paths count] > 0)\r
87                 basePath = [paths objectAtIndex:0];\r
88         else { \r
89                 [pool drain];\r
90                 return NULL;\r
91         }\r
92 \r
93         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
94         \r
95         [pool drain];\r
96         return tempPath;\r
97 }\r
98 \r
99 const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const\r
100 {\r
101         static GHOST_TUns8 tempPath[512] = "";\r
102         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
103         NSString *basePath;\r
104         \r
105         basePath = [[NSBundle mainBundle] bundlePath];\r
106         \r
107         if (basePath == nil) {\r
108                 [pool drain];\r
109                 return NULL;\r
110         }\r
111         \r
112         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
113         \r
114         [pool drain];\r
115         return tempPath;\r
116 }\r
117 \r
118 void GHOST_SystemPathsCocoa::addToSystemRecentFiles(const char* filename) const\r
119 {\r
120         /* XXXXX TODO: Implementation for X11 if possible */\r
121 }\r