Index: /extensions/PiwigoLib/Piwigo.sln
===================================================================
--- /extensions/PiwigoLib/Piwigo.sln	(revision 13846)
+++ /extensions/PiwigoLib/Piwigo.sln	(revision 13847)
@@ -1,5 +1,5 @@
 ﻿
 Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+# Visual C# Express 2010
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PiwigoLib", "PiwigoLib\PiwigoLib.csproj", "{64C068C5-DBFE-4712-9081-B9100698F35C}"
 EndProject
@@ -11,4 +11,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PiwigoUpload", "PiwigoUpload\PiwigoUpload.csproj", "{CDE32E6E-52FF-41C6-ACEB-A8D2F7DDC0E2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PiwigoLivePlugIn", "PiwigoLivePlugIn\PiwigoLivePlugIn.csproj", "{5F6855A3-C6D6-40D6-A284-CEE2451125C0}"
 EndProject
 Global
@@ -68,4 +70,14 @@
 		{CDE32E6E-52FF-41C6-ACEB-A8D2F7DDC0E2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{CDE32E6E-52FF-41C6-ACEB-A8D2F7DDC0E2}.Release|x86.ActiveCfg = Release|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5F6855A3-C6D6-40D6-A284-CEE2451125C0}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoLivePlugIn.csproj
===================================================================
--- /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoLivePlugIn.csproj	(revision 13847)
+++ /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoLivePlugIn.csproj	(revision 13847)
@@ -0,0 +1,64 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5F6855A3-C6D6-40D6-A284-CEE2451125C0}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Com.Piwigo.LivePlugin.Publish</RootNamespace>
+    <AssemblyName>PiwigoLivePublishPlugIn</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.WindowsLive.PublishPlugins">
+      <HintPath>..\..\..\..\..\Program Files (x86)\Windows Live\Photo Gallery\Microsoft.WindowsLive.PublishPlugins.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="PiwigoPublishPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\PiwigoLib\PiwigoLib.csproj">
+      <Project>{64C068C5-DBFE-4712-9081-B9100698F35C}</Project>
+      <Name>PiwigoLib</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoPublishPlugin.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoPublishPlugin.cs	(revision 13847)
+++ /extensions/PiwigoLib/PiwigoLivePlugIn/PiwigoPublishPlugin.cs	(revision 13847)
@@ -0,0 +1,68 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.WindowsLive.PublishPlugins;
+
+namespace Com.Piwigo.LivePlugin.Publish
+{
+    /// <summary>
+    /// The hosting Windows Live application discovers installed publishing plug-ins by enumerating 
+    /// registry keys in the following location:
+    /// 
+    ///     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Live\PublishPlugins
+    ///     
+    /// The name of a publishing plug-in's key is not visible to the end user. Each key corresponds 
+    /// to one plug-in and contains the following values:
+    /// 
+    ///     AssemblyPath - The full path to your plug-in assembly. REG_SZ; required.
+    ///     ClassName - The fully qualified class name of your plug-in, including any namespaces. 
+    ///         REG_SZ; required.
+    ///     FriendlyName - The a display name for the plug-in; this value is displayed on the 
+    ///         Publish menu. REG_SZ; required.
+    ///     IconPath - The path and resource ID for an icon to display with your plug-in. REG_SZ; 
+    ///         optional.
+    /// 
+    /// The following provides a sample plug-in registry entry, using "Your Publishing Plug-In" as 
+    /// an example.
+    /// 
+    ///     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Live\PublishPlugins\YourPublishingPlugin]
+    ///     "AssemblyPath"="C:\\Program Files\\YourPublishingPlugin\\YourPublishingPlugIn.dll"
+    ///     "ClassName"="YourPublishingPlugin.PublishPlugin"
+    ///     "FriendlyName"="Your Publishing Plug-in"
+    ///     "IconPath"="C:\\Program Files\\YourPublishingPlugin\\YourPublishingPlugIn.dll,-32512" 
+    /// </summary>
+    public class PiwigoPublishPlugin : IPublishPlugin
+    {
+
+        public bool HasPublishResults(System.Xml.XmlDocument sessionXml)
+        {
+            throw new NotImplementedException();
+        }
+
+        public bool HasSummaryInformation(System.Xml.XmlDocument sessionXml)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void LaunchPublishResults(System.Xml.XmlDocument sessionXml)
+        {
+            throw new NotImplementedException();
+        }
+
+        public bool PublishItem(System.Windows.Forms.IWin32Window parentWindow, string mediaObjectId, System.IO.Stream stream, System.Xml.XmlDocument sessionXml, IPublishProperties publishProperties, IPublishProgressCallback callback, System.Threading.EventWaitHandle cancelEvent)
+        {
+            throw new NotImplementedException();
+        }
+
+        public bool ShowConfigurationSettings(System.Windows.Forms.IWin32Window parentWindow, System.Xml.XmlDocument sessionXml, System.Xml.XmlDocument persistXml, IPublishProperties publishProperties)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void ShowSummaryInformation(System.Windows.Forms.IWin32Window parentWindow, System.Xml.XmlDocument sessionXml)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoLivePlugIn/Properties/AssemblyInfo.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLivePlugIn/Properties/AssemblyInfo.cs	(revision 13847)
+++ /extensions/PiwigoLib/PiwigoLivePlugIn/Properties/AssemblyInfo.cs	(revision 13847)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de 
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("PiwigoLivePlugIn")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("PiwigoLivePlugIn")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("92b5e8e4-4e5e-4102-88f8-0934686c2133")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+//      Version principale
+//      Version secondaire 
+//      Numéro de build
+//      Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /extensions/PiwigoLib/PiwigoUpload/DTO/PwgUploadOption.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoUpload/DTO/PwgUploadOption.cs	(revision 13847)
+++ /extensions/PiwigoLib/PiwigoUpload/DTO/PwgUploadOption.cs	(revision 13847)
@@ -0,0 +1,34 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Com.Piwigo.Lib.DTO;
+using System.ComponentModel;
+
+namespace Com.Piwigo.Uploader.DTO
+{
+    public class PwgUploadOption : INotifyPropertyChanged
+    {
+        private String _author;
+        public String Author
+        {
+            set { _author = value; OnPropertyChanged("Author"); }
+            get { return _author; }
+        }
+
+        private PwgConfidentLevelEnum _confidentialLevel;
+        public PwgConfidentLevelEnum ConfidentialLevel
+        {
+            set { _confidentialLevel = value; OnPropertyChanged("ConfidentialLevel"); }
+            get { return _confidentialLevel; }
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        protected void OnPropertyChanged(String info)
+        {
+            if (PropertyChanged != null)
+                PropertyChanged(this, new PropertyChangedEventArgs(info));
+        }
+
+    }
+}
Index: /extensions/PiwigoLib/PiwigoUpload/Helper/LocalDataHelper.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoUpload/Helper/LocalDataHelper.cs	(revision 13847)
+++ /extensions/PiwigoLib/PiwigoUpload/Helper/LocalDataHelper.cs	(revision 13847)
@@ -0,0 +1,62 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Com.Piwigo.Uploader.DTO;
+
+namespace Com.Piwigo.Uploader.Helper
+{
+    public static class LocalDataHelper
+    {
+        public static void DeleteWhenFoundInTree(LocalAlbum alb, ref LocalAlbumList lstAlbum)
+        {
+            LocalAlbum treeAlb = null;
+
+            for (int i = 0; i < lstAlbum.Count; i += 1)
+            {
+                treeAlb = lstAlbum.FirstOrDefault(a => a.LocalDir == alb.LocalDir);
+                if (treeAlb != default(LocalAlbum))
+                {
+                    DeleteAlbum(ref treeAlb);
+                    lstAlbum.RemoveAt(i);
+                    return;
+                }
+            }
+            for (int i = 0; i < lstAlbum.Count; i += 1)
+            {
+                LocalAlbumList FoundInLstAlb = lstAlbum[i].SubAlbums;
+                DeleteWhenFoundInTree(alb, ref FoundInLstAlb); 
+            }
+        }
+
+        public static void DeleteAlbum(ref LocalAlbum alb)
+        {
+            //on vire les images
+            alb.LocalImages.Clear(); 
+            foreach (LocalAlbum subAlb in alb.SubAlbums)
+	        {
+                LocalAlbum subAlbtoDel = subAlb;
+                // on boucle sur les sous-albums
+                DeleteAlbum(ref subAlbtoDel);
+	        }
+            // on vide les sous-album
+            alb.SubAlbums.Clear();
+        }
+
+        public static void DeleteInTree (LocalAlbum alb)
+        {
+            //si l'album depend de la racine
+            LocalAlbum treeAlb = ModelManager.Instance.lstAlbumLocaux.FirstOrDefault(a => a.LocalDir == alb.LocalDir);
+            if (treeAlb != default(LocalAlbum))
+            {
+                DeleteAlbum(ref treeAlb);
+                ModelManager.Instance.lstAlbumLocaux.Remove(treeAlb);
+            }
+            else
+            {
+                LocalAlbumList lal = ModelManager.Instance.lstAlbumLocaux;
+                DeleteWhenFoundInTree(alb,ref lal);
+            }
+        }
+    }
+}
