Mercurial > traipse
diff orpg/dirpath/dirpath_tools.py @ 0:4385a7d0efd1 grumpy-goblin
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author | sirebral |
---|---|
date | Tue, 14 Jul 2009 16:41:58 -0500 |
parents | |
children | 5df1340bda13 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/orpg/dirpath/dirpath_tools.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,157 @@ +import sys +import os +import errno +from orpg.orpg_wx import * + +if WXLOADED: + class tmpApp(wx.App): + def OnInit(self): + return True + + +#------------------------------------------------------- +# void load_paths( dir_struct_reference ) +# moved structure loading from dirpath.py by Snowdog 3-8-05 +#------------------------------------------------------- +def load_paths(dir_struct, root_dir): + dir_struct["home"] = root_dir + os.sep + dir_struct["core"] = dir_struct["home"] + "orpg"+ os.sep + dir_struct["data"] = dir_struct["home"] + "data"+ os.sep + dir_struct["d20"] = dir_struct["data"] + "d20" + os.sep + dir_struct["dnd3e"] = dir_struct["data"] + "dnd3e" + os.sep + dir_struct["dnd35"] = dir_struct["data"] + "dnd35" + os.sep + dir_struct["SWd20"] = dir_struct["data"] + "SWd20" + os.sep + dir_struct["icon"] = dir_struct["home"] + "images" + os.sep + dir_struct["template"] = dir_struct["core"] + "templates" + os.sep + + dir_struct["plugins"] = dir_struct["home"] + "plugins" + os.sep + dir_struct["nodes"] = dir_struct["template"] + "nodes" + os.sep + dir_struct["rollers"] = dir_struct["core"] + "dieroller" + os.sep + "rollers" + os.sep + + + _userbase_dir = _userbase_dir = os.environ['OPENRPG_BASE'] + _user_dir = _userbase_dir + os.sep + "myfiles" + os.sep + + + try: + os.makedirs(_user_dir) + os.makedirs(_user_dir + "runlogs" + os.sep); + os.makedirs(_user_dir + "logs" + os.sep); + os.makedirs(_user_dir + "webfiles" + os.sep); + except OSError, e: + if e.errno != errno.EEXIST: + raise + + dir_struct["user"] = _user_dir + + dir_struct["logs"] = dir_struct["user"] + "logs" + os.sep + + + +#------------------------------------------------------- +# int verify_home_path( directory_name ) +# added by Snowdog 3-8-05 +# updated with bailout code. Snowdog 7-25-05 +#------------------------------------------------------- +def verify_home_path( path ): + """checks for key ORPG files in the openrpg tree + and askes for user intervention if their is a problem""" + + try: + #verify that the root dir (as supplied) exists + if not verify_file(path): return 0 + + #These checks require that 'path' have a separator at the end. + #Check and temporarily add one if needed + if (path[(len(path)-len(os.sep)):] != os.sep): + path = path + os.sep + + # These files should always exist at the root orpg dir + check_files = ["orpg","data","images"] + for n in range(len(check_files)): + if not verify_file(path + check_files[n]): return 0 + + except: + # an error occured while verifying the directory structure + # bail out with error signal + return 0 + + #all files and directories exist. + write_approot(path) + return 1 + + + +#------------------------------------------------------- +# int verify_file( absolute_path ) +# added by Snowdog 3-8-05 +#------------------------------------------------------- +def verify_file(abs_path): + """Returns True if file or directory exists""" + try: + os.stat(abs_path) + return 1 + except OSError: + #this exception signifies the file or dir doesn't exist + return 0 + + +#------------------------------------------------------- +# pathname get_user_help() +# added by Snowdog 3-8-05 +# bug fix (SF #1242456) and updated with bailout code. Snowdog 7-25-05 +#------------------------------------------------------- +def get_user_located_root(): + """Notify the user of directory problems + and show directory selection dialog """ + + if WXLOADED: + app = tmpApp(0) + app.MainLoop() + + dir = None + + try: + msg = "OpenRPG cannot locate critical files.\nPlease locate the openrpg1 directory in the following window" + alert= wx.MessageDialog(None,msg,"Warning",wx.OK|wx.ICON_ERROR) + alert.Show() + if alert.ShowModal() == wx.OK: + alert.Destroy() + dlg = wx.DirDialog(None, "Locate the openrpg1 directory:",style=wx.DD_DEFAULT_STYLE) + if dlg.ShowModal() == wx.ID_OK: + dir = dlg.GetPath() + dlg.Destroy() + app.Destroy() + return dir + except Exception, e: + print e + print "OpenRPG encountered a problem while attempting to load file dialog to locate the OpenRPG root directory." + print "please delete the files ./openrpg/orpg/dirpath/aproot.py and ./openrpg/orpg/dirpath/aproot.pyc and try again." + else: + dir = raw_input("Enter the full path to your openrpg folder: ") + return dir + + + +#------------------------------------------------------- +# void write_approot( orpg_root_path ) +# added by snowdog 3-10-05 +#------------------------------------------------------- + +def write_approot( orpg_root_path): + try: + #if a trailing path separator is on the path string remove it. + if (orpg_root_path[(len(orpg_root_path)-len(os.sep)):] == os.sep): + orpg_root_path = orpg_root_path[:(len(orpg_root_path)-len(os.sep))] + fn = orpg_root_path + os.sep + "orpg" + os.sep + "dirpath" + os.sep + "approot.py" + f = open(fn, "w") + #trim off the appended os.sep character(s) to avoid duplicating them on re-loading of path + code = 'basedir = "' + orpg_root_path + '"' + "\n" + #fix path string for windows boxes that lamely use an escape character for a path separator + code = str.replace(code,'\\','\\\\') + f.write(code) + f.close() + except IOError: + print "[WARNING] Could not create approot file." + print "[WARNING] Automatic directory resolution not configured." + return