Cogito, ergo sum

Legacy:Color Selection Dialog

From Unreal Wiki, The Unreal Engine Documentation Site

Jump to: navigation, search

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
}
Personal tools