00001
00002
00003
00004
00005
00006
00007
00008
00009 import sys
00010 from GPyUnit.util import DispatchEx
00011 import os
00012
00013 def xmefiles( dir, begin_pattern = "", end_pattern = "" ):
00014 ld = os.listdir( dir)
00015 xmes = []
00016 for k in ld:
00017 if k.endswith( end_pattern + ".xme") and k.startswith( begin_pattern):
00018 xmes.append( k )
00019
00020 return xmes
00021
00022
00023 def doit( source, target):
00024 errors = 0
00025 errors_with_files = ""
00026
00027 fs = []
00028 source_dir = ''
00029 target_dir = target
00030
00031 if os.path.isdir( source):
00032 source_dir = source
00033 dir2load = os.path.abspath(os.path.join( os.path.curdir, source_dir))
00034 fs = xmefiles( dir2load)
00035 elif os.path.isfile( source):
00036 fs.append( source)
00037 else:
00038 raise 'File/Directory not given consistently'
00039
00040
00041 for i in fs:
00042
00043 xmename = os.path.abspath( os.path.join( os.path.curdir, i))
00044
00045 try:
00046 gme = DispatchEx("GME.Application")
00047 gme.Visible = 0
00048
00049 paradigm = "MetaGME"
00050
00051
00052 j = i[ : i.find('.')]
00053 if j.count('_') >= 1:
00054 u = j.rfind('_')
00055 p = j[ u + 1 : ]
00056 if p == 'sf':
00057 paradigm = "SF"
00058 elif p == 'fl':
00059 paradigm = "FloatAttr"
00060 elif p == 'me':
00061 paradigm = "MetaGME"
00062 else:
00063 print 'Other paradigm !!!'
00064 pass
00065 else:
00066 print 'Other naming pattern !!!'
00067 pass
00068
00069 name = 'newproject'
00070 i = os.path.split(i)[1]
00071 if i.count('.') > 0:
00072 name = i[:i.rfind('.')]
00073
00074 mgan = os.path.abspath( os.path.join( target_dir, name ))
00075 gme.CreateProject( paradigm, "MGA=" + mgan)
00076
00077 gme.ImportProject(xmename)
00078 gme.SaveProject()
00079 gme.CloseProject(0)
00080 except:
00081 errors = errors + 1
00082 errors_with_files = errors_with_files + mganame + "\n"
00083 gme.CloseProject(0)
00084 pass
00085 return ( errors, errors_with_files)
00086
00087
00088
00089 if __name__ == "__main__":
00090 if len( sys.argv) < 3:
00091 source = "xme"
00092 target = "./"
00093 print "="*79
00094 print "Usage: xme2mga.py Source Target"
00095 print " where Source can be a directory or file"
00096 print " Target must be a directory"
00097 print "i.e.: xme2mga.py", source, target
00098 print "i.e.: xme2mga.py xme\\_tc5_sf_A.mga.xme models\\"
00099 print "="*79
00100 sys.exit(1)
00101 else:
00102 source = sys.argv[1]
00103 target = sys.argv[2]
00104
00105 (nerrs, errfiles) = doit( source, target)
00106 if nerrs > 0:
00107 print "Problematic files: \n" + errfiles