Cogito, ergo sum
Legacy:Color Selection Dialog
From Unreal Wiki, The Unreal Engine Documentation Site
Basic Color Selection Dialog
This class lets you provide color configuration. I haven't seen too many things that could use it, but who knows... Anyways, to use it, make a GUIPage, or whatever. The important point is having a GUILabel on it, and having a LastClicked property. Before you use OpenMenu to open the Color Chooser, set the LastClicked property of your class to the index in Controls of a GUILabel. The Color Chooser will initialize itself with the BackColor of this GUILabel, allow the user to edit that color, and then save the selected color back to the GUILabel. Add some code to load the label BackColor from defaults, and save it to an ini, and you have configurable colors.
class GUIColorEdit extends GUIPage;
var GUILabel SetTo;
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.InitComponent(MyController, MyOwner);
SetTo=GUILabel(ParentPage.Controls[int(ParentPage.GetPropertyText("LastClicked"))]);
InitColors();
return;
}
function bool SetAndClose(GUIComponent Sender)
{
Controller.CloseMenu(False);
SetTo.BackColor = GUILabel(Controls[10]).BackColor;
Return True;
}
function InitColors()
{
GUILabel(Controls[10]).BackColor=SetTo.BackColor;
GUISlider(Controls[4]).SetValue(SetTo.BackColor.R);
GUISlider(Controls[5]).SetValue(SetTo.BackColor.G);
GUISlider(Controls[6]).SetValue(SetTo.BackColor.B);
GUINumericEdit(Controls[7]).SetValue(SetTo.BackColor.R);
GUINumericEdit(Controls[8]).SetValue(SetTo.BackColor.G);
GUINumericEdit(Controls[9]).SetValue(SetTo.BackColor.B);
}
function OnSliderChange(GUIComponent Sender)
{
local int i;
for (i=0; i<Controls.Length; i++)
if (Controls[i] == Sender)
break;
if (i>3 && i<7)
{
GUINumericEdit(Controls[i+3]).SetValue(int(GUISlider(Controls[i]).Value));
ColorUpdate();
}
return;
}
function OnREditChange(GUIComponent Sender)
{
GUISlider(Controls[4]).SetValue(float(GUINumericEdit(Controls[7]).Value));
ColorUpdate();
}
function OnGEditChange(GUIComponent Sender)
{
GUISlider(Controls[5]).SetValue(float(GUINumericEdit(Controls[8]).Value));
ColorUpdate();
}
function OnBEditChange(GUIComponent Sender)
{
GUISlider(Controls[6]).SetValue(float(GUINumericEdit(Controls[9]).Value));
ColorUpdate();
}
function ColorUpdate()
{
GUILabel(Controls[10]).BackColor.R = int(GUISlider(Controls[4]).Value);
GUILabel(Controls[10]).BackColor.G = int(GUISlider(Controls[5]).Value);
GUILabel(Controls[10]).BackColor.B = int(GUISlider(Controls[6]).Value);
return;
}
defaultproperties
{
Begin Object Class=GUIButton name=DialogBackground
WinWidth=1.0
WinHeight=1.0
WinTop=0
WinLeft=0
bAcceptsInput=false
bNeverFocus=true
StyleName="ComboListBox"
bBoundToParent=True
bScaleToParent=True
End Object
Controls(0)=GUIButton'DialogBackground'
Begin Object Class=GUILabel name=RLabel
Caption="R"
WinWidth=0.142857
WinHeight=0.111111
WinLeft=0.071429
WinTop=0.055556
bBoundToParent=True
bScaleToParent=True
End Object
Controls(1)=GUILabel'RLabel'
Begin Object Class=GUILabel name=GLabel
Caption="G"
WinWidth=0.142857
WinHeight=0.111111
WinLeft=0.071429
WinTop=0.222222
bBoundToParent=True
bScaleToParent=True
End Object
Controls(2)=GUILabel'GLabel'
Begin Object Class=GUILabel name=BLabel
Caption="B"
WinWidth=0.142857
WinHeight=0.111111
WinLeft=0.071429
WinTop=0.388889
bBoundToParent=True
bScaleToParent=True
End Object
Controls(3)=GUILabel'BLabel'
Begin Object Class=GUISlider name=RSlider
bIntSlider=True
MinValue=0
MaxValue=255
WinWidth=0.357143
WinHeight=0.111111
WinLeft=0.285714
WinTop=0.055556
OnChange=OnSliderChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(4)=GUISlider'RSlider'
Begin Object Class=GUISlider name=GSlider
bIntSlider=True
MinValue=0
MaxValue=255
WinWidth=0.357143
WinHeight=0.111111
WinLeft=0.285714
WinTop=0.222222
OnChange=OnSliderChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(5)=GUISlider'GSlider'
Begin Object Class=GUISlider name=BSlider
bIntSlider=True
MinValue=0
MaxValue=255
WinWidth=0.357143
WinHeight=0.111111
WinLeft=0.285714
WinTop=0.388889
OnChange=OnSliderChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(6)=GUISlider'BSlider'
Begin Object Class=GUINumericEdit name=REdit
MinValue=0
MaxValue=255
Step=1
WinWidth=0.214286
WinHeight=0.111111
WinLeft=0.714286
WinTop=0.055556
OnChange=OnREditChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(7)=GUINumericEdit'REdit'
Begin Object Class=GUINumericEdit name=GEdit
MinValue=0
MaxValue=255
Step=1
WinWidth=0.214286
WinHeight=0.111111
WinLeft=0.714286
WinTop=0.222222
OnChange=OnGEditChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(8)=GUINumericEdit'GEdit'
Begin Object Class=GUINumericEdit name=BEdit
MinValue=0
MaxValue=255
Step=1
WinWidth=0.214286
WinHeight=0.111111
WinLeft=0.714286
WinTop=0.388889
OnChange=OnBEditChange;
bBoundToParent=True
bScaleToParent=True
End Object
Controls(9)=GUINumericEdit'BEdit'
Begin Object Class=GUILabel name=ColorBox
WinWidth=0.857143
WinHeight=0.222222
WinLeft=0.071429
WinTop=0.555556
bTransparent=False
bAcceptsInput=False
bNeverFocus=True
bBoundToParent=True
bScaleToParent=True
End Object
Controls(10)=GUILabel'ColorBox'
Begin Object Class=GUIButton name=OkButton
Caption="OK"
WinWidth=0.214286
WinHeight=0.111111
WinLeft=0.392857
WinTop=0.833333
OnClick=SetAndClose
bBoundToParent=True
bScaleToParent=True
End Object
Controls(11)=GUIButton'OkButton'
WinWidth=0.5
WinHeight=0.5
WinLeft=0.25
WinTop=0.25
}
