home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 January / Gamestar_80_2006-01_dvd.iso / Dema / Civilization4 / data1.cab / Civ4DemoComponent / Assets / Python / CvDefineEditor.py < prev    next >
Encoding:
Python Source  |  2005-11-09  |  3.7 KB  |  119 lines

  1. import wx;
  2. from CvPythonExtensions import *
  3.  
  4. gc = CyGlobalContext()
  5. gVDS = gc.getCyDefinesVarSystem()
  6.  
  7. class CvIntEditorPanel( wx.Panel ):
  8.  
  9.     def __init__( self, kParent, szVarName ):
  10.         wx.Panel.__init__( self, kParent )
  11.         
  12.         self.hLabel = wx.StaticText( self, -1, szVarName )
  13.         self.hEdit = wx.TextCtrl( self, value = str( gVDS.getValueInt( szVarName ) ) )
  14.         self.szVarName = szVarName;
  15.         
  16.         self.hSizer = wx.BoxSizer( wx.HORIZONTAL )
  17.         self.hSizer.Add( self.hLabel, 1, wx.EXPAND | wx.ALL, 4 )
  18.         self.hSizer.Add( self.hEdit, 1, wx.ALIGN_RIGHT )
  19.         self.SetSizer( self.hSizer )
  20.         
  21.         self.Bind( wx.EVT_TEXT_ENTER, self.OnUpdateText, self.hEdit )
  22.         
  23.     def OnUpdateText( self, kEvent ):
  24.         gVDS.setValueInt( self.szVarName, int(self.hEdit.GetLineText( 0 )) )
  25.         
  26. class CvFloatEditorPanel( wx.Panel ):
  27.  
  28.     def __init__( self, kParent, szVarName ):
  29.         wx.Panel.__init__( self, kParent )
  30.  
  31.         self.hLabel = wx.StaticText( self, -1, szVarName )
  32.         self.hEdit = wx.TextCtrl( self, value = str( gVDS.getValueFloat( szVarName ) ) )
  33.         self.szVarName = szVarName;
  34.  
  35.         self.hSizer = wx.BoxSizer( wx.HORIZONTAL )
  36.         self.hSizer.Add( self.hLabel, 1, wx.EXPAND | wx.ALL, 4 )
  37.         self.hSizer.Add( self.hEdit, 1, wx.ALIGN_RIGHT )
  38.         self.SetSizer( self.hSizer )
  39.  
  40.         self.Bind( wx.EVT_TEXT_ENTER, self.OnUpdateText, self.hEdit )
  41.  
  42.     def OnUpdateText( self, kEvent ):
  43.         gVDS.setValueFloat( self.szVarName, float(self.hEdit.GetLineText( 0 )) )
  44.  
  45. class CvStringEditorPanel( wx.Panel ):
  46.  
  47.     def __init__( self, kParent, szVarName ):
  48.         wx.Panel.__init__( self, kParent )
  49.  
  50.         self.hLabel = wx.StaticText( self, -1, szVarName )
  51.         self.hEdit = wx.TextCtrl( self, value = str( gVDS.getValueString( szVarName ) ) )
  52.         self.szVarName = szVarName;
  53.  
  54.         self.hSizer = wx.BoxSizer( wx.HORIZONTAL )
  55.         self.hSizer.Add( self.hLabel, 1, wx.EXPAND | wx.ALL, 4 )
  56.         self.hSizer.Add( self.hEdit, 1, wx.ALIGN_RIGHT )
  57.         self.SetSizer( self.hSizer )
  58.         self.Bind( wx.EVT_TEXT_ENTER, self.OnUpdateText, self.hEdit )
  59.  
  60.     def OnUpdateText( self, kEvent ):
  61.         gVDS.setValueString( self.szVarName, self.hEdit.GetLineText( 0 ) )
  62.  
  63. class CvDefineEditorFrame( wx.Frame ):
  64.  
  65.     ID_VARCOMBO = 1000
  66.     
  67.     def __init__( self ):
  68.         wx.Frame.__init__( self, None, -1, "Info Editor", (-1,-1), (-1,-1),    
  69.             wx.MAXIMIZE_BOX | wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.RESIZE_BORDER | wx.VSCROLL  )
  70.  
  71.         self.hSizer = wx.BoxSizer( wx.VERTICAL )
  72.         self.hVarCombo = wx.ComboBox( self, style = wx.CB_SORT | wx.CB_DROPDOWN | wx.CB_READONLY  )
  73.         self.hSizer.Add( self.hVarCombo, 1, wx.EXPAND )
  74.         self.SetSizer( self.hSizer )
  75.  
  76.         szVarName = gVDS.getFirstVariableName()
  77.         
  78.         while szVarName != "":
  79.             self.hVarCombo.Append( szVarName )
  80.             szVarName = gVDS.getNextVariableName()
  81.             
  82.         
  83.         self.Bind( wx.EVT_TEXT, self.OnComboSelection, self.hVarCombo )
  84.         
  85.     def OnComboSelection( self, kEvent ):
  86.         szVarName = self.hVarCombo.GetValue()
  87.         if szVarName != "":
  88.             szVarType = gVDS.getVariableType( szVarName )
  89.             hPanel = None
  90.             if szVarType == "int":
  91.                 hPanel = CvIntEditorPanel( self, szVarName )
  92.             elif szVarType == "float":
  93.                 hPanel = CvFloatEditorPanel( self, szVarName )
  94.             elif szVarType == "string":
  95.                 hPanel = CvStringEditorPanel( self, szVarName )
  96.                 
  97.             if hPanel != None:
  98.                 self.hSizer.Add( hPanel, 1, wx.EXPAND )
  99.         self.hSizer.Layout()
  100.  
  101. class CvDefineEditorApp( wx.App ):
  102.  
  103.     def MainLoop( self ):
  104.         kEventLoop = wx.EventLoop()
  105.         wx.EventLoop.SetActive( kEventLoop )
  106.         while ( kEventLoop.Pending() ):
  107.             kEventLoop.Dispatch()
  108.  
  109.  
  110.     def OnInit( self ):
  111.         self.hFrame = CvDefineEditorFrame()
  112.         self.SetTopWindow( self.hFrame )
  113.         self.hFrame.Show(1)
  114.         self.SetExitOnFrameDelete( False )
  115.  
  116.         return 1
  117.  
  118. kApp = CvDefineEditorApp(0)
  119.