+++ /dev/null
-#----------------------------------------------------------------------------
-# Name: appdirs.py
-# Purpose: Utilities for retrieving special application dirs
-#
-# Author: Kevin Ollivier, Jeff Norton
-#
-# Created: 8/27/05
-# CVS-ID: $Id$
-# Copyright: (c) 2004-2005 ActiveGrid, Inc.
-# License: wxWindows License
-#----------------------------------------------------------------------------
-
-from activegrid.util.lang import *
-import sys
-import os
-import string
-import activegrid.util.sysutils as sysutils
-
-def _getSystemDir(kind):
- if (kind == AG_LOGS_DIR):
- return os.path.join(getSystemDir(AG_SYSTEM_DIR) , "logs")
- elif (kind == AG_DEMOS_DIR):
- return os.path.join(getSystemDir(AG_SYSTEM_DIR), "demos")
- else:
- path = ""
- if (sysutils.isServer()):
- path = os.getenv("ACTIVEGRID_SERVER_HOME")
- if ((path is None) or (len(path) < 1)):
- path = sysutils.mainModuleDir
- else:
- path = os.getenv("AG_DOCUMENTS_DIR")
- if ((path is None) or (len(path) < 1)):
- if sysutils.isWindows():
- ifDefPy()
- try:
- from win32com.shell import shell, shellcon
- path = shell.SHGetFolderPath(0, shellcon.CSIDL_PERSONAL, None, 0)
- except:
- pass
- endIfDef()
- if ((path is None) or (len(path) < 1)):
- homedrive = asString(os.getenv("HOMEDRIVE"))
- homepath = os.getenv("HOMEPATH")
-## if ((homedrive is not None) and (len(homedrive) > 0) and (homepath is not None) and (len(homepath) > 0)):
- path = os.path.join(homedrive, homepath, "MYDOCU~1")
- else:
- ifDefPy()
- if sys.platform == "darwin":
- try:
- import macfs
- import MACFS
- fsspec_disk, fsspec_desktop = macfs.FindFolder(MACFS.kOnSystemDisk, MACFS.kDocumentsFolderType, 0)
- path = macfs.FSSpec((fsspec_disk, fsspec_desktop, '')).as_pathname()
- except:
- pass
- endIfDef()
-
- ifDefPy()
- if ((path is None) or (len(path) < 1)):
- path = os.path.expanduser("~")
- endIfDef()
- if ((path is None) or (len(path) < 1)):
- path = "/"
- path = os.path.join(path, "ActiveGrid")
-
- return path
-
-
-AG_SYSTEM_DIR = 0
-AG_LOGS_DIR = 1
-AG_DEMOS_DIR = 2
-
-__systemDir = None
-__logsDir = None
-__demosDir = None
-
-def getSystemDir(kind=0):
- if (kind == AG_SYSTEM_DIR):
- global __systemDir
- if (__systemDir is None):
- __systemDir = _getSystemDir(kind)
- return __systemDir
- elif (kind == AG_LOGS_DIR):
- global __logsDir
- if (__logsDir is None):
- __logsDir = _getSystemDir(kind)
- return __logsDir
- elif (kind == AG_DEMOS_DIR):
- global __demosDir
- if (__demosDir is None):
- __demosDir = _getSystemDir(kind)
- return __demosDir
- return None
-
-
-# NOTE: We don't set this at startup because wxStandardPaths needs a running
-# application object. This makes sure the wxApp will always be created when
-# we get the folder.
-ifDefPy()
-def getAppDataFolder():
- try:
- # NOTE: cannot import wx from the server
- import wx
- # wxStandardPaths requires a running app
- if wx.GetApp() and wx.Platform != "__WXGTK__":
- data_folder = wx.StandardPaths.Get().GetUserDataDir()
- if not os.path.exists(data_folder):
- os.mkdir(data_folder)
- return data_folder
- except:
- pass
- # wxBug: on *nix, it wants to point to ~/.appname, but
- # so does wxConfig... For now, redirect this to ~/.appbuilder
- # when this is fixed, we'll migrate settings to the correct place
- return os.path.join(os.path.expanduser("~"), ".appbuilder")
-endIfDef()
-
-ifDefPy()
-def createSystemDirs():
- if (not os.path.exists(getSystemDir())):
- os.mkdir(getSystemDir())
- if (not os.path.exists(getSystemDir(AG_LOGS_DIR))):
- os.mkdir(getSystemDir(AG_LOGS_DIR))
- if (not os.path.exists(getSystemDir(AG_DEMOS_DIR))):
- os.mkdir(getSystemDir(AG_DEMOS_DIR))
-endIfDef()