Go to the documentation of this file.00001 import BigWorld, GUI, Keys
00002
00003 from PyGUIBase import PyGUIBase
00004
00005 CHARS_TO_IGNORE = [ u'\r', u'\b', u'\x1b' ]
00006
00007 """
00008 This class implements an edit field
00009 """
00010 class EditField( PyGUIBase ):
00011
00012 factoryString = "PyGUI.EditField"
00013 CURSOR_CHAR = "|"
00014
00015 def __init__( self, component = None ):
00016
00017 PyGUIBase.__init__( self, component )
00018 if ( self.component==None ):
00019 self.component = GUI.Text("")
00020 self.component.text = self.CURSOR_CHAR
00021 self.component.position = ( 0,0,0.5 )
00022 self.component.colour = ( 92, 92, 92, 128 )
00023 self.component.width = 256
00024 self.component.height = 32
00025 self.component.script = self
00026
00027 self.colour = (
00028 self.component.colour.x, self.component.colour.y,
00029 self.component.colour.z, self.component.colour.w)
00030 self.onEnter = None
00031 self.onEscape = None
00032 self.maxLength = 15
00033
00034
00035 def focus( self, state ):
00036 c = self.component
00037 if ( state ):
00038 c.colour = self.colour
00039 c.text = c.text + self.CURSOR_CHAR
00040 else:
00041 c.colour = ( 155, 155, 155, 255 )
00042 c.text = c.text[0:len(c.text)-1]
00043
00044 def handleCharEvent( self, character, key, mods ):
00045 c = self.component
00046
00047 if character == u'\b':
00048 c.text = c.text[0:len(c.text)-2] + self.CURSOR_CHAR
00049 return True
00050 elif character not in CHARS_TO_IGNORE:
00051 if len( c.text ) < self.maxLength:
00052 c.text = c.text[0:len(c.text)-1] + character + self.CURSOR_CHAR
00053 return True
00054
00055 return False
00056
00057 def handleKeyEvent( self, down, key, modifiers ):
00058 c = self.component
00059
00060 if ( down ):
00061 if ( key == Keys.KEY_ESCAPE ) :
00062 if self.onEscape is not None:
00063 self.onEscape()
00064 return True
00065 elif ( key == Keys.KEY_RETURN ):
00066 if ( self.eventHandler != None ):
00067 textString = c.text
00068 self.eventHandler.onClick( c.text[:-1] )
00069 return True
00070 elif self.onEnter is not None:
00071 self.onEnter( c.text[:-1] )
00072 return True
00073
00074 return False
00075
00076 def adjustFont( self, screenWidth ):
00077 if screenWidth < 700:
00078 self.component.font = self.smallFont
00079 else:
00080 self.component.font = self.bigFont
00081
00082
00083 def onLoad( self, section ):
00084 self.smallFont = section.readString( "smallFont", "default_small.font" )
00085 self.bigFont = section.readString( "bigFont", "default_medium.font" )
00086