diff --git a/ShareX.ImageEffectsLib/ImageEffectsForm.cs b/ShareX.ImageEffectsLib/ImageEffectsForm.cs
index bca922d2b..332f88085 100644
--- a/ShareX.ImageEffectsLib/ImageEffectsForm.cs
+++ b/ShareX.ImageEffectsLib/ImageEffectsForm.cs
@@ -227,9 +227,7 @@ private void tsmiEffectClick(object sender, EventArgs e)
{
Type type = (Type)tsmi.Tag;
ImageEffect imageEffect = (ImageEffect)Activator.CreateInstance(type);
- // TODO: Order
- preset.Effects.Add(imageEffect);
- AddEffect(imageEffect);
+ AddEffect(imageEffect, preset);
UpdatePreview();
}
}
@@ -260,7 +258,7 @@ private void ClearFields()
UpdatePreview();
}
- private void AddEffect(ImageEffect imageEffect)
+ private void AddEffect(ImageEffect imageEffect, ImageEffectPreset preset = null)
{
ListViewItem lvi = new ListViewItem(imageEffect.GetType().GetDescription());
lvi.Checked = imageEffect.Enabled;
@@ -268,11 +266,22 @@ private void AddEffect(ImageEffect imageEffect)
if (lvEffects.SelectedIndices.Count > 0)
{
- lvEffects.Items.Insert(lvEffects.SelectedIndices[lvEffects.SelectedIndices.Count - 1] + 1, lvi);
+ int index = lvEffects.SelectedIndices[lvEffects.SelectedIndices.Count - 1] + 1;
+ lvEffects.Items.Insert(index, lvi);
+
+ if (preset != null)
+ {
+ preset.Effects.Insert(index, imageEffect);
+ }
}
else
{
lvEffects.Items.Add(lvi);
+
+ if (preset != null)
+ {
+ preset.Effects.Add(imageEffect);
+ }
}
lvi.EnsureVisible();
@@ -392,8 +401,7 @@ private void btnDuplicate_Click(object sender, EventArgs e)
{
ImageEffect imageEffect = (ImageEffect)lvi.Tag;
ImageEffect imageEffectClone = imageEffect.Copy();
- preset.Effects.Add(imageEffectClone);
- AddEffect(imageEffectClone);
+ AddEffect(imageEffectClone, preset);
UpdatePreview();
}
}
@@ -402,8 +410,13 @@ private void btnDuplicate_Click(object sender, EventArgs e)
private void lvEffects_ItemMoved(object sender, int oldIndex, int newIndex)
{
- // TODO: Order
- UpdatePreview();
+ ImageEffectPreset preset = GetSelectedPreset();
+
+ if (preset != null)
+ {
+ preset.Effects.Move(oldIndex, newIndex);
+ UpdatePreview();
+ }
}
private void btnRefresh_Click(object sender, EventArgs e)
diff --git a/ShareX.UploadersLib/Helpers/Argument.cs b/ShareX.UploadersLib/Helpers/Argument.cs
index 1892f990e..1e8c43cf8 100644
--- a/ShareX.UploadersLib/Helpers/Argument.cs
+++ b/ShareX.UploadersLib/Helpers/Argument.cs
@@ -28,7 +28,6 @@ namespace ShareX.UploadersLib
public class Argument
{
public string Name { get; set; }
-
public string Value { get; set; }
public Argument()
diff --git a/ShareX.UploadersLib/Helpers/TCPClient.cs b/ShareX.UploadersLib/Helpers/TCPClient.cs
deleted file mode 100644
index c888dcb18..000000000
--- a/ShareX.UploadersLib/Helpers/TCPClient.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-#region License Information (GPL v3)
-
-/*
- ShareX - A program that allows you to take screenshots and share any file type
- Copyright (c) 2007-2017 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 .
-*/
-
-#endregion License Information (GPL v3)
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Net;
-using System.Net.Sockets;
-using System.Text;
-
-namespace ShareX.UploadersLib
-{
- public class TCPClient
- {
- private readonly TcpClient client;
- private Uri url;
- private string boundary, header, footer;
- private byte[] postMethod, headerBytes, request, requestEnd;
- private readonly ImageUploader uploader;
-
- public TCPClient(ImageUploader imageUploader)
- {
- uploader = imageUploader;
- client = new TcpClient();
- }
-
- private void PreparePackets(long length)
- {
- //string postData = "?" + string.Join("&", arguments.Select(x => x.Key + "=" + x.Value).ToArray());
- postMethod = Encoding.Default.GetBytes(string.Format("POST {0} HTTP/1.1\r\n", url.AbsolutePath));
-
- WebHeaderCollection headers = new WebHeaderCollection();
- headers.Add(HttpRequestHeader.ContentType, "multipart/form-data; boundary=" + boundary);
- headers.Add(HttpRequestHeader.Host, url.DnsSafeHost);
- headers.Add(HttpRequestHeader.ContentLength, (request.Length + length + requestEnd.Length).ToString());
- headers.Add(HttpRequestHeader.Connection, "Keep-Alive");
- headers.Add(HttpRequestHeader.CacheControl, "no-cache");
-
- headerBytes = headers.ToByteArray();
- }
-
- private static string GetMimeType(ImageFormat format)
- {
- foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageDecoders())
- {
- if (codec.FormatID == format.Guid) return codec.MimeType;
- }
- return "image/unknown";
- }
-
- private void BuildRequests(string fileFormName, string fileName, string fileMimeType, Dictionary arguments)
- {
- using (MemoryStream stream = new MemoryStream())
- {
- StringBuilder stringRequest = new StringBuilder();
-
- foreach (KeyValuePair argument in arguments)
- {
- stringRequest.Append(MakeInputContent(argument.Key, argument.Value));
- }
-
- byte[] bytes = Encoding.Default.GetBytes(stringRequest.ToString());
-
- stream.Write(bytes, 0, bytes.Length);
- bytes = MakeFileInputContent(fileFormName, fileName, fileMimeType);
- stream.Write(bytes, 0, bytes.Length);
- request = stream.ToArray();
- }
- requestEnd = Encoding.Default.GetBytes("\r\n" + footer + "\r\n");
- }
-
- private string MakeInputContent(string name, string value)
- {
- return string.Format("{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n", header, name, value);
- }
-
- private byte[] MakeFileInputContent(string name, string filename, string contentType)
- {
- string format = string.Format("{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
- header, name, filename, contentType);
-
- using (MemoryStream stream = new MemoryStream())
- {
- byte[] bytes = Encoding.Default.GetBytes(format);
- stream.Write(bytes, 0, bytes.Length);
-
- return stream.ToArray();
- }
- }
-
- public string UploadImage(Image image, string link, string fileFormName, string fileName, Dictionary arguments)
- {
- using (image)
- using (MemoryStream stream = new MemoryStream())
- {
- image.Save(stream, image.RawFormat);
- stream.Position = 0;
-
- url = new Uri(link);
-
- boundary = "----------" + DateTime.Now.Ticks.ToString("x");
- header = string.Format("--{0}", boundary);
- footer = string.Format("--{0}--", boundary);
-
- BuildRequests(fileFormName, Path.GetFileName(fileName), GetMimeType(image.RawFormat), arguments);
- PreparePackets(stream.Length);
-
- return Send(stream, arguments);
- }
- }
-
- private string Send(Stream stream, Dictionary arguments)
- {
- client.Connect(url.DnsSafeHost, 80);
-
- using (NetworkStream networkStream = client.GetStream())
- {
- networkStream.Write(postMethod, 0, postMethod.Length);
- networkStream.Write(headerBytes, 0, headerBytes.Length);
- networkStream.Write(request, 0, request.Length);
-
- byte[] buffer = new byte[(int)Math.Min(4096, stream.Length)];
-
- ProgressManager progress = new ProgressManager();
-
- using (stream)
- {
- int bytesRead = stream.Read(buffer, 0, buffer.Length);
-
- while (bytesRead > 0)
- {
- networkStream.Write(buffer, 0, bytesRead);
-
- //if (progress.ChangeProgress(stream)) uploader.OnProgressChanged(progress.Progress);
-
- bytesRead = stream.Read(buffer, 0, buffer.Length);
- }
- }
-
- networkStream.Write(requestEnd, 0, requestEnd.Length);
-
- using (StreamReader reader = new StreamReader(networkStream))
- return reader.ReadToEnd();
- }
- }
-
- private class ProgressManager
- {
- public int Progress;
-
- public bool ChangeProgress(Stream stream)
- {
- return ChangeProgress(stream.Position, stream.Length);
- }
-
- public bool ChangeProgress(long position, long length)
- {
- int percentage = (int)((double)position / length * 100);
- if (percentage != Progress)
- {
- Progress = percentage;
- return true;
- }
- return false;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
index b3ba67a8d..839220a0d 100644
--- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj
+++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
@@ -327,7 +327,6 @@
-