using System.Windows.Forms;
using Radegast;
using OpenMetaverse;
+using OpenMetaverse.StructuredData;
namespace Radegast.Plugin.IRC
{
[Radegast.Plugin(Name = "IRC Relay", Description = "Relays SL group chat to a IRC network", Version = "0.1")]
public class IRCPlugin : IRadegastPlugin
{
- RadegastInstance Instance;
- GridClient Client { get { return Instance.Client; } }
+ RadegastInstance instance;
+ GridClient Client { get { return instance.Client; } }
ToolStripMenuItem IRCButton;
int relayNr = 0;
public void StartPlugin(RadegastInstance inst)
{
- Instance = inst;
+ instance = inst;
IRCButton = new ToolStripMenuItem("New IRC Relay...");
IRCButton.Click += new EventHandler(IRCButton_Click);
- Instance.MainForm.PluginsMenu.DropDownItems.Add(IRCButton);
+ instance.MainForm.PluginsMenu.DropDownItems.Add(IRCButton);
}
public void StopPlugin(RadegastInstance instance)
{
List<RadegastTab> toRemove = new List<RadegastTab>();
- foreach (RadegastTab tab in Instance.TabConsole.Tabs.Values)
+ foreach (RadegastTab tab in this.instance.TabConsole.Tabs.Values)
{
if (tab.Control is RelayConsole)
toRemove.Add(tab);
{
relayNr++;
string tabName = "irc_relay_" + relayNr.ToString();
- Instance.TabConsole.AddTab(tabName, "IRC Relay " + relayNr.ToString(), new RelayConsole(Instance));
- Instance.TabConsole.SelectTab(tabName);
+
+ instance.TabConsole.AddTab(tabName, "IRC Relay " + relayNr.ToString(), new RelayConsole(instance));
+ instance.TabConsole.SelectTab(tabName);
}
}
}
<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
<PropertyGroup>\r
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
<AppDesignerFolder>Properties</AppDesignerFolder>\r
<RootNamespace>Radegast.Plugin.IRC</RootNamespace>\r
<AssemblyName>Radegast.Plugin.IRC</AssemblyName>\r
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
<FileAlignment>512</FileAlignment>\r
+ <FileUpgradeFlags>\r
+ </FileUpgradeFlags>\r
+ <UpgradeBackupLocation>\r
+ </UpgradeBackupLocation>\r
+ <OldToolsVersion>3.5</OldToolsVersion>\r
+ <PublishUrl>publish\</PublishUrl>\r
+ <Install>true</Install>\r
+ <InstallFrom>Disk</InstallFrom>\r
+ <UpdateEnabled>false</UpdateEnabled>\r
+ <UpdateMode>Foreground</UpdateMode>\r
+ <UpdateInterval>7</UpdateInterval>\r
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r
+ <UpdatePeriodically>false</UpdatePeriodically>\r
+ <UpdateRequired>false</UpdateRequired>\r
+ <MapFileExtensions>true</MapFileExtensions>\r
+ <ApplicationRevision>0</ApplicationRevision>\r
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r
+ <IsWebBootstrapper>false</IsWebBootstrapper>\r
+ <UseApplicationTrust>false</UseApplicationTrust>\r
+ <BootstrapperEnabled>true</BootstrapperEnabled>\r
+ <TargetFrameworkProfile />\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<DebugSymbols>true</DebugSymbols>\r
<ErrorReport>prompt</ErrorReport>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">\r
- <OutputPath>..\..\bin\Release\</OutputPath>\r
+ <OutputPath>..\..\bin\</OutputPath>\r
<DefineConstants>TRACE</DefineConstants>\r
<Optimize>true</Optimize>\r
<DebugType>pdbonly</DebugType>\r
<ErrorReport>prompt</ErrorReport>\r
</PropertyGroup>\r
<ItemGroup>\r
- <Reference Include="Meebey.SmartIrc4net, Version=0.4.0.29113, Culture=neutral, processorArchitecture=x86" />\r
+ <Reference Include="Meebey.SmartIrc4net, Version=0.4.0.29113, Culture=neutral, processorArchitecture=x86">\r
+ <SpecificVersion>False</SpecificVersion>\r
+ <HintPath>assemblies\Meebey.SmartIrc4net.dll</HintPath>\r
+ </Reference>\r
<Reference Include="System" />\r
<Reference Include="System.Core">\r
<RequiredTargetFramework>3.5</RequiredTargetFramework>\r
<None Include="assemblies\Meebey.SmartIrc4net.dll" />\r
</ItemGroup>\r
<ItemGroup>\r
- <ProjectReference Include="..\..\..\libopenmetaverse\OpenMetaverse.StructuredData\OpenMetaverse.StructuredData.csproj">\r
- <Project>{9532352B-BB4D-463A-A8DE-6B678009CD51}</Project>\r
+ <EmbeddedResource Include="RelayConsole.resx">\r
+ <DependentUpon>RelayConsole.cs</DependentUpon>\r
+ </EmbeddedResource>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\..\libopenmetaverse\OpenMetaverse.StructuredData\OpenMetaverse.StructuredData.csproj">\r
+ <Project>{F048B0F0-2A65-4588-A292-9C812FC8F354}</Project>\r
<Name>OpenMetaverse.StructuredData</Name>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\..\libopenmetaverse\OpenMetaverseTypes\OpenMetaverseTypes.csproj">\r
- <Project>{6EFD681C-F4F1-459F-A059-664A28F234EF}</Project>\r
+ <ProjectReference Include="..\..\libopenmetaverse\OpenMetaverseTypes\OpenMetaverseTypes.csproj">\r
+ <Project>{5F087E42-6E20-4F87-BE86-AEBED154FDEB}</Project>\r
<Name>OpenMetaverseTypes</Name>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\..\libopenmetaverse\OpenMetaverse\OpenMetaverse.csproj">\r
- <Project>{58072E17-F662-47D2-A2BE-001D026009EA}</Project>\r
+ <ProjectReference Include="..\..\libopenmetaverse\OpenMetaverse\OpenMetaverse.csproj">\r
+ <Project>{1545F87D-D8F6-4CD9-BB01-772389BFBC63}</Project>\r
<Name>OpenMetaverse</Name>\r
</ProjectReference>\r
<ProjectReference Include="..\..\Radegast\Radegast.csproj">\r
- <Project>{A6D955CD-1F55-459F-A7AD-01E591404989}</Project>\r
+ <Project>{E6CB0CED-4066-41D3-93BF-F922FEE235F9}</Project>\r
<Name>Radegast</Name>\r
</ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="RelayConsole.resx">\r
- <DependentUpon>RelayConsole.cs</DependentUpon>\r
- </EmbeddedResource>\r
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">\r
+ <Visible>False</Visible>\r
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\r
+ <Install>false</Install>\r
+ </BootstrapperPackage>\r
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">\r
+ <Visible>False</Visible>\r
+ <ProductName>.NET Framework 3.5 SP1</ProductName>\r
+ <Install>true</Install>\r
+ </BootstrapperPackage>\r
</ItemGroup>\r
+ <ItemGroup />\r
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
Other similar extension points exist, see Microsoft.Common.targets.\r
/// </summary>
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RelayConsole));
this.pnlChatLine = new System.Windows.Forms.Panel();
this.btnSend = new System.Windows.Forms.Button();
this.cbxInput = new Radegast.ChatInputBox();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
+ this.btnDisconnect = new System.Windows.Forms.Button();
this.scChat = new System.Windows.Forms.SplitContainer();
- this.rtbChatText = new System.Windows.Forms.RichTextBox();
+ this.rtbChatText = new Radegast.RRichTextBox();
this.Participants = new Radegast.ListViewNoFlicker();
- this.tsChatMenu = new System.Windows.Forms.ToolStrip();
- this.lblConnected = new System.Windows.Forms.ToolStripLabel();
- this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
- this.btnConnectPannel = new System.Windows.Forms.ToolStripButton();
- this.btnDisconnect = new System.Windows.Forms.ToolStripButton();
- this.ddGroup = new System.Windows.Forms.ToolStripDropDownButton();
this.pnlChatLine.SuspendLayout();
this.pnlConnectionSettings.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.scChat)).BeginInit();
this.scChat.Panel1.SuspendLayout();
this.scChat.Panel2.SuspendLayout();
this.scChat.SuspendLayout();
- this.tsChatMenu.SuspendLayout();
this.SuspendLayout();
//
// pnlChatLine
//
// cbxInput
//
- this.cbxInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
+ this.cbxInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
this.cbxInput.Location = new System.Drawing.Point(3, 3);
this.cbxInput.Name = "cbxInput";
this.cbxInput.Size = new System.Drawing.Size(638, 20);
this.pnlConnectionSettings.Controls.Add(this.label3);
this.pnlConnectionSettings.Controls.Add(this.label2);
this.pnlConnectionSettings.Controls.Add(this.label1);
+ this.pnlConnectionSettings.Controls.Add(this.btnDisconnect);
this.pnlConnectionSettings.Dock = System.Windows.Forms.DockStyle.Top;
- this.pnlConnectionSettings.Location = new System.Drawing.Point(0, 25);
+ this.pnlConnectionSettings.Location = new System.Drawing.Point(0, 0);
this.pnlConnectionSettings.Name = "pnlConnectionSettings";
this.pnlConnectionSettings.Size = new System.Drawing.Size(705, 30);
this.pnlConnectionSettings.TabIndex = 1;
- this.pnlConnectionSettings.Visible = false;
//
// btnConnect
//
this.txtChan.Name = "txtChan";
this.txtChan.Size = new System.Drawing.Size(80, 20);
this.txtChan.TabIndex = 4;
+ this.txtChan.Validated += new System.EventHandler(this.txtChan_Validated);
//
// txtNick
//
this.txtNick.Name = "txtNick";
this.txtNick.Size = new System.Drawing.Size(61, 20);
this.txtNick.TabIndex = 3;
+ this.txtNick.Validated += new System.EventHandler(this.txtNick_Validated);
//
// txtPort
//
this.txtPort.Size = new System.Drawing.Size(61, 20);
this.txtPort.TabIndex = 2;
this.txtPort.Text = "6667";
+ this.txtPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtPort_KeyPress);
+ this.txtPort.Validated += new System.EventHandler(this.txtPort_Validated);
//
// txtServer
//
this.txtServer.Size = new System.Drawing.Size(140, 20);
this.txtServer.TabIndex = 1;
this.txtServer.Text = "irc.freenode.net";
+ this.txtServer.Validated += new System.EventHandler(this.txtServer_Validated);
//
// label4
//
this.label1.TabIndex = 0;
this.label1.Text = "IRC Server";
//
+ // btnDisconnect
+ //
+ this.btnDisconnect.Enabled = false;
+ this.btnDisconnect.Location = new System.Drawing.Point(9, 4);
+ this.btnDisconnect.Name = "btnDisconnect";
+ this.btnDisconnect.Size = new System.Drawing.Size(75, 23);
+ this.btnDisconnect.TabIndex = 11;
+ this.btnDisconnect.Text = "Disconnect";
+ this.btnDisconnect.UseVisualStyleBackColor = true;
+ this.btnDisconnect.Visible = false;
+ this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
+ //
// scChat
//
this.scChat.Dock = System.Windows.Forms.DockStyle.Fill;
- this.scChat.Location = new System.Drawing.Point(0, 55);
+ this.scChat.Location = new System.Drawing.Point(0, 30);
this.scChat.Name = "scChat";
//
// scChat.Panel1
//
this.scChat.Panel2.Controls.Add(this.Participants);
this.scChat.Panel2.Enabled = false;
- this.scChat.Size = new System.Drawing.Size(705, 325);
+ this.scChat.Size = new System.Drawing.Size(705, 350);
this.scChat.SplitterDistance = 533;
this.scChat.TabIndex = 2;
//
this.rtbChatText.Location = new System.Drawing.Point(0, 0);
this.rtbChatText.Name = "rtbChatText";
this.rtbChatText.ReadOnly = true;
- this.rtbChatText.Size = new System.Drawing.Size(533, 325);
+ this.rtbChatText.Size = new System.Drawing.Size(533, 350);
this.rtbChatText.TabIndex = 4;
this.rtbChatText.Text = "";
//
this.Participants.MultiSelect = false;
this.Participants.Name = "Participants";
this.Participants.ShowGroups = false;
- this.Participants.Size = new System.Drawing.Size(168, 325);
+ this.Participants.Size = new System.Drawing.Size(168, 350);
this.Participants.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.Participants.TabIndex = 5;
this.Participants.UseCompatibleStateImageBehavior = false;
this.Participants.View = System.Windows.Forms.View.List;
//
- // tsChatMenu
- //
- this.tsChatMenu.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
- this.tsChatMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.lblConnected,
- this.toolStripSeparator2,
- this.btnConnectPannel,
- this.btnDisconnect,
- this.ddGroup});
- this.tsChatMenu.Location = new System.Drawing.Point(0, 0);
- this.tsChatMenu.Name = "tsChatMenu";
- this.tsChatMenu.Size = new System.Drawing.Size(705, 25);
- this.tsChatMenu.TabIndex = 3;
- this.tsChatMenu.Text = "toolStrip1";
- //
- // lblConnected
- //
- this.lblConnected.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.lblConnected.Name = "lblConnected";
- this.lblConnected.Size = new System.Drawing.Size(84, 22);
- this.lblConnected.Text = "not connected";
- //
- // toolStripSeparator2
- //
- this.toolStripSeparator2.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.toolStripSeparator2.Name = "toolStripSeparator2";
- this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
- //
- // btnConnectPannel
- //
- this.btnConnectPannel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
- this.btnConnectPannel.Image = ((System.Drawing.Image)(resources.GetObject("btnConnectPannel.Image")));
- this.btnConnectPannel.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.btnConnectPannel.Name = "btnConnectPannel";
- this.btnConnectPannel.Size = new System.Drawing.Size(56, 22);
- this.btnConnectPannel.Text = "Connect";
- this.btnConnectPannel.Click += new System.EventHandler(this.btnConnectPannel_Click);
- //
- // btnDisconnect
- //
- this.btnDisconnect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
- this.btnDisconnect.Image = ((System.Drawing.Image)(resources.GetObject("btnDisconnect.Image")));
- this.btnDisconnect.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.btnDisconnect.Name = "btnDisconnect";
- this.btnDisconnect.Size = new System.Drawing.Size(70, 22);
- this.btnDisconnect.Text = "Disconnect";
- this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
- //
- // ddGroup
- //
- this.ddGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
- this.ddGroup.Image = ((System.Drawing.Image)(resources.GetObject("ddGroup.Image")));
- this.ddGroup.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.ddGroup.Name = "ddGroup";
- this.ddGroup.Size = new System.Drawing.Size(91, 22);
- this.ddGroup.Text = "Group (none)";
- //
// RelayConsole
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.Controls.Add(this.scChat);
this.Controls.Add(this.pnlConnectionSettings);
this.Controls.Add(this.pnlChatLine);
- this.Controls.Add(this.tsChatMenu);
this.Name = "RelayConsole";
this.Size = new System.Drawing.Size(705, 407);
this.pnlChatLine.ResumeLayout(false);
this.pnlConnectionSettings.PerformLayout();
this.scChat.Panel1.ResumeLayout(false);
this.scChat.Panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.scChat)).EndInit();
this.scChat.ResumeLayout(false);
- this.tsChatMenu.ResumeLayout(false);
- this.tsChatMenu.PerformLayout();
this.ResumeLayout(false);
- this.PerformLayout();
}
private System.Windows.Forms.Panel pnlChatLine;
private System.Windows.Forms.Panel pnlConnectionSettings;
private System.Windows.Forms.SplitContainer scChat;
- private System.Windows.Forms.ToolStrip tsChatMenu;
- private System.Windows.Forms.ToolStripLabel lblConnected;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
- public System.Windows.Forms.RichTextBox rtbChatText;
+ public RRichTextBox rtbChatText;
public ListViewNoFlicker Participants;
public ChatInputBox cbxInput;
public System.Windows.Forms.Button btnSend;
- private System.Windows.Forms.ToolStripButton btnConnectPannel;
private System.Windows.Forms.TextBox txtNick;
private System.Windows.Forms.TextBox txtPort;
private System.Windows.Forms.TextBox txtServer;
private System.Windows.Forms.Button btnConnect;
private System.Windows.Forms.TextBox txtChan;
private System.Windows.Forms.Label label4;
- private System.Windows.Forms.ToolStripButton btnDisconnect;
- private System.Windows.Forms.ToolStripDropDownButton ddGroup;
+ private System.Windows.Forms.Button btnDisconnect;
}
}
//
// $Id$
//
+
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Drawing;
-using System.Data;
-using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
-using System.Windows.Forms;
using System.Threading;
-using Radegast;
-using OpenMetaverse;
+using System.Windows.Forms;
using Meebey.SmartIrc4net;
+using OpenMetaverse;
+using OpenMetaverse.StructuredData;
namespace Radegast.Plugin.IRC
{
RichTextBoxPrinter textPrinter;
private List<string> chatHistory = new List<string>();
private int chatPointer;
- bool connecting = false;
+ volatile bool connecting = false;
UUID relayGroup;
+ public OSDMap config;
public RelayConsole(RadegastInstance instance)
: base(instance)
{
InitializeComponent();
Disposed += new EventHandler(RelayConsole_Disposed);
+
textPrinter = new RichTextBoxPrinter(rtbChatText);
+ // Get configuration settings, and initialize if not found.
+ config = instance.GlobalSettings["plugin.irc"] as OSDMap;
+
+ if (config == null)
+ {
+ config = new OSDMap();
+ config["server"] = new OSDString("irc.freenode.net");
+ config["port"] = new OSDInteger(6667);
+ config["nick"] = new OSDString(string.Empty);
+ config["channel"] = new OSDString("#");
+ config["send_delay"] = new OSDInteger(200);
+ config["auto_reconnect"] = new OSDBoolean(true);
+ config["ctcp_version"] = new OSDString("Radegast IRC");
+ instance.GlobalSettings["plugin.irc"] = config;
+ }
+
+ if (!config.ContainsKey("server"))
+ {
+ config["server"] = new OSDString("irc.freenode.net");
+ }
+ if (!config.ContainsKey("port"))
+ {
+ config["port"] = new OSDInteger(6667);
+ }
+ if (!config.ContainsKey("nick"))
+ {
+ config["nick"] = new OSDString(instance.Client.Self.Name);
+ }
+ if (!config.ContainsKey("channel"))
+ {
+ config["channel"] = new OSDString("#");
+ }
+ if (!config.ContainsKey("send_delay"))
+ {
+ config["send_delay"] = new OSDInteger(200);
+ }
+ if (!config.ContainsKey("auto_reconnect"))
+ {
+ config["auto_reconnect"] = new OSDBoolean(true);
+ }
+ if (!config.ContainsKey("ctcp_version"))
+ {
+ config["ctcp_version"] = new OSDString("Radegast IRC");
+ }
+
+ txtChan.Text = config["channel"].AsString();
+ txtNick.Text = config["nick"].AsString();
+ txtPort.Text = config["port"].AsString();
+ txtServer.Text = config["server"].AsString();
+
irc = new IrcClient();
- irc.SendDelay = 200;
- irc.AutoReconnect = true;
- irc.CtcpVersion = Properties.Resources.RadegastTitle;
+ irc.SendDelay = config["send_delay"].AsInteger();
+ irc.AutoReconnect = config["auto_reconnect"].AsBoolean();
+ irc.CtcpVersion = config["ctcp_version"].AsString();
irc.Encoding = Encoding.UTF8;
TC.OnTabAdded += new TabsConsole.TabCallback(TC_OnTabAdded);
client.Self.IM += new EventHandler<InstantMessageEventArgs>(Self_IM);
+ UpdateGui();
+
RefreshGroups();
}
irc.OnConnected -= new EventHandler(irc_OnConnected);
irc.OnDisconnected -= new EventHandler(irc_OnDisconnected);
+ instance.GlobalSettings.Save();
+
if (irc.IsConnected)
{
irc.AutoReconnect = false;
return;
}
+ /*
ddGroup.DropDownItems.Clear();
bool foundActive = false;
relayGroup = UUID.Zero;
ddGroup.Text = "Groups (none)";
}
-
+ */
}
void groupSelect(object sender, EventArgs e)
{
+ /*
if (sender is ToolStripButton)
{
UUID session = new UUID(((ToolStripButton)sender).Name);
relayGroup = session;
ddGroup.Text = string.Format("Groups ({0})", instance.Groups[session].Name);
- }
+ }*/
}
private void PrintMsg(string fromName, string message)
if (InvokeRequired)
{
if (IsHandleCreated)
+ {
BeginInvoke(new MethodInvoker(() => PrintMsg(fromName, message)));
+ }
+
return;
}
sb.Append(message);
}
- //instance.LogClientMessage(sessionName + ".txt", sb.ToString());
textPrinter.PrintTextLine(sb.ToString());
- sb = null;
}
- private void btnConnectPannel_Click(object sender, EventArgs e)
+ private void UpdateGui()
{
- pnlConnectionSettings.Visible = true;
+ if (InvokeRequired)
+ {
+ if (IsHandleCreated)
+ Invoke(new MethodInvoker(UpdateGui));
+ return;
+ }
+
+ bool isConnectedOrConnecting = connecting || irc.IsConnected;
+
+ btnSend.Enabled = isConnectedOrConnecting;
+ btnDisconnect.Enabled = isConnectedOrConnecting;
+ btnDisconnect.Visible = isConnectedOrConnecting;
+ btnConnect.Enabled = !isConnectedOrConnecting;
+ btnConnect.Visible = !isConnectedOrConnecting;
+
+ txtChan.ReadOnly = isConnectedOrConnecting;
+ txtNick.ReadOnly = isConnectedOrConnecting;
+ txtPort.ReadOnly = isConnectedOrConnecting;
+ txtServer.ReadOnly = isConnectedOrConnecting;
+ rtbChatText.BackColor = isConnectedOrConnecting ? SystemColors.Window : SystemColors.Control;
}
private void IrcThread(object param)
int port = (int)args[1];
string nick = (string)args[2];
string chan = (string)args[3];
-
- connecting = true;
- PrintMsg("System", "Connecting...");
-
try
{
irc.Connect(server, port);
PrintMsg("System", "Logging in...");
irc.Login(nick, "Radegast SL Relay", 0, nick);
- irc.RfcJoin(chan);
+
connecting = false;
- }
- catch (Exception ex)
- {
- PrintMsg("System", "An error has occured: " + ex.Message);
- }
+ UpdateGui();
- try
- {
+ PrintMsg("System", "Joining channel...");
+ irc.RfcJoin(chan);
+
+ PrintMsg("System", "Ready!");
irc.Listen();
+
if (irc.IsConnected)
{
+ // todo: why disable autoreconnect here?
+ PrintMsg("System", irc.IsConnected.ToString());
irc.AutoReconnect = false;
irc.Disconnect();
}
}
- catch { }
+ catch (Exception ex)
+ {
+ connecting = false;
+ PrintMsg("System", "An error has occured: " + ex.Message);
+ }
+
+ if (irc.IsConnected)
+ {
+ irc.Disconnect();
+ }
+ UpdateGui();
}
private void btnConnect_Click(object sender, EventArgs e)
return;
}
+ PrintMsg("System", "Connecting...");
+ connecting = true;
+ UpdateGui();
- Thread IRCConnection = new Thread(new ParameterizedThreadStart(IrcThread));
- IRCConnection.Name = "IRC Thread";
- IRCConnection.IsBackground = true;
- int port = 6667;
- int.TryParse(txtPort.Text, out port);
- IRCConnection.Start(new object[] { txtServer.Text, port, txtNick.Text, txtChan.Text });
+ try
+ {
+ Thread IRCConnection = new Thread(new ParameterizedThreadStart(IrcThread));
+ IRCConnection.Name = "IRC Thread";
+ IRCConnection.IsBackground = true;
+ int port = 6667;
+ int.TryParse(txtPort.Text, out port);
+ IRCConnection.Start(new object[] { txtServer.Text, port, txtNick.Text, txtChan.Text });
+ }
+ catch (Exception ex)
+ {
+ if (irc.IsConnected)
+ {
+ irc.Disconnect();
+ }
+ PrintMsg("System", "Failed: " + ex.Message);
+
+ connecting = false;
+ UpdateGui();
+ }
+ }
+
+ private void btnDisconnect_Click(object sender, EventArgs e)
+ {
+ if (irc.IsConnected)
+ {
+ irc.AutoReconnect = false;
+ irc.Disconnect();
+ }
}
void irc_OnRawMessage(object sender, IrcEventArgs e)
return;
}
- lblConnected.Text = "not connected";
- btnSend.Enabled = false;
+ UpdateGui();
}
void irc_OnConnected(object sender, EventArgs e)
Invoke(new MethodInvoker(() => irc_OnConnected(sender, e)));
return;
}
- lblConnected.Text = "connected";
- pnlConnectionSettings.Visible = false;
- btnSend.Enabled = true;
+
+ UpdateGui();
}
void irc_OnChannelMessage(object sender, IrcEventArgs e)
}
}
- private void btnDisconnect_Click(object sender, EventArgs e)
- {
- if (irc.IsConnected)
- {
- irc.AutoReconnect = false;
- irc.Disconnect();
- }
- }
-
void SendMsg()
{
string msg = cbxInput.Text;
{
SendMsg();
}
+
+ private void txtServer_Validated(object sender, EventArgs e)
+ {
+ config["server"] = new OSDString(txtServer.Text);
+ }
+
+ private void txtPort_Validated(object sender, EventArgs e)
+ {
+ int port = 6667;
+ int.TryParse(txtPort.Text, out port);
+
+ config["port"] = new OSDInteger(port);
+ }
+
+ private void txtChan_Validated(object sender, EventArgs e)
+ {
+ config["channel"] = new OSDString(txtChan.Text);
+ }
+
+ private void txtNick_Validated(object sender, EventArgs e)
+ {
+ config["nick"] = new OSDString(txtNick.Text);
+ }
+
+ private void txtPort_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ e.Handled = !char.IsNumber(e.KeyChar);
+ }
}
}
<value>2.0</value>\r
</resheader>\r
<resheader name="reader">\r
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
</resheader>\r
<resheader name="writer">\r
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
</resheader>\r
- <metadata name="tsChatMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
- <value>17, 17</value>\r
- </metadata>\r
- <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
- <data name="btnConnectPannel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
- <value>\r
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI\r
- ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9\r
- HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN\r
- rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K\r
- TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx\r
- oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8\r
- 7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI\r
- xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX\r
- LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd\r
- KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC\r
-</value>\r
- </data>\r
- <data name="btnDisconnect.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
- <value>\r
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI\r
- ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9\r
- HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN\r
- rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K\r
- TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx\r
- oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8\r
- 7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI\r
- xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX\r
- LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd\r
- KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC\r
-</value>\r
- </data>\r
- <data name="ddGroup.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
- <value>\r
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI\r
- ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9\r
- HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN\r
- rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K\r
- TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx\r
- oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8\r
- 7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI\r
- xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX\r
- LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd\r
- KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC\r
-</value>\r
- </data>\r
</root>
\ No newline at end of file