home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / GUI / Classes / GUIFloatEdit.uc < prev    next >
Text File  |  2003-06-30  |  3KB  |  151 lines

  1. // ====================================================================
  2. // (C) 2002, Epic Games
  3. // ====================================================================
  4.  
  5. class GUIFloatEdit extends GUIMultiComponent
  6.     Native;
  7.  
  8.  
  9. cpptext
  10. {
  11.         void Draw(UCanvas* Canvas);
  12. }
  13.  
  14. var Automated GUIEditBox MyEditBox;
  15. var Automated GUISpinnerButton MyPlus;
  16. var Automated GUISpinnerButton MyMinus;
  17.  
  18. var(Menu)    string                Value;
  19. var(Menu)    bool                bLeftJustified;
  20. var(Menu)    float                MinValue;
  21. var(Menu)    float                MaxValue;
  22. var(Menu)    float                Step;
  23.  
  24. function InitComponent(GUIController MyController, GUIComponent MyOwner)
  25. {
  26.  
  27.     Super.Initcomponent(MyController, MyOwner);
  28.  
  29.     MyEditBox.OnChange = EditOnChange;
  30.     MyEditBox.SetText(Value);
  31.     MyEditBox.OnKeyEvent = EditKeyEvent;
  32.  
  33.     MyEditBox.INIOption  = INIOption;
  34.     MyEditBox.INIDefault = INIDefault;
  35.  
  36.     CalcMaxLen();
  37.  
  38.     MyPlus.OnClick = SpinnerPlusClick;
  39.     MyPlus.FocusInstead = MyEditBox;
  40.     MyMinus.OnClick = SpinnerMinusClick;
  41.     MyMinus.FocusInstead = MyEditBox;
  42.  
  43.     SetHint(Hint);
  44.  
  45. }
  46.  
  47. function SetHint(string NewHint)
  48. {
  49.     local int i;
  50.     Super.SetHint(NewHint);
  51.  
  52.     for (i=0;i<Controls.Length;i++)
  53.         Controls[i].SetHint(NewHint);
  54. }
  55.  
  56. function CalcMaxLen()
  57. {
  58.     local int digitcount,x;
  59.  
  60.     digitcount=1;
  61.     x=10;
  62.     while (x<MaxValue)
  63.     {
  64.         digitcount++;
  65.         x*=10;
  66.     }
  67.  
  68.     MyEditBox.MaxWidth = DigitCount+4;
  69. }
  70. function SetValue(float V)
  71. {
  72.     if (v<MinValue)
  73.         v=MinValue;
  74.  
  75.     if (v>MaxValue)
  76.         v=MaxValue;
  77.  
  78.     MyEditBox.SetText(""$v);
  79. }
  80.  
  81. function bool SpinnerPlusClick(GUIComponent Sender)
  82. {
  83.     local float v;
  84.  
  85.     v = float(Value) + Step;
  86.     SetValue(v);
  87.     return true;
  88. }
  89.  
  90. function bool SpinnerMinusClick(GUIComponent Sender)
  91. {
  92.     local float v;
  93.  
  94.     v = float(Value) - Step;
  95.     SetValue(v);
  96.     return true;
  97. }
  98.  
  99. function bool EditKeyEvent(out byte Key, out byte State, float delta)
  100. {
  101.     if ( (key==0xEC) && (State==3) )
  102.     {
  103.         SpinnerPlusClick(none);
  104.         return true;
  105.     }
  106.  
  107.     if ( (key==0xED) && (State==3) )
  108.     {
  109.         SpinnerMinusClick(none);
  110.         return true;
  111.     }
  112.  
  113.     return MyEditBox.InternalOnKeyEvent(Key,State,Delta);
  114.  
  115.  
  116. }
  117.  
  118. function EditOnChange(GUIComponent Sender)
  119. {
  120.     Value = MyEditBox.TextStr;
  121.     OnChange(Sender);
  122. }
  123.  
  124. defaultproperties
  125. {
  126.     Begin Object Class=GUIEditBox Name=cMyEditBox
  127.         TextStr=""
  128.         bFloatOnly=true
  129.     End Object
  130.  
  131.     Begin Object Class=GUISpinnerButton Name=cMyPlus
  132.         PlusButton=true
  133.     End Object
  134.  
  135.     Begin Object Class=GUISpinnerButton Name=cMyMinus
  136.         PlusButton=false
  137.     End Object
  138.  
  139.     MyEditBox=cMyEditBox
  140.     MyPlus=cMyPlus
  141.     MyMinus=cMyMinus
  142.  
  143.     Value="0.0"
  144.     Step=1.0
  145.     bAcceptsInput=true;
  146.     bLeftJustified=false;
  147.     WinHeight=0.06
  148.  
  149.     PropagateVisibility=true
  150.  
  151. }