Ignore:
Timestamp:
Mar 5, 2010, 7:41:14 AM (15 years ago)
Author:
ronosman
Message:

Feature 1478 added : ability to set properties for a photo selection.

Location:
extensions/pLoader/trunk/src/Uploader
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/src/Uploader/GUI/DlgCommon.pm

    r4784 r5041  
    2020package Uploader::GUI::DlgCommon;
    2121use strict;
     22use Wx qw/wxDP_ALLOWNONE wxDefaultPosition wxDefaultSize/;
    2223use Wx::Calendar;
    2324use Wx::Locale qw/:default/;
    24 
     25use Data::Dumper;
    2526use base qw/
    2627               Class::Accessor::Fast
     
    190191                                    sprintf("%s/%s/%s", $yyyy, $mm, $dd)
    191192                                  );
     193                                  if(-1 eq $value){
     194                                      $date->SetToCurrent;
     195                                  }
    192196                                  $ctrl->SetValue($date);
    193                                 },
     197                            },
    194198};
    195199
  • extensions/pLoader/trunk/src/Uploader/GUI/Frame.pm

    r4973 r5041  
    291291                $self->imageviewer_item_refresh(0);
    292292            }
     293            $self->OnUpdateNotebook;
    293294            $self->OnUpdateToolbar;
    294295            $event->Skip;
     
    335336            $main::CAPTION => { label=>gettext("Photo caption")},
    336337            $main::PHOTO_PROPERTIES_CAPTION => {
    337                 value => sub { $self->imagelist->current_image->site_name(@_) },
     338                value => sub {
     339                    $self->multi_selection_mode ?
     340                    $self->imagelist->SetImageSelectionName(@_):
     341                    $self->imagelist->current_image->site_name(@_)
     342                },
    338343                frame_callback => sub { $self->imageviewer_item_refresh(1); },
    339344            },
    340345            $main::COMMENT => { label=>gettext("Comment")},
    341             $main::PHOTO_PROPERTIES_COMMENT => {
    342                 value => sub { $self->imagelist->current_image->site_comment(@_) },
     346            $main::PHOTO_PROPERTIES_COMMENT => {
     347                value => sub {
     348                    $self->multi_selection_mode ?
     349                    $self->imagelist->SetImageSelectionComment(@_):
     350                    $self->imagelist->current_image->site_comment(@_)
     351                },
    343352                frame_callback => sub { $self->imageviewer_item_refresh(1); },
    344353            },
    345354            $main::AUTHOR => { label=>gettext("Author")},
    346355            $main::PHOTO_PROPERTIES_AUTHOR => {
    347                 value => sub { $self->imagelist->current_image->site_author(@_) },
     356                value => sub {
     357                    $self->multi_selection_mode ?
     358                    $self->imagelist->SetImageSelectionAuthor(@_):
     359                    $self->imagelist->current_image->site_author(@_)
     360                },
    348361                frame_callback => sub { $self->imageviewer_item_refresh(1); },
    349362            },
     
    351364            $main::CREATE_DATE => { label=>gettext("Create date")},
    352365            $main::PHOTO_PROPERTIES_CREATE_DATE => {
    353                 value => sub { $self->imagelist->current_image->create_date(@_) },
     366                value => sub {
     367                    $self->multi_selection_mode ?
     368                    $self->imagelist->SetImageSelectionCreateDate(@_):
     369                    $self->imagelist->current_image->create_date(@_)
     370                },
    354371                frame_callback => sub { $self->imageviewer_item_refresh(1); },
    355372            },
    356373            $main::PRIVACY_LEVEL => { label=>gettext("Who can see the photo?")},
    357374            $main::PHOTO_PROPERTIES_PRIVACY_LEVEL => {
    358                 selection => sub { $self->imagelist->current_image->privacy_level(@_)},
     375                selection => sub {
     376                    $self->multi_selection_mode ?
     377                    $self->imagelist->SetImageSelectionPrivacyLevel(@_):
     378                    $self->imagelist->current_image->privacy_level(@_)
     379                },
    359380                choices => wxTheApp->privacy_level_choices,
    360381            },
    361             $main::PHOTO_PROPERTIES_NB => { texts => [gettext("Photo properties"), gettext("Tags")] },
     382            $main::PHOTO_PROPERTIES_NB => {
     383                texts => [
     384                    gettext("Photo properties"),
     385                    gettext("Tags")
     386                ],
     387                multi_texts => [
     388                    sub { sprintf(gettext("Properties of the %s selected photos"), $self->imageviewer->GetSelectectItemsCount ) },
     389                    sub { sprintf(gettext("Tags of the %s selected photos"), $self->imageviewer->GetSelectectItemsCount) },
     390                ],
     391            },
    362392            $main::PHOTO_PROPERTIES_UPLOAD => { label=>gettext("Upload to Piwigo") },
    363393        }
     
    637667    );   
    638668
    639     #$self->image_tags(
    640     #    sub { eval { $self->imagelist->current_image->site_tags(@_) } }
    641     #);
    642669    $self->image_tags(
    643670        sub { scalar @{$self->imagelist->image_selection} > 1 ? $self->imagelist->SetImageSelectionTags(@_) : $self->imagelist->current_image->site_tags(@_)||[]  }
     
    12591286}
    12601287
     1288sub OnUpdateNotebook{
     1289    my( $self ) = @_;
     1290
     1291    # Notebook page caption change according to photo selection
     1292    # include count when selection is multiple
     1293    my $texts;
     1294    if(!$self->multi_selection_mode){
     1295        $texts = $self->piwigo_photo_properties->{$main::PHOTO_PROPERTIES_NB}->{texts};
     1296    }
     1297    else {
     1298        $texts = [ map { $_->() } @{$self->piwigo_photo_properties->{$main::PHOTO_PROPERTIES_NB}->{multi_texts}} ];
     1299    }
     1300
     1301    $texts||=[];
     1302    for(my $i=0; $i < scalar @$texts ; $i++){
     1303        $self->dlg_piwigo_photo_properties->{notebook}->SetPageText($i, $texts->[$i]);
     1304    }
     1305
     1306}
     1307
    12611308sub OnRemoveImages {
    12621309    my( $self, $event ) = @_;
     
    15421589
    15431590    # for batch mode : reset the batch buffer if single selection
    1544     $self->imagelist->SetImageSelectionTags([]) if(scalar @{$self->imagelist->image_selection} > 1);
    1545 
     1591    if($self->multi_selection_mode){
     1592        $self->imagelist->SetImageSelectionTags([]);
     1593        $self->imagelist->image_selection_privacy_level(-1);
     1594        $self->imagelist->image_selection_name("");
     1595        $self->imagelist->image_selection_author("");
     1596        $self->imagelist->image_selection_comment("");
     1597        $self->imagelist->image_selection_create_date(-1);
     1598    }
    15461599    # process image_preview in idle time
    15471600    # and when current event is processed
     
    15531606    $self->piwigo_photo_properties_tags->Refresh;
    15541607
     1608}
     1609
     1610sub multi_selection_mode {
     1611    my ( $self ) = @_;
     1612
     1613    scalar @{$self->imagelist->image_selection} > 1;
    15551614}
    15561615
  • extensions/pLoader/trunk/src/Uploader/GUI/Layout/PhotoProperties.pm

    r4974 r5041  
    1616use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW );
    1717use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL );
    18 use Wx qw( wxTE_MULTILINE wxDP_DROPDOWN );
     18use Wx qw( wxTE_MULTILINE wxDP_DROPDOWN wxDP_ALLOWNONE);
    1919
    2020# Bitmap functions
     
    6666    $item2->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    6767
    68     my( $item10 ) = Wx::DatePickerCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, Wx::DateTime->new(), wxDefaultPosition, [200,-1], wxDP_DROPDOWN );
     68    my( $item10 ) = Wx::DatePickerCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, Wx::DateTime->new(), wxDefaultPosition, [200,-1], wxDP_ALLOWNONE );
    6969    $item2->AddWindow( $item10, 0, wxALIGN_CENTER_VERTICAL, 5 );
    7070
     
    7777
    7878    my $tags = $_[1];
    79 $tags->{parentwnd}=$parent;
    80 my( $item13 ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags);
     79    $tags->{parentwnd}=$parent;
     80    my( $item13 ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags);
    8181    $item11->AddWindow( $item13, 0, wxALIGN_CENTER_VERTICAL, 5 );
    8282
  • extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm

    r4973 r5041  
    214214    $self->_init_userdir;
    215215
    216     my $conf = retrieve $self->conf_file if -e $self->conf_file;       
     216    my $conf = retrieve $self->conf_file if -e $self->conf_file;
    217217
    218218    if(defined $conf ){
     
    407407    while(++$i<$n){   
    408408        push @$list, join(
    409                     ', ',
    410                         map{ gettext($_) }
    411                         @$pl[$i..$n]
    412                 );
     409            ', ',
     410            map{ gettext($_) }
     411            @$pl[$i..$n]
     412        );
    413413    }
    414414    push @$list, gettext($pl->[$n]);
    415        
    416         $list;
     415   
     416    $list;
    417417}
    418418
     
    425425            grep {$_}
    426426            map{
    427                             #  a locale may be unavailable due to system limitations ( ex: chinese, japanese when language pack are not installed )
    428                             if(Wx::Locale::IsAvailable($_->[1])){
    429                             my $locale = Wx::Locale->new($_->[1]);
    430                             $locale->AddCatalogLookupPathPrefix(
     427                #  a locale may be unavailable due to system limitations ( ex: chinese, japanese when language pack are not installed )
     428                if(Wx::Locale::IsAvailable($_->[1])){
     429                    my $locale = Wx::Locale->new($_->[1]);
     430                    $locale->AddCatalogLookupPathPrefix(
    431431                        File::Spec->catfile($self->root_dir, $self->locale_dir)
    432432                    );
    433                             $_ if $locale->AddCatalog('pLoader');
    434                                 }
     433                    $_ if $locale->AddCatalog('pLoader');
     434                }
    435435            }
    436436            @{$self->languages}
     
    483483        Wx::LogMessage gettext("Cannot find translation catalog files for %s. Use default language"), $locale->GetCanonicalName();
    484484    }
    485     $self->locale($locale);     
     485    $self->locale($locale);   
    486486}
    487487
     
    531531
    532532sub _init_imagelist {
    533     my ( $self ) = @_; 
     533    my ( $self ) = @_;   
    534534
    535535    my $stored_imagelist;
     
    643643
    644644sub Login {
    645     my ( $self ) = @_; 
     645    my ( $self ) = @_;   
    646646
    647647    $self->login_dlg(
     
    650650                title         => gettext("Piwigo login"),
    651651                site_url      => sub { $self->site_url(@_) },
    652                 site_username => sub { $self->site_username(@_) },     
     652                site_username => sub { $self->site_username(@_) },   
    653653                site_password => sub { $self->site_password(@_) },
    654                 use_offline   => sub { $self->use_offline(@_) },       
     654                use_offline   => sub { $self->use_offline(@_) },   
    655655            }
    656656        )
     
    677677                $self->site_url
    678678            )
    679         );     
     679        );   
    680680    }
    681681
     
    729729            );
    730730            mkdir $userdatadir;
    731         }       
     731        }   
    732732    }
    733733
     
    791791
    792792    map {
    793         my $image = $self->imagelist->image_sums->{$_};
     793        my $image = $self->imagelist->image_sums->{$_};
    794794
    795795        $wximagelist->Add(
     
    864864        $self->GetWxBitmapType($type),
    865865    )){
    866         Wx::LogMessage(
    867             gettext("An error has occured. Can not save file %s"),
    868             $image_file_out,
    869         )
     866        Wx::LogMessage(
     867            gettext("An error has occured. Can not save file %s"),
     868            $image_file_out,
     869        )
    870870    };
    871871}
     
    882882                categories => gettext("albums"),
    883883                Categories => gettext("Albums"),
    884                 'Add new category' => gettext("Add new album"), 
     884                'Add new category' => gettext("Add new album"),
    885885                'Category name' => gettext("Album name :"),
    886886                'New category' => gettext("New album"),
     
    943943
    944944
    945         my $expr_params ;
    946         eval { $expr_params = read_file( $file ); } ;
    947        
    948         my $paramValues = [] ;
    949         if($expr_params){
    950                 my $expr = '$paramValues = ' ;
    951                 $expr .=  "$expr_params ; " ;
    952                 eval $expr ;
    953         }
    954        
    955         return unless 'ARRAY' eq ref $paramValues ;
    956        
    957         if(scalar(@$paramValues )){
    958             my $params = $paramValues->[0] ;
    959             $self->SetKeyValues($params);
    960         }
     945    my $expr_params ;
     946    eval { $expr_params = read_file( $file ); } ;
     947   
     948    my $paramValues = [] ;
     949    if($expr_params){
     950        my $expr = '$paramValues = ' ;
     951        $expr .=  "$expr_params ; " ;
     952        eval $expr ;
     953    }
     954   
     955    return unless 'ARRAY' eq ref $paramValues ;
     956   
     957    if(scalar(@$paramValues )){
     958        my $params = $paramValues->[0] ;
     959        $self->SetKeyValues($params);
     960    }
    961961}
    962962
    963963sub _read_default_user_properties {
    964         my( $self, $file ) = @_ ;
    965 
    966 
    967         my $expr_params ;
    968         eval { $expr_params = read_file( $file ); } ;
    969         my $properties;
    970         if($expr_params){
    971                 my $expr = '$properties = ' ;
    972                 $expr .=  " { $expr_params }; " ;
    973                 eval $expr ;
    974         }
    975         $properties = {} unless 'HASH' eq ref $properties;
    976         $self->user_defined_properties($properties);
     964    my( $self, $file ) = @_ ;
     965
     966
     967    my $expr_params ;
     968    eval { $expr_params = read_file( $file ); } ;
     969    my $properties;
     970    if($expr_params){
     971        my $expr = '$properties = ' ;
     972        $expr .=  " { $expr_params }; " ;
     973        eval $expr ;
     974    }
     975    $properties = {} unless 'HASH' eq ref $properties;
     976    $self->user_defined_properties($properties);
    977977
    978978}
     
    981981
    982982sub SetKeyValues {
    983     my ( $self, $params )= @_; 
     983    my ( $self, $params )= @_;   
    984984
    985985    foreach( keys %$params ) {
  • extensions/pLoader/trunk/src/Uploader/GUI/wxChoiceFilteredPanel.pm

    r4800 r5041  
    383383    my $choices = $self->choices->()||[];
    384384    [
    385        grep { $_->{name} =~ /^$searched/} @$choices
     385       grep { $_->{name} =~ /$searched/i} @$choices
    386386    ]
    387387}
  • extensions/pLoader/trunk/src/Uploader/GUI/wxImageListCtrl.pm

    r4779 r5041  
    252252}
    253253
     254sub GetSelectectItemsCount {
     255    my ( $self ) = @_;   
     256
     257    scalar @{$self->GetSelectedItems};
     258}
    254259
    255260sub GetSelectedItems {
     
    270275      push @$items, $item
    271276  }
    272  
     277
    273278  $items;
    274279}
  • extensions/pLoader/trunk/src/Uploader/GUI/wxPhotoProperties.pm

    r4784 r5041  
    9595    $nb->AddPage( $page2, "Tags" );
    9696
     97    $self->{notebook} = $nb;
     98
    9799}
    98100
  • extensions/pLoader/trunk/src/Uploader/ImageList.pm

    r5020 r5041  
    128128                stop_processing
    129129                image_selection_tags
     130                image_selection_privacy_level
     131                image_selection_name
     132                image_selection_comment
     133                image_selection_author
     134                image_selection_create_date
    130135     /
    131136);
     
    736741                display_mode
    737742                image_selection_tags
     743                image_selection_properties
    738744            /
    739745        ]
     
    14041410}
    14051411
     1412sub multi_selection_mode {
     1413    my ( $self ) = @_;
     1414
     1415    scalar @{$self->image_selection} > 1;
     1416}
     1417
     1418
    14061419sub SetImageSelectionTags {
    14071420    my ( $self, $tags ) = @_;
     
    14121425    # append to each image
    14131426    # if multiple selection
    1414     if(scalar @{$self->image_selection} > 1){
     1427    if($self->multi_selection_mode){
    14151428        map {
    14161429            # need to dedup
     
    14331446}
    14341447
     1448
     1449sub SetImageSelectionPrivacyLevel {
     1450    my ( $self, $privacy_level ) = @_;
     1451
     1452    # append to each image
     1453    # if multiple selection
     1454    if($self->multi_selection_mode){
     1455        if(defined $privacy_level){
     1456            $self->image_selection_privacy_level($privacy_level);
     1457            map {
     1458                $self->GetImage($_)->privacy_level(
     1459                    $privacy_level
     1460                ) ;
     1461            }@{$self->image_selection}
     1462        };
     1463    }
     1464
     1465    $self->image_selection_privacy_level;
     1466}
     1467
     1468sub SetImageSelectionName {
     1469    my ( $self, $name ) = @_;
     1470
     1471    # append to each image
     1472    # if multiple selection
     1473    if($self->multi_selection_mode){
     1474        if(defined $name){
     1475            $self->image_selection_name($name);
     1476            map {
     1477                $self->GetImage($_)->site_name(
     1478                    $name
     1479                ) ;
     1480            }@{$self->image_selection}
     1481        };
     1482    }
     1483
     1484    $self->image_selection_name;
     1485}
     1486
     1487sub SetImageSelectionAuthor {
     1488    my ( $self, $author ) = @_;
     1489
     1490    # append to each image
     1491    # if multiple selection
     1492    if($self->multi_selection_mode){
     1493        if(defined $author){
     1494            $self->image_selection_author($author);
     1495            map {
     1496                $self->GetImage($_)->site_author(
     1497                    $author
     1498                ) ;
     1499            }@{$self->image_selection}
     1500        };
     1501    }
     1502
     1503    $self->image_selection_author;
     1504}
     1505
     1506sub SetImageSelectionComment {
     1507    my ( $self, $comment ) = @_;
     1508
     1509    # append to each image
     1510    # if multiple selection
     1511    if($self->multi_selection_mode){
     1512        if(defined $comment){
     1513            $self->image_selection_comment($comment);
     1514            map {
     1515                $self->GetImage($_)->site_comment(
     1516                    $comment
     1517                ) ;
     1518            }@{$self->image_selection}
     1519        };
     1520    }
     1521
     1522    $self->image_selection_comment;
     1523}
     1524
     1525
     1526sub SetImageSelectionCreateDate {
     1527    my ( $self, $date ) = @_;
     1528
     1529    # append to each image
     1530    # if multiple selection
     1531    if($self->multi_selection_mode){
     1532        if(defined $date){
     1533            $self->image_selection_create_date($date);
     1534            map {
     1535                $self->GetImage($_)->create_date(
     1536                    $date
     1537                ) ;
     1538            }@{$self->image_selection}
     1539        };
     1540    }
     1541
     1542    $self->image_selection_create_date;
     1543}
     1544
    143515451;
Note: See TracChangeset for help on using the changeset viewer.