Changeset 3227
- Timestamp:
- Mar 29, 2009, 12:51:40 PM (15 years ago)
- Location:
- extras/pLoader/trunk/src/Uploader/GUI
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
extras/pLoader/trunk/src/Uploader/GUI/wxApp.pm
r3198 r3227 302 302 locale 303 303 current_language 304 version 305 imagelist_version 306 use_offline 307 login_dlg 304 308 / 305 309 ); … … 313 317 } 314 318 319 315 320 sub OnInit { 316 321 my( $self ) = @_; 322 323 $self->version( 324 '2.0.1a' 325 ); 326 327 # to check if we can use stored cache 328 $self->imagelist_version( 329 '2' 330 ); 317 331 318 332 Wx::InitAllImageHandlers(); … … 353 367 $self->{current_language}||wxLANGUAGE_ENGLISH 354 368 ); 355 356 369 357 370 $self->init_locale; 358 359 360 361 my $ok = $self->Login(); 371 372 my $not_exit = $self->Login(); 362 373 # user pressed OK 363 if($ok){ 364 $self->pwg( 365 # get these parameters from dialog or from file 366 Uploader::PWG->new( 367 { 368 site_url => $self->site_url, 369 site_username => $self->site_username, 370 site_password => $self->site_password, 371 } 372 ) 373 ); 374 375 374 if($not_exit){ 375 if( !$self->use_offline ){ 376 while( $not_exit and !$self->_is_connected ){ 377 $not_exit = $self->Login(); 378 } 379 } 376 380 $self->_init_imagelist; 377 381 $self->_init_thumbimagelist; 378 379 382 $self->_init_frame; 380 383 } 381 384 382 $ok; 383 } 385 $not_exit; 386 } 387 388 389 sub _is_connected { 390 my ( $self ) = @_; 391 392 my $is_connected; 393 394 if($self->pwg->login_result->{stat} eq 'ok'){ 395 $is_connected = 1; 396 } 397 else{ 398 Wx::MessageBox( 399 sprintf( 400 "%s\n\n%s %s %s", 401 $self->pwg->login_result->{message}, 402 gettext("Connection to"), 403 $self->site_url, 404 gettext("failed"), 405 ), 406 gettext("Piwigo login error"), 407 wxOK | wxICON_EXCLAMATION, 408 ); 409 } 410 411 $is_connected; 412 } 413 384 414 385 415 my $locale; … … 397 427 $locale->AddCatalogLookupPathPrefix( '../locale'); 398 428 if(!$locale->AddCatalog( 'pLoader.mo' )){ 399 print "Cannot find translation catalog files. Use default language\n";429 Wx::LogMessage gettext("Cannot find translation catalog files. Use default language"); 400 430 } 401 431 … … 428 458 my $stored_imagelist; 429 459 460 my $use_new_imagelist; 461 430 462 if( -e $self->storable_file ){ 431 463 eval { … … 434 466 if($@){ 435 467 Wx::LogMessage( 436 "An error has occured. Can not read %s\n%s",468 gettext("An error has occured. Can not read %s\n%s"), 437 469 $self->storable_file, 438 470 $@ 439 471 ); 440 $ stored_imagelist = $self->_default_imagelist_params;472 $use_new_imagelist = 1 ; 441 473 } 474 # should have a valid imagelist 475 else{ 476 $use_new_imagelist = 1 unless $self->imagelist_version eq $stored_imagelist->{imagelist_version}; 477 if($use_new_imagelist){ 478 Wx::LogMessage(gettext("pLoader has to reset image cache.")); 479 } 480 } 442 481 } 443 482 else{ 483 $use_new_imagelist = 1 ; 484 } 485 486 if($use_new_imagelist){ 444 487 $stored_imagelist = $self->_default_imagelist_params ; 445 488 } 489 446 490 447 491 $self->imagelist( … … 449 493 $stored_imagelist 450 494 ) 495 ); 496 497 $self->imagelist->RescaleCallback( 498 sub { $self->RescaleImage(@_) } 451 499 ); 452 500 … … 483 531 count => 0, 484 532 storable_file => $self->storable_file, 485 images => [],486 533 userdata_dir => $self->userdata_dir, 487 534 default_name_prefix => 'Photo', 488 upload_rejects => [], 489 ResizeCallback => sub { $self->ResizeImage(@_) }, 535 upload_rejects => [], 536 image_sums => {}, 537 sums => [], 538 version => $self->version, 539 imagelist_version => $self->imagelist_version, 540 RescaleCallback => sub { $self->RescaleImage(@_) }, 541 ResizeCallback => sub { $self->ResizeImage(@_) }, 490 542 }; 491 543 … … 496 548 my ( $self ) = @_; 497 549 498 my $dlg = Uploader::GUI::wxLoginDlg->new( 499 { 500 title => gettext("Piwigo login"), 501 site_url => sub { $self->site_url(@_) }, 502 site_username => sub { $self->site_username(@_) }, 503 site_password => sub { $self->site_password(@_) }, 504 } 505 ); 550 $self->login_dlg( 551 Uploader::GUI::wxLoginDlg->new( 552 { 553 title => gettext("Piwigo login"), 554 site_url => sub { $self->site_url(@_) }, 555 site_username => sub { $self->site_username(@_) }, 556 site_password => sub { $self->site_password(@_) }, 557 use_offline => sub { $self->use_offline(@_) }, 558 } 559 ) 560 ) unless $self->login_dlg; 506 561 507 562 my $icon = Wx::Icon->new(); 508 563 $icon->LoadFile('../res/favicon.ico', wxBITMAP_TYPE_ICO); 509 $dlg->SetIcon($icon); 510 511 512 my $rval = $dlg->ShowModal(); 513 $dlg->Destroy; 564 $self->login_dlg->SetIcon($icon); 565 566 567 my $rval = $self->login_dlg->ShowModal(); 568 $self->login_dlg->Show(0); 569 570 $self->pwg( 571 # get these parameters from dialog or from file 572 Uploader::PWG->new( 573 { 574 site_url => $self->site_url, 575 site_username => $self->site_username, 576 site_password => $self->site_password, 577 } 578 ) 579 ); 514 580 515 581 $rval; … … 605 671 606 672 my $wximagelist = $self->imagelist->wx_thumb_imglist; 607 my $ images = $self->imagelist->images;673 my $sums = $self->imagelist->sums; 608 674 609 675 map { 676 my $image = $self->imagelist->image_sums->{$_}; 677 610 678 $wximagelist->Add( 611 679 Wx::Bitmap->new( 612 $ _->wx_thumb_file,680 $image->wx_thumb_file, 613 681 $self->GetWxBitmapType($self->imagelist->type), 614 682 ) 615 683 ); 616 684 } 617 @$ images ;685 @$sums ; 618 686 619 687 } … … 626 694 627 695 628 sub Res izeImage {696 sub RescaleImage { 629 697 my ( $self, $image_file, $image_file_out, $type, $ratio, $width, $height, $quality ) = @_; 630 698 … … 682 750 )){ 683 751 Wx::LogMessage( 684 "An error has occured. Can not save file %s",752 gettext("An error has occured. Can not save file %s"), 685 753 $image_file_out, 686 754 ) … … 688 756 } 689 757 758 sub ResizeImage { 759 my ( $self, $image_file, $image_file_out, $type, $width, $height, $quality ) = @_; 760 761 762 my $image = Wx::Image->new( 763 $image_file, 764 $self->GetWxBitmapType($type), 765 0 766 ); 767 768 my $w; 769 my $h; 770 771 my $img_w = $image->GetWidth; 772 my $img_h = $image->GetHeight; 773 774 # portrait 775 if( $img_w < $img_h ){ 776 $w = $height; 777 } 778 else{ 779 $w = $width; 780 } 781 # to respect aspect ratio 782 $h = sprintf( 783 "%.0f", 784 ($w*$img_h)/$img_w 785 ); 786 787 788 789 $image->Rescale( 790 $w, 791 $h, 792 wxIMAGE_QUALITY_HIGH 793 ); 794 795 $image->Resize( 796 [ $width, $height ], [ 0, 20], 797 ); 798 799 $quality ||= 90; 800 801 $image->SetOption( 802 "quality", 803 $quality 804 ); 805 806 if(!$image->SaveFile( 807 $image_file_out, 808 $self->GetWxBitmapType($type), 809 )){ 810 Wx::LogMessage( 811 gettext("An error has occured. Can not save file %s"), 812 $image_file_out, 813 ) 814 }; 815 } 816 817 818 819 690 820 sub _init_frame { 691 my ( $self ) = @_ 821 my ( $self ) = @_; 692 822 693 823 my $config = Wx::ConfigBase::Get; … … 699 829 my $sv = $config->ReadInt( "splitVertical", 150 ); 700 830 my $sh = $config->ReadInt( "splitHorizontal", 300 ); 701 702 my $url; 703 my $is_connected; 704 if($self->pwg->login_result->{stat} eq 'ok'){ 705 $url = $self->site_url; 706 $is_connected = 1; 707 } 708 else{ 709 $url = gettext("Not connected"); 710 Wx::MessageBox( 711 sprintf( 712 "%s\n\n%s %s %s", 713 $self->pwg->login_result->{message}, 714 gettext("Connection to"), 715 $self->site_url, 716 gettext("failed"), 717 ), 718 gettext("Piwigo login error"), 719 wxOK | wxICON_EXCLAMATION, 720 ); 721 } 722 831 832 my $url = $self->site_url; 833 834 if($self->use_offline){ 835 $url = gettext("Work Offline"); 836 } 723 837 724 838 my ( $frame ) = Uploader::GUI::wxFrameAUI->new( … … 728 842 width => $w, 729 843 height => $h, 730 title => "pLoader - Piwigo uploader 2.0.1a - [$url]",844 title => sprintf("pLoader - Piwigo uploader %s - [%s]", $self->version, $url), 731 845 pwg => $self->pwg, 732 846 imagelist => $self->imagelist, 733 is_connected => $is_connected,734 847 } 735 848 ); … … 743 856 $icon->LoadFile('../res/favicon.ico', wxBITMAP_TYPE_ICO); 744 857 $frame->SetIcon($icon); 745 746 747 return 1; 748 } 749 858 } 750 859 751 860 sub _readParams { -
extras/pLoader/trunk/src/Uploader/GUI/wxFrameAUI.pm
r3198 r3227 298 298 use File::Spec; 299 299 use Wx::Locale qw/:default/; 300 use Encode qw/encode decode is_utf8/;; 300 301 301 302 … … 333 334 thumbnail_settings 334 335 preview_settings 335 is_connected 336 336 toolbar 337 337 /; 338 338 __PACKAGE__->mk_accessors( @properties ); … … 346 346 EVT_LIST_ITEM_SELECTED 347 347 EVT_TREE_ITEM_RIGHT_CLICK 348 EVT_LIST_KEY_DOWN 348 EVT_LIST_KEY_DOWN 349 EVT_UPDATE_UI 349 350 /; 350 351 … … 373 374 wxDEFAULT_FRAME_STYLE|wxMAXIMIZE 374 375 ); 375 $self->is_connected(376 $params->{is_connected}377 );378 376 $self->pwg( $params->{pwg} ); 379 377 $self->imagelist( $params->{imagelist} ); … … 467 465 }, 468 466 { 469 label => "Comment :",467 label => gettext("Comment :"), 470 468 value => sub { $self->imagelist->current_image->site_comment(@_) }, 471 469 type => "LongText", 472 470 }, 473 471 { 474 label => "Author :",472 label => gettext("Author :"), 475 473 value => sub { $self->imagelist->current_image->site_author(@_) }, 476 474 }, 477 475 { 478 label => "File name :",476 label => gettext("File name :"), 479 477 value => sub { $self->imagelist->current_image->file(@_) }, 480 478 readonly => 1, 481 479 }, 482 480 { 483 label => "Create date :",481 label => gettext("Create date :"), 484 482 value => sub { $self->imagelist->current_image->create_date(@_) }, 485 483 readonly => 1, … … 699 697 $self->init_aui; 700 698 $self->init_dnd_targets; 701 702 699 if( $self->imagelist->wx_thumb_imglist->GetImageCount){ 700 printf("%s images\n", $self->imagelist->wx_thumb_imglist->GetImageCount); 703 701 $self->ShowImageViewer; 704 702 … … 876 874 877 875 sub init_aui { 878 my ( $self ) = @_; 876 my ( $self ) = @_; 877 878 my $url = wxTheApp->site_url; 879 880 $url = gettext("empty - work Offline") if wxTheApp->use_offline; 879 881 880 882 $self->manager->AddPane … … 884 886 $self->manager->AddPane 885 887 ( $self->create_tree, Wx::AuiPaneInfo->new->Name( "categories" )->Caption( 886 sprintf("%s - %s", gettext("Piwigo categories"), wxTheApp->site_url )888 sprintf("%s - %s", gettext("Piwigo categories"), $url ) 887 889 ) 888 890 ->Right->Position( 0 )->Resizable->CloseButton(0) ); … … 895 897 $self->_init_aui_settings_panels; 896 898 897 my $tb = $self->create_toolbar; 899 $self->toolbar( 900 $self->create_toolbar 901 ); 898 902 899 903 $self->manager->AddPane 900 ( $ tb, Wx::AuiPaneInfo->new->Name( "tb1" )->Caption( gettext("Tools") )901 ->ToolbarPane->Top->Row( 1 )->LeftDockable( 0 )->RightDockable( 0 ) ) if defined $ tb;904 ( $self->toolbar, Wx::AuiPaneInfo->new->Name( "tb1" )->Caption( gettext("Tools") ) 905 ->ToolbarPane->Top->Row( 1 )->LeftDockable( 0 )->RightDockable( 0 ) ) if defined $self->toolbar; 902 906 903 907 $self->manager->Update; … … 921 925 my ( $self ) = @_; 922 926 927 $self->toolbar->EnableTool(104, 0 ); 923 928 $self->manager->GetPane("global_settings")->Show(1); 924 929 $self->manager->Update(); … … 1076 1081 1077 1082 $self->tree->SetImageList( $self->treeimglist ); 1078 $self->populate_tree_categories if $self->is_connected;1083 $self->populate_tree_categories if !wxTheApp->use_offline; 1079 1084 $self->tree ; 1080 1085 } … … 1198 1203 EVT_LIST_KEY_DOWN($self, $self->imageviewer, \&OnImageViewerKeyDown) ; 1199 1204 EVT_CLOSE( $self, \&OnClose ); 1205 Wx::Event::EVT_UPDATE_UI( $self, $self, \&OnUpdateUI ); 1200 1206 1201 1207 … … 1225 1231 } 1226 1232 1233 sub OnUpdateUI { 1234 my( $self, $event ) = @_; 1235 1236 if( $self->manager ){ 1237 if($self->manager->GetPane("global_settings")->IsShown){ 1238 $self->toolbar->EnableTool(104, 0); 1239 } 1240 else{ 1241 $self->toolbar->EnableTool(104, 1); 1242 } 1243 } 1244 } 1245 1227 1246 sub OnRemoveImages { 1228 1247 my( $self, $event ) = @_; … … 1247 1266 $self->progressdlg->Show(1); 1248 1267 Wx::Yield(); 1268 1269 my $files = [ 1270 map { 1271 encode('iso-8859-1', $_) 1272 }@$file_paths 1273 ]; 1274 1275 # last is first ! 1276 if ( scalar @$files > 1 ){ 1277 my $first = shift @$files; 1278 push @$files, $first; 1279 } 1280 #print Dumper $files; 1249 1281 1250 1282 $self->imagelist->SetNewFiles( 1251 $file _paths1283 $files 1252 1284 ); 1253 1285 … … 1335 1367 my( $self, $event ) = @_; 1336 1368 1337 my $image = $self->imagelist-> images->[$event->GetIndex];1369 my $image = $self->imagelist->GetImage($event->GetIndex); 1338 1370 $image->site_name( 1339 1371 $event->GetLabel … … 1389 1421 my( $self, $event ) = @_; 1390 1422 1391 #eval {1423 eval { 1392 1424 $self->ProcessImageSelection(); 1393 #};1425 }; 1394 1426 } 1395 1427 … … 1495 1527 ) 1496 1528 ) if defined $self->imagelist->current_image->wx_thumb_file; 1497 1529 print $self->imagelist->current_image->wx_thumb_file, " added with index ", $indx, "\n"; 1498 1530 $self->imageviewer->Refresh( 1499 1531 $wximagelist … … 1509 1541 my ( $self ) = @_; 1510 1542 1511 return if !scalar @{$self->imagelist-> images};1543 return if !scalar @{$self->imagelist->sums}; 1512 1544 1513 1545 if( scalar @{$self->imagelist->categories} ){ … … 1518 1550 Uploader::GUI::wxImageProcessingProgressDlg->new( 1519 1551 { 1520 title => gettext("Image upload progress information"),1552 title => gettext("Image upload progress information"), 1521 1553 bt_label => gettext("Cancel upload"), 1522 1554 } … … 1587 1619 1588 1620 # allways store 1589 1621 1590 1622 wxTheApp->StoreConnectionProperties; 1591 1623 1592 1624 $self->imagelist->Store; 1625 wxTheApp->login_dlg->Destroy; 1593 1626 $self->Destroy; 1594 1627 } … … 1619 1652 ( 1620 1653 [ 1621 101, gettext("Add photo to selection"), '../res/tb_add.png', wxBITMAP_TYPE_PNG, 1, '../res/tb_add.png', gettext("Add photo to selection for resizing and uploading") 1654 101, 1655 gettext("Add photo to selection"), 1656 '../res/tb_add.png', 1657 wxBITMAP_TYPE_PNG, 1658 1, 1659 '../res/tb_add.png', 1660 gettext("Add photo to selection for resizing and uploading") 1622 1661 ], 1623 1662 [ 1624 102, gettext("Remove photo from selection"), '../res/tb_remove.png', wxBITMAP_TYPE_PNG, 1, '../res/tb_remove.png',gettext("Remove photo from selection. Files are not deleted ") 1663 102, 1664 gettext("Remove photo from selection"), 1665 '../res/tb_remove.png', 1666 wxBITMAP_TYPE_PNG, 1667 1, 1668 '../res/tb_remove.png', 1669 gettext("Remove photo from selection. Files are not deleted ") 1625 1670 ], 1626 1671 [ 1627 103, gettext("Upload to Piwigo"), '../res/tb_upload.png', wxBITMAP_TYPE_PNG, 1, '../res/tb_upload.png',gettext("Upload photos to Piwigo.") 1672 103, 1673 gettext("Upload to Piwigo"), 1674 '../res/tb_upload.png', 1675 wxBITMAP_TYPE_PNG, 1676 wxTheApp->use_offline ? 0 : 1, 1677 '../res/tb_upload.png', 1678 gettext("Upload photos to Piwigo.") 1628 1679 ], 1629 1680 [ 1630 104, gettext("Global settings"), '../res/tb_settings.png', wxBITMAP_TYPE_PNG, 1, '../res/tb_settings.png',gettext("Change global settings.") 1681 104, 1682 gettext("Global settings"), 1683 '../res/tb_settings.png', 1684 wxBITMAP_TYPE_PNG, 1685 0, 1686 '../res/tb_settings.png', 1687 gettext("Change global settings.") 1631 1688 ], 1632 1689 [ 1633 105, gettext("Language choice"), '../res/tb_i18n.png', wxBITMAP_TYPE_PNG, 1, '../res/tb_i18n.png',gettext("Language choice") 1690 105, 1691 gettext("Language choice"), 1692 '../res/tb_i18n.png', 1693 wxBITMAP_TYPE_PNG, 1694 1, 1695 '../res/tb_i18n.png', 1696 gettext("Language choice") 1634 1697 ], 1635 1698 … … 1700 1763 $self->frame->SetNewFiles($files) ; 1701 1764 } 1765 1766 1767 1702 1768 1703 1769 1; -
extras/pLoader/trunk/src/Uploader/GUI/wxLoginDlg.pm
r2597 r3227 39 39 username 40 40 password 41 use_offline 41 42 / 42 43 ); … … 52 53 # load controls 53 54 &main::Login($self, 1); 55 56 $self->use_offline( 57 $params->{use_offline} 58 ); 54 59 55 60 $self->url( … … 91 96 EVT_BUTTON( $self, $main::ID_PWG_OK, \&OnLoginOK ); 92 97 EVT_BUTTON( $self, $main::ID_PWG_CANCEL, \&OnLoginCancel ); 98 EVT_BUTTON( $self, $main::ID_PWG_OFFLINE, \&OnLoginOffline ); 93 99 94 100 95 101 } 96 102 103 sub OnLoginOffline { 104 my ( $self, $event ) = @_; 105 $self->use_offline->(1); 106 107 $self->EndModal(2); 108 } 97 109 98 110
Note: See TracChangeset
for help on using the changeset viewer.