Added File/Container properties windows
authorPanagiotis Kanavos <pkanavos@gmail.com>
Tue, 1 Nov 2011 21:50:57 +0000 (23:50 +0200)
committerPanagiotis Kanavos <pkanavos@gmail.com>
Tue, 1 Nov 2011 21:50:57 +0000 (23:50 +0200)
Added ShowProperties command
Container properties menu doesn't appear,even though the properties work
Problem with automatic authentication

29 files changed:
trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml [new file with mode: 0644]
trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml.cs [new file with mode: 0644]
trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesViewModel.cs [new file with mode: 0644]
trunk/Pithos.Client.WPF/FileProperties/FilePropertiesViewModel.cs
trunk/Pithos.Client.WPF/FileProperties/SizeExtensions.cs [new file with mode: 0644]
trunk/Pithos.Client.WPF/Images/Container.png [new file with mode: 0644]
trunk/Pithos.Client.WPF/Pithos.Client.WPF.csproj
trunk/Pithos.Client.WPF/Preferences/PreferencesView.xaml
trunk/Pithos.Client.WPF/Services/StatusService.cs
trunk/Pithos.Client.WPF/ShellView.xaml
trunk/Pithos.Client.WPF/ShellViewModel.cs
trunk/Pithos.Core/PithosMonitor.cs
trunk/Pithos.Interfaces/IStatusChecker.cs
trunk/Pithos.Network/CloudFilesClient.cs
trunk/Pithos.Network/ContainerInfo.cs
trunk/Pithos.ShellExtensions/FileContext.cs
trunk/Pithos.ShellExtensions/Menus/DisplayFlags.cs
trunk/Pithos.ShellExtensions/Menus/FileContextMenu.cs
trunk/Pithos.ShellExtensions/Pithos.ShellExtensions.csproj
trunk/Pithos.ShellExtensions/PithosHost.cs
trunk/Pithos.ShellExtensions/Service References/PithosService/Reference.cs
trunk/Pithos.ShellExtensions/Service References/PithosService/Reference.svcmap
trunk/Pithos.ShellExtensions/Service References/PithosService/StatusService.wsdl
trunk/Pithos.ShellExtensions/Service References/PithosService/configuration.svcinfo
trunk/Pithos.ShellExtensions/Service References/PithosService/configuration91.svcinfo
trunk/Pithos.ShellExtensions/Service References/PithosService/mex2.wsdl [new file with mode: 0644]
trunk/Pithos.ShellExtensions/Service References/PithosService/mex2.xsd
trunk/Pithos.ShellExtensions/Service References/PithosService/mex5.xsd [new file with mode: 0644]
trunk/Pithos.ShellExtensions/app.config

diff --git a/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml b/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml
new file mode 100644 (file)
index 0000000..5e5d039
--- /dev/null
@@ -0,0 +1,74 @@
+<Window x:Class="Pithos.Client.WPF.FileProperties.ContainerPropertiesView"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        Title="ContainerPropertiesView" Height="300" Width="300"
+        Background="#FFD4D0C8">
+    <Window.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="..\PithosStyles.xaml" />
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </Window.Resources>
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="Auto"/>
+        </Grid.RowDefinitions>
+        <Grid Grid.Row="0" Margin="5">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+                <ColumnDefinition Width="Auto"/>
+            </Grid.ColumnDefinitions>
+            <Image x:Name="FileIcon" Margin="5" Grid.Column="0" Stretch="None" Source="/Pithos.Client.WPF;component/Images/Container.png" />
+            <TextBlock x:Name="ContainerName" Margin="5" Grid.Column="1" Text="Container Name" FontSize="16" FontWeight="Bold"/>
+            <TextBlock x:Name="ShortSize" Margin="5" Text="345 KB" FontWeight="Bold" FontSize="14" Grid.Column="2" />
+        </Grid>
+        <GroupBox Header="General" Grid.Row="1" Margin="5">
+            <Grid>
+                <Grid.Resources>
+                    <Style x:Key="NameColumnStyle" TargetType="TextBlock">
+                        <Setter Property="HorizontalAlignment" Value="Right"/>
+                        <Setter Property="Margin" Value="5,2"/>
+                    </Style>
+                    <Style x:Key="ValueColumnStyle" TargetType="TextBlock">
+                        <Setter Property="HorizontalAlignment" Value="Left"/>
+                        <Setter Property="Margin" Value="5,2"/>
+                    </Style>
+                </Grid.Resources>
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="Auto" />
+                    <ColumnDefinition Width="*"/>
+                </Grid.ColumnDefinitions>
+                <Grid.RowDefinitions>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                </Grid.RowDefinitions>
+                <TextBlock Text="Count :" Grid.Row="0" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+                <TextBlock Text="Size :" Grid.Row="1" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+                <TextBlock Text="Modified :" Grid.Row="3" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+                <TextBlock Text="Block Size :" Grid.Row="4" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+                <TextBlock Text="Block Hash :" Grid.Row="5" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+                <TextBlock x:Name="Count" Text="123" Grid.Row="0" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+                <TextBlock x:Name="Size" Text="345 KB (345,332 bytes)" Grid.Row="1" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+                <TextBlock x:Name="Modified" Text="28/10/2011 11:34 AM" Grid.Row="3" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+                <TextBlock x:Name="BlockSize" Text="4012354486" Grid.Row="4" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+                <TextBlock x:Name="BlockHash" Text="2345456" Grid.Row="5" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+            </Grid>
+        </GroupBox>
+
+        <StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Right">
+            <Button Name="SaveChanges" Content="OK" Margin="5,5,10,5" Style="{StaticResource ButtonStyle}"/>
+            <Button Name="RejectChanges" Content="Cancel" Margin="5,5,10,5" Style="{StaticResource ButtonStyle}"/>
+            <Button Name="ApplyChanges" Content="Apply" Style="{StaticResource ButtonStyle}" />
+        </StackPanel>
+
+    </Grid>
+</Window>
diff --git a/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml.cs b/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesView.xaml.cs
new file mode 100644 (file)
index 0000000..ba7df16
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+    /// <summary>
+    /// Interaction logic for ContainerPropertiesView.xaml
+    /// </summary>
+    public partial class ContainerPropertiesView : Window
+    {
+        public ContainerPropertiesView()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesViewModel.cs b/trunk/Pithos.Client.WPF/FileProperties/ContainerPropertiesViewModel.cs
new file mode 100644 (file)
index 0000000..fb4a651
--- /dev/null
@@ -0,0 +1,137 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.ComponentModel.Composition;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Text;
+using Caliburn.Micro;
+using Pithos.Network;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+    [Export(typeof(ContainerPropertiesViewModel))]
+    public class ContainerPropertiesViewModel:Screen
+    {
+        /// <summary>
+        /// Name of the displayed container
+        /// </summary>
+        public string ContainerName { get; set; }
+        /// <summary>
+        /// Window title
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// Count of files in the container
+        /// </summary>
+        public long Count { get; set; }
+
+        /// <summary>
+        /// Date of last modification
+        /// </summary>
+        public DateTime Modified { get; set; }
+        
+        /// <summary>
+        /// Total size of the container in bytes
+        /// </summary>
+        public string Size { get; set; }
+
+        /// <summary>
+        /// Total size of the container formatted in KB,MB etc
+        /// </summary>
+        public string ShortSize { get; set; }
+
+        /// <summary>
+        /// Block size used by the container
+        /// </summary>
+        public int BlockSize { get; set; }
+
+        /// <summary>
+        /// Hash algorithm used to calculate block hashes
+        /// </summary>
+        public string BlockHash { get; set; }
+
+        /// <summary>
+        /// Reference to the parent Shell
+        /// </summary>
+        protected ShellViewModel Shell { get; set; }
+
+        private ContainerInfo _container;
+        /// <summary>
+        /// The displayed ContainerInfo
+        /// </summary>
+        protected ContainerInfo Container
+        {
+            get { return _container; }
+            set
+            {
+                _container = value;
+
+                Count = value.Count;
+                ShortSize = value.Bytes.ToByteSize();
+                Size = String.Format("{0} ({1:N0} bytes)", ShortSize, value.Bytes);
+                Modified = value.Last_Modified;
+                BlockSize = value.BlockSize;
+                BlockHash = value.BlockHash;                
+                ContainerName = Uri.UnescapeDataString(value.Name.Split('/').Last());                                                
+
+                NotifyOfPropertyChange(() => Container);
+            }
+        }
+
+        
+
+
+        public ContainerPropertiesViewModel(ShellViewModel shell, ContainerInfo container, string localFolderName)
+        {
+            if (shell==null)
+                throw new ArgumentNullException("shell");
+            if (container==null)
+                throw new ArgumentNullException("container");
+            if (String.IsNullOrWhiteSpace(localFolderName))
+                throw new ArgumentNullException("localFolderName");
+            Contract.EndContractBlock();
+
+            Shell = shell;
+            ContainerName = localFolderName;
+            Container = container;
+            Title = String.Format("{0} Properties", container.Name);
+            
+        }
+
+
+
+        public void Refresh()
+        {
+            Container = Shell.RefreshContainerInfo(Container);
+        }
+
+        public override void CanClose(Action<bool> callback)
+        {
+            base.CanClose(callback);
+        }
+
+        public void SaveChanges()
+        {
+            DoSave();
+            TryClose();
+        }
+
+        public void RejectChanges()
+        {
+            TryClose();
+        }
+
+        public void ApplyChanges()
+        {
+            DoSave();
+        }
+
+        private void DoSave()
+        {
+
+        }
+
+    }
+}
index 7a87938..cf40563 100644 (file)
@@ -15,6 +15,7 @@ using System.Windows;
 using System.Windows.Interop;
 using System.Windows.Media.Imaging;
 using Caliburn.Micro;
+using Pithos.Client.WPF.FileProperties;
 using Pithos.Interfaces;
 
 namespace Pithos.Client.WPF
@@ -28,7 +29,7 @@ namespace Pithos.Client.WPF
     /// TODO: Update summary.
     /// </summary>
     [Export(typeof(FilePropertiesViewModel))]
-    public class FilePropertiesViewModel : Screen, IShell
+    public class FilePropertiesViewModel : Screen
     {
         private string _title;
         public string Title
@@ -85,7 +86,7 @@ namespace Pithos.Client.WPF
                     ((IDictionary<string,string>)Permissions).Clear();                
                 value.Permissions.Apply(perm=>Permissions.Add(perm.Key,perm.Value));
                 Kind=value.Content_Type;
-                ShortSize = ByteSize(value.Bytes);
+                ShortSize = value.Bytes.ToByteSize();
                 Size = String.Format("{0} ({1:N0} bytes)", ShortSize, value.Bytes);
                 Where = Uri.UnescapeDataString(value.Name);
                 FileName = Uri.UnescapeDataString(value.Name.Split('/').Last());
@@ -147,32 +148,6 @@ namespace Pithos.Client.WPF
             
         }
 
-        static string[] sizeSuffixes = { 
-        "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
-
-        public string ByteSize(long size)
-        {
-            
-            const string formatTemplate = "{0}{1:0.#} {2}";
-
-            if (size == 0)
-            {
-                return string.Format(formatTemplate, null, 0, sizeSuffixes[0]);
-            }
-
-            var absSize = Math.Abs((double)size);
-            var fpPower = Math.Log(absSize, 1000);
-            var intPower = (int)fpPower;
-            var iUnit = intPower >= sizeSuffixes.Length
-                ? sizeSuffixes.Length - 1
-                : intPower;
-            var normSize = absSize / Math.Pow(1000, iUnit);
-
-            return string.Format(
-                formatTemplate,
-                size < 0 ? "-" : null, normSize, sizeSuffixes[iUnit]);
-        } 
-
 
     }
 }
diff --git a/trunk/Pithos.Client.WPF/FileProperties/SizeExtensions.cs b/trunk/Pithos.Client.WPF/FileProperties/SizeExtensions.cs
new file mode 100644 (file)
index 0000000..96e53b4
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+    public static class SizeExtensions
+    {
+
+
+        static readonly string[] SizeSuffixes = { 
+        "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
+
+        public static string ToByteSize(this long size)
+        {
+
+            const string formatTemplate = "{0}{1:0.#} {2}";
+
+            if (size == 0)
+            {
+                return string.Format(formatTemplate, null, 0, SizeSuffixes[0]);
+            }
+
+            var absSize = Math.Abs((double)size);
+            var fpPower = Math.Log(absSize, 1000);
+            var intPower = (int)fpPower;
+            var iUnit = intPower >= SizeSuffixes.Length
+                ? SizeSuffixes.Length - 1
+                : intPower;
+            var normSize = absSize / Math.Pow(1000, iUnit);
+
+            return string.Format(
+                formatTemplate,
+                size < 0 ? "-" : null, normSize, SizeSuffixes[iUnit]);
+        } 
+
+    }
+}
diff --git a/trunk/Pithos.Client.WPF/Images/Container.png b/trunk/Pithos.Client.WPF/Images/Container.png
new file mode 100644 (file)
index 0000000..35e3366
Binary files /dev/null and b/trunk/Pithos.Client.WPF/Images/Container.png differ
index 910ddd1..25ce601 100644 (file)
     <Compile Include="Caliburn\Micro\Logging\log4netLogger.cs" />
     <Compile Include="Configuration\PithosSettings.cs" />
     <Compile Include="FileEntry.cs" />
+    <Compile Include="FileProperties\ContainerPropertiesView.xaml.cs">
+      <DependentUpon>ContainerPropertiesView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="FileProperties\ContainerPropertiesViewModel.cs" />
     <Compile Include="FileProperties\FilePropertiesView.xaml.cs">
       <DependentUpon>FilePropertiesView.xaml</DependentUpon>
     </Compile>
     <Compile Include="FileProperties\FilePropertiesViewModel.cs" />
+    <Compile Include="FileProperties\SizeExtensions.cs" />
     <Compile Include="NativeMethods.cs" />
     <Compile Include="Notification.cs" />
     <Compile Include="PithosAccount.cs" />
     <Compile Include="ShellViewModel.cs" />
     <Compile Include="Services\StatusService.cs" />
     <Compile Include="Wpf32Window.cs" />
+    <Page Include="FileProperties\ContainerPropertiesView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="FileProperties\FilePropertiesView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <EmbedInteropTypes>False</EmbedInteropTypes>
     </COMReference>
   </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Images\Container.png" />
+  </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.
index 50c96cd..95c5070 100644 (file)
                         <TextBlock Text="Proxy"/>
                     </StackPanel>
                 </TabItem.Header>
-                <GroupBox Header="Proxy Settings" Height="275"  Margin="10,5" VerticalAlignment="Top" Width="396">
-                    <Grid>
+                    <Grid Margin="10,5">
                         <RadioButton Name="Settings_UseDefaultProxy" Content="Use System Defaults" Margin="5,6,5,0" Height="16" VerticalAlignment="Top"/>
                         <RadioButton Name="Settings_UseManualProxy" Content="Manual" Margin="5,28,5,0" Height="16" VerticalAlignment="Top"/>
                         <Label Content="Server" Height="28" HorizontalAlignment="Left" Margin="5,47,0,0" Name="label2" VerticalAlignment="Top" />
                             </Grid>
                         </GroupBox>
                     </Grid>
-                </GroupBox>
             </TabItem>
             <TabItem VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
                 <TabItem.Header>
index d91546c..eb2389b 100644 (file)
@@ -5,6 +5,8 @@
 // -----------------------------------------------------------------------
 
 
+using System;
+using System.ServiceModel.Description;
 using Caliburn.Micro;
 using System.ServiceModel;
 using System.ComponentModel.Composition;
@@ -29,20 +31,13 @@ namespace Pithos.Client.WPF.Services
         [Import]
         public PithosMonitor Monitor { get; set; }
 
+        [Import]
+        public IEventAggregator Events { get; set; }
+
         public StatusService()
         {
             IoC.BuildUp(this);
-        }
-
-        private IEventAggregator _events;
-
-        [ImportingConstructor]
-        public StatusService(IStatusChecker checker,IEventAggregator events)
-        {
-            Checker = checker;
-            _events = events;
-        }
-
+        }        
 
         public FileOverlayStatus GetStatus(string filePath)
         {
@@ -62,7 +57,45 @@ namespace Pithos.Client.WPF.Services
 
         public void ShowProperties(string fileName)
         {
-            _events.Publish(new ShowFilePropertiesEvent(fileName));
+            Events.Publish(new ShowFilePropertiesEvent(fileName));
+        }
+
+        public static ServiceHost Start()
+        {
+            // Create a ServiceHost for the CalculatorService type and provide the base address.
+            var baseAddress = new Uri("net.pipe://localhost/pithos");
+            var service = new ServiceHost(typeof(StatusService), baseAddress);
+
+            var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
+
+            service.AddServiceEndpoint(typeof(IStatusService), binding, "net.pipe://localhost/pithos/statuscache");
+            service.AddServiceEndpoint(typeof(ISettingsService), binding, "net.pipe://localhost/pithos/settings");
+            service.AddServiceEndpoint(typeof(ICommandsService), binding, "net.pipe://localhost/pithos/commands");
+
+
+            //// Add a mex endpoint
+            var smb = new ServiceMetadataBehavior
+                          { 
+                              HttpGetEnabled = true,
+                              HttpGetUrl = new Uri("http://localhost:30000/pithos/mex")
+                          };
+            service.Description.Behaviors.Add(smb);
+
+
+            service.Open();
+            return service;
+        }
+
+        public static void Stop(ServiceHost statusService)
+        {
+            if (statusService == null)
+                return;
+
+            if (statusService.State == CommunicationState.Faulted)
+                statusService.Abort();
+            else if (statusService.State != CommunicationState.Closed)
+                statusService.Close();            
+
         }
     }
 }
index a464355..5550f69 100644 (file)
@@ -70,8 +70,6 @@
                     <Separator  />
                     <MenuItem  Header="Preferences ..." x:Name="ShowPreferences" cal:Message.Attach="ShowPreferences"  />
                     <Separator  />
-                    <MenuItem  Header="Properties ..." x:Name="ShowFileProperties" cal:Message.Attach="ShowFileProperties"  />
-                    <Separator  />
                     <MenuItem  Header="Exit" Name="ExitPithos" cal:Message.Attach="ExitPithos" />
                 </ContextMenu>
             </tb:TaskbarIcon.ContextMenu>
index 02ca514..39e57b4 100644 (file)
@@ -1,4 +1,5 @@
 using System.Collections.Concurrent;
+using System.ComponentModel;
 using System.ComponentModel.Composition;
 using System.Diagnostics;
 using System.Diagnostics.Contracts;
@@ -12,8 +13,10 @@ using System.Windows;
 using Caliburn.Micro;
 using Hardcodet.Wpf.TaskbarNotification;
 using Pithos.Client.WPF.Configuration;
+using Pithos.Client.WPF.FileProperties;
 using Pithos.Client.WPF.Properties;
 using Pithos.Client.WPF.SelectiveSynch;
+using Pithos.Client.WPF.Services;
 using Pithos.Core;
 using Pithos.Interfaces;
 using System;
@@ -27,8 +30,8 @@ namespace Pithos.Client.WPF {
     using System.ComponentModel.Composition;
 
     [Export(typeof(IShell))]
-    public class ShellViewModel : Screen, IStatusNotification, IShell, 
-        IHandle<Notification>, IHandle<SelectiveSynchChanges>
+    public class ShellViewModel : Screen, IStatusNotification, IShell,
+        IHandle<Notification>, IHandle<SelectiveSynchChanges>, IHandle<ShowFilePropertiesEvent>
     {
        
         private IStatusChecker _statusChecker;
@@ -76,18 +79,42 @@ namespace Pithos.Client.WPF {
         protected override void OnActivate()
         {
             base.OnActivate();
-            foreach (var account in Settings.Accounts)
+
+            
+            var tasks=from account in Settings.Accounts
+                           select MonitorAccount(account);
+
+            try
             {
 
-                MonitorAccount(account);
+                Task.Factory.Iterate(tasks).Wait();
+                _statusService=StatusService.Start();
+
+            }
+            catch (AggregateException exc)
+            {
+                exc.Handle(e =>{
+                    Log.Error("Error while starting monitoring", e);
+                    return true;
+                });
+                throw;
             }
+            
+        }
 
-            StartStatusService();
+        protected override void OnDeactivate(bool close)
+        {
+            base.OnDeactivate(close);
+            if (close)
+            {
+                StatusService.Stop(_statusService);
+                _statusService = null;
+            }
         }
 
-        public void MonitorAccount(AccountSettings account)
+        public Task MonitorAccount(AccountSettings account)
         {
-            Task.Factory.StartNew(() =>
+            return Task.Factory.StartNew(() =>
             {
                 PithosMonitor monitor = null;
                 var accountName = account.AccountName;
@@ -264,6 +291,37 @@ namespace Pithos.Client.WPF {
 
             var fileProperties = new FilePropertiesViewModel(this, info,filePath);
             _windowManager.ShowWindow(fileProperties);
+        } 
+        
+        public void ShowContainerProperties()
+        {
+            var account = Settings.Accounts.First(acc => acc.IsActive);            
+            var dir = new DirectoryInfo(account.RootPath);
+            var fullName = (from folder in dir.EnumerateDirectories()
+                            where (folder.Attributes & FileAttributes.Hidden) == 0
+                            select folder.FullName).First();
+            ShowContainerProperties(fullName);            
+        }
+
+        public void ShowContainerProperties(string filePath)
+        {
+            if (String.IsNullOrWhiteSpace(filePath))
+                throw new ArgumentNullException("filePath");
+            if (!Directory.Exists(filePath))
+                throw new ArgumentException(String.Format("Non existent file {0}",filePath),"filePath");
+            Contract.EndContractBlock();
+
+            var pair=(from monitor in  Monitors
+                               where filePath.StartsWith(monitor.Value.RootPath, StringComparison.InvariantCultureIgnoreCase)
+                                   select monitor).FirstOrDefault();
+            var account = pair.Key;
+            var accountMonitor = pair.Value;            
+            ContainerInfo info = accountMonitor.GetContainerInfo(filePath);
+
+            
+
+            var containerProperties = new ContainerPropertiesViewModel(this, info,filePath);
+            _windowManager.ShowWindow(containerProperties);
         }
 
         public ObjectInfo RefreshObjectInfo(ObjectInfo currentInfo)
@@ -277,6 +335,18 @@ namespace Pithos.Client.WPF {
             return newInfo;
         }
 
+        public ContainerInfo RefreshContainerInfo(ContainerInfo container)
+        {
+            if (container == null)
+                throw new ArgumentNullException("container");
+            Contract.EndContractBlock();
+
+            var monitor = Monitors[container.Account];
+            var newInfo = monitor.CloudClient.GetContainerInfo(container.Account, container.Name);
+            return newInfo;
+        }
+
+
         public void ToggleSynching()
         {
             bool isPaused=false;
@@ -515,42 +585,6 @@ namespace Pithos.Client.WPF {
             }
         }
 
-        private void StartStatusService()
-        {
-            // Create a ServiceHost for the CalculatorService type and provide the base address.
-            var baseAddress = new Uri("net.pipe://localhost/pithos");
-            _statusService = new ServiceHost(typeof(StatusService), baseAddress);
-
-            var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
-
-            _statusService.AddServiceEndpoint(typeof(IStatusService), binding, "net.pipe://localhost/pithos/statuscache");
-            _statusService.AddServiceEndpoint(typeof(ISettingsService), binding, "net.pipe://localhost/pithos/settings");
-
-
-            //// Add a mex endpoint
-            var smb = new ServiceMetadataBehavior
-            { 
-                HttpGetEnabled = true,
-                HttpGetUrl = new Uri("http://localhost:30000/pithos/mex")
-            };
-            _statusService.Description.Behaviors.Add(smb);
-
-
-            _statusService.Open();
-        }
-
-        private void StopStatusService()
-        {
-            if (_statusService == null)
-                return;
-
-            if (_statusService.State == CommunicationState.Faulted)
-                _statusService.Abort();
-            else if (_statusService.State != CommunicationState.Closed)
-                _statusService.Close();
-            _statusService = null;
-
-        }
         #region Event Handlers
         
         public void Handle(SelectiveSynchChanges message)
@@ -596,5 +630,21 @@ namespace Pithos.Client.WPF {
             }
         }
         #endregion
+
+        public void Handle(ShowFilePropertiesEvent message)
+        {
+            if (message == null)
+                throw new ArgumentNullException("message");
+            if (String.IsNullOrWhiteSpace(message.FileName) )
+                throw new ArgumentException("message");
+            Contract.EndContractBlock();
+
+            var fileName = message.FileName;
+
+            if (File.Exists(fileName))
+                this.ShowFileProperties(fileName);
+            else if (Directory.Exists(fileName))
+                this.ShowContainerProperties(fileName);
+        }
     }
 }
index f6216d3..fe8f57a 100644 (file)
@@ -455,25 +455,56 @@ namespace Pithos.Core
                 container = parts[0];
                 relativeUrl = String.Join("/", parts.Splice(1));
             }
-
-            /*return new ObjectInfo
-                       {
-                           Account = accountName,
-                           Container = container,
-                           Name = relativeUrl,
-                           Content_Type="application/pdf",
-                           Bytes = 123456,
-                           Hash = "8902372934sjhshjfsdjkf223894sdgh",
-                           Last_Modified = DateTime.Today.AddDays(-1),
-                           ModifiedBy = accountName,
-                           Version = 12312455,
-                           VersionTimestamp = DateTime.Today.AddDays(-1)
-                       };*/
-
+            
             var client = new CloudFilesClient(accountInfo);
             var objectInfo=client.GetObjectInfo(accountName, container, relativeUrl);
             return objectInfo;
         }
+        
+        public ContainerInfo GetContainerInfo(string filePath)
+        {
+            if (String.IsNullOrWhiteSpace(filePath))
+                throw new ArgumentNullException("filePath");
+            Contract.EndContractBlock();
+
+            var file=new FileInfo(filePath);
+            var relativePath = file.AsRelativeTo(RootPath);
+            
+            string accountName,container;
+            
+            var parts=relativePath.Split('\\');
+
+            var accountInfo = _accountInfo;
+            if (relativePath.StartsWith(FolderConstants.OthersFolder))
+            {                
+                accountName = parts[1];
+                container = parts[2];                
+                //Create the root URL for the target account
+                var oldName = UserName;
+                var absoluteUri =  _accountInfo.StorageUri.AbsoluteUri;
+                var nameIndex=absoluteUri.IndexOf(oldName);
+                var root=absoluteUri.Substring(0, nameIndex);
+
+                accountInfo = new AccountInfo
+                {
+                    UserName = accountName,
+                    AccountPath = Path.Combine(accountInfo.AccountPath, parts[0], parts[1]),
+                    StorageUri = new Uri(root + accountName),
+                    BlockHash=accountInfo.BlockHash,
+                    BlockSize=accountInfo.BlockSize,
+                    Token=accountInfo.Token
+                };
+            }
+            else
+            {
+                accountName = UserName;
+                container = parts[0];                
+            }
+            
+            var client = new CloudFilesClient(accountInfo);
+            var containerInfo=client.GetContainerInfo(accountName, container);
+            return containerInfo;
+        }
     }
 
 
index fb3b378..65e30a2 100644 (file)
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.Contracts;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading;
@@ -12,7 +13,7 @@ namespace Pithos.Interfaces
     {
         FileOverlayStatus GetFileOverlayStatus(string path);
 
-        PithosStatus GetPithosStatus();
+        PithosStatus GetPithosStatus();        
 
     }
 
index 1a0ad50..889c8dc 100644 (file)
@@ -616,12 +616,14 @@ namespace Pithos.Network
                     case HttpStatusCode.NoContent:
                         var containerInfo = new ContainerInfo
                                                 {
+                                                    Account=account,
                                                     Name = container,
                                                     Count =
                                                         long.Parse(client.GetHeaderValue("X-Container-Object-Count")),
                                                     Bytes = long.Parse(client.GetHeaderValue("X-Container-Bytes-Used")),
                                                     BlockHash = client.GetHeaderValue("X-Container-Block-Hash"),
-                                                    BlockSize=int.Parse(client.GetHeaderValue("X-Container-Block-Size"))
+                                                    BlockSize=int.Parse(client.GetHeaderValue("X-Container-Block-Size")),
+                                                    Last_Modified=client.LastModified
                                                 };
                         return containerInfo;
                     case HttpStatusCode.NotFound:
index 839b11e..e654f32 100644 (file)
@@ -1,3 +1,5 @@
+using System;
+
 namespace Pithos.Network
 {
     public class ContainerInfo
@@ -9,6 +11,8 @@ namespace Pithos.Network
         public string BlockHash { get; set; }
         public int BlockSize { get; set; }
 
+        public DateTime Last_Modified { get; set; }
+
         public static ContainerInfo Empty=new ContainerInfo();
     }
 }
\ No newline at end of file
index 383dee8..34262c5 100644 (file)
@@ -2,6 +2,7 @@
 // This project is open source. Released under the XYZ license
 // </copyright>
 
+using System.Linq;
 using Microsoft.Win32;
 
 namespace Pithos.ShellExtensions
@@ -31,8 +32,12 @@ namespace Pithos.ShellExtensions
         {
             get
             {
-                Debug.WriteLine( String.Format("Managed path is {0}\r\n Current Path is {1}", PithosPath, CurrentFile),LogCategories.Shell);
-                return CurrentFolder.StartsWith(PithosPath, true, null);
+                
+                var accountPath=(from account in Settings.Accounts
+                                where CurrentFile.StartsWith(account.RootPath, StringComparison.InvariantCultureIgnoreCase)
+                                select account.RootPath).FirstOrDefault();
+                Debug.WriteLine(String.Format("Account path is {0}\r\n Current Path is {1}", accountPath, CurrentFile), LogCategories.Shell);
+                return !String.IsNullOrWhiteSpace(accountPath);
             }
         }
 
index 1e64cf9..4b12c38 100644 (file)
@@ -28,6 +28,10 @@ namespace Pithos.ShellExtensions.Menus
         File,
 
         /// <summary>
+        /// Display the item both on container folders
+        /// </summary>
+        Container,
+        /// <summary>
         /// Display the item both on folders and files
         /// </summary>
         All
index 6be343a..75a984f 100644 (file)
@@ -51,16 +51,16 @@ namespace Pithos.ShellExtensions.Menus
                                                DisplayFlags=DisplayFlags.All,
                                                MenuBitmap = _gotoBitmap
                                            }},
-                /*{"showProperties",new MenuItem{
-                                           MenuText = "&Pithos File Properties",
+                {"showProperties",new MenuItem{
+                                           MenuText = "&Pithos Properties",
                                             Verb = "showProperties",
                                              VerbCanonicalName = "PITHOSProperties",
-                                              VerbHelpText = "Pithos File Properties",
+                                              VerbHelpText = "Pithos Properties",
                                                MenuDisplayId = 2,
                                                MenuCommand=OnShowProperties,
-                                               DisplayFlags=DisplayFlags.File,
+                                               DisplayFlags=DisplayFlags.All,
                                                MenuBitmap = _propertiesBitmap
-                                           }},*/
+                                           }}/*,
                 {"prevVersions",new MenuItem{
                                            MenuText = "&Show Previous Versions",
                                             Verb = "prevVersions",
@@ -70,7 +70,7 @@ namespace Pithos.ShellExtensions.Menus
                                                MenuCommand=OnVerbDisplayFileName,
                                                DisplayFlags=DisplayFlags.File,
                                                MenuBitmap=_versionBitmap
-                                           }}
+                                           }}*/
             };
 
             IoC.Current.Compose(this);
@@ -107,7 +107,21 @@ namespace Pithos.ShellExtensions.Menus
 
         void OnShowProperties(IntPtr hWnd)
         {
-            
+            var filePath = Context.CurrentFile ?? Context.CurrentFolder;
+            if (String.IsNullOrWhiteSpace(filePath))
+            {
+                Debug.WriteLine("No current file or folder");
+                return;
+            }
+            else
+            {
+                Debug.WriteLine("Will display properties for {0}",filePath);
+            }
+
+            using (var client = PithosHost.GetCommandsClient())
+            {
+                client.ShowProperties(Context.CurrentFile);
+            }
         }
 
         void OnVerbDisplayFileName(IntPtr hWnd)
index 2238984..6bd989c 100644 (file)
     <None Include="Service References\PithosService\mex1.xsd">
       <SubType>Designer</SubType>
     </None>
+    <None Include="Service References\PithosService\mex2.wsdl" />
     <None Include="Service References\PithosService\mex2.xsd">
       <SubType>Designer</SubType>
     </None>
     <None Include="Service References\PithosService\mex4.xsd">
       <SubType>Designer</SubType>
     </None>
+    <None Include="Service References\PithosService\mex5.xsd">
+      <SubType>Designer</SubType>
+    </None>
     <None Include="Service References\PithosService\StatusService.wsdl" />
   </ItemGroup>
   <ItemGroup>
index bf8db73..37c0503 100644 (file)
@@ -54,5 +54,17 @@ namespace Pithos.ShellExtensions
 
             return new SettingsServiceClient(binding, remoteAddress);
         }
+
+        public static CommandsServiceClient GetCommandsClient()
+        {
+            EnsureHost();
+
+            var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
+            var remoteAddress = new EndpointAddress("net.pipe://localhost/pithos/commands");
+
+            return new CommandsServiceClient(binding, remoteAddress);
+        }
+
+        
     }
 }
index 510f54c..cd5d786 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.235
+//     Runtime Version:4.0.30319.488
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -244,4 +244,102 @@ namespace Pithos.ShellExtensions.PithosService {
             base.InvokeAsync(this.onBeginGetSettingsDelegate, null, this.onEndGetSettingsDelegate, this.onGetSettingsCompletedDelegate, userState);
         }
     }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://PITHOS.Client.Commands", ConfigurationName="PithosService.ICommandsService")]
+    public interface ICommandsService {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties", ReplyAction="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse")]
+        void ShowProperties(string fileName);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties", ReplyAction="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse")]
+        System.IAsyncResult BeginShowProperties(string fileName, System.AsyncCallback callback, object asyncState);
+        
+        void EndShowProperties(System.IAsyncResult result);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface ICommandsServiceChannel : Pithos.ShellExtensions.PithosService.ICommandsService, System.ServiceModel.IClientChannel {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class CommandsServiceClient : System.ServiceModel.ClientBase<Pithos.ShellExtensions.PithosService.ICommandsService>, Pithos.ShellExtensions.PithosService.ICommandsService {
+        
+        private BeginOperationDelegate onBeginShowPropertiesDelegate;
+        
+        private EndOperationDelegate onEndShowPropertiesDelegate;
+        
+        private System.Threading.SendOrPostCallback onShowPropertiesCompletedDelegate;
+        
+        public CommandsServiceClient() {
+        }
+        
+        public CommandsServiceClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName) {
+        }
+        
+        public CommandsServiceClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public CommandsServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public CommandsServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress) {
+        }
+        
+        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> ShowPropertiesCompleted;
+        
+        public void ShowProperties(string fileName) {
+            base.Channel.ShowProperties(fileName);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginShowProperties(string fileName, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginShowProperties(fileName, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public void EndShowProperties(System.IAsyncResult result) {
+            base.Channel.EndShowProperties(result);
+        }
+        
+        private System.IAsyncResult OnBeginShowProperties(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            string fileName = ((string)(inValues[0]));
+            return this.BeginShowProperties(fileName, callback, asyncState);
+        }
+        
+        private object[] OnEndShowProperties(System.IAsyncResult result) {
+            this.EndShowProperties(result);
+            return null;
+        }
+        
+        private void OnShowPropertiesCompleted(object state) {
+            if ((this.ShowPropertiesCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.ShowPropertiesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void ShowPropertiesAsync(string fileName) {
+            this.ShowPropertiesAsync(fileName, null);
+        }
+        
+        public void ShowPropertiesAsync(string fileName, object userState) {
+            if ((this.onBeginShowPropertiesDelegate == null)) {
+                this.onBeginShowPropertiesDelegate = new BeginOperationDelegate(this.OnBeginShowProperties);
+            }
+            if ((this.onEndShowPropertiesDelegate == null)) {
+                this.onEndShowPropertiesDelegate = new EndOperationDelegate(this.OnEndShowProperties);
+            }
+            if ((this.onShowPropertiesCompletedDelegate == null)) {
+                this.onShowPropertiesCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnShowPropertiesCompleted);
+            }
+            base.InvokeAsync(this.onBeginShowPropertiesDelegate, new object[] {
+                        fileName}, this.onEndShowPropertiesDelegate, this.onShowPropertiesCompletedDelegate, userState);
+        }
+    }
 }
index 2fa9c6a..88eec79 100644 (file)
     <MetadataFile FileName="mex2.xsd" MetadataType="Schema" ID="779f496b-6495-495b-9fa1-9c38cbe9c010" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd2" />
     <MetadataFile FileName="mex3.xsd" MetadataType="Schema" ID="95acec7d-fda4-414b-918b-f868ed51aac4" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd3" />
     <MetadataFile FileName="StatusService.wsdl" MetadataType="Wsdl" ID="7a81d2fc-3a1d-410d-97bd-a4f730d1de8a" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex" />
+    <MetadataFile FileName="mex5.xsd" MetadataType="Schema" ID="37c01dd7-10e7-4ad5-bae9-0a931cf51a9f" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd5" />
     <MetadataFile FileName="mex1.wsdl" MetadataType="Wsdl" ID="507712dc-9927-4bb2-8278-0e63cda76fde" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?wsdl=wsdl1" />
     <MetadataFile FileName="mex4.xsd" MetadataType="Schema" ID="a7781e78-500e-4f4f-9d6d-75fc24f64c0e" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd4" />
+    <MetadataFile FileName="mex2.wsdl" MetadataType="Wsdl" ID="6a9fe933-3fff-42b7-872d-ed43e4bce915" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?wsdl=wsdl2" />
   </Metadata>
   <Extensions>
     <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
index 3d9ccb4..342cb64 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://PITHOS.Client.Status" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:i1="http://PITHOS.Client.Settings" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StatusService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://PITHOS.Client.Status" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:i1="http://PITHOS.Client.Settings" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:i2="http://PITHOS.Client.Commands" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StatusService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
   <wsp:Policy wsu:Id="NetNamedPipeBinding_IStatusService_policy">
     <wsp:ExactlyOne>
       <wsp:All>
       </wsp:All>
     </wsp:ExactlyOne>
   </wsp:Policy>
+  <wsp:Policy wsu:Id="NetNamedPipeBinding_ICommandsService_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1" />
+        <wsaw:UsingAddressing />
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
   <wsdl:import namespace="http://PITHOS.Client.Status" location="http://localhost:30000/pithos/mex?wsdl=wsdl0" />
   <wsdl:import namespace="http://PITHOS.Client.Settings" location="http://localhost:30000/pithos/mex?wsdl=wsdl1" />
+  <wsdl:import namespace="http://PITHOS.Client.Commands" location="http://localhost:30000/pithos/mex?wsdl=wsdl2" />
   <wsdl:types />
   <wsdl:binding name="NetNamedPipeBinding_IStatusService" type="i0:IStatusService">
     <wsp:PolicyReference URI="#NetNamedPipeBinding_IStatusService_policy" />
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
+  <wsdl:binding name="NetNamedPipeBinding_ICommandsService" type="i2:ICommandsService">
+    <wsp:PolicyReference URI="#NetNamedPipeBinding_ICommandsService_policy" />
+    <soap12:binding transport="http://schemas.microsoft.com/soap/named-pipe" />
+    <wsdl:operation name="ShowProperties">
+      <soap12:operation soapAction="http://PITHOS.Client.Commands/ICommandsService/ShowProperties" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
   <wsdl:service name="StatusService">
     <wsdl:port name="NetNamedPipeBinding_IStatusService" binding="tns:NetNamedPipeBinding_IStatusService">
       <soap12:address location="net.pipe://localhost/pithos/statuscache" />
         <wsa10:Address>net.pipe://localhost/pithos/settings</wsa10:Address>
       </wsa10:EndpointReference>
     </wsdl:port>
+    <wsdl:port name="NetNamedPipeBinding_ICommandsService" binding="tns:NetNamedPipeBinding_ICommandsService">
+      <soap12:address location="net.pipe://localhost/pithos/commands" />
+      <wsa10:EndpointReference>
+        <wsa10:Address>net.pipe://localhost/pithos/commands</wsa10:Address>
+      </wsa10:EndpointReference>
+    </wsdl:port>
   </wsdl:service>
 </wsdl:definitions>
\ No newline at end of file
index 13dae7e..ce5aeab 100644 (file)
@@ -4,9 +4,11 @@
   <bindings>
     <binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetNamedPipeBinding_IStatusService&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;transport protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_IStatusService" />
     <binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetNamedPipeBinding_ISettingsService&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;transport protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ISettingsService" />
+    <binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetNamedPipeBinding_ICommandsService&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;transport protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ICommandsService" />
   </bindings>
   <endpoints>
     <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/statuscache&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_IStatusService&quot; contract=&quot;PithosService.IStatusService&quot; name=&quot;NetNamedPipeBinding_IStatusService&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/statuscache&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_IStatusService&quot; contract=&quot;PithosService.IStatusService&quot; name=&quot;NetNamedPipeBinding_IStatusService&quot; /&gt;" contractName="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />
     <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/settings&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_ISettingsService&quot; contract=&quot;PithosService.ISettingsService&quot; name=&quot;NetNamedPipeBinding_ISettingsService&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/settings&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_ISettingsService&quot; contract=&quot;PithosService.ISettingsService&quot; name=&quot;NetNamedPipeBinding_ISettingsService&quot; /&gt;" contractName="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/commands&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_ICommandsService&quot; contract=&quot;PithosService.ICommandsService&quot; name=&quot;NetNamedPipeBinding_ICommandsService&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.pipe://localhost/pithos/commands&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;NetNamedPipeBinding_ICommandsService&quot; contract=&quot;PithosService.ICommandsService&quot; name=&quot;NetNamedPipeBinding_ICommandsService&quot; /&gt;" contractName="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />
   </endpoints>
 </configurationSnapshot>
\ No newline at end of file
index 53eb1ab..a5bcc22 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="oXFbhh/FL3s+zC86TD/5JLzGqUw=">
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="mHr9riLu0k/55JC5NK6Fa8CDlPU=">
   <bindingConfigurations>
     <bindingConfiguration bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_IStatusService">
       <properties>
         </property>
       </properties>
     </bindingConfiguration>
+    <bindingConfiguration bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ICommandsService">
+      <properties>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+        </property>
+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/transactionFlow" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Buffered</serializedValue>
+        </property>
+        <property path="/transactionProtocol" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransactionProtocol, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>OleTransactions</serializedValue>
+        </property>
+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>StrongWildcard</serializedValue>
+        </property>
+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>524288</serializedValue>
+        </property>
+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/maxConnections" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>32</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>8192</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>4096</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NetNamedPipeSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.NetNamedPipeSecurityElement</serializedValue>
+        </property>
+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.NetNamedPipeSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>None</serializedValue>
+        </property>
+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NamedPipeTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.NamedPipeTransportSecurityElement</serializedValue>
+        </property>
+        <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>EncryptAndSign</serializedValue>
+        </property>
+      </properties>
+    </bindingConfiguration>
   </bindingConfigurations>
   <endpoints>
     <endpoint name="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" bindingType="netNamedPipeBinding" address="net.pipe://localhost/pithos/statuscache" bindingConfiguration="NetNamedPipeBinding_IStatusService">
         </property>
       </properties>
     </endpoint>
+    <endpoint name="NetNamedPipeBinding_ICommandsService" contract="PithosService.ICommandsService" bindingType="netNamedPipeBinding" address="net.pipe://localhost/pithos/commands" bindingConfiguration="NetNamedPipeBinding_ICommandsService">
+      <properties>
+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>net.pipe://localhost/pithos/commands</serializedValue>
+        </property>
+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>netNamedPipeBinding</serializedValue>
+        </property>
+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+        </property>
+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>PithosService.ICommandsService</serializedValue>
+        </property>
+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+        </property>
+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>&lt;Header /&gt;</serializedValue>
+        </property>
+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+        </property>
+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+        </property>
+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+        </property>
+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>My</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>LocalMachine</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+        </property>
+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+      </properties>
+    </endpoint>
   </endpoints>
 </SavedWcfConfigurationInformation>
\ No newline at end of file
diff --git a/trunk/Pithos.ShellExtensions/Service References/PithosService/mex2.wsdl b/trunk/Pithos.ShellExtensions/Service References/PithosService/mex2.wsdl
new file mode 100644 (file)
index 0000000..5db3a49
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://PITHOS.Client.Commands" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://PITHOS.Client.Commands" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://PITHOS.Client.Commands/Imports">
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd5" namespace="http://PITHOS.Client.Commands" />
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd0" namespace="http://PITHOS.Client.Status" />
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/Pithos.Interfaces" />
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd3" namespace="http://PITHOS.Client.Settings" />
+      <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd4" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="ICommandsService_ShowProperties_InputMessage">
+    <wsdl:part name="parameters" element="tns:ShowProperties" />
+  </wsdl:message>
+  <wsdl:message name="ICommandsService_ShowProperties_OutputMessage">
+    <wsdl:part name="parameters" element="tns:ShowPropertiesResponse" />
+  </wsdl:message>
+  <wsdl:portType name="ICommandsService">
+    <wsdl:operation name="ShowProperties">
+      <wsdl:input wsaw:Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties" message="tns:ICommandsService_ShowProperties_InputMessage" />
+      <wsdl:output wsaw:Action="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse" message="tns:ICommandsService_ShowProperties_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
index d684bbf..cf51df4 100644 (file)
           </xs:appinfo>
         </xs:annotation>
       </xs:enumeration>
-      <xs:enumeration value="Synch">
-        <xs:annotation>
-          <xs:appinfo>
-            <EnumerationValue xmlns="http://schemas.microsoft.com/2003/10/Serialization/">3</EnumerationValue>
-          </xs:appinfo>
-        </xs:annotation>
-      </xs:enumeration>
     </xs:restriction>
   </xs:simpleType>
   <xs:element name="FileOverlayStatus" nillable="true" type="tns:FileOverlayStatus" />
@@ -80,7 +73,9 @@
       <xs:element minOccurs="0" name="AccountName" nillable="true" type="xs:string" />
       <xs:element minOccurs="0" name="ApiKey" nillable="true" type="xs:string" />
       <xs:element minOccurs="0" name="IsActive" type="xs:boolean" />
+      <xs:element minOccurs="0" name="RootPath" nillable="true" type="xs:string" />
       <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="SelectiveFolders" nillable="true" type="q1:ArrayOfanyType" />
+      <xs:element minOccurs="0" name="UsePithos" type="xs:boolean" />
     </xs:sequence>
   </xs:complexType>
   <xs:element name="AccountSettings" nillable="true" type="tns:AccountSettings" />
diff --git a/trunk/Pithos.ShellExtensions/Service References/PithosService/mex5.xsd b/trunk/Pithos.ShellExtensions/Service References/PithosService/mex5.xsd
new file mode 100644 (file)
index 0000000..a66c246
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://PITHOS.Client.Commands" elementFormDefault="qualified" targetNamespace="http://PITHOS.Client.Commands" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="ShowProperties">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="fileName" nillable="true" type="xs:string" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ShowPropertiesResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
\ No newline at end of file
index 29e448a..d10331b 100644 (file)
@@ -3,23 +3,51 @@
     <system.serviceModel>
         <bindings>
             <netNamedPipeBinding>
-                <binding name="NetNamedPipeBinding_IStatusService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
-                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+                <binding name="NetNamedPipeBinding_IStatusService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+                    hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+                    maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                     <security mode="None">
-                        <transport protectionLevel="EncryptAndSign"/>
+                        <transport protectionLevel="EncryptAndSign" />
                     </security>
                 </binding>
-                <binding name="NetNamedPipeBinding_ISettingsService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
-                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+                <binding name="NetNamedPipeBinding_ISettingsService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+                    hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+                    maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                     <security mode="None">
-                        <transport protectionLevel="EncryptAndSign"/>
+                        <transport protectionLevel="EncryptAndSign" />
+                    </security>
+                </binding>
+                <binding name="NetNamedPipeBinding_ICommandsService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+                    hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+                    maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                    <security mode="None">
+                        <transport protectionLevel="EncryptAndSign" />
                     </security>
                 </binding>
             </netNamedPipeBinding>
         </bindings>
         <client>
-            <endpoint address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService"/>
-            <endpoint address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISettingsService" contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService"/>
+            <endpoint address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding"
+                bindingConfiguration="NetNamedPipeBinding_IStatusService"
+                contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />
+            <endpoint address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding"
+                bindingConfiguration="NetNamedPipeBinding_ISettingsService"
+                contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />
+            <endpoint address="net.pipe://localhost/pithos/commands" binding="netNamedPipeBinding"
+                bindingConfiguration="NetNamedPipeBinding_ICommandsService"
+                contract="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />
         </client>
     </system.serviceModel>
 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>