Changeset 3013


Ignore:
Timestamp:
Aug 17, 2017 2:59:41 PM (4 years ago)
Author:
toby
Message:

Masks: fix drag bug, set spot size; fix windows positioning

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrlGUI.py

    r3001 r3013  
    19871987################################################################################
    19881988class SingleFloatDialog(wx.Dialog):
    1989     'Dialog to obtain a single float value from user'
     1989    '''Dialog to obtain a single float value from user
     1990
     1991    Typical usage::
     1992
     1993            limits = (0,1)
     1994            dlg = G2G.SingleFloatDialog(G2frame,'New value','Enter new value for...',default,limits)
     1995            if dlg.ShowModal() == wx.ID_OK:
     1996                parm = dlg.GetValue()
     1997            dlg.Destroy()   
     1998
     1999    '''
    19902000    def __init__(self,parent,title,prompt,value,limits=[0.,1.],format='%.5g'):
    19912001        wx.Dialog.__init__(self,parent,-1,title,
  • trunk/GSASIIdataGUI.py

    r3008 r3013  
    26682668        self.plotFrame.Show()
    26692669
    2670         try:
    2671             main_pos = eval(GSASIIpath.GetConfigValue('Main_Pos'))
    2672             self.SetPosition(main_pos)
    2673             if GetDisplay(main_pos) is None:
    2674                 self.Center()
    2675         except:
    2676             if GSASIIpath.GetConfigValue('Main_Pos'):
    2677                 print('Value for config Main_Pos {} is invalid'.format(GSASIIpath.GetConfigValue('Main_Pos')))
    2678                 self.Center()
    2679            
    2680         try:
    2681             plot_pos = eval(GSASIIpath.GetConfigValue('Plot_Pos'))
    2682             self.plotFrame.SetPosition(plot_pos)
    2683             if GetDisplay(plot_pos) is None:
    2684                 self.plotFrame.Center()
    2685         except:
    2686             if GSASIIpath.GetConfigValue('Plot_Pos'):
    2687                 print('Value for config Plot_Pos {} is invalid'.format(GSASIIpath.GetConfigValue('Plot_Pos')))
    2688                 self.plotFrame.Center()
    2689        
     2670        for win,var in ((self,'Main_Pos'),(self.plotFrame,'Plot_Pos')):
     2671            try:
     2672                pos = GSASIIpath.GetConfigValue(var)
     2673                if type(pos) is str: pos = eval(pos)
     2674                win.SetPosition(pos)
     2675                if GetDisplay(pos) is None: win.Center()
     2676            except:
     2677                if GSASIIpath.GetConfigValue(var):
     2678                    print('Value for config {} {} is invalid'.format(var,GSASIIpath.GetConfigValue(var)))
     2679                    win.Center()
     2680
    26902681    def __init__(self, parent):
    26912682        self.ExportLookup = {}
  • trunk/GSASIIplot.py

    r3010 r3013  
    45324532        G2frame.MaskKey = 's'
    45334533        (x0,y0),(x1,y1) = Plot.get_position().get_points()
    4534         Page.figure.suptitle('Multiple spot mode on, press s or right-click to end',color='r',fontweight='bold')
    45354534        Page.Choice[-1] = 's: stop multiple spot mask mode'
    4536         Page.canvas.draw()
     4535        ShowSpotMaskInfo(G2frame,Page)
     4536
     4537def ShowSpotMaskInfo(G2frame,Page):
     4538    if G2frame.MaskKey == 's':
     4539        Page.figure.suptitle('Multiple spot mode on (size={}), press s or right-click to end'
     4540                             .format(G2frame.spotSize),color='r',fontweight='bold')
     4541    else:
     4542        Page.figure.suptitle('New spot size={}'.format(G2frame.spotSize),
     4543                             color='r',fontweight='bold')
     4544    Page.canvas.draw()
    45374545
    45384546def ComputeArc(angI,angO,wave,azm0=0,azm1=362):
     
    45894597    Data = G2frame.GPXtree.GetItemPyData(
    45904598        G2gd.GetGPXtreeItemId(G2frame,G2frame.Image, 'Image Controls'))
     4599    G2frame.spotSize = GSASIIpath.GetConfigValue('Spot_mask_diameter',1.0)
     4600    G2frame.spotString = ''
     4601
    45914602# patch
    45924603    if 'invert_x' not in Data:
     
    46504661            return
    46514662        if treeItem == 'Masks':
    4652             if event.key == 's': # implement multiple spot mode
     4663            if event.key in [str(i) for i in range(10)]+['.']:
     4664                G2frame.spotString += event.key
     4665                return
     4666            elif G2frame.spotString:
     4667                try:
     4668                    size = float(G2frame.spotString)
     4669                    G2frame.spotSize = size
     4670                    print('Spot size set to {} mm'.format(size))
     4671                    ShowSpotMaskInfo(G2frame,Page)
     4672                except:
     4673                    print('Spot size {} invalid'.format(G2frame.spotString))
     4674                G2frame.spotString = ''
     4675            if event.key == 's':       # turn multiple spot mode on/off
    46534676                ToggleMultiSpotMask(G2frame)
    46544677                return
     4678            elif event.key == ' ':     # space key: ask for spot size
     4679                dlg = G2G.SingleFloatDialog(G2frame.G2plotNB,'Spot Size',
     4680                                            'Enter new value for spot size',
     4681                                            G2frame.spotSize,[.1,50])
     4682                if dlg.ShowModal() == wx.ID_OK:
     4683                    G2frame.spotSize = dlg.GetValue()
     4684                    print('Spot size set to {} mm'.format(G2frame.spotSize))
     4685                    ShowSpotMaskInfo(G2frame,Page)
     4686                dlg.Destroy()   
    46554687            elif event.key == 't':
    46564688                try: # called from menu?
    46574689                    Xpos,Ypos = event.xdata,event.ydata
    46584690                except AttributeError:
    4659                     G2G.G2MessageBox(G2frame,
     4691                    G2G.G2MessageBox(G2frame.G2plotNB,
    46604692                         'You must use the "{}" key from the keyboard'.format(event.key),
    46614693                         'Keyboard only')
    46624694                    return
    46634695                if not (event.xdata and event.ydata): return
    4664                 d = GSASIIpath.GetConfigValue('Spot_mask_diameter',1.0)
    4665                 spot = [event.xdata,event.ydata,d]
     4696                spot = [event.xdata,event.ydata,G2frame.spotSize]
    46664697                Masks['Points'].append(spot)
    46674698                artist = Circle(spot[:2],radius=spot[2]/2,fc='none',ec='r',picker=3)
     
    49684999        if treeItem not in ['Image Controls','Masks','Stress/Strain']:
    49695000            return
     5001        if treeItem == 'Masks' and G2frame.spotString:
     5002            try:
     5003                size = float(G2frame.spotString)
     5004                G2frame.spotSize = size
     5005                print('Spot size set to {} mm'.format(size))
     5006                ShowSpotMaskInfo(G2frame,Page)
     5007            except:
     5008                print('Spot size {} invalid'.format(G2frame.spotString))
     5009            G2frame.spotString = ''
    49705010        pixelSize = Data['pixelSize']
    49715011        scalex = 1000./pixelSize[0]
     
    50175057                    ToggleMultiSpotMask(G2frame)
    50185058                else:
    5019                     d = GSASIIpath.GetConfigValue('Spot_mask_diameter',1.0)
    5020                     spot = [Xpos,Ypos,d]
     5059                    spot = [Xpos,Ypos,G2frame.spotSize]
    50215060                    Masks['Points'].append(spot)
    50225061                    artist = Circle((Xpos,Ypos),radius=spot[2]/2,fc='none',ec='r',picker=3)
     
    50295068            elif G2frame.MaskKey == 's':
    50305069                if event.button == 1:
    5031                     d = GSASIIpath.GetConfigValue('Spot_mask_diameter',1.0)
    5032                     spot = [Xpos,Ypos,d]
     5070                    spot = [Xpos,Ypos,G2frame.spotSize]
    50335071                    Masks['Points'].append(spot)
    50345072                    G2imG.UpdateMasks(G2frame,Masks)
     
    51605198                G2frame.Razim.SetValue(Data['LRazimuth'][1])
    51615199            elif pickType == "Spot" and treeItem == 'Masks':
    5162                 if event.button == 3:
     5200                if event.button == 1:
     5201                    spotnum = G2frame.itemPicked.itemNumber
     5202                    Masks['Points'][spotnum][0:2] = G2frame.itemPicked.center
     5203                elif event.button == 3:
    51635204                    # update the selected circle mask with the last drawn values
    51645205                    spotnum = G2frame.itemPicked.itemNumber
     
    52145255                'p: polygon mask','f: frame mask',
    52155256                't: add spot mask at mouse position',
    5216                 'd: select spot mask to delete with mouse']
     5257                'd: select spot mask to delete with mouse',
     5258                ' typing a number sets diameter of new spot masks',
     5259                ' (space) input the spot mask diameter']
    52175260            Page.Choice.append('s: start multiple spot mask mode') # this must be the last choice
    52185261            if G2frame.logPlot:
Note: See TracChangeset for help on using the changeset viewer.