Working on removing obsolete code, updated dependencies.

This commit is contained in:
Robin 2018-06-05 10:08:33 +02:00
commit bf0c23f812
57 changed files with 761 additions and 1776 deletions

View file

@ -32,6 +32,7 @@ using System.Net.Http.Headers;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.HttpExtensions; using Dapplo.HttpExtensions;
using Dapplo.HttpExtensions.OAuth; using Dapplo.HttpExtensions.OAuth;
@ -56,6 +57,7 @@ namespace Greenshot.Addon.Box
private static readonly LogSource Log = new LogSource(); private static readonly LogSource Log = new LogSource();
private readonly IBoxConfiguration _boxConfiguration; private readonly IBoxConfiguration _boxConfiguration;
private readonly IBoxLanguage _boxLanguage; private readonly IBoxLanguage _boxLanguage;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly INetworkConfiguration _networkConfiguration; private readonly INetworkConfiguration _networkConfiguration;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly OAuth2Settings _oauth2Settings; private readonly OAuth2Settings _oauth2Settings;
@ -67,11 +69,13 @@ namespace Greenshot.Addon.Box
IGreenshotLanguage greenshotLanguage, IGreenshotLanguage greenshotLanguage,
IBoxConfiguration boxConfiguration, IBoxConfiguration boxConfiguration,
IBoxLanguage boxLanguage, IBoxLanguage boxLanguage,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory,
INetworkConfiguration networkConfiguration, INetworkConfiguration networkConfiguration,
IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage) IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage)
{ {
_boxConfiguration = boxConfiguration; _boxConfiguration = boxConfiguration;
_boxLanguage = boxLanguage; _boxLanguage = boxLanguage;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_networkConfiguration = networkConfiguration; _networkConfiguration = networkConfiguration;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
@ -131,16 +135,16 @@ namespace Greenshot.Addon.Box
try try
{ {
string url; string url;
using (var pleaseWaitForm = new PleaseWaitForm("Box", _boxLanguage.CommunicationWait)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("Box", _boxLanguage.CommunicationWait, default))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
url = await UploadToBoxAsync(surfaceToUpload).ConfigureAwait(true); url = await UploadToBoxAsync(surfaceToUpload).ConfigureAwait(true);
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -94,32 +94,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -22,15 +22,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -29,6 +29,7 @@ using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Threading; using System.Threading;
using System.Windows; using System.Windows;
using Autofac.Features.OwnedInstances;
using Dapplo.Confluence; using Dapplo.Confluence;
using Dapplo.Confluence.Entities; using Dapplo.Confluence.Entities;
using Dapplo.Log; using Dapplo.Log;
@ -54,6 +55,7 @@ namespace Greenshot.Addon.Confluence
private static readonly Bitmap ConfluenceIcon; private static readonly Bitmap ConfluenceIcon;
private readonly IConfluenceConfiguration _confluenceConfiguration; private readonly IConfluenceConfiguration _confluenceConfiguration;
private readonly IConfluenceLanguage _confluenceLanguage; private readonly IConfluenceLanguage _confluenceLanguage;
private readonly Func<Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private IConfluenceClient _confluenceClient; private IConfluenceClient _confluenceClient;
private readonly Content _page; private readonly Content _page;
@ -80,18 +82,22 @@ namespace Greenshot.Addon.Confluence
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage, IGreenshotLanguage greenshotLanguage,
IConfluenceConfiguration confluenceConfiguration, IConfluenceConfiguration confluenceConfiguration,
IConfluenceLanguage confluenceLanguage) : base(coreConfiguration, greenshotLanguage) IConfluenceLanguage confluenceLanguage,
Func<Owned<PleaseWaitForm>> pleaseWaitFormFactory
) : base(coreConfiguration, greenshotLanguage)
{ {
_confluenceConfiguration = confluenceConfiguration; _confluenceConfiguration = confluenceConfiguration;
_confluenceLanguage = confluenceLanguage; _confluenceLanguage = confluenceLanguage;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
} }
protected ConfluenceDestination( private ConfluenceDestination(
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage, IGreenshotLanguage greenshotLanguage,
IConfluenceConfiguration confluenceConfiguration, IConfluenceConfiguration confluenceConfiguration,
IConfluenceLanguage confluenceLanguage, IConfluenceLanguage confluenceLanguage,
Content page) : this(coreConfiguration, greenshotLanguage, confluenceConfiguration, confluenceLanguage) Func<Owned<PleaseWaitForm>> pleaseWaitFormFactory,
Content page) : this(coreConfiguration, greenshotLanguage, confluenceConfiguration, confluenceLanguage, pleaseWaitFormFactory)
{ {
_page = page; _page = page;
} }
@ -125,7 +131,7 @@ namespace Greenshot.Addon.Confluence
} }
foreach (var currentPage in currentPages) foreach (var currentPage in currentPages)
{ {
yield return new ConfluenceDestination(CoreConfiguration, GreenshotLanguage, _confluenceConfiguration, _confluenceLanguage, currentPage); yield return new ConfluenceDestination(CoreConfiguration, GreenshotLanguage, _confluenceConfiguration, _confluenceLanguage, _pleaseWaitFormFactory, currentPage);
} }
} }
@ -180,10 +186,13 @@ namespace Greenshot.Addon.Confluence
errorMessage = null; errorMessage = null;
try try
{ {
// TODO: Create content // TODO: Create content
new PleaseWaitForm().ShowAndWait(Description, _confluenceLanguage.CommunicationWait, using (var ownedPleaseWaitForm = _pleaseWaitFormFactory())
() => _confluenceClient.Attachment.AttachAsync(page.Id, surfaceToUpload, filename, null, "image/" + _confluenceConfiguration.UploadFormat.ToString().ToLower()) {
); ownedPleaseWaitForm.Value.ShowAndWait(Description, _confluenceLanguage.CommunicationWait,
() => _confluenceClient.Attachment.AttachAsync(page.Id, surfaceToUpload, filename, null,
"image/" + _confluenceConfiguration.UploadFormat.ToString().ToLower()));
}
Log.Debug().WriteLine("Uploaded to Confluence."); Log.Debug().WriteLine("Uploaded to Confluence.");
if (!_confluenceConfiguration.CopyWikiMarkupForImageToClipboard) if (!_confluenceConfiguration.CopyWikiMarkupForImageToClipboard)
{ {

View file

@ -116,32 +116,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -24,15 +24,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" /> <package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -32,6 +32,7 @@ using System.Net.Http.Headers;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.HttpExtensions; using Dapplo.HttpExtensions;
using Dapplo.HttpExtensions.OAuth; using Dapplo.HttpExtensions.OAuth;
@ -61,6 +62,7 @@ namespace Greenshot.Addon.Dropbox
private readonly IDropboxConfiguration _dropboxPluginConfiguration; private readonly IDropboxConfiguration _dropboxPluginConfiguration;
private readonly IDropboxLanguage _dropboxLanguage; private readonly IDropboxLanguage _dropboxLanguage;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private OAuth2Settings _oAuth2Settings; private OAuth2Settings _oAuth2Settings;
private IHttpBehaviour _oAuthHttpBehaviour; private IHttpBehaviour _oAuthHttpBehaviour;
@ -70,14 +72,16 @@ namespace Greenshot.Addon.Dropbox
INetworkConfiguration networkConfiguration, INetworkConfiguration networkConfiguration,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage,
) : base(coreConfiguration, greenshotLanguage) Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory
) : base(coreConfiguration, greenshotLanguage)
{ {
_dropboxPluginConfiguration = dropboxPluginConfiguration; _dropboxPluginConfiguration = dropboxPluginConfiguration;
_dropboxLanguage = dropboxLanguage; _dropboxLanguage = dropboxLanguage;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_oAuth2Settings = new OAuth2Settings _oAuth2Settings = new OAuth2Settings
{ {
AuthorizationUri = DropboxApiUri. AuthorizationUri = DropboxApiUri.
AppendSegments("1", "oauth2", "authorize"). AppendSegments("1", "oauth2", "authorize").
@ -143,9 +147,9 @@ namespace Greenshot.Addon.Dropbox
try try
{ {
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
using (var pleaseWaitForm = new PleaseWaitForm("Dropbox", _dropboxLanguage.CommunicationWait, cancellationTokenSource)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("Dropbox", _dropboxLanguage.CommunicationWait, cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
var filename = surfaceToUpload.GenerateFilename(CoreConfiguration, _dropboxPluginConfiguration); var filename = surfaceToUpload.GenerateFilename(CoreConfiguration, _dropboxPluginConfiguration);
@ -162,7 +166,7 @@ namespace Greenshot.Addon.Dropbox
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }
} }

View file

@ -106,32 +106,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -22,15 +22,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -100,32 +100,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -20,14 +20,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -34,6 +34,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml.Linq; using System.Xml.Linq;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.HttpExtensions; using Dapplo.HttpExtensions;
using Dapplo.HttpExtensions.Extensions; using Dapplo.HttpExtensions.Extensions;
@ -52,6 +53,9 @@ using Greenshot.Gfx;
namespace Greenshot.Addon.Flickr namespace Greenshot.Addon.Flickr
{ {
/// <summary>
/// This defines the flickr destination
/// </summary>
[Destination("Flickr")] [Destination("Flickr")]
public class FlickrDestination : AbstractDestination public class FlickrDestination : AbstractDestination
{ {
@ -60,6 +64,7 @@ namespace Greenshot.Addon.Flickr
private readonly IFlickrConfiguration _flickrConfiguration; private readonly IFlickrConfiguration _flickrConfiguration;
private readonly IFlickrLanguage _flickrLanguage; private readonly IFlickrLanguage _flickrLanguage;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly OAuth1Settings _oAuthSettings; private readonly OAuth1Settings _oAuthSettings;
private readonly OAuth1HttpBehaviour _oAuthHttpBehaviour; private readonly OAuth1HttpBehaviour _oAuthHttpBehaviour;
private const string FlickrFarmUrl = "https://farm{0}.staticflickr.com/{1}/{2}_{3}.jpg"; private const string FlickrFarmUrl = "https://farm{0}.staticflickr.com/{1}/{2}_{3}.jpg";
@ -80,14 +85,16 @@ namespace Greenshot.Addon.Flickr
INetworkConfiguration networkConfiguration, INetworkConfiguration networkConfiguration,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage,
) : base(coreConfiguration, greenshotLanguage) Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory
) : base(coreConfiguration, greenshotLanguage)
{ {
_flickrConfiguration = flickrConfiguration; _flickrConfiguration = flickrConfiguration;
_flickrLanguage = flickrLanguage; _flickrLanguage = flickrLanguage;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_oAuthSettings = new OAuth1Settings _oAuthSettings = new OAuth1Settings
{ {
Token = flickrConfiguration, Token = flickrConfiguration,
ClientId = flickrConfiguration.ClientId, ClientId = flickrConfiguration.ClientId,
@ -151,16 +158,16 @@ namespace Greenshot.Addon.Flickr
{ {
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
using (var pleaseWaitForm = new PleaseWaitForm("Flickr", _flickrLanguage.CommunicationWait, cancellationTokenSource)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("Flickr", _flickrLanguage.CommunicationWait, cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
uploadUrl = await UploadToFlickrAsync(surface, captureDetails.Title); uploadUrl = await UploadToFlickrAsync(surface, captureDetails.Title, cancellationTokenSource.Token);
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -103,32 +103,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -21,14 +21,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -32,6 +32,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml; using System.Xml;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.HttpExtensions; using Dapplo.HttpExtensions;
using Dapplo.HttpExtensions.OAuth; using Dapplo.HttpExtensions.OAuth;
@ -57,6 +58,7 @@ namespace Greenshot.Addon.GooglePhotos
private readonly IGooglePhotosLanguage _googlePhotosLanguage; private readonly IGooglePhotosLanguage _googlePhotosLanguage;
private readonly INetworkConfiguration _networkConfiguration; private readonly INetworkConfiguration _networkConfiguration;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly OAuth2Settings _oAuth2Settings; private readonly OAuth2Settings _oAuth2Settings;
public GooglePhotosDestination( public GooglePhotosDestination(
@ -65,15 +67,17 @@ namespace Greenshot.Addon.GooglePhotos
INetworkConfiguration networkConfiguration, INetworkConfiguration networkConfiguration,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory
) : base(coreConfiguration, greenshotLanguage) ) : base(coreConfiguration, greenshotLanguage)
{ {
_googlePhotosConfiguration = googlePhotosConfiguration; _googlePhotosConfiguration = googlePhotosConfiguration;
_googlePhotosLanguage = googlePhotosLanguage; _googlePhotosLanguage = googlePhotosLanguage;
_networkConfiguration = networkConfiguration; _networkConfiguration = networkConfiguration;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_oAuth2Settings = new OAuth2Settings _oAuth2Settings = new OAuth2Settings
{ {
AuthorizationUri = new Uri("https://accounts.google.com").AppendSegments("o", "oauth2", "auth"). AuthorizationUri = new Uri("https://accounts.google.com").AppendSegments("o", "oauth2", "auth").
ExtendQuery(new Dictionary<string, string> ExtendQuery(new Dictionary<string, string>
@ -121,21 +125,21 @@ namespace Greenshot.Addon.GooglePhotos
return exportInformation; return exportInformation;
} }
public async Task<string> Upload(ICaptureDetails captureDetails, ISurface surfaceToUpload) private async Task<string> Upload(ICaptureDetails captureDetails, ISurface surfaceToUpload)
{ {
try try
{ {
string url; string url;
using (var pleaseWaitForm = new PleaseWaitForm("GooglePhotos", _googlePhotosLanguage.CommunicationWait)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("GooglePhotos", _googlePhotosLanguage.CommunicationWait, default))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
url = await UploadToPicasa(surfaceToUpload).ConfigureAwait(true); url = await UploadToPicasa(surfaceToUpload).ConfigureAwait(true);
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }
@ -160,7 +164,7 @@ namespace Greenshot.Addon.GooglePhotos
/// <param name="progress"></param> /// <param name="progress"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
public async Task<string> UploadToPicasa(ISurface surface, IProgress<int> progress = null, CancellationToken token = default) private async Task<string> UploadToPicasa(ISurface surface, IProgress<int> progress = null, CancellationToken token = default)
{ {
string filename = surface.GenerateFilename(CoreConfiguration, _googlePhotosConfiguration); string filename = surface.GenerateFilename(CoreConfiguration, _googlePhotosConfiguration);

View file

@ -89,32 +89,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -21,14 +21,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -111,32 +111,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="MahApps.Metro, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="MahApps.Metro, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.1.6.4\lib\net46\MahApps.Metro.dll</HintPath> <HintPath>..\packages\MahApps.Metro.1.6.4\lib\net46\MahApps.Metro.dll</HintPath>

View file

@ -28,6 +28,7 @@ using System.Drawing;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.Log; using Dapplo.Log;
using Dapplo.Windows.Extensions; using Dapplo.Windows.Extensions;
@ -55,6 +56,7 @@ namespace Greenshot.Addon.Imgur
private readonly IImgurLanguage _imgurLanguage; private readonly IImgurLanguage _imgurLanguage;
private readonly ImgurApi _imgurApi; private readonly ImgurApi _imgurApi;
private readonly ImgurHistoryViewModel _imgurHistoryViewModel; private readonly ImgurHistoryViewModel _imgurHistoryViewModel;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
public ImgurDestination( public ImgurDestination(
@ -64,12 +66,14 @@ namespace Greenshot.Addon.Imgur
IImgurLanguage imgurLanguage, IImgurLanguage imgurLanguage,
ImgurApi imgurApi, ImgurApi imgurApi,
ImgurHistoryViewModel imgurHistoryViewModel, ImgurHistoryViewModel imgurHistoryViewModel,
IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage) Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory,
IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage)
{ {
_imgurConfiguration = imgurConfiguration; _imgurConfiguration = imgurConfiguration;
_imgurLanguage = imgurLanguage; _imgurLanguage = imgurLanguage;
_imgurApi = imgurApi; _imgurApi = imgurApi;
_imgurHistoryViewModel = imgurHistoryViewModel; _imgurHistoryViewModel = imgurHistoryViewModel;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
} }
@ -114,9 +118,9 @@ namespace Greenshot.Addon.Imgur
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
// TODO: Replace the form // TODO: Replace the form
using (var pleaseWaitForm = new PleaseWaitForm("Imgur", _imgurLanguage.CommunicationWait, cancellationTokenSource)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("Imgur", _imgurLanguage.CommunicationWait, cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
imgurImage = await _imgurApi.UploadToImgurAsync(surfaceToUpload, captureDetails.Title, null, cancellationTokenSource.Token).ConfigureAwait(true); imgurImage = await _imgurApi.UploadToImgurAsync(surfaceToUpload, captureDetails.Title, null, cancellationTokenSource.Token).ConfigureAwait(true);
@ -141,7 +145,7 @@ namespace Greenshot.Addon.Imgur
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -23,15 +23,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="MahApps.Metro" version="1.6.4" targetFramework="net46" /> <package id="MahApps.Metro" version="1.6.4" targetFramework="net46" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />

View file

@ -114,32 +114,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -57,6 +57,7 @@ namespace Greenshot.Addon.Jira
private readonly JiraConnector _jiraConnector; private readonly JiraConnector _jiraConnector;
private readonly IWindowManager _windowManager; private readonly IWindowManager _windowManager;
private readonly Func<Owned<JiraViewModel>> _jiraViewModelFactory; private readonly Func<Owned<JiraViewModel>> _jiraViewModelFactory;
private readonly Func<Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly IJiraConfiguration _jiraConfiguration; private readonly IJiraConfiguration _jiraConfiguration;
private readonly IJiraLanguage _jiraLanguage; private readonly IJiraLanguage _jiraLanguage;
@ -66,7 +67,8 @@ namespace Greenshot.Addon.Jira
IJiraLanguage jiraLanguage, IJiraLanguage jiraLanguage,
JiraConnector jiraConnector, JiraConnector jiraConnector,
Func<Owned<JiraViewModel>> jiraViewModelFactory, Func<Owned<JiraViewModel>> jiraViewModelFactory,
IWindowManager windowManager, Func<Owned<PleaseWaitForm>> pleaseWaitFormFactory,
IWindowManager windowManager,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage
@ -77,19 +79,21 @@ namespace Greenshot.Addon.Jira
_jiraConnector = jiraConnector; _jiraConnector = jiraConnector;
_windowManager = windowManager; _windowManager = windowManager;
_jiraViewModelFactory = jiraViewModelFactory; _jiraViewModelFactory = jiraViewModelFactory;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
} }
protected JiraDestination(IJiraConfiguration jiraConfiguration, private JiraDestination(IJiraConfiguration jiraConfiguration,
IJiraLanguage jiraLanguage, IJiraLanguage jiraLanguage,
JiraConnector jiraConnector, JiraConnector jiraConnector,
Func<Owned<JiraViewModel>> jiraViewModelFactory, Func<Owned<JiraViewModel>> jiraViewModelFactory,
IWindowManager windowManager, Func<Owned<PleaseWaitForm>> pleaseWaitFormFactory,
IWindowManager windowManager,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
Issue jiraIssue, Issue jiraIssue,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage
) : this(jiraConfiguration, jiraLanguage, jiraConnector, jiraViewModelFactory, windowManager, resourceProvider, coreConfiguration, greenshotLanguage) ) : this(jiraConfiguration, jiraLanguage, jiraConnector, jiraViewModelFactory, pleaseWaitFormFactory, windowManager, resourceProvider, coreConfiguration, greenshotLanguage)
{ {
_jiraIssue = jiraIssue; _jiraIssue = jiraIssue;
} }
@ -159,7 +163,7 @@ namespace Greenshot.Addon.Jira
foreach (var jiraDetails in _jiraConnector.RecentJiras) foreach (var jiraDetails in _jiraConnector.RecentJiras)
{ {
yield return new JiraDestination( yield return new JiraDestination(
_jiraConfiguration, _jiraLanguage, _jiraConnector, _jiraViewModelFactory, _jiraConfiguration, _jiraLanguage, _jiraConnector, _jiraViewModelFactory, _pleaseWaitFormFactory,
_windowManager, _resourceProvider, jiraDetails.JiraIssue, CoreConfiguration, GreenshotLanguage); _windowManager, _resourceProvider, jiraDetails.JiraIssue, CoreConfiguration, GreenshotLanguage);
} }
} }
@ -169,21 +173,24 @@ namespace Greenshot.Addon.Jira
var exportInformation = new ExportInformation(Designation, Description); var exportInformation = new ExportInformation(Designation, Description);
if (_jiraIssue != null) if (_jiraIssue != null)
{ {
try try
{ {
// Run upload in the background // Run upload in the background
new PleaseWaitForm().ShowAndWait(Description, _jiraLanguage.CommunicationWait, using (var ownedPleaseWaitForm = _pleaseWaitFormFactory())
async () => {
{ ownedPleaseWaitForm.Value.ShowAndWait(Description, _jiraLanguage.CommunicationWait,
await _jiraConnector.AttachAsync(_jiraIssue.Key, surface).ConfigureAwait(true); async () =>
surface.UploadUrl = _jiraConnector.JiraBaseUri.AppendSegments("browse", _jiraIssue.Key).AbsoluteUri; {
} await _jiraConnector.AttachAsync(_jiraIssue.Key, surface).ConfigureAwait(true);
); surface.UploadUrl = _jiraConnector.JiraBaseUri.AppendSegments("browse", _jiraIssue.Key)
Log.Debug().WriteLine("Uploaded to Jira {0}", _jiraIssue.Key); .AbsoluteUri;
exportInformation.ExportMade = true; });
exportInformation.Uri = surface.UploadUrl; }
} Log.Debug().WriteLine("Uploaded to Jira {0}", _jiraIssue.Key);
catch (Exception e) exportInformation.ExportMade = true;
exportInformation.Uri = surface.UploadUrl;
}
catch (Exception e)
{ {
MessageBox.Show(_jiraLanguage.UploadFailure + " " + e.Message); MessageBox.Show(_jiraLanguage.UploadFailure + " " + e.Message);
} }
@ -200,17 +207,23 @@ namespace Greenshot.Addon.Jira
{ {
surface.UploadUrl = _jiraConnector.JiraBaseUri.AppendSegments("browse", jiraViewModel.Value.JiraIssue.Key).AbsoluteUri; surface.UploadUrl = _jiraConnector.JiraBaseUri.AppendSegments("browse", jiraViewModel.Value.JiraIssue.Key).AbsoluteUri;
// Run upload in the background // Run upload in the background
new PleaseWaitForm().ShowAndWait(Description, _jiraLanguage.CommunicationWait, using (var ownedPleaseWaitForm = _pleaseWaitFormFactory())
async () => {
{ ownedPleaseWaitForm.Value.ShowAndWait(Description, _jiraLanguage.CommunicationWait,
await _jiraConnector.AttachAsync(jiraViewModel.Value.JiraIssue.Key, surface, jiraViewModel.Value.Filename).ConfigureAwait(true); async () =>
if (!string.IsNullOrEmpty(jiraViewModel.Value.Comment))
{ {
await _jiraConnector.AddCommentAsync(jiraViewModel.Value.JiraIssue.Key, jiraViewModel.Value.Comment).ConfigureAwait(true); await _jiraConnector.AttachAsync(jiraViewModel.Value.JiraIssue.Key, surface,
jiraViewModel.Value.Filename).ConfigureAwait(true);
if (!string.IsNullOrEmpty(jiraViewModel.Value.Comment))
{
await _jiraConnector.AddCommentAsync(jiraViewModel.Value.JiraIssue.Key,
jiraViewModel.Value.Comment).ConfigureAwait(true);
}
} }
} );
); }
Log.Debug().WriteLine("Uploaded to Jira {0}", jiraViewModel.Value.JiraIssue.Key); Log.Debug().WriteLine("Uploaded to Jira {0}", jiraViewModel.Value.JiraIssue.Key);
exportInformation.ExportMade = true; exportInformation.ExportMade = true;
exportInformation.Uri = surface.UploadUrl; exportInformation.Uri = surface.UploadUrl;

View file

@ -24,15 +24,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" /> <package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="Svg" version="2.3.0" targetFramework="net46" /> <package id="Svg" version="2.3.0" targetFramework="net46" />

View file

@ -32,6 +32,7 @@ using System.Drawing.Imaging;
using System.IO; using System.IO;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms; using System.Windows.Forms;
using Dapplo.HttpExtensions;
using Dapplo.Ini; using Dapplo.Ini;
using Dapplo.Log; using Dapplo.Log;
using Dapplo.Windows.Common.Extensions; using Dapplo.Windows.Common.Extensions;
@ -1999,12 +2000,34 @@ namespace Greenshot.Addon.LegacyEditor.Drawing
if (e.Data.GetDataPresent("Text")) if (e.Data.GetDataPresent("Text"))
{ {
var possibleUrl = ClipboardHelper.GetText(e.Data); var possibleUrl = ClipboardHelper.GetText(e.Data);
try
{
if (possibleUrl != null && possibleUrl.StartsWith("http"))
{
var uri = new Uri(possibleUrl);
using (var image = uri.GetAsAsync<Bitmap>().Result)
{
if (image != null)
{
AddImageContainer(image, mouse.X, mouse.Y);
return;
}
}
}
}
catch (Exception ex)
{
Log.Error().WriteLine(ex, "Couldn't download url {0}", possibleUrl);
}
// Test if it's an url and try to download the image so we have it in the original form // Test if it's an url and try to download the image so we have it in the original form
if (possibleUrl != null && possibleUrl.StartsWith("http")) if (possibleUrl != null && possibleUrl.StartsWith("http"))
{ {
using (var image = NetworkHelper.DownloadBitmap(possibleUrl)) var uri = new Uri(possibleUrl);
{
if (image != null) using (var image = uri.GetAsAsync<Bitmap>().Result)
{
if (image != null)
{ {
AddImageContainer(image, mouse.X, mouse.Y); AddImageContainer(image, mouse.X, mouse.Y);
return; return;

View file

@ -61,6 +61,9 @@
<Reference Include="Dapplo.CaliburnMicro.Translations, Version=1.0.46.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.CaliburnMicro.Translations, Version=1.0.46.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.CaliburnMicro.Translations.1.0.46\lib\net46\Dapplo.CaliburnMicro.Translations.dll</HintPath> <HintPath>..\packages\Dapplo.CaliburnMicro.Translations.1.0.46\lib\net46\Dapplo.CaliburnMicro.Translations.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.HttpExtensions, Version=0.8.35.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.HttpExtensions.0.8.35\lib\net46\Dapplo.HttpExtensions.dll</HintPath>
</Reference>
<Reference Include="Dapplo.Ini, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Ini, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Ini.0.5.28\lib\net45\Dapplo.Ini.dll</HintPath> <HintPath>..\packages\Dapplo.Ini.0.5.28\lib\net45\Dapplo.Ini.dll</HintPath>
</Reference> </Reference>
@ -76,35 +79,35 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Clipboard, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Clipboard, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.60\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.61\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
@ -114,11 +117,13 @@
<Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Reactive, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL"> <Reference Include="System.Reactive, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reactive.4.0.0\lib\net46\System.Reactive.dll</HintPath> <HintPath>..\packages\System.Reactive.4.0.0\lib\net46\System.Reactive.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Runtime.Caching" /> <Reference Include="System.Runtime.Caching" />
<Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Windows" /> <Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">

View file

@ -14,20 +14,21 @@
<package id="Dapplo.CaliburnMicro.Menu" version="1.0.46" targetFramework="net46" /> <package id="Dapplo.CaliburnMicro.Menu" version="1.0.46" targetFramework="net46" />
<package id="Dapplo.CaliburnMicro.Security" version="1.0.46" targetFramework="net46" /> <package id="Dapplo.CaliburnMicro.Security" version="1.0.46" targetFramework="net46" />
<package id="Dapplo.CaliburnMicro.Translations" version="1.0.46" targetFramework="net46" /> <package id="Dapplo.CaliburnMicro.Translations" version="1.0.46" targetFramework="net46" />
<package id="Dapplo.HttpExtensions" version="0.8.35" targetFramework="net46" />
<package id="Dapplo.Ini" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Ini" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.InterfaceImpl" version="0.2.12" targetFramework="net46" /> <package id="Dapplo.InterfaceImpl" version="0.2.12" targetFramework="net46" />
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Clipboard" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Clipboard" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -106,32 +106,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="MahApps.Metro, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="MahApps.Metro, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.1.6.4\lib\net46\MahApps.Metro.dll</HintPath> <HintPath>..\packages\MahApps.Metro.1.6.4\lib\net46\MahApps.Metro.dll</HintPath>

View file

@ -24,6 +24,7 @@ using System.Drawing;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.Log; using Dapplo.Log;
using Greenshot.Addon.Lutim.Entities; using Greenshot.Addon.Lutim.Entities;
@ -46,19 +47,22 @@ namespace Greenshot.Addon.Lutim {
private readonly ILutimLanguage _lutimLanguage; private readonly ILutimLanguage _lutimLanguage;
private readonly LutimApi _lutimApi; private readonly LutimApi _lutimApi;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
public LutimDestination(ILutimConfiguration lutimConfiguration, public LutimDestination(ILutimConfiguration lutimConfiguration,
ILutimLanguage lutimLanguage, ILutimLanguage lutimLanguage,
LutimApi lutimApi, LutimApi lutimApi,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory
) : base(coreConfiguration, greenshotLanguage) ) : base(coreConfiguration, greenshotLanguage)
{ {
_lutimConfiguration = lutimConfiguration; _lutimConfiguration = lutimConfiguration;
_lutimLanguage = lutimLanguage; _lutimLanguage = lutimLanguage;
_lutimApi = lutimApi; _lutimApi = lutimApi;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
} }
public override string Description => _lutimLanguage.UploadMenuItem; public override string Description => _lutimLanguage.UploadMenuItem;
@ -90,9 +94,7 @@ namespace Greenshot.Addon.Lutim {
/// <summary> /// <summary>
/// Upload the capture to lutim /// Upload the capture to lutim
/// </summary> /// </summary>
/// <param name="captureDetails">ICaptureDetails</param>
/// <param name="surfaceToUpload">ISurface</param> /// <param name="surfaceToUpload">ISurface</param>
/// <param name="uploadUrl">out string for the url</param>
/// <returns>true if the upload succeeded</returns> /// <returns>true if the upload succeeded</returns>
private async Task<string> Upload(ISurface surfaceToUpload) private async Task<string> Upload(ISurface surfaceToUpload)
{ {
@ -102,9 +104,9 @@ namespace Greenshot.Addon.Lutim {
LutimInfo lutimInfo; LutimInfo lutimInfo;
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
using (var pleaseWaitForm = new PleaseWaitForm("Lutim", _lutimLanguage.CommunicationWait, cancellationTokenSource)) using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("Lutim", _lutimLanguage.CommunicationWait, cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
lutimInfo = await _lutimApi.UploadToLutim(surfaceToUpload).ConfigureAwait(true); lutimInfo = await _lutimApi.UploadToLutim(surfaceToUpload).ConfigureAwait(true);
@ -121,7 +123,7 @@ namespace Greenshot.Addon.Lutim {
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -22,15 +22,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="MahApps.Metro" version="1.6.4" targetFramework="net46" /> <package id="MahApps.Metro" version="1.6.4" targetFramework="net46" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />

View file

@ -97,32 +97,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -19,14 +19,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -84,35 +84,35 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Com, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Com, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Com.0.5.60\lib\net46\Dapplo.Windows.Com.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Com.0.5.61\lib\net46\Dapplo.Windows.Com.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <Reference Include="Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View file

@ -20,16 +20,16 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Com" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Com" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" /> <package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -31,6 +31,7 @@ using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.HttpExtensions; using Dapplo.HttpExtensions;
using Dapplo.HttpExtensions.JsonNet; using Dapplo.HttpExtensions.JsonNet;
@ -60,6 +61,7 @@ namespace Greenshot.Addon.OneDrive
private readonly IOneDriveConfiguration _oneDriveConfiguration; private readonly IOneDriveConfiguration _oneDriveConfiguration;
private readonly IOneDriveLanguage _oneDriveLanguage; private readonly IOneDriveLanguage _oneDriveLanguage;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly OAuth2Settings _oauth2Settings; private readonly OAuth2Settings _oauth2Settings;
private static readonly Uri GraphUri = new Uri("https://graph.microsoft.com"); private static readonly Uri GraphUri = new Uri("https://graph.microsoft.com");
private static readonly Uri OneDriveUri = GraphUri.AppendSegments("v1.0", "me", "drive"); private static readonly Uri OneDriveUri = GraphUri.AppendSegments("v1.0", "me", "drive");
@ -72,6 +74,7 @@ namespace Greenshot.Addon.OneDrive
IOneDriveLanguage oneDriveLanguage, IOneDriveLanguage oneDriveLanguage,
INetworkConfiguration networkConfiguration, INetworkConfiguration networkConfiguration,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory,
ICoreConfiguration coreConfiguration, ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage IGreenshotLanguage greenshotLanguage
) : base(coreConfiguration, greenshotLanguage) ) : base(coreConfiguration, greenshotLanguage)
@ -79,6 +82,7 @@ namespace Greenshot.Addon.OneDrive
_oneDriveConfiguration = oneDriveConfiguration; _oneDriveConfiguration = oneDriveConfiguration;
_oneDriveLanguage = oneDriveLanguage; _oneDriveLanguage = oneDriveLanguage;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
// Configure the OAuth2 settings for OneDrive communication // Configure the OAuth2 settings for OneDrive communication
_oauth2Settings = new OAuth2Settings _oauth2Settings = new OAuth2Settings
{ {
@ -147,10 +151,9 @@ namespace Greenshot.Addon.OneDrive
Uri response; Uri response;
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
using (var pleaseWaitForm = new PleaseWaitForm("OneDrive plug-in", _oneDriveLanguage.CommunicationWait, using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("OneDrive", _oneDriveLanguage.CommunicationWait, cancellationTokenSource))
cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
var oneDriveResponse = await UploadToOneDriveAsync(_oauth2Settings, surfaceToUpload, null, cancellationTokenSource.Token); var oneDriveResponse = await UploadToOneDriveAsync(_oauth2Settings, surfaceToUpload, null, cancellationTokenSource.Token);
@ -168,7 +171,7 @@ namespace Greenshot.Addon.OneDrive
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -103,32 +103,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />

View file

@ -21,14 +21,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -29,6 +29,7 @@ using System.Drawing;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Autofac.Features.OwnedInstances;
using Dapplo.Addons; using Dapplo.Addons;
using Dapplo.Log; using Dapplo.Log;
using Greenshot.Addon.Tfs.Entities; using Greenshot.Addon.Tfs.Entities;
@ -53,6 +54,7 @@ namespace Greenshot.Addon.Tfs
private readonly ITfsConfiguration _tfsConfiguration; private readonly ITfsConfiguration _tfsConfiguration;
private readonly ITfsLanguage _tfsLanguage; private readonly ITfsLanguage _tfsLanguage;
private readonly TfsClient _tfsClient; private readonly TfsClient _tfsClient;
private readonly Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> _pleaseWaitFormFactory;
private readonly IResourceProvider _resourceProvider; private readonly IResourceProvider _resourceProvider;
private readonly WorkItem _workItem; private readonly WorkItem _workItem;
@ -62,11 +64,13 @@ namespace Greenshot.Addon.Tfs
ITfsConfiguration tfsConfiguration, ITfsConfiguration tfsConfiguration,
ITfsLanguage tfsLanguage, ITfsLanguage tfsLanguage,
TfsClient tfsClient, TfsClient tfsClient,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory,
IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage) IResourceProvider resourceProvider) : base(coreConfiguration, greenshotLanguage)
{ {
_tfsConfiguration = tfsConfiguration; _tfsConfiguration = tfsConfiguration;
_tfsLanguage = tfsLanguage; _tfsLanguage = tfsLanguage;
_tfsClient = tfsClient; _tfsClient = tfsClient;
_pleaseWaitFormFactory = pleaseWaitFormFactory;
_resourceProvider = resourceProvider; _resourceProvider = resourceProvider;
} }
@ -76,8 +80,9 @@ namespace Greenshot.Addon.Tfs
ITfsConfiguration tfsConfiguration, ITfsConfiguration tfsConfiguration,
ITfsLanguage tfsLanguage, ITfsLanguage tfsLanguage,
TfsClient tfsClient, TfsClient tfsClient,
Func<string, string, CancellationTokenSource, Owned<PleaseWaitForm>> pleaseWaitFormFactory,
IResourceProvider resourceProvider, IResourceProvider resourceProvider,
WorkItem workItem) :this(coreConfiguration, greenshotLanguage, tfsConfiguration, tfsLanguage, tfsClient, resourceProvider) WorkItem workItem) :this(coreConfiguration, greenshotLanguage, tfsConfiguration, tfsLanguage, tfsClient, pleaseWaitFormFactory, resourceProvider)
{ {
_workItem = workItem; _workItem = workItem;
} }
@ -108,7 +113,7 @@ namespace Greenshot.Addon.Tfs
} }
foreach (var workitem in workitems) foreach (var workitem in workitems)
{ {
yield return new TfsDestination(CoreConfiguration, GreenshotLanguage, _tfsConfiguration, _tfsLanguage, _tfsClient, _resourceProvider, workitem); yield return new TfsDestination(CoreConfiguration, GreenshotLanguage, _tfsConfiguration, _tfsLanguage, _tfsClient, _pleaseWaitFormFactory, _resourceProvider, workitem);
} }
} }
@ -171,10 +176,9 @@ namespace Greenshot.Addon.Tfs
Uri response; Uri response;
var cancellationTokenSource = new CancellationTokenSource(); var cancellationTokenSource = new CancellationTokenSource();
using (var pleaseWaitForm = new PleaseWaitForm("TFS plug-in", _tfsLanguage.CommunicationWait, using (var ownedPleaseWaitForm = _pleaseWaitFormFactory("TFS plug-in", _tfsLanguage.CommunicationWait, cancellationTokenSource))
cancellationTokenSource))
{ {
pleaseWaitForm.Show(); ownedPleaseWaitForm.Value.Show();
try try
{ {
var result = await _tfsClient.CreateAttachment(surfaceToUpload); var result = await _tfsClient.CreateAttachment(surfaceToUpload);
@ -183,7 +187,7 @@ namespace Greenshot.Addon.Tfs
} }
finally finally
{ {
pleaseWaitForm.Close(); ownedPleaseWaitForm.Value.Close();
} }
} }

View file

@ -81,32 +81,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />

View file

@ -15,14 +15,14 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
</packages> </packages>

View file

@ -24,6 +24,7 @@
using Autofac; using Autofac;
using Dapplo.Addons; using Dapplo.Addons;
using Greenshot.Addons.Components; using Greenshot.Addons.Components;
using Greenshot.Addons.Controls;
using Greenshot.Addons.ViewModels; using Greenshot.Addons.ViewModels;
namespace Greenshot.Addons namespace Greenshot.Addons
@ -40,6 +41,10 @@ namespace Greenshot.Addons
.RegisterType<DestinationHolder>() .RegisterType<DestinationHolder>()
.AsSelf(); .AsSelf();
builder
.RegisterType<PleaseWaitForm>()
.AsSelf();
base.Load(builder); base.Load(builder);
} }
} }

View file

@ -1,92 +0,0 @@
/*
* Greenshot - a free and open source screenshot tool
* Copyright (C) 2007-2018 Thomas Braun, Jens Klingen, Robin Krom
*
* For more information see: http://getgreenshot.org/
* The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
*
* 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 1 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, see <http://www.gnu.org/licenses/>.
*/
namespace Greenshot.Addons.Controls {
partial class OAuthLoginForm {
/// <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._addressTextBox = new System.Windows.Forms.TextBox();
this._browser = new ExtendedWebBrowser();
this.SuspendLayout();
//
// _addressTextBox
//
this._addressTextBox.Cursor = System.Windows.Forms.Cursors.Arrow;
this._addressTextBox.Dock = System.Windows.Forms.DockStyle.Top;
this._addressTextBox.Enabled = false;
this._addressTextBox.Location = new System.Drawing.Point(0, 0);
this._addressTextBox.Name = "addressTextBox";
this._addressTextBox.Size = new System.Drawing.Size(595, 20);
this._addressTextBox.TabIndex = 3;
this._addressTextBox.TabStop = false;
//
// _browser
//
this._browser.Dock = System.Windows.Forms.DockStyle.Fill;
this._browser.Location = new System.Drawing.Point(0, 20);
this._browser.MinimumSize = new System.Drawing.Size(100, 100);
this._browser.Name = "browser";
this._browser.Size = new System.Drawing.Size(595, 295);
this._browser.TabIndex = 4;
//
// OAuthLoginForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(595, 315);
this.Controls.Add(this._browser);
this.Controls.Add(this._addressTextBox);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "OAuthLoginForm";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox _addressTextBox;
private ExtendedWebBrowser _browser;
}
}

View file

@ -1,105 +0,0 @@
/*
* Greenshot - a free and open source screenshot tool
* Copyright (C) 2007-2018 Thomas Braun, Jens Klingen, Robin Krom
*
* For more information see: http://getgreenshot.org/
* The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
*
* 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 1 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, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Dapplo.Log;
using Dapplo.Windows.Desktop;
using Greenshot.Addons.Core;
namespace Greenshot.Addons.Controls {
/// <summary>
/// The OAuthLoginForm is used to allow the user to authorize Greenshot with an "Oauth" application
/// </summary>
public sealed partial class OAuthLoginForm : Form {
private static readonly LogSource Log = new LogSource();
private readonly string _callbackUrl;
private IDictionary<string, string> _callbackParameters;
public IDictionary<string, string> CallbackParameters => _callbackParameters;
public bool IsOk => DialogResult == DialogResult.OK;
public OAuthLoginForm(string browserTitle, Size size, string authorizationLink, string callbackUrl) {
// Make sure Greenshot uses the correct browser version
IEHelper.FixBrowserVersion(false);
_callbackUrl = callbackUrl;
// Fix for BUG-2071
if (callbackUrl.EndsWith("/"))
{
_callbackUrl = callbackUrl.Substring(0, callbackUrl.Length - 1);
}
InitializeComponent();
ClientSize = size;
Icon = GreenshotResources.GetGreenshotIcon();
Text = browserTitle;
_addressTextBox.Text = authorizationLink;
// The script errors are suppressed by using the ExtendedWebBrowser
_browser.ScriptErrorsSuppressed = false;
_browser.DocumentCompleted += Browser_DocumentCompleted;
_browser.Navigated += Browser_Navigated;
_browser.Navigating += Browser_Navigating;
_browser.Navigate(new Uri(authorizationLink));
}
/// <summary>
/// Make sure the form is visible
/// </summary>
/// <param name="e">EventArgs</param>
protected override async void OnShown(EventArgs e) {
base.OnShown(e);
await InteropWindowFactory.CreateFor(Handle).ToForegroundAsync();
}
private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
Log.Debug().WriteLine("document completed with url: {0}", _browser.Url);
CheckUrl();
}
private void Browser_Navigating(object sender, WebBrowserNavigatingEventArgs e) {
Log.Debug().WriteLine("Navigating to url: {0}", _browser.Url);
_addressTextBox.Text = e.Url.ToString();
}
private void Browser_Navigated(object sender, WebBrowserNavigatedEventArgs e) {
Log.Debug().WriteLine("Navigated to url: {0}", _browser.Url);
CheckUrl();
}
private void CheckUrl() {
if (_browser.Url.ToString().StartsWith(_callbackUrl)) {
var correctedUri = new Uri(_browser.Url.AbsoluteUri.Replace("#", "&"));
string queryParams = correctedUri.Query;
if (queryParams.Length > 0) {
queryParams = NetworkHelper.UrlDecode(queryParams);
//Store the Token and Token Secret
_callbackParameters = NetworkHelper.ParseQueryString(queryParams);
}
DialogResult = DialogResult.OK;
}
}
}
}

View file

@ -39,7 +39,9 @@ namespace Greenshot.Addons.Controls
/// </summary> /// </summary>
public sealed partial class PleaseWaitForm : Form public sealed partial class PleaseWaitForm : Form
{ {
/// <summary> private readonly IGreenshotLanguage _greenshotLanguage;
/// <summary>
/// Prevent the close-window button showing /// Prevent the close-window button showing
/// </summary> /// </summary>
private const int CP_NOCLOSE_BUTTON = 0x200; private const int CP_NOCLOSE_BUTTON = 0x200;
@ -49,16 +51,20 @@ namespace Greenshot.Addons.Controls
private readonly CancellationTokenSource _cancellationTokenSource; private readonly CancellationTokenSource _cancellationTokenSource;
private Thread _waitFor; private Thread _waitFor;
public PleaseWaitForm() public PleaseWaitForm(IGreenshotLanguage greenshotLanguage)
{ {
// _greenshotLanguage = greenshotLanguage;
//
// The InitializeComponent() call is required for Windows Forms designer support. // The InitializeComponent() call is required for Windows Forms designer support.
// //
InitializeComponent(); InitializeComponent();
Icon = GreenshotResources.GetGreenshotIcon(); Icon = GreenshotResources.GetGreenshotIcon();
} }
public PleaseWaitForm(string title, string text, CancellationTokenSource cancellationTokenSource = default) : this() public PleaseWaitForm(IGreenshotLanguage greenshotLanguage,
string title,
string text,
CancellationTokenSource cancellationTokenSource = default) : this(greenshotLanguage)
{ {
_title = title; _title = title;
_cancellationTokenSource = cancellationTokenSource; _cancellationTokenSource = cancellationTokenSource;
@ -88,7 +94,7 @@ namespace Greenshot.Addons.Controls
_title = title; _title = title;
Text = title; Text = title;
label_pleasewait.Text = text; label_pleasewait.Text = text;
cancelButton.Text = Language.GetString("CANCEL"); cancelButton.Text = _greenshotLanguage.Cancel;
Show(); Show();
await executeTask; await executeTask;
@ -107,10 +113,10 @@ namespace Greenshot.Addons.Controls
_title = title; _title = title;
Text = title; Text = title;
label_pleasewait.Text = text; label_pleasewait.Text = text;
cancelButton.Text = Language.GetString("CANCEL"); cancelButton.Text = _greenshotLanguage.Cancel;
// Make sure the form is shown. // Make sure the form is shown.
Show(); Show();
// Variable to store the exception, if one is generated, from inside the thread. // Variable to store the exception, if one is generated, from inside the thread.
Exception threadException = null; Exception threadException = null;
@ -140,6 +146,7 @@ namespace Greenshot.Addons.Controls
// Wait until finished // Wait until finished
while (!_waitFor.Join(TimeSpan.FromMilliseconds(100))) while (!_waitFor.Join(TimeSpan.FromMilliseconds(100)))
{ {
// TODO: Remove this please!!!!
Application.DoEvents(); Application.DoEvents();
} }
Log.Debug().WriteLine("Finished {0}", title); Log.Debug().WriteLine("Finished {0}", title);

View file

@ -1,913 +0,0 @@
#region Greenshot GNU General Public License
// Greenshot - a free and open source screenshot tool
// Copyright (C) 2007-2018 Thomas Braun, Jens Klingen, Robin Krom
//
// For more information see: http://getgreenshot.org/
// The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
//
// 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 1 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, see <http://www.gnu.org/licenses/>.
#endregion
#region Usings
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using Dapplo.Ini;
using Dapplo.Log;
using Greenshot.Addons.Interfaces;
using Greenshot.Addons.Interfaces.Plugin;
using Greenshot.Gfx;
#endregion
namespace Greenshot.Addons.Core
{
/// <summary>
/// HTTP Method to make sure we have the correct method
/// </summary>
public enum HTTPMethod
{
GET,
POST,
PUT,
DELETE,
HEAD
}
/// <summary>
/// Description of NetworkHelper.
/// </summary>
public static class NetworkHelper
{
private static readonly LogSource Log = new LogSource();
private static readonly ICoreConfiguration Config = IniConfig.Current.Get<ICoreConfiguration>();
static NetworkHelper()
{
try
{
// Disable certificate checking
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
}
catch (Exception ex)
{
Log.Warn().WriteLine(ex, "An error has occured while allowing self-signed certificates:");
}
}
/// <summary>
/// Download a uri response as string
/// </summary>
/// <param name="uri">An Uri to specify the download location</param>
/// <returns>string with the file content</returns>
public static string GetAsString(Uri uri)
{
return GetResponseAsString(CreateWebRequest(uri));
}
/// <summary>
/// Download the FavIcon as a Bitmap
/// </summary>
/// <param name="baseUri"></param>
/// <returns>Bitmap with the FavIcon</returns>
public static Bitmap DownloadFavIcon(Uri baseUri)
{
var url = new Uri(baseUri, new Uri("favicon.ico"));
try
{
var request = CreateWebRequest(url);
using (var response = (HttpWebResponse) request.GetResponse())
{
if (request.HaveResponse)
{
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (var image = BitmapHelper.FromStream(responseStream))
{
return image.Height > 16 && image.Width > 16 ? new Bitmap(image, 16, 16) : new Bitmap(image);
}
}
}
}
}
}
catch (Exception e)
{
Log.Error().WriteLine(e, "Problem downloading the FavIcon from: " + baseUri);
}
return null;
}
/// <summary>
/// Download the uri into a memorystream, without catching exceptions
/// </summary>
/// <param name="url">Of an image</param>
/// <returns>MemoryStream which is already seeked to 0</returns>
public static MemoryStream GetAsMemoryStream(string url)
{
var request = CreateWebRequest(url);
using (var response = (HttpWebResponse) request.GetResponse())
{
var memoryStream = new MemoryStream();
using (var responseStream = response.GetResponseStream())
{
responseStream?.CopyTo(memoryStream);
// Make sure it can be used directly
memoryStream.Seek(0, SeekOrigin.Begin);
}
return memoryStream;
}
}
/// <summary>
/// Download the uri to Bitmap
/// </summary>
/// <param name="url">Of an image</param>
/// <returns>Bitmap</returns>
public static Bitmap DownloadBitmap(string url)
{
var extensions = new StringBuilder();
foreach (var extension in BitmapHelper.StreamConverters.Keys)
{
if (string.IsNullOrEmpty(extension))
{
continue;
}
extensions.AppendFormat(@"\.{0}|", extension);
}
extensions.Length--;
var imageUrlRegex = new Regex($@"(http|https)://.*(?<extension>{extensions})");
var match = imageUrlRegex.Match(url);
try
{
using (var memoryStream = GetAsMemoryStream(url))
{
try
{
return BitmapHelper.FromStream(memoryStream, match.Success ? match.Groups["extension"]?.Value : null);
}
catch (Exception)
{
// If we arrive here, the image loading didn't work, try to see if the response has a http(s) URL to an image and just take this instead.
string content;
using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8, true))
{
content = streamReader.ReadLine();
}
if (string.IsNullOrEmpty(content))
{
throw;
}
match = imageUrlRegex.Match(content);
if (!match.Success)
{
throw;
}
using (var memoryStream2 = GetAsMemoryStream(match.Value))
{
return BitmapHelper.FromStream(memoryStream2, match.Groups["extension"]?.Value);
}
}
}
}
catch (Exception e)
{
Log.Error().WriteLine(e, "Problem downloading the image from: " + url);
}
return null;
}
/// <summary>
/// Helper method to create a web request with a lot of default settings
/// </summary>
/// <param name="uri">string with uri to connect to</param>
/// <returns>WebRequest</returns>
public static HttpWebRequest CreateWebRequest(string uri)
{
return CreateWebRequest(new Uri(uri));
}
/// <summary>
/// Helper method to create a web request with a lot of default settings
/// </summary>
/// <param name="uri">string with uri to connect to</param>
/// ///
/// <param name="method">Method to use</param>
/// <returns>WebRequest</returns>
public static HttpWebRequest CreateWebRequest(string uri, HTTPMethod method)
{
return CreateWebRequest(new Uri(uri), method);
}
/// <summary>
/// Helper method to create a web request with a lot of default settings
/// </summary>
/// <param name="uri">Uri with uri to connect to</param>
/// <param name="method">Method to use</param>
/// <returns>WebRequest</returns>
public static HttpWebRequest CreateWebRequest(Uri uri, HTTPMethod method)
{
var webRequest = CreateWebRequest(uri);
webRequest.Method = method.ToString();
return webRequest;
}
/// <summary>
/// Helper method to create a web request, eventually with proxy
/// </summary>
/// <param name="uri">Uri with uri to connect to</param>
/// <returns>WebRequest</returns>
public static HttpWebRequest CreateWebRequest(Uri uri)
{
var webRequest = (HttpWebRequest) WebRequest.Create(uri);
webRequest.Proxy = Config.UseProxy ? CreateProxy(uri) : null;
// Make sure the default credentials are available
webRequest.Credentials = CredentialCache.DefaultCredentials;
// Allow redirect, this is usually needed so that we don't get a problem when a service moves
webRequest.AllowAutoRedirect = true;
// Set default timeouts
webRequest.Timeout = Config.WebRequestTimeout * 1000;
webRequest.ReadWriteTimeout = Config.WebRequestReadWriteTimeout * 1000;
return webRequest;
}
/// <summary>
/// Create a IWebProxy Object which can be used to access the Internet
/// This method will check the configuration if the proxy is allowed to be used.
/// Usages can be found in the DownloadFavIcon or Jira and Confluence plugins
/// </summary>
/// <param name="uri"></param>
/// <returns>IWebProxy filled with all the proxy details or null if none is set/wanted</returns>
public static IWebProxy CreateProxy(Uri uri)
{
if (!Config.UseProxy)
{
return null;
}
IWebProxy proxyToUse = WebRequest.DefaultWebProxy;
if (proxyToUse != null)
{
proxyToUse.Credentials = CredentialCache.DefaultCredentials;
if (!Log.IsDebugEnabled())
{
return proxyToUse;
}
// check the proxy for the Uri
if (!proxyToUse.IsBypassed(uri))
{
var proxyUri = proxyToUse.GetProxy(uri);
if (proxyUri != null)
{
Log.Debug().WriteLine("Using proxy: " + proxyUri + " for " + uri);
}
else
{
Log.Debug().WriteLine("No proxy found!");
}
}
else
{
Log.Debug().WriteLine("Proxy bypass for: " + uri);
}
}
else
{
Log.Debug().WriteLine("No proxy found!");
}
return proxyToUse;
}
/// <summary>
/// UrlEncodes a string without the requirement for System.Web
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
// [Obsolete("Use System.Uri.EscapeDataString instead")]
public static string UrlEncode(string text)
{
if (string.IsNullOrEmpty(text))
{
return null;
}
// Sytem.Uri provides reliable parsing, but doesn't encode spaces.
return Uri.EscapeDataString(text).Replace("%20", "+");
}
/// <summary>
/// A wrapper around the EscapeDataString, as the limit is 32766 characters
/// See: http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring%28v=vs.110%29.aspx
/// </summary>
/// <param name="text"></param>
/// <returns>escaped data string</returns>
public static string EscapeDataString(string text)
{
if (string.IsNullOrEmpty(text))
{
return null;
}
var result = new StringBuilder();
var currentLocation = 0;
while (currentLocation < text.Length)
{
var process = text.Substring(currentLocation, Math.Min(16384, text.Length - currentLocation));
result.Append(Uri.EscapeDataString(process));
currentLocation = currentLocation + 16384;
}
return result.ToString();
}
/// <summary>
/// UrlDecodes a string without requiring System.Web
/// </summary>
/// <param name="text">String to decode.</param>
/// <returns>decoded string</returns>
public static string UrlDecode(string text)
{
// pre-process for + sign space formatting since System.Uri doesn't handle it
// plus literals are encoded as %2b normally so this should be safe
text = text.Replace("+", " ");
return Uri.UnescapeDataString(text);
}
/// <summary>
/// ParseQueryString without the requirement for System.Web
/// </summary>
/// <param name="queryString"></param>
/// <returns>IDictionary string, string</returns>
public static IDictionary<string, string> ParseQueryString(string queryString)
{
IDictionary<string, string> parameters = new SortedDictionary<string, string>();
// remove anything other than query string from uri
if (queryString.Contains("?"))
{
queryString = queryString.Substring(queryString.IndexOf('?') + 1);
}
foreach (var vp in Regex.Split(queryString, "&"))
{
if (string.IsNullOrEmpty(vp))
{
continue;
}
var singlePair = Regex.Split(vp, "=");
if (parameters.ContainsKey(singlePair[0]))
{
parameters.Remove(singlePair[0]);
}
parameters.Add(singlePair[0], singlePair.Length == 2 ? singlePair[1] : string.Empty);
}
return parameters;
}
/// <summary>
/// Generate the query paramters
/// </summary>
/// <param name="queryParameters">the list of query parameters</param>
/// <returns>a string with the query parameters</returns>
public static string GenerateQueryParameters(IDictionary<string, object> queryParameters)
{
if (queryParameters == null || queryParameters.Count == 0)
{
return string.Empty;
}
queryParameters = new SortedDictionary<string, object>(queryParameters);
var sb = new StringBuilder();
foreach (var key in queryParameters.Keys)
{
sb.AppendFormat(CultureInfo.InvariantCulture, "{0}={1}&", key, UrlEncode($"{queryParameters[key]}"));
}
sb.Remove(sb.Length - 1, 1);
return sb.ToString();
}
/// <summary>
/// Write Multipart Form Data directly to the HttpWebRequest
/// </summary>
/// <param name="webRequest">HttpWebRequest to write the multipart form data to</param>
/// <param name="postParameters">Parameters to include in the multipart form data</param>
public static void WriteMultipartFormData(HttpWebRequest webRequest, IDictionary<string, object> postParameters)
{
string boundary = $"----------{Guid.NewGuid():N}";
webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
using (var formDataStream = webRequest.GetRequestStream())
{
WriteMultipartFormData(formDataStream, boundary, postParameters);
}
}
/// <summary>
/// Write Multipart Form Data to the HttpListenerResponse
/// </summary>
/// <param name="response">HttpListenerResponse</param>
/// <param name="postParameters">Parameters to include in the multipart form data</param>
public static void WriteMultipartFormData(HttpListenerResponse response, IDictionary<string, object> postParameters)
{
string boundary = $"----------{Guid.NewGuid():N}";
response.ContentType = "multipart/form-data; boundary=" + boundary;
WriteMultipartFormData(response.OutputStream, boundary, postParameters);
}
/// <summary>
/// Write Multipart Form Data to a Stream, content-type should be set before this!
/// </summary>
/// <param name="formDataStream">Stream to write the multipart form data to</param>
/// <param name="boundary">String boundary for the multipart/form-data</param>
/// <param name="postParameters">Parameters to include in the multipart form data</param>
public static void WriteMultipartFormData(Stream formDataStream, string boundary, IDictionary<string, object> postParameters)
{
var needsClrf = false;
foreach (var param in postParameters)
{
// Add a CRLF to allow multiple parameters to be added.
// Skip it on the first parameter, add it to subsequent parameters.
if (needsClrf)
{
formDataStream.Write(Encoding.UTF8.GetBytes("\r\n"), 0, Encoding.UTF8.GetByteCount("\r\n"));
}
needsClrf = true;
var binaryContainer = param.Value as IBinaryContainer;
if (binaryContainer != null)
{
binaryContainer.WriteFormDataToStream(boundary, param.Key, formDataStream);
}
else
{
string postData = $"--{boundary}\r\nContent-Disposition: form-data; name=\"{param.Key}\"\r\n\r\n{param.Value}";
formDataStream.Write(Encoding.UTF8.GetBytes(postData), 0, Encoding.UTF8.GetByteCount(postData));
}
}
// Add the end of the request. Start with a newline
var footer = "\r\n--" + boundary + "--\r\n";
formDataStream.Write(Encoding.UTF8.GetBytes(footer), 0, Encoding.UTF8.GetByteCount(footer));
}
/// <summary>
/// Post the parameters "x-www-form-urlencoded"
/// </summary>
/// <param name="webRequest"></param>
/// <param name="parameters"></param>
public static void UploadFormUrlEncoded(HttpWebRequest webRequest, IDictionary<string, object> parameters)
{
webRequest.ContentType = "application/x-www-form-urlencoded";
var urlEncoded = GenerateQueryParameters(parameters);
var data = Encoding.UTF8.GetBytes(urlEncoded);
using (var requestStream = webRequest.GetRequestStream())
{
requestStream.Write(data, 0, data.Length);
}
}
/// <summary>
/// Log the headers of the WebResponse, if IsDebugEnabled
/// </summary>
/// <param name="response">WebResponse</param>
private static void DebugHeaders(WebResponse response)
{
if (!Log.IsDebugEnabled())
{
return;
}
Log.Debug().WriteLine("Debug information on the response from {0} :", response.ResponseUri);
foreach (var key in response.Headers.AllKeys)
{
Log.Debug().WriteLine("Reponse-header: {0}={1}", key, response.Headers[key]);
}
}
/// <summary>
/// Process the web response.
/// </summary>
/// <param name="webRequest">The request object.</param>
/// <returns>The response data.</returns>
/// TODO: This method should handle the StatusCode better!
public static string GetResponseAsString(HttpWebRequest webRequest)
{
return GetResponseAsString(webRequest, false);
}
/// <summary>
/// Read the response as string
/// </summary>
/// <param name="response"></param>
/// <returns>string or null</returns>
private static string GetResponseAsString(HttpWebResponse response)
{
if (response == null)
{
return null;
}
using (response)
{
var responseStream = response.GetResponseStream();
if (responseStream == null)
{
return null;
}
using (var reader = new StreamReader(responseStream, true))
{
return reader.ReadToEnd();
}
}
}
/// <summary>
/// </summary>
/// <param name="webRequest"></param>
/// <param name="alsoReturnContentOnError"></param>
/// <returns></returns>
public static string GetResponseAsString(HttpWebRequest webRequest, bool alsoReturnContentOnError)
{
string responseData = null;
HttpWebResponse response = null;
var isHttpError = false;
try
{
response = (HttpWebResponse) webRequest.GetResponse();
Log.Info().WriteLine("Response status: {0}", response.StatusCode);
isHttpError = (int) response.StatusCode >= 300;
if (isHttpError)
{
Log.Error().WriteLine("HTTP error {0}", response.StatusCode);
}
DebugHeaders(response);
responseData = GetResponseAsString(response);
if (isHttpError)
{
Log.Error().WriteLine("HTTP response {0}", responseData);
}
}
catch (WebException e)
{
response = (HttpWebResponse) e.Response;
var statusCode = HttpStatusCode.Unused;
if (response != null)
{
statusCode = response.StatusCode;
Log.Error().WriteLine("HTTP error {0}", statusCode);
var errorContent = GetResponseAsString(response);
if (alsoReturnContentOnError)
{
return errorContent;
}
Log.Error().WriteLine("Content: {0}", errorContent);
}
Log.Error().WriteLine(e, "WebException: ");
if (statusCode == HttpStatusCode.Unauthorized)
{
throw new UnauthorizedAccessException(e.Message);
}
throw;
}
finally
{
if (response != null)
{
if (isHttpError)
{
Log.Error().WriteLine("HTTP error {0} with content: {1}", response.StatusCode, responseData);
}
response.Close();
}
}
return responseData;
}
/// <summary>
/// Get LastModified for a URI
/// </summary>
/// <param name="uri">Uri</param>
/// <returns>DateTime</returns>
public static DateTime GetLastModified(Uri uri)
{
try
{
var webRequest = CreateWebRequest(uri);
webRequest.Method = HTTPMethod.HEAD.ToString();
using (var webResponse = (HttpWebResponse) webRequest.GetResponse())
{
Log.Debug().WriteLine("RSS feed was updated at {0}", webResponse.LastModified);
return webResponse.LastModified;
}
}
catch (Exception wE)
{
Log.Warn().WriteLine("Problem requesting HTTP - HEAD on uri {0}", uri);
Log.Warn().WriteLine(wE.Message);
// Pretend it is old
return DateTime.MinValue;
}
}
}
/// <summary>
/// This interface can be used to pass binary information around, like byte[] or Image
/// </summary>
public interface IBinaryContainer
{
string ContentType { get; }
string Filename { get; set; }
void WriteFormDataToStream(string boundary, string name, Stream formDataStream);
void WriteToStream(Stream formDataStream);
string ToBase64String(Base64FormattingOptions formattingOptions);
byte[] ToByteArray();
void Upload(HttpWebRequest webRequest);
}
/// <summary>
/// A container to supply files to a Multi-part form data upload
/// </summary>
public class ByteContainer : IBinaryContainer
{
private readonly byte[] _file;
private readonly int _fileSize;
public ByteContainer(byte[] file) : this(file, null)
{
}
public ByteContainer(byte[] file, string filename) : this(file, filename, null)
{
}
public ByteContainer(byte[] file, string filename, string contenttype) : this(file, filename, contenttype, 0)
{
}
public ByteContainer(byte[] file, string filename, string contenttype, int filesize)
{
_file = file;
Filename = filename;
ContentType = contenttype;
_fileSize = filesize == 0 ? file.Length : filesize;
}
/// <summary>
/// Create a Base64String from the byte[]
/// </summary>
/// <returns>string</returns>
public string ToBase64String(Base64FormattingOptions formattingOptions)
{
return Convert.ToBase64String(_file, 0, _fileSize, formattingOptions);
}
/// <summary>
/// Returns the initial byte-array which was supplied when creating the FileParameter
/// </summary>
/// <returns>byte[]</returns>
public byte[] ToByteArray()
{
return _file;
}
/// <summary>
/// Write Multipart Form Data directly to the HttpWebRequest response stream
/// </summary>
/// <param name="boundary">Separator</param>
/// <param name="name">name</param>
/// <param name="formDataStream">Stream to write to</param>
public void WriteFormDataToStream(string boundary, string name, Stream formDataStream)
{
// Add just the first part of this param, since we will write the file data directly to the Stream
string header =
$"--{boundary}\r\nContent-Disposition: form-data; name=\"{name}\"; filename=\"{Filename ?? name}\";\r\nContent-Type: {ContentType ?? "application/octet-stream"}\r\n\r\n";
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
// Write the file data directly to the Stream, rather than serializing it to a string.
formDataStream.Write(_file, 0, _fileSize);
}
/// <summary>
/// A plain "write data to stream"
/// </summary>
/// <param name="dataStream">Stream to write to</param>
public void WriteToStream(Stream dataStream)
{
// Write the file data directly to the Stream, rather than serializing it to a string.
dataStream.Write(_file, 0, _fileSize);
}
/// <summary>
/// Upload the file to the webrequest
/// </summary>
/// <param name="webRequest"></param>
public void Upload(HttpWebRequest webRequest)
{
webRequest.ContentType = ContentType;
webRequest.ContentLength = _fileSize;
using (var requestStream = webRequest.GetRequestStream())
{
WriteToStream(requestStream);
}
}
public string ContentType { get; }
public string Filename { get; set; }
}
/// <summary>
/// A container to supply images to a Multi-part form data upload
/// </summary>
public class BitmapContainer : IBinaryContainer
{
private readonly Bitmap _bitmap;
private readonly SurfaceOutputSettings _outputSettings;
public BitmapContainer(Bitmap bitmap, SurfaceOutputSettings outputSettings, string filename)
{
_bitmap = bitmap;
_outputSettings = outputSettings;
Filename = filename;
}
/// <summary>
/// Create a Base64String from the image by saving it to a memory stream and converting it.
/// Should be avoided if possible, as this uses a lot of memory.
/// </summary>
/// <returns>string</returns>
public string ToBase64String(Base64FormattingOptions formattingOptions)
{
using (var stream = new MemoryStream())
{
ImageOutput.SaveToStream(_bitmap, null, stream, _outputSettings);
return Convert.ToBase64String(stream.GetBuffer(), 0, (int) stream.Length, formattingOptions);
}
}
/// <summary>
/// Create a byte[] from the image by saving it to a memory stream.
/// Should be avoided if possible, as this uses a lot of memory.
/// </summary>
/// <returns>byte[]</returns>
public byte[] ToByteArray()
{
using (var stream = new MemoryStream())
{
ImageOutput.SaveToStream(_bitmap, null, stream, _outputSettings);
return stream.ToArray();
}
}
/// <summary>
/// Write Multipart Form Data directly to the HttpWebRequest response stream
/// </summary>
/// <param name="boundary">Separator</param>
/// <param name="name">Name of the thing/file</param>
/// <param name="formDataStream">Stream to write to</param>
public void WriteFormDataToStream(string boundary, string name, Stream formDataStream)
{
// Add just the first part of this param, since we will write the file data directly to the Stream
string header = $"--{boundary}\r\nContent-Disposition: form-data; name=\"{name}\"; filename=\"{Filename ?? name}\";\r\nContent-Type: {ContentType}\r\n\r\n";
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
ImageOutput.SaveToStream(_bitmap, null, formDataStream, _outputSettings);
}
/// <summary>
/// A plain "write data to stream"
/// </summary>
/// <param name="dataStream"></param>
public void WriteToStream(Stream dataStream)
{
// Write the file data directly to the Stream, rather than serializing it to a string.
ImageOutput.SaveToStream(_bitmap, null, dataStream, _outputSettings);
}
/// <summary>
/// Upload the image to the webrequest
/// </summary>
/// <param name="webRequest"></param>
public void Upload(HttpWebRequest webRequest)
{
webRequest.ContentType = "image/" + _outputSettings.Format;
using (var requestStream = webRequest.GetRequestStream())
{
WriteToStream(requestStream);
}
}
public string ContentType => "image/" + _outputSettings.Format;
public string Filename { get; set; }
}
/// <summary>
/// A container to supply surfaces to a Multi-part form data upload
/// </summary>
public class SurfaceContainer : IBinaryContainer
{
private readonly SurfaceOutputSettings _outputSettings;
private readonly ISurface _surface;
public SurfaceContainer(ISurface surface, SurfaceOutputSettings outputSettings, string filename)
{
_surface = surface;
_outputSettings = outputSettings;
Filename = filename;
}
/// <summary>
/// Create a Base64String from the Surface by saving it to a memory stream and converting it.
/// Should be avoided if possible, as this uses a lot of memory.
/// </summary>
/// <returns>string</returns>
public string ToBase64String(Base64FormattingOptions formattingOptions)
{
using (var stream = new MemoryStream())
{
ImageOutput.SaveToStream(_surface, stream, _outputSettings);
return Convert.ToBase64String(stream.GetBuffer(), 0, (int) stream.Length, formattingOptions);
}
}
/// <summary>
/// Create a byte[] from the image by saving it to a memory stream.
/// Should be avoided if possible, as this uses a lot of memory.
/// </summary>
/// <returns>byte[]</returns>
public byte[] ToByteArray()
{
using (var stream = new MemoryStream())
{
ImageOutput.SaveToStream(_surface, stream, _outputSettings);
return stream.ToArray();
}
}
/// <summary>
/// Write Multipart Form Data directly to the HttpWebRequest response stream
/// </summary>
/// <param name="boundary">Multipart separator</param>
/// <param name="name">Name of the thing</param>
/// <param name="formDataStream">Stream to write to</param>
public void WriteFormDataToStream(string boundary, string name, Stream formDataStream)
{
// Add just the first part of this param, since we will write the file data directly to the Stream
string header = $"--{boundary}\r\nContent-Disposition: form-data; name=\"{name}\"; filename=\"{Filename ?? name}\";\r\nContent-Type: {ContentType}\r\n\r\n";
formDataStream.Write(Encoding.UTF8.GetBytes(header), 0, Encoding.UTF8.GetByteCount(header));
ImageOutput.SaveToStream(_surface, formDataStream, _outputSettings);
}
/// <summary>
/// A plain "write data to stream"
/// </summary>
/// <param name="dataStream"></param>
public void WriteToStream(Stream dataStream)
{
// Write the file data directly to the Stream, rather than serializing it to a string.
ImageOutput.SaveToStream(_surface, dataStream, _outputSettings);
}
/// <summary>
/// Upload the Surface as image to the webrequest
/// </summary>
/// <param name="webRequest"></param>
public void Upload(HttpWebRequest webRequest)
{
webRequest.ContentType = ContentType;
using (var requestStream = webRequest.GetRequestStream())
{
WriteToStream(requestStream);
}
}
public string ContentType => "image/" + _outputSettings.Format;
public string Filename { get; set; }
}
}

View file

@ -89,38 +89,38 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Clipboard, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Clipboard, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.60\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.61\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Icons, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Icons, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Icons.0.5.60\lib\net46\Dapplo.Windows.Icons.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Icons.0.5.61\lib\net46\Dapplo.Windows.Icons.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />
@ -307,12 +307,6 @@
<Compile Include="Controls\GreenshotToolDropDownButton.cs"> <Compile Include="Controls\GreenshotToolDropDownButton.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Controls\OAuthLoginForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\OAuthLoginForm.Designer.cs">
<DependentUpon>OAuthLoginForm.cs</DependentUpon>
</Compile>
<Compile Include="Controls\PleaseWaitForm.cs"> <Compile Include="Controls\PleaseWaitForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -348,7 +342,6 @@
<Compile Include="Core\GreenshotResources.cs" /> <Compile Include="Core\GreenshotResources.cs" />
<Compile Include="Core\IEHelper.cs" /> <Compile Include="Core\IEHelper.cs" />
<Compile Include="Core\Language.cs" /> <Compile Include="Core\Language.cs" />
<Compile Include="Core\NetworkHelper.cs" />
<Compile Include="Core\ObjectExtensions.cs" /> <Compile Include="Core\ObjectExtensions.cs" />
<Compile Include="Core\PluginUtils.cs" /> <Compile Include="Core\PluginUtils.cs" />
<Compile Include="Core\WindowCapture.cs" /> <Compile Include="Core\WindowCapture.cs" />

View file

@ -22,17 +22,17 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Clipboard" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Clipboard" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Icons" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Icons" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net46" />
<package id="Svg" version="2.3.0" targetFramework="net46" /> <package id="Svg" version="2.3.0" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />

View file

@ -64,32 +64,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />

View file

@ -15,15 +15,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Svg" version="2.3.0" targetFramework="net46" /> <package id="Svg" version="2.3.0" targetFramework="net46" />
<package id="System.Reactive" version="4.0.0" targetFramework="net46" /> <package id="System.Reactive" version="4.0.0" targetFramework="net46" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net46" /> <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net46" />

View file

@ -69,32 +69,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="JeremyAnsel.ColorQuant, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a5c614433db515df, processorArchitecture=MSIL"> <Reference Include="JeremyAnsel.ColorQuant, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a5c614433db515df, processorArchitecture=MSIL">
<HintPath>..\packages\JeremyAnsel.ColorQuant.1.0.55\lib\net40\JeremyAnsel.ColorQuant.dll</HintPath> <HintPath>..\packages\JeremyAnsel.ColorQuant.1.0.55\lib\net40\JeremyAnsel.ColorQuant.dll</HintPath>

View file

@ -18,15 +18,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="JeremyAnsel.ColorQuant" version="1.0.55" targetFramework="net46" /> <package id="JeremyAnsel.ColorQuant" version="1.0.55" targetFramework="net46" />
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.6.0" targetFramework="net46" developmentDependency="true" /> <package id="Microsoft.CodeAnalysis.Analyzers" version="2.6.0" targetFramework="net46" developmentDependency="true" />
<package id="Microsoft.CodeAnalysis.Common" version="2.8.2" targetFramework="net46" /> <package id="Microsoft.CodeAnalysis.Common" version="2.8.2" targetFramework="net46" />

View file

@ -101,32 +101,32 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CodeAnalysis, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.CodeAnalysis, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.CodeAnalysis.Common.2.8.2\lib\netstandard1.3\Microsoft.CodeAnalysis.dll</HintPath> <HintPath>..\packages\Microsoft.CodeAnalysis.Common.2.8.2\lib\netstandard1.3\Microsoft.CodeAnalysis.dll</HintPath>

View file

@ -20,15 +20,15 @@
<package id="Dapplo.Language" version="0.5.28" targetFramework="net46" /> <package id="Dapplo.Language" version="0.5.28" targetFramework="net46" />
<package id="Dapplo.Log" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Microsoft.CodeAnalysis.Analyzers" version="2.6.0" targetFramework="net46" developmentDependency="true" /> <package id="Microsoft.CodeAnalysis.Analyzers" version="2.6.0" targetFramework="net46" developmentDependency="true" />
<package id="Microsoft.CodeAnalysis.Common" version="2.8.2" targetFramework="net46" /> <package id="Microsoft.CodeAnalysis.Common" version="2.8.2" targetFramework="net46" />
<package id="Microsoft.CodeAnalysis.CSharp" version="2.8.2" targetFramework="net46" /> <package id="Microsoft.CodeAnalysis.CSharp" version="2.8.2" targetFramework="net46" />

View file

@ -30,11 +30,11 @@ using Dapplo.Addons;
using Dapplo.CaliburnMicro; using Dapplo.CaliburnMicro;
using Dapplo.Log; using Dapplo.Log;
using Dapplo.Windows.Common; using Dapplo.Windows.Common;
using Greenshot.Addons;
using Greenshot.Addons.Components; using Greenshot.Addons.Components;
using Greenshot.Addons.Controls; using Greenshot.Addons.Controls;
using Greenshot.Addons.Core; using Greenshot.Addons.Core;
using Greenshot.Addons.Interfaces.Plugin; using Greenshot.Addons.Interfaces.Plugin;
using Greenshot.Configuration;
using Greenshot.Forms; using Greenshot.Forms;
using Greenshot.Helpers; using Greenshot.Helpers;
@ -48,13 +48,18 @@ namespace Greenshot.Components
{ {
private static readonly LogSource Log = new LogSource(); private static readonly LogSource Log = new LogSource();
private readonly ICoreConfiguration _coreConfiguration; private readonly ICoreConfiguration _coreConfiguration;
private readonly IGreenshotLanguage _greenshotLanguage;
private readonly WindowHandle _windowHandle; private readonly WindowHandle _windowHandle;
private static HotkeyHandler _instance; private static HotkeyHandler _instance;
public HotkeyHandler(ICoreConfiguration coreConfiguration, WindowHandle windowHandle) public HotkeyHandler(
ICoreConfiguration coreConfiguration,
IGreenshotLanguage greenshotLanguage,
WindowHandle windowHandle)
{ {
_instance = this; _instance = this;
_coreConfiguration = coreConfiguration; _coreConfiguration = coreConfiguration;
_greenshotLanguage = greenshotLanguage;
_windowHandle = windowHandle; _windowHandle = windowHandle;
} }
@ -263,20 +268,21 @@ namespace Greenshot.Components
private bool HandleFailedHotkeyRegistration(string failedKeys) private bool HandleFailedHotkeyRegistration(string failedKeys)
{ {
var success = false; var success = false;
var warningTitle = Language.GetString(LangKey.warning); var warningTitle = _greenshotLanguage.Warning;
var message = string.Format(Language.GetString(LangKey.warning_hotkeys), failedKeys, IsOneDriveBlockingHotkey() ? " (OneDrive)" : ""); var message = string.Format(_greenshotLanguage.WarningHotkeys, failedKeys, IsOneDriveBlockingHotkey() ? " (OneDrive)" : "");
var dr = MessageBox.Show(MainForm.Instance, message, warningTitle, MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation); var dialogResult = MessageBox.Show(MainForm.Instance, message, warningTitle, MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation);
if (dr == DialogResult.Retry) switch (dialogResult)
{ {
Log.Debug().WriteLine("Re-trying to register hotkeys"); case DialogResult.Retry:
HotkeyControl.UnregisterHotkeys(); Log.Debug().WriteLine("Re-trying to register hotkeys");
success = RegisterHotkeys(false); HotkeyControl.UnregisterHotkeys();
} success = RegisterHotkeys(false);
else if (dr == DialogResult.Ignore) break;
{ case DialogResult.Ignore:
Log.Debug().WriteLine("Ignoring failed hotkey registration"); Log.Debug().WriteLine("Ignoring failed hotkey registration");
HotkeyControl.UnregisterHotkeys(); HotkeyControl.UnregisterHotkeys();
success = RegisterHotkeys(true); success = RegisterHotkeys(true);
break;
} }
return success; return success;
} }

View file

@ -74,6 +74,7 @@ namespace Greenshot.Forms
private static readonly LogSource Log = new LogSource(); private static readonly LogSource Log = new LogSource();
private readonly ICoreConfiguration _coreConfiguration; private readonly ICoreConfiguration _coreConfiguration;
private readonly IWindowManager _windowManager; private readonly IWindowManager _windowManager;
private readonly IGreenshotLanguage _greenshotLanguage;
private readonly Func<Owned<ConfigViewModel>> _configViewModelFactory; private readonly Func<Owned<ConfigViewModel>> _configViewModelFactory;
private readonly Func<Owned<AboutForm>> _aboutFormFactory; private readonly Func<Owned<AboutForm>> _aboutFormFactory;
@ -95,6 +96,7 @@ namespace Greenshot.Forms
{ {
_coreConfiguration = coreConfiguration; _coreConfiguration = coreConfiguration;
_windowManager = windowManager; _windowManager = windowManager;
_greenshotLanguage = greenshotLanguage;
_configViewModelFactory = configViewModelFactory; _configViewModelFactory = configViewModelFactory;
_aboutFormFactory = aboutFormFactory; _aboutFormFactory = aboutFormFactory;
_destinationHolder = destinationHolder; _destinationHolder = destinationHolder;
@ -148,8 +150,7 @@ namespace Greenshot.Forms
{ {
notifyIcon.BalloonTipClicked += BalloonTipClicked; notifyIcon.BalloonTipClicked += BalloonTipClicked;
notifyIcon.BalloonTipClosed += BalloonTipClosed; notifyIcon.BalloonTipClosed += BalloonTipClosed;
notifyIcon.ShowBalloonTip(2000, "Greenshot", notifyIcon.ShowBalloonTip(2000, "Greenshot", string.Format(_greenshotLanguage.TooltipFirststart, HotkeyControl.GetLocalizedHotkeyStringFromString(_coreConfiguration.RegionHotkey)), ToolTipIcon.Info);
Language.GetFormattedString(LangKey.tooltip_firststart, HotkeyControl.GetLocalizedHotkeyStringFromString(_coreConfiguration.RegionHotkey)), ToolTipIcon.Info);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -602,7 +603,7 @@ namespace Greenshot.Forms
} }
var allScreensBounds = WindowCapture.GetScreenBounds(); var allScreensBounds = WindowCapture.GetScreenBounds();
var captureScreenItem = new ToolStripMenuItem(Language.GetString(LangKey.contextmenu_capturefullscreen_all)); var captureScreenItem = new ToolStripMenuItem(_greenshotLanguage.ContextmenuCapturefullscreenAll);
captureScreenItem.Click += (o, args) => BeginInvoke((MethodInvoker) (() => CaptureHelper.CaptureFullscreen(false, ScreenCaptureMode.FullScreen))); captureScreenItem.Click += (o, args) => BeginInvoke((MethodInvoker) (() => CaptureHelper.CaptureFullscreen(false, ScreenCaptureMode.FullScreen)));
captureScreenMenuItem.DropDownItems.Add(captureScreenItem); captureScreenMenuItem.DropDownItems.Add(captureScreenItem);
foreach (var screen in Screen.AllScreens) foreach (var screen in Screen.AllScreens)
@ -611,19 +612,19 @@ namespace Greenshot.Forms
var deviceAlignment = ""; var deviceAlignment = "";
if (screen.Bounds.Top == allScreensBounds.Top && screen.Bounds.Bottom != allScreensBounds.Bottom) if (screen.Bounds.Top == allScreensBounds.Top && screen.Bounds.Bottom != allScreensBounds.Bottom)
{ {
deviceAlignment += " " + Language.GetString(LangKey.contextmenu_capturefullscreen_top); deviceAlignment += " " + _greenshotLanguage.ContextmenuCapturefullscreenTop;
} }
else if (screen.Bounds.Top != allScreensBounds.Top && screen.Bounds.Bottom == allScreensBounds.Bottom) else if (screen.Bounds.Top != allScreensBounds.Top && screen.Bounds.Bottom == allScreensBounds.Bottom)
{ {
deviceAlignment += " " + Language.GetString(LangKey.contextmenu_capturefullscreen_bottom); deviceAlignment += " " + _greenshotLanguage.ContextmenuCapturefullscreenBottom;
} }
if (screen.Bounds.Left == allScreensBounds.Left && screen.Bounds.Right != allScreensBounds.Right) if (screen.Bounds.Left == allScreensBounds.Left && screen.Bounds.Right != allScreensBounds.Right)
{ {
deviceAlignment += " " + Language.GetString(LangKey.contextmenu_capturefullscreen_left); deviceAlignment += " " + _greenshotLanguage.ContextmenuCapturefullscreenLeft;
} }
else if (screen.Bounds.Left != allScreensBounds.Left && screen.Bounds.Right == allScreensBounds.Right) else if (screen.Bounds.Left != allScreensBounds.Left && screen.Bounds.Right == allScreensBounds.Right)
{ {
deviceAlignment += " " + Language.GetString(LangKey.contextmenu_capturefullscreen_right); deviceAlignment += " " + _greenshotLanguage.ContextmenuCapturefullscreenRight;
} }
captureScreenItem = new ToolStripMenuItem(deviceAlignment); captureScreenItem = new ToolStripMenuItem(deviceAlignment);
captureScreenItem.Click += (o, args) => BeginInvoke((MethodInvoker) (() => CaptureHelper.CaptureRegion(false, screenToCapture.Bounds))); captureScreenItem.Click += (o, args) => BeginInvoke((MethodInvoker) (() => CaptureHelper.CaptureRegion(false, screenToCapture.Bounds)));
@ -903,7 +904,7 @@ namespace Greenshot.Forms
// For the capture mousecursor option // For the capture mousecursor option
var captureMouseItem = new ToolStripMenuSelectListItem var captureMouseItem = new ToolStripMenuSelectListItem
{ {
Text = Language.GetString("settings_capture_mousepointer"), Text = _greenshotLanguage.SettingsCaptureMousepointer,
Checked = _coreConfiguration.CaptureMousepointer, Checked = _coreConfiguration.CaptureMousepointer,
CheckOnClick = true CheckOnClick = true
}; };
@ -917,7 +918,7 @@ namespace Greenshot.Forms
// screenshot destination // screenshot destination
selectList = new ToolStripMenuSelectList("destinations", true) selectList = new ToolStripMenuSelectList("destinations", true)
{ {
Text = Language.GetString(LangKey.settings_destination) Text = _greenshotLanguage.SettingsDestination
}; };
// Working with IDestination: // Working with IDestination:
foreach (var destination in _destinationHolder.SortedActiveDestinations) foreach (var destination in _destinationHolder.SortedActiveDestinations)
@ -933,7 +934,7 @@ namespace Greenshot.Forms
// Capture Modes // Capture Modes
selectList = new ToolStripMenuSelectList("capturemodes", false) selectList = new ToolStripMenuSelectList("capturemodes", false)
{ {
Text = Language.GetString(LangKey.settings_window_capture_mode) Text = _greenshotLanguage.SettingsWindowCaptureMode
}; };
var enumTypeName = typeof(WindowCaptureModes).Name; var enumTypeName = typeof(WindowCaptureModes).Name;
foreach (WindowCaptureModes captureMode in Enum.GetValues(typeof(WindowCaptureModes))) foreach (WindowCaptureModes captureMode in Enum.GetValues(typeof(WindowCaptureModes)))
@ -947,7 +948,7 @@ namespace Greenshot.Forms
// print options // print options
selectList = new ToolStripMenuSelectList("printoptions", true) selectList = new ToolStripMenuSelectList("printoptions", true)
{ {
Text = Language.GetString(LangKey.settings_printoptions) Text = _greenshotLanguage.SettingsPrintoptions
}; };
foreach (var outputPrintIniValue in _coreConfiguration.GetIniValues().Values.Where(value => value.PropertyName.StartsWith("OutputPrint") && value.ValueType == typeof(bool) && !_coreConfiguration.IsWriteProtected(value.PropertyName))) foreach (var outputPrintIniValue in _coreConfiguration.GetIniValues().Values.Where(value => value.PropertyName.StartsWith("OutputPrint") && value.ValueType == typeof(bool) && !_coreConfiguration.IsWriteProtected(value.PropertyName)))
@ -967,7 +968,7 @@ namespace Greenshot.Forms
// effects // effects
selectList = new ToolStripMenuSelectList("effects", true) selectList = new ToolStripMenuSelectList("effects", true)
{ {
Text = Language.GetString(LangKey.settings_visualization) Text = _greenshotLanguage.SettingsVisualization
}; };
var iniValue = _coreConfiguration["PlayCameraSound"]; var iniValue = _coreConfiguration["PlayCameraSound"];

View file

@ -118,41 +118,41 @@
<Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Utils, Version=1.0.158.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath> <HintPath>..\packages\Dapplo.Utils.1.0.158\lib\net45\Dapplo.Utils.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.0.5.60\lib\net46\Dapplo.Windows.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.0.5.61\lib\net46\Dapplo.Windows.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Clipboard, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Clipboard, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.60\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Clipboard.0.5.61\lib\net46\Dapplo.Windows.Clipboard.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Common, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Common, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Common.0.5.60\lib\net46\Dapplo.Windows.Common.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Common.0.5.61\lib\net46\Dapplo.Windows.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.60\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.61\lib\net46\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Dpi, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.60\lib\net46\Dapplo.Windows.Dpi.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Dpi.0.5.61\lib\net46\Dapplo.Windows.Dpi.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Gdi32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.60\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.61\lib\net46\Dapplo.Windows.Gdi32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Icons, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Icons, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Icons.0.5.60\lib\net46\Dapplo.Windows.Icons.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Icons.0.5.61\lib\net46\Dapplo.Windows.Icons.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Input, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Input, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Input.0.5.60\lib\net46\Dapplo.Windows.Input.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Input.0.5.61\lib\net46\Dapplo.Windows.Input.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Kernel32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.60\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.61\lib\net46\Dapplo.Windows.Kernel32.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Messages, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Messages, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.60\lib\net46\Dapplo.Windows.Messages.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Messages.0.5.61\lib\net46\Dapplo.Windows.Messages.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.Multimedia, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.Multimedia, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.Multimedia.0.5.60\lib\net46\Dapplo.Windows.Multimedia.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.Multimedia.0.5.61\lib\net46\Dapplo.Windows.Multimedia.dll</HintPath>
</Reference> </Reference>
<Reference Include="Dapplo.Windows.User32, Version=0.5.60.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dapplo.Windows.User32, Version=0.5.61.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapplo.Windows.User32.0.5.60\lib\net46\Dapplo.Windows.User32.dll</HintPath> <HintPath>..\packages\Dapplo.Windows.User32.0.5.61\lib\net46\Dapplo.Windows.User32.dll</HintPath>
</Reference> </Reference>
<Reference Include="GongSolutions.Wpf.DragDrop, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="GongSolutions.Wpf.DragDrop, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\gong-wpf-dragdrop.1.1.0\lib\net46\GongSolutions.Wpf.DragDrop.dll</HintPath> <HintPath>..\packages\gong-wpf-dragdrop.1.1.0\lib\net46\GongSolutions.Wpf.DragDrop.dll</HintPath>

View file

@ -23,8 +23,10 @@
#region Usings #region Usings
using System;
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
using Dapplo.HttpExtensions;
using Dapplo.Log; using Dapplo.Log;
using Greenshot.Addons.Core; using Greenshot.Addons.Core;
@ -99,15 +101,13 @@ namespace Greenshot.Help
{ {
try try
{ {
var req = NetworkHelper.CreateWebRequest(url); var uri = new Uri(url);
using (var res = (HttpWebResponse) req.GetResponse()) var head = uri.HeadAsync().Result;
{ return HttpStatusCode.OK;
return res.StatusCode;
}
} }
catch (WebException e) catch (Exception e)
{ {
return ((HttpWebResponse) e.Response)?.StatusCode; return HttpStatusCode.NotFound;
} }
} }
} }

View file

@ -31,18 +31,18 @@
<package id="Dapplo.Log.LogFile" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log.LogFile" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Log.Loggers" version="1.2.1" targetFramework="net46" /> <package id="Dapplo.Log.Loggers" version="1.2.1" targetFramework="net46" />
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" /> <package id="Dapplo.Utils" version="1.0.158" targetFramework="net46" />
<package id="Dapplo.Windows" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Clipboard" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Clipboard" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Common" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Common" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Dpi" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Dpi" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Gdi32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Gdi32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Icons" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Icons" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Input" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Input" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Kernel32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Kernel32" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Messages" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Messages" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.Multimedia" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.Multimedia" version="0.5.61" targetFramework="net46" />
<package id="Dapplo.Windows.User32" version="0.5.60" targetFramework="net46" /> <package id="Dapplo.Windows.User32" version="0.5.61" targetFramework="net46" />
<package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" /> <package id="Fody" version="3.0.3" targetFramework="net46" developmentDependency="true" />
<package id="gong-wpf-dragdrop" version="1.1.0" targetFramework="net46" /> <package id="gong-wpf-dragdrop" version="1.1.0" targetFramework="net46" />
<package id="MahApps.Metro" version="1.6.4" targetFramework="net46" /> <package id="MahApps.Metro" version="1.6.4" targetFramework="net46" />