source: trunk/makeBat.py @ 3209

Last change on this file since 3209 was 3209, checked in by toby, 6 years ago

Add simulation to scriptable & add to tutorial; add sphinx index to ctrlsGUI; remove path from RunGSASII.bat

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Author Revision URL Id
File size: 5.3 KB
Line 
1'''
2*makeBat: Create GSAS-II Batch File*
3====================================
4
5This script creates a file named ``RunGSASII.bat`` and a desktop shortcut to that file.
6It registers the filetype .gpx so that the GSAS-II project files exhibit the
7GSAS-II icon and so that double-clicking on them opens them in GSAS-II.
8
9Run this script with no arguments; the path to the ``GSASII.py`` file
10is assumed to be the the same as the path to the ``makeBat.py`` file
11and the path to Python is determined from the version of Python
12used to run this script.
13
14'''
15# creates Windows files to aid in running GSAS-II
16#   creates RunGSASII.bat and a desktop shortcut to that file
17#   registers the filetype .gpx so that the GSAS-II project files exhibit the
18#     GSAS-II icon and so that double-clicking on them opens them in GSAS-II
19import os, sys
20import datetime
21try:
22    import _winreg as winreg
23except ImportError:
24    import winreg
25
26Script = '''@echo ========================================================================
27@echo                General Structure Analysis System-II
28@echo              by Robert B. Von Dreele and Brian H. Toby
29@echo                Argonne National Laboratory(C), 2010
30@echo  This product includes software developed by the UChicago Argonne, LLC,
31@echo             as Operator of Argonne National Laboratory.
32@echo                            Please cite:
33@echo      B.H. Toby and R.B. Von Dreele, J. Appl. Cryst. 46, 544-549 (2013)
34@echo                   for small angle use also cite:
35@echo      R.B. Von Dreele, J. Appl. Cryst. 47, 1784-9 (2014)
36@echo                   for DIFFaX use also cite:
37@echo      M.M.J. Treacy, J.M. Newsam and M.W. Deem,
38@echo                   Proc. Roy. Soc. Lond. 433A, 499-520 (1991)
39@echo ========================================================================
40@
41{:s} {:s} "%~1"
42@REM To keep the window from disappearing with any error messages
43pause
44
45'''
46
47if __name__ == '__main__':
48    gsaspath = os.path.split(sys.argv[0])[0]
49    if not gsaspath: gsaspath = os.path.curdir
50    gsaspath = os.path.abspath(os.path.expanduser(gsaspath))
51    G2script = os.path.join(gsaspath,'GSASII.py')
52    G2bat = os.path.join(gsaspath,'RunGSASII.bat')
53    G2icon = os.path.join(gsaspath,'gsas2.ico')
54    pythonexe = os.path.realpath(sys.executable)
55    # Bob reports a problem using pythonw.exe w/Canopy on Windows, so change that if used
56    if pythonexe.lower().endswith('pythonw.exe'):
57        print("  using python.exe rather than "+pythonexe)
58        pythonexe = os.path.join(os.path.split(pythonexe)[0],'python.exe')
59        print("  now pythonexe="+pythonexe)
60    # create a GSAS-II script
61    fp = open(os.path.join(G2bat),'w')
62    fp.write("@REM created by run of bootstrap.py on {:%d %b %Y %H:%M}\n".format(
63        datetime.datetime.now()))
64    pexe = pythonexe
65    if ' ' in pythonexe: pexe = '"'+pythonexe+'"'
66    G2s = G2script
67    if ' ' in G2s: G2s = '"'+G2script+'"'
68    # is mingw-w64\bin present? If so add it to path.
69    #d = os.path.split(pexe)[0]
70    #mdir = os.path.join(d,'Library','mingw-w64','bin')
71    #if os.path.exists(mdir):
72    #    fp.write('@path={};%path%\n'.format(mdir))
73    fp.write(Script.format(pexe,G2s))
74    fp.close()
75    print('\nCreated GSAS-II batch file RunGSASII.bat in '+gsaspath)
76
77    # Associate a script and icon with .gpx files
78    #gpxkey = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, '.gpx')
79    gpxkey = winreg.CreateKey(winreg.HKEY_CURRENT_USER,r'Software\CLASSES\.gpx')
80    winreg.SetValue(gpxkey, None, winreg.REG_SZ, 'GSAS-II.project')
81    winreg.CloseKey(gpxkey)
82    gpxkey = winreg.CreateKey(winreg.HKEY_CURRENT_USER,r'Software\CLASSES\GSAS-II.project')
83    winreg.SetValue(gpxkey, None, winreg.REG_SZ, 'GSAS-II project')
84    iconkey = winreg.CreateKey(gpxkey, 'DefaultIcon')
85    winreg.SetValue(iconkey, None, winreg.REG_SZ, G2icon)
86    openkey = winreg.CreateKey(gpxkey, r'shell\open\command')
87    winreg.SetValue(openkey, None, winreg.REG_SZ, G2bat+' "%1"')
88    winreg.CloseKey(iconkey)
89    winreg.CloseKey(openkey)
90    winreg.CloseKey(gpxkey)
91    print('Assigned icon and batch file to .gpx files')
92
93    try:
94        import win32com.shell.shell, win32com.shell.shellcon
95        win32com.shell.shell.SHChangeNotify(
96            win32com.shell.shellcon.SHCNE_ASSOCCHANGED, 0, None, None)
97    except ImportError:
98        print('Module pywin32 not present, login again to see file types properly')
99    except:
100        print('Unexpected error on explorer refresh. Please report:')
101        import traceback
102        print(traceback.format_exc())
103
104    # make a desktop shortcut to GSAS-II
105    try:
106        import win32com.shell.shell, win32com.shell.shellcon, win32com.client
107        desktop = win32com.shell.shell.SHGetFolderPath(
108            0, win32com.shell.shellcon.CSIDL_DESKTOP, None, 0)
109        shortcut = os.path.join(desktop, "GSAS-II.lnk")
110        shell = win32com.client.Dispatch('WScript.Shell')
111        shobj = shell.CreateShortCut(shortcut)
112        shobj.Targetpath = G2bat
113        #shobj.WorkingDirectory = wDir # could specify a default project location here
114        shobj.IconLocation = G2icon
115        shobj.save()
116        print('Created shortcut to start GSAS-II on desktop')
117    except ImportError:
118        print('Module pywin32 not present, will not make desktop shortcut')
119    except:
120        print('Unexpected error making desktop shortcut. Please report:')
121        import traceback
122        print(traceback.format_exc())
123   
Note: See TracBrowser for help on using the repository browser.