mirror of
https://github.com/greenshot/greenshot
synced 2025-08-25 23:56:12 -07:00
Added a prototype for a new TFS integration.
This commit is contained in:
parent
60494cbd04
commit
3bfd54bad3
20 changed files with 1212 additions and 1 deletions
34
src/Greenshot.Addon.Tfs/Entities/Attributes.cs
Normal file
34
src/Greenshot.Addon.Tfs/Entities/Attributes.cs
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class Attributes
|
||||||
|
{
|
||||||
|
[JsonProperty("comment")]
|
||||||
|
public string Comment { get; set; }
|
||||||
|
}
|
||||||
|
}
|
41
src/Greenshot.Addon.Tfs/Entities/Item.cs
Normal file
41
src/Greenshot.Addon.Tfs/Entities/Item.cs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Container for items returned from the api
|
||||||
|
/// </summary>
|
||||||
|
[JsonObject]
|
||||||
|
public class CreateAttachmentResult
|
||||||
|
{
|
||||||
|
[JsonProperty("id")]
|
||||||
|
public string id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("url")]
|
||||||
|
public Uri Url { get; set; }
|
||||||
|
}
|
||||||
|
}
|
42
src/Greenshot.Addon.Tfs/Entities/Operation.cs
Normal file
42
src/Greenshot.Addon.Tfs/Entities/Operation.cs
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Container for a test with Extension data
|
||||||
|
/// </summary>
|
||||||
|
[JsonObject]
|
||||||
|
public class Operation
|
||||||
|
{
|
||||||
|
[JsonProperty("op")]
|
||||||
|
public string OperationType { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("path")]
|
||||||
|
public string Path { get; set; }
|
||||||
|
[JsonProperty("value")]
|
||||||
|
public Value Value { get; set; }
|
||||||
|
}
|
||||||
|
}
|
41
src/Greenshot.Addon.Tfs/Entities/Value.cs
Normal file
41
src/Greenshot.Addon.Tfs/Entities/Value.cs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class Value
|
||||||
|
{
|
||||||
|
[JsonProperty("rel")]
|
||||||
|
public string Relation { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("url")]
|
||||||
|
public Uri Url { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("attributes")]
|
||||||
|
public Attributes Attributes { get; set; }
|
||||||
|
}
|
||||||
|
}
|
38
src/Greenshot.Addon.Tfs/Entities/WorkItemFields.cs
Normal file
38
src/Greenshot.Addon.Tfs/Entities/WorkItemFields.cs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class WorkItemFields
|
||||||
|
{
|
||||||
|
[JsonProperty("System.Title")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("System.WorkItemType")]
|
||||||
|
public string WorkItemType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
37
src/Greenshot.Addon.Tfs/Entities/WorkItemList.cs
Normal file
37
src/Greenshot.Addon.Tfs/Entities/WorkItemList.cs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class WorkItemList
|
||||||
|
{
|
||||||
|
[JsonProperty("count")]
|
||||||
|
public int Count { get; set; }
|
||||||
|
[JsonProperty("value")]
|
||||||
|
public IList<WorkItem> Items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
35
src/Greenshot.Addon.Tfs/Entities/WorkItemQueryResult.cs
Normal file
35
src/Greenshot.Addon.Tfs/Entities/WorkItemQueryResult.cs
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class WorkItemQueryResult
|
||||||
|
{
|
||||||
|
[JsonProperty("workItems")]
|
||||||
|
public IList<WorkItem> Items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
44
src/Greenshot.Addon.Tfs/Entities/Workitem.cs
Normal file
44
src/Greenshot.Addon.Tfs/Entities/Workitem.cs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.Entities
|
||||||
|
{
|
||||||
|
[JsonObject]
|
||||||
|
public class WorkItem
|
||||||
|
{
|
||||||
|
[JsonProperty("id")]
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("rev")]
|
||||||
|
public int Reversion { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("url")]
|
||||||
|
public Uri Url { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("fields")]
|
||||||
|
public WorkItemFields Fields { get; set; }
|
||||||
|
}
|
||||||
|
}
|
198
src/Greenshot.Addon.Tfs/Greenshot.Addon.Tfs.csproj
Normal file
198
src/Greenshot.Addon.Tfs/Greenshot.Addon.Tfs.csproj
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\CommonProject.properties" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{8B3643A5-AFED-49FF-8D66-6348FB102EB2}</ProjectGuid>
|
||||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<RootNamespace>Greenshot.Addon.Tfs</RootNamespace>
|
||||||
|
<AssemblyName>Greenshot.Addon.Tfs</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||||
|
<NoStdLib>False</NoStdLib>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
<RunPostBuildEvent>Always</RunPostBuildEvent>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<FileUpgradeFlags>
|
||||||
|
</FileUpgradeFlags>
|
||||||
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<UpgradeBackupLocation>
|
||||||
|
</UpgradeBackupLocation>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Greenshot.Gfx\Greenshot.Gfx.csproj">
|
||||||
|
<Project>{f041c685-eb96-4ed1-9ace-0f5bd836610f}</Project>
|
||||||
|
<Name>Greenshot.Gfx</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Greenshot.Addons\Greenshot.Addons.csproj">
|
||||||
|
<Project>{5B924697-4DCD-4F98-85F1-105CB84B7341}</Project>
|
||||||
|
<Name>Greenshot.Addons</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<Reference Include="Caliburn.Micro, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Caliburn.Micro.Core.3.2.0\lib\net45\Caliburn.Micro.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Caliburn.Micro.Platform, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Caliburn.Micro.3.2.0\lib\net45\Caliburn.Micro.Platform.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Caliburn.Micro.Platform.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Caliburn.Micro.3.2.0\lib\net45\Caliburn.Micro.Platform.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="CommonServiceLocator, Version=2.0.3.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\CommonServiceLocator.2.0.3\lib\net45\CommonServiceLocator.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ControlzEx, Version=3.0.2.4, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Addons, Version=0.5.56.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Addons.0.5.56\lib\net45\Dapplo.Addons.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Addons.Bootstrapper, Version=0.5.56.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Addons.Bootstrapper.0.5.56\lib\net45\Dapplo.Addons.Bootstrapper.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.0.5.28\lib\net45\Dapplo.CaliburnMicro.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro.Configuration, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.Configuration.0.5.28\lib\net45\Dapplo.CaliburnMicro.Configuration.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro.Dapp, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.Dapp.0.5.28\lib\net45\Dapplo.CaliburnMicro.Dapp.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro.Menu, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.Menu.0.5.28\lib\net45\Dapplo.CaliburnMicro.Menu.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro.Security, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.Security.0.5.28\lib\net45\Dapplo.CaliburnMicro.Security.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.CaliburnMicro.Translations, Version=0.5.28.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.CaliburnMicro.Translations.0.5.28\lib\net45\Dapplo.CaliburnMicro.Translations.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.HttpExtensions, Version=0.8.35.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.HttpExtensions.0.8.35\lib\net45\Dapplo.HttpExtensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.HttpExtensions.JsonNet, Version=0.8.35.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.HttpExtensions.JsonNet.0.8.35\lib\net45\Dapplo.HttpExtensions.JsonNet.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Ini, Version=0.5.24.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Ini.0.5.24\lib\net45\Dapplo.Ini.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.InterfaceImpl, Version=0.2.12.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.InterfaceImpl.0.2.12\lib\net45\Dapplo.InterfaceImpl.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Language, Version=0.5.24.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Language.0.5.24\lib\net45\Dapplo.Language.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Log, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Log.1.2.1\lib\net45\Dapplo.Log.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<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>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.0.5.54\lib\net45\Dapplo.Windows.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Common, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Common.0.5.54\lib\net45\Dapplo.Windows.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.DesktopWindowsManager, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.DesktopWindowsManager.0.5.54\lib\net45\Dapplo.Windows.DesktopWindowsManager.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Dpi, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Dpi.0.5.54\lib\net45\Dapplo.Windows.Dpi.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Gdi32, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Gdi32.0.5.54\lib\net45\Dapplo.Windows.Gdi32.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Input, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Input.0.5.54\lib\net45\Dapplo.Windows.Input.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Kernel32, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Kernel32.0.5.54\lib\net45\Dapplo.Windows.Kernel32.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.Messages, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.Messages.0.5.54\lib\net45\Dapplo.Windows.Messages.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Dapplo.Windows.User32, Version=0.5.54.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Dapplo.Windows.User32.0.5.54\lib\net45\Dapplo.Windows.User32.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="MahApps.Metro, Version=1.6.1.4, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MahApps.Metro.1.6.1\lib\net45\MahApps.Metro.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Core, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Reactive.Core.3.1.1\lib\net45\System.Reactive.Core.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Interfaces, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Reactive.Interfaces.3.1.1\lib\net45\System.Reactive.Interfaces.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Reactive.Linq, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Reactive.Linq.3.1.1\lib\net45\System.Reactive.Linq.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="Microsoft.VisualBasic" />
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
|
<Reference Include="System.Runtime.Caching" />
|
||||||
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.ServiceModel" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xaml" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Entities\Attributes.cs" />
|
||||||
|
<Compile Include="Entities\Item.cs" />
|
||||||
|
<Compile Include="Entities\Operation.cs" />
|
||||||
|
<Compile Include="Entities\Value.cs" />
|
||||||
|
<Compile Include="Entities\WorkItemList.cs" />
|
||||||
|
<Compile Include="Entities\WorkItemQueryResult.cs" />
|
||||||
|
<Compile Include="Entities\WorkItemFields.cs" />
|
||||||
|
<Compile Include="Entities\WorkItem.cs" />
|
||||||
|
<Compile Include="ITfsConfiguration.cs" />
|
||||||
|
<Compile Include="ITfsLanguage.cs" />
|
||||||
|
<Compile Include="TfsClient.cs" />
|
||||||
|
<Compile Include="TfsDestination.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="ViewModels\TfsConfigViewModel.cs" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Languages\language_tfsplugin-en-US.xml" />
|
||||||
|
<EmbeddedResource Include="vsts.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Page Include="Views\TfsConfigView.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent>
|
||||||
|
mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)"
|
||||||
|
copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp"
|
||||||
|
copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)Greenshot\bin\$(Configuration)\Plugins\$(ProjectName)\"
|
||||||
|
mkdir "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
|
||||||
|
copy "$(ProjectDir)Languages\*.xml" "$(SolutionDir)Greenshot\bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"
|
||||||
|
</PostBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
51
src/Greenshot.Addon.Tfs/ITfsConfiguration.cs
Normal file
51
src/Greenshot.Addon.Tfs/ITfsConfiguration.cs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#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.ComponentModel;
|
||||||
|
using Dapplo.Ini;
|
||||||
|
using Dapplo.Ini.Converters;
|
||||||
|
using Dapplo.InterfaceImpl.Extensions;
|
||||||
|
using Greenshot.Addons.Core;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs
|
||||||
|
{
|
||||||
|
[IniSection("Tfs")]
|
||||||
|
[Description("Greenshot Tfs Addon configuration")]
|
||||||
|
public interface ITfsConfiguration : IIniSection, IDestinationFileConfiguration, ITransactionalProperties, INotifyPropertyChanged
|
||||||
|
{
|
||||||
|
[Description("After upload copy OneDrive link to clipboard.")]
|
||||||
|
[DefaultValue("true")]
|
||||||
|
bool AfterUploadLinkToClipBoard { get; set; }
|
||||||
|
|
||||||
|
[Description("The URI to your TFS system.")]
|
||||||
|
Uri TfsUri { get; set; }
|
||||||
|
|
||||||
|
[TypeConverter(typeof(StringEncryptionTypeConverter))]
|
||||||
|
string ApiKey { get; set; }
|
||||||
|
}
|
||||||
|
}
|
50
src/Greenshot.Addon.Tfs/ITfsLanguage.cs
Normal file
50
src/Greenshot.Addon.Tfs/ITfsLanguage.cs
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#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.ComponentModel;
|
||||||
|
using Dapplo.Language;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs
|
||||||
|
{
|
||||||
|
[Language("Tfs")]
|
||||||
|
public interface ITfsLanguage : ILanguage, INotifyPropertyChanged
|
||||||
|
{
|
||||||
|
string CommunicationWait { get; }
|
||||||
|
|
||||||
|
string LabelUrl { get; }
|
||||||
|
|
||||||
|
string LabelApiKey { get; }
|
||||||
|
|
||||||
|
string SettingsTitle { get; }
|
||||||
|
|
||||||
|
string UploadFailure { get; }
|
||||||
|
|
||||||
|
string UploadMenuItem { get; }
|
||||||
|
|
||||||
|
string UsePageLink { get; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<language>
|
||||||
|
<resources prefix="Tfs">
|
||||||
|
<resource name="communication_wait">Communicating with TFS. Please wait...</resource>
|
||||||
|
<resource name="label_link_type">Link Type</resource>
|
||||||
|
<resource name="settings_title">TFS settings</resource>
|
||||||
|
<resource name="upload_failure">An error occured while uploading to TFS:</resource>
|
||||||
|
<resource name="upload_menu_item">Upload to TFS</resource>
|
||||||
|
<resource name="label_url">Url</resource>
|
||||||
|
<resource name="label_apikey">Api Key</resource>
|
||||||
|
</resources>
|
||||||
|
</language>
|
54
src/Greenshot.Addon.Tfs/Properties/AssemblyInfo.cs
Normal file
54
src/Greenshot.Addon.Tfs/Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#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.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
|
||||||
|
[assembly: AssemblyTitle("Greenshot.Addon.Tfs")]
|
||||||
|
[assembly: AssemblyDescription("A plugin to upload screenshots to Tfs")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Greenshot")]
|
||||||
|
[assembly: AssemblyProduct("Tfs plugin")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright (C) Greenshot 2018")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// This sets the default COM visibility of types in the assembly to invisible.
|
||||||
|
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||||
|
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The assembly version, replaced by build scripts
|
||||||
|
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyInformationalVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
186
src/Greenshot.Addon.Tfs/TfsClient.cs
Normal file
186
src/Greenshot.Addon.Tfs/TfsClient.cs
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.ComponentModel.Composition;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Dapplo.HttpExtensions;
|
||||||
|
using Dapplo.HttpExtensions.Factory;
|
||||||
|
using Dapplo.HttpExtensions.JsonNet;
|
||||||
|
using Greenshot.Addon.Tfs.Entities;
|
||||||
|
using Greenshot.Addons.Core;
|
||||||
|
using Greenshot.Addons.Extensions;
|
||||||
|
using Greenshot.Addons.Interfaces;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This capsulates the TFS api calls
|
||||||
|
/// </summary>
|
||||||
|
[Export]
|
||||||
|
public class TfsClient
|
||||||
|
{
|
||||||
|
private readonly ICoreConfiguration _coreConfiguration;
|
||||||
|
private readonly ITfsConfiguration _tfsConfiguration;
|
||||||
|
private readonly HttpBehaviour _tfsHttpBehaviour;
|
||||||
|
|
||||||
|
[ImportingConstructor]
|
||||||
|
public TfsClient(
|
||||||
|
ICoreConfiguration coreConfiguration,
|
||||||
|
ITfsConfiguration tfsConfiguration,
|
||||||
|
INetworkConfiguration networkConfiguration)
|
||||||
|
{
|
||||||
|
_coreConfiguration = coreConfiguration;
|
||||||
|
_tfsConfiguration = tfsConfiguration;
|
||||||
|
|
||||||
|
_tfsHttpBehaviour = new HttpBehaviour
|
||||||
|
{
|
||||||
|
HttpSettings = networkConfiguration,
|
||||||
|
JsonSerializer = new JsonNetJsonSerializer()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanUpdate => _tfsConfiguration.TfsUri != null && !string.IsNullOrEmpty(_tfsConfiguration.ApiKey);
|
||||||
|
public IDictionary<long, WorkItem> WorkItems { get; } = new Dictionary<long, WorkItem>();
|
||||||
|
|
||||||
|
public async Task UpdateWorkItems()
|
||||||
|
{
|
||||||
|
if (!CanUpdate)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var workItems = await GetOwnWorkitems();
|
||||||
|
foreach (var workItem in workItems.Items)
|
||||||
|
{
|
||||||
|
WorkItems[workItem.Id] = workItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve the own workitems
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>WorkItemList</returns>
|
||||||
|
public async Task<WorkItemList> GetOwnWorkitems()
|
||||||
|
{
|
||||||
|
_tfsHttpBehaviour.MakeCurrent();
|
||||||
|
Uri apiUri = _tfsConfiguration.TfsUri.AppendSegments("_apis").ExtendQuery("api-version", "3.0");
|
||||||
|
var client = HttpClientFactory.Create(_tfsConfiguration.TfsUri).SetBasicAuthorization("", _tfsConfiguration.ApiKey);
|
||||||
|
|
||||||
|
var workitemsQueryUri = apiUri.AppendSegments("wit", "wiql");
|
||||||
|
|
||||||
|
var wiql = new JObject { { "query", "Select [System.Id] FROM WorkItems WHERE [System.AssignedTo] = @me" } };
|
||||||
|
|
||||||
|
var queryResult = await client.PostAsync<HttpResponse<WorkItemQueryResult, string>>(workitemsQueryUri, wiql);
|
||||||
|
if (queryResult.HasError)
|
||||||
|
{
|
||||||
|
throw new Exception(queryResult.ErrorResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
var workItemsUri = apiUri.AppendSegments("wit", "workItems").ExtendQuery("ids", string.Join(",",queryResult.Response.Items.Select(item => item.Id)));
|
||||||
|
var result = await client.GetAsAsync<HttpResponse<WorkItemList, string>>(workItemsUri);
|
||||||
|
if (result.HasError)
|
||||||
|
{
|
||||||
|
throw new Exception(result.ErrorResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.Response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// See <a href="https://docs.microsoft.com/en-us/rest/api/vsts/wit/attachments/create">here</a>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="surface">ISurface to attach</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<CreateAttachmentResult> CreateAttachment(ISurface surface)
|
||||||
|
{
|
||||||
|
_tfsHttpBehaviour.MakeCurrent();
|
||||||
|
|
||||||
|
var client = HttpClientFactory.Create(_tfsConfiguration.TfsUri).SetBasicAuthorization("", _tfsConfiguration.ApiKey);
|
||||||
|
Uri apiUri = _tfsConfiguration.TfsUri.AppendSegments("_apis").ExtendQuery("api-version", "3.0");
|
||||||
|
|
||||||
|
var filename = surface.GenerateFilename(_coreConfiguration, _tfsConfiguration);
|
||||||
|
var attachmentUri = apiUri.AppendSegments("wit", "attachments").ExtendQuery("fileName", filename);
|
||||||
|
using (var imageStream = new MemoryStream())
|
||||||
|
{
|
||||||
|
surface.WriteToStream(imageStream, _coreConfiguration, _tfsConfiguration);
|
||||||
|
imageStream.Position = 0;
|
||||||
|
using (var content = new StreamContent(imageStream))
|
||||||
|
{
|
||||||
|
content.SetContentType("application/octet-stream");
|
||||||
|
var createAttachmentresult = await client.PostAsync<HttpResponse<CreateAttachmentResult, string>>(attachmentUri, content);
|
||||||
|
if (createAttachmentresult.HasError)
|
||||||
|
{
|
||||||
|
throw new Exception(createAttachmentresult.ErrorResponse);
|
||||||
|
}
|
||||||
|
return createAttachmentresult.Response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Link the WorkItem and the attachment that was created
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workItem">WorkItem</param>
|
||||||
|
/// <param name="attachmentResult">CreateAttachmentResult</param>
|
||||||
|
/// <param name="comment">string with optional comment</param>
|
||||||
|
public async Task LinkAttachment(WorkItem workItem, CreateAttachmentResult attachmentResult, string comment = "Attached screenshot from Greenshot")
|
||||||
|
{
|
||||||
|
_tfsHttpBehaviour.MakeCurrent();
|
||||||
|
var client = HttpClientFactory.Create(_tfsConfiguration.TfsUri).SetBasicAuthorization("", _tfsConfiguration.ApiKey);
|
||||||
|
|
||||||
|
Uri apiUri = _tfsConfiguration.TfsUri.AppendSegments("_apis").ExtendQuery("api-version", "3.0");
|
||||||
|
// https://docs.microsoft.com/en-us/rest/api/vsts/wit/work%20items/update#add_an_attachment
|
||||||
|
var linkAttachmentUri = apiUri.AppendSegments("wit", "workItems", workItem.Id);
|
||||||
|
var linkAttachmentRequest = new List<Operation>
|
||||||
|
{
|
||||||
|
new Operation
|
||||||
|
{
|
||||||
|
OperationType = "add",
|
||||||
|
Path = "/relations/-",
|
||||||
|
Value = new Value
|
||||||
|
{
|
||||||
|
Relation = "AttachedFile",
|
||||||
|
Url = attachmentResult.Url,
|
||||||
|
Attributes = new Attributes
|
||||||
|
{
|
||||||
|
Comment = comment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var content = HttpContentFactory.Create(linkAttachmentRequest);
|
||||||
|
content.SetContentType("application/json-patch+json");
|
||||||
|
var result = await client.PatchAsync<HttpResponse<string, string>>(linkAttachmentUri, content);
|
||||||
|
if (result.HasError)
|
||||||
|
{
|
||||||
|
throw new Exception(result.ErrorResponse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
193
src/Greenshot.Addon.Tfs/TfsDestination.cs
Normal file
193
src/Greenshot.Addon.Tfs/TfsDestination.cs
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
#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.ComponentModel.Composition;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using Dapplo.Addons.Bootstrapper.Resolving;
|
||||||
|
using Dapplo.Log;
|
||||||
|
using Greenshot.Addon.Tfs.Entities;
|
||||||
|
using Greenshot.Addons.Addons;
|
||||||
|
using Greenshot.Addons.Controls;
|
||||||
|
using Greenshot.Addons.Core;
|
||||||
|
using Greenshot.Addons.Interfaces;
|
||||||
|
using Greenshot.Gfx;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Description of OneDriveDestination.
|
||||||
|
/// </summary>
|
||||||
|
[Destination("Tfs")]
|
||||||
|
public class TfsDestination : AbstractDestination
|
||||||
|
{
|
||||||
|
private static readonly LogSource Log = new LogSource();
|
||||||
|
private readonly ITfsConfiguration _tfsConfiguration;
|
||||||
|
private readonly ITfsLanguage _tfsLanguage;
|
||||||
|
private readonly TfsClient _tfsClient;
|
||||||
|
private readonly WorkItem _workItem;
|
||||||
|
|
||||||
|
[ImportingConstructor]
|
||||||
|
public TfsDestination(
|
||||||
|
ITfsConfiguration tfsConfiguration,
|
||||||
|
ITfsLanguage tfsLanguage,
|
||||||
|
TfsClient tfsClient)
|
||||||
|
{
|
||||||
|
_tfsConfiguration = tfsConfiguration;
|
||||||
|
_tfsLanguage = tfsLanguage;
|
||||||
|
_tfsClient = tfsClient;
|
||||||
|
var ignoreTask = _tfsClient.UpdateWorkItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TfsDestination(
|
||||||
|
ITfsConfiguration tfsConfiguration,
|
||||||
|
ITfsLanguage tfsLanguage,
|
||||||
|
TfsClient tfsClient, WorkItem workItem) : this(tfsConfiguration, tfsLanguage, tfsClient)
|
||||||
|
{
|
||||||
|
_workItem = workItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsActive => base.IsActive && _tfsClient.CanUpdate;
|
||||||
|
public override bool IsDynamic => true;
|
||||||
|
|
||||||
|
public override IEnumerable<IDestination> DynamicDestinations()
|
||||||
|
{
|
||||||
|
var workitems = _tfsClient.WorkItems.Values;
|
||||||
|
if (workitems.Count == 0)
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
foreach (var workitem in workitems)
|
||||||
|
{
|
||||||
|
yield return new TfsDestination(_tfsConfiguration, _tfsLanguage, _tfsClient, workitem)
|
||||||
|
{
|
||||||
|
CoreConfiguration = CoreConfiguration,
|
||||||
|
GreenshotLanguage = GreenshotLanguage
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_workItem?.Fields?.Title == null)
|
||||||
|
{
|
||||||
|
return _tfsLanguage.UploadMenuItem;
|
||||||
|
}
|
||||||
|
// Format the title of this destination
|
||||||
|
return _workItem.Id + ": " + _workItem.Fields.Title.Substring(0, Math.Min(20, _workItem.Fields.Title.Length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Bitmap DisplayIcon
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// TODO: Optimize this
|
||||||
|
var embeddedResource = GetType().Assembly.FindEmbeddedResources(@".*vsts\.png").FirstOrDefault();
|
||||||
|
using (var bitmapStream = GetType().Assembly.GetEmbeddedResourceAsStream(embeddedResource))
|
||||||
|
{
|
||||||
|
return BitmapHelper.FromStream(bitmapStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task<ExportInformation> ExportCaptureAsync(bool manuallyInitiated, ISurface surface,
|
||||||
|
ICaptureDetails captureDetails)
|
||||||
|
{
|
||||||
|
if (_workItem == null)
|
||||||
|
{
|
||||||
|
return new ExportInformation(Designation, Description)
|
||||||
|
{
|
||||||
|
ExportMade = false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var uploadUrl = await Upload(_workItem, surface);
|
||||||
|
|
||||||
|
var exportInformation = new ExportInformation(Designation, Description)
|
||||||
|
{
|
||||||
|
ExportMade = uploadUrl != null,
|
||||||
|
Uri = uploadUrl?.AbsoluteUri
|
||||||
|
};
|
||||||
|
ProcessExport(exportInformation, surface);
|
||||||
|
return exportInformation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Upload the capture to Tfs
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workItem">WorkItem</param>
|
||||||
|
/// <param name="surfaceToUpload">ISurface</param>
|
||||||
|
/// <returns>Uri</returns>
|
||||||
|
private async Task<Uri> Upload(WorkItem workItem, ISurface surfaceToUpload)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Uri response;
|
||||||
|
|
||||||
|
var cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
using (var pleaseWaitForm = new PleaseWaitForm("OneDrive plug-in", _tfsLanguage.CommunicationWait,
|
||||||
|
cancellationTokenSource))
|
||||||
|
{
|
||||||
|
pleaseWaitForm.Show();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var result = await _tfsClient.CreateAttachment(surfaceToUpload);
|
||||||
|
await _tfsClient.LinkAttachment(workItem, result);
|
||||||
|
response = result.Url;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
pleaseWaitForm.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_tfsConfiguration.AfterUploadLinkToClipBoard)
|
||||||
|
{
|
||||||
|
ClipboardHelper.SetClipboardData(response.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.Error().WriteLine(e, "Error uploading.");
|
||||||
|
MessageBox.Show(_tfsLanguage.UploadFailure + " " + e.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
84
src/Greenshot.Addon.Tfs/ViewModels/TfsConfigViewModel.cs
Normal file
84
src/Greenshot.Addon.Tfs/ViewModels/TfsConfigViewModel.cs
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
#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
|
||||||
|
|
||||||
|
using System.ComponentModel.Composition;
|
||||||
|
using System.Reactive.Disposables;
|
||||||
|
using Dapplo.CaliburnMicro.Configuration;
|
||||||
|
using Dapplo.CaliburnMicro.Extensions;
|
||||||
|
using Greenshot.Addons;
|
||||||
|
using Greenshot.Addons.Core;
|
||||||
|
using Greenshot.Addons.ViewModels;
|
||||||
|
|
||||||
|
namespace Greenshot.Addon.Tfs.ViewModels
|
||||||
|
{
|
||||||
|
[Export(typeof(IConfigScreen))]
|
||||||
|
public sealed class TfsConfigViewModel : SimpleConfigScreen
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Here all disposables are registered, so we can clean the up
|
||||||
|
/// </summary>
|
||||||
|
private CompositeDisposable _disposables;
|
||||||
|
|
||||||
|
[Import]
|
||||||
|
public ITfsConfiguration TfsConfiguration { get; set; }
|
||||||
|
|
||||||
|
[Import]
|
||||||
|
public ITfsLanguage TfsLanguage { get; set; }
|
||||||
|
|
||||||
|
[Import]
|
||||||
|
public IGreenshotLanguage GreenshotLanguage { get; set; }
|
||||||
|
|
||||||
|
[Import]
|
||||||
|
public TfsClient TfsClient { get; private set; }
|
||||||
|
|
||||||
|
[Import]
|
||||||
|
public FileConfigPartViewModel FileConfigPartViewModel { get; private set; }
|
||||||
|
|
||||||
|
public override void Initialize(IConfig config)
|
||||||
|
{
|
||||||
|
FileConfigPartViewModel.DestinationFileConfiguration = TfsConfiguration;
|
||||||
|
// Prepare disposables
|
||||||
|
_disposables?.Dispose();
|
||||||
|
|
||||||
|
// Place this config viewmodel under the Destinations parent
|
||||||
|
ParentId = nameof(ConfigIds.Destinations);
|
||||||
|
|
||||||
|
// Make sure Commit/Rollback is called on the IUiConfiguration
|
||||||
|
config.Register(TfsConfiguration);
|
||||||
|
|
||||||
|
// automatically update the DisplayName
|
||||||
|
_disposables = new CompositeDisposable
|
||||||
|
{
|
||||||
|
TfsLanguage.CreateDisplayNameBinding(this, nameof(ITfsLanguage.SettingsTitle))
|
||||||
|
};
|
||||||
|
base.Initialize(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnDeactivate(bool close)
|
||||||
|
{
|
||||||
|
var ignoreTask = TfsClient.UpdateWorkItems();
|
||||||
|
_disposables.Dispose();
|
||||||
|
base.OnDeactivate(close);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
src/Greenshot.Addon.Tfs/Views/TfsConfigView.xaml
Normal file
26
src/Greenshot.Addon.Tfs/Views/TfsConfigView.xaml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<UserControl x:Class="Greenshot.Addon.Tfs.Views.TfsConfigView"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:viewModels="clr-namespace:Greenshot.Addon.Tfs.ViewModels"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DataContext="{d:DesignInstance viewModels:TfsConfigViewModel,IsDesignTimeCreatable=False}"
|
||||||
|
>
|
||||||
|
<StackPanel>
|
||||||
|
<GroupBox Header="{Binding TfsLanguage.SettingsTitle}">
|
||||||
|
<StackPanel>
|
||||||
|
<ContentControl x:Name="FileConfigPartViewModel"/>
|
||||||
|
<CheckBox IsChecked="{Binding TfsConfiguration.AfterUploadLinkToClipBoard}" Content="{Binding TfsLanguage.UsePageLink}"/>
|
||||||
|
<DockPanel LastChildFill="True">
|
||||||
|
<Label Content="{Binding TfsLanguage.LabelUrl}" Width="100" />
|
||||||
|
<TextBox Text="{Binding TfsConfiguration.TfsUri}" />
|
||||||
|
</DockPanel>
|
||||||
|
<DockPanel LastChildFill="True">
|
||||||
|
<Label Content="{Binding TfsLanguage.LabelApiKey}" Width="100" />
|
||||||
|
<TextBox Text="{Binding TfsConfiguration.ApiKey}" />
|
||||||
|
</DockPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
</UserControl>
|
34
src/Greenshot.Addon.Tfs/packages.config
Normal file
34
src/Greenshot.Addon.Tfs/packages.config
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Caliburn.Micro" version="3.2.0" targetFramework="net452" />
|
||||||
|
<package id="Caliburn.Micro.Core" version="3.2.0" targetFramework="net452" />
|
||||||
|
<package id="CommonServiceLocator" version="2.0.3" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Addons" version="0.5.56" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Addons.Bootstrapper" version="0.5.56" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro.Configuration" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro.Dapp" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro.Menu" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro.Security" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.CaliburnMicro.Translations" version="0.5.28" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.HttpExtensions" version="0.8.35" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.HttpExtensions.JsonNet" version="0.8.35" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Ini" version="0.5.24" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.InterfaceImpl" version="0.2.12" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Language" version="0.5.24" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Log" version="1.2.1" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Utils" version="1.0.158" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Common" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.DesktopWindowsManager" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Dpi" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Gdi32" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Input" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Kernel32" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.Messages" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Dapplo.Windows.User32" version="0.5.54" targetFramework="net452" />
|
||||||
|
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net452" />
|
||||||
|
<package id="System.Reactive.Core" version="3.1.1" targetFramework="net45" />
|
||||||
|
<package id="System.Reactive.Interfaces" version="3.1.1" targetFramework="net45" />
|
||||||
|
<package id="System.Reactive.Linq" version="3.1.1" targetFramework="net45" />
|
||||||
|
</packages>
|
BIN
src/Greenshot.Addon.Tfs/vsts.png
Normal file
BIN
src/Greenshot.Addon.Tfs/vsts.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.27130.2036
|
VisualStudioVersion = 15.0.27130.2027
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot", "Greenshot\Greenshot.csproj", "{CD642BF4-D815-4D67-A0B5-C69F0B8231AF}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot", "Greenshot\Greenshot.csproj", "{CD642BF4-D815-4D67-A0B5-C69F0B8231AF}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -50,6 +50,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot.Gfx.Experimental"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot.Addon.OneDrive", "Greenshot.Addon.OneDrive\Greenshot.Addon.OneDrive.csproj", "{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot.Addon.OneDrive", "Greenshot.Addon.OneDrive\Greenshot.Addon.OneDrive.csproj", "{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greenshot.Addon.Tfs", "Greenshot.Addon.Tfs\Greenshot.Addon.Tfs.csproj", "{8B3643A5-AFED-49FF-8D66-6348FB102EB2}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -222,6 +224,14 @@ Global
|
||||||
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|x86.ActiveCfg = Release|x86
|
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|x86.ActiveCfg = Release|x86
|
||||||
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|x86.Build.0 = Release|x86
|
{B35272D3-4631-4FA5-9A3E-85D70ECA9A8D}.Release|x86.Build.0 = Release|x86
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{8B3643A5-AFED-49FF-8D66-6348FB102EB2}.Release|x86.Build.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue