Changeset 1944
- Timestamp:
- Jul 22, 2015 4:14:29 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrls.py
r1911 r1944 525 525 if event: event.Skip() 526 526 527 ################################################################################ 527 528 class NumberValidator(wx.PyValidator): 528 529 '''A validator to be used with a TextCtrl to prevent … … 719 720 return # Returning without calling event.Skip, which eats the keystroke 720 721 722 ################################################################################ 721 723 class ASCIIValidator(wx.PyValidator): 722 724 '''A validator to be used with a TextCtrl to prevent … … 2088 2090 2089 2091 ################################################################################ 2092 class G2HistoDataDialog(wx.Dialog): 2093 '''A dialog for editing histogram data globally. 2094 2095 :param wx.Frame ParentFrame: reference to parent frame 2096 :param str title: heading above list of choices 2097 :param str header: Title to place on window frame 2098 :param list ParmList: a list of names for the columns 2099 :param list ParmFmt: a list of formatting strings for the columns 2100 :param list: HistoList: a list of histogram names 2101 :param list ParmData: a list of lists of data matched to ParmList; one for each item in HistoList 2102 :param bool monoFont: If False (default), use a variable-spaced font; 2103 if True use a equally-spaced font. 2104 :param kw: optional keyword parameters for the wx.Dialog may 2105 be included such as size [which defaults to `(320,310)`] and 2106 style (which defaults to 2107 ``wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.CENTRE | wx.OK | wx.CANCEL``); 2108 note that ``wx.OK`` and ``wx.CANCEL`` controls the presence of the eponymous buttons in the dialog. 2109 :returns: the modified ParmData 2110 2111 ''' 2112 2113 def __init__(self,parent, title, header,ParmList,ParmFmt,HistoList,ParmData, 2114 monoFont=False, **kw): 2115 2116 def OnOk(sevent): 2117 parent.Raise() 2118 self.EndModal(wx.ID_OK) 2119 2120 def OnModify(event): 2121 Obj = event.GetEventObject() 2122 irow,it = Indx[Obj.GetId()] 2123 try: 2124 val = float(Obj.GetValue()) 2125 except ValueError: 2126 val = self.ParmData[irow][it] 2127 self.ParmData[irow][it] = val 2128 Obj.SetValue(self.ParmFmt[it]%val) 2129 2130 # process keyword parameters, notably style 2131 options = {'size':(600,310), # default Frame keywords 2132 'style':wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.CENTRE| wx.OK | wx.CANCEL, 2133 } 2134 options.update(kw) 2135 self.ParmList = ParmList 2136 self.ParmFmt = ParmFmt 2137 self.HistoList = HistoList 2138 self.ParmData = ParmData 2139 nCol = len(ParmList) 2140 if options['style'] & wx.OK: 2141 useOK = True 2142 options['style'] ^= wx.OK 2143 else: 2144 useOK = False 2145 if options['style'] & wx.CANCEL: 2146 useCANCEL = True 2147 options['style'] ^= wx.CANCEL 2148 else: 2149 useCANCEL = False 2150 # create the dialog frame 2151 wx.Dialog.__init__(self,parent,wx.ID_ANY,header,**options) 2152 panel = wxscroll.ScrolledPanel(self) 2153 # fill the dialog 2154 Sizer = wx.BoxSizer(wx.VERTICAL) 2155 Sizer.Add((-1,5)) 2156 Sizer.Add(wx.StaticText(panel,label=title),0,WACV) 2157 dataSizer = wx.FlexGridSizer(0,nCol+1,0,0) 2158 self.sel = [] 2159 self.mod = [] 2160 Indx = {} 2161 for item in ['Histogram',]+self.ParmList: 2162 dataSizer.Add(wx.StaticText(panel,-1,label=' %10s '%(item)),0,WACV) 2163 for irow,name in enumerate(self.HistoList): 2164 dataSizer.Add(wx.StaticText(panel,label=name),0,WACV|wx.LEFT|wx.RIGHT,10) 2165 for it,item in enumerate(self.ParmData[irow]): 2166 dat = wx.TextCtrl(panel,-1,value=self.ParmFmt[it]%(item),style=wx.TE_PROCESS_ENTER) 2167 dataSizer.Add(dat,0,WACV) 2168 dat.Bind(wx.EVT_TEXT_ENTER,OnModify) 2169 dat.Bind(wx.EVT_KILL_FOCUS,OnModify) 2170 Indx[dat.GetId()] = [irow,it] 2171 Sizer.Add(dataSizer) 2172 Sizer.Add((-1,10)) 2173 # OK/Cancel buttons 2174 btnsizer = wx.StdDialogButtonSizer() 2175 if useOK: 2176 self.OKbtn = wx.Button(panel, wx.ID_OK) 2177 self.OKbtn.SetDefault() 2178 btnsizer.AddButton(self.OKbtn) 2179 self.OKbtn.Bind(wx.EVT_BUTTON, OnOk) 2180 if useCANCEL: 2181 btn = wx.Button(panel, wx.ID_CANCEL) 2182 btnsizer.AddButton(btn) 2183 btnsizer.Realize() 2184 Sizer.Add((-1,5)) 2185 Sizer.Add(btnsizer,0,wx.ALIGN_LEFT,20) 2186 Sizer.Add((-1,5)) 2187 # OK done, let's get outa here 2188 panel.SetSizer(Sizer) 2189 panel.SetAutoLayout(1) 2190 panel.SetupScrolling() 2191 Size = [450,375] 2192 panel.SetSize(Size) 2193 Size[0] += 25; Size[1]+= 25 2194 self.SetSize(Size) 2195 2196 def GetData(self): 2197 'Returns the modified ParmData' 2198 return self.ParmData 2199 2200 ################################################################################ 2090 2201 def ItemSelector(ChoiceList, ParentFrame=None, 2091 2202 title='Select an item', … … 2162 2273 val = dlg.ShowModal() 2163 2274 2164 ################################################################################2165 ####2166 2275 ################################################################################ 2167 2276 class OrderBox(wxscroll.ScrolledPanel): … … 2652 2761 ################################################################################ 2653 2762 #### Help support routines 2654 ################################################################################2655 2763 ################################################################################ 2656 2764 class MyHelp(wx.Menu): -
trunk/GSASIIimgGUI.py
r1936 r1944 964 964 data['GonioAngles'][item] = value 965 965 Obj.SetValue('%8.2f'%(value)) 966 967 def OnGlobalEdit(event): 968 Names = [] 969 Items = [] 970 if G2frame.PatternTree.GetCount(): 971 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 972 while id: 973 name = G2frame.PatternTree.GetItemText(id) 974 if 'IMG' in name: 975 ctrls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id,'Image Controls')) 976 Names.append(name) 977 Items.append(ctrls['GonioAngles']) 978 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 979 if len(Names) == 1: 980 G2frame.ErrorDialog('Nothing for global editing','There must be more than one "IMG" pattern') 981 return 982 dlg = G2G.G2HistoDataDialog(G2frame,' Edit sample goniometer data:', 983 'Edit data',['Omega','Chi','Phi'],['%.2f','%.2f','%.2f'],Names,Items) 984 try: 985 if dlg.ShowModal() == wx.ID_OK: 986 result = dlg.GetData() 987 id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root) 988 while id: 989 name = G2frame.PatternTree.GetItemText(id) 990 if 'IMG' in name: 991 ctrls = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id,'Image Controls')) 992 vals = Items[Names.index(name)] 993 ctrls['GonioAngles'] = vals 994 # G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Image Controls'),ctrls) 995 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 996 finally: 997 dlg.Destroy() 998 G2frame.PatternTree.SelectItem(G2frame.PickId) 966 999 967 1000 gonioSizer = wx.BoxSizer(wx.HORIZONTAL) … … 976 1009 ValObj[angle.GetId()] = i 977 1010 gonioSizer.Add(angle,0,WACV) 1011 globEdit = wx.Button(G2frame.dataDisplay,-1,'Global edit') 1012 globEdit.Bind(wx.EVT_BUTTON,OnGlobalEdit) 1013 gonioSizer.Add(globEdit,0,WACV) 978 1014 return gonioSizer 979 1015 -
trunk/GSASIIphsGUI.py
r1940 r1944 4205 4205 'Extinction':[0.0,False],'Babinet':{'BabA':[0.0,False],'BabU':[0.0,False]}} 4206 4206 refList = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Reflection Lists')) 4207 refList[generalData['Name']] = []4207 refList[generalData['Name']] = {} 4208 4208 data['Histograms'] = UseList 4209 4209 wx.CallAfter(G2ddG.UpdateDData,G2frame,DData,data) -
trunk/GSASIIplot.py
r1933 r1944 1790 1790 Phases = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Reflection Lists')) 1791 1791 for pId,phase in enumerate(Phases): 1792 peaks = Phases[phase] ['RefList']1792 peaks = Phases[phase].get('RefList',[]) 1793 1793 if not len(peaks): 1794 1794 continue -
trunk/GSASIIstrIO.py
r1923 r1944 480 480 import distutils.file_util as dfu 481 481 GPXback = getBackupName(GPXfile,makeBack) 482 dfu.copy_file(GPXfile,GPXback) 482 tries = 0 483 while True: 484 try: 485 dfu.copy_file(GPXfile,GPXback) 486 break 487 except: 488 tries += 1 489 if tries > 10: 490 return GPXfile #failed! 491 time.sleep(1) #just wait a second! 483 492 return GPXback 484 493
Note: See TracChangeset
for help on using the changeset viewer.