Changeset 5103


Ignore:
Timestamp:
03/11/10 10:38:04 (10 years ago)
Author:
ronosman
Message:

Feature 1478 added : Ability to set properties for a batch of selected photos. New implementation with specific gui layout.

Location:
extensions/pLoader/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/locale/fr_FR/pLoader.po

    r5041 r5103  
    647647msgstr "Quel est l'album destination ?" 
    648648 
    649 msgid "Properties of the %s selected photos" 
    650 msgstr "Propriétés des %s photos sélectionnées" 
    651  
    652 msgid "Tags of the %s selected photos" 
    653 msgstr "Tags des %s photos sélectionnées" 
     649msgid "Caption" 
     650msgstr "Titre" 
     651 
     652msgid "Who can see?" 
     653msgstr "Qui peut voir ?" 
     654 
     655msgid "You have selected a batch of %s photos" 
     656msgstr "Vous avez sélectionné un lot de %s photos" 
     657 
     658msgid "Changes apply to the whole batch" 
     659msgstr "Les modifications s'appliquent à toutes les photos de la sélection" 
  • extensions/pLoader/trunk/src/Uploader/GUI/Frame.pm

    r5041 r5103  
    291291                $self->imageviewer_item_refresh(0); 
    292292            } 
    293             $self->OnUpdateNotebook; 
     293 
    294294            $self->OnUpdateToolbar; 
    295295            $event->Skip; 
     
    334334    $self->piwigo_photo_properties( 
    335335        { 
    336             $main::CAPTION => { label=>gettext("Photo caption")}, 
     336            $main::CAPTION => { label=>gettext("Caption")}, 
    337337            $main::PHOTO_PROPERTIES_CAPTION => {  
    338338                value => sub { 
     
    371371                frame_callback => sub { $self->imageviewer_item_refresh(1); }, 
    372372            }, 
    373             $main::PRIVACY_LEVEL => { label=>gettext("Who can see the photo?")}, 
     373            $main::PRIVACY_LEVEL => { label=>gettext("Who can see?")}, 
    374374            $main::PHOTO_PROPERTIES_PRIVACY_LEVEL => { 
    375375                selection => sub { 
     
    382382            $main::PHOTO_PROPERTIES_NB => { 
    383383                texts => [ 
    384                     gettext("Photo properties"), 
     384                    gettext("Properties"), 
    385385                    gettext("Tags") 
    386386                ],  
    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                 ], 
    391387            }, 
    392388            $main::PHOTO_PROPERTIES_UPLOAD => { label=>gettext("Upload to Piwigo") }, 
     
    12861282} 
    12871283 
    1288 sub 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 } 
    13071284 
    13081285sub OnRemoveImages { 
     
    13211298        $self->piwigo_photo_properties_tags->ClearAllSelection; 
    13221299        $self->imagelist->SetCurrentImage(-1); 
     1300    } 
     1301    if(!$self->multi_selection_mode){ 
     1302        $self->OnUpdateSingleSelectionModeUI; 
    13231303    } 
    13241304 
     
    15901570    # for batch mode : reset the batch buffer if single selection 
    15911571    if($self->multi_selection_mode){ 
     1572        $self->OnUpdateMultiSelectionModeUI; 
    15921573        $self->imagelist->SetImageSelectionTags([]); 
    15931574        $self->imagelist->image_selection_privacy_level(-1); 
     
    15971578        $self->imagelist->image_selection_create_date(-1); 
    15981579    } 
     1580    else{ 
     1581        $self->OnUpdateSingleSelectionModeUI; 
     1582    } 
    15991583    # process image_preview in idle time 
    16001584    # and when current event is processed 
     
    16131597    scalar @{$self->imagelist->image_selection} > 1; 
    16141598} 
     1599 
     1600sub OnUpdateMultiSelectionModeUI{ 
     1601    my( $self ) = @_; 
     1602 
     1603 
     1604    $self->dlg_piwigo_photo_properties->{_multi_selection_mode_panel}{_text1}->SetLabel( 
     1605        sprintf(gettext("You have selected a batch of %s photos"), $self->imageviewer->GetSelectectItemsCount ) 
     1606    ); 
     1607 
     1608    $self->dlg_piwigo_photo_properties->{_multi_selection_mode_panel}{_text2}->SetLabel( 
     1609        gettext("Changes apply to the whole batch") 
     1610    ); 
     1611 
     1612    $self->dlg_piwigo_photo_properties->{_multi_selection_mode_panel}->Show(1); 
     1613    $self->dlg_piwigo_photo_properties->Layout; 
     1614} 
     1615 
     1616sub OnUpdateSingleSelectionModeUI{ 
     1617    my( $self ) = @_; 
     1618 
     1619    $self->dlg_piwigo_photo_properties->{_multi_selection_mode_panel}->Show(0); 
     1620    $self->dlg_piwigo_photo_properties->Layout; 
     1621 
     1622} 
     1623 
    16151624 
    16161625sub set_preview_image { 
     
    16821691    ) if !$self->imageviewer->GetItemCount; 
    16831692 
     1693    # reset previous selection 
     1694    $self->imagelist->image_selection( 
     1695        [] 
     1696    ); 
     1697 
     1698    if(!$self->multi_selection_mode){ 
     1699        $self->OnUpdateSingleSelectionModeUI; 
     1700    } 
    16841701 
    16851702    $self->image_preview->Refresh; 
  • extensions/pLoader/trunk/src/Uploader/GUI/Layout/PhotoPropertiesCategoriesTags.pm

    r4974 r5103  
    2828    my( $parent ) = @_; 
    2929    my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); 
    30      
     30 
     31    $parent->{_multi_selection_mode_panel} = Wx::Panel->new( 
     32        $parent, 
     33        -1, 
     34        wxDefaultPosition, 
     35        [450, -1] 
     36    ); 
     37 
     38    _multi_selection_mode_panel_layout( 
     39        $parent->{_multi_selection_mode_panel} 
     40    ); 
     41 
     42    $parent->{_multi_selection_mode_panel}->Show(0); 
     43 
     44    $topsizer->Add( 
     45        $parent->{_multi_selection_mode_panel}, 
     46        0, 
     47        wxEXPAND|wxLEFT|wxRIGHT, 
     48        5 
     49    ); 
     50 
     51 
    3152    # defines minimum size 
    3253    my( $item2 ) = Wx::Notebook->new( $parent, $main::PHOTO_PROPERTIES_NB, wxDefaultPosition, [450,160], 0 ); 
     
    3758     
    3859    # the notebook has adaptive size : stretch factor 2, wxEXPAND 
    39     $topsizer->Add( $item1, 2, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
     60    $topsizer->Add( $item1, 2, wxEXPAND|wxALL, 5 ); 
    4061 
    4162    my( $item3 ) = Wx::TreeCtrl->new( $parent, $main::PHOTO_PROPERTIES_CATEGORIES, wxDefaultPosition, [450,160], wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT ); 
    4263    # the notebook has adaptive size : stretch factor 1, wxEXPAND 
    43     $topsizer->AddWindow( $item3, 1, wxGROW|wxALL, 5 ); 
     64    $topsizer->AddWindow( $item3, 1, wxEXPAND|wxALL, 5 ); 
    4465 
    4566    my( $item4 ) = Wx::StaticLine->new( $parent, $main::ID_LINE, wxDefaultPosition, [20,-1], wxLI_HORIZONTAL ); 
    46     $topsizer->AddWindow( $item4, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
     67    $topsizer->AddWindow( $item4, 0, wxEXPAND|wxALL, 5 ); 
    4768 
    4869    my( $item5 ) = Wx::Button->new( $parent, $main::PHOTO_PROPERTIES_UPLOAD, "", wxDefaultPosition, [-1,40], 0 ); 
     
    5172#    $item5->SetForegroundColour( Wx::wxGREEN ); 
    5273    $item5->SetForegroundColour( Wx::Colour->new(255, 51, 99) ); 
    53     $topsizer->AddWindow( $item5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
     74    $topsizer->AddWindow( $item5, 0, wxEXPAND|wxALL, 5 ); 
    5475 
    5576    $parent->SetSizer( $topsizer ); 
     
    5879    $topsizer; 
    5980} 
    60  
    6181use vars qw($TAGS); $TAGS = 10004; 
    6282use vars qw($PHOTO_PROPERTIES_TAG); $PHOTO_PROPERTIES_TAG = 10005; 
     
    93113sub photo_properties_caption_comments { 
    94114    my( $parent ) = @_; 
    95     my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); 
    96      
    97     my( $item1 ) = Wx::BoxSizer->new( wxVERTICAL ); 
    98      
    99     my( $item2 ) = Wx::StaticText->new( $parent, $main::CAPTION, "text", wxDefaultPosition, wxDefaultSize, 0 ); 
    100     $item1->AddWindow( $item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    101  
    102     my( $item3 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CAPTION, "", wxDefaultPosition, [-1,-1], 0 ); 
    103     $item1->AddWindow( $item3, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    104  
    105     $topsizer->Add( $item1, 0, wxEXPAND, 5 ); 
    106  
    107     my( $item4 ) = Wx::BoxSizer->new( wxVERTICAL ); 
    108      
    109     my( $item5 ) = Wx::StaticText->new( $parent, $main::AUTHOR, "text", wxDefaultPosition, wxDefaultSize, 0 ); 
    110     $item4->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    111  
    112     my( $item6 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_AUTHOR, "", wxDefaultPosition, [-1,-1], 0 ); 
    113     $item4->AddWindow( $item6, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    114  
    115     my( $item7 ) = Wx::StaticText->new( $parent, $main::COMMENT, "text", wxDefaultPosition, wxDefaultSize, 0 ); 
    116     $item4->AddWindow( $item7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    117  
    118     # adaptive size : stretch factor 1 
    119     # the textctrl has a variable line number 
    120     my( $item8 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_COMMENT, "", wxDefaultPosition, [-1,-1], wxTE_MULTILINE ); 
    121     $item4->AddWindow( $item8, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    122  
    123     my( $item9 ) = Wx::StaticText->new( $parent, $main::CREATE_DATE, "text", wxDefaultPosition, wxDefaultSize, 0 ); 
    124     $item4->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    125  
    126     my( $item10 ) = Wx::DatePickerCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, Wx::DateTime->new(), wxDefaultPosition, [200,-1], wxDP_DROPDOWN ); 
    127     $item4->AddWindow( $item10, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    128     # adaptive size : stretch factor 3 
    129     $topsizer->Add( $item4, 3, wxEXPAND, 5 ); 
    130  
    131     my( $item11 ) = Wx::BoxSizer->new( wxVERTICAL ); 
    132      
    133     my( $item12 ) = Wx::StaticText->new( $parent, $main::PRIVACY_LEVEL, "text", wxDefaultPosition, wxDefaultSize, 0 ); 
    134     $item11->AddWindow( $item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    135  
    136     my( $item13 ) = Wx::Choice->new( $parent, $main::PHOTO_PROPERTIES_PRIVACY_LEVEL, wxDefaultPosition, [-1,-1], [], 0 ); 
    137     $item11->AddWindow( $item13, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 
    138  
    139     # adaptive size : stretch factor 1 
    140     $topsizer->Add( $item11, 1, wxEXPAND, 5 ); 
     115 
     116    my $topsizer = Wx::BoxSizer->new( wxVERTICAL ); 
     117 
     118    $topsizer->Add(  
     119        TextField( 
     120            $parent, 
     121            $main::CAPTION, 
     122            $main::PHOTO_PROPERTIES_CAPTION 
     123        ), 
     124        0, 
     125        wxEXPAND|wxALL, 
     126        2 
     127    ); 
     128 
     129    $topsizer->Add(  
     130        TextField( 
     131            $parent, 
     132            $main::COMMENT, 
     133            $main::PHOTO_PROPERTIES_COMMENT, 
     134            1 
     135        ), 
     136        1, 
     137        wxEXPAND|wxALL, 
     138        2 
     139    ); 
     140 
     141    my $sizer_author_create = Wx::BoxSizer->new( wxVERTICAL ); 
     142    $sizer_author_create->Add(  
     143        TextField( 
     144            $parent, 
     145            $main::AUTHOR, 
     146            $main::PHOTO_PROPERTIES_AUTHOR 
     147        ), 
     148        1, 
     149        wxEXPAND|wxALL, 
     150        2 
     151    ); 
     152 
     153    $sizer_author_create->Add(  
     154        DatepickerField( 
     155            $parent, 
     156            $main::CREATE_DATE, 
     157            $main::PHOTO_PROPERTIES_CREATE_DATE 
     158        ), 
     159        1, 
     160        wxEXPAND|wxALL, 
     161        2 
     162    );  
     163 
     164    my $sizer_author_create_privacy = Wx::BoxSizer->new( wxHORIZONTAL ); 
     165 
     166    $sizer_author_create_privacy->Add($sizer_author_create, 0, wxEXPAND|wxALL, 0); 
     167 
     168    $sizer_author_create_privacy->Add(  
     169        ChoiceField( 
     170            $parent, 
     171            $main::PRIVACY_LEVEL, 
     172            $main::PHOTO_PROPERTIES_PRIVACY_LEVEL, 
     173            1 
     174        ), 
     175        1, 
     176        wxEXPAND|wxALL, 
     177        2 
     178    ); 
     179 
     180    $topsizer->Add( $sizer_author_create_privacy, 0, wxEXPAND|wxALL, 2 ); 
    141181 
    142182    $parent->SetSizer( $topsizer ); 
     
    148188use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); 
    149189 
     190 
     191sub TextField { 
     192    my ( $parent, $id_label, $id_textctrl, $expand ) = @_; 
     193 
     194    $expand ||=0; 
     195 
     196    my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); 
     197     
     198    $sizer->Add(  
     199        Wx::StaticText->new( 
     200            $parent, 
     201            $id_label, 
     202            "text", 
     203            wxDefaultPosition, 
     204            wxDefaultSize, 
     205            0 
     206        ), 
     207        0, 
     208        wxALL, 
     209        1  
     210    ); 
     211 
     212    $sizer->Add(  
     213        Wx::TextCtrl->new( 
     214            $parent, 
     215            $id_textctrl, 
     216            "", 
     217            wxDefaultPosition, 
     218            [-1,-1], 
     219            0  
     220        ), 
     221        $expand, 
     222        wxEXPAND|wxALL, 
     223        1  
     224    ); 
     225 
     226    $sizer; 
     227} 
     228 
     229sub DatepickerField { 
     230    my ( $parent, $id_label, $id_ctrl, $expand ) = @_; 
     231 
     232    $expand ||=0; 
     233 
     234    my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); 
     235     
     236    $sizer->Add(  
     237        Wx::StaticText->new( 
     238            $parent, 
     239            $id_label, 
     240            "text", 
     241            wxDefaultPosition, 
     242            wxDefaultSize, 
     243            0 
     244        ), 
     245        0, 
     246        wxALL, 
     247        1  
     248    ); 
     249 
     250    $sizer->Add( 
     251        Wx::DatePickerCtrl->new( 
     252            $parent, 
     253            $id_ctrl, 
     254            Wx::DateTime->new(), 
     255            wxDefaultPosition, 
     256            [200,-1], 
     257            wxDP_DROPDOWN 
     258        ), 
     259        $expand, 
     260        wxEXPAND|wxALL, 
     261        1  
     262    ); 
     263 
     264    $sizer; 
     265} 
     266 
     267sub ChoiceField { 
     268    my ( $parent, $id_label, $id_ctrl, $expand ) = @_; 
     269 
     270    $expand ||=0; 
     271 
     272    my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); 
     273 
     274    $expand||=0; 
     275     
     276    $sizer->Add(  
     277        Wx::StaticText->new( 
     278            $parent, 
     279            $id_label, 
     280            "text", 
     281            wxDefaultPosition, 
     282            wxDefaultSize, 
     283            0 
     284        ), 
     285        0, 
     286        wxALL, 
     287        1  
     288    ); 
     289 
     290    $sizer->Add( 
     291        Wx::Choice->new( 
     292            $parent, 
     293            $id_ctrl, 
     294            wxDefaultPosition, 
     295            [-1,-1], 
     296            [], 
     297            0 
     298        ), 
     299        1, 
     300        wxEXPAND|wxALL, 
     301        1  
     302    ); 
     303 
     304    $sizer; 
     305} 
     306 
     307sub _multi_selection_mode_panel_layout{ 
     308    my ( $panel ) = @_; 
     309 
     310    my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); 
     311 
     312    my $fb = Wx::Font->new( 10, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD ); 
     313    my $fn = Wx::Font->new( 10, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL ); 
     314 
     315    $panel->{_text1} = Wx::StaticText->new( $panel, -1, "Text", wxDefaultPosition, wxDefaultSize, 0 ); 
     316    $panel->{_text1}->SetFont($fb); 
     317    $item0->Add( $panel->{_text1}, 0, wxALIGN_LEFT|wxALL, 1 ); 
     318 
     319     
     320    $panel->{_text2} = Wx::StaticText->new( $panel, -1, "Text", wxDefaultPosition, wxDefaultSize, 0 ); 
     321    $panel->{_text2}->SetFont($fn); 
     322    $item0->Add( $panel->{_text2}, 0, wxALIGN_LEFT|wxALL, 1 ); 
     323 
     324    $panel->SetSizer( $item0 ); 
     325    $item0->SetSizeHints( $panel ); 
     326 
     327} 
  • extensions/pLoader/trunk/src/Uploader/ImageList.pm

    r5041 r5103  
    741741                display_mode 
    742742                image_selection_tags 
    743                 image_selection_properties 
    744743            / 
    745744        ]  
Note: See TracChangeset for help on using the changeset viewer.