comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:4385a7d0efd1
1 import sys
2 import os
3 import errno
4 from orpg.orpg_wx import *
5
6 if WXLOADED:
7 class tmpApp(wx.App):
8 def OnInit(self):
9 return True
10
11
12 #-------------------------------------------------------
13 # void load_paths( dir_struct_reference )
14 # moved structure loading from dirpath.py by Snowdog 3-8-05
15 #-------------------------------------------------------
16 def load_paths(dir_struct, root_dir):
17 dir_struct["home"] = root_dir + os.sep
18 dir_struct["core"] = dir_struct["home"] + "orpg"+ os.sep
19 dir_struct["data"] = dir_struct["home"] + "data"+ os.sep
20 dir_struct["d20"] = dir_struct["data"] + "d20" + os.sep
21 dir_struct["dnd3e"] = dir_struct["data"] + "dnd3e" + os.sep
22 dir_struct["dnd35"] = dir_struct["data"] + "dnd35" + os.sep
23 dir_struct["SWd20"] = dir_struct["data"] + "SWd20" + os.sep
24 dir_struct["icon"] = dir_struct["home"] + "images" + os.sep
25 dir_struct["template"] = dir_struct["core"] + "templates" + os.sep
26
27 dir_struct["plugins"] = dir_struct["home"] + "plugins" + os.sep
28 dir_struct["nodes"] = dir_struct["template"] + "nodes" + os.sep
29 dir_struct["rollers"] = dir_struct["core"] + "dieroller" + os.sep + "rollers" + os.sep
30
31
32 _userbase_dir = _userbase_dir = os.environ['OPENRPG_BASE']
33 _user_dir = _userbase_dir + os.sep + "myfiles" + os.sep
34
35
36 try:
37 os.makedirs(_user_dir)
38 os.makedirs(_user_dir + "runlogs" + os.sep);
39 os.makedirs(_user_dir + "logs" + os.sep);
40 os.makedirs(_user_dir + "webfiles" + os.sep);
41 except OSError, e:
42 if e.errno != errno.EEXIST:
43 raise
44
45 dir_struct["user"] = _user_dir
46
47 dir_struct["logs"] = dir_struct["user"] + "logs" + os.sep
48
49
50
51 #-------------------------------------------------------
52 # int verify_home_path( directory_name )
53 # added by Snowdog 3-8-05
54 # updated with bailout code. Snowdog 7-25-05
55 #-------------------------------------------------------
56 def verify_home_path( path ):
57 """checks for key ORPG files in the openrpg tree
58 and askes for user intervention if their is a problem"""
59
60 try:
61 #verify that the root dir (as supplied) exists
62 if not verify_file(path): return 0
63
64 #These checks require that 'path' have a separator at the end.
65 #Check and temporarily add one if needed
66 if (path[(len(path)-len(os.sep)):] != os.sep):
67 path = path + os.sep
68
69 # These files should always exist at the root orpg dir
70 check_files = ["orpg","data","images"]
71 for n in range(len(check_files)):
72 if not verify_file(path + check_files[n]): return 0
73
74 except:
75 # an error occured while verifying the directory structure
76 # bail out with error signal
77 return 0
78
79 #all files and directories exist.
80 write_approot(path)
81 return 1
82
83
84
85 #-------------------------------------------------------
86 # int verify_file( absolute_path )
87 # added by Snowdog 3-8-05
88 #-------------------------------------------------------
89 def verify_file(abs_path):
90 """Returns True if file or directory exists"""
91 try:
92 os.stat(abs_path)
93 return 1
94 except OSError:
95 #this exception signifies the file or dir doesn't exist
96 return 0
97
98
99 #-------------------------------------------------------
100 # pathname get_user_help()
101 # added by Snowdog 3-8-05
102 # bug fix (SF #1242456) and updated with bailout code. Snowdog 7-25-05
103 #-------------------------------------------------------
104 def get_user_located_root():
105 """Notify the user of directory problems
106 and show directory selection dialog """
107
108 if WXLOADED:
109 app = tmpApp(0)
110 app.MainLoop()
111
112 dir = None
113
114 try:
115 msg = "OpenRPG cannot locate critical files.\nPlease locate the openrpg1 directory in the following window"
116 alert= wx.MessageDialog(None,msg,"Warning",wx.OK|wx.ICON_ERROR)
117 alert.Show()
118 if alert.ShowModal() == wx.OK:
119 alert.Destroy()
120 dlg = wx.DirDialog(None, "Locate the openrpg1 directory:",style=wx.DD_DEFAULT_STYLE)
121 if dlg.ShowModal() == wx.ID_OK:
122 dir = dlg.GetPath()
123 dlg.Destroy()
124 app.Destroy()
125 return dir
126 except Exception, e:
127 print e
128 print "OpenRPG encountered a problem while attempting to load file dialog to locate the OpenRPG root directory."
129 print "please delete the files ./openrpg/orpg/dirpath/aproot.py and ./openrpg/orpg/dirpath/aproot.pyc and try again."
130 else:
131 dir = raw_input("Enter the full path to your openrpg folder: ")
132 return dir
133
134
135
136 #-------------------------------------------------------
137 # void write_approot( orpg_root_path )
138 # added by snowdog 3-10-05
139 #-------------------------------------------------------
140
141 def write_approot( orpg_root_path):
142 try:
143 #if a trailing path separator is on the path string remove it.
144 if (orpg_root_path[(len(orpg_root_path)-len(os.sep)):] == os.sep):
145 orpg_root_path = orpg_root_path[:(len(orpg_root_path)-len(os.sep))]
146 fn = orpg_root_path + os.sep + "orpg" + os.sep + "dirpath" + os.sep + "approot.py"
147 f = open(fn, "w")
148 #trim off the appended os.sep character(s) to avoid duplicating them on re-loading of path
149 code = 'basedir = "' + orpg_root_path + '"' + "\n"
150 #fix path string for windows boxes that lamely use an escape character for a path separator
151 code = str.replace(code,'\\','\\\\')
152 f.write(code)
153 f.close()
154 except IOError:
155 print "[WARNING] Could not create approot file."
156 print "[WARNING] Automatic directory resolution not configured."
157 return