Source code for GSASII.GSASIIGUI

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#GSASIIGUI
'''
GSASIIGUI provides a short file that is used to start the GSAS-II GUI. 
It is usually called from `G2.py` but this routine can also be invoked
directly when GSAS-II has been installed into Python. 
On MacOS, a class, :class:`G2App`, is defined inside :func:`main` that creates
a wxPython application. For other platforms ``wx.App()`` is called directly.
'''

import sys

from . import GSASIIpath

__version__ = '5.0.0'
gv = GSASIIpath.getSavedVersionInfo()
if gv is not None:
    if len(gv.git_versiontag):
        __version__ = gv.git_versiontag[1:]
    elif len(gv.git_tags):
        __version__ = gv.git_tags[0]
    elif len(gv.git_prevtags):
        __version__ = gv.git_prevtags[0]

[docs] def main(): '''This routine is called to start the GSAS-II GUI ''' import scipy.optimize # loading here addresses problem with build for wx on Pi import wx # the next line removes the need for pythonw. Thanks to Matt Newville! # appears unneeded from wx 4.2.1 on if sys.platform.lower() == 'darwin': wx.PyApp.IsDisplayAvailable = lambda _: True # importing the following wx modules at the same time as wx seems to # eliminate the "Debug: Adding duplicate image handler for 'Windows bitmap # file'" error message import wx.grid as wg import wx.aui import wx.lib.scrolledpanel as wxscroll import wx.lib.mixins.listctrl as listmix import wx.richtext as wxrt import wx.lib.filebrowsebutton as wxfilebrowse wg,wx.aui,wxscroll,listmix,wxrt,wxfilebrowse,scipy.optimize # avoid unused warning if sys.platform == "darwin": class G2App(wx.App): '''Used to create a wx python application for the GUI for Mac. Customized to implement drop of GPX files onto app. ''' startupMode = True def ClearStartup(self): '''Call this after app startup complete because a Drop event is posted when GSAS-II is initially started. ''' self.startupMode = False def MacOpenFiles(self, filenames): if self.startupMode: return from . import GSASIIfiles for project in filenames: #print("Start GSAS-II with project file "+str(project)) #GSASIIpath.MacStartGSASII(__file__,project) GSASIIfiles.openInNewTerm(project) application = G2App(0) # create the GUI framework else: application = wx.App(0) # create the GUI framework try: GSASIIpath.SetBinaryPath(True) except Exception as msg: print( '''Unable to run with current installation due to lack of binary (compiled) files, please reset or reinstall''') print('\nError:') print(msg) # if GSASIIpath.HowIsG2Installed().startswith('git'): # print('use this command w/gitstrap') sys.exit() # print('Unable to run with current setup, do you want to update to the') # try: # ans = input("latest GSAS-II version? Update ([Yes]/no): ") # except: # ans = 'no' # if ans.strip().lower() == "no": # import sys # print('Exiting') # sys.exit() # print('Updating...') # import GSASIIctrlGUI as G2G # if GSASIIpath.HowIsG2Installed().startswith('git'): # gitCheckUpdates(None) from . import GSASIIdataGUI as G2gd GSASIIpath.InvokeDebugOpts() # debug capability. If a Python file is on the command-line import it if GSASIIpath.GetConfigValue('debug') and len(sys.argv) == 2: import os if os.path.splitext(sys.argv[1])[1] == '.py': print (f'{60*"="}\n"Importing" file {sys.argv[1]}\n{60*"="}') import importlib.util spec = importlib.util.spec_from_file_location('test_module', sys.argv[1]) module = importlib.util.module_from_spec(spec) sys.modules['test_module'] = module spec.loader.exec_module(module) #test_module = module sys.exit() G2gd.GSASIImain(application) # start the GUI if sys.platform == "darwin": wx.CallLater(50,application.ClearStartup) application.MainLoop()
if __name__ == '__main__': main()