Added IRC client tool

This commit is contained in:
Jaex 2015-08-24 19:38:35 +03:00
parent 7992791fa2
commit a2b5a03246
23 changed files with 2740 additions and 413 deletions

View file

@ -0,0 +1,109 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing.Design;
using System.Linq;
using System.Text.RegularExpressions;
namespace ShareX.IRCLib
{
public class AutoResponseInfo
{
[Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> Messages { get; set; }
[Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> Responses { get; set; }
[DefaultValue(IRCAutoResponseType.Contains)]
public IRCAutoResponseType Type { get; set; }
private Stopwatch lastMatchTimer = new Stopwatch();
public AutoResponseInfo()
{
Messages = new List<string>();
Responses = new List<string>();
Type = IRCAutoResponseType.Contains;
}
public AutoResponseInfo(List<string> message, List<string> response, IRCAutoResponseType type)
{
Messages = message;
Responses = response;
Type = type;
}
public bool IsMatch(string message, string nick, string mynick)
{
bool isMatch = Messages.Select(m => m.Replace("$nick", nick).Replace("$mynick", mynick)).Any(x =>
{
switch (Type)
{
default:
case IRCAutoResponseType.Contains:
return Regex.IsMatch(message, $"\\b{Regex.Escape(x)}\\b", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
case IRCAutoResponseType.StartsWith:
return message.StartsWith(x, StringComparison.InvariantCultureIgnoreCase);
case IRCAutoResponseType.ExactMatch:
return message.Equals(x, StringComparison.InvariantCultureIgnoreCase);
}
});
if (isMatch)
{
lastMatchTimer.Restart();
}
return isMatch;
}
public bool CheckLastMatchTimer(int milliseconds)
{
return milliseconds <= 0 || !lastMatchTimer.IsRunning || lastMatchTimer.Elapsed.TotalMilliseconds > milliseconds;
}
public string RandomResponse(string nick, string mynick)
{
int index = MathHelpers.Random(Responses.Count - 1);
return Responses.Select(r => r.Replace("$nick", nick).Replace("$mynick", mynick)).ElementAt(index);
}
public override string ToString()
{
if (Messages != null && Messages.Count > 0)
{
return string.Join(", ", Messages);
}
return "...";
}
}
}

61
ShareX.IRCLib/Enums.cs Normal file
View file

@ -0,0 +1,61 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
namespace ShareX.IRCLib
{
public enum IRCAutoResponseType
{
Contains,
StartsWith,
ExactMatch
}
public enum IRCUserType
{
Me,
User,
Server
}
public enum IRCColors
{
White = 0,
Black = 1,
Blue = 2,
Green = 3,
LightRed = 4,
Brown = 5,
Purple = 6,
Orange = 7,
Yellow = 8,
LightGreen = 9,
Cyan = 10,
LightCyan = 11,
LightBlue = 12,
Pink = 13,
Grey = 14,
LightGrey = 15
}
}

560
ShareX.IRCLib/IRC.cs Normal file
View file

@ -0,0 +1,560 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Threading;
namespace ShareX.IRCLib
{
public class IRC : IDisposable
{
public event Action<MessageInfo> Output;
public event Action Connected, Disconnected;
public delegate void MessageEventHandler(UserInfo user, string channel, string message);
public event MessageEventHandler Message;
public event Action<UserInfo> WhoisResult;
public delegate void UserEventHandler(UserInfo user, string channel);
public event UserEventHandler UserJoined, UserLeft, UserQuit;
public delegate void UserNickChangedEventHandler(UserInfo user, string newNick);
public event UserNickChangedEventHandler UserNickChanged;
public delegate void UserKickedEventHandler(UserInfo user, string channel, string kickedNick);
public event UserKickedEventHandler UserKicked;
public IRCInfo Info { get; private set; }
public bool IsConnected { get; private set; }
public string LastChannel { get; private set; }
private TcpClient tcp;
private StreamReader streamReader;
private StreamWriter streamWriter;
private bool disconnecting;
private List<UserInfo> userList = new List<UserInfo>();
public IRC()
{
Info = new IRCInfo();
}
public IRC(IRCInfo info)
{
Info = info;
}
public IRC(string server, int port, string nickname, string username, string realname, bool invisible)
{
Info = new IRCInfo()
{
Server = server,
Port = port,
Nickname = nickname,
Username = username,
Realname = realname,
Invisible = invisible
};
}
public void Dispose()
{
Disconnect();
}
public void Connect()
{
if (IsConnected)
{
return;
}
try
{
IsConnected = true;
disconnecting = false;
tcp = new TcpClient(Info.Server, Info.Port);
NetworkStream networkStream = tcp.GetStream();
streamReader = new StreamReader(networkStream);
streamWriter = new StreamWriter(networkStream);
Thread connectionThread = new Thread(ConnectionThread);
connectionThread.Start();
if (!string.IsNullOrEmpty(Info.Password))
{
SetPassword(Info.Password);
}
SetUser(Info.Username, Info.Realname, Info.Invisible);
ChangeNickname(Info.Nickname);
}
catch (Exception e)
{
IsConnected = false;
Console.WriteLine(e.ToString());
}
}
public void Disconnect()
{
try
{
if (IsConnected)
{
Quit(Info.QuitReason);
disconnecting = true;
}
if (streamReader != null) streamReader.Close();
if (streamWriter != null) streamWriter.Close();
if (tcp != null) tcp.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
private void Reconnect()
{
Disconnect();
Connect();
}
private void ConnectionThread()
{
try
{
string message;
while ((message = streamReader.ReadLine()) != null)
{
if (!CheckCommand(message)) break;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
OnDisconnected();
}
public void SendRawMessage(string message)
{
streamWriter.WriteLine(message);
streamWriter.Flush();
CheckCommand(message);
}
private bool CheckCommand(string message)
{
MessageInfo messageInfo = MessageInfo.Parse(message);
//:sendak.freenode.net 375 Jaex :- sendak.freenode.net Message of the Day -
//:sendak.freenode.net 372 Jaex :- Welcome to sendak.freenode.net in Vilnius, Lithuania, EU.
if ((messageInfo.Command == "375" || messageInfo.Command == "372") && Info.SuppressMOTD)
{
return true;
}
if (messageInfo.User.UserType == IRCUserType.Me)
{
messageInfo.User.Nickname = Info.Nickname;
}
OnOutput(messageInfo);
switch (messageInfo.Command)
{
case "PING": //PING :sendak.freenode.net
SendRawMessage("PONG :" + messageInfo.Message);
break;
case "376": //:sendak.freenode.net 376 Jaex :End of /MOTD command.
OnConnected();
break;
case "PRIVMSG": //:Jaex!Jaex@unaffiliated/jaex PRIVMSG #ShareX :test
CheckMessage(messageInfo);
break;
case "JOIN": //:Jaex!Jaex@unaffiliated/jaex JOIN #ShareX or :Jaex!Jaex@unaffiliated/jaex JOIN :#ShareX
if (UserJoined != null) UserJoined(messageInfo.User, messageInfo.Parameters.Count > 0 ? messageInfo.Parameters[0] : messageInfo.Message);
break;
case "PART": //:Jaex!Jaex@unaffiliated/jaex PART #ShareX :"Leaving"
if (UserLeft != null) UserLeft(messageInfo.User, messageInfo.Parameters[0]);
break;
case "QUIT": //:Jaex!Jaex@unaffiliated/jaex QUIT :Client Quit
if (UserQuit != null) UserQuit(messageInfo.User, null);
break;
case "NICK": //:Jaex!Jaex@unaffiliated/jaex NICK :Jaex2
if (UserNickChanged != null) UserNickChanged(messageInfo.User, messageInfo.Message);
break;
case "KICK": //:Jaex!Jaex@unaffiliated/jaex KICK #ShareX Jaex2 :Jaex2
if (UserKicked != null) UserKicked(messageInfo.User, messageInfo.Parameters[0], messageInfo.Parameters[1]);
if (Info.AutoRejoinOnKick) JoinChannel(messageInfo.Parameters[0]);
break;
case "311": //:sendak.freenode.net 311 Jaex ShareX ~ShareX unaffiliated/sharex * :realname
case "319": //:sendak.freenode.net 319 Jaex ShareX :@#ShareX @#ShareX_Test
case "312": //:sendak.freenode.net 312 Jaex ShareX sendak.freenode.net :Vilnius, Lithuania, EU
case "671": //:sendak.freenode.net 671 Jaex ShareX :is using a secure connection
case "317": //:sendak.freenode.net 317 Jaex ShareX 39110 1440201914 :seconds idle, signon time
case "330": //:sendak.freenode.net 330 Jaex ShareX ShareX :is logged in as
case "318": //:sendak.freenode.net 318 Jaex ShareX :End of /WHOIS list.
ParseWHOIS(messageInfo);
break;
case "396": //:sendak.freenode.net 396 Jaex unaffiliated/jaex :is now your hidden host (set by services.)
if (Info.AutoJoinWaitIdentify)
{
AutoJoinChannels();
}
break;
case "ERROR":
return false;
}
return true;
}
private void CheckMessage(MessageInfo messageInfo)
{
string channel = messageInfo.Parameters[0];
OnMessage(messageInfo.User, channel, messageInfo.Message);
if (messageInfo.User.UserType == IRCUserType.User)
{
HandleAutoResponse(channel, messageInfo.User.Nickname, messageInfo.Message.ToLowerInvariant());
}
}
private void AutoJoinChannels()
{
foreach (string channel in Info.AutoJoinChannels)
{
JoinChannel(channel);
}
}
private void OnOutput(MessageInfo messageInfo)
{
if (Output != null)
{
Output(messageInfo);
}
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {messageInfo.Content}");
}
protected void OnConnected()
{
IsConnected = true;
if (Connected != null)
{
Connected();
}
foreach (string command in Info.ConnectCommands)
{
SendRawMessage(command);
}
if (!Info.AutoJoinWaitIdentify)
{
AutoJoinChannels();
}
}
protected void OnDisconnected()
{
IsConnected = false;
if (Disconnected != null)
{
Disconnected();
}
if (!disconnecting && Info.AutoReconnect)
{
Thread.Sleep(Info.AutoReconnectDelay);
Reconnect();
}
}
protected void OnMessage(UserInfo user, string channel, string message)
{
if (Message != null)
{
Message(user, channel, message);
}
}
protected void OnWhoisResult(UserInfo userInfo)
{
if (WhoisResult != null)
{
WhoisResult(userInfo);
}
}
#region Commands
// JOIN channel
public void JoinChannel(string channel)
{
if (IsConnected)
{
SendRawMessage($"JOIN {channel}");
LastChannel = channel;
}
else
{
Info.AutoJoinChannels.Add(channel);
}
}
// TOPIC channel :message
public void SetTopic(string channel, string message)
{
SendRawMessage($"TOPIC {channel} :{message}");
}
// NOTICE channel/nick :message
public void SendNotice(string channelnick, string message)
{
SendRawMessage($"NOTICE {channelnick} :{message}");
}
// PRIVMSG channel/nick :message
public void SendMessage(string message, string channel = null)
{
if (string.IsNullOrEmpty(channel))
{
channel = LastChannel;
}
SendRawMessage($"PRIVMSG {channel} :{message}");
}
// NICK nick
public void ChangeNickname(string nick)
{
SendRawMessage($"NICK {nick}");
Info.Nickname = nick;
}
// PART channel :reason
public void LeaveChannel(string channel, string reason = null)
{
SendRawMessage(AddReason($"PART {channel}", reason));
}
// KICK nick :reason
public void KickUser(string channel, string nick, string reason = null)
{
SendRawMessage(AddReason($"KICK {channel} {nick}", reason));
}
// PASS password
public void SetPassword(string password)
{
SendRawMessage($"PASS {password}");
}
// USER username invisible * :realname
public void SetUser(string username, string realname, bool invisible)
{
SendRawMessage($"USER {username} {(invisible ? 8 : 0)} * :{realname}");
}
// WHOIS nick
public void Whois(string nick, bool detailed = true)
{
string msg = $"WHOIS {nick}";
if (detailed) msg += $" {nick}";
SendRawMessage(msg);
}
// QUIT :reason
public void Quit(string reason = null)
{
SendRawMessage(AddReason("QUIT", reason));
}
#endregion Commands
private string AddReason(string command, string reason)
{
if (!string.IsNullOrEmpty(reason)) command += " :" + reason;
return command;
}
private bool HandleAutoResponse(string channel, string nick, string message)
{
if (Info.AutoResponse && nick != Info.Nickname)
{
foreach (AutoResponseInfo autoResponseInfo in Info.AutoResponseList)
{
if (autoResponseInfo.CheckLastMatchTimer(Info.AutoResponseDelay) && autoResponseInfo.IsMatch(message, nick, Info.Nickname))
{
// Is it whisper?
if (!channel.StartsWith("#"))
{
channel = nick;
}
string response = autoResponseInfo.RandomResponse(nick, Info.Nickname);
SendMessage(response, channel);
return true;
}
}
}
return false;
}
private void ParseWHOIS(MessageInfo messageInfo)
{
UserInfo userInfo;
switch (messageInfo.Command)
{
case "311": //:sendak.freenode.net 311 Jaex ShareX ~ShareX unaffiliated/sharex * :realname
if (messageInfo.Parameters.Count >= 4)
{
userInfo = new UserInfo();
userInfo.Nickname = messageInfo.Parameters[1];
if (messageInfo.Parameters[2][1] == '~')
{
userInfo.Username = messageInfo.Parameters[2].Substring(1);
}
else // Ident
{
userInfo.Username = messageInfo.Parameters[2];
}
userInfo.Host = messageInfo.Parameters[3];
userInfo.Realname = messageInfo.Message;
userList.Add(userInfo);
}
break;
case "319": //:sendak.freenode.net 319 Jaex ShareX :@#ShareX @#ShareX_Test
if (messageInfo.Parameters.Count >= 2)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
userInfo.Channels.Clear();
userInfo.Channels.AddRange(messageInfo.Message.Split());
}
}
break;
case "312": //:sendak.freenode.net 312 Jaex ShareX sendak.freenode.net :Vilnius, Lithuania, EU
if (messageInfo.Parameters.Count >= 3)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
userInfo.Server = messageInfo.Parameters[2];
}
}
break;
case "671": //:sendak.freenode.net 671 Jaex ShareX :is using a secure connection
if (messageInfo.Parameters.Count >= 2)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
userInfo.SecureConnection = true;
}
}
break;
case "317": //:sendak.freenode.net 317 Jaex ShareX 39110 1440201914 :seconds idle, signon time
if (messageInfo.Parameters.Count >= 4)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
int idleTime;
if (int.TryParse(messageInfo.Parameters[2], out idleTime))
{
userInfo.IdleTime = TimeSpan.FromSeconds(idleTime);
}
int signOnTime;
if (int.TryParse(messageInfo.Parameters[3], out signOnTime))
{
userInfo.SignOnDate = Helpers.UnixToDateTime(signOnTime).ToLocalTime();
}
}
}
break;
case "330": //:sendak.freenode.net 330 Jaex ShareX ShareX :is logged in as
if (messageInfo.Parameters.Count >= 3)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
userInfo.Identity = messageInfo.Parameters[2];
}
}
break;
case "318": //:sendak.freenode.net 318 Jaex ShareX :End of /WHOIS list.
if (messageInfo.Parameters.Count >= 2)
{
userInfo = FindUser(messageInfo.Parameters[1]);
if (userInfo != null)
{
userList.Remove(userInfo);
OnWhoisResult(userInfo);
}
}
break;
}
}
private UserInfo FindUser(string nickname)
{
if (!string.IsNullOrEmpty(nickname))
{
return userList.FirstOrDefault(user => user.Nickname == nickname);
}
return null;
}
}
}

553
ShareX.IRCLib/IRCClientForm.Designer.cs generated Normal file
View file

@ -0,0 +1,553 @@
namespace ShareX.IRCLib
{
partial class IRCClientForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.txtMessage = new System.Windows.Forms.TextBox();
this.cmsMessage = new System.Windows.Forms.ContextMenuStrip(this.components);
this.tsmiMessageBold = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiMessageItalic = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiMessageUnderline = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiMessageNormal = new System.Windows.Forms.ToolStripMenuItem();
this.btnMessageSend = new System.Windows.Forms.Button();
this.txtOutput = new System.Windows.Forms.TextBox();
this.tcMain = new System.Windows.Forms.TabControl();
this.tpMain = new System.Windows.Forms.TabPage();
this.btnConnect = new System.Windows.Forms.Button();
this.pgSettings = new System.Windows.Forms.PropertyGrid();
this.tpOutput = new System.Windows.Forms.TabPage();
this.txtCommand = new System.Windows.Forms.TextBox();
this.lblCommand = new System.Windows.Forms.Label();
this.btnCommandSend = new System.Windows.Forms.Button();
this.tpMessages = new System.Windows.Forms.TabPage();
this.lblMessage = new System.Windows.Forms.Label();
this.lblChannel = new System.Windows.Forms.Label();
this.txtMessages = new System.Windows.Forms.TextBox();
this.txtChannel = new System.Windows.Forms.TextBox();
this.btnMessagesMenu = new System.Windows.Forms.Button();
this.tsmiColors = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorWhite = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorBlack = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorBlue = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorGreen = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorLightRed = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorBrown = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorPurple = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorOrange = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorYellow = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorLightGreen = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorCyan = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorLightCyan = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorLightBlue = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorPink = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorGrey = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiColorLightGrey = new System.Windows.Forms.ToolStripMenuItem();
this.cmsMessage.SuspendLayout();
this.tcMain.SuspendLayout();
this.tpMain.SuspendLayout();
this.tpOutput.SuspendLayout();
this.tpMessages.SuspendLayout();
this.SuspendLayout();
//
// txtMessage
//
this.txtMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMessage.Location = new System.Drawing.Point(64, 604);
this.txtMessage.Name = "txtMessage";
this.txtMessage.Size = new System.Drawing.Size(600, 20);
this.txtMessage.TabIndex = 0;
this.txtMessage.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMessage_KeyDown);
//
// cmsMessage
//
this.cmsMessage.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsmiMessageBold,
this.tsmiMessageItalic,
this.tsmiMessageUnderline,
this.tsmiMessageNormal,
this.tsmiColors});
this.cmsMessage.Name = "cmsMessage";
this.cmsMessage.ShowImageMargin = false;
this.cmsMessage.Size = new System.Drawing.Size(101, 114);
//
// tsmiMessageBold
//
this.tsmiMessageBold.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
this.tsmiMessageBold.Name = "tsmiMessageBold";
this.tsmiMessageBold.Size = new System.Drawing.Size(127, 22);
this.tsmiMessageBold.Text = "Bold";
this.tsmiMessageBold.Click += new System.EventHandler(this.tsmiMessageBold_Click);
//
// tsmiMessageItalic
//
this.tsmiMessageItalic.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
this.tsmiMessageItalic.Name = "tsmiMessageItalic";
this.tsmiMessageItalic.Size = new System.Drawing.Size(127, 22);
this.tsmiMessageItalic.Text = "Italic";
this.tsmiMessageItalic.Click += new System.EventHandler(this.tsmiMessageItalic_Click);
//
// tsmiMessageUnderline
//
this.tsmiMessageUnderline.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
this.tsmiMessageUnderline.Name = "tsmiMessageUnderline";
this.tsmiMessageUnderline.Size = new System.Drawing.Size(127, 22);
this.tsmiMessageUnderline.Text = "Underline";
this.tsmiMessageUnderline.Click += new System.EventHandler(this.tsmiMessageUnderline_Click);
//
// tsmiMessageNormal
//
this.tsmiMessageNormal.Name = "tsmiMessageNormal";
this.tsmiMessageNormal.Size = new System.Drawing.Size(127, 22);
this.tsmiMessageNormal.Text = "Normal";
this.tsmiMessageNormal.Click += new System.EventHandler(this.tsmiMessageNormal_Click);
//
// btnMessageSend
//
this.btnMessageSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnMessageSend.Enabled = false;
this.btnMessageSend.Location = new System.Drawing.Point(888, 602);
this.btnMessageSend.Name = "btnMessageSend";
this.btnMessageSend.Size = new System.Drawing.Size(80, 24);
this.btnMessageSend.TabIndex = 2;
this.btnMessageSend.Text = "Send";
this.btnMessageSend.UseVisualStyleBackColor = true;
this.btnMessageSend.Click += new System.EventHandler(this.btnMessageSend_Click);
//
// txtOutput
//
this.txtOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtOutput.BackColor = System.Drawing.Color.White;
this.txtOutput.Location = new System.Drawing.Point(8, 8);
this.txtOutput.Multiline = true;
this.txtOutput.Name = "txtOutput";
this.txtOutput.ReadOnly = true;
this.txtOutput.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.txtOutput.Size = new System.Drawing.Size(960, 584);
this.txtOutput.TabIndex = 2;
this.txtOutput.WordWrap = false;
//
// tcMain
//
this.tcMain.Controls.Add(this.tpMain);
this.tcMain.Controls.Add(this.tpOutput);
this.tcMain.Controls.Add(this.tpMessages);
this.tcMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcMain.Location = new System.Drawing.Point(0, 0);
this.tcMain.Name = "tcMain";
this.tcMain.SelectedIndex = 0;
this.tcMain.Size = new System.Drawing.Size(984, 661);
this.tcMain.TabIndex = 0;
//
// tpMain
//
this.tpMain.Controls.Add(this.btnConnect);
this.tpMain.Controls.Add(this.pgSettings);
this.tpMain.Location = new System.Drawing.Point(4, 22);
this.tpMain.Name = "tpMain";
this.tpMain.Padding = new System.Windows.Forms.Padding(3);
this.tpMain.Size = new System.Drawing.Size(976, 635);
this.tpMain.TabIndex = 2;
this.tpMain.Text = "Main";
this.tpMain.UseVisualStyleBackColor = true;
//
// btnConnect
//
this.btnConnect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnConnect.Location = new System.Drawing.Point(8, 600);
this.btnConnect.Name = "btnConnect";
this.btnConnect.Size = new System.Drawing.Size(112, 24);
this.btnConnect.TabIndex = 0;
this.btnConnect.Text = "Connect";
this.btnConnect.UseVisualStyleBackColor = true;
this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);
//
// pgSettings
//
this.pgSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pgSettings.CategoryForeColor = System.Drawing.SystemColors.InactiveCaptionText;
this.pgSettings.Location = new System.Drawing.Point(8, 8);
this.pgSettings.Name = "pgSettings";
this.pgSettings.PropertySort = System.Windows.Forms.PropertySort.NoSort;
this.pgSettings.Size = new System.Drawing.Size(960, 584);
this.pgSettings.TabIndex = 1;
this.pgSettings.ToolbarVisible = false;
//
// tpOutput
//
this.tpOutput.Controls.Add(this.txtCommand);
this.tpOutput.Controls.Add(this.lblCommand);
this.tpOutput.Controls.Add(this.btnCommandSend);
this.tpOutput.Controls.Add(this.txtOutput);
this.tpOutput.Location = new System.Drawing.Point(4, 22);
this.tpOutput.Name = "tpOutput";
this.tpOutput.Padding = new System.Windows.Forms.Padding(3);
this.tpOutput.Size = new System.Drawing.Size(976, 635);
this.tpOutput.TabIndex = 0;
this.tpOutput.Text = "IRC output";
this.tpOutput.UseVisualStyleBackColor = true;
//
// txtCommand
//
this.txtCommand.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtCommand.Location = new System.Drawing.Point(72, 604);
this.txtCommand.Name = "txtCommand";
this.txtCommand.Size = new System.Drawing.Size(808, 20);
this.txtCommand.TabIndex = 0;
this.txtCommand.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtCommand_KeyDown);
//
// lblCommand
//
this.lblCommand.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblCommand.AutoSize = true;
this.lblCommand.Location = new System.Drawing.Point(8, 608);
this.lblCommand.Name = "lblCommand";
this.lblCommand.Size = new System.Drawing.Size(57, 13);
this.lblCommand.TabIndex = 2;
this.lblCommand.Text = "Command:";
//
// btnCommandSend
//
this.btnCommandSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCommandSend.Enabled = false;
this.btnCommandSend.Location = new System.Drawing.Point(888, 602);
this.btnCommandSend.Name = "btnCommandSend";
this.btnCommandSend.Size = new System.Drawing.Size(80, 24);
this.btnCommandSend.TabIndex = 1;
this.btnCommandSend.Text = "Send";
this.btnCommandSend.UseVisualStyleBackColor = true;
this.btnCommandSend.Click += new System.EventHandler(this.btnCommandSend_Click);
//
// tpMessages
//
this.tpMessages.Controls.Add(this.btnMessagesMenu);
this.tpMessages.Controls.Add(this.lblMessage);
this.tpMessages.Controls.Add(this.lblChannel);
this.tpMessages.Controls.Add(this.txtMessages);
this.tpMessages.Controls.Add(this.txtChannel);
this.tpMessages.Controls.Add(this.txtMessage);
this.tpMessages.Controls.Add(this.btnMessageSend);
this.tpMessages.Location = new System.Drawing.Point(4, 22);
this.tpMessages.Name = "tpMessages";
this.tpMessages.Padding = new System.Windows.Forms.Padding(3);
this.tpMessages.Size = new System.Drawing.Size(976, 635);
this.tpMessages.TabIndex = 1;
this.tpMessages.Text = "Messages";
this.tpMessages.UseVisualStyleBackColor = true;
//
// lblMessage
//
this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblMessage.AutoSize = true;
this.lblMessage.Location = new System.Drawing.Point(8, 608);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(53, 13);
this.lblMessage.TabIndex = 0;
this.lblMessage.Text = "Message:";
//
// lblChannel
//
this.lblChannel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lblChannel.AutoSize = true;
this.lblChannel.Location = new System.Drawing.Point(704, 608);
this.lblChannel.Name = "lblChannel";
this.lblChannel.Size = new System.Drawing.Size(76, 13);
this.lblChannel.TabIndex = 2;
this.lblChannel.Text = "Channel/Nick:";
//
// txtMessages
//
this.txtMessages.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtMessages.BackColor = System.Drawing.Color.White;
this.txtMessages.Location = new System.Drawing.Point(8, 8);
this.txtMessages.Multiline = true;
this.txtMessages.Name = "txtMessages";
this.txtMessages.ReadOnly = true;
this.txtMessages.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.txtMessages.Size = new System.Drawing.Size(960, 584);
this.txtMessages.TabIndex = 3;
this.txtMessages.WordWrap = false;
//
// txtChannel
//
this.txtChannel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.txtChannel.Location = new System.Drawing.Point(784, 604);
this.txtChannel.Name = "txtChannel";
this.txtChannel.Size = new System.Drawing.Size(96, 20);
this.txtChannel.TabIndex = 1;
//
// btnMessagesMenu
//
this.btnMessagesMenu.Location = new System.Drawing.Point(672, 602);
this.btnMessagesMenu.Name = "btnMessagesMenu";
this.btnMessagesMenu.Size = new System.Drawing.Size(24, 24);
this.btnMessagesMenu.TabIndex = 4;
this.btnMessagesMenu.Text = "...";
this.btnMessagesMenu.UseVisualStyleBackColor = true;
this.btnMessagesMenu.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnMessagesMenu_MouseClick);
//
// tsmiColors
//
this.tsmiColors.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsmiColorWhite,
this.tsmiColorBlack,
this.tsmiColorBlue,
this.tsmiColorGreen,
this.tsmiColorLightRed,
this.tsmiColorBrown,
this.tsmiColorPurple,
this.tsmiColorOrange,
this.tsmiColorYellow,
this.tsmiColorLightGreen,
this.tsmiColorCyan,
this.tsmiColorLightCyan,
this.tsmiColorLightBlue,
this.tsmiColorPink,
this.tsmiColorGrey,
this.tsmiColorLightGrey});
this.tsmiColors.Name = "tsmiColors";
this.tsmiColors.Size = new System.Drawing.Size(127, 22);
this.tsmiColors.Text = "Colors";
//
// tsmiColorWhite
//
this.tsmiColorWhite.BackColor = System.Drawing.Color.White;
this.tsmiColorWhite.ForeColor = System.Drawing.Color.Black;
this.tsmiColorWhite.Name = "tsmiColorWhite";
this.tsmiColorWhite.Size = new System.Drawing.Size(152, 22);
this.tsmiColorWhite.Text = "White";
this.tsmiColorWhite.Click += new System.EventHandler(this.tsmiColorWhite_Click);
//
// tsmiColorBlack
//
this.tsmiColorBlack.BackColor = System.Drawing.Color.Black;
this.tsmiColorBlack.ForeColor = System.Drawing.Color.White;
this.tsmiColorBlack.Name = "tsmiColorBlack";
this.tsmiColorBlack.Size = new System.Drawing.Size(152, 22);
this.tsmiColorBlack.Text = "Black";
this.tsmiColorBlack.Click += new System.EventHandler(this.tsmiColorBlack_Click);
//
// tsmiColorBlue
//
this.tsmiColorBlue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(127)))));
this.tsmiColorBlue.ForeColor = System.Drawing.Color.White;
this.tsmiColorBlue.Name = "tsmiColorBlue";
this.tsmiColorBlue.Size = new System.Drawing.Size(152, 22);
this.tsmiColorBlue.Text = "Blue";
this.tsmiColorBlue.Click += new System.EventHandler(this.tsmiColorBlue_Click);
//
// tsmiColorGreen
//
this.tsmiColorGreen.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(0)))));
this.tsmiColorGreen.ForeColor = System.Drawing.Color.White;
this.tsmiColorGreen.Name = "tsmiColorGreen";
this.tsmiColorGreen.Size = new System.Drawing.Size(152, 22);
this.tsmiColorGreen.Text = "Green";
this.tsmiColorGreen.Click += new System.EventHandler(this.tsmiColorGreen_Click);
//
// tsmiColorLightRed
//
this.tsmiColorLightRed.BackColor = System.Drawing.Color.Red;
this.tsmiColorLightRed.ForeColor = System.Drawing.Color.White;
this.tsmiColorLightRed.Name = "tsmiColorLightRed";
this.tsmiColorLightRed.Size = new System.Drawing.Size(152, 22);
this.tsmiColorLightRed.Text = "Light Red";
this.tsmiColorLightRed.Click += new System.EventHandler(this.tsmiColorLightRed_Click);
//
// tsmiColorBrown
//
this.tsmiColorBrown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.tsmiColorBrown.ForeColor = System.Drawing.Color.White;
this.tsmiColorBrown.Name = "tsmiColorBrown";
this.tsmiColorBrown.Size = new System.Drawing.Size(152, 22);
this.tsmiColorBrown.Text = "Brown";
this.tsmiColorBrown.Click += new System.EventHandler(this.tsmiColorBrown_Click);
//
// tsmiColorPurple
//
this.tsmiColorPurple.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(156)))), ((int)(((byte)(0)))), ((int)(((byte)(156)))));
this.tsmiColorPurple.ForeColor = System.Drawing.Color.White;
this.tsmiColorPurple.Name = "tsmiColorPurple";
this.tsmiColorPurple.Size = new System.Drawing.Size(152, 22);
this.tsmiColorPurple.Text = "Purple";
this.tsmiColorPurple.Click += new System.EventHandler(this.tsmiColorPurple_Click);
//
// tsmiColorOrange
//
this.tsmiColorOrange.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(127)))), ((int)(((byte)(0)))));
this.tsmiColorOrange.ForeColor = System.Drawing.Color.White;
this.tsmiColorOrange.Name = "tsmiColorOrange";
this.tsmiColorOrange.Size = new System.Drawing.Size(152, 22);
this.tsmiColorOrange.Text = "Orange";
this.tsmiColorOrange.Click += new System.EventHandler(this.tsmiColorOrange_Click);
//
// tsmiColorYellow
//
this.tsmiColorYellow.BackColor = System.Drawing.Color.Yellow;
this.tsmiColorYellow.ForeColor = System.Drawing.Color.Black;
this.tsmiColorYellow.Name = "tsmiColorYellow";
this.tsmiColorYellow.Size = new System.Drawing.Size(152, 22);
this.tsmiColorYellow.Text = "Yellow";
this.tsmiColorYellow.Click += new System.EventHandler(this.tsmiColorYellow_Click);
//
// tsmiColorLightGreen
//
this.tsmiColorLightGreen.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(252)))), ((int)(((byte)(0)))));
this.tsmiColorLightGreen.ForeColor = System.Drawing.Color.Black;
this.tsmiColorLightGreen.Name = "tsmiColorLightGreen";
this.tsmiColorLightGreen.Size = new System.Drawing.Size(152, 22);
this.tsmiColorLightGreen.Text = "Light Green";
this.tsmiColorLightGreen.Click += new System.EventHandler(this.tsmiColorLightGreen_Click);
//
// tsmiColorCyan
//
this.tsmiColorCyan.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(147)))), ((int)(((byte)(147)))));
this.tsmiColorCyan.ForeColor = System.Drawing.Color.White;
this.tsmiColorCyan.Name = "tsmiColorCyan";
this.tsmiColorCyan.Size = new System.Drawing.Size(152, 22);
this.tsmiColorCyan.Text = "Cyan";
this.tsmiColorCyan.Click += new System.EventHandler(this.tsmiColorCyan_Click);
//
// tsmiColorLightCyan
//
this.tsmiColorLightCyan.BackColor = System.Drawing.Color.Aqua;
this.tsmiColorLightCyan.ForeColor = System.Drawing.Color.Black;
this.tsmiColorLightCyan.Name = "tsmiColorLightCyan";
this.tsmiColorLightCyan.Size = new System.Drawing.Size(152, 22);
this.tsmiColorLightCyan.Text = "Light Cyan";
this.tsmiColorLightCyan.Click += new System.EventHandler(this.tsmiColorLightCyan_Click);
//
// tsmiColorLightBlue
//
this.tsmiColorLightBlue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(252)))));
this.tsmiColorLightBlue.ForeColor = System.Drawing.Color.White;
this.tsmiColorLightBlue.Name = "tsmiColorLightBlue";
this.tsmiColorLightBlue.Size = new System.Drawing.Size(152, 22);
this.tsmiColorLightBlue.Text = "Light Blue";
this.tsmiColorLightBlue.Click += new System.EventHandler(this.tsmiColorLightBlue_Click);
//
// tsmiColorPink
//
this.tsmiColorPink.BackColor = System.Drawing.Color.Fuchsia;
this.tsmiColorPink.ForeColor = System.Drawing.Color.White;
this.tsmiColorPink.Name = "tsmiColorPink";
this.tsmiColorPink.Size = new System.Drawing.Size(152, 22);
this.tsmiColorPink.Text = "Pink";
this.tsmiColorPink.Click += new System.EventHandler(this.tsmiColorPink_Click);
//
// tsmiColorGrey
//
this.tsmiColorGrey.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
this.tsmiColorGrey.ForeColor = System.Drawing.Color.White;
this.tsmiColorGrey.Name = "tsmiColorGrey";
this.tsmiColorGrey.Size = new System.Drawing.Size(152, 22);
this.tsmiColorGrey.Text = "Grey";
this.tsmiColorGrey.Click += new System.EventHandler(this.tsmiColorGrey_Click);
//
// tsmiColorLightGrey
//
this.tsmiColorLightGrey.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(210)))), ((int)(((byte)(210)))));
this.tsmiColorLightGrey.ForeColor = System.Drawing.Color.Black;
this.tsmiColorLightGrey.Name = "tsmiColorLightGrey";
this.tsmiColorLightGrey.Size = new System.Drawing.Size(152, 22);
this.tsmiColorLightGrey.Text = "Light Grey";
this.tsmiColorLightGrey.Click += new System.EventHandler(this.tsmiColorLightGrey_Click);
//
// IRCClientForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(984, 661);
this.Controls.Add(this.tcMain);
this.Name = "IRCClientForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "ShareX - IRC client";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);
this.cmsMessage.ResumeLayout(false);
this.tcMain.ResumeLayout(false);
this.tpMain.ResumeLayout(false);
this.tpOutput.ResumeLayout(false);
this.tpOutput.PerformLayout();
this.tpMessages.ResumeLayout(false);
this.tpMessages.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TextBox txtMessage;
private System.Windows.Forms.Button btnMessageSend;
private System.Windows.Forms.TextBox txtOutput;
private System.Windows.Forms.TabControl tcMain;
private System.Windows.Forms.TabPage tpOutput;
private System.Windows.Forms.TabPage tpMessages;
private System.Windows.Forms.TextBox txtMessages;
private System.Windows.Forms.TextBox txtChannel;
private System.Windows.Forms.Label lblChannel;
private System.Windows.Forms.Label lblMessage;
private System.Windows.Forms.TabPage tpMain;
private System.Windows.Forms.PropertyGrid pgSettings;
private System.Windows.Forms.Button btnConnect;
private System.Windows.Forms.TextBox txtCommand;
private System.Windows.Forms.Label lblCommand;
private System.Windows.Forms.Button btnCommandSend;
private System.Windows.Forms.ContextMenuStrip cmsMessage;
private System.Windows.Forms.ToolStripMenuItem tsmiMessageBold;
private System.Windows.Forms.ToolStripMenuItem tsmiMessageItalic;
private System.Windows.Forms.ToolStripMenuItem tsmiMessageUnderline;
private System.Windows.Forms.ToolStripMenuItem tsmiMessageNormal;
private System.Windows.Forms.Button btnMessagesMenu;
private System.Windows.Forms.ToolStripMenuItem tsmiColors;
private System.Windows.Forms.ToolStripMenuItem tsmiColorWhite;
private System.Windows.Forms.ToolStripMenuItem tsmiColorBlack;
private System.Windows.Forms.ToolStripMenuItem tsmiColorBlue;
private System.Windows.Forms.ToolStripMenuItem tsmiColorGreen;
private System.Windows.Forms.ToolStripMenuItem tsmiColorLightRed;
private System.Windows.Forms.ToolStripMenuItem tsmiColorBrown;
private System.Windows.Forms.ToolStripMenuItem tsmiColorPurple;
private System.Windows.Forms.ToolStripMenuItem tsmiColorOrange;
private System.Windows.Forms.ToolStripMenuItem tsmiColorYellow;
private System.Windows.Forms.ToolStripMenuItem tsmiColorLightGreen;
private System.Windows.Forms.ToolStripMenuItem tsmiColorCyan;
private System.Windows.Forms.ToolStripMenuItem tsmiColorLightCyan;
private System.Windows.Forms.ToolStripMenuItem tsmiColorLightBlue;
private System.Windows.Forms.ToolStripMenuItem tsmiColorPink;
private System.Windows.Forms.ToolStripMenuItem tsmiColorGrey;
private System.Windows.Forms.ToolStripMenuItem tsmiColorLightGrey;
}
}

View file

@ -0,0 +1,345 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ShareX.IRCLib
{
public partial class IRCClientForm : Form
{
public IRCInfo Info { get; private set; }
public IRC IRC { get; private set; }
private string lastCommand, lastMessage;
public IRCClientForm() : this(new IRCInfo())
{
}
public IRCClientForm(IRCInfo info)
{
InitializeComponent();
Icon = ShareXResources.Icon;
((ToolStripDropDownMenu)tsmiColors.DropDown).ShowImageMargin = false;
Info = info;
pgSettings.SelectedObject = Info;
IRC = new IRC(Info);
IRC.Disconnected += IRC_Disconnected;
IRC.Output += IRC_Output;
IRC.Message += IRC_Message;
}
private void WriteText(string message, TextBox tb)
{
this.InvokeSafe(() =>
{
tb.AppendText($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}\r\n");
});
}
private void AppendMessage(string message)
{
txtMessage.AppendTextToSelection(message);
txtMessage.Focus();
}
private void SendCommand()
{
string command = txtCommand.Text;
if (!string.IsNullOrEmpty(command))
{
lastCommand = command;
if (IRC.IsConnected)
{
SendCommand(command);
}
}
txtCommand.Clear();
}
private void SendCommand(string command)
{
if (!string.IsNullOrEmpty(command))
{
if (command.StartsWith("/"))
{
command = command.Substring(1);
}
IRC.SendRawMessage(command);
}
}
private void SendMessage()
{
string message = txtMessage.Text;
if (!string.IsNullOrEmpty(message))
{
lastMessage = message;
if (IRC.IsConnected)
{
SendMessage(message);
}
}
txtMessage.Clear();
}
private void SendMessage(string message)
{
if (!string.IsNullOrEmpty(message))
{
if (message.StartsWith("/"))
{
IRC.SendRawMessage(message.Substring(1));
}
else
{
IRC.SendMessage(message, txtChannel.Text);
}
}
}
private void Connect()
{
btnConnect.Text = "Disconnect";
btnCommandSend.Enabled = btnMessageSend.Enabled = true;
tcMain.SelectedTab = tpOutput;
IRC.Connect();
}
private void Disconnect()
{
btnConnect.Text = "Connect";
btnCommandSend.Enabled = btnMessageSend.Enabled = false;
IRC.Disconnect();
}
#region Form events
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (IRC.IsConnected)
{
IRC.Disconnect();
}
}
private void btnConnect_Click(object sender, EventArgs e)
{
if (!IRC.IsConnected)
{
Connect();
}
else
{
Disconnect();
}
}
private void txtCommand_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendCommand();
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.Up && !string.IsNullOrEmpty(lastCommand))
{
txtCommand.Text = lastCommand;
txtCommand.SelectionStart = txtCommand.TextLength;
e.SuppressKeyPress = true;
}
}
private void btnCommandSend_Click(object sender, EventArgs e)
{
SendCommand();
}
private void txtMessage_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendMessage();
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.Up && !string.IsNullOrEmpty(lastMessage))
{
txtMessage.Text = lastMessage;
txtMessage.SelectionStart = txtMessage.TextLength;
e.SuppressKeyPress = true;
}
}
private void btnMessagesMenu_MouseClick(object sender, MouseEventArgs e)
{
cmsMessage.Show(btnMessagesMenu, new Point(0, btnMessagesMenu.Height + 1));
}
#region Message menu
private void tsmiMessageBold_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Bold);
}
private void tsmiMessageItalic_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Italic);
}
private void tsmiMessageUnderline_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Underline);
}
private void tsmiMessageNormal_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Reset);
}
private void tsmiColorWhite_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.White));
}
private void tsmiColorBlack_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Black));
}
private void tsmiColorBlue_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Blue));
}
private void tsmiColorGreen_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Green));
}
private void tsmiColorLightRed_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.LightRed));
}
private void tsmiColorBrown_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Brown));
}
private void tsmiColorPurple_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Purple));
}
private void tsmiColorOrange_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Orange));
}
private void tsmiColorYellow_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Yellow));
}
private void tsmiColorLightGreen_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.LightGreen));
}
private void tsmiColorCyan_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Cyan));
}
private void tsmiColorLightCyan_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.LightCyan));
}
private void tsmiColorLightBlue_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.LightBlue));
}
private void tsmiColorPink_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Pink));
}
private void tsmiColorGrey_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.Grey));
}
private void tsmiColorLightGrey_Click(object sender, EventArgs e)
{
AppendMessage(IRCText.Color(IRCColors.LightGrey));
}
#endregion Message menu
private void btnMessageSend_Click(object sender, EventArgs e)
{
SendMessage();
}
#endregion Form events
#region IRC events
private void IRC_Disconnected()
{
if (!Info.AutoReconnect)
{
Disconnect();
}
}
private void IRC_Output(MessageInfo messageInfo)
{
WriteText(messageInfo.Content, txtOutput);
}
private void IRC_Message(UserInfo user, string channel, string message)
{
WriteText($"{user.Nickname} > {channel}: {message}", txtMessages);
}
#endregion IRC events
}
}

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="cmsMessage.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>62</value>
</metadata>
</root>

110
ShareX.IRCLib/IRCInfo.cs Normal file
View file

@ -0,0 +1,110 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
namespace ShareX.IRCLib
{
public class IRCInfo : SettingsBase<IRCInfo>
{
[Description("IRC server address."), DefaultValue("chat.freenode.net")]
public string Server { get; set; } = "chat.freenode.net";
[Description("IRC server port."), DefaultValue(6667)]
public int Port { get; set; } = 6667;
[Description("IRC server password."), PasswordPropertyText(true)]
public string Password { get; set; }
[Description("Nickname.")]
public string Nickname { get; set; }
[Description("Username."), DefaultValue("username")]
public string Username { get; set; } = "username";
[Description("Realname."), DefaultValue("realname")]
public string Realname { get; set; } = "realname";
[Description("IRC invisible mode."), DefaultValue(true)]
public bool Invisible { get; set; } = true;
[Description("When disconnected from server auto reconnect."), DefaultValue(true)]
public bool AutoReconnect { get; set; } = true;
[Description("Wait specific milliseconds before reconnecting."), DefaultValue(5000)]
public int AutoReconnectDelay { get; set; } = 5000;
[Description("When got kicked auto rejoin channel."), DefaultValue(false)]
public bool AutoRejoinOnKick { get; set; }
[Description("Don't show 'Message of the day' text."), DefaultValue(true)]
public bool SuppressMOTD { get; set; } = true;
[Description("When you disconnect what message gonna show to other people."), DefaultValue("Leaving")]
public string QuitReason { get; set; } = "Leaving";
[Description("When connected these commands will automatically execute."),
Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> ConnectCommands { get; set; } = new List<string>();
[Description("When connected automatically will join these channels."),
Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> AutoJoinChannels { get; set; } = new List<string>() { "#ShareX" };
[Description("Wait identify confirmation before auto join channels."), DefaultValue(false)]
public bool AutoJoinWaitIdentify { get; set; }
[Description("Enable/Disable auto response system which using AutoResponseList."), DefaultValue(false)]
public bool AutoResponse { get; set; }
[Description("After successful auto response match how much milliseconds wait for next auto response. Delay independant per message."), DefaultValue(10000)]
public int AutoResponseDelay { get; set; } = 10000;
[Description("When specific message written in channel automatically will response with your message.")]
public List<AutoResponseInfo> AutoResponseList { get; set; } = new List<AutoResponseInfo>();
public string GetAutoResponses()
{
List<string> messages = new List<string>();
foreach (AutoResponseInfo autoResponseInfo in AutoResponseList)
{
if (autoResponseInfo.Messages.Count > 1)
{
messages.Add($"[{string.Join(", ", autoResponseInfo.Messages)}]");
}
else if (autoResponseInfo.Messages.Count == 1)
{
messages.Add(autoResponseInfo.Messages[0]);
}
}
return string.Join(", ", messages);
}
}
}

42
ShareX.IRCLib/IRCText.cs Normal file
View file

@ -0,0 +1,42 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
namespace ShareX.IRCLib
{
public static class IRCText
{
public const string Bold = "\x02";
public const string Italic = "\x1D";
public const string Underline = "\x1F";
public const string Reset = "\x0F";
public static string Color(IRCColors foregroundColor) => $"\x03{(int)foregroundColor:00}";
public static string Color(IRCColors foregroundColor, IRCColors backgroundColor) => $"\x03{(int)foregroundColor:00},{(int)backgroundColor:00}";
}
}

View file

@ -0,0 +1,164 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using System;
using System.Collections.Generic;
using System.Text;
namespace ShareX.IRCLib
{
public class MessageInfo
{
public string Content { get; private set; }
public UserInfo User { get; private set; }
public string Command { get; private set; }
public List<string> Parameters { get; private set; }
public string Message { get; private set; }
public MessageInfo(string content)
{
Content = content;
User = new UserInfo();
Parameters = new List<string>();
}
public static MessageInfo Parse(string content)
{
MessageInfo messageInfo = new MessageInfo(content);
int index;
string nickname = ParseSection(content, out index);
// Is it not my message?
if (nickname.StartsWith(":"))
{
nickname = nickname.Substring(1);
int usernameIndex = nickname.IndexOf("!", StringComparison.Ordinal);
// Is it not server?
if (usernameIndex > -1)
{
//nickname!~username@host
messageInfo.User.UserType = IRCUserType.User;
messageInfo.User.Nickname = nickname.Remove(usernameIndex);
nickname = nickname.Substring(usernameIndex + 1);
if (nickname[0] == '~') // Remove Ident character
{
nickname = nickname.Substring(1);
}
int hostIndex = nickname.IndexOf("@", StringComparison.Ordinal);
messageInfo.User.Username = nickname.Remove(hostIndex);
messageInfo.User.Host = nickname.Substring(hostIndex + 1);
}
else
{
//irc.freenode.net
messageInfo.User.UserType = IRCUserType.Server;
messageInfo.User.Host = nickname;
}
content = content.Substring(index + 1);
messageInfo.Command = ParseSection(content, out index);
}
else
{
// It is my command
messageInfo.User.UserType = IRCUserType.Me;
messageInfo.Command = nickname;
}
while (index > -1)
{
content = content.Substring(index + 1);
string check = ParseSection(content, out index);
// Is it parameter?
if (!check.StartsWith(":"))
{
messageInfo.Parameters.Add(check);
}
else
{
// It is message
messageInfo.Message = content.Substring(1);
break;
}
}
return messageInfo;
}
private static string ParseSection(string message, out int index)
{
index = message.IndexOf(' ');
if (index > -1)
{
return message.Remove(index);
}
return message;
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Type: {0}, ", User.UserType);
switch (User.UserType)
{
case IRCUserType.User:
sb.AppendFormat("Nickname: {0}, Username: {1}, Host: {2}, ", User.Nickname, User.Username, User.Host);
break;
case IRCUserType.Server:
sb.AppendFormat("Host: {0}, ", User.Host);
break;
}
if (!string.IsNullOrEmpty(Command))
{
sb.AppendFormat("Command: {0}, ", Command);
}
foreach (string parameter in Parameters)
{
if (!string.IsNullOrEmpty(parameter))
{
sb.AppendFormat("Parameter: {0}, ", parameter);
}
}
if (!string.IsNullOrEmpty(Message))
{
sb.AppendFormat("Message: {0}", Message);
}
return sb.ToString();
}
}
}

View file

@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ShareX.IRCLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("ShareX Team")]
[assembly: AssemblyProduct("ShareX")]
[assembly: AssemblyCopyright("Copyright (c) 2007-2015 ShareX Team")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("ef7fcc3f-b776-4a5e-bddc-32329ab11a58")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ShareX.IRCLib</RootNamespace>
<AssemblyName>ShareX.IRCLib</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AutoResponseInfo.cs" />
<Compile Include="Enums.cs" />
<Compile Include="IRC.cs" />
<Compile Include="IRCClientForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="IRCClientForm.Designer.cs">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</Compile>
<Compile Include="IRCInfo.cs" />
<Compile Include="IRCText.cs" />
<Compile Include="MessageInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UserInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\ShareX\ShareX.HelpersLib\ShareX.HelpersLib.csproj">
<Project>{327750e1-9fb7-4cc3-8aea-9bc42180cad3}</Project>
<Name>ShareX.HelpersLib</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="IRCClientForm.resx">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

57
ShareX.IRCLib/UserInfo.cs Normal file
View file

@ -0,0 +1,57 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2015 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using System;
using System.Collections.Generic;
namespace ShareX.IRCLib
{
public class UserInfo
{
public IRCUserType UserType { get; set; }
public string Nickname { get; set; }
public string Username { get; set; }
public string Realname { get; set; }
public string Host { get; set; }
public string Identity { get; set; }
public List<string> Channels { get; set; }
public string Server { get; set; }
public bool SecureConnection { get; set; }
public TimeSpan IdleTime { get; set; }
public DateTime SignOnDate { get; set; }
public UserInfo()
{
Channels = new List<string>();
}
public override string ToString()
{
string channels = string.Join(" ", Channels);
return $"Nickname: {Nickname}, Username: {Username}, Realname: {Realname}, Host: {Host}, Identity: {Identity}, Channels: {channels}";
}
}
}

View file

@ -30,6 +30,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShareX.Setup", "ShareX.Setu
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShareX.MediaLib", "ShareX.MediaLib\ShareX.MediaLib.csproj", "{1A190E53-1419-4CC2-B0E5-3BC7EA861C8B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShareX.IRCLib", "ShareX.IRCLib\ShareX.IRCLib.csproj", "{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -74,6 +76,10 @@ Global
{1A190E53-1419-4CC2-B0E5-3BC7EA861C8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A190E53-1419-4CC2-B0E5-3BC7EA861C8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A190E53-1419-4CC2-B0E5-3BC7EA861C8B}.Release|Any CPU.Build.0 = Release|Any CPU
{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF7FCC3F-B776-4A5E-BDDC-32329AB11A58}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -79,6 +79,7 @@ private void InitializeComponent()
this.tsmiIndexFolder = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiVideoThumbnailer = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiFTPClient = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiIRCClient = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTweetMessage = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiMonitorTest = new System.Windows.Forms.ToolStripMenuItem();
this.tssMain1 = new System.Windows.Forms.ToolStripSeparator();
@ -225,6 +226,7 @@ private void InitializeComponent()
this.tsmiTrayShow = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem();
this.timerTraySingleClick = new System.Windows.Forms.Timer(this.components);
this.tsmiTrayIRCClient = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@ -553,6 +555,7 @@ private void InitializeComponent()
this.tsmiIndexFolder,
this.tsmiVideoThumbnailer,
this.tsmiFTPClient,
this.tsmiIRCClient,
this.tsmiTweetMessage,
this.tsmiMonitorTest});
this.tsddbTools.Image = global::ShareX.Properties.Resources.toolbox;
@ -643,6 +646,13 @@ private void InitializeComponent()
resources.ApplyResources(this.tsmiFTPClient, "tsmiFTPClient");
this.tsmiFTPClient.Click += new System.EventHandler(this.tsmiFTPClient_Click);
//
// tsmiIRCClient
//
this.tsmiIRCClient.Image = global::ShareX.Properties.Resources.balloon_white;
this.tsmiIRCClient.Name = "tsmiIRCClient";
resources.ApplyResources(this.tsmiIRCClient, "tsmiIRCClient");
this.tsmiIRCClient.Click += new System.EventHandler(this.tsmiIRCClient_Click);
//
// tsmiTweetMessage
//
this.tsmiTweetMessage.Image = global::ShareX.Properties.Resources.Twitter;
@ -1444,6 +1454,7 @@ private void InitializeComponent()
this.tsmiTrayIndexFolder,
this.tsmiTrayVideoThumbnailer,
this.tsmiTrayFTPClient,
this.tsmiTrayIRCClient,
this.tsmiTrayTweetMessage,
this.tsmiTrayMonitorTest});
this.tsmiTrayTools.Image = global::ShareX.Properties.Resources.toolbox;
@ -1719,6 +1730,13 @@ private void InitializeComponent()
//
this.timerTraySingleClick.Tick += new System.EventHandler(this.timerTraySingleClick_Tick);
//
// tsmiTrayIRCClient
//
this.tsmiTrayIRCClient.Image = global::ShareX.Properties.Resources.balloon_white;
this.tsmiTrayIRCClient.Name = "tsmiTrayIRCClient";
resources.ApplyResources(this.tsmiTrayIRCClient, "tsmiTrayIRCClient");
this.tsmiTrayIRCClient.Click += new System.EventHandler(this.tsmiIRCClient_Click);
//
// MainForm
//
this.AllowDrop = true;
@ -1947,5 +1965,7 @@ private void InitializeComponent()
private System.Windows.Forms.ToolStripMenuItem tsmiVideoThumbnailer;
private System.Windows.Forms.ToolStripMenuItem tsmiTrayVideoThumbnailer;
private System.Windows.Forms.Timer timerTraySingleClick;
private System.Windows.Forms.ToolStripMenuItem tsmiIRCClient;
private System.Windows.Forms.ToolStripMenuItem tsmiTrayIRCClient;
}
}

View file

@ -946,9 +946,14 @@ private void tsmiScreenColorPicker_Click(object sender, EventArgs e)
TaskHelpers.OpenScreenColorPicker();
}
private void tsmiFTPClient_Click(object sender, EventArgs e)
private void tsmiImageEditor_Click(object sender, EventArgs e)
{
TaskHelpers.OpenFTPClient();
TaskHelpers.OpenImageEditor();
}
private void tsmiImageEffects_Click(object sender, EventArgs e)
{
TaskHelpers.OpenImageEffects();
}
private void tsmiHashCheck_Click(object sender, EventArgs e)
@ -956,6 +961,16 @@ private void tsmiHashCheck_Click(object sender, EventArgs e)
TaskHelpers.OpenHashCheck();
}
private void tsmiDNSChanger_Click(object sender, EventArgs e)
{
TaskHelpers.OpenDNSChanger();
}
private void tsmiQRCode_Click(object sender, EventArgs e)
{
TaskHelpers.OpenQRCode();
}
private void tsmiRuler_Click(object sender, EventArgs e)
{
TaskHelpers.OpenRuler();
@ -976,29 +991,14 @@ private void tsmiVideoThumbnailer_Click(object sender, EventArgs e)
TaskHelpers.OpenVideoThumbnailer();
}
private void tsmiImageEditor_Click(object sender, EventArgs e)
private void tsmiFTPClient_Click(object sender, EventArgs e)
{
TaskHelpers.OpenImageEditor();
TaskHelpers.OpenFTPClient();
}
private void tsmiImageEffects_Click(object sender, EventArgs e)
private void tsmiIRCClient_Click(object sender, EventArgs e)
{
TaskHelpers.OpenImageEffects();
}
private void tsmiMonitorTest_Click(object sender, EventArgs e)
{
TaskHelpers.OpenMonitorTest();
}
private void tsmiDNSChanger_Click(object sender, EventArgs e)
{
TaskHelpers.OpenDNSChanger();
}
private void tsmiQRCode_Click(object sender, EventArgs e)
{
TaskHelpers.OpenQRCode();
TaskHelpers.OpenIRCClient();
}
private void tsmiTweetMessage_Click(object sender, EventArgs e)
@ -1006,6 +1006,11 @@ private void tsmiTweetMessage_Click(object sender, EventArgs e)
TaskHelpers.TweetMessage();
}
private void tsmiMonitorTest_Click(object sender, EventArgs e)
{
TaskHelpers.OpenMonitorTest();
}
private void tsddbDestinations_DropDownOpened(object sender, EventArgs e)
{
UpdateDestinationStates();

View file

@ -180,45 +180,6 @@
<data name="&gt;&gt;lblSplitter.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="chFilename.Text" xml:space="preserve">
<value>Filename</value>
</data>
<data name="chFilename.Width" type="System.Int32, mscorlib">
<value>150</value>
</data>
<data name="chStatus.Text" xml:space="preserve">
<value>Status</value>
</data>
<data name="chProgress.Text" xml:space="preserve">
<value>Progress</value>
</data>
<data name="chProgress.Width" type="System.Int32, mscorlib">
<value>125</value>
</data>
<data name="chSpeed.Text" xml:space="preserve">
<value>Speed</value>
</data>
<data name="chSpeed.Width" type="System.Int32, mscorlib">
<value>75</value>
</data>
<data name="chElapsed.Text" xml:space="preserve">
<value>Elapsed</value>
</data>
<data name="chElapsed.Width" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="chRemaining.Text" xml:space="preserve">
<value>Remaining</value>
</data>
<data name="chRemaining.Width" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="chURL.Text" xml:space="preserve">
<value>URL</value>
</data>
<data name="chURL.Width" type="System.Int32, mscorlib">
<value>145</value>
</data>
<data name="lvUploads.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -315,6 +276,45 @@
<data name="&gt;&gt;scMain.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="chFilename.Text" xml:space="preserve">
<value>Filename</value>
</data>
<data name="chFilename.Width" type="System.Int32, mscorlib">
<value>150</value>
</data>
<data name="chStatus.Text" xml:space="preserve">
<value>Status</value>
</data>
<data name="chProgress.Text" xml:space="preserve">
<value>Progress</value>
</data>
<data name="chProgress.Width" type="System.Int32, mscorlib">
<value>125</value>
</data>
<data name="chSpeed.Text" xml:space="preserve">
<value>Speed</value>
</data>
<data name="chSpeed.Width" type="System.Int32, mscorlib">
<value>75</value>
</data>
<data name="chElapsed.Text" xml:space="preserve">
<value>Elapsed</value>
</data>
<data name="chElapsed.Width" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="chRemaining.Text" xml:space="preserve">
<value>Remaining</value>
</data>
<data name="chRemaining.Width" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="chURL.Text" xml:space="preserve">
<value>URL</value>
</data>
<data name="chURL.Width" type="System.Int32, mscorlib">
<value>145</value>
</data>
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
@ -324,6 +324,42 @@
<data name="tsMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="tsMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tsMain.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 6, 6, 6</value>
</data>
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 407</value>
</data>
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tsMain.Name" xml:space="preserve">
<value>tsMain</value>
</data>
<data name="&gt;&gt;tsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsMain.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tsMain.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tsddbCapture.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbCapture.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbCapture.Text" xml:space="preserve">
<value>Capture</value>
</data>
<data name="tsmiFullscreen.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
@ -414,17 +450,17 @@
<data name="tsmiAutoCapture.Text" xml:space="preserve">
<value>Auto capture...</value>
</data>
<data name="tsddbCapture.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<data name="tsddbUpload.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbCapture.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<data name="tsddbUpload.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbCapture.Size" type="System.Drawing.Size, System.Drawing">
<data name="tsddbUpload.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbCapture.Text" xml:space="preserve">
<value>Capture</value>
<data name="tsddbUpload.Text" xml:space="preserve">
<value>Upload</value>
</data>
<data name="tsmiUploadFile.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
@ -456,18 +492,6 @@
<data name="tsmiUploadDragDrop.Text" xml:space="preserve">
<value>Drag and drop upload...</value>
</data>
<data name="tsddbUpload.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbUpload.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbUpload.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbUpload.Text" xml:space="preserve">
<value>Upload</value>
</data>
<data name="tsddbWorkflows.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>BottomLeft</value>
</data>
@ -480,6 +504,18 @@
<data name="tsddbWorkflows.Text" xml:space="preserve">
<value>Workflows</value>
</data>
<data name="tsddbTools.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbTools.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbTools.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbTools.Text" xml:space="preserve">
<value>Tools</value>
</data>
<data name="tsmiColorPicker.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 22</value>
</data>
@ -552,6 +588,12 @@
<data name="tsmiFTPClient.Text" xml:space="preserve">
<value>FTP client...</value>
</data>
<data name="tsmiIRCClient.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 22</value>
</data>
<data name="tsmiIRCClient.Text" xml:space="preserve">
<value>IRC client...</value>
</data>
<data name="tsmiTweetMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 22</value>
</data>
@ -564,18 +606,6 @@
<data name="tsmiMonitorTest.Text" xml:space="preserve">
<value>Monitor test...</value>
</data>
<data name="tsddbTools.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbTools.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbTools.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbTools.Text" xml:space="preserve">
<value>Tools</value>
</data>
<data name="tssMain1.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 6</value>
</data>
@ -603,6 +633,18 @@
<data name="tsddbAfterUploadTasks.Text" xml:space="preserve">
<value>After upload tasks</value>
</data>
<data name="tsddbDestinations.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbDestinations.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbDestinations.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbDestinations.Text" xml:space="preserve">
<value>Destinations</value>
</data>
<data name="tsmiImageUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
@ -642,18 +684,6 @@
<data name="tsmiDestinationSettings.Text" xml:space="preserve">
<value>Destination settings...</value>
</data>
<data name="tsddbDestinations.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbDestinations.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbDestinations.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbDestinations.Text" xml:space="preserve">
<value>Destinations</value>
</data>
<data name="tsbApplicationSettings.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
@ -729,6 +759,18 @@
<data name="tsbImageHistory.Text" xml:space="preserve">
<value>Image history...</value>
</data>
<data name="tsddbDebug.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbDebug.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbDebug.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbDebug.Text" xml:space="preserve">
<value>Debug</value>
</data>
<data name="tsmiShowDebugLog.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
@ -765,18 +807,6 @@
<data name="tsmiTestURLSharing.Text" xml:space="preserve">
<value>Test URL sharing</value>
</data>
<data name="tsddbDebug.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="tsddbDebug.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsddbDebug.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 20</value>
</data>
<data name="tsddbDebug.Text" xml:space="preserve">
<value>Debug</value>
</data>
<data name="tsmiDonate.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
@ -801,33 +831,18 @@
<data name="tsmiAbout.Text" xml:space="preserve">
<value>About...</value>
</data>
<data name="tsMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tsMain.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 6, 6, 6</value>
</data>
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 407</value>
</data>
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tsMain.Name" xml:space="preserve">
<value>tsMain</value>
</data>
<data name="&gt;&gt;tsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsMain.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tsMain.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<metadata name="cmsTaskInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>286, 17</value>
</metadata>
<data name="cmsTaskInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 318</value>
</data>
<data name="&gt;&gt;cmsTaskInfo.Name" xml:space="preserve">
<value>cmsTaskInfo</value>
</data>
<data name="&gt;&gt;cmsTaskInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tsmiShowErrors.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
@ -840,6 +855,12 @@
<data name="tsmiStopUpload.Text" xml:space="preserve">
<value>Stop upload</value>
</data>
<data name="tsmiOpen.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
<data name="tsmiOpen.Text" xml:space="preserve">
<value>Open</value>
</data>
<data name="tsmiOpenURL.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 22</value>
</data>
@ -885,11 +906,11 @@
<data name="tsmiOpenThumbnailFile.Text" xml:space="preserve">
<value>Thumbnail file</value>
</data>
<data name="tsmiOpen.Size" type="System.Drawing.Size, System.Drawing">
<data name="tsmiCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
<data name="tsmiOpen.Text" xml:space="preserve">
<value>Open</value>
<data name="tsmiCopy.Text" xml:space="preserve">
<value>Copy</value>
</data>
<data name="tsmiCopyURL.Size" type="System.Drawing.Size, System.Drawing">
<value>233, 22</value>
@ -1023,12 +1044,6 @@
<data name="tssCopy5.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="tsmiCopy.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
<data name="tsmiCopy.Text" xml:space="preserve">
<value>Copy</value>
</data>
<data name="tsmiUploadSelectedFile.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
@ -1086,6 +1101,12 @@
<data name="tsmiHideMenu.Text" xml:space="preserve">
<value>Hide menu</value>
</data>
<data name="tsmiImagePreview.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
<data name="tsmiImagePreview.Text" xml:space="preserve">
<value>Image preview</value>
</data>
<data name="tsmiImagePreviewShow.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 22</value>
</data>
@ -1104,153 +1125,18 @@
<data name="tsmiImagePreviewAutomatic.Text" xml:space="preserve">
<value>Automatic</value>
</data>
<data name="tsmiImagePreview.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 22</value>
</data>
<data name="tsmiImagePreview.Text" xml:space="preserve">
<value>Image preview</value>
</data>
<data name="cmsTaskInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 318</value>
</data>
<data name="&gt;&gt;cmsTaskInfo.Name" xml:space="preserve">
<value>cmsTaskInfo</value>
</data>
<data name="&gt;&gt;cmsTaskInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="niTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>105, 17</value>
</metadata>
<metadata name="cmsTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>190, 17</value>
</metadata>
<data name="tsmiTrayFullscreen.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayFullscreen.Text" xml:space="preserve">
<value>Fullscreen</value>
</data>
<data name="tsmiTrayWindow.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWindow.Text" xml:space="preserve">
<value>Window</value>
</data>
<data name="tsmiTrayMonitor.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayMonitor.Text" xml:space="preserve">
<value>Monitor</value>
</data>
<data name="tsmiTrayRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangle.Text" xml:space="preserve">
<value>Region</value>
</data>
<data name="tsmiTrayWindowRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWindowRectangle.Text" xml:space="preserve">
<value>Region (Objects)</value>
</data>
<data name="tsmiTrayRectangleAnnotate.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleAnnotate.Text" xml:space="preserve">
<value>Region (Annotate)</value>
</data>
<data name="tsmiTrayRectangleLight.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleLight.Text" xml:space="preserve">
<value>Region (Light)</value>
</data>
<data name="tsmiTrayRectangleTransparent.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleTransparent.Text" xml:space="preserve">
<value>Region (Transparent)</value>
</data>
<data name="tsmiTrayPolygon.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayPolygon.Text" xml:space="preserve">
<value>Polygon</value>
</data>
<data name="tsmiTrayFreeHand.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayFreeHand.Text" xml:space="preserve">
<value>Freehand</value>
</data>
<data name="tsmiTrayLastRegion.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayLastRegion.Text" xml:space="preserve">
<value>Last region</value>
</data>
<data name="tsmiTrayScreenRecordingFFmpeg.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayScreenRecordingFFmpeg.Text" xml:space="preserve">
<value>Screen recording</value>
</data>
<data name="tsmiTrayScreenRecordingGIF.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayScreenRecordingGIF.Text" xml:space="preserve">
<value>Screen recording (GIF)</value>
</data>
<data name="tsmiTrayWebpageCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWebpageCapture.Text" xml:space="preserve">
<value>Webpage capture...</value>
</data>
<data name="tsmiTrayAutoCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayAutoCapture.Text" xml:space="preserve">
<value>Auto capture...</value>
</data>
<data name="tsmiTrayCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 22</value>
</data>
<data name="tsmiTrayCapture.Text" xml:space="preserve">
<value>Capture</value>
</data>
<data name="tsmiTrayUploadFile.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadFile.Text" xml:space="preserve">
<value>Upload file...</value>
</data>
<data name="tsmiTrayUploadFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadFolder.Text" xml:space="preserve">
<value>Upload folder...</value>
</data>
<data name="tsmiTrayUploadClipboard.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadClipboard.Text" xml:space="preserve">
<value>Upload from clipboard...</value>
</data>
<data name="tsmiTrayUploadURL.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadURL.Text" xml:space="preserve">
<value>Upload from URL...</value>
</data>
<data name="tsmiTrayUploadDragDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadDragDrop.Text" xml:space="preserve">
<value>Drag and drop upload...</value>
</data>
<data name="tsmiTrayUpload.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 22</value>
</data>
@ -1335,6 +1221,12 @@
<data name="tsmiTrayFTPClient.Text" xml:space="preserve">
<value>FTP client...</value>
</data>
<data name="tsmiTrayIRCClient.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 22</value>
</data>
<data name="tsmiTrayIRCClient.Text" xml:space="preserve">
<value>IRC client...</value>
</data>
<data name="tsmiTrayTweetMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 22</value>
</data>
@ -1368,45 +1260,6 @@
<data name="tsmiTrayAfterUploadTasks.Text" xml:space="preserve">
<value>After upload</value>
</data>
<data name="tsmiTrayImageUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayImageUploaders.Text" xml:space="preserve">
<value>Image uploaders</value>
</data>
<data name="tsmiTrayTextUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayTextUploaders.Text" xml:space="preserve">
<value>Text uploaders</value>
</data>
<data name="tsmiTrayFileUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayFileUploaders.Text" xml:space="preserve">
<value>File uploaders</value>
</data>
<data name="tsmiTrayURLShorteners.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayURLShorteners.Text" xml:space="preserve">
<value>URL shorteners</value>
</data>
<data name="tsmiTrayURLSharingServices.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayURLSharingServices.Text" xml:space="preserve">
<value>URL sharing services</value>
</data>
<data name="tssTrayDestinations1.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 6</value>
</data>
<data name="tsmiTrayDestinationSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayDestinationSettings.Text" xml:space="preserve">
<value>Destination settings...</value>
</data>
<data name="tsmiTrayDestinations.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 22</value>
</data>
@ -1505,7 +1358,166 @@
</data>
<data name="niTray.Text" xml:space="preserve">
<value>ShareX</value>
<comment>@Invariant</comment></data>
</data>
<data name="tsmiTrayFullscreen.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayFullscreen.Text" xml:space="preserve">
<value>Fullscreen</value>
</data>
<data name="tsmiTrayWindow.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWindow.Text" xml:space="preserve">
<value>Window</value>
</data>
<data name="tsmiTrayMonitor.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayMonitor.Text" xml:space="preserve">
<value>Monitor</value>
</data>
<data name="tsmiTrayRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangle.Text" xml:space="preserve">
<value>Region</value>
</data>
<data name="tsmiTrayWindowRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWindowRectangle.Text" xml:space="preserve">
<value>Region (Objects)</value>
</data>
<data name="tsmiTrayRectangleAnnotate.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleAnnotate.Text" xml:space="preserve">
<value>Region (Annotate)</value>
</data>
<data name="tsmiTrayRectangleLight.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleLight.Text" xml:space="preserve">
<value>Region (Light)</value>
</data>
<data name="tsmiTrayRectangleTransparent.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayRectangleTransparent.Text" xml:space="preserve">
<value>Region (Transparent)</value>
</data>
<data name="tsmiTrayPolygon.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayPolygon.Text" xml:space="preserve">
<value>Polygon</value>
</data>
<data name="tsmiTrayFreeHand.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayFreeHand.Text" xml:space="preserve">
<value>Freehand</value>
</data>
<data name="tsmiTrayLastRegion.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayLastRegion.Text" xml:space="preserve">
<value>Last region</value>
</data>
<data name="tsmiTrayScreenRecordingFFmpeg.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayScreenRecordingFFmpeg.Text" xml:space="preserve">
<value>Screen recording</value>
</data>
<data name="tsmiTrayScreenRecordingGIF.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayScreenRecordingGIF.Text" xml:space="preserve">
<value>Screen recording (GIF)</value>
</data>
<data name="tsmiTrayWebpageCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayWebpageCapture.Text" xml:space="preserve">
<value>Webpage capture...</value>
</data>
<data name="tsmiTrayAutoCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 22</value>
</data>
<data name="tsmiTrayAutoCapture.Text" xml:space="preserve">
<value>Auto capture...</value>
</data>
<data name="tsmiTrayUploadFile.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadFile.Text" xml:space="preserve">
<value>Upload file...</value>
</data>
<data name="tsmiTrayUploadFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadFolder.Text" xml:space="preserve">
<value>Upload folder...</value>
</data>
<data name="tsmiTrayUploadClipboard.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadClipboard.Text" xml:space="preserve">
<value>Upload from clipboard...</value>
</data>
<data name="tsmiTrayUploadURL.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadURL.Text" xml:space="preserve">
<value>Upload from URL...</value>
</data>
<data name="tsmiTrayUploadDragDrop.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 22</value>
</data>
<data name="tsmiTrayUploadDragDrop.Text" xml:space="preserve">
<value>Drag and drop upload...</value>
</data>
<data name="tsmiTrayImageUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayImageUploaders.Text" xml:space="preserve">
<value>Image uploaders</value>
</data>
<data name="tsmiTrayTextUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayTextUploaders.Text" xml:space="preserve">
<value>Text uploaders</value>
</data>
<data name="tsmiTrayFileUploaders.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayFileUploaders.Text" xml:space="preserve">
<value>File uploaders</value>
</data>
<data name="tsmiTrayURLShorteners.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayURLShorteners.Text" xml:space="preserve">
<value>URL shorteners</value>
</data>
<data name="tsmiTrayURLSharingServices.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayURLSharingServices.Text" xml:space="preserve">
<value>URL sharing services</value>
</data>
<data name="tssTrayDestinations1.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 6</value>
</data>
<data name="tsmiTrayDestinationSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
</data>
<data name="tsmiTrayDestinationSettings.Text" xml:space="preserve">
<value>Destination settings...</value>
</data>
<metadata name="timerTraySingleClick.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>405, 17</value>
</metadata>
@ -1529,7 +1541,7 @@
</data>
<data name="$this.Text" xml:space="preserve">
<value>ShareX</value>
<comment>@Invariant</comment></data>
</data>
<data name="&gt;&gt;chFilename.Name" xml:space="preserve">
<value>chFilename</value>
</data>
@ -1788,6 +1800,12 @@
<data name="&gt;&gt;tsmiFTPClient.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiIRCClient.Name" xml:space="preserve">
<value>tsmiIRCClient</value>
</data>
<data name="&gt;&gt;tsmiIRCClient.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiTweetMessage.Name" xml:space="preserve">
<value>tsmiTweetMessage</value>
</data>
@ -2652,6 +2670,12 @@
<data name="&gt;&gt;timerTraySingleClick.Type" xml:space="preserve">
<value>System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiTrayIRCClient.Name" xml:space="preserve">
<value>tsmiTrayIRCClient</value>
</data>
<data name="&gt;&gt;tsmiTrayIRCClient.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>

View file

@ -284,6 +284,9 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
// Tools / Video thumbnailer
pgVideoThumbnailer.SelectedObject = TaskSettings.ToolsSettings.VideoThumbnailOptions;
// Tools / IRC client
pgIRCClient.SelectedObject = TaskSettings.ToolsSettings.IRCSettings;
// Advanced
pgTaskSettings.SelectedObject = TaskSettings.AdvancedSettings;

View file

@ -307,6 +307,16 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap balloon_white {
get {
object obj = ResourceManager.GetObject("balloon-white", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View file

@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="UploadTask_DoUploadJob_You_are_attempting_to_upload_a_large_file" xml:space="preserve">
<value>You are attempting to upload a large file.
Are you sure you want to continue?</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="layer_shape_round" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-round.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -128,22 +132,34 @@
<data name="UploadManager_IsUploadConfirmed_Are_you_sure_you_want_to_upload__0__files_" xml:space="preserve">
<value>Are you sure you want to upload {0} files?</value>
</data>
<data name="BeforeUploadControl_AddDestination_Custom" xml:space="preserve">
<value>Custom</value>
</data>
<data name="UploadTask_Stop_Stopping" xml:space="preserve">
<value>Stopping</value>
</data>
<data name="UploadTask_CreateURLShortenerTask_Shorten_URL___0__" xml:space="preserve">
<value>Shorten URL ({0})</value>
</data>
<data name="layer_transparent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-transparent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_There_is_no_valid_CLI_video_encoder_selected_" xml:space="preserve">
<value>There is no valid CLI video encoder selected.</value>
</data>
<data name="UploadTask_DownloadAndUpload_Downloading" xml:space="preserve">
<value>Downloading</value>
</data>
<data name="UploadTask_DoUploadJob_First_time_upload_warning_text" xml:space="preserve">
<value>Are you sure you want to upload this screenshot?
Press 'No' to cancel the current upload and disable screenshot auto uploading.</value>
</data>
<data name="WebpageCaptureForm_UpdateControls_Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="UploadTask_DoUploadJob_Uploading" xml:space="preserve">
<value>Uploading</value>
</data>
@ -162,15 +178,15 @@ Press 'No' to cancel the current upload and disable screenshot auto uploading.</
<data name="google_plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\google_plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="toolbox" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\toolbox.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="au" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\au.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_FFmpeg_error" xml:space="preserve">
<value>FFmpeg error</value>
</data>
<data name="checkbox_check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checkbox_check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_" xml:space="preserve">
<value>FFmpeg successfully downloaded.</value>
</data>
@ -237,9 +253,6 @@ Press 'No' to cancel the current upload and disable screenshot auto uploading.</
<data name="Fullscreen" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Fullscreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_URL_shortener___0_" xml:space="preserve">
<value>URL shortener: {0}</value>
</data>
<data name="UploadTask_ThreadDoWork_URL_is_empty_" xml:space="preserve">
<value>URL is empty.</value>
</data>
@ -259,6 +272,9 @@ Please select a different hotkey or quit the conflicting application and reopen
<data name="AutoCaptureForm_Execute_Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="RecentManager_UpdateRecentMenu_Left_click_to_copy_URL_to_clipboard__Right_click_to_open_URL_" xml:space="preserve">
<value>Left click to copy URL to clipboard. Right click to open URL.</value>
</data>
<data name="robot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\robot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -295,8 +311,8 @@ Please select a different hotkey or quit the conflicting application and reopen
<data name="application_blue" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="application_task" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-task.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="MainForm_AfterShownJobs_You_can_single_left_click_the_ShareX_tray_icon_to_start_region_capture_" xml:space="preserve">
<value>You can single left click the ShareX tray icon to start region capture.</value>
</data>
<data name="TaskSettingsForm_UpdateWindowTitle_Task_settings" xml:space="preserve">
<value>Task settings</value>
@ -334,8 +350,10 @@ Would you like to automatically download it?</value>
<value>Waiting...</value>
<comment>Text must be equal or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="BeforeUploadForm_BeforeUploadForm__0__is_about_to_be_uploaded_to__1___You_may_choose_a_different_destination_" xml:space="preserve">
<value>{0} is about to be uploaded to {1}. You may choose a different destination.</value>
<data name="TaskHelpers_OpenImageEditor_Your_clipboard_contains_image" xml:space="preserve">
<value>Your clipboard contains image, would you like to open it in image editor?
Press yes to open image from clipboard. Alternatively, press no to open image file dialog box.</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_Image_uploader___0_" xml:space="preserve">
<value>Image uploader: {0}</value>
@ -346,12 +364,18 @@ Would you like to automatically download it?</value>
<data name="layer_pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="images_stack" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\images-stack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskHelpers_OpenQuickScreenColorPicker_Copied_to_clipboard___0_" xml:space="preserve">
<value>Copied to clipboard: {0}</value>
</data>
<data name="MainForm_UpdateMenu_Hide_menu" xml:space="preserve">
<value>Hide menu</value>
</data>
<data name="monitor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="navigation_000_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\navigation-000-button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -376,6 +400,9 @@ Would you like to automatically download it?</value>
<data name="UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save" xml:space="preserve">
<value>Choose a folder to save</value>
</data>
<data name="MainForm_UpdateToggleHotkeyButton_Enable_hotkeys" xml:space="preserve">
<value>Enable hotkeys</value>
</data>
<data name="ActionsForm_btnPathBrowse_Click_Choose_file_path" xml:space="preserve">
<value>Choose file path</value>
</data>
@ -388,6 +415,9 @@ Would you like to automatically download it?</value>
<data name="keyboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\keyboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskHelpers_ToggleHotkeys_Hotkeys_disabled_" xml:space="preserve">
<value>Hotkeys disabled.</value>
</data>
<data name="UploadManager_IsUploadConfirmed_Upload_files" xml:space="preserve">
<value>Upload files</value>
</data>
@ -400,9 +430,6 @@ Would you like to automatically download it?</value>
<data name="kr" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\kr.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskManager_task_UploadCompleted_Error" xml:space="preserve">
<value>Error</value>
</data>
@ -413,6 +440,9 @@ Would you like to automatically download it?</value>
<value>Drop
here</value>
</data>
<data name="TaskHelpers_ToggleHotkeys_Hotkeys_enabled_" xml:space="preserve">
<value>Hotkeys enabled.</value>
</data>
<data name="crown" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\crown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -475,8 +505,8 @@ Please run ShareX as administrator to change personal folder path.</value>
<data name="TaskHelpers_OpenFTPClient_FTP_client_only_supports_FTP_or_FTPS_" xml:space="preserve">
<value>FTP client only supports FTP or FTPS.</value>
</data>
<data name="arrow_090" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-090.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="layers_arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layers-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="WatchFolderForm_btnPathBrowse_Click_Choose_folder_path" xml:space="preserve">
<value>Choose folder path</value>
@ -484,6 +514,9 @@ Please run ShareX as administrator to change personal folder path.</value>
<data name="Rectangle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Rectangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MainForm_UpdateToggleHotkeyButton_Disable_hotkeys" xml:space="preserve">
<value>Disable hotkeys</value>
</data>
<data name="ApplicationSettingsForm_cbLanguage_SelectedIndexChanged_Language_Restart" xml:space="preserve">
<value>ShareX need to be restarted for language changes to apply.
Would you like to restart ShareX?</value>
@ -491,6 +524,9 @@ Would you like to restart ShareX?</value>
<data name="layer_shape" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="image_pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\image--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -503,6 +539,9 @@ Would you like to restart ShareX?</value>
<data name="cn" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="categories" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\categories.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FileExistForm_txtNewName_TextChanged_Use_new_name__" xml:space="preserve">
<value>Use new name: </value>
</data>
@ -563,15 +602,12 @@ Would you like to restart ShareX?</value>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_capture___0_" xml:space="preserve">
<value>After capture: {0}</value>
</data>
<data name="camera" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\camera.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_URL_shortener___0_" xml:space="preserve">
<value>URL shortener: {0}</value>
</data>
<data name="clipboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\clipboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="barcode_2d" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\barcode-2d.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Program_Run_Unable_to_create_folder_" xml:space="preserve">
<value>Unable to create folder:</value>
</data>
@ -584,11 +620,8 @@ Would you like to restart ShareX?</value>
<data name="film" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\film.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenColorPicker_ScreenColorPicker_Close" xml:space="preserve">
<value>Close</value>
</data>
<data name="RecentManager_UpdateRecentMenu_Left_click_to_copy_URL_to_clipboard__Right_click_to_open_URL_" xml:space="preserve">
<value>Left click to copy URL to clipboard. Right click to open URL.</value>
<data name="arrow_090" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-090.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="clipboard_list" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\clipboard-list.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -605,9 +638,6 @@ Would you like to restart ShareX?</value>
<data name="UploadManager_UploadFile_File_upload" xml:space="preserve">
<value>File upload</value>
</data>
<data name="ScreenColorPicker_UpdateControls_Start_screen_color_picker" xml:space="preserve">
<value>Start screen color picker</value>
</data>
<data name="layout_select_sidebar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layout-select-sidebar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -618,9 +648,6 @@ Would you like to restart ShareX?</value>
<value>Download failed:
{0}</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_upload___0_" xml:space="preserve">
<value>After upload: {0}</value>
</data>
<data name="layer_shape_ellipse" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-ellipse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -639,8 +666,8 @@ Would you like to restart ShareX?</value>
<data name="layer_shape_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="checkbox_check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checkbox_check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="toolbox" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\toolbox.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UploadTask_OnUploadCompleted_Stopped" xml:space="preserve">
<value>Stopped</value>
@ -657,12 +684,15 @@ Would you like to restart ShareX?</value>
<data name="AboutForm_AboutForm_Issues" xml:space="preserve">
<value>Issues</value>
</data>
<data name="layer_transparent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-transparent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="ScreenColorPicker_ScreenColorPicker_Close" xml:space="preserve">
<value>Close</value>
</data>
<data name="wrench_screwdriver" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\wrench-screwdriver.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="application_browser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-browser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ErrorSound" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ErrorSound.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@ -672,8 +702,8 @@ Would you like to restart ShareX?</value>
<data name="MainForm_tsmiTestTextUpload_Click_Text_upload_test" xml:space="preserve">
<value>Text upload test</value>
</data>
<data name="application_browser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-browser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="application_task" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-task.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="notebook" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\notebook.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -687,6 +717,15 @@ Would you like to restart ShareX?</value>
<data name="color" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\color.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="WebpageCaptureForm_UpdateControls_Capture" xml:space="preserve">
<value>Capture</value>
</data>
<data name="TaskHelpers_OpenImageEditor_Image_editor___How_to_load_image_" xml:space="preserve">
<value>Image editor - How to load image?</value>
</data>
<data name="br" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\br.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="image" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -702,20 +741,26 @@ Would you like to restart ShareX?</value>
<data name="RoundedRectangle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RoundedRectangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="monitor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="TaskHelpers_TweetMessage_Unable_to_find_valid_Twitter_account_" xml:space="preserve">
<value>Unable to find valid Twitter account.</value>
</data>
<data name="BeforeUploadForm_BeforeUploadForm__0__is_about_to_be_uploaded_to__1___You_may_choose_a_different_destination_" xml:space="preserve">
<value>{0} is about to be uploaded to {1}. You may choose a different destination.</value>
</data>
<data name="AboutForm_AboutForm_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="categories" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\categories.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="layers_arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layers-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_upload___0_" xml:space="preserve">
<value>After upload: {0}</value>
</data>
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="barcode_2d" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\barcode-2d.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="camera" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\camera.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="exclamation_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\exclamation-button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -727,52 +772,10 @@ Would you like to restart ShareX?</value>
<data name="ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_" xml:space="preserve">
<value>Download of FFmpeg failed.</value>
</data>
<data name="TaskHelpers_TweetMessage_Unable_to_find_valid_Twitter_account_" xml:space="preserve">
<value>Unable to find valid Twitter account.</value>
<data name="ScreenColorPicker_UpdateControls_Start_screen_color_picker" xml:space="preserve">
<value>Start screen color picker</value>
</data>
<data name="images_stack" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\images-stack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BeforeUploadControl_AddDestination_Custom" xml:space="preserve">
<value>Custom</value>
</data>
<data name="MainForm_AfterShownJobs_You_can_single_left_click_the_ShareX_tray_icon_to_start_region_capture_" xml:space="preserve">
<value>You can single left click the ShareX tray icon to start region capture.</value>
</data>
<data name="MainForm_UpdateToggleHotkeyButton_Enable_hotkeys" xml:space="preserve">
<value>Enable hotkeys</value>
</data>
<data name="MainForm_UpdateToggleHotkeyButton_Disable_hotkeys" xml:space="preserve">
<value>Disable hotkeys</value>
</data>
<data name="WebpageCaptureForm_UpdateControls_Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="WebpageCaptureForm_UpdateControls_Capture" xml:space="preserve">
<value>Capture</value>
</data>
<data name="TaskHelpers_ToggleHotkeys_Hotkeys_disabled_" xml:space="preserve">
<value>Hotkeys disabled.</value>
</data>
<data name="TaskHelpers_ToggleHotkeys_Hotkeys_enabled_" xml:space="preserve">
<value>Hotkeys enabled.</value>
</data>
<data name="br" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\br.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UploadTask_DoUploadJob_You_are_attempting_to_upload_a_large_file" xml:space="preserve">
<value>You are attempting to upload a large file.
Are you sure you want to continue?</value>
</data>
<data name="UploadTask_DownloadAndUpload_Downloading" xml:space="preserve">
<value>Downloading</value>
</data>
<data name="TaskHelpers_OpenImageEditor_Your_clipboard_contains_image" xml:space="preserve">
<value>Your clipboard contains image, would you like to open it in image editor?
Press yes to open image from clipboard. Alternatively, press no to open image file dialog box.</value>
</data>
<data name="TaskHelpers_OpenImageEditor_Image_editor___How_to_load_image_" xml:space="preserve">
<value>Image editor - How to load image?</value>
<data name="balloon-white" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\balloon-white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

View file

@ -827,6 +827,10 @@
<Project>{750c6f46-2c5a-4488-81d3-3b35ca50f3ee}</Project>
<Name>ShareX.IndexerLib</Name>
</ProjectReference>
<ProjectReference Include="..\ShareX.IRCLib\ShareX.IRCLib.csproj">
<Project>{ef7fcc3f-b776-4a5e-bddc-32329ab11a58}</Project>
<Name>ShareX.IRCLib</Name>
</ProjectReference>
<ProjectReference Include="..\ShareX.MediaLib\ShareX.MediaLib.csproj">
<Project>{1a190e53-1419-4cc2-b0e5-3bc7ea861c8b}</Project>
<Name>ShareX.MediaLib</Name>
@ -1000,6 +1004,7 @@
<None Include="Resources\keyboard--plus.png" />
<None Include="Resources\images-stack.png" />
<None Include="Resources\br.png" />
<None Include="Resources\balloon-white.png" />
<Content Include="ShareX_Icon.ico" />
<None Include="Resources\globe--pencil.png" />
<None Include="Resources\camcorder--pencil.png" />

View file

@ -25,6 +25,7 @@
using ShareX.HelpersLib;
using ShareX.ImageEffectsLib;
using ShareX.IRCLib;
using ShareX.MediaLib;
using ShareX.Properties;
using ShareX.ScreenCaptureLib;
@ -747,6 +748,13 @@ public static void OpenFTPClient()
MessageBox.Show(Resources.TaskHelpers_OpenFTPClient_Unable_to_find_valid_FTP_account_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public static void OpenIRCClient(TaskSettings taskSettings = null)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
new IRCClientForm(taskSettings.ToolsSettings.IRCSettings).Show();
}
public static void TweetMessage()
{
if (Program.UploadersConfig != null && Program.UploadersConfig.TwitterOAuthInfoList != null)

View file

@ -27,6 +27,7 @@
using ShareX.HelpersLib;
using ShareX.ImageEffectsLib;
using ShareX.IndexerLib;
using ShareX.IRCLib;
using ShareX.MediaLib;
using ShareX.ScreenCaptureLib;
using ShareX.UploadersLib;
@ -344,6 +345,7 @@ public class TaskSettingsTools
{
public IndexerSettings IndexerSettings = new IndexerSettings();
public VideoThumbnailOptions VideoThumbnailOptions = new VideoThumbnailOptions();
public IRCInfo IRCSettings = new IRCInfo();
}
public class TaskSettingsAdvanced