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 @@ -