synched with trunk at revision 34793
authorNick Samarin <nicks1987@bigmir.net>
Wed, 16 Feb 2011 16:55:16 +0000 (16:55 +0000)
committerNick Samarin <nicks1987@bigmir.net>
Wed, 16 Feb 2011 16:55:16 +0000 (16:55 +0000)
1  2 
intern/ghost/GHOST_ISystemPaths.h
intern/ghost/intern/GHOST_ISystemPaths.cpp
intern/ghost/intern/GHOST_SystemPaths.h
intern/ghost/intern/GHOST_SystemPathsCarbon.cpp
intern/ghost/intern/GHOST_SystemPathsCarbon.h
intern/ghost/intern/GHOST_SystemPathsCocoa.h
intern/ghost/intern/GHOST_SystemPathsCocoa.mm
intern/ghost/intern/GHOST_SystemPathsWin32.cpp
intern/ghost/intern/GHOST_SystemPathsWin32.h
intern/ghost/intern/GHOST_SystemPathsX11.cpp
intern/ghost/intern/GHOST_SystemPathsX11.h

index 0000000,7ebaf8a..9e4ad6f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,98 +1,98 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_ISystemPaths.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2009 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Blender Foundation
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_ISYSTEMPATHS_H_
+ #define _GHOST_ISYSTEMPATHS_H_
+ #include "GHOST_Types.h"
+ class GHOST_ISystemPaths
+ {
+ public:
+       /**
+        * Creates the one and only system.
+        * @return An indication of success.
+        */
+       static GHOST_TSuccess create();
+       /**
+        * Disposes the one and only system.
+        * @return An indication of success.
+        */
+       static GHOST_TSuccess dispose();
+       /**
+        * Returns a pointer to the one and only system (nil if it hasn't been created).
+        * @return A pointer to the system.
+        */
+       static GHOST_ISystemPaths* get();
+ protected:
+       /**
+        * Constructor.
+        * Protected default constructor to force use of static createSystem member.
+        */
+       GHOST_ISystemPaths() {}
+       /**
+        * Destructor.
+        * Protected default constructor to force use of static dispose member.
+        */
+       virtual ~GHOST_ISystemPaths() {}
+ public:
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/blender/).
+        */
+       virtual const GHOST_TUns8* getSystemDir() const = 0;
+       /**
+        * Determine the base dir in which user configuration is stored, not including versioning.
+        * If needed, it will create the base directory.
+        * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+        */
+       virtual const GHOST_TUns8* getUserDir() const = 0;
+       /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        virtual const GHOST_TUns8* getBinaryDir() const = 0;
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        virtual void addToSystemRecentFiles(const char* filename) const = 0;
+ private:
+       /** The one and only system paths*/
+       static GHOST_ISystemPaths* m_systemPaths;
+ };
+ #endif
index 0000000,1deb23e..b9227c3
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,104 +1,104 @@@
 - * $Id$
+ /**
 - * $Id$
++ * $Id: GHOST_ISystemPaths.cpp 34106 2011-01-05 19:19:49Z gsrb3d $
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+  * All rights reserved.
+  *
+  * The Original Code is: all of this file.
+  *
+  * Contributor(s): none yet.
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ /**
++ * $Id: GHOST_ISystemPaths.cpp 34106 2011-01-05 19:19:49Z gsrb3d $
+  * Copyright (C) 2001 NaN Technologies B.V.
+  * @author    Maarten Gribnau
+  * @date      May 7, 2001
+  */
+ #include "GHOST_ISystemPaths.h"
+ #ifdef WIN32
+ #     include "GHOST_SystemPathsWin32.h"
+ #else
+ #     ifdef __APPLE__
+ #             ifdef GHOST_COCOA
+ #                     include "GHOST_SystemPathsCocoa.h"
+ #             else
+ #                     include "GHOST_SystemPathsCarbon.h"
+ #             endif
+ #     else
+ #             include "GHOST_SystemPathsX11.h"
+ #     endif
+ #endif
+ GHOST_ISystemPaths* GHOST_ISystemPaths::m_systemPaths = 0;
+ GHOST_TSuccess GHOST_ISystemPaths::create()
+ {
+       GHOST_TSuccess success;
+       if (!m_systemPaths) {
+ #ifdef WIN32
+               m_systemPaths = new GHOST_SystemPathsWin32 ();
+ #else
+ #     ifdef __APPLE__
+ #             ifdef GHOST_COCOA
+                       m_systemPaths = new GHOST_SystemPathsCocoa ();
+ #             else
+                       m_systemPaths = new GHOST_SystemPathsarbon ();
+ #             endif
+ #     else 
+               m_systemPaths = new GHOST_SystemPathsX11 ();
+ #     endif
+ #endif 
+               success = m_systemPaths != 0 ? GHOST_kSuccess : GHOST_kFailure;
+       }
+       else {
+               success = GHOST_kFailure;
+       }
+       return success;
+ }
+ GHOST_TSuccess GHOST_ISystemPaths::dispose()
+ {
+       GHOST_TSuccess success = GHOST_kSuccess;
+       if (m_systemPaths) {
+               delete m_systemPaths;
+               m_systemPaths = 0;
+       }
+       else {
+               success = GHOST_kFailure;
+       }
+       return success;
+ }
+ GHOST_ISystemPaths* GHOST_ISystemPaths::get()
+ {
+       if (!m_systemPaths) {
+               create();
+       }
+       return m_systemPaths;
+ }
index 0000000,4ea2976..3739bfb
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,79 +1,79 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPaths.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2009 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Blender Foundation
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_SYSTEMPATHS_H_
+ #define _GHOST_SYSTEMPATHS_H_
+ #include "GHOST_ISystemPaths.h"
+ class GHOST_SystemPaths : public GHOST_ISystemPaths
+ {
+ protected:
+       /**
+        * Constructor.
+        * Protected default constructor to force use of static createSystem member.
+        */
+       GHOST_SystemPaths(){};
+       /**
+        * Destructor.
+        * Protected default constructor to force use of static dispose member.
+        */
+       virtual ~GHOST_SystemPaths(){};
+ public:
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/blender/).
+        */
+       virtual const GHOST_TUns8* getSystemDir() const = 0;
+     /**
+         * Determine the base dir in which user configuration is stored, not including versioning.
+         * If needed, it will create the base directory.
+         * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+         */
+       virtual const GHOST_TUns8* getUserDir() const = 0;
+       /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        virtual const GHOST_TUns8* getBinaryDir() const = 0;
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        virtual void addToSystemRecentFiles(const char* filename) const = 0;
+ };
+ #endif
index 0000000,31a2256..8cdf957
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,83 +1,83 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsCarbon.cpp 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2009 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Damien Plisson 2010
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #include <Carbon/Carbon.h>
+ #include <ApplicationServices/ApplicationServices.h>
+ #include "GHOST_SystemPathsCarbon.h"
+ /***/
+ GHOST_SystemPathsCarbon::GHOST_SystemPathsCarbon() 
+ {
+ }
+ GHOST_SystemPathsCarbon::~GHOST_SystemPathsCarbon()
+ {
+ }
+ const GHOST_TUns8* GHOST_SystemPathsCarbon::getSystemDir() const
+ {
+       return (GHOST_TUns8*)"/Library/Application Support";
+ }
+ const GHOST_TUns8* GHOST_SystemPathsCarbon::getUserDir() const
+ {
+       static char usrPath[256] = "";
+       char* env = getenv("HOME");
+       
+       if (env) {
+               strncpy(usrPath, env, 245);
+               usrPath[245]=0;
+               strcat(usrPath, "/Library/Application Support");
+               return (GHOST_TUns8*) usrPath;
+       }
+       else
+               return NULL;
+ }
+ const GHOST_TUns8* GHOST_SystemPathsCarbon::getBinaryDir() const
+ {
+       CFURLRef bundleURL;
+       CFStringRef pathStr;
+       static char path[256];
+       CFBundleRef mainBundle = CFBundleGetMainBundle();
+       
+       bundleURL = CFBundleCopyBundleURL(mainBundle);
+       pathStr = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle);
+       CFStringGetCString(pathStr, path, 255, kCFStringEncodingASCII);
+       CFRelease(pathStr);
+       CFRelease(bundleURL);
+       return (GHOST_TUns8*)path;
+ }
+ void GHOST_SystemPathsCarbon::addToSystemRecentFiles(const char* filename) const
+ {
+       /* XXXXX TODO: Implementation for Carbon if possible */
+ }
index 0000000,f7fd54d..14e247e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,87 +1,87 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsCarbon.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2010 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Damien Plisson 2010
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_SYSTEM_PATHS_CARBON_H_
+ #define _GHOST_SYSTEM_PATHS_CARBON_H_
+ #ifndef __APPLE__
+ #error Apple OSX only!
+ #endif // __APPLE__
+ #include <Carbon/Carbon.h>
+ #include "GHOST_SystemPaths.h"
+ /**
+  * OSX/Carbon Implementation of GHOST_SystemPaths class.
+  * @see GHOST_System.
+  * @author    Andrea Weikert
+  * @date      Aug 1, 2010
+  */
+ class GHOST_SystemPathsCarbon : public GHOST_SystemPaths {
+ public:
+     /**
+      * Constructor.
+      */
+     GHOST_SystemPathsCarbon();
+     
+     /** 
+      * Destructor.
+      */
+     ~GHOST_SystemPathsCarbon();
+     
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/blender/).
+        */
+       virtual const GHOST_TUns8* getSystemDir() const;
+       /**
+        * Determine the base dir in which user configuration is stored, not including versioning.
+        * If needed, it will create the base directory.
+        * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+        */
+       virtual const GHOST_TUns8* getUserDir() const;
+       /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        virtual const GHOST_TUns8* getBinaryDir() const;
+       /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
+ };
+ #endif // _GHOST_SYSTEM_CARBON_H_
index 0000000,39365cd..6361d8d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,79 +1,79 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsCocoa.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2010 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Damien Plisson 2010
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_SYSTEM_PATHS_COCOA_H_
+ #define _GHOST_SYSTEM_PATHS_COCOA_H_
+ #ifndef __APPLE__
+ #error Apple OSX only!
+ #endif // __APPLE__
+ #include "GHOST_SystemPaths.h"
+ class GHOST_SystemPathsCocoa : public GHOST_SystemPaths {
+ public:
+     /**
+      * Constructor.
+      */
+     GHOST_SystemPathsCocoa();
+     
+     /** 
+      * Destructor.
+      */
+     ~GHOST_SystemPathsCocoa();
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/blender/).
+        */
+       virtual const GHOST_TUns8* getSystemDir() const;
+       /**
+        * Determine the base dir in which user configuration is stored, not including versioning.
+        * If needed, it will create the base directory.
+        * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+        */
+       virtual const GHOST_TUns8* getUserDir() const;
+       /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        virtual const GHOST_TUns8* getBinaryDir() const;
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
+ };
+ #endif // _GHOST_SYSTEM_COCOA_H_
index 0000000,238ce1a..e9ce1ea
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,121 +1,121 @@@
 -/**
 - * $Id$
 - *
 - * ***** BEGIN GPL LICENSE BLOCK *****
 - *
 - * This program is free software; you can redistribute it and/or
 - * modify it under the terms of the GNU General Public License
 - * as published by the Free Software Foundation; either version 2
 - * of the License, or (at your option) any later version. 
 - *
 - * This program is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software Foundation,
 - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 - *
 - * The Original Code is Copyright (C) 2010 Blender Foundation.
 - * All rights reserved.
 - *
 - * 
 - * Contributor(s): Damien Plisson 2010
 - *
 - * ***** END GPL LICENSE BLOCK *****
 - */
 -
 -#import <Cocoa/Cocoa.h>
 -
 -/*For the currently not ported to Cocoa keyboard layout functions (64bit & 10.6 compatible)*/
 -#include <Carbon/Carbon.h>
 -
 -#include <sys/time.h>
 -#include <sys/types.h>
 -#include <sys/sysctl.h>
 -
 -#include "GHOST_SystemPathsCocoa.h"
 -
 -
 -#pragma mark initialization/finalization
 -
 -
 -GHOST_SystemPathsCocoa::GHOST_SystemPathsCocoa()
 -{
 -}
 -
 -GHOST_SystemPathsCocoa::~GHOST_SystemPathsCocoa()
 -{
 -}
 -
 -
 -#pragma mark Base directories retrieval
 -
 -const GHOST_TUns8* GHOST_SystemPathsCocoa::getSystemDir() const
 -{
 -      static GHOST_TUns8 tempPath[512] = "";
 -      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 -      NSString *basePath;
 -      NSArray *paths;
 -      
 -      paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES);
 -      
 -      if ([paths count] > 0)
 -              basePath = [paths objectAtIndex:0];
 -      else { 
 -              [pool drain];
 -              return NULL;
 -      }
 -      
 -      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
 -      
 -      [pool drain];
 -      return tempPath;
 -}
 -
 -const GHOST_TUns8* GHOST_SystemPathsCocoa::getUserDir() const
 -{
 -      static GHOST_TUns8 tempPath[512] = "";
 -      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 -      NSString *basePath;
 -      NSArray *paths;
 -
 -      paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
 -
 -      if ([paths count] > 0)
 -              basePath = [paths objectAtIndex:0];
 -      else { 
 -              [pool drain];
 -              return NULL;
 -      }
 -
 -      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
 -      
 -      [pool drain];
 -      return tempPath;
 -}
 -
 -const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const
 -{
 -      static GHOST_TUns8 tempPath[512] = "";
 -      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 -      NSString *basePath;
 -      
 -      basePath = [[NSBundle mainBundle] bundlePath];
 -      
 -      if (basePath == nil) {
 -              [pool drain];
 -              return NULL;
 -      }
 -      
 -      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
 -      
 -      [pool drain];
 -      return tempPath;
 -}
 -
 -void GHOST_SystemPathsCocoa::addToSystemRecentFiles(const char* filename) const
 -{
 -      /* XXXXX TODO: Implementation for X11 if possible */
 -}
++/**\r
++ * $Id: GHOST_SystemPathsCocoa.mm 34106 2011-01-05 19:19:49Z gsrb3d $\r
++ *\r
++ * ***** BEGIN GPL LICENSE BLOCK *****\r
++ *\r
++ * This program is free software; you can redistribute it and/or\r
++ * modify it under the terms of the GNU General Public License\r
++ * as published by the Free Software Foundation; either version 2\r
++ * of the License, or (at your option) any later version. \r
++ *\r
++ * This program is distributed in the hope that it will be useful,\r
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
++ * GNU General Public License for more details.\r
++ *\r
++ * You should have received a copy of the GNU General Public License\r
++ * along with this program; if not, write to the Free Software Foundation,\r
++ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
++ *\r
++ * The Original Code is Copyright (C) 2010 Blender Foundation.\r
++ * All rights reserved.\r
++ *\r
++ * \r
++ * Contributor(s): Damien Plisson 2010\r
++ *\r
++ * ***** END GPL LICENSE BLOCK *****\r
++ */\r
++\r
++#import <Cocoa/Cocoa.h>\r
++\r
++/*For the currently not ported to Cocoa keyboard layout functions (64bit & 10.6 compatible)*/\r
++#include <Carbon/Carbon.h>\r
++\r
++#include <sys/time.h>\r
++#include <sys/types.h>\r
++#include <sys/sysctl.h>\r
++\r
++#include "GHOST_SystemPathsCocoa.h"\r
++\r
++\r
++#pragma mark initialization/finalization\r
++\r
++\r
++GHOST_SystemPathsCocoa::GHOST_SystemPathsCocoa()\r
++{\r
++}\r
++\r
++GHOST_SystemPathsCocoa::~GHOST_SystemPathsCocoa()\r
++{\r
++}\r
++\r
++\r
++#pragma mark Base directories retrieval\r
++\r
++const GHOST_TUns8* GHOST_SystemPathsCocoa::getSystemDir() const\r
++{\r
++      static GHOST_TUns8 tempPath[512] = "";\r
++      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
++      NSString *basePath;\r
++      NSArray *paths;\r
++      \r
++      paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES);\r
++      \r
++      if ([paths count] > 0)\r
++              basePath = [paths objectAtIndex:0];\r
++      else { \r
++              [pool drain];\r
++              return NULL;\r
++      }\r
++      \r
++      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
++      \r
++      [pool drain];\r
++      return tempPath;\r
++}\r
++\r
++const GHOST_TUns8* GHOST_SystemPathsCocoa::getUserDir() const\r
++{\r
++      static GHOST_TUns8 tempPath[512] = "";\r
++      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
++      NSString *basePath;\r
++      NSArray *paths;\r
++\r
++      paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);\r
++\r
++      if ([paths count] > 0)\r
++              basePath = [paths objectAtIndex:0];\r
++      else { \r
++              [pool drain];\r
++              return NULL;\r
++      }\r
++\r
++      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
++      \r
++      [pool drain];\r
++      return tempPath;\r
++}\r
++\r
++const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const\r
++{\r
++      static GHOST_TUns8 tempPath[512] = "";\r
++      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\r
++      NSString *basePath;\r
++      \r
++      basePath = [[NSBundle mainBundle] bundlePath];\r
++      \r
++      if (basePath == nil) {\r
++              [pool drain];\r
++              return NULL;\r
++      }\r
++      \r
++      strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);\r
++      \r
++      [pool drain];\r
++      return tempPath;\r
++}\r
++\r
++void GHOST_SystemPathsCocoa::addToSystemRecentFiles(const char* filename) const\r
++{\r
++      /* XXXXX TODO: Implementation for X11 if possible */\r
++}\r
index 0000000,a965906..b74ea86
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,110 +1,110 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsWin32.cpp 34372 2011-01-17 19:39:25Z elubie $
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2011 Blender Foundation.
+  * All rights reserved.
+  * 
+  * Contributor(s): Blender Foundation
+  *                 Andrea Weikert
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #include "GHOST_SystemPathsWin32.h"
+ #define WIN32_LEAN_AND_MEAN
+ #ifdef _WIN32_IE
+ #undef _WIN32_IE
+ #endif
+ #define _WIN32_IE 0x0501
+ #include <windows.h>
+ #include <shlobj.h>
+ #if defined(__MINGW32__) || defined(__CYGWIN__)
+ #if !defined(SHARD_PIDL)
+ #define SHARD_PIDL      0x00000001L
+ #endif
+ #if !defined(SHARD_PATHA)
+ #define SHARD_PATHA     0x00000002L
+ #endif
+ #if !defined(SHARD_PATHA)
+ #define SHARD_PATHW     0x00000003L
+ #endif
+ #if !defined(SHARD_PATH)
+ #ifdef UNICODE
+ #define SHARD_PATH  SHARD_PATHW
+ #else
+ #define SHARD_PATH  SHARD_PATHA
+ #endif
+ #endif
+ #endif
+ GHOST_SystemPathsWin32::GHOST_SystemPathsWin32()
+ {
+ }
+ GHOST_SystemPathsWin32::~GHOST_SystemPathsWin32()
+ {
+ }
+ const GHOST_TUns8* GHOST_SystemPathsWin32::getSystemDir() const
+ {
+       static char knownpath[MAX_PATH];
+       HRESULT hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, knownpath);
+       if (hResult == S_OK)
+       {
+               return (GHOST_TUns8*)knownpath;
+       }
+       return NULL;
+ }
+ const GHOST_TUns8* GHOST_SystemPathsWin32::getUserDir() const
+ {
+       static char knownpath[MAX_PATH];
+       HRESULT hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, knownpath);
+       if (hResult == S_OK)
+       {
+               return (GHOST_TUns8*)knownpath;
+       }
+       return NULL;
+ }
+ const GHOST_TUns8* GHOST_SystemPathsWin32::getBinaryDir() const
+ {
+       static char fullname[MAX_PATH];
+       if(GetModuleFileName(0, fullname, MAX_PATH)) {
+               return (GHOST_TUns8*)fullname;
+       }
+       return NULL;
+ }
+ void GHOST_SystemPathsWin32::addToSystemRecentFiles(const char* filename) const
+ {
+       /* SHARD_PATH resolves to SHARD_PATHA for non-UNICODE build */
+       SHAddToRecentDocs(SHARD_PATH,filename);
+ }
index 0000000,88c1b14..8f1f8c4
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,86 +1,86 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsWin32.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+  * All rights reserved.
+  *
+  * The Original Code is: all of this file.
+  *
+  * Contributor(s): none yet.
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_SYSTEM_PATHS_WIN32_H_
+ #define _GHOST_SYSTEM_PATHS_WIN32_H_
+ #ifndef WIN32
+ #error WIN32 only!
+ #endif // WIN32
+ #include <windows.h>
+ #include "GHOST_SystemPaths.h"
+ /**
+  * WIN32 Implementation of GHOST_SystemPaths class.
+  * @see GHOST_SystemPaths.
+  * @author    Andrea Weikert
+  * @date      August 1, 2010
+  */
+ class GHOST_SystemPathsWin32 : public GHOST_SystemPaths {
+ public:
+       /**
+        * Constructor.
+        */
+       GHOST_SystemPathsWin32();
+       /**
+        * Destructor.
+        */
+       virtual ~GHOST_SystemPathsWin32();
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/).
+        */
+       const GHOST_TUns8* getSystemDir() const;
+       /**
+        * Determine the base dir in which user configuration is stored, not including versioning.
+        * If needed, it will create the base directory.
+        * @return Unsigned char string pointing to user dir (eg ~/).
+        */
+        const GHOST_TUns8* getUserDir() const;
+        /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        const GHOST_TUns8* getBinaryDir() const;
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
+ };
+ #endif // _GHOST_SYSTEM_PATHS_WIN32_H_
index 0000000,3153ae8..fe02d59
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,80 +1,80 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsX11.cpp 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2010 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Blender Foundation
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #include "GHOST_SystemPathsX11.h"
+ #include "GHOST_Debug.h"
+ // For timing
+ #include <sys/time.h>
+ #include <unistd.h>
+ #include <stdio.h> // for fprintf only
+ #include <cstdlib> // for exit
+ #ifndef PREFIX
+ #  define PREFIX "/usr/local"
+ #endif
+ using namespace std;
+ GHOST_SystemPathsX11::GHOST_SystemPathsX11()
+ {
+ }
+ GHOST_SystemPathsX11::~GHOST_SystemPathsX11()
+ {
+ }
+ const GHOST_TUns8* GHOST_SystemPathsX11::getSystemDir() const
+ {
+       return (GHOST_TUns8*) PREFIX "/share";
+ }
+ const GHOST_TUns8* GHOST_SystemPathsX11::getUserDir() const
+ {
+       char* env = getenv("HOME");
+       if(env) {
+               return (GHOST_TUns8*) env;
+       } else {
+               return NULL;
+       }
+ }
+ const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const
+ {
+       return NULL;
+ }
+ void GHOST_SystemPathsX11::addToSystemRecentFiles(const char* filename) const
+ {
+       /* XXXXX TODO: Implementation for X11 if possible */
+ }
index 0000000,c3ff88a..c8a73d0
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,77 +1,77 @@@
 - * $Id$
+ /**
++ * $Id: GHOST_SystemPathsX11.h 34106 2011-01-05 19:19:49Z gsrb3d $
+  *
+  * ***** BEGIN GPL LICENSE BLOCK *****
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version. 
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software Foundation,
+  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+  *
+  * The Original Code is Copyright (C) 2010 Blender Foundation.
+  * All rights reserved.
+  *
+  * 
+  * Contributor(s): Blender Foundation
+  *
+  * ***** END GPL LICENSE BLOCK *****
+  */
+ #ifndef _GHOST_SYSTEM_PATHS_X11_H_
+ #define _GHOST_SYSTEM_PATHS_X11_H_
+ #include "GHOST_SystemPaths.h"
+ #include "../GHOST_Types.h"
+ class GHOST_SystemPathsX11 : public GHOST_SystemPaths {
+ public:
+       /**
+        * Constructor
+        * this class should only be instanciated by GHOST_ISystem.
+        */
+       GHOST_SystemPathsX11();
+       
+       /**
+        * Destructor.
+        */
+       virtual ~GHOST_SystemPathsX11();
+       /**
+        * Determine the base dir in which shared resources are located. It will first try to use
+        * "unpack and run" path, then look for properly installed path, not including versioning.
+        * @return Unsigned char string pointing to system dir (eg /usr/share/blender/).
+        */
+       const GHOST_TUns8* getSystemDir() const;
+       /**
+        * Determine the base dir in which user configuration is stored, not including versioning.
+        * If needed, it will create the base directory.
+        * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+        */
+       const GHOST_TUns8* getUserDir() const;
+       /**
+         * Determine the directory of the current binary
+         * @return Unsigned char string pointing to the binary dir
+         */
+        const GHOST_TUns8* getBinaryDir() const;
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
+ };
+ #endif