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

162 lines
3.9 KiB
Ucode

class Browser_IRC extends Browser_Page;
var IRC_System SystemPage;
var GUITabControl ChannelTabs;
var localized string SystemLabel;
var bool bIrcIsInitialised;
var GUIButton LeaveButton;
var GUIButton BackButton;
var GUIButton ChangeNickButton;
var localized string LeaveChannelCaption;
var localized string LeavePrivateCaptionHead;
var localized string LeavePrivateCaptionTail;
var localized string ChooseNewNickText;
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.InitComponent(MyController, MyOwner);
// If not already initialised, create system page and add to tabs.
if(!bIrcIsInitialised)
{
ChannelTabs = GUITabControl(Controls[1]);
SystemPage = IRC_System( ChannelTabs.AddTab(SystemLabel, "xinterface.IRC_System", , , true) );
SystemPage.IRCPage = self;
ChannelTabs.OnChange = TabChange;
SystemPage.SetCurrentChannel(-1); // Initially, System page is shown
// Set up buttons
BackButton = GUIButton(GUIPanel(Controls[0]).Controls[0]);
BackButton.OnClick = BackClick;
LeaveButton = GUIButton(GUIPanel(Controls[0]).Controls[1]);
LeaveButton.bVisible = false;
LeaveButton.OnClick = LeaveChannelClick;
ChangeNickButton = GUIButton(GUIPanel(Controls[0]).Controls[2]);
ChangeNickButton.OnClick = ChangeNickClick;
bIrcIsInitialised=true;
}
}
// delegates
function bool BackClick(GUIComponent Sender)
{
Controller.CloseMenu(true);
return true;
}
function bool ChangeNickClick(GUIComponent Sender)
{
local IRC_NewNick NewNickDialog;
if( SystemPage.Controller.OpenMenu("xinterface.IRC_NewNick") )
{
NewNickDialog = IRC_NewNick(SystemPage.Controller.TopPage());
NewNickDialog.NewNickPrompt.Caption = ChooseNewNickText;
NewNickDialog.SystemPage = SystemPage;
}
return true;
}
function TabChange(GUIComponent Sender)
{
local GUITabButton TabButton;
TabButton = GUITabButton(Sender);
if ( TabButton == none )
return;
// If changed to system page - set channel to -1 (ie system)
if( SystemPage == TabButton.MyPanel )
{
SystemPage.SetCurrentChannel(-1);
LeaveButton.bVisible = false;
}
else
{
SystemPage.SetCurrentChannelPage( IRC_Channel( TabButton.MyPanel ) );
// Set caption
if( IRC_Private( TabButton.MyPanel ) != None)
LeaveButton.Caption = LeavePrivateCaptionHead$Caps(TabButton.Caption)$LeavePrivateCaptionTail;
else
LeaveButton.Caption = LeaveChannelCaption;
LeaveButton.bVisible = true;
}
TabButton.bForceFlash=false; // Stop any 'forced' flashing when we switch to a tab
}
function bool LeaveChannelClick(GUIComponent Sender)
{
SystemPage.PartCurrentChannel();
return true;
}
defaultproperties
{
Begin Object Class=GUIButton Name=MyBackButton
Caption="BACK"
StyleName="SquareMenuButton"
WinWidth=0.2
WinLeft=0
WinTop=0
WinHeight=1
End Object
Begin Object Class=GUIButton Name=MyLeaveButton
Caption=""
StyleName="SquareMenuButton"
WinWidth=0.2
WinLeft=0.4
WinTop=0
WinHeight=1
End Object
Begin Object Class=GUIButton Name=MyChangeNickButton
Caption="CHANGE NICK"
StyleName="SquareMenuButton"
WinWidth=0.2
WinLeft=0.2
WinTop=0
WinHeight=1
End Object
Begin Object Class=GUIPanel Name=FooterPanel
Controls(0)=MyBackButton
Controls(1)=MyLeaveButton
Controls(2)=MyChangeNickButton
WinWidth=1
WinHeight=0.05
WinLeft=0
WinTop=0.95
End Object
Controls(0)=GUIPanel'FooterPanel'
Begin Object Class=GUITabControl Name=ChannelTabControl
WinWidth=1.0
WinLeft=0
WinTop=0
WinHeight=48
TabHeight=0.04
bFillSpace=False
bAcceptsInput=true
bDockPanels=true
End Object
Controls(1)=GUITabControl'ChannelTabControl'
LeaveChannelCaption="LEAVE CHANNEL"
LeavePrivateCaptionHead="CLOSE "
LeavePrivateCaptionTail=""
SystemLabel="System"
ChooseNewNickText="Choose A New Chat Nickname"
}