Ignore:
Timestamp:
Jan 30, 2014 4:27:17 PM (8 years ago)
Author:
vondreele
Message:

complete contrast calculator for small angle data.
implement a Load substances from a file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIElemGUI.py

    r1046 r1208  
    8080        self.EndModal(wx.ID_OK)       
    8181       
     82class PickElements(wx.Dialog):
     83    """Makes periodic table widget for picking elements - caller maintains element list"""
     84    Elem = []
     85    def _init_ctrls(self, prnt,list):
     86        wx.Dialog.__init__(self, id=-1, name='PickElements',
     87              parent=prnt, pos=wx.DefaultPosition, size=wx.Size(580, 360),
     88              style=wx.DEFAULT_DIALOG_STYLE, title='Pick Elements')
     89        panel = wx.Panel(self)
     90       
     91        REcolor = wx.Colour(128, 128, 255)
     92        Metcolor = wx.Colour(192, 192, 192)
     93        Noblecolor = wx.Colour(255, 128, 255)
     94        Alkcolor = wx.Colour(255, 255, 128)
     95        AlkEcolor = wx.Colour(255, 128, 0)
     96        SemMetcolor = wx.Colour(128, 255, 0)
     97        NonMetcolor = wx.Colour(0, 255, 255)
     98        White = wx.Colour(255, 255, 255)
     99        self.Elem = []
     100        for El in list:
     101            self.Elem.append(El.lower().capitalize())
     102       
     103        self.ElTable = [
     104            ("H",   0,0, "Hydrogen",    White,           0.0000),
     105            ("He", 17,0, "Helium",      Noblecolor,      0.0000),
     106            ("Li",  0,1, "Lithium",     Alkcolor,        0.0004),
     107            ("Be",  1,1, "Beryllium",   AlkEcolor,       0.0006),
     108            ("B",  12,1, "Boron",       NonMetcolor,     0.0012),
     109            ("C",  13,1, "Carbon",      NonMetcolor,     0.0018),
     110            ("N",  14,1, "Nitrogen",    NonMetcolor,     0.0030),
     111            ("O",  15,1, "Oxygen",      NonMetcolor,     0.0042),
     112            ("F",  16,1, "Fluorine",    NonMetcolor,     0.0054),
     113            ("Ne", 17,1, "Neon",        Noblecolor,      0.0066),
     114            ("Na",  0,2, "Sodium",      Alkcolor,        0.0084),
     115            ("Mg",  1,2, "Magnesium",   AlkEcolor,       0.0110),
     116            ("Al", 12,2, "Aluminum",    SemMetcolor,     0.0125),
     117            ("Si", 13,2, "Silicon",     NonMetcolor,     0.0158),
     118            ("P",  14,2, "Phosphorus",  NonMetcolor,     0.0180),
     119            ("S",  15,2, "Sulphur",     NonMetcolor,     0.0210),
     120            ("Cl", 16,2, "Chlorine",    NonMetcolor,     0.0250),
     121            ("Ar", 17,2, "Argon",       Noblecolor,      0.0285),
     122            ("K",   0,3, "Potassium",   Alkcolor,        0.0320),
     123            ("Ca",  1,3, "Calcium",     AlkEcolor,       0.0362),
     124            ("Sc",  2,3, "Scandium",    Metcolor,        0.0410),
     125            ("Ti",  3,3, "Titanium",    Metcolor,        0.0460),
     126            ("V",   4,3, "Vanadium",    Metcolor,        0.0510),
     127            ("Cr",  5,3, "Chromium",    Metcolor,        0.0560),
     128            ("Mn",  6,3, "Manganese",   Metcolor,        0.0616),
     129            ("Fe",  7,3, "Iron",        Metcolor,        0.0680),
     130            ("Co",  8,3, "Cobalt",      Metcolor,        0.0740),
     131            ("Ni",  9,3, "Nickel",      Metcolor,        0.0815),
     132            ("Cu", 10,3, "Copper",      Metcolor,        0.0878),
     133            ("Zn", 11,3, "Zinc",        Metcolor,        0.0960),
     134            ("Ga", 12,3, "Gallium",     SemMetcolor,      0.104),
     135            ("Ge", 13,3, "Germanium",   SemMetcolor,      0.114),
     136            ("As", 14,3, "Arsenic",     NonMetcolor,      0.120),
     137            ("Se", 15,3, "Selenium",    NonMetcolor,      0.132),
     138            ("Br", 16,3, "Bromine",     NonMetcolor,      0.141),
     139            ("Kr", 17,3, "Krypton",     Noblecolor,       0.150),
     140            ("Rb",  0,4, "Rubidium",    Alkcolor,         0.159),
     141            ("Sr",  1,4, "Strontium",   AlkEcolor,        0.171),
     142            ("Y",   2,4, "Yittrium",    Metcolor,         0.180),
     143            ("Zr",  3,4, "Zirconium",   Metcolor,         0.192),
     144            ("Nb",  4,4, "Niobium",     Metcolor,         0.204),
     145            ("Mo",  5,4, "Molybdenium", Metcolor,         0.216),
     146            ("Tc",  6,4, "Technetium",  Metcolor,         0.228),
     147            ("Ru",  7,4, "Ruthenium",   Metcolor,         0.246),
     148            ("Rh",  8,4, "Rhodium",     Metcolor,         0.258),
     149            ("Pd",  9,4, "Palladium",   Metcolor,         0.270),
     150            ("Ag", 10,4, "Silver",      Metcolor,         0.285),
     151            ("Cd", 11,4, "Cadmium",     Metcolor,         0.300),
     152            ("In", 12,4, "Indium",      SemMetcolor,      0.318),
     153            ("Sn", 13,4, "Tin",         SemMetcolor,      0.330),
     154            ("Sb", 14,4, "Antimony",    SemMetcolor,      0.348),
     155            ("Te", 15,4, "Tellurium",   NonMetcolor,      0.363),
     156            ("I",  16,4, "Iodine",      NonMetcolor,      0.384),
     157            ("Xe", 17,4, "Xenon",       Noblecolor,       0.396),
     158            ("Cs",  0,5, "Caesium",     Alkcolor,         0.414),
     159            ("Ba",  1,5, "Barium",      AlkEcolor,        0.438),
     160            ("La",  2,5, "Lanthanium",  Metcolor,         0.456),
     161            ("Ce",  3.5,6.5, "Cerium",      REcolor,      0.474),
     162            ("Pr",  4.5,6.5, "Praseodymium",REcolor,      0.492),
     163            ("Nd",  5.5,6.5, "Neodymium",   REcolor,      0.516),
     164            ("Pm",  6.5,6.5, "Promethium",  REcolor,      0.534),
     165            ("Sm",  7.5,6.5, "Samarium",    REcolor,      0.558),
     166            ("Eu",  8.5,6.5, "Europium",    REcolor,      0.582),
     167            ("Gd",  9.5,6.5, "Gadolinium",  REcolor,      0.610),
     168            ("Tb", 10.5,6.5, "Terbium",     REcolor,      0.624),
     169            ("Dy", 11.5,6.5, "Dysprosium",  REcolor,      0.648),
     170            ("Ho", 12.5,6.5, "Holmium",     REcolor,      0.672),
     171            ("Er", 13.5,6.5, "Erbium",      REcolor,      0.696),
     172            ("Tm", 14.5,6.5, "Thulium",     REcolor,      0.723),
     173            ("Yb", 15.5,6.5, "Ytterbium",   REcolor,      0.750),
     174            ("Lu", 16.5,6.5, "Lutetium",    REcolor,      0.780),
     175            ("Hf",  3,5, "Hafnium",     Metcolor,         0.804),
     176            ("Ta",  4,5, "Tantalum",    Metcolor,         0.834),
     177            ("W",   5,5, "Tungsten",    Metcolor,         0.864),
     178            ("Re",  6,5, "Rhenium",     Metcolor,         0.900),
     179            ("Os",  7,5, "Osmium",      Metcolor,         0.919),
     180            ("Ir",  8,5, "Iridium",     Metcolor,         0.948),
     181            ("Pt",  9,5, "Platinium",   Metcolor,         0.984),
     182            ("Au", 10,5, "Gold",        Metcolor,         1.014),
     183            ("Hg", 11,5, "Mercury",     Metcolor,         1.046),
     184            ("Tl", 12,5, "Thallium",    SemMetcolor,      1.080),
     185            ("Pb", 13,5, "Lead",        SemMetcolor,      1.116),
     186            ("Bi", 14,5, "Bismuth",     SemMetcolor,      1.149),
     187            ("Po", 15,5, "Polonium",    SemMetcolor,      1.189),
     188            ("At", 16,5, "Astatine",    NonMetcolor,      1.224),
     189            ("Rn", 17,5, "Radon",       Noblecolor,       1.260),
     190            ("Fr",  0,6, "Francium",    Alkcolor,         1.296),
     191            ("Ra",  1,6, "Radium",      AlkEcolor,        1.332),
     192            ("Ac",  2,6, "Actinium",    Metcolor,         1.374),
     193            ("Th",  3.5,7.5, "Thorium",     REcolor,      1.416),
     194            ("Pa",  4.5,7.5, "Protactinium",REcolor,      1.458),
     195            ("U",   5.5,7.5, "Uranium",     REcolor,      1.470),
     196            ("Np",  6.5,7.5, "Neptunium",   REcolor,      1.536),
     197            ("Pu",  7.5,7.5, "Plutonium",   REcolor,      1.584),
     198            ("Am",  8.5,7.5, "Americium",   REcolor,      1.626),
     199            ("Cm",  9.5,7.5, "Curium",      REcolor,      1.669),
     200            ("Bk", 10.5,7.5, "Berkelium",   REcolor,      1.716),
     201            ("Cf", 11.5,7.5, "Californium", REcolor,      1.764)]
     202           
     203        mainSizer = wx.BoxSizer(wx.VERTICAL)
     204        elPanel = wx.Panel(panel)
     205           
     206        i=0
     207        for E in self.ElTable:
     208            PickElements.ElButton(self,parent=elPanel,name=E[0],
     209                pos=wx.Point(E[1]*30+20,E[2]*30+25),tip=E[3],color=E[4])
     210            i+=1
     211        mainSizer.Add(elPanel,0,wx.EXPAND)
     212        mainSizer.Add((10,10),0)
     213       
     214        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     215        OkBtn = wx.Button(panel,-1,"Ok")
     216        OkBtn.Bind(wx.EVT_BUTTON, self.OnOk)
     217        cancelBtn = wx.Button(panel,-1,"Cancel")
     218        cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancel)
     219        btnSizer.Add((20,20),1)
     220        btnSizer.Add(OkBtn)
     221        btnSizer.Add((20,20),1)
     222        btnSizer.Add(cancelBtn)
     223        btnSizer.Add((20,20),1)
     224        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM, 10)
     225        panel.SetSizer(mainSizer)
     226        panel.Fit()
     227                 
     228    def OnOk(self,event):
     229        if self.Elem:
     230            self.EndModal(wx.ID_OK)
     231        else:       
     232            self.EndModal(wx.ID_CANCEL)       
     233       
     234    def OnCancel(self,event):
     235        self.EndModal(wx.ID_CANCEL)       
     236
     237    def __init__(self, parent,list):
     238        self._init_ctrls(parent,list)
     239       
     240    def ElButton(self, parent, name, pos, tip, color):
     241        Black = wx.Colour(0,0,0)
     242        if name in self.Elem:
     243            color = Black
     244        El = wscs.ColourSelect(label=name, parent=parent,colour=color,
     245            pos=pos, size=wx.Size(32, 32), style=wx.RAISED_BORDER)
     246        El.SetBackgroundColour(color)
     247        El.SetLabel(name)
     248        El.SetToolTipString(tip)
     249        El.Bind(wx.EVT_BUTTON, self.OnElButton)
     250
     251    def OnElButton(self, event):
     252        Black = wx.Colour(0,0,0)
     253        btn = event.GetEventObject()
     254        El = btn.GetLabel()
     255        if btn.GetColour() != Black:
     256            for Elem in self.ElTable:
     257                if El in Elem:
     258                    ElColor = Elem[4]
     259            if El in self.Elem:
     260                btn.SetColour(ElColor)
     261                self.Elem.remove(El)
     262            else:
     263                btn.SetColour(wx.Colour(255,0,0))
     264                self.Elem.append(El)
     265       
    82266class DeleteElement(wx.Dialog):
    83267    "Delete element from selected set widget"
Note: See TracChangeset for help on using the changeset viewer.