<s> import sys <EOL> import wx <EOL> import wx . lib . mixins . inspection <EOL> class PeriodicTablePanel ( wx . Panel ) : <EOL> """<STR_LIT>""" <EOL> elems = { '<STR_LIT:H>' : ( <NUM_LIT:0> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:0> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:1> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:1> , <NUM_LIT:1> ) , <EOL> '<STR_LIT:B>' : ( <NUM_LIT:1> , <NUM_LIT:12> ) , '<STR_LIT:C>' : ( <NUM_LIT:1> , <NUM_LIT> ) , '<STR_LIT:N>' : ( <NUM_LIT:1> , <NUM_LIT> ) , '<STR_LIT:O>' : ( <NUM_LIT:1> , <NUM_LIT:15> ) , <EOL> '<STR_LIT:F>' : ( <NUM_LIT:1> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:1> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT> ) , '<STR_LIT:P>' : ( <NUM_LIT:2> , <NUM_LIT> ) , '<STR_LIT:S>' : ( <NUM_LIT:2> , <NUM_LIT:15> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:2> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:2> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:4> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:6> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:7> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:8> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:9> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:10> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:11> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:15> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:3> , <NUM_LIT> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:1> ) , '<STR_LIT:Y>' : ( <NUM_LIT:4> , <NUM_LIT:2> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:3> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:4> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:5> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:6> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:7> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:8> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:9> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:10> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:11> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT:15> ) , <EOL> '<STR_LIT:I>' : ( <NUM_LIT:4> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:4> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:2> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:3> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:4> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:6> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:7> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:8> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:9> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:10> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:11> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:15> ) , '<STR_LIT>' : ( <NUM_LIT:7> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:3> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:4> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:6> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:7> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:8> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:9> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:10> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:11> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:15> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT:16> ) , '<STR_LIT>' : ( <NUM_LIT:5> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:6> , <NUM_LIT:0> ) , '<STR_LIT>' : ( <NUM_LIT:6> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:6> , <NUM_LIT:2> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:3> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:4> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:6> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:7> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:8> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:9> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:10> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:11> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:12> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:15> ) , '<STR_LIT>' : ( <NUM_LIT:8> , <NUM_LIT:16> ) } <EOL> syms = [ '<STR_LIT:H>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:B>' , '<STR_LIT:C>' , '<STR_LIT:N>' , '<STR_LIT:O>' , '<STR_LIT:F>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:P>' , '<STR_LIT:S>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:Y>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:I>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> names = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' ] <EOL> FRAME_BG = ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> TITLE_BG = ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> REG_BG = ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> REG_FG = ( <NUM_LIT:20> , <NUM_LIT:20> , <NUM_LIT> ) <EOL> SEL_BG = ( <NUM_LIT:255> , <NUM_LIT:255> , <NUM_LIT> ) <EOL> SEL_FG = ( <NUM_LIT:100> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> def __init__ ( self , parent , title = '<STR_LIT>' , <EOL> onselect = None , tooltip_msg = None , size = ( - <NUM_LIT:1> , - <NUM_LIT:1> ) , ** kws ) : <EOL> wx . Panel . __init__ ( self , parent , - <NUM_LIT:1> , size = size , name = '<STR_LIT>' , ** kws ) <EOL> self . parent = parent <EOL> self . onselect = onselect <EOL> self . tooltip_msg = tooltip_msg <EOL> self . wids = { } <EOL> self . ctrls = { } <EOL> self . SetBackgroundColour ( self . FRAME_BG ) <EOL> self . selected = None <EOL> self . titlefont = wx . Font ( <NUM_LIT:10> , wx . DEFAULT , wx . NORMAL , wx . BOLD ) <EOL> self . elemfont = wx . Font ( <NUM_LIT:9> , wx . SWISS , wx . NORMAL , wx . NORMAL ) <EOL> self . subtitlefont = wx . Font ( <NUM_LIT:7> , wx . DEFAULT , wx . NORMAL , wx . BOLD ) <EOL> if sys . platform . lower ( ) . startswith ( '<STR_LIT>' ) : <EOL> self . elemfont = wx . Font ( <NUM_LIT:8> , wx . SWISS , wx . NORMAL , wx . BOLD ) <EOL> self . subtitlefont = wx . Font ( <NUM_LIT:8> , wx . DEFAULT , wx . NORMAL , wx . BOLD ) <EOL> self . BuildPanel ( ) <EOL> def onKey ( self , event = None , name = None ) : <EOL> """<STR_LIT>""" <EOL> if self . selected is None : <EOL> return <EOL> selname = self . selected . GetLabel ( ) <EOL> if selname in self . elems : <EOL> coords = self . elems [ selname ] <EOL> if name is None and event is not None : <EOL> thiskey = event . GetKeyCode ( ) <EOL> if name == '<STR_LIT:left>' : <EOL> thiskey = wx . WXK_LEFT <EOL> elif name == '<STR_LIT:right>' : <EOL> thiskey = wx . WXK_RIGHT <EOL> elif name == '<STR_LIT>' : <EOL> thiskey = wx . WXK_UP <EOL> elif name == '<STR_LIT>' : <EOL> thiskey = wx . WXK_DOWN <EOL> newcoords = None <EOL> if thiskey == wx . WXK_UP : <EOL> newcoords = ( coords [ <NUM_LIT:0> ] - <NUM_LIT:1> , coords [ <NUM_LIT:1> ] ) <EOL> elif thiskey == wx . WXK_DOWN : <EOL> newcoords = ( coords [ <NUM_LIT:0> ] + <NUM_LIT:1> , coords [ <NUM_LIT:1> ] ) <EOL> elif thiskey in ( wx . WXK_LEFT , wx . WXK_RIGHT ) : <EOL> newcoords = None <EOL> if newcoords not in self . elems . values ( ) : <EOL> if thiskey == wx . WXK_DOWN : <EOL> newcoords = ( coords [ <NUM_LIT:0> ] + <NUM_LIT:2> , coords [ <NUM_LIT:1> ] ) <EOL> elif thiskey == wx . WXK_UP : <EOL> newcoords = ( coords [ <NUM_LIT:0> ] - <NUM_LIT:2> , coords [ <NUM_LIT:1> ] ) <EOL> elif thiskey in ( wx . WXK_LEFT , wx . WXK_RIGHT ) : <EOL> try : <EOL> znum = self . syms . index ( selname ) <EOL> except : <EOL> return <EOL> if thiskey == wx . WXK_LEFT and znum > <NUM_LIT:0> : <EOL> newcoords = self . elems [ self . syms [ znum - <NUM_LIT:1> ] ] <EOL> elif thiskey == wx . WXK_RIGHT and znum < len ( self . syms ) - <NUM_LIT:1> : <EOL> newcoords = self . elems [ self . syms [ znum + <NUM_LIT:1> ] ] <EOL> if newcoords in self . elems . values ( ) : <EOL> newlabel = None <EOL> for xlabel , xcoords in self . elems . items ( ) : <EOL> if newcoords == xcoords : <EOL> newlabel = xlabel <EOL> if newlabel is not None : <EOL> self . onclick ( label = newlabel ) <EOL> event . Skip ( ) <EOL> def onclick ( self , event = None , label = None ) : <EOL> textwid = None <EOL> if ( label is None and event is not None and <EOL> event . Id in self . wids ) : <EOL> textwid = self . wids [ event . Id ] <EOL> label = textwid . GetLabel ( ) <EOL> if label is None : <EOL> return <EOL> if textwid is None and label is not None : <EOL> textwid = self . ctrls [ label ] <EOL> textwid . SetForegroundColour ( self . SEL_FG ) <EOL> textwid . SetBackgroundColour ( self . SEL_BG ) <EOL> if self . selected is not None and self . selected != textwid : <EOL> self . selected . SetForegroundColour ( self . REG_FG ) <EOL> self . selected . SetBackgroundColour ( self . REG_BG ) <EOL> self . selected = textwid <EOL> znum = self . syms . index ( label ) <EOL> name = self . names [ znum ] <EOL> self . tsym . SetLabel ( label ) <EOL> self . title . SetLabel ( name ) <EOL> self . tznum . SetLabel ( "<STR_LIT>" . format ( znum + <NUM_LIT:1> ) ) <EOL> if self . onselect is not None : <EOL> self . onselect ( elem = label , event = event ) <EOL> self . Refresh ( ) <EOL> def BuildPanel ( self ) : <EOL> sizer = wx . GridBagSizer ( <NUM_LIT:9> , <NUM_LIT:20> ) <EOL> for name , coords in self . elems . items ( ) : <EOL> wid = wx . NewId ( ) <EOL> tw = wx . StaticText ( self , wid , label = name ) <EOL> tw . SetFont ( self . elemfont ) <EOL> tw . SetForegroundColour ( self . REG_FG ) <EOL> tw . SetBackgroundColour ( self . REG_BG ) <EOL> tw . SetMinSize ( ( <NUM_LIT> , <NUM_LIT> ) ) <EOL> tw . Bind ( wx . EVT_LEFT_DOWN , self . onclick ) <EOL> if self . tooltip_msg is not None : <EOL> tw . SetToolTip ( wx . ToolTip ( self . tooltip_msg ) ) <EOL> self . wids [ wid ] = tw <EOL> self . ctrls [ name ] = tw <EOL> sizer . Add ( tw , coords , ( <NUM_LIT:1> , <NUM_LIT:1> ) , wx . ALIGN_LEFT , <NUM_LIT:0> ) <EOL> self . title = wx . StaticText ( self , - <NUM_LIT:1> , label = '<STR_LIT>' ) <EOL> self . tsym = wx . StaticText ( self , - <NUM_LIT:1> , label = '<STR_LIT>' ) <EOL> self . tznum = wx . StaticText ( self , - <NUM_LIT:1> , label = '<STR_LIT>' ) <EOL> for a in ( self . title , self . tsym , self . tznum ) : <EOL> a . SetFont ( self . titlefont ) <EOL> a . SetBackgroundColour ( self . TITLE_BG ) <EOL> sizer . Add ( self . title , ( <NUM_LIT:0> , <NUM_LIT:4> ) , ( <NUM_LIT:1> , <NUM_LIT:8> ) , wx . ALIGN_CENTER , <NUM_LIT:1> ) <EOL> sizer . Add ( self . tsym , ( <NUM_LIT:0> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , wx . ALIGN_LEFT , <NUM_LIT:1> ) <EOL> sizer . Add ( self . tznum , ( <NUM_LIT:0> , <NUM_LIT:12> ) , ( <NUM_LIT:1> , <NUM_LIT:3> ) , wx . ALIGN_LEFT , <NUM_LIT:1> ) <EOL> self . subtitle = [ None , None ] <EOL> self . subtitle [ <NUM_LIT:0> ] = wx . StaticText ( self , - <NUM_LIT:1> , label = '<STR_LIT:U+0020>' ) <EOL> self . subtitle [ <NUM_LIT:0> ] . SetFont ( self . subtitlefont ) <EOL> self . subtitle [ <NUM_LIT:1> ] = wx . StaticText ( self , - <NUM_LIT:1> , label = '<STR_LIT:U+0020>' ) <EOL> self . subtitle [ <NUM_LIT:1> ] . SetFont ( self . subtitlefont ) <EOL> sizer . Add ( self . subtitle [ <NUM_LIT:0> ] , ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:9> ) , wx . ALIGN_LEFT , <NUM_LIT:2> ) <EOL> sizer . Add ( self . subtitle [ <NUM_LIT:1> ] , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:9> ) , wx . ALIGN_LEFT , <NUM_LIT:2> ) <EOL> sizer . SetEmptyCellSize ( ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> sizer . SetHGap ( <NUM_LIT:1> ) <EOL> sizer . SetVGap ( <NUM_LIT:1> ) <EOL> self . Bind ( wx . EVT_KEY_UP , self . onKey ) <EOL> self . SetSizer ( sizer ) <EOL> ix , iy = self . GetBestSize ( ) <EOL> self . SetSize ( ( ix + <NUM_LIT:2> , iy + <NUM_LIT:2> ) ) <EOL> sizer . Fit ( self ) <EOL> def onLoseFocus ( self , event = None ) : event . Skip ( ) <EOL> def onGetFocus ( self , event = None ) : event . Skip ( ) <EOL> def set_subtitle ( self , label , index = <NUM_LIT:0> ) : <EOL> if index not in ( <NUM_LIT:0> , <NUM_LIT:1> ) : index = <NUM_LIT:0> <EOL> self . subtitle [ index ] . SetLabel ( label ) <EOL> class PTableFrame ( wx . Frame ) : <EOL> def __init__ ( self , size = ( - <NUM_LIT:1> , - <NUM_LIT:1> ) ) : <EOL> wx . Frame . __init__ ( self , parent = None , size = size ) <EOL> ptab = PeriodicTablePanel ( self , title = '<STR_LIT>' , <EOL> tooltip_msg = '<STR_LIT>' , <EOL> onselect = self . onElement ) <EOL> sx , sy = ptab . GetBestSize ( ) <EOL> sizer = wx . BoxSizer ( wx . VERTICAL ) <EOL> sizer . Add ( ptab , <NUM_LIT:1> , wx . EXPAND | wx . ALL , <NUM_LIT:5> ) <EOL> self . SetSizer ( sizer ) <EOL> sizer . Fit ( self ) <EOL> self . SetMinSize ( ( sx + <NUM_LIT:10> , sy + <NUM_LIT:10> ) ) <EOL> self . Raise ( ) <EOL> def onElement ( self , elem = None , event = None ) : <EOL> print ( '<STR_LIT>' , elem ) <EOL> class PTableApp ( wx . App , wx . lib . mixins . inspection . InspectionMixin ) : <EOL> def __init__ ( self , ** kws ) : <EOL> wx . App . __init__ ( self ) <EOL> def OnInit ( self ) : <EOL> self . Init ( ) <EOL> frame = PTableFrame ( ) <EOL> frame . Show ( ) <EOL> self . SetTopWindow ( frame ) <EOL> self . ShowInspectionTool ( ) <EOL> return True <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> PTableApp ( ) . MainLoop ( ) </s>
