Changeset 2521


Ignore:
Timestamp:
Nov 13, 2016 8:27:56 PM (5 years ago)
Author:
toby
Message:

extensions to Peak List: vary via menu items; animate line dragging; highlight selected peak(s)

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r2520 r2521  
    19561956        self.PeakEdit = wx.Menu(title='')
    19571957        self.PeakMenu.Append(menu=self.PeakEdit, title='Peak Fitting')
     1958        self.peaksSel = self.PeakEdit.Append(wx.ID_ANY,
     1959            help='Set refinement flags for selected peaks',
     1960            kind=wx.ITEM_NORMAL,
     1961            text='Set sel. ref flags...')
     1962        self.peaksAll = self.PeakEdit.Append(wx.ID_ANY,
     1963            help='Set refinement flags for all peaks',
     1964            kind=wx.ITEM_NORMAL,
     1965            text='Set all ref flags...')
    19581966        self.AutoSearch = self.PeakEdit.Append(help='Automatic peak search',
    19591967            id=wxID_AUTOSEARCH, kind=wx.ITEM_NORMAL,text='Auto search')
  • trunk/GSASIIphsGUI.py

    r2517 r2521  
    1         #indx = Atoms.GetSelectedRows()
    21# -*- coding: utf-8 -*-
    32#GSASII - phase data display routines
  • trunk/GSASIIplot.py

    r2508 r2521  
    14621462            xy[1] = xy[1]**2
    14631463        if G2frame.PatternTree.GetItemText(PickId) == 'Peak List':
    1464             if ind.all() != [0] and ObsLine[0].get_label() in str(pick):                                    #picked a data point
     1464            if ind.all() != [0] and ObsLine[0].get_label() in str(pick):    #picked a data point
    14651465                data = G2frame.PatternTree.GetItemPyData(G2frame.PickId)
    14661466                XY = G2mth.setPeakparms(Parms,Parms2,xy[0],xy[1])
     
    14701470                PlotPatterns(G2frame,plotType=plottype)
    14711471            else:                                                   #picked a peak list line
     1472                # prepare to animate move of line
    14721473                G2frame.itemPicked = pick
     1474                pick.set_linestyle(':') # set line as dotted
     1475                Page = G2frame.G2plotNB.nb.GetPage(plotNum)
     1476                Plot = Page.figure.gca()
     1477                Page.canvas.draw() # refresh without dotted line & save bitmap
     1478                savedplot = Page.canvas.copy_from_bbox(Page.figure.gca().bbox)
     1479                G2frame.cid = Page.canvas.mpl_connect('motion_notify_event', OnDragLine)
     1480                pick.set_linestyle('--') # back to dashed
    14731481        elif G2frame.PatternTree.GetItemText(PickId) == 'Limits':
    14741482            if ind.all() != [0]:                                    #picked a data point
     
    20032011                        Page.canvas.SetToolTipString(tip)
    20042012                        data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'))
    2005                         for item in data['peaks']:
     2013                        selectedPeaks = list(set(
     2014                            [row for row,col in G2frame.dataDisplay.GetSelectedCells()] +
     2015                            G2frame.dataDisplay.GetSelectedRows()))
     2016                        for i,item in enumerate(data['peaks']):
     2017                            if i in selectedPeaks:
     2018                                Ni = N+1
     2019                            else:
     2020                                Ni = N
    20062021                            if G2frame.plotStyle['qPlot']:
    2007                                 Lines.append(Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,item[0]),color=colors[N%6],picker=2.))
     2022                                Lines.append(Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,item[0]),color=colors[Ni%6],picker=2.))
    20082023                            elif G2frame.plotStyle['dPlot']:
    2009                                 Lines.append(Plot.axvline(G2lat.Pos2dsp(Parms,item[0]),color=colors[N%6],picker=2.))
     2024                                Lines.append(Plot.axvline(G2lat.Pos2dsp(Parms,item[0]),color=colors[Ni%6],picker=2.))
    20102025                            else:
    2011                                 Lines.append(Plot.axvline(item[0],color=colors[N%6],picker=2.))
     2026                                Lines.append(Plot.axvline(item[0],color=colors[Ni%6],picker=2.))
    20122027                    if G2frame.PatternTree.GetItemText(PickId) == 'Limits':
    20132028                        tip = 'On data point: Lower limit - L MB; Upper limit - R MB. On limit: MB down to move'
  • trunk/GSASIIpwdGUI.py

    r2519 r2521  
    745745        G2plt.PlotPatterns(G2frame,plotType='PWDR')
    746746           
     747    def SelectVars(rows):
     748        '''Set or clear peak refinement variables for peaks listed in rows
     749        '''
     750        refOpts = {G2frame.dataDisplay.GetColLabelValue(i):i+1 for i in range(G2frame.dataDisplay.GetNumberCols()) if G2frame.dataDisplay.GetColLabelValue(i) != "refine"}
     751        dlg = G2G.G2MultiChoiceDialog(
     752            G2frame.dataFrame,
     753            'Select columns to refine',
     754            'Refinement Selection', sorted(refOpts.keys()),
     755            filterBox=False,toggle=False)
     756        sels = []
     757        try:
     758            if dlg.ShowModal() == wx.ID_OK:
     759                sels = [sorted(refOpts.keys())[i] for i in dlg.GetSelections()]
     760            else:
     761                return
     762        finally:
     763            dlg.Destroy()
     764        for r in rows:
     765            for lbl,c in refOpts.iteritems():
     766                data['peaks'][r][c] = lbl in sels
     767        UpdatePeakGrid(G2frame,data)
     768       
     769    def OnRefineSelected(event):
     770        '''set refinement flags for the selected peaks
     771        '''
     772        rows = list(set([row for row,col in G2frame.dataDisplay.GetSelectedCells()] +
     773                        G2frame.dataDisplay.GetSelectedRows()))
     774        if not rows:
     775            wx.MessageBox('No selected rows. You must select rows or cells before using this command',
     776                          caption='No selected peaks')
     777            return
     778        SelectVars(rows)
     779
     780    def OnRefineAll(event):
     781        '''set refinement flags for all peaks
     782        '''
     783        SelectVars(range(G2frame.dataDisplay.GetNumberRows()))
     784
     785    def onSelectedRow(event):
     786        '''Called when a peak is selected so that it can be highlighted in the plot
     787        '''
     788        event.Skip()
     789        wx.CallAfter(G2plt.PlotPatterns,G2frame,plotType='PWDR')
     790                           
     791    #======================================================================
     792    # beginning of UpdatePeakGrid init
     793    #======================================================================
    747794    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.PeakMenu)
    748795    if not G2frame.dataFrame.GetStatusBar():
     
    752799    G2frame.Bind(wx.EVT_MENU, OnCopyPeaks, id=G2gd.wxID_PEAKSCOPY)
    753800    G2frame.Bind(wx.EVT_MENU, OnUnDo, id=G2gd.wxID_UNDO)
     801    G2frame.Bind(wx.EVT_MENU, OnRefineSelected, id=G2frame.dataFrame.peaksSel.GetId())
     802    G2frame.Bind(wx.EVT_MENU, OnRefineAll, id=G2frame.dataFrame.peaksAll.GetId())
    754803    G2frame.Bind(wx.EVT_MENU, OnLSQPeakFit, id=G2gd.wxID_LSQPEAKFIT)
    755804    G2frame.Bind(wx.EVT_MENU, OnOneCycle, id=G2gd.wxID_LSQONECYCLE)
     
    807856    G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshPeakGrid)
    808857    G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)
     858    G2frame.dataDisplay.Bind(wg.EVT_GRID_LABEL_LEFT_CLICK, onSelectedRow)
     859    G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_LEFT_CLICK, onSelectedRow)
    809860    G2frame.dataDisplay.SetMargins(0,0)
    810861    G2frame.dataDisplay.AutoSizeColumns(False)
    811862    G2frame.dataFrame.setSizePosLeft([535,350])
    812863    G2frame.dataFrame.SendSizeEvent()
    813        
     864
    814865################################################################################
    815866#####  Background
Note: See TracChangeset for help on using the changeset viewer.