Index: /extensions/PiwigoLib/PiwigoWpf/Command/DelegateCommand.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/DelegateCommand.cs	(revision 11926)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/DelegateCommand.cs	(revision 11926)
@@ -0,0 +1,57 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Input;
+
+namespace Com.Piwigo.Wpf.Command
+{
+    public class DelegateCommand : ICommand
+    {
+        private readonly Predicate<object> _canExecute;
+        private readonly Action<object> _execute;
+        private Boolean _isRunning;
+
+        public event EventHandler CanExecuteChanged;
+
+        public DelegateCommand(Action<object> execute)
+            : this(execute, null)
+        {
+        }
+
+        public DelegateCommand(Action<object> execute,
+                       Predicate<object> canExecute)
+        {
+            _execute = execute;
+            _canExecute = canExecute;
+            _isRunning = false;
+        }
+
+        public bool CanExecute(object parameter)
+        {
+            if ((_isRunning) || (_canExecute == null))
+            {
+                return false;
+            }
+
+            return _canExecute(parameter);
+        }
+
+        public void Execute(object parameter)
+        {
+            _isRunning = true;
+            RaiseCanExecuteChanged();
+            _execute(parameter);
+            _isRunning = false;
+            RaiseCanExecuteChanged();
+        }
+
+        public void RaiseCanExecuteChanged()
+        {
+            if (CanExecuteChanged != null)
+            {
+                CanExecuteChanged(this, EventArgs.Empty);
+            }
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdDeleteTrace.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdDeleteTrace.cs	(revision 11926)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdDeleteTrace.cs	(revision 11926)
@@ -0,0 +1,35 @@
+﻿using System;
+using System.Collections.Generic;
+using Com.Piwigo.Lib.IService;
+using Com.Piwigo.Wpf.DTO;
+using Com.Piwigo.Lib.DTO;
+using Com.Piwigo.Wpf.DTO.Helper;
+using Com.Piwigo.Wpf.Helper;
+using Com.Piwigo.Wpf.Service;
+using System.Windows.Input;
+
+namespace Com.Piwigo.Wpf.Command
+{
+    public static class PwgCmdDeleteTrace
+    {
+        public static DelegateCommand Command = new DelegateCommand(Execute, CanExecute);
+
+        private static void Execute(object obj)
+        {
+            if (PwgModelManager.Instance.lstMsgInfo != null)
+            {
+                PwgModelManager.Instance.lstMsgInfo.Clear();
+            }
+        }
+
+        private static bool CanExecute(object obj)
+        {
+            bool ret = false;
+            if (PwgModelManager.Instance.lstMsgInfo != null)
+            {
+                ret = (PwgModelManager.Instance.lstMsgInfo.Count >= 0);
+            }
+            return ret;   
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdEventsConsumer.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdEventsConsumer.cs	(revision 11926)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdEventsConsumer.cs	(revision 11926)
@@ -0,0 +1,32 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using Com.Piwigo.Wpf.DTO;
+using Com.Piwigo.Lib.DTO;
+using Com.Piwigo.Wpf.DTO.Helper;
+using Com.Piwigo.Wpf.Helper;
+using Com.Piwigo.Wpf.Service;
+namespace Com.Piwigo.Wpf.Command
+{
+    public static class  PwgCmdEventsConsumer
+    {
+        public static void PwgCmdEvents_CmdSendUiInfo(AsyncCommand cmd, EventArgs<string> stringArgs)
+        {
+            if (stringArgs != null)
+            {
+                PwgModelManager.Instance.lstMsgInfo.Add(stringArgs.Value);
+            }
+        }
+
+        public static void PwgCmdEvents_CmdRunningChanged(AsyncCommand cmd, EventArgs<bool> boolArgs)
+        {
+            if (boolArgs != null)
+            {
+                PwgModelManager.Instance.booCmdRunning = boolArgs.Value ;
+            }
+        }
+
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdSelectImageInCategory.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdSelectImageInCategory.cs	(revision 11926)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdSelectImageInCategory.cs	(revision 11926)
@@ -0,0 +1,39 @@
+﻿using System;
+using System.Collections.Generic;
+using Com.Piwigo.Lib.IService;
+using Com.Piwigo.Wpf.DTO;
+using Com.Piwigo.Lib.DTO;
+using Com.Piwigo.Wpf.DTO.Helper;
+using Com.Piwigo.Wpf.Helper;
+using Com.Piwigo.Wpf.Service;
+using System.Windows.Input;
+
+namespace Com.Piwigo.Wpf.Command
+{
+    public static class PwgCmdSelectImageInCategory
+    {
+        public static DelegateCommand Command = new DelegateCommand(Execute, CanExecute);
+
+        private static void Execute(object obj)
+        {
+            foreach (PwgImageWPF imgWpf in PwgModelManager.Instance.ImageList)
+            {
+                if (imgWpf.IsSelected)
+                {
+                    PwgModelManager.Instance.ImageShown = imgWpf;
+                }                
+            }
+        }
+
+        private static bool CanExecute(object obj)
+        {
+            bool ret = false;
+
+            if (PwgModelManager.Instance.ImageList != null)
+            {
+                ret = (PwgModelManager.Instance.ImageList.Count >= 0);
+            }
+            return ret;   
+        }
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/Command/PwgCommandEvents.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Command/PwgCommandEvents.cs	(revision 11926)
+++ /extensions/PiwigoLib/PiwigoWpf/Command/PwgCommandEvents.cs	(revision 11926)
@@ -0,0 +1,76 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Com.Piwigo.Wpf.Command
+{
+    public class EventArgs<T> : EventArgs
+    {
+        public EventArgs(T value)
+        {
+            m_value = value;
+        }
+
+        private T m_value;
+
+        public T Value
+        {
+            get { return m_value; }
+        }
+    }
+
+    public class PwgCmdEvents
+    {
+        #region Event for command start/stop running
+        // The delegate the subscribers must implement.
+        public delegate void CmdRunningChangedHandler(
+         AsyncCommand cmd,
+         EventArgs<Boolean>  boolArgs
+        );
+
+        // The event we publish
+        public static event CmdRunningChangedHandler CmdRunningChanged;
+
+        // The method which fires the Event
+        public static void OnCmdRunningChanged(
+           AsyncCommand cmd,
+           EventArgs<Boolean> boolArgs
+        )
+
+        {
+            // Check if there are any Subscribers
+            if (CmdRunningChanged != null)
+            {
+                // Call the Event
+                CmdRunningChanged(cmd, boolArgs);
+            }
+        }
+        #endregion
+
+        #region Event for command send UI info
+        // The delegate the subscribers must implement.
+        public delegate void CmdSendUiInfoHandler(
+         AsyncCommand cmd,
+         EventArgs<String> stringArgs
+        );
+
+        // The event we publish
+        public static event CmdSendUiInfoHandler CmdSendUiInfo;
+
+        // The method which fires the Event
+        public static void OnCmdSendUiInfo(
+           AsyncCommand cmd,
+           EventArgs<String> stringArgs
+        )
+        {
+            // Check if there are any Subscribers
+            if (CmdSendUiInfo != null)
+            {
+                // Call the Event
+                CmdSendUiInfo(cmd, stringArgs);
+            }
+        }
+        #endregion
+    }
+}
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryWPF.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryWPF.cs	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryWPF.cs	(revision 11926)
@@ -75,4 +75,65 @@
                 PropertyChanged(this, new PropertyChangedEventArgs(info));
         }
+
+        #region Presentation Members
+
+        #region IsExpanded
+
+        /// <summary>
+        /// Gets/sets whether the TreeViewItem 
+        /// associated with this object is expanded.
+        /// </summary>
+        private bool _isExpanded = false;
+        public bool IsExpanded
+        {
+            get { return _isExpanded; }
+            set
+            {
+                if (value != _isExpanded)
+                {
+                    _isExpanded = value;
+                    this.OnPropertyChanged("IsExpanded");
+                }
+
+                // Expand all the way up to the root.
+                if (_isExpanded && _parent != null)
+                    _parent.IsExpanded = true;
+            }
+        }
+
+        #endregion // IsExpanded
+
+        #region IsSelected
+
+        /// <summary>
+        /// Gets/sets whether the TreeViewItem 
+        /// associated with this object is selected.
+        /// </summary>
+        private bool _isSelected = false;
+        public bool IsSelected
+        {
+            get { return _isSelected; }
+            set
+            {
+                if (value != _isSelected)
+                {
+                    _isSelected = value;
+                    this.OnPropertyChanged("IsSelected");
+                }
+            }
+        }
+
+        #endregion // IsSelected
+
+        #region Parent
+        private PwgCategoryWPF _parent = null;
+        public PwgCategoryWPF Parent
+        {
+            get { return _parent; }
+        }
+
+        #endregion // Parent
+
+        #endregion // Presentation Members        
     }
 }
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageWPF.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageWPF.cs	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgImageWPF.cs	(revision 11926)
@@ -12,4 +12,18 @@
     public class PwgImageWPF : INotifyPropertyChanged
     {
+        private String _imgSourceThumb;
+        public String ImgSourceThumb
+        {
+            set { _imgSourceThumb = value; OnPropertyChanged("ImgSourceThumb"); }
+            get
+            {
+                if (_imgSourceThumb == null)
+                {
+                    _imgSourceThumb = Com.Piwigo.Wpf.Service.ImageCacheManager.Instance.GetImageFilename(this, "Thumb");
+                }
+                return _imgSourceThumb;
+            }
+        }
+
         private String _imgSource;
         public String ImgSource
@@ -20,10 +34,18 @@
                 if (_imgSource == null)
                 {
-                    _imgSource = Com.Piwigo.Wpf.Service.ImageCacheManager.Instance.GetImageFilename(this);
+                    _imgSource = Com.Piwigo.Wpf.Service.ImageCacheManager.Instance.GetImageFilename(this, "LowRes");
                 }
                 return _imgSource;
             }
         }
-        
+
+        private bool isSelected = false;
+        public bool IsSelected
+        {
+            get { return isSelected; }
+            set { isSelected = value; OnPropertyChanged("IsSelected"); }
+        }
+
+
 
         private Int32 _id;
Index: /extensions/PiwigoLib/PiwigoWpf/DTO/PwgModelManager.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/DTO/PwgModelManager.cs	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/DTO/PwgModelManager.cs	(revision 11926)
@@ -25,5 +25,5 @@
         }
 
-        public class PwgModelManagerBase
+        public class PwgModelManagerBase : INotifyPropertyChanged
         {
             private AsyncObservableCollection<String> _lstMsgInfo = new AsyncObservableCollection<String>();
@@ -62,4 +62,11 @@
             }
 
+            private PwgImageWPF _imageShown;
+            public PwgImageWPF ImageShown
+            {
+                get { return _imageShown; }
+                set { _imageShown = value; OnPropertyChanged("ImageShown"); }
+            }
+            
             public event PropertyChangedEventHandler PropertyChanged;
             internal void OnPropertyChanged(String info)
@@ -69,6 +76,4 @@
             }
         }
-
-        
     }
 }
Index: /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml	(revision 11926)
@@ -14,192 +14,43 @@
         <pwghlp:AdvBooltoVisibilityConverter x:Key="AdvBooltoVisibilityConverter"  Collapse="False" Reverse="False" />
         <pwghlp:AdvBooltoVisibilityConverter x:Key="AdvBooltoVisibilityConverterReversal"  Collapse="False" Reverse="True" />
-               <!-- DATA TEMPLATES -->
-
-        <DataTemplate DataType="{x:Type pwgdto:PwgImageWPF}">
-            <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue"
-                    DataContext="{Binding}"><!--Source="{Binding UrlElement}"-->
-                <Image ToolTip="{Binding File}" >
-                    <Image.Source>
-                        <Binding Path="ImgSource" /> <!--Converter="{x:Static pwgsrv:ImageCacheManager.ImageUrlCachedConverter}"-->
-                    </Image.Source>
-                </Image>
-            </Border>
-        </DataTemplate>
-
-        <DataTemplate DataType="{x:Type pwgdto:PwgCategoryWPF}"  >
-            <Border VerticalAlignment="Center" HorizontalAlignment="Center" 
-                    Padding="4" Margin="1" 
-                    Background="LightBlue"
-                    DataContext="{Binding}">
-                <StackPanel Orientation="Vertical" DataContext="{Binding}" VerticalAlignment="Center" >
-                    <Image Source="pack://application:,,,/Pictures/folder_images.png" 
-                           Stretch="Uniform"
-                           MaxHeight="128"
-                           MaxWidth="128">
-                        <Image.ToolTip>
-                            <StackPanel Orientation="Vertical">
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock Text="{Binding Path=ImagesCount}"/>
-                                <TextBlock Text=" images inside"/>
-                            </StackPanel>
-                                <StackPanel Orientation="Horizontal">
-                                    <TextBlock Text="{Binding Path=SubCategoriesCount}"/>
-                                    <TextBlock Text=" categories inside"/>
-                                </StackPanel>
-                            </StackPanel>
-                        </Image.ToolTip>
-                    </Image>
-                    <TextBlock Text="{Binding Name}" />
-                </StackPanel>
-            </Border>
-        </DataTemplate>
-
-        <Style x:Key="CategoryListStyle" TargetType="{x:Type ListBox}">
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type ListBox}" >
-                        <Border 
-							BorderBrush="Gray" 
-							BorderThickness="1" 
-							CornerRadius="6" 
-                            Background="LightBlue"                            
-							 >
-                            <!--Background="{DynamicResource ListBoxGradient}"-->
-                            <ScrollViewer 
-								VerticalScrollBarVisibility="Auto" 
-								HorizontalScrollBarVisibility="Disabled">
-                                <StackPanel  
-									IsItemsHost="True" 
-									Orientation="Vertical" 
-									HorizontalAlignment="Center"
-                                    VerticalAlignment="Top"/>
-                            </ScrollViewer>
-                        </Border>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
-        </Style>
-
-        <Style x:Key="CategoryListItem" TargetType="{x:Type ListBoxItem}">
-            <Setter Property="MaxHeight" Value="128" />
-            <Setter Property="MinHeight" Value="128" />
-            <Setter Property="Opacity" Value=".75" />
-            <Style.Triggers>
-                <EventTrigger RoutedEvent="Mouse.MouseEnter">
-                    <EventTrigger.Actions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="MaxHeight" 
-									To="220" />
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="Opacity"
-									To="1.0" />
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </EventTrigger.Actions>
-                </EventTrigger>
-
-                <EventTrigger RoutedEvent="Mouse.MouseLeave">
-                    <EventTrigger.Actions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation 
-									Duration="0:0:1" 
-									Storyboard.TargetProperty="MaxHeight" />
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="Opacity" />
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </EventTrigger.Actions>
-                </EventTrigger>
-            </Style.Triggers>
-        </Style>
-        <!-- PHOTOLIST TEMPLATE -->
-        
-        <Style x:Key="PhotoListStyle" TargetType="{x:Type ListBox}">
-            <Setter Property="Template">
-                <Setter.Value>
-                    <ControlTemplate TargetType="{x:Type ListBox}" >
-                        <Border 
-							BorderBrush="Gray" 
-							BorderThickness="1" 
-							CornerRadius="6" 
-                            Background="LightBlue"                            
-							 >
-                            <!--Background="{DynamicResource ListBoxGradient}"-->
-                            <ScrollViewer 
-								VerticalScrollBarVisibility="Disabled" 
-								HorizontalScrollBarVisibility="Auto">
-                                <StackPanel  
-									IsItemsHost="True" 
-									Orientation="Horizontal" 
-									HorizontalAlignment="Left" />
-                            </ScrollViewer>
-                        </Border>
-                    </ControlTemplate>
-                </Setter.Value>
-            </Setter>
-        </Style>
-
-        <!-- PHOTOLIST STORYBOARDS -->
-
-        <Style x:Key="PhotoListItem" TargetType="{x:Type ListBoxItem}">
-            <Setter Property="MaxHeight" Value="75" />
-            <Setter Property="MinHeight" Value="75" />
-            <Setter Property="Opacity" Value=".75" />
-            <Style.Triggers>
-                <EventTrigger RoutedEvent="Mouse.MouseEnter">
-                    <EventTrigger.Actions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="MaxHeight" 
-									To="85" />
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="Opacity"
-									To="1.0" />
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </EventTrigger.Actions>
-                </EventTrigger>
-
-                <EventTrigger RoutedEvent="Mouse.MouseLeave">
-                    <EventTrigger.Actions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation 
-									Duration="0:0:1" 
-									Storyboard.TargetProperty="MaxHeight" />
-                                <DoubleAnimation 
-									Duration="0:0:0.2" 
-									Storyboard.TargetProperty="Opacity" />
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </EventTrigger.Actions>
-                </EventTrigger>
-            </Style.Triggers>
-        </Style>
-
-        <!--<Style TargetType="{x:Type pwg:MainWindow}">
-            <Setter Property="Background" Value="{DynamicResource WindowGradient}" />
-        </Style>-->
-
     </Window.Resources>
-    <DockPanel Name="mainDockPanel"  Margin="5">
-        <StackPanel Name="headerStackPanel" DockPanel.Dock="Top" Orientation="Vertical">
+    <Grid>
+        <Grid.ColumnDefinitions >
+            <ColumnDefinition Width="*"/>
+            <ColumnDefinition Width="Auto"/>
+            <ColumnDefinition Width="*" MinWidth="600"/>
+        </Grid.ColumnDefinitions>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto" />
+            <RowDefinition Height="*" />
+            <RowDefinition Height="Auto" />
+            <RowDefinition Height="*" />
+            <RowDefinition Height="Auto" />
+        </Grid.RowDefinitions>
+        <StackPanel Name="headerStackPanel" 
+            Grid.Column="0"
+            Grid.ColumnSpan="3"
+            Grid.Row="0"  
+            Orientation="Vertical">
             <StackPanel Name="headerStackPanelLogo" Orientation="Horizontal" >
-                <Image Name="ImgPiwigoLogo" MinHeight="50" MinWidth="50"
+                <Image Name="ImgPiwigoLogo" MinHeight="50" MinWidth="50" Margin="5"
                    Source="pack://application:,,,/Pictures/PiwigoLogo.png" 
                    ToolTip="www.piwigo.org" Stretch="None" HorizontalAlignment="Left" />
-                <Image Name="ImgGlobe" 
-                   Visibility="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=booCmdRunning, Converter={StaticResource AdvBooltoVisibilityConverterReversal}}"
-                   Source="pack://application:,,,/Pictures/Globe.png" 
+                <Image Name="ImgGlobe" Margin="2" 
+                   Visibility="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=booCmdRunning, Converter={StaticResource AdvBooltoVisibilityConverter}}"
+                   Source="pack://application:,,,/Pictures/128x128/Globe.png" 
                    ToolTip="www.piwigo.org" Stretch="None" HorizontalAlignment="Right"/>
+                <UniformGrid  Name="SessInfo" Margin="10" DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=Session}" Columns="2" Rows="5">
+                    <Label Content="Status"/>
+                    <Label Content="{Binding Path=Status}"/>
+                    <Label Content="Template"/>
+                    <Label Content="{Binding Path=Template}"/>
+                    <Label Content="Theme"/>
+                    <Label Content="{Binding Path=Theme}"/>
+                    <Label Content="Language"/>
+                    <Label Content="{Binding Path=Language}"/>
+                    <Label Content="CharSet"/>
+                    <Label Content="{Binding Path=CharSet}"/>
+                </UniformGrid>
             </StackPanel>
             <StackPanel Name="connectStackPanel" Orientation="Horizontal" VerticalAlignment="Center"  Margin="5"
@@ -213,24 +64,180 @@
                 <TextBox Height="23" Name="TbUrl" Width="300" Text="{Binding Path=ServeurName, Mode=TwoWay}"/>
                 <CheckBox Margin="2" VerticalAlignment="Center" IsChecked="{Binding Path=SaveSetting, Mode=TwoWay}">Save settings</CheckBox>
-                <Button Margin="2" Command="{x:Static pwgcmd:PwgCmdProvider.PwgCmdConnect}" Visibility="{Binding Path=IsConnected, Converter={StaticResource AdvBooltoVisibilityConverterReversal}}">Conect</Button>
-                <Button Margin="2" Command="{x:Static pwgcmd:PwgCmdProvider.PwgCmdDisconnect}" Visibility="{Binding Path=IsConnected, Converter={StaticResource AdvBooltoVisibilityConverter}}">Disconect</Button>
+                <Button Margin="2" Command="{x:Static pwgcmd:PwgCmdProvider.PwgCmdConnect}" Visibility="{Binding Path=IsConnected, Converter={StaticResource AdvBooltoVisibilityConverterReversal}}">Connect</Button>
+                <Button Margin="2" Command="{x:Static pwgcmd:PwgCmdProvider.PwgCmdDisconnect}" Visibility="{Binding Path=IsConnected, Converter={StaticResource AdvBooltoVisibilityConverter}}">Disconnect</Button>
             </StackPanel>
         </StackPanel>
-        <ListView Name="listViewLogUiInfo"  DockPanel.Dock="Bottom" 
-                  DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=lstMsgInfo}" 
-                  ItemsSource="{Binding }" />
+        <TreeView Name="listViewCategory"  
+                Grid.Column="0"
+                Grid.Row="1"  
+                Grid.RowSpan="3"
+                MinWidth="100" 
+                DataContext="{Binding Source={StaticResource Categories}}" 
+                ItemsSource="{Binding }" MouseDoubleClick="listViewCategory_MouseDoubleClick">
+            <TreeView.ItemContainerStyle>
+                <!-- 
+    This Style binds a TreeViewItem to a TreeViewItemViewModel. 
+    -->
+                <Style TargetType="{x:Type TreeViewItem}">
+                    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
+                    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
+                    <Setter Property="FontWeight" Value="Normal" />
+                    <Setter Property="Opacity" Value=".75" />
+                    <Style.Triggers>
+                        <EventTrigger RoutedEvent="Mouse.MouseEnter">
+                            <EventTrigger.Actions>
+                                <BeginStoryboard>
+                                    <Storyboard>
+                                        <DoubleAnimation 
+									    Duration="0:0:0.2" 
+									    Storyboard.TargetProperty="Opacity"
+									    To="1.0" />
+                                    </Storyboard>
+                                </BeginStoryboard>
+                            </EventTrigger.Actions>
+                        </EventTrigger>
+                        <EventTrigger RoutedEvent="Mouse.MouseLeave">
+                            <EventTrigger.Actions>
+                                <BeginStoryboard>
+                                    <Storyboard>
+                                        <DoubleAnimation
+									    Duration="0:0:0.2" 
+									    Storyboard.TargetProperty="Opacity" />
+                                    </Storyboard>
+                                </BeginStoryboard>
+                            </EventTrigger.Actions>
+                        </EventTrigger>
+                        <Trigger Property="IsSelected" Value="True">
+                            <Setter Property="FontWeight" Value="Bold" />
+                        </Trigger>
+                    </Style.Triggers>
+                </Style>
+            </TreeView.ItemContainerStyle>
+            <TreeView.Resources>
+                <HierarchicalDataTemplate 
+                DataType="{x:Type pwgdto:PwgCategoryWPF}" 
+                ItemsSource="{Binding Children}"
+                >
+                    <StackPanel Orientation="Horizontal" DataContext="{Binding}" 
+                        VerticalAlignment="Center" HorizontalAlignment="Center">
+                        <Image Source="pack://application:,,,/Pictures/22x22/folder_images.png" Margin="5"
+                        Stretch="None">
+                            <Image.ToolTip>
+                                <StackPanel Orientation="Vertical">
+                                    <StackPanel Orientation="Horizontal">
+                                        <TextBlock Text="{Binding Path=ImagesCount}"/>
+                                        <TextBlock Text=" images inside"/>
+                                    </StackPanel>
+                                    <StackPanel Orientation="Horizontal">
+                                        <TextBlock Text="{Binding Path=SubCategoriesCount}"/>
+                                        <TextBlock Text=" categories inside"/>
+                                    </StackPanel>
+                                </StackPanel>
+                            </Image.ToolTip>
+                        </Image>
+                        <TextBlock Text="{Binding Name}" />
+                    </StackPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.Resources>
+        </TreeView>
+        <GridSplitter   ResizeDirection="Columns"
+                    Grid.Column="1"
+                    Grid.Row="1"  
+                    Grid.RowSpan="3"
+                    Width="10" Background="Azure" ShowsPreview="True" ResizeBehavior="PreviousAndNext"></GridSplitter>
+        <ListView Name="listViewImage"   
+            Grid.Column="3"
+            Grid.Row="1"   
+            MinWidth="500"
+            DataContext="{Binding Source={StaticResource Images}}" 
+            ItemsSource="{Binding }" SelectionMode="Single" IsSynchronizedWithCurrentItem="True" SelectionChanged="listViewImage_SelectionChanged">
+            <ListView.ItemsPanel>
+                <ItemsPanelTemplate>
+                    <UniformGrid/>
+                </ItemsPanelTemplate>
+            </ListView.ItemsPanel>
+            <ListView.ItemContainerStyle>
+                <Style TargetType="{x:Type ListViewItem}">
+                    <Setter Property="FontWeight" Value="Normal" />
+                    <Setter Property="MaxHeight" Value="75" />
+                    <Setter Property="MinHeight" Value="75" />
+                    <Setter Property="Opacity" Value=".75" />
+                    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
+                    <Style.Triggers>
+                        <EventTrigger RoutedEvent="Mouse.MouseEnter">
+                            <EventTrigger.Actions>
+                                <BeginStoryboard>
+                                    <Storyboard>
+                                        <DoubleAnimation 
+									Duration="0:0:0.2" 
+									Storyboard.TargetProperty="Opacity"
+									To="1.0" />
+                                    </Storyboard>
+                                </BeginStoryboard>
+                            </EventTrigger.Actions>
+                        </EventTrigger>
+                        <EventTrigger RoutedEvent="Mouse.MouseLeave">
+                            <EventTrigger.Actions>
+                                <BeginStoryboard>
+                                    <Storyboard>
+                                        <DoubleAnimation
+									Duration="0:0:0.2" 
+									Storyboard.TargetProperty="Opacity" />
+                                    </Storyboard>
+                                </BeginStoryboard>
+                            </EventTrigger.Actions>
+                        </EventTrigger>
+                        <Trigger Property="IsSelected" Value="True">
+                            <Setter Property="FontWeight" Value="Bold" />
+                        </Trigger>
+                    </Style.Triggers>
+                </Style>
+            </ListView.ItemContainerStyle>
+            <ListView.Resources>
+                <DataTemplate DataType="{x:Type pwgdto:PwgImageWPF}">
+                    <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue"
+                    DataContext="{Binding}">
+                        <!--Source="{Binding UrlElement}"-->
+                        <Image ToolTip="{Binding File}" >
+                            <Image.Source>
+                                <Binding Path="ImgSourceThumb" />
+                                <!--Converter="{x:Static pwgsrv:ImageCacheManager.ImageUrlCachedConverter}"-->
+                            </Image.Source>
+                        </Image>
+                    </Border>
+                </DataTemplate>
+            </ListView.Resources>
+        </ListView>
+        <GridSplitter   ResizeDirection="Rows"
+                    Grid.Column="3"
+                    Grid.Row="2"  
+                    Height="3" Background="Azure" ShowsPreview="True" ResizeBehavior="PreviousAndNext"></GridSplitter>
+        <StackPanel Grid.Column="3"
+                    Grid.Row="3" 
+                    MinHeight="150" MinWidth="200"  DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=ImageShown}">
+            <Image ToolTip="{Binding Path=File}" >
+                <Image.Source>
+                    <Binding Path="ImgSource" />
+                </Image.Source>
+            </Image>
+        </StackPanel>
+        <Expander  
+            Grid.Column="0"
+            Grid.ColumnSpan="3"
+            Grid.Row="4"  >
+            <Expander.Header>
+                <Button Height="18" Name="btnDeleteLog" Width="18" 
+                        ToolTip="Delete activity trace"
+                        Command="{x:Static pwgcmd:PwgCmdDeleteTrace.Command}">
+                    <Button.Content>
+                        <Image Source="/PiwigoWpf;component/Pictures/16x16/14_layer_deletelayer.png" Stretch="None" />
+                    </Button.Content>
+                </Button>
+            </Expander.Header>
+            <ListView Name="listViewLogUiInfo"
+                DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=lstMsgInfo}" 
+                ItemsSource="{Binding }" />
+        </Expander>
+    </Grid>
 
-        <ListView Name="listViewCategory"  DockPanel.Dock="Left" MinWidth="100" 
-                  Style="{DynamicResource CategoryListStyle}"
-                  ItemContainerStyle="{DynamicResource CategoryListItem}" 
-                  DataContext="{Binding Source={StaticResource Categories}}" 
-                  ItemsSource="{Binding }" MouseDoubleClick="listViewCategory_MouseDoubleClick" />
-        
-        <ListView Name="listViewImage"  DockPanel.Dock="Right"  MinWidth="500"
-                  Style="{DynamicResource PhotoListStyle}"
-                  ItemContainerStyle="{DynamicResource PhotoListItem}" 
-                  DataContext="{Binding Source={StaticResource Images}}" 
-                  ItemsSource="{Binding }" />
-    </DockPanel>
-    
 </Window>
Index: /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml.cs	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml.cs	(revision 11926)
@@ -28,9 +28,19 @@
             PwgCmdEvents.CmdSendUiInfo += new PwgCmdEvents.CmdSendUiInfoHandler(PwgCmdEventsConsumer.PwgCmdEvents_CmdSendUiInfo);
         }
-        
+
         private void listViewCategory_MouseDoubleClick(object sender, MouseButtonEventArgs e)
         {
             AppHelper.ExecuteCommand<PwgCmdGetImageforCategory>(listViewCategory.SelectedValue);
         }
+
+        private void listViewImage_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (PwgCmdSelectImageInCategory.Command.CanExecute(sender))
+            {
+                PwgCmdSelectImageInCategory.Command.Execute(sender);
+            }
+        }
+
+
     }
 }
Index: /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj	(revision 11926)
@@ -77,4 +77,7 @@
       <SubType>Designer</SubType>
     </ApplicationDefinition>
+    <Compile Include="Command\PwgCmdSelectImageInCategory.cs" />
+    <Compile Include="Command\DelegateCommand.cs" />
+    <Compile Include="Command\PwgCmdDeleteTrace.cs" />
     <Compile Include="Command\PwgCmdDisconnect.cs" />
     <Compile Include="Command\PwgCmdEventsConsumer.cs" />
@@ -184,8 +187,17 @@
   </ItemGroup>
   <ItemGroup>
-    <Resource Include="Pictures\Globe.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Pictures\folder_images.png" />
+    <Resource Include="Pictures\128x128\folder_images.png" />
+    <Resource Include="Pictures\128x128\Globe.png" />
+    <Resource Include="Pictures\128x128\load.gif" />
+    <Resource Include="Pictures\16x16\14_layer_deletelayer.png" />
+    <Resource Include="Pictures\16x16\14_layer_lowerlayer.png" />
+    <Resource Include="Pictures\64x64\folder_images.png" />
+    <Resource Include="Pictures\64x64\html.png" />
+    <Resource Include="Pictures\64x64\images.png" />
+    <Resource Include="Pictures\64x64\load.gif" />
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Pictures\22x22\folder_html.png" />
+    <Resource Include="Pictures\22x22\folder_images.png" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /extensions/PiwigoLib/PiwigoWpf/Services/ImageCacheManager.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoWpf/Services/ImageCacheManager.cs	(revision 11925)
+++ /extensions/PiwigoLib/PiwigoWpf/Services/ImageCacheManager.cs	(revision 11926)
@@ -27,5 +27,10 @@
         public static String GetDefaultImage()
         {
-            return ("pack://application:,,,/Pictures/Globe.png");
+            return ("pack://application:,,,/Pictures/64x64/images.png");
+        }
+
+        public static String GetLoadImage()
+        {
+            return ("pack://application:,,,/Pictures/64x64/html.png");
         }
 
@@ -213,7 +218,7 @@
             }
 
-            public String GetImageFilename(PwgImageWPF aImageWPF)
-                {
-                    String retImgSrc = String.Empty;
+            public String GetImageFilename(PwgImageWPF aImageWPF, String strImageType)
+                {
+                    String retImgSrc = GetDefaultImage();
                     if (aImageWPF == null)
                     {
@@ -223,9 +228,15 @@
                     if (_currentCategory != null)
                     {
-                        String localFile = Path.Combine(_currentCategory.BasePath.FullName, String.Format("{0}-{1}", aImageWPF.Id, aImageWPF.File));
+                        String localDir = Path.Combine(_currentCategory.BasePath.FullName, strImageType);
+                        if (!Directory.Exists(localDir))
+                        {
+                            Directory.CreateDirectory(localDir);
+                        }
+
+                        String localFile = Path.Combine(localDir, String.Format("{0}-{1}", aImageWPF.Id, aImageWPF.File));
 
                         if (!File.Exists(localFile))
                         {
-                            retImgSrc = GetDefaultImage();
+                            retImgSrc = GetLoadImage();
 
                             ThreadPool.QueueUserWorkItem((WaitCallback)delegate
@@ -246,5 +257,14 @@
                                 image.Save(localFile);
 
-                                aImageWPF.ImgSource = localFile; 
+                                switch (strImageType)
+                                {
+                                    case "Thumb" :
+                                        aImageWPF.ImgSourceThumb = localFile;
+                                        break;
+                                    case "LowRes":
+                                        aImageWPF.ImgSource = localFile; 
+                                        break;
+                                }
+
                             });
                         }
