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

151 lines
3.2 KiB
Ucode

//==============================================================================
// Listbox for GUIMultiOptionLists
//
// Created by Ron Prestenback
// © 2003, Epic Games, Inc. All Rights Reserved
//==============================================================================
class GUIMultiOptionListBox extends GUIListBoxBase;
var() editconst GUIMultiOptionList List;
var() int NumColumns;
function InitBaseList(GUIListBase LocalList)
{
local GUIMultiOptionList L;
L = GUIMultiOptionList(LocalList);
if ( L == None || L == List )
return;
Super.InitBaseList(LocalList);
if ( List != None )
{
List.KillTimer();
List.OnClick = None;
List.OnChange = None;
List.OnCreateComponent = None;
List.OnSaveIni = None;
List.OnLoadIni = None;
RemoveComponent(List,true);
List = GUIMultiOptionList(AppendComponent(L));
}
else List = GUIMultiOptionList(AppendComponent(L));
if ( List != None )
{
List.OnClick=InternalOnClick;
List.OnClickSound=CS_Click;
List.OnChange=InternalOnChange;
List.OnCreateComponent=ListCreateComponent;
List.OnSaveINI=ListSaveIni;
List.OnLoadINI=ListLoadIni;
}
}
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
local GUIMultiOptionList L;
local class<GUIMultiOptionList> ListClass;
Super.InitComponent(MyController, MyOwner);
MyScrollBar.Step = NumColumns;
if (DefaultListClass != "")
{
ListClass = class<GUIMultiOptionList>(Controller.AddComponentClass(DefaultListClass));
if ( ListClass != None )
L = new(None) ListClass;
if (L == None)
{
log(Class$".InitComponent - Could not create default list ["$DefaultListClass$"]");
return;
}
if (L == None)
{
Warn("Could not initialize list!");
return;
}
InitBaseList(L);
}
}
function bool InternalOnClick(GUIComponent Sender)
{
OnClick(Self);
return true;
}
function InternalOnChange(GUIComponent Sender)
{
//log(Name@"InternalonChange:"$Sender);
OnChange(Sender);
}
function int ItemCount()
{
return List.ItemCount;
}
function ListLoadIni(GUIComponent Sender, string S)
{
OnLoadIni(Sender, S);
}
function string ListSaveIni(GUIComponent Sender)
{
return OnSaveIni(Sender);
}
function ListCreateComponent(GUIMenuOption NewComp, GUIMultiOptionList Sender)
{
NewComp.IniOption = "@Internal";
NewComp.OnSaveINI = ListSaveINI;
NewComp.OnLoadINI = ListLoadINI;
OnCreateComponent(NewComp, Sender);
}
function InternalOnCreateComponent(GUIComponent NewComp, GUIComponent Sender)
{
Super.InternalOnCreateComponent(NewComp, Sender);
if (GUIMultiOptionList(NewComp) != None)
GUIMultiOptionList(NewComp).NumColumns = NumColumns;
}
function InternalOnScrollRelease(GUIComponent Sender)
{
MyScrollBar.GripPreDraw(MyScrollBar.MyGripButton);
}
singular function EnableMe()
{
local int i;
Super.EnableMe();
for ( i = 0; i < List.ItemCount; i++ )
EnableComponent(List.GetItem(i));
}
singular function DisableMe()
{
local int i;
Super.DisableMe();
for ( i = 0; i < List.ItemCount; i++ )
DisableComponent(List.GetItem(i));
}
DefaultProperties
{
NumColumns=1
DefaultListClass="XInterface.GUIMultiOptionList"
}