Changeset 1325
- Timestamp:
- May 5, 2014 5:15:00 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIexprGUI.py
r1324 r1325 20 20 21 21 ''' 22 # TODO: improve variable browser (search, add parameter descriptions)23 24 22 import re 25 23 import sys … … 107 105 self.fit = fit 108 106 self.depVarDict = depVarDict 107 'dict for dependent variables' 109 108 self.parmDict = {} 110 109 '''A copy of the G2 parameter dict (parmDict) except only numerical … … 135 134 self.expr = '' 136 135 'Expression as a text string' 137 self.dep Var = [None,None]138 ' index # and name for dependent variable selectionwhen depVarDict is specified'136 self.dependentVar = None 137 'name for dependent variable selection, when depVarDict is specified' 139 138 140 139 # process dictionary of values and create an index … … 165 164 self.exsizer.Add(label, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0) 166 165 elif depVarDict: 167 choice = G2gd.G2ChoiceButton( 168 self, 169 sorted(depVarDict.keys()), 170 self.depVar,0, 171 self.depVar,1, 172 self.RestartTimer) 166 self.depParmLists = IndexParmDict(self.depVarDict,False) 167 choices = ['','Phase','Hist./Phase','Hist.','Global'] 168 for i in range(1,len(choices)): # remove empty menus from choice list 169 if not len(self.depParmLists[i]): choices[i] = '' 170 self.depChoices = [i for i in range(len(choices)) if choices[i]] 171 choice = wx.Choice( 172 self, wx.ID_ANY, 173 choices = [choices[i] for i in self.depChoices] 174 ) 175 choice.SetSelection(wx.NOT_FOUND) 176 choice.Bind(wx.EVT_CHOICE,self.OnDepChoice) 173 177 self.exsizer.Add(choice, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0) 178 self.exsizer.Add((5,5)) 179 self.depLabel = wx.StaticText(self, wx.ID_ANY, ' ') 180 self.exsizer.Add(self.depLabel, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0) 174 181 label = wx.StaticText(self, wx.ID_ANY, ' = ') 175 182 self.exsizer.Add(label, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0) … … 218 225 var = exprObj.GetDepVar() 219 226 if var in self.depVarDict: 220 indx = sorted(self.depVarDict.keys()).index(var) 221 choice.SetSelection(indx) 222 self.depVar = [indx,var] 227 self.depLabel.SetLabel(var) 228 self.dependentVar = var 223 229 224 230 self.exCtrl.SetValue(self.expr) … … 250 256 ) 251 257 if self.depVarDict: 252 exprObj.SetDepVar(self.dep Var[1])258 exprObj.SetDepVar(self.dependentVar) 253 259 return exprObj 254 260 else: … … 338 344 Siz.Add( 339 345 wx.StaticText(self.varbox,wx.ID_ANY, 340 'Assign variables to labels'),346 'Assignment of variables to labels:'), 341 347 0,wx.EXPAND|wx.ALIGN_CENTER,0) 342 348 GridSiz = wx.FlexGridSizer(len(self.exprVarLst)+1,5,2,2) … … 353 359 for i in range(1,len(choices)): # remove empty menus from choice list 354 360 if not len(self.parmLists[i]): choices[i] = '' 355 356 361 self.AllowedChoices = [i for i in range(len(choices)) if choices[i]] 357 362 for lbl in lbls: … … 433 438 return 434 439 440 def OnDepChoice(self,event): 441 '''Respond to a selection of a variable type for a label in 442 an expression 443 ''' 444 sel = self.depChoices[event.GetEventObject().GetSelection()] 445 var = self.SelectG2var(sel,'Dependent variable',self.depParmLists[sel]) 446 if not var: 447 self.dependentVar = None 448 self.OnValidate(None) 449 event.GetEventObject().SetSelection(wx.NOT_FOUND) 450 return 451 self.dependentVar = var 452 self.depLabel.SetLabel(var) 453 self.OnValidate(None) 454 self.Layout() 455 435 456 def GetDepVar(self): 436 457 '''Returns the name of the dependent variable, when depVarDict is used. 437 458 ''' 438 return self.dep Var[1]459 return self.dependentVar 439 460 440 461 def OnChoice(self,event): … … 449 470 self.varValue[v] = self.varValue.get(v,0.0) 450 471 else: 451 var = self.SelectG2var(sel,v )472 var = self.SelectG2var(sel,v,self.parmLists[sel]) 452 473 if not var: 453 474 del self.varSelect[v] … … 457 478 self.OnValidate(None) 458 479 459 def SelectG2var(self,sel,var ):480 def SelectG2var(self,sel,var,parmList): 460 481 '''Offer a selection of a GSAS-II variable. 461 482 … … 465 486 :returns: a variable name or None (if Cancel is pressed) 466 487 ''' 467 if not self.parmLists[sel]:488 if not parmList: 468 489 return None 469 #varListlbl = ["("+i+") "+G2obj.fmtVarDescr(i) for i in self.parmLists[sel]]470 #varListlbl = self.parmLists[sel]471 490 l2 = l1 = 1 472 for i in self.parmLists[sel]:491 for i in parmList: 473 492 l1 = max(l1,len(i)) 474 493 loc,desc = G2obj.VarDescr(i) 475 494 l2 = max(l2,len(loc)) 476 495 fmt = u"{:"+str(l1)+"s} {:"+str(l2)+"s} {:s}" 477 varListlbl = [fmt.format(i,*G2obj.VarDescr(i)) for i in self.parmLists[sel]]496 varListlbl = [fmt.format(i,*G2obj.VarDescr(i)) for i in parmList] 478 497 479 498 dlg = G2gd.G2SingleChoiceDialog( … … 486 505 if dlg.ShowModal() == wx.ID_OK: 487 506 i = dlg.GetSelection() 488 var = self.parmLists[sel][i]507 var = parmList[i] 489 508 dlg.Destroy() 490 509 return var … … 566 585 depVal = "" 567 586 if self.depVarDict: 568 if not self.dep Var[1]:587 if not self.dependentVar: 569 588 self.setEvalResult("A dependent variable must be selected.") 570 589 return 571 depVal = '; Variable "' + self.dep Var[1]+ '" = ' + str(572 self.depVarDict.get(self.dep Var[1],'?')590 depVal = '; Variable "' + self.dependentVar + '" = ' + str( 591 self.depVarDict.get(self.dependentVar,'?') 573 592 ) 574 593 self.setEvalResult("Expression evaluates to: "+str(s)+depVal) … … 579 598 frm = wx.Frame(None) 580 599 frm.Show() 581 PSvarDict = {'::a':1.0,'::b':1.1,'0::c':1.2 }600 PSvarDict = {'::a':1.0,'::b':1.1,'0::c':1.2,'::AlongVaraiableName':1000.} 582 601 #PSvars = PSvarDict.keys() 583 602 indepvarDict = {'Temperature':1.0,'Pressure':1.1,'Phase of Moon':1.2,'1:1:HAP':1.3} … … 588 607 #VarLabel="New PseudoVar", 589 608 ) 590 print dlg.GetDepVar() 609 newobj = dlg.Show(True) 610 dlg = ExpressionDialog(frm,indepvarDict,newobj, 611 header="Edit the PseudoVar expression", 612 fit=False, 613 depVarDict=PSvarDict, 614 #VarLabel="New PseudoVar", 615 ) 591 616 newobj = dlg.Show(True) 592 617 print dlg.GetDepVar()
Note: See TracChangeset
for help on using the changeset viewer.