Changeset 1047


Ignore:
Timestamp:
Aug 30, 2013 3:46:39 PM (8 years ago)
Author:
toby
Message:

change update for new windows; improve About box

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1042 r1047  
    11831183    def __init__(self, parent):
    11841184        self._init_ctrls(parent)
     1185        self.Image = wx.Image(
     1186            os.path.join(GSASIIpath.path2GSAS2,'gsas2.ico'),
     1187            wx.BITMAP_TYPE_ICO)
     1188        if "wxMSW" in wx.PlatformInfo:
     1189            self.SetIcon(self.Image.Scale(16, 16))
     1190        elif "wxGTK" in wx.PlatformInfo:
     1191            self.SetIcon(self.Image.Scale(22, 22))
     1192        else:
     1193            self.SetIcon(wx.IconFromBitmap(self.Image.ConvertToBitmap()))
    11851194        self.Bind(wx.EVT_CLOSE, self.ExitMain)
    11861195        # various defaults
  • trunk/GSASIIgrid.py

    r1033 r1047  
    11761176                          'Select GSAS-II version to install: '),
    11771177            0, wx.ALIGN_CENTRE|wx.ALL, 5)
    1178         self.spin = wx.SpinCtrl(pnl, wx.ID_ANY)
     1178        self.spin = wx.SpinCtrl(pnl, wx.ID_ANY,size=(150,-1))
    11791179        self.spin.SetRange(1, curver)
    11801180        self.spin.SetValue(curver)
     
    11881188
    11891189        self.text = wx.StaticText(pnl,  wx.ID_ANY, "")
    1190         sizer.Add(self.text, 0, wx.ALIGN_LEFT, 5)
    1191 
     1190        sizer.Add(self.text, 0, wx.ALIGN_LEFT|wx.EXPAND|wx.ALL, 5)
     1191
     1192        line = wx.StaticLine(pnl,-1, size=(-1,3), style=wx.LI_HORIZONTAL)
     1193        sizer.Add(line, 0, wx.EXPAND|wx.ALIGN_CENTER|wx.ALL, 10)
     1194        sizer.Add(
     1195            wx.StaticText(
     1196                pnl,  wx.ID_ANY,
     1197                'If "Install" is pressed, your project will be saved;\n'
     1198                'GSAS-II will exit; The specified version will be loaded\n'
     1199                'and GSAS-II will restart. Press "Cancel" to abort.'),
     1200            0, wx.EXPAND|wx.ALL, 10)
    11921201        btnsizer = wx.StdDialogButtonSizer()
    11931202        btn = wx.Button(pnl, wx.ID_OK, "Install")
     
    12851294        info = wx.AboutDialogInfo()
    12861295        info.Name = 'GSAS-II'
    1287         info.Version = __version__ + ' Revision '+str(GSASIIpath.GetVersionNumber())
    1288         info.Copyright = '''
    1289 Robert B. Von Dreele & Brian H. Toby
    1290 Argonne National Laboratory(C)
     1296        ver = GSASIIpath.svnGetRev()
     1297        if ver:
     1298            info.Version = 'Revision '+str(ver)+' (svn), version '+__version__
     1299        else:
     1300            info.Version = 'Revision '+str(GSASIIpath.GetVersionNumber())+' (.py files), version '+__version__
     1301        #info.Developers = ['Robert B. Von Dreele','Brian H. Toby']
     1302        info.Copyright = ('(c) ' + time.strftime('%Y') +
     1303''' Argonne National Laboratory
    12911304This product includes software developed
    12921305by the UChicago Argonne, LLC, as
    1293 Operator of Argonne National Laboratory.       
    1294 Please cite:
     1306Operator of Argonne National Laboratory.''')
     1307        info.Description = '''General Structure Analysis System-II (GSAS-II)
     1308Robert B. Von Dreele and Brian H. Toby
     1309
     1310Please cite as:
    12951311B.H. Toby & R.B. Von Dreele, J. Appl. Cryst. 46, 544-549 (2013) '''
    1296         info.Description = '''
    1297 General Structure Analysis System - GSAS-II
    1298 '''
     1312
     1313        info.WebSite = ("https://subversion.xray.aps.anl.gov/trac/pyGSAS","GSAS-II home page")
    12991314        wx.AboutBox(info)
    13001315
     
    13441359                                   '. However, '+str(len(mods))+
    13451360                                   ' file(s) on your local computer have been modified.'
    1346                                    ' Updating could cause you to lose your changes, if conflicts arise. Press OK to start an update if this is acceptable:',
     1361                                   ' Updating will attempt to merge your local changes with '
     1362                                   'the latest GSAS-II version, but if '
     1363                                   'conflicts arise, local changes will be '
     1364                                   'discarded. It is also possible that the '
     1365                                   'local changes my prevent GSAS-II from running. '
     1366                                   'Press OK to start an update if this is acceptable:',
    13471367                                   'Local GSAS-II Mods',
    13481368                                   wx.OK|wx.CANCEL)
     
    13571377            if dlg.ShowModal() != wx.ID_OK: return
    13581378        print 'start updates'
    1359         wx.BeginBusyCursor()
    1360         moddict = GSASIIpath.svnUpdateDir()
    1361         wx.EndBusyCursor()
    1362         if moddict is None:
    1363             dlg = wx.MessageDialog(self.frame,
    1364                                    'Error accessing the GSAS-II server or performing the update. '+
    1365                                    'Try again later or perform a manual update',
    1366                                    'Update Error',
    1367                                    wx.OK)
    1368             dlg.ShowModal()
     1379        dlg = wx.MessageDialog(self.frame,
     1380                               'Your project will now be saved, GSAS-II will exit and an update '
     1381                               'will be performed and GSAS-II will restart. Press Cancel to '
     1382                               'abort the update',
     1383                               'Start update?',
     1384                               wx.OK|wx.CANCEL)
     1385        if dlg.ShowModal() != wx.ID_OK:
     1386            dlg.Destroy()
    13691387            return
    1370         msg = 'Update was completed. Changes will take effect when GSAS-II is restarted.\n\nThe following files were affected, ordered by change,'
    1371         for key in sorted(moddict.keys()):
    1372             msg += '\n\n' + key + ': '+moddict[key]
    1373         dlg = wx.MessageDialog(self.frame,msg, 'Update Completed', wx.OK)
    1374         dlg.ShowModal()
     1388        self.frame.OnFileSave(event)
     1389        GSASIIpath.svnUpdateProcess(projectfile=self.frame.GSASprojectfile)
    13751390        return
    13761391
     
    13961411            dlg = wx.MessageDialog(self.frame,
    13971412                                   'You have version '+local+
    1398                                    ' of GSAS-II installed. However, '+str(len(mods))+
     1413                                   ' of GSAS-II installed'
     1414                                   '. However, '+str(len(mods))+
    13991415                                   ' file(s) on your local computer have been modified.'
    1400                                    ' Downdating is not encouraged as this could cause you to lose these changes. Press OK to continue anyway:',
     1416                                   ' Downdating will attempt to merge your local changes with '
     1417                                   'the selected GSAS-II version. '
     1418                                   'Downdating is not encouraged because '
     1419                                   'if merging is not possible, your local changes will be '
     1420                                   'discarded. It is also possible that the '
     1421                                   'local changes my prevent GSAS-II from running. '
     1422                                   'Press OK to continue anyway.',
    14011423                                   'Local GSAS-II Mods',
    14021424                                   wx.OK|wx.CANCEL)
    1403             if dlg.ShowModal() != wx.ID_OK: return
     1425            if dlg.ShowModal() != wx.ID_OK:
     1426                dlg.Destroy()
     1427                return
     1428            dlg.Destroy()
    14041429        dlg = downdate(parent=self.frame)
    14051430        if dlg.ShowModal() == wx.ID_OK:
    14061431            ver = dlg.getVersion()
    1407             print('start update to '+str(ver))
    1408             wx.BeginBusyCursor()
    1409             moddict = GSASIIpath.svnUpdateDir(version=ver)
    1410             wx.EndBusyCursor()
    1411             dlg.Destroy()
    14121432        else:
    14131433            dlg.Destroy()
    14141434            return
    1415         if moddict is None:
    1416             dlg = wx.MessageDialog(self.frame,
    1417                                    'Error accessing the GSAS-II server or performing the update. '+
    1418                                    'Try again later or perform a manual update',
    1419                                    'Update Error',
    1420                                    wx.OK)
    1421             dlg.ShowModal()
    1422             return
    1423         msg = 'Update was completed. Changes will take effect when GSAS-II is restarted.\n\nThe following files were affected, ordered by change,'
    1424         for key in sorted(moddict.keys()):
    1425             msg += '\n\n' + key + ': '+moddict[key]
    1426         dlg = wx.MessageDialog(self.frame,msg, 'Update Completed', wx.OK)
    1427         dlg.ShowModal()
     1435        dlg.Destroy()
     1436        print('start regress to '+str(ver))
     1437        GSASIIpath.svnUpdateProcess(
     1438            projectfile=self.frame.GSASprojectfile,
     1439            version=str(ver)
     1440            )
     1441        self.frame.OnFileSave(event)
    14281442        return
    14291443
  • trunk/GSASIIpath.py

    r1020 r1047  
    5151    raise Exception,"**** ERROR GSAS-II binary libraries not found, GSAS-II fails ****"
    5252# add the data import and export directory to the search path
    53 path2GSAS2 = os.path.join(
    54     os.path.dirname(os.path.realpath(__file__)), # location of this file
    55     'imports')
    56 pathlist = sys.path[:]
    57 if path2GSAS2 not in sys.path: sys.path.append(path2GSAS2)
    58 path2GSAS2 = os.path.join(
    59     os.path.dirname(os.path.realpath(__file__)), # location of this file
    60     'exports')
    61 if path2GSAS2 not in sys.path: sys.path.append(path2GSAS2)
     53path2GSAS2 = os.path.dirname(os.path.realpath(__file__)) # location of this file; save before any changes in pwd
     54newpath = os.path.join(path2GSAS2,'imports')
     55if newpath not in sys.path: sys.path.append(newpath)
     56newpath = os.path.join(path2GSAS2,'exports')
     57if newpath not in sys.path: sys.path.append(newpath)
     58
    6259# routines for looking a version numbers in files
    6360version = -1
     
    211208       string representation of an integer value when cast. A value of None (default)
    212209       causes the latest version on the server to be used.
    213     :returns: A dictionary with the files that have been changed/added and
    214           a code describing how they have been updated (see changetype) or
    215           None if there is a subversion error (likely because the path is
    216           not a repository or svn is not found)
    217     '''
    218     import subprocess
    219     changetype = {'A': 'Added', 'D': 'Deleted', 'U': 'Updated',
    220                   'C': 'Conflict', 'G': 'Merged', 'E': 'Replaced'}
     210    '''
     211    import subprocess
    221212    svn = whichsvn()
    222213    if not svn: return
     
    233224    print out
    234225    if err:
     226        print(60*"=")
     227        print ("****** An error was noted, see below *********")
     228        print(60*"=")
    235229        print err
    236         return
    237     l = out.split()
    238     updates = {}
    239     for i,j in zip(l[::2],l[1::2]):
    240         if i == 'Updated': break
    241         if i == 'At': break
    242         t = changetype.get(i[0])
    243         if not t: continue
    244         f = os.path.split(j)[1]
    245         if updates.get(t):
    246             updates[t] += ', '+f
    247         else:
    248             updates[t] = f
    249     return updates
     230        sys.exit()
     231
     232def svnUpdateProcess(version=None,projectfile=None):
     233    '''perform an update of GSAS-II in a separate python process'''
     234    import subprocess
     235    if not projectfile:
     236        projectfile = ''
     237    else:
     238        projectfile = os.path.realpath(projectfile)
     239        print 'restart using',projectfile
     240    if not version:
     241        version = ''
     242    else:
     243        version = str(version)
     244    # start the upgrade in a separate interpreter (avoids loading .pyd files)
     245    subprocess.Popen([sys.executable,__file__,projectfile,version])
     246    sys.exit()
     247
     248if __name__ == '__main__':
     249    import subprocess
     250    import time
     251    time.sleep(1) # delay to give the main process a chance to exit
     252    # perform an update and restart GSAS-II
     253    project,version = sys.argv[1:3]
     254    loc = os.path.dirname(__file__)
     255    if version:
     256        print("Regress to version "+str(version))
     257        svnUpdateDir(loc,version=version)
     258    else:
     259        print("Update to current version")
     260        svnUpdateDir(loc)
     261    if project:
     262        print("Restart GSAS-II with project file "+str(project))
     263        subprocess.Popen([sys.executable,os.path.join(loc,'GSASII.py'),project])
     264    else:
     265        print("Restart GSAS-II without a project file ")
     266        subprocess.Popen([sys.executable,os.path.join(loc,'GSASII.py')])
     267    print 'exiting update process'
     268    sys.exit()
     269   
Note: See TracChangeset for help on using the changeset viewer.