Changeset 2524


Ignore:
Timestamp:
Nov 15, 2016 1:36:55 PM (5 years ago)
Author:
vondreele
Message:

in ValidatedTxtCtrl? have _onLeaveWindow ignore mouse crusing
replace the Table in limits with FlexGrids? & Text boxes

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrls.py

    r2516 r2524  
    528528        but (unlike _onLoseFocus) don't update the textbox contents.
    529529        '''
     530        if not self.IsModified():   #ignore mouse crusing
     531            return
    530532        if self.evaluated and not self.invalid: # deal with computed expressions
    531533            self.evaluated = False # expression has been recast as value, reset flag
  • trunk/GSASIIplot.py

    r2521 r2524  
    235235                Plot = Page.figure.gca()          #get previous plot
    236236                limits = Plot.get_xlim(),Plot.get_ylim() # save previous limits
     237#                print 'Plot limits:',limits
    237238                if newImage:
    238239                    Page.figure.clf()
  • trunk/GSASIIpwdGUI.py

    r2521 r2524  
    12731273    '''respond to selection of PWDR Limits data tree item.
    12741274    '''
    1275     if G2frame.dataDisplay:
    1276         G2frame.dataFrame.Clear()
    1277     G2frame.ifGetExclude = False
    1278        
    1279     def KeyEditPeakGrid(event):
    1280         '''for deleting excluded regions
    1281         '''
    1282         if event.GetKeyCode() == wx.WXK_DELETE:
    1283             row = G2frame.dataDisplay.GetSelectedRows()[0]
    1284             if row > 1: #can't delete limits!
    1285                 del(data[row])
    1286                 wx.CallAfter(UpdateLimitsGrid,G2frame,data,plottype)
    1287                 G2plt.PlotPatterns(G2frame,plotType=plottype)
    1288                        
    1289     def RefreshLimitsGrid(event):
    1290         event.StopPropagation()
    1291         data = G2frame.LimitsTable.GetData()
    1292         old = data[0]
    1293         new = data[1]
    1294         new[0] = max(old[0],new[0])
    1295         new[1] = max(new[0],min(old[1],new[1]))
    1296         excl = []
    1297         if len(data) > 2:
    1298             excl = data[2:]
    1299             for item in excl:
    1300                 item[0] = max(old[0],item[0])
    1301                 item[1] = max(item[0],min(old[1],item[1]))
    1302         data = [old,new]+excl
    1303         G2frame.LimitsTable.SetData(data)
    1304         G2plt.PlotPatterns(G2frame,plotType=plottype)
    1305        
     1275#    if G2frame.dataDisplay:
     1276#        G2frame.dataFrame.Clear()
     1277#    G2frame.ifGetExclude = False
     1278#       
     1279#    def KeyEditPeakGrid(event):
     1280#        '''for deleting excluded regions
     1281#        '''
     1282#        if event.GetKeyCode() == wx.WXK_DELETE:
     1283#            row = G2frame.dataDisplay.GetSelectedRows()[0]
     1284#            if row > 1: #can't delete limits!
     1285#                del(data[row])
     1286#                wx.CallAfter(UpdateLimitsGrid,G2frame,data,plottype)
     1287#                G2plt.PlotPatterns(G2frame,plotType=plottype)
     1288#                       
     1289#    def RefreshLimitsGrid(event):
     1290#        event.StopPropagation()
     1291#        data = G2frame.LimitsTable.GetData()
     1292#        old = data[0]
     1293#        new = data[1]
     1294#        new[0] = max(old[0],new[0])
     1295#        new[1] = max(new[0],min(old[1],new[1]))
     1296#        excl = []
     1297#        if len(data) > 2:
     1298#            excl = data[2:]
     1299#            for item in excl:
     1300#                item[0] = max(old[0],item[0])
     1301#                item[1] = max(item[0],min(old[1],item[1]))
     1302#        data = [old,new]+excl
     1303#        G2frame.LimitsTable.SetData(data)
     1304#        G2plt.PlotPatterns(G2frame,plotType=plottype)
     1305#       
     1306#    def OnLimitCopy(event):
     1307#        hst = G2frame.PatternTree.GetItemText(G2frame.PatternId)
     1308#        histList = GetHistsLikeSelected(G2frame)
     1309#        if not histList:
     1310#            G2frame.ErrorDialog('No match','No histograms match '+hst,G2frame.dataFrame)
     1311#            return
     1312#        copyList = []
     1313#        dlg = G2G.G2MultiChoiceDialog(
     1314#            G2frame.dataFrame,
     1315#            'Copy limits from\n'+str(hst[5:])+' to...',
     1316#            'Copy limits', histList)
     1317#        try:
     1318#            if dlg.ShowModal() == wx.ID_OK:
     1319#                for i in dlg.GetSelections():
     1320#                    item = histList[i]
     1321#                    Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
     1322#                    G2frame.PatternTree.SetItemPyData(
     1323#                        G2gd.GetPatternTreeItemId(G2frame,Id,'Limits'),copy.copy(data))
     1324#        finally:
     1325#            dlg.Destroy()
     1326#           
     1327#    def OnAddExcl(event):
     1328#        G2frame.ifGetExclude = True
     1329#        print 'Add excluded region'
     1330#       
     1331#    G2frame.LimitsTable = []
     1332#    colLabels = ['Tmin','Tmax']
     1333#    rowLabels = ['original','changed']
     1334#    for i in range(len(data)-2):
     1335#        rowLabels.append('exclude')
     1336#    Types = 2*[wg.GRID_VALUE_FLOAT+':12,5',]
     1337#    G2frame.LimitsTable = G2G.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)
     1338#    G2frame.dataFrame.SetLabel('Limits')
     1339#    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LimitMenu)
     1340#    if not G2frame.dataFrame.GetStatusBar():
     1341#        Status = G2frame.dataFrame.CreateStatusBar()
     1342#    if len(data)>2:
     1343#        Status.SetStatusText('To delete excluded region: select & press Delete key')
     1344#    G2frame.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY)
     1345#    G2frame.Bind(wx.EVT_MENU,OnAddExcl,id=G2gd.wxID_ADDEXCLREGION)   
     1346#    G2frame.dataDisplay = G2G.GSGrid(parent=G2frame.dataFrame)
     1347#    G2frame.dataDisplay.SetTable(G2frame.LimitsTable, True)   
     1348#    G2frame.dataDisplay.SetCellStyle(0,0,VERY_LIGHT_GREY,True)
     1349#    G2frame.dataDisplay.SetCellStyle(0,1,VERY_LIGHT_GREY,True)
     1350#    G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid)               
     1351#    G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
     1352#    G2frame.dataDisplay.SetMargins(0,0)
     1353#    G2frame.dataDisplay.AutoSizeColumns(False)
     1354#    G2frame.dataFrame.setSizePosLeft([230,260])                               
     1355#    G2frame.dataFrame.SendSizeEvent()
     1356#   
     1357#
     1358    def LimitSizer():
     1359        limits = wx.FlexGridSizer(2,3,0,5)
     1360        labels = ['Tmin','Tmax']
     1361        for i in [0,1]:
     1362            limits.Add(wx.StaticText(G2frame.dataDisplay,label=' Original %s: %.4f'%(labels[0],data[0][i])),0,WACV)
     1363            limits.Add(wx.StaticText(G2frame.dataDisplay,label=' New: '),0,WACV)
     1364            limits.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data[1],i,  \
     1365                min=data[0][0],max=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
     1366        return limits
     1367       
     1368    def AfterChange(invalid,value,tc):
     1369        if invalid: return
     1370        plottype = G2frame.PatternTree.GetItemText(G2frame.PatternId)[:4]
     1371        G2plt.PlotPatterns(G2frame,newPlot=False,plotType=plottype)  #unfortunately this resets the plot width
     1372
     1373    def ExclSizer():
     1374       
     1375        def OnDelExcl(event):
     1376            Obj = event.GetEventObject()
     1377            item = Indx[Obj.GetId()]
     1378            del(data[item+2])
     1379            G2plt.PlotPatterns(G2frame,newPlot=False,plotType=plottype)
     1380            wx.CallAfter(UpdateLimitsGrid,G2frame,data,plottype)
     1381       
     1382        Indx = {}
     1383        excl = wx.FlexGridSizer(0,3,0,5)
     1384        excl.Add(wx.StaticText(G2frame.dataDisplay,label=' From: '),0,WACV)
     1385        excl.Add(wx.StaticText(G2frame.dataDisplay,label=' To: '),0,WACV)
     1386        excl.Add(wx.StaticText(G2frame.dataDisplay,label=' Delete?: '),0,WACV)
     1387        for id,item in enumerate(data[2:]):
     1388            for i in [0,1]:
     1389                excl.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,item,i,  \
     1390                    min=data[0][0],max=data[0][1],nDig=(10,4),typeHint=float,OnLeave=AfterChange))
     1391            delExcl = wx.CheckBox(G2frame.dataDisplay,label='')
     1392            Indx[delExcl.GetId()] = id
     1393            delExcl.Bind(wx.EVT_CHECKBOX,OnDelExcl)
     1394            excl.Add(delExcl,0,WACV)
     1395        return excl
     1396               
    13061397    def OnLimitCopy(event):
    13071398        hst = G2frame.PatternTree.GetItemText(G2frame.PatternId)
     
    13291420        print 'Add excluded region'
    13301421       
    1331     G2frame.LimitsTable = []
    1332     colLabels = ['Tmin','Tmax']
    1333     rowLabels = ['original','changed']
    1334     for i in range(len(data)-2):
    1335         rowLabels.append('exclude')
    1336     Types = 2*[wg.GRID_VALUE_FLOAT+':12,5',]
    1337     G2frame.LimitsTable = G2G.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)
     1422    def Draw():
     1423        mainSizer = wx.BoxSizer(wx.VERTICAL)
     1424        mainSizer.Add(LimitSizer())
     1425        if len(data)>2:
     1426            mainSizer.Add((0,5),0)
     1427            mainSizer.Add(wx.StaticText(G2frame.dataFrame,label=' Excluded regions:'),0,WACV)
     1428            mainSizer.Add(ExclSizer())
     1429        mainSizer.Layout()   
     1430        G2frame.dataDisplay.SetSizer(mainSizer)
     1431        Size = mainSizer.Fit(G2frame.dataFrame)
     1432        G2frame.dataDisplay.SetSize(Size)
     1433        G2frame.dataFrame.setSizePosLeft(Size)
     1434       
     1435       
     1436    if G2frame.dataDisplay:
     1437        G2frame.dataFrame.DestroyChildren()
     1438    G2frame.ifGetExclude = False
     1439    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
     1440    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LimitMenu)
    13381441    G2frame.dataFrame.SetLabel('Limits')
    1339     G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LimitMenu)
    13401442    if not G2frame.dataFrame.GetStatusBar():
    13411443        Status = G2frame.dataFrame.CreateStatusBar()
    1342     if len(data)>2:
    1343         Status.SetStatusText('To delete excluded region: select & press Delete key')
    13441444    G2frame.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY)
    1345     G2frame.Bind(wx.EVT_MENU,OnAddExcl,id=G2gd.wxID_ADDEXCLREGION)   
    1346     G2frame.dataDisplay = G2G.GSGrid(parent=G2frame.dataFrame)
    1347     G2frame.dataDisplay.SetTable(G2frame.LimitsTable, True)   
    1348     G2frame.dataDisplay.SetCellStyle(0,0,VERY_LIGHT_GREY,True)
    1349     G2frame.dataDisplay.SetCellStyle(0,1,VERY_LIGHT_GREY,True)
    1350     G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid)               
    1351     G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
    1352     G2frame.dataDisplay.SetMargins(0,0)
    1353     G2frame.dataDisplay.AutoSizeColumns(False)
    1354     G2frame.dataFrame.setSizePosLeft([230,260])                               
    1355     G2frame.dataFrame.SendSizeEvent()
     1445    G2frame.Bind(wx.EVT_MENU,OnAddExcl,id=G2gd.wxID_ADDEXCLREGION)
     1446    Draw()
     1447   
     1448   
    13561449   
    13571450################################################################################
Note: See TracChangeset for help on using the changeset viewer.