rott/kf_sources/GUI2K4/Classes/AnimatedEditBox.uc
2026-07-14 20:27:09 +07:00

126 lines
2.6 KiB
Ucode

//==============================================================================
// Created on: 10/18/2003
// This specialized menu-option only displays the editbox when this component is focused
//
// Written by Ron Prestenback
// © 2003, Epic Games, Inc. All Rights Reserved
//==============================================================================
class AnimatedEditBox extends moEditBox;
// Controls how quickly the component slides open & closed
var() float Increment;
// Should the caption be the same as the value?
var() bool bUseValueForCaption;
var() noexport editconst protected bool bUpdated;
function bool InternalOnPreDraw( Canvas C )
{
CaptionWidth += Increment;
// Set caret position so that all text will be visible
MyEditBox.CaretPos = 0;
// If we've arrived, unhook predraw
if ( CaptionWidth <= 0.0 || CaptionWidth >= 1.0 )
OnPreDraw = None;
return true;
}
function SetText( string Str )
{
Super.SetText(Str);
if ( bUseValueForCaption )
SetCaption(MyEditBox.GetText());
}
function InternalOnActivate()
{
ShowEditBox();
}
function InternalOnDeactivate()
{
ShowLabel();
if ( bUpdated )
InternalOnChange(Self);
bUpdated = False;
}
function ShowEditBox()
{
if ( CaptionWidth > 0.0 )
{
// Increment must be negative
if ( Increment > 0.0 )
Increment *= -1.0;
OnPreDraw = InternalOnPreDraw;
}
}
function ShowLabel()
{
if ( CaptionWidth < 1.0 )
{
// Increment must be a positive number
if ( Increment < 0.0 )
Increment *= -1.0;
OnPreDraw = InternalOnPreDraw;
}
}
function InternalOnChange(GUIComponent Sender)
{
if (Controller.bCurMenuInitialized)
{
if ( Sender != Self )
bUpdated = True;
// If InternalOnChange() was called manually, or we're receiving a call to OnChange() as a result of a call to SetText()
if ( Sender == Self || MenuState != MSAT_Focused )
{
if ( !bIgnoreChange )
{
if ( bUseValueForCaption )
SetCaption(MyEditBox.GetText());
OnChange(Self);
}
}
}
bIgnoreChange = False;
}
/*
function InternalOnMousePressed(GUIComponent Sender, bool IsRepeat)
{
// Set bCaptureMouse so that we receive the MouseRelease instead of MyComponent
bCaptureMouse = True;
}
function InternalOnMouseRelease(GUIComponent Sender)
{
bCaptureMouse = False;
}
*/
DefaultProperties
{
Increment=0.1
bAutoSizeCaption=False
CaptionWidth=1.0
ComponentWidth=-1
// OnMousePressed=InternalOnMousePressed
// OnMouseRelease=InternalOnMouseRelease
OnActivate=InternalOnActivate
OnDeactivate=InternalOnDeactivate
}