Index: /extensions/pLoader/trunk/src/Uploader/GUI/DlgCommon.pm
===================================================================
--- /extensions/pLoader/trunk/src/Uploader/GUI/DlgCommon.pm	(revision 4783)
+++ /extensions/pLoader/trunk/src/Uploader/GUI/DlgCommon.pm	(revision 4784)
@@ -241,5 +241,5 @@
                 $self->properties->{$_}->{staticbox_label}
             ) if exists $self->properties->{$_}->{staticbox_label};
-        
+
             # radiobox
             my $labels =$self->properties->{$_}->{labels};
@@ -248,4 +248,12 @@
                 $ctrl->SetItemLabel($i, $labels->[$i]);
             }
+
+            # notebook pages
+            my $texts =$self->properties->{$_}->{texts};
+            $texts||=[];
+            for(my $i=0; $i < scalar @$texts ; $i++){
+                $ctrl->SetPageText($i, $texts->[$i]);
+            }
+
         }
     }
Index: /extensions/pLoader/trunk/src/Uploader/GUI/Frame.pm
===================================================================
--- /extensions/pLoader/trunk/src/Uploader/GUI/Frame.pm	(revision 4783)
+++ /extensions/pLoader/trunk/src/Uploader/GUI/Frame.pm	(revision 4784)
@@ -131,20 +131,4 @@
 __PACKAGE__->mk_accessors( @properties );
 
-use Wx::Event 
-    qw/
-          EVT_MENU
-          EVT_BUTTON
-          EVT_TREE_SEL_CHANGED
-          EVT_TREE_END_LABEL_EDIT
-          EVT_CLOSE 
-          EVT_LIST_END_LABEL_EDIT
-          EVT_LIST_ITEM_SELECTED
-          EVT_LIST_ITEM_ACTIVATED
-          EVT_LIST_ITEM_RIGHT_CLICK
-          EVT_TREE_ITEM_RIGHT_CLICK
-          EVT_LIST_KEY_DOWN
-          EVT_SPLITTER_SASH_POS_CHANGING
-      /;
-      
 use Wx::Perl::TextValidator;
 use Uploader::GUI::wxImageListCtrl;
@@ -369,5 +353,7 @@
                 selection => sub { $self->imagelist->current_image->privacy_level(@_)},
                 choices => wxTheApp->privacy_level_choices,
-            }
+            },
+            $main::PHOTO_PROPERTIES_NB => { texts => [gettext("Photo properties"), gettext("Tags")] },
+            $main::PHOTO_PROPERTIES_UPLOAD => { label=>gettext("Upload to Piwigo") },
         }
     );    
@@ -696,5 +682,5 @@
     $self->create_toolbar;
 
-    $self->{sizer_h} = Wx::BoxSizer->new( wxHORIZONTAL );
+    my $sizer_h = Wx::BoxSizer->new( wxHORIZONTAL );
     
 
@@ -711,7 +697,4 @@
     );
 
-    $self->horizontal_splitter(
-        Wx::SplitterWindow->new( $self, -1 , wxDefaultPosition, wxDefaultSize, wxSP_3D )
-    );
 
     $self->init_panels;
@@ -720,5 +703,5 @@
         Uploader::GUI::wxPhotoProperties->new(
             {
-                parentwnd       => $self->horizontal_splitter,
+                parentwnd       => $self,
                 properties      => $self->piwigo_photo_properties,
                 tags            =>
@@ -737,12 +720,8 @@
     );
 
-    $self->create_tree;
-
-    $self->horizontal_splitter->SetMinimumPaneSize(50);
-    $self->horizontal_splitter->SplitHorizontally(
-        $self->dlg_piwigo_photo_properties,
-        $self->tree,
-        400
-    );
+    $self->create_tree(
+        $self->dlg_piwigo_photo_properties->FindWindow($main::PHOTO_PROPERTIES_CATEGORIES)
+    );
+
 
     $self->init_dnd_targets;
@@ -758,13 +737,14 @@
 
     # the imageviewer has a stretch factor of 1 : expands its size on frame resize
-    $self->{sizer_h}->AddWindow( $self->imageviewer, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL||wxSHAPED, 2 );
-    $self->{sizer_h}->AddWindow( $self->horizontal_splitter, 0, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL||wxSHAPED, 2 );
+    $sizer_h->AddWindow( $self->imageviewer, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL||wxSHAPED, 2 );
+    $sizer_h->AddWindow( $self->dlg_piwigo_photo_properties, 0, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL||wxSHAPED, 2 );
     $self->SetSizer(
-        $self->{sizer_h}
-    );
-
-    $self->{sizer_h}->SetSizeHints(
+        $sizer_h
+    );
+
+    $sizer_h->SetSizeHints(
         $self
     );
+
 
 
@@ -989,5 +969,5 @@
 
 sub create_tree {
-    my ( $self ) = @_;
+    my ( $self, $tree ) = @_;
 
     my $images = [
@@ -1009,5 +989,5 @@
    
     $self->tree( 
-        Wx::TreeCtrl->new( 
+        $tree || Wx::TreeCtrl->new( 
            $self->horizontal_splitter, 
            -1, 
@@ -1206,17 +1186,16 @@
     Wx::Event::EVT_MENU( $self, 105, \&OnChooseLanguage );
     Wx::Event::EVT_CHOICE( $self, 106, \&OnPhotoSelMode );
-    EVT_TREE_SEL_CHANGED( $self, $self->tree, \&OnTreeSelChanged );
-    EVT_TREE_ITEM_RIGHT_CLICK( $self, $self->tree, \&OnTreeItemRightClick );
-    EVT_TREE_END_LABEL_EDIT( $self, $self->tree, \&OnTreeEndLabelEdit );
-
-    EVT_LIST_END_LABEL_EDIT( $self, $self->imageviewer, \&OnImageViewerEndLabelEdit );
-    EVT_LIST_ITEM_ACTIVATED( $self, $self->imageviewer, \&OnImageViewerItemActivated );
-    EVT_LIST_ITEM_SELECTED($self, $self->imageviewer, \&OnImageViewerItemSelected) ;
-    EVT_LIST_ITEM_RIGHT_CLICK($self, $self->imageviewer, \&OnImageViewerItemRightClick) ;
-
-    EVT_LIST_KEY_DOWN($self, $self->imageviewer, \&OnImageViewerKeyDown) ;
-
-    EVT_CLOSE( $self, \&OnClose );
-
+    Wx::Event::EVT_TREE_SEL_CHANGED( $self, $self->tree, \&OnTreeSelChanged );
+    Wx::Event::EVT_TREE_ITEM_RIGHT_CLICK( $self, $self->tree, \&OnTreeItemRightClick );
+    Wx::Event::EVT_TREE_END_LABEL_EDIT( $self, $self->tree, \&OnTreeEndLabelEdit );
+
+    Wx::Event::EVT_LIST_END_LABEL_EDIT( $self, $self->imageviewer, \&OnImageViewerEndLabelEdit );
+    Wx::Event::EVT_LIST_ITEM_ACTIVATED( $self, $self->imageviewer, \&OnImageViewerItemActivated );
+    Wx::Event::EVT_LIST_ITEM_SELECTED($self, $self->imageviewer, \&OnImageViewerItemSelected) ;
+    Wx::Event::EVT_LIST_ITEM_RIGHT_CLICK($self, $self->imageviewer, \&OnImageViewerItemRightClick) ;
+
+    Wx::Event::EVT_LIST_KEY_DOWN($self, $self->imageviewer, \&OnImageViewerKeyDown) ;
+
+    Wx::Event::EVT_CLOSE( $self, \&OnClose );
 
     Wx::Event::EVT_MENU( $self, 1+$ID_TREE_CTX_MENU, \&OnAddCategories );
@@ -1228,5 +1207,5 @@
     Wx::Event::EVT_MENU( $self, 2+$ID_IMAGEVIEWER_CTX_MENU, \&OnPreview );
 
-
+    Wx::Event::EVT_BUTTON( $self, $main::PHOTO_PROPERTIES_UPLOAD, \&OnUploadImages );
 
 }
Index: /extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm
===================================================================
--- /extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm	(revision 4783)
+++ /extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm	(revision 4784)
@@ -128,4 +128,5 @@
 # at that moment, object is not yet instanciated
 # only way : class variable
+# there is only one instance of wxApp
 my $bin_dir;
 my $resource_dir;
@@ -645,8 +646,9 @@
     my $icon = Wx::Icon->new();
     $icon->LoadFile(
-        File::Spec->catfile($self->bin_dir, '..', 'res', 'favicon.ico'), 
+        $self->resource_path('favicon.ico'), 
         wxBITMAP_TYPE_ICO
     );
-    $self->login_dlg->SetIcon($icon);	
+
+    $self->login_dlg->SetIcon($icon);
 
     
@@ -921,5 +923,5 @@
         wxBITMAP_TYPE_ICO
     );
-    $self->frame->SetIcon($icon);	
+    $self->frame->SetIcon($icon);
 }
 
Index: /extensions/pLoader/trunk/src/Uploader/GUI/wxPhotoProperties.pm
===================================================================
--- /extensions/pLoader/trunk/src/Uploader/GUI/wxPhotoProperties.pm	(revision 4783)
+++ /extensions/pLoader/trunk/src/Uploader/GUI/wxPhotoProperties.pm	(revision 4784)
@@ -30,5 +30,4 @@
 use base qw/Wx::Panel Uploader::GUI::DlgCommon/;
 use Wx::Event qw/
-                    EVT_UPDATE_UI
                     EVT_BUTTON
                     EVT_CLOSE
@@ -46,20 +45,24 @@
     # load controls
     eval {
-      &main::PhotoProperties($self, $params->{tags});
+        &main::PhotoPropertiesCategoriesTags($self, $params->{tags});
 
-	    $self->properties(
-    	    $params->{properties}
+        $self->_initNotebook($params->{tags});
+
+
+        $self->properties(
+            $params->{properties}
         );
 
         $self->InitLabels();
-		$self->InitChoices();
+        $self->InitChoices();
         $self->SetProperties();
-		$self->InitHandler();
+        $self->InitHandler();
         $self->_initEventHandlers();
 
-		if($@){
-			Wx::LogMessage("Error during dialogbox initialization");
-		}
-	};
+        if($@){
+            Wx::LogMessage("Error during dialogbox initialization");
+        }
+    };
+
 
     $self;    
@@ -74,5 +77,22 @@
     EVT_CLOSE( $self, \&OnClose );
     
-	
+}
+
+
+sub _initNotebook{
+    my ( $self, $tags ) = @_;
+
+    my $nb = $self->FindWindow(
+        $main::PHOTO_PROPERTIES_NB
+    );
+
+    my( $page1 ) = Wx::Panel->new( $nb, -1 );
+    &main::photo_properties_caption_comments( $page1, 0 );
+    $nb->AddPage( $page1, "Photo informations" );
+
+    my( $page2 ) = Wx::Panel->new( $nb, -1 );
+    &main::photo_properties_tags( $page2, $tags );
+    $nb->AddPage( $page2, "Tags" );
+
 }
 
Index: /extensions/pLoader/trunk/src/ploader.pl
===================================================================
--- /extensions/pLoader/trunk/src/ploader.pl	(revision 4783)
+++ /extensions/pLoader/trunk/src/ploader.pl	(revision 4784)
@@ -40,4 +40,5 @@
 require 'reupload_wdr.pl'; 
 require 'photo_properties_wdr.pl';
+require 'photo_properties_with_categories_tags_wdr.pl';
 require 'image_properties_exif_wdr.pl';
 
