126 lines
2.6 KiB
Ucode
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
|
|
}
|