@@ -178,6 +178,9 @@ def SearchGroups(G2frame,Histograms,hist):
178178 return {'groupDict' :groupDict ,'notGrouped' :noMatchCount ,'template' :srchStr }
179179
180180def UpdateGroup (G2frame ,item ,plot = True ):
181+ def refreshWindow ():
182+ wx .CallAfter (UpdateGroup ,G2frame ,item ,False )
183+
181184 def onDisplaySel (event ):
182185 G2frame .GroupInfo ['displayMode' ] = dsplType .GetValue ()
183186 wx .CallAfter (UpdateGroup ,G2frame ,item ,False )
@@ -268,6 +271,7 @@ def OnCopySel(event):
268271 Histograms ,Phases = G2frame .GetUsedHistogramsAndPhasesfromTree ()
269272 if not hasattr (G2frame ,'GroupInfo' ):
270273 G2frame .GroupInfo = {}
274+ # start with Sample but reuse the last displayed item
271275 G2frame .GroupInfo ['displayMode' ] = G2frame .GroupInfo .get ('displayMode' ,'Sample' )
272276 G2frame .GroupInfo ['groupName' ] = G2frame .GPXtree .GetItemText (item )
273277 G2gd .SetDataMenuBar (G2frame ,G2frame .dataWindow .GroupMenu )
@@ -295,7 +299,7 @@ def OnCopySel(event):
295299 if G2frame .GroupInfo ['displayMode' ].startswith ('Hist' ):
296300 HAPframe (G2frame ,Histograms ,Phases )
297301 else :
298- HistFrame (G2frame ,Histograms )
302+ HistFrame (G2frame ,Histograms , refresh = refreshWindow )
299303 if plot : G2pwpl .PlotPatterns (G2frame ,plotType = 'GROUP' )
300304 G2frame .dataWindow .SetDataSize ()
301305 #wx.CallLater(100,G2frame.SendSizeEvent)
@@ -382,8 +386,24 @@ def onSetAll(event):
382386 for c in valEditList :
383387 c .ChangeValue (firstVal )
384388
389+ def onResetAll (event ):
390+ '''Respond to the Reset button. Copies the initial setting (which
391+ should be index 0) to the current setting (which should be index 1)
392+ for all histograms in the current row. This is only used for
393+ instrument parameters.
394+ '''
395+ but = event .GetEventObject ()
396+ dataSource = but .valDict ['dataSource' ]
397+ for item ,hist in zip (but .valDict ['arrays' ],but .valDict ['hists' ]):
398+ arr ,indx = indexArrayRef (dataSource ,hist ,item )
399+ if indx == 1 :
400+ arr [1 ] = arr [0 ]
401+ refresh = but .valDict .get ('refresh' )
402+ if refresh :
403+ refresh ()
404+
385405def displayDataArray (rowLabels ,DataArray ,Sizer ,Panel ,lblRow = False ,deltaMode = False ,
386- lblSizer = None ,lblPanel = None ,CopyCtrl = True ):
406+ lblSizer = None ,lblPanel = None ,CopyCtrl = True , refresh = None ):
387407 '''Displays the data table in `DataArray` in Scrolledpanel `Panel`
388408 with wx.FlexGridSizer `Sizer`.
389409 '''
@@ -439,6 +459,13 @@ def displayDataArray(rowLabels,DataArray,Sizer,Panel,lblRow=False,deltaMode=Fals
439459 refAll .Bind (wx .EVT_BUTTON ,onRefineAll )
440460 else :
441461 lblSizer .Add ((- 1 ,- 1 ))
462+ if deltaMode :
463+ resetBut = wx .Button (lblPanel ,label = '↩' ,style = wx .BU_EXACTFIT )
464+ resetBut .valDict = {'arrays' : valList , 'hists' : histList ,
465+ 'dataSource' :dataSource ,
466+ 'refresh' : refresh }
467+ lblSizer .Add (resetBut ,0 ,wx .ALIGN_CENTER_VERTICAL )
468+ resetBut .Bind (wx .EVT_BUTTON ,onResetAll )
442469
443470 i = - 1
444471 for hist in DataArray :
@@ -536,7 +563,7 @@ def displayDataArray(rowLabels,DataArray,Sizer,Panel,lblRow=False,deltaMode=Fals
536563 print ('Should not happen' ,DataArray [hist ][row ],hist ,row )
537564 return firstentry ,lblDict
538565
539- def HistFrame (G2frame ,Histograms ):
566+ def HistFrame (G2frame ,Histograms , refresh = None ):
540567 '''Put everything in a single FlexGridSizer.
541568 '''
542569 #---------------------------------------------------------------------
@@ -563,7 +590,7 @@ def HistFrame(G2frame,Histograms):
563590 dataSource = prmArray ['_dataSource' ]
564591 for hist in prmArray :
565592 if hist == '_dataSource' : continue
566- cols = len (prmArray )
593+ # cols = len(prmArray)
567594 prevkey = None
568595 for key in prmArray [hist ]:
569596 # find delta-terms that are non-zero
@@ -579,22 +606,25 @@ def HistFrame(G2frame,Histograms):
579606 else :
580607 rowLabels .insert (rowLabels .index (prevkey )+ 1 ,key )
581608 prevkey = key
609+ n = 2 # extra columns
582610 # remove rows where delta-terms are all zeros
583611 if '\u0394 ' in G2frame .GroupInfo ['displayMode' ]:
584612 rowLabels = [i for i in rowLabels if i in nonZeroRows ]
613+ n += 1
585614 #======= Generate GUI ===============================================
586615 # layout the window
587616 panel = midPanel = G2frame .dataWindow
588617 mainSizer = wx .BoxSizer (wx .VERTICAL )
589618 G2G .HorizontalLine (mainSizer ,panel )
590619 panel .SetSizer (mainSizer )
591620 deltaMode = "\u0394 " in G2frame .GroupInfo ['displayMode' ]
592- n = 2
593621 if CopyCtrl and len (prmArray ) > 2 : n += 1 # add column for copy (when more than one histogram)
594622 valSizer = wx .FlexGridSizer (0 ,len (prmArray )+ n - 1 ,3 ,10 )
595623 mainSizer .Add (valSizer ,1 ,wx .EXPAND )
596624 valSizer .Add (wx .StaticText (midPanel ,label = ' ' ))
597625 valSizer .Add (wx .StaticText (midPanel ,label = ' Ref ' ))
626+ if '\u0394 ' in G2frame .GroupInfo ['displayMode' ]:
627+ valSizer .Add (wx .StaticText (midPanel ,label = ' reset ' ))
598628 for i ,hist in enumerate (histLabels (G2frame )[1 ]):
599629 if i == 1 and CopyCtrl :
600630 if deltaMode :
@@ -606,7 +636,8 @@ def HistFrame(G2frame,Histograms):
606636 0 ,wx .ALIGN_CENTER )
607637 firstentry ,lblDict = displayDataArray (rowLabels ,prmArray ,valSizer ,midPanel ,
608638 lblRow = True ,
609- deltaMode = deltaMode ,CopyCtrl = CopyCtrl )
639+ deltaMode = deltaMode ,CopyCtrl = CopyCtrl ,
640+ refresh = refresh )
610641 if firstentry is not None : # prevent scroll to show last entry
611642 wx .Window .SetFocus (firstentry )
612643 firstentry .SetInsertionPoint (0 ) # prevent selection of text in widget
@@ -1101,7 +1132,7 @@ def getHAPvals(G2frame,phase,Histograms,Phases):
11011132 }
11021133 indexDict [hist ]['SH txtr indx' ] = {
11031134 'str' : None ,
1104- 'txt' : f'{ G2lat .textureIndex (PhaseData [' Histograms' ][hist ][' Pref.Ori.' ][5 ]):.3f} ' }
1135+ 'txt' : f'{ G2lat .textureIndex (PhaseData [" Histograms" ][hist ][" Pref.Ori." ][5 ]):.3f} ' }
11051136 # misc: Layer Disp, Extinction
11061137 if 'Layer Disp' in PhaseData ['Histograms' ][hist ]:
11071138 indexDict [hist ]['Layer displ' ] = {
0 commit comments