Exemplo n.º 1
0
 def UpdateParams(self):
     self.paramsPanel.DestroyChildren()
     self.paramsPanel.SetSizer(None)
     
     for name in ["psi_mu_0", "phi_mu_f0", "slowMuonPerc", "fastMuonPerc"]:
         try:
             self.paramsPanel.Unbind(wx.EVT_TEXT, self.fields[name])
         except:
             pass
         try:
             del self.fields[name]
             del self.values[name]
         except:
             pass
             
     if self.selectedNuclide is not None:
         if self.selectedNuclide == "36Cl":
             self.fields["psi_mu_0"] = wx.TextCtrl(self.paramsPanel, wx.ID_ANY, name="psi_mu_0")
             self.fields["psi_mu_0"].SetValue(str(Nuclide.getSlowMuonStoppingRate()))
             self.error_labels["psi_mu_0"] = wx.StaticText(self.paramsPanel, wx.ID_ANY, '                         ')                
             self.values["psi_mu_0"] = Nuclide.getSlowMuonStoppingRate()
             self.paramsPanel.Bind(wx.EVT_TEXT, self.OnParamUpdate, self.fields['psi_mu_0'])                
             
             self.fields["phi_mu_f0"] = wx.TextCtrl(self.paramsPanel, wx.ID_ANY, name="phi_mu_f0")
             self.fields["phi_mu_f0"].SetValue(str(Nuclide.getFastMuonFlux()))
             self.values["phi_mu_f0"] = Nuclide.getFastMuonFlux()
             self.error_labels["phi_mu_f0"] = wx.StaticText(self.paramsPanel, wx.ID_ANY, '                         ')
             self.paramsPanel.Bind(wx.EVT_TEXT, self.OnParamUpdate, self.fields['phi_mu_f0'])
             
         else:
             self.fields["slowMuonPerc"] = wx.TextCtrl(self.paramsPanel, wx.ID_ANY, name="slowMuonPerc")
             self.fields["slowMuonPerc"].SetValue(str(Nuclide.getSlowMuonPerc(self.selectedNuclide)))
             self.values["slowMuonPerc"] = Nuclide.getSlowMuonPerc(self.selectedNuclide)
             self.error_labels["slowMuonPerc"] = wx.StaticText(self.paramsPanel, wx.ID_ANY, '                         ')
             self.paramsPanel.Bind(wx.EVT_TEXT, self.OnParamUpdate, self.fields['slowMuonPerc'])
             
             self.fields["fastMuonPerc"] = wx.TextCtrl(self.paramsPanel, wx.ID_ANY, name="fastMuonPerc")
             self.fields["fastMuonPerc"].SetValue(str(Nuclide.getFastMuonPerc(self.selectedNuclide)))
             self.values["fastMuonPerc"] = Nuclide.getFastMuonPerc(self.selectedNuclide)
             self.error_labels["fastMuonPerc"] = wx.StaticText(self.paramsPanel, wx.ID_ANY, '                         ')
             self.paramsPanel.Bind(wx.EVT_TEXT, self.OnParamUpdate, self.fields['fastMuonPerc'])
             
         labels = []
 
         if self.selectedNuclide == "36Cl":
             labels.append(wx.StaticText(self.paramsPanel, wx.ID_ANY, "Slow Muon Stopping Rate:"))
             labels.append(wx.StaticText(self.paramsPanel, wx.ID_ANY, "Fast Muon Flux:"))
         else:
             labels.append(wx.StaticText(self.paramsPanel, wx.ID_ANY, "Slow Muon Production:"))
             labels.append(wx.StaticText(self.paramsPanel, wx.ID_ANY, "Fast Muon Production:"))
         
         sizer = wx.GridBagSizer(10, 10)
 
         row = 0
         for label in labels:
             sizer.Add(label, pos=(row, 0), border=5, flag=wx.ALIGN_RIGHT|wx.ALL)
             row += 1
 
         names = []
         if self.selectedNuclide == "36Cl":
             names = ["psi_mu_0", "phi_mu_f0"]
         else:
             names = ["slowMuonPerc", "fastMuonPerc"]
 
         row = 0
         for name in names:
             sizer.Add(self.fields[name], pos=(row, 1), border=5, flag=wx.ALIGN_LEFT|wx.ALL|wx.EXPAND)
             sizer.Add(self.error_labels[name], pos=(row, 2), border=5, flag=wx.ALIGN_LEFT|wx.ALL)
             row += 1
 
         self.paramsPanel.SetSizer(sizer)
         self.paramsPanel.Layout()
         self.ConfigureGrid()
         self.CheckStatus()
     else:
         sizer = wx.BoxSizer(wx.HORIZONTAL)
         sizer.Add(wx.StaticText(self.paramsPanel, wx.ID_ANY, "You need to select a Nuclide\nbefore you can configure an Experiment's Parameters"), border=5, flag=wx.ALL|wx.ALIGN_TOP)
         self.paramsPanel.SetSizer(sizer)
         self.paramsPanel.Layout()