Merge branch 'master' into youtube-uploader

This commit is contained in:
SupSuper 2018-04-10 02:00:40 +01:00
commit 21a813bb6f
25 changed files with 103 additions and 80 deletions

View file

@ -27,6 +27,7 @@
using Shell32;
using System;
using System.IO;
using System.Reflection;
using File = System.IO.File;
using Folder = Shell32.Folder;
@ -114,8 +115,9 @@ private static string GetShortcutTargetPath(string shortcutPath)
try
{
Shell shell = new ShellClass();
Folder folder = shell.NameSpace(directory);
Type t = Type.GetTypeFromProgID("Shell.Application");
object shell = Activator.CreateInstance(t);
Folder folder = (Folder)t.InvokeMember("NameSpace", BindingFlags.InvokeMethod, null, shell, new object[] { directory });
FolderItem folderItem = folder.ParseName(filename);
if (folderItem != null)

View file

@ -85,7 +85,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
</packages>

View file

@ -93,7 +93,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Design" />

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
</packages>

View file

@ -66,7 +66,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
</packages>

View file

@ -41,7 +41,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
</packages>

View file

@ -29,7 +29,7 @@
namespace ShareX.ScreenCaptureLib
{
internal class ButtonObject : DrawableObject
internal class ImageEditorButton : ImageEditorControl
{
public string Text { get; set; }
public Color ButtonColor { get; set; }

View file

@ -29,7 +29,7 @@
namespace ShareX.ScreenCaptureLib
{
internal abstract class DrawableObject
internal abstract class ImageEditorControl
{
public event MouseEventHandler MouseDown, MouseUp;
public event Action MouseEnter, MouseLeave;

View file

@ -31,7 +31,7 @@
namespace ShareX.ScreenCaptureLib
{
internal class ImageEditorScrollbar : DrawableObject
internal class ImageEditorScrollbar : ImageEditorControl
{
public Orientation Orientation { get; set; }
public int Thickness { get; set; } = 15;

View file

@ -28,7 +28,7 @@
namespace ShareX.ScreenCaptureLib
{
internal class ResizeNode : DrawableObject
internal class ResizeNode : ImageEditorControl
{
public const int DefaultSize = 13;

View file

@ -35,7 +35,7 @@ public override void OnCreating()
Point pos = InputManager.ClientMousePosition;
Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
if (Manager.IsCornerMoving && LoadImageFile(AnnotationOptions.LastImageFilePath, true))
if (Manager.IsCtrlModifier && LoadImageFile(AnnotationOptions.LastImageFilePath, true))
{
OnCreated();
Manager.IsMoving = true;

View file

@ -51,7 +51,7 @@ public override void OnCreating()
Point pos = InputManager.ClientMousePosition;
Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
if (Manager.IsCornerMoving && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize))
if (Manager.IsCtrlModifier && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize))
{
OnCreated();
Manager.IsMoving = true;

View file

@ -158,6 +158,7 @@ private set
public bool IsPanning { get; set; }
public bool IsResizing { get; set; }
// Is holding Ctrl?
public bool IsCtrlModifier { get; private set; }
public bool IsCornerMoving { get; private set; }
// Is holding Shift?
public bool IsProportionalResizing { get; private set; }
@ -178,7 +179,7 @@ private set
public AnnotationOptions AnnotationOptions => Options.AnnotationOptions;
internal List<DrawableObject> DrawableObjects { get; private set; }
internal List<ImageEditorControl> DrawableObjects { get; private set; }
internal ResizeNode[] ResizeNodes { get; private set; }
private bool nodesVisible;
@ -229,7 +230,7 @@ public ShapeManager(RegionCaptureForm form)
Form = form;
Options = form.Options;
DrawableObjects = new List<DrawableObject>();
DrawableObjects = new List<ImageEditorControl>();
ResizeNodes = new ResizeNode[9];
for (int i = 0; i < ResizeNodes.Length; i++)
@ -282,7 +283,7 @@ private void form_Shown(object sender, EventArgs e)
private void form_LostFocus(object sender, EventArgs e)
{
IsCornerMoving = IsProportionalResizing = IsSnapResizing = false;
ResetModifiers();
}
private void form_MouseDown(object sender, MouseEventArgs e)
@ -410,7 +411,17 @@ private void form_KeyDown(object sender, KeyEventArgs e)
switch (e.KeyCode)
{
case Keys.ControlKey:
IsCornerMoving = true;
if (!IsCtrlModifier && !IsCornerMoving)
{
if (IsCreating || IsResizing)
{
IsCornerMoving = true;
}
else
{
IsCtrlModifier = true;
}
}
break;
case Keys.ShiftKey:
IsProportionalResizing = true;
@ -638,6 +649,7 @@ private void form_KeyUp(object sender, KeyEventArgs e)
switch (e.KeyCode)
{
case Keys.ControlKey:
IsCtrlModifier = false;
IsCornerMoving = false;
break;
case Keys.ShiftKey:
@ -856,7 +868,7 @@ private void EndPanning()
internal void UpdateObjects()
{
DrawableObject[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray();
ImageEditorControl[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray();
Point position = InputManager.ClientMousePosition;
@ -864,7 +876,7 @@ internal void UpdateObjects()
{
for (int i = 0; i < objects.Length; i++)
{
DrawableObject obj = objects[i];
ImageEditorControl obj = objects[i];
if (obj.Visible)
{
@ -895,7 +907,7 @@ internal void UpdateObjects()
{
if (InputManager.IsMouseReleased(MouseButtons.Left))
{
foreach (DrawableObject obj in objects)
foreach (ImageEditorControl obj in objects)
{
if (obj.IsDragging)
{
@ -908,7 +920,7 @@ internal void UpdateObjects()
internal void DrawObjects(Graphics g)
{
foreach (DrawableObject obj in DrawableObjects)
foreach (ImageEditorControl obj in DrawableObjects)
{
if (obj.Visible)
{
@ -1262,6 +1274,11 @@ private void DeleteAllShapes()
DeselectCurrentShape();
}
private void ResetModifiers()
{
IsCtrlModifier = IsCornerMoving = IsProportionalResizing = IsSnapResizing = false;
}
private void ClearTools()
{
foreach (BaseTool tool in ToolShapes)
@ -1278,13 +1295,16 @@ public BaseShape GetIntersectShape()
public BaseShape GetIntersectShape(Point position)
{
for (int i = Shapes.Count - 1; i >= 0; i--)
if (!IsCtrlModifier)
{
BaseShape shape = Shapes[i];
if (shape.ShapeType == CurrentTool && shape.Intersects(position))
for (int i = Shapes.Count - 1; i >= 0; i--)
{
return shape;
BaseShape shape = Shapes[i];
if (shape.ShapeType == CurrentTool && shape.Intersects(position))
{
return shape;
}
}
}

View file

@ -35,7 +35,7 @@ public class CropTool : BaseTool
public override bool LimitRectangleToInsideCanvas { get; } = true;
private ButtonObject confirmButton, cancelButton;
private ImageEditorButton confirmButton, cancelButton;
private Size buttonSize = new Size(80, 40);
private int buttonOffset = 15;
@ -75,7 +75,7 @@ public override void OnDraw(Graphics g)
public override void OnCreated()
{
confirmButton = new ButtonObject()
confirmButton = new ImageEditorButton()
{
Text = "\u2714",
ButtonColor = Color.ForestGreen,
@ -87,7 +87,7 @@ public override void OnCreated()
confirmButton.MouseLeave += () => Manager.Form.SetDefaultCursor();
Manager.DrawableObjects.Add(confirmButton);
cancelButton = new ButtonObject()
cancelButton = new ImageEditorButton()
{
Text = "\u2716",
ButtonColor = Color.FromArgb(227, 45, 45),

View file

@ -125,7 +125,7 @@
<Compile Include="Forms\StickerPackForm.Designer.cs">
<DependentUpon>StickerPackForm.cs</DependentUpon>
</Compile>
<Compile Include="RegionHelpers\ButtonObject.cs" />
<Compile Include="RegionHelpers\ImageEditorButton.cs" />
<Compile Include="RegionHelpers\ImageEditorScrollbar.cs" />
<Compile Include="RegionHelpers\ScrollbarManager.cs" />
<Compile Include="Shapes\AnnotationOptions.cs" />
@ -203,7 +203,7 @@
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Shapes\ShapeManager.cs" />
<Compile Include="RegionHelpers\DrawableObject.cs" />
<Compile Include="RegionHelpers\ImageEditorControl.cs" />
<Compile Include="Forms\RegionCaptureForm.cs">
<SubType>Form</SubType>
</Compile>

View file

@ -1793,8 +1793,6 @@ private void InitializeComponent()
// cbFirebaseIsShort
//
resources.ApplyResources(this.cbFirebaseIsShort, "cbFirebaseIsShort");
this.cbFirebaseIsShort.Checked = true;
this.cbFirebaseIsShort.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbFirebaseIsShort.Name = "cbFirebaseIsShort";
this.cbFirebaseIsShort.UseVisualStyleBackColor = true;
this.cbFirebaseIsShort.CheckedChanged += new System.EventHandler(this.cbFirebaseIsShort_CheckedChanged);

View file

@ -98,14 +98,14 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentFTP, Version=19.1.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.19.1.2\lib\net45\FluentFTP.dll</HintPath>
<Reference Include="FluentFTP, Version=19.1.3.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.19.1.3\lib\net45\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="MegaApiClient, Version=1.6.3.409, Culture=neutral, PublicKeyToken=0480d311efbeb4e2, processorArchitecture=MSIL">
<HintPath>..\packages\MegaApiClient.1.6.3-master-409\lib\net46\MegaApiClient.dll</HintPath>
<Reference Include="MegaApiClient, Version=1.6.3.424, Culture=neutral, PublicKeyToken=0480d311efbeb4e2, processorArchitecture=MSIL">
<HintPath>..\packages\MegaApiClient.1.6.3\lib\net46\MegaApiClient.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
@ -115,6 +115,7 @@
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel.Web" />

View file

@ -1,11 +1,9 @@
/* https://github.com/matthewburnett */
using Newtonsoft.Json;
using ShareX.HelpersLib;
using ShareX.UploadersLib.Properties;
using System.Collections.Generic;
using System.Drawing;
using System.Web;
using System.Windows.Forms;
namespace ShareX.UploadersLib.URLShorteners
@ -16,7 +14,7 @@ public class FirebaseDynamicLinksURLShortenerService : URLShortenerService
public override Icon ServiceIcon => Resources.Firebase;
public override bool CheckConfig(UploadersConfig config)
public override bool CheckConfig(UploadersConfig config)
{
return !string.IsNullOrEmpty(config.FirebaseWebAPIKey) && !string.IsNullOrEmpty(config.FirebaseDynamicLinkDomain);
}
@ -34,23 +32,29 @@ public override URLShortener CreateShortener(UploadersConfig config, TaskReferen
public override TabPage GetUploadersConfigTabPage(UploadersConfigForm form) => form.tpFirebaseDynamicLinks;
}
public class FirebaseRequest
{
public DynamicLinkInfo dynamicLinkInfo { get; set; }
public Suffix suffix { get; set; }
}
public class DynamicLinkInfo
{
public string dynamicLinkDomain { get; set; }
public string link { get; set; }
}
public class Suffix
{
public string option { get; set; }
}
public class FirebaseResponse
{
public string shortLink { get; set; }
public string previewLink { get; set; }
}
public class FirebaseRequest
{
public string longDynamicLink { get; set; }
public FirebaseRequestSuffix suffix { get; set; }
}
public class FirebaseRequestSuffix
{
public string option { get; set; }
}
public sealed class FirebaseDynamicLinksURLShortener : URLShortener
{
public string WebAPIKey { get; set; }
@ -61,9 +65,16 @@ public override UploadResult ShortenURL(string url)
{
UploadResult result = new UploadResult { URL = url };
string RequestUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks";
string longDynamicLink = URLHelpers.ForcePrefix(DynamicLinkDomain + ".app.goo.gl/?link=" + HttpUtility.UrlEncode(url));
string option;
FirebaseRequest request = new FirebaseRequest
{
dynamicLinkInfo = new DynamicLinkInfo
{
dynamicLinkDomain = DynamicLinkDomain + ".app.goo.gl",
link = url
}
};
string requesturl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks";
Dictionary<string, string> args = new Dictionary<string, string>
{
@ -72,24 +83,15 @@ public override UploadResult ShortenURL(string url)
if (IsShort)
{
option = "SHORT";
}
else
{
option = "UNGUESSABLE";
}
FirebaseRequest request = new FirebaseRequest
{
longDynamicLink = longDynamicLink,
suffix = new FirebaseRequestSuffix
request.suffix = new Suffix
{
option = option
}
};
option = "SHORT"
};
}
string json = JsonConvert.SerializeObject(request);
result.Response = SendRequest(HttpMethod.POST, RequestUrl, json, ContentTypeJSON, args);
string requestjson = JsonConvert.SerializeObject(request);
result.Response = SendRequest(HttpMethod.POST, requesturl, requestjson, ContentTypeJSON, args);
result.ShortenedURL = JsonConvert.DeserializeObject<FirebaseResponse>(result.Response).shortLink;
return result;

View file

@ -441,7 +441,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
public string FirebaseWebAPIKey = "";
public string FirebaseDynamicLinkDomain = "";
public bool FirebaseIsShort = true;
public bool FirebaseIsShort = false;
#endregion Firebase Dynamic Links

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluentFTP" version="19.1.2" targetFramework="net462" />
<package id="MegaApiClient" version="1.6.3-master-409" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="FluentFTP" version="19.1.3" targetFramework="net462" />
<package id="MegaApiClient" version="1.6.3" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
<package id="SSH.NET" version="2016.1.0" targetFramework="net462" />
</packages>

View file

@ -98,7 +98,7 @@
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
<package id="ZXing.Net" version="0.16.2" targetFramework="net462" />
</packages>