def getVMDpath(): """Return VMD path set by user or one identified automatically.""" path = SETTINGS.get('vmd', None) if isExecutable(path): return path else: LOGGER.warning('VMD path is not set by user, looking for it.') from types import StringType, UnicodeType vmdbin = None vmddir = None if PLATFORM == 'Windows': import _winreg for vmdversion in ('1.8.7', '1.9', '1.9.1'): try: key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'Software\\University of Illinois\\VMD\\' + vmdversion) vmddir = _winreg.QueryValueEx(key, 'VMDDIR')[0] vmdbin = os.path.join(vmddir, 'vmd.exe') except: pass try: key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'Software\\WOW6432node\\University of Illinois\\VMD\\' + vmdversion) vmddir = _winreg.QueryValueEx(key, 'VMDDIR')[0] vmdbin = os.path.join(vmddir, 'vmd.exe') except: pass else: vmdbin = which('vmd') if False: pipe = os.popen('which vmd') vmdbin = pipe.next().strip() vmdfile = open(vmdbin) for line in vmdfile: if line.startswith('defaultvmddir='): vmddir = line.split('=')[1].replace('"', '') break vmdfile.close() if False and \ isinstance(vmdbin, (StringType, UnicodeType)) and \ isinstance(vmddir, (StringType, UnicodeType)) and \ os.path.isfile(vmdbin) and os.path.isdir(vmddir): pass#return vmdbin, vmddir if isExecutable(vmdbin): setVMDpath(vmdbin) return vmdbin
def setVMDpath(path): """Set path to a VMD executable.""" if isExecutable(path): SETTINGS['vmd'] = path SETTINGS.save() LOGGER.info("VMD path is set to '{0:s}'.".format(path)) else: raise OSError('{0:s} is not executable.'.format(str(path)))