source: extras/pLoader/trunk/src/Uploader/GUI/wxApp.pm @ 3198

Last change on this file since 3198 was 3198, checked in by ronosman, 15 years ago

Add image file name property.

  • Property svn:eol-style set to LF
File size: 22.0 KB
Line 
1# +-----------------------------------------------------------------------+
2# | pLoader - a Perl photo uploader for Piwigo                            |
3# +-----------------------------------------------------------------------+
4# | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
5# +-----------------------------------------------------------------------+
6# | This program is free software; you can redistribute it and/or modify  |
7# | it under the terms of the GNU General Public License as published by  |
8# | the Free Software Foundation                                          |
9# |                                                                       |
10# | This program is distributed in the hope that it will be useful, but   |
11# | WITHOUT ANY WARRANTY; without even the implied warranty of            |
12# | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
13# | General Public License for more details.                              |
14# |                                                                       |
15# | You should have received a copy of the GNU General Public License     |
16# | along with this program; if not, write to the Free Software           |
17# | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
18# | USA.                                                                  |
19# +-----------------------------------------------------------------------+
20package Uploader::GUI::wxApp;
21use strict;
22use base qw/Wx::App Class::Accessor::Fast/;   
23use Wx qw/
24             wxBITMAP_TYPE_GIF
25             wxBITMAP_TYPE_ICO
26             wxBITMAP_TYPE_BMP
27             wxBITMAP_TYPE_PNG
28             wxBITMAP_TYPE_JPEG
29             wxIMAGE_QUALITY_NORMAL
30             wxIMAGE_QUALITY_HIGH
31             wxSPLASH_CENTRE_ON_SCREEN
32             wxSPLASH_TIMEOUT
33             wxDefaultPosition
34             wxDefaultSize
35             wxSIMPLE_BORDER
36             wxFRAME_TOOL_WINDOW
37             wxFRAME_NO_TASKBAR wxSTAY_ON_TOP
38             wxWHITE
39             wxICON_EXCLAMATION
40             wxOK
41             wxLANGUAGE_ABKHAZIAN   
42             wxLANGUAGE_AFAR   
43             wxLANGUAGE_AFRIKAANS   
44             wxLANGUAGE_ALBANIAN   
45             wxLANGUAGE_AMHARIC   
46             wxLANGUAGE_ARABIC   
47             wxLANGUAGE_ARABIC_ALGERIA   
48             wxLANGUAGE_ARABIC_BAHRAIN   
49             wxLANGUAGE_ARABIC_EGYPT   
50             wxLANGUAGE_ARABIC_IRAQ   
51             wxLANGUAGE_ARABIC_JORDAN   
52             wxLANGUAGE_ARABIC_KUWAIT   
53             wxLANGUAGE_ARABIC_LEBANON   
54             wxLANGUAGE_ARABIC_LIBYA   
55             wxLANGUAGE_ARABIC_MOROCCO   
56             wxLANGUAGE_ARABIC_OMAN   
57             wxLANGUAGE_ARABIC_QATAR   
58             wxLANGUAGE_ARABIC_SAUDI_ARABIA   
59             wxLANGUAGE_ARABIC_SUDAN   
60             wxLANGUAGE_ARABIC_SYRIA   
61             wxLANGUAGE_ARABIC_TUNISIA   
62             wxLANGUAGE_ARABIC_UAE   
63             wxLANGUAGE_ARABIC_YEMEN   
64             wxLANGUAGE_ARMENIAN   
65             wxLANGUAGE_ASSAMESE   
66             wxLANGUAGE_AYMARA   
67             wxLANGUAGE_AZERI   
68             wxLANGUAGE_AZERI_CYRILLIC   
69             wxLANGUAGE_AZERI_LATIN   
70             wxLANGUAGE_BASHKIR   
71             wxLANGUAGE_BASQUE   
72             wxLANGUAGE_BELARUSIAN   
73             wxLANGUAGE_BENGALI   
74             wxLANGUAGE_BHUTANI   
75             wxLANGUAGE_BIHARI   
76             wxLANGUAGE_BISLAMA   
77             wxLANGUAGE_BRETON   
78             wxLANGUAGE_BULGARIAN   
79             wxLANGUAGE_BURMESE   
80             wxLANGUAGE_CAMBODIAN   
81             wxLANGUAGE_CATALAN   
82             wxLANGUAGE_CHINESE   
83             wxLANGUAGE_CHINESE_SIMPLIFIED   
84             wxLANGUAGE_CHINESE_TRADITIONAL   
85             wxLANGUAGE_CHINESE_HONGKONG   
86             wxLANGUAGE_CHINESE_MACAU   
87             wxLANGUAGE_CHINESE_SINGAPORE   
88             wxLANGUAGE_CHINESE_TAIWAN   
89             wxLANGUAGE_CORSICAN   
90             wxLANGUAGE_CROATIAN   
91             wxLANGUAGE_CZECH   
92             wxLANGUAGE_DANISH   
93             wxLANGUAGE_DUTCH   
94             wxLANGUAGE_DUTCH_BELGIAN   
95             wxLANGUAGE_ENGLISH   
96             wxLANGUAGE_ENGLISH_UK   
97             wxLANGUAGE_ENGLISH_US   
98             wxLANGUAGE_ENGLISH_AUSTRALIA   
99             wxLANGUAGE_ENGLISH_BELIZE   
100             wxLANGUAGE_ENGLISH_BOTSWANA   
101             wxLANGUAGE_ENGLISH_CANADA   
102             wxLANGUAGE_ENGLISH_CARIBBEAN   
103             wxLANGUAGE_ENGLISH_DENMARK   
104             wxLANGUAGE_ENGLISH_EIRE   
105             wxLANGUAGE_ENGLISH_JAMAICA   
106             wxLANGUAGE_ENGLISH_NEW_ZEALAND   
107             wxLANGUAGE_ENGLISH_PHILIPPINES   
108             wxLANGUAGE_ENGLISH_SOUTH_AFRICA   
109             wxLANGUAGE_ENGLISH_TRINIDAD   
110             wxLANGUAGE_ENGLISH_ZIMBABWE   
111             wxLANGUAGE_ESPERANTO   
112             wxLANGUAGE_ESTONIAN   
113             wxLANGUAGE_FAEROESE   
114             wxLANGUAGE_FARSI   
115             wxLANGUAGE_FIJI   
116             wxLANGUAGE_FINNISH   
117             wxLANGUAGE_FRENCH   
118             wxLANGUAGE_FRENCH_BELGIAN   
119             wxLANGUAGE_FRENCH_CANADIAN   
120             wxLANGUAGE_FRENCH_LUXEMBOURG   
121             wxLANGUAGE_FRENCH_MONACO   
122             wxLANGUAGE_FRENCH_SWISS   
123             wxLANGUAGE_FRISIAN   
124             wxLANGUAGE_GALICIAN   
125             wxLANGUAGE_GEORGIAN   
126             wxLANGUAGE_GERMAN   
127             wxLANGUAGE_GERMAN_AUSTRIAN   
128             wxLANGUAGE_GERMAN_BELGIUM   
129             wxLANGUAGE_GERMAN_LIECHTENSTEIN   
130             wxLANGUAGE_GERMAN_LUXEMBOURG   
131             wxLANGUAGE_GERMAN_SWISS   
132             wxLANGUAGE_GREEK   
133             wxLANGUAGE_GREENLANDIC   
134             wxLANGUAGE_GUARANI   
135             wxLANGUAGE_GUJARATI   
136             wxLANGUAGE_HAUSA   
137             wxLANGUAGE_HEBREW   
138             wxLANGUAGE_HINDI   
139             wxLANGUAGE_HUNGARIAN   
140             wxLANGUAGE_ICELANDIC   
141             wxLANGUAGE_INDONESIAN   
142             wxLANGUAGE_INTERLINGUA   
143             wxLANGUAGE_INTERLINGUE   
144             wxLANGUAGE_INUKTITUT   
145             wxLANGUAGE_INUPIAK   
146             wxLANGUAGE_IRISH   
147             wxLANGUAGE_ITALIAN   
148             wxLANGUAGE_ITALIAN_SWISS   
149             wxLANGUAGE_JAPANESE   
150             wxLANGUAGE_JAVANESE   
151             wxLANGUAGE_KANNADA   
152             wxLANGUAGE_KASHMIRI   
153             wxLANGUAGE_KASHMIRI_INDIA   
154             wxLANGUAGE_KAZAKH   
155             wxLANGUAGE_KERNEWEK   
156             wxLANGUAGE_KINYARWANDA   
157             wxLANGUAGE_KIRGHIZ   
158             wxLANGUAGE_KIRUNDI   
159             wxLANGUAGE_KONKANI   
160             wxLANGUAGE_KOREAN   
161             wxLANGUAGE_KURDISH   
162             wxLANGUAGE_LAOTHIAN   
163             wxLANGUAGE_LATIN   
164             wxLANGUAGE_LATVIAN   
165             wxLANGUAGE_LINGALA   
166             wxLANGUAGE_LITHUANIAN   
167             wxLANGUAGE_MACEDONIAN   
168             wxLANGUAGE_MALAGASY   
169             wxLANGUAGE_MALAY   
170             wxLANGUAGE_MALAYALAM   
171             wxLANGUAGE_MALAY_BRUNEI_DARUSSALAM   
172             wxLANGUAGE_MALAY_MALAYSIA   
173             wxLANGUAGE_MALTESE   
174             wxLANGUAGE_MANIPURI   
175             wxLANGUAGE_MAORI   
176             wxLANGUAGE_MARATHI   
177             wxLANGUAGE_MOLDAVIAN   
178             wxLANGUAGE_MONGOLIAN   
179             wxLANGUAGE_NAURU   
180             wxLANGUAGE_NEPALI   
181             wxLANGUAGE_NEPALI_INDIA   
182             wxLANGUAGE_NORWEGIAN_BOKMAL   
183             wxLANGUAGE_NORWEGIAN_NYNORSK   
184             wxLANGUAGE_OCCITAN   
185             wxLANGUAGE_ORIYA   
186             wxLANGUAGE_OROMO   
187             wxLANGUAGE_PASHTO   
188             wxLANGUAGE_POLISH   
189             wxLANGUAGE_PORTUGUESE   
190             wxLANGUAGE_PORTUGUESE_BRAZILIAN   
191             wxLANGUAGE_PUNJABI   
192             wxLANGUAGE_QUECHUA   
193             wxLANGUAGE_RHAETO_ROMANCE   
194             wxLANGUAGE_ROMANIAN   
195             wxLANGUAGE_RUSSIAN   
196             wxLANGUAGE_RUSSIAN_UKRAINE   
197             wxLANGUAGE_SAMI   
198             wxLANGUAGE_SAMOAN   
199             wxLANGUAGE_SANGHO   
200             wxLANGUAGE_SANSKRIT   
201             wxLANGUAGE_SCOTS_GAELIC   
202             wxLANGUAGE_SERBIAN   
203             wxLANGUAGE_SERBIAN_CYRILLIC   
204             wxLANGUAGE_SERBIAN_LATIN   
205             wxLANGUAGE_SERBO_CROATIAN   
206             wxLANGUAGE_SESOTHO   
207             wxLANGUAGE_SETSWANA   
208             wxLANGUAGE_SHONA   
209             wxLANGUAGE_SINDHI   
210             wxLANGUAGE_SINHALESE   
211             wxLANGUAGE_SISWATI   
212             wxLANGUAGE_SLOVAK   
213             wxLANGUAGE_SLOVENIAN   
214             wxLANGUAGE_SOMALI   
215             wxLANGUAGE_SPANISH   
216             wxLANGUAGE_SPANISH_ARGENTINA   
217             wxLANGUAGE_SPANISH_BOLIVIA   
218             wxLANGUAGE_SPANISH_CHILE   
219             wxLANGUAGE_SPANISH_COLOMBIA   
220             wxLANGUAGE_SPANISH_COSTA_RICA   
221             wxLANGUAGE_SPANISH_DOMINICAN_REPUBLIC   
222             wxLANGUAGE_SPANISH_ECUADOR   
223             wxLANGUAGE_SPANISH_EL_SALVADOR   
224             wxLANGUAGE_SPANISH_GUATEMALA   
225             wxLANGUAGE_SPANISH_HONDURAS   
226             wxLANGUAGE_SPANISH_MEXICAN   
227             wxLANGUAGE_SPANISH_MODERN   
228             wxLANGUAGE_SPANISH_NICARAGUA   
229             wxLANGUAGE_SPANISH_PANAMA   
230             wxLANGUAGE_SPANISH_PARAGUAY   
231             wxLANGUAGE_SPANISH_PERU   
232             wxLANGUAGE_SPANISH_PUERTO_RICO   
233             wxLANGUAGE_SPANISH_URUGUAY   
234             wxLANGUAGE_SPANISH_US   
235             wxLANGUAGE_SPANISH_VENEZUELA   
236             wxLANGUAGE_SUNDANESE   
237             wxLANGUAGE_SWAHILI   
238             wxLANGUAGE_SWEDISH   
239             wxLANGUAGE_SWEDISH_FINLAND   
240             wxLANGUAGE_TAGALOG   
241             wxLANGUAGE_TAJIK   
242             wxLANGUAGE_TAMIL   
243             wxLANGUAGE_TATAR   
244             wxLANGUAGE_TELUGU   
245             wxLANGUAGE_THAI   
246             wxLANGUAGE_TIBETAN   
247             wxLANGUAGE_TIGRINYA   
248             wxLANGUAGE_TONGA   
249             wxLANGUAGE_TSONGA   
250             wxLANGUAGE_TURKISH   
251             wxLANGUAGE_TURKMEN   
252             wxLANGUAGE_TWI   
253             wxLANGUAGE_UIGHUR   
254             wxLANGUAGE_UKRAINIAN   
255             wxLANGUAGE_URDU   
256             wxLANGUAGE_URDU_INDIA   
257             wxLANGUAGE_URDU_PAKISTAN   
258             wxLANGUAGE_UZBEK   
259             wxLANGUAGE_UZBEK_CYRILLIC   
260             wxLANGUAGE_UZBEK_LATIN   
261             wxLANGUAGE_VALENCIAN   
262             wxLANGUAGE_VIETNAMESE   
263             wxLANGUAGE_VOLAPUK   
264             wxLANGUAGE_WELSH   
265             wxLANGUAGE_WOLOF   
266             wxLANGUAGE_XHOSA   
267             wxLANGUAGE_YIDDISH   
268             wxLANGUAGE_YORUBA   
269             wxLANGUAGE_ZHUANG   
270             wxLANGUAGE_ZULU 
271         /;
272use Uploader::GUI::wxFrameAUI;
273use File::Slurp ;
274use Data::Dumper;
275use Storable;
276use File::HomeDir;
277use File::Spec;
278use Uploader::PWG;
279use Uploader::ImageList;
280use Uploader::GUI::wxLoginDlg;
281use Wx::Locale qw/:default/;
282
283
284$|=1;
285
286__PACKAGE__->mk_accessors( 
287    qw/
288          pwg
289          site_url
290          site_username
291          site_password
292          rejects
293          imagelist
294          storable_file
295          wx_thumb_dir
296          resized_dir
297          preview_dir
298          userdata_dir
299          resized_dir
300          thumb_dir
301          conf_file
302          locale
303          current_language
304      / 
305);
306
307sub FilterEvent {
308    my( $self, $event ) = @_;
309   
310    Wx::LogMessage "EventType %s", $event->GetEventType();
311   
312    return -1;
313}
314
315sub OnInit {
316    my( $self ) = @_;
317
318    Wx::InitAllImageHandlers();
319    my $applicationName = "pLoader" ;
320    $self->SetAppName( $applicationName );
321    $self->SetVendorName( "Piwigo Team" );
322
323    $self->{IMGTYPE} = {
324        'jpg' => wxBITMAP_TYPE_JPEG,
325        'gif' => wxBITMAP_TYPE_GIF,
326        'png' => wxBITMAP_TYPE_PNG,
327    };
328
329    $self->_init_userdir;
330
331
332    my $conf = retrieve $self->conf_file if -e $self->conf_file;       
333
334    if(defined $conf ){
335        $self->SetKeyValues($conf);
336    }
337    else {
338        $self->_readParams( 'pLoader.ini' ) unless defined $conf ;
339    }
340
341
342    $self->site_url(
343        $self->{site_url}
344    );
345
346    $self->site_username(
347        $self->{site_username}
348    );
349    $self->site_password(
350        $self->{site_password}
351    );
352    $self->current_language(
353        $self->{current_language}||wxLANGUAGE_ENGLISH
354    );
355
356   
357    $self->init_locale;
358   
359
360
361    my $ok = $self->Login();
362    # 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   
376        $self->_init_imagelist;
377        $self->_init_thumbimagelist;
378       
379        $self->_init_frame;
380    }
381
382    $ok;
383}
384
385my $locale;
386sub init_locale {
387    my ( $self, $language ) = @_;
388   
389    $self->current_language(
390        $language
391    ) if defined $language;
392
393    undef $locale;
394    $locale = Wx::Locale->new(
395        $self->current_language
396    );
397    $locale->AddCatalogLookupPathPrefix( '../locale');
398    if(!$locale->AddCatalog( 'pLoader.mo' )){
399        print "Cannot find translation catalog files. Use default language\n";
400    }
401       
402}
403
404sub StoreConnectionProperties {
405    my ( $self ) = @_;
406
407    eval {   
408        store( 
409            {
410                map{
411                   $_ => $self->{$_},
412                }
413                qw/
414                    site_url
415                    site_username
416                    site_password
417                    current_language
418                /
419            },
420            $self->conf_file
421        );
422    };
423}
424
425sub _init_imagelist {
426    my ( $self ) = @_; 
427
428    my $stored_imagelist;
429   
430    if( -e $self->storable_file ){
431        eval {
432            $stored_imagelist = retrieve $self->storable_file;
433        };
434        if($@){
435            Wx::LogMessage(
436                "An error has occured. Can not read %s\n%s",
437                $self->storable_file,
438                $@
439            );
440            $stored_imagelist = $self->_default_imagelist_params ;
441        }
442    }
443    else{
444        $stored_imagelist = $self->_default_imagelist_params ;
445    }
446
447    $self->imagelist(
448        Uploader::ImageList->new(
449            $stored_imagelist
450        )
451    );
452
453    $self->imagelist->ResizeCallback(
454        sub { $self->ResizeImage(@_) }
455    );
456}
457
458
459sub _default_imagelist_params {
460    my ( $self ) = @_ ;
461
462    my $params = {
463        thumb_size       => 120,
464        site_thumb_dir   => $self->thumb_dir,
465        wx_thumb_size    => 120,
466        wx_thumb_dir     => $self->wx_thumb_dir,
467        preview_ratio    => 25, 
468        preview_dir      => $self->preview_dir,
469        resize_w         => 800,
470        resize_h         => 600,
471        site_resized_dir => $self->resized_dir,
472        type             => 'jpg',
473        filter           => 'Lanczos',
474        blur             => 0.9,
475        quality          => 100,
476        wx_quality       => 80,
477        th_quality       => 90,
478        auto_rotate      => 1,
479        interlace        => 'Line',
480        create_resized   => 1,
481        use_exif_preview => 1,
482        prefix           => 'TN',
483        count            => 0,
484        storable_file    => $self->storable_file,
485        images           => [],
486        userdata_dir     => $self->userdata_dir,
487        default_name_prefix => 'Photo',
488        upload_rejects  =>  [],
489        ResizeCallback  => sub { $self->ResizeImage(@_) },
490    };
491
492    return $params;
493}
494
495sub Login {
496    my ( $self ) = @_; 
497
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    );
506
507    my $icon = Wx::Icon->new();
508    $icon->LoadFile('../res/favicon.ico', wxBITMAP_TYPE_ICO);
509    $dlg->SetIcon($icon);       
510
511   
512    my $rval = $dlg->ShowModal();
513    $dlg->Destroy;
514   
515    $rval;
516}
517
518sub _init_userdir {
519    my ( $self ) = @_;
520   
521    my $applicationName = $self->GetAppName ;
522    my $userdatadir = File::Spec->canonpath(
523        File::Spec->catfile(
524            File::HomeDir->my_data(), 
525            "\.$applicationName"
526        )
527    );
528
529    if(! -d $userdatadir){
530        if(! mkdir $userdatadir){
531            Wx::MessageBox( 
532                sprintf(
533                    "%s directory creation failed",
534                    $userdatadir,
535                ),
536                "pLoader working directory creation error",
537                wxOK | wxICON_EXCLAMATION, 
538            );
539
540            $userdatadir = File::Spec->canonpath(
541                File::Spec->catfile(
542                    File::Spec->tmpdir(), 
543                    "\.$applicationName"
544                )
545            );
546            mkdir $userdatadir;
547        }       
548    }
549
550    $self->userdata_dir($userdatadir);
551   
552    $self->conf_file(
553        File::Spec->catfile(
554            $self->userdata_dir, 
555            ".$applicationName.conf"
556        )
557    );
558
559   
560
561    $self->storable_file(
562        File::Spec->catfile($self->userdata_dir, 'pLoader.dat')
563    );
564   
565    my $thumbdir = File::Spec->catfile($self->userdata_dir, 'thumbnails');
566    mkdir $thumbdir unless -d $thumbdir ;
567    $self->thumb_dir($thumbdir);
568
569    my $wxthumbdir = File::Spec->catfile($self->userdata_dir, 'wxthumbnails');
570    mkdir $wxthumbdir unless -d $wxthumbdir ;
571    $self->wx_thumb_dir($wxthumbdir);
572
573
574    my $resizedir = File::Spec->catfile($self->userdata_dir, 'resize');
575    mkdir $resizedir unless -d $resizedir ;
576    $self->resized_dir($resizedir);
577
578    my $previewdir = File::Spec->catfile($self->userdata_dir, 'preview');
579    mkdir $previewdir unless -d $previewdir ;
580    $self->preview_dir($previewdir);
581
582       
583}
584
585sub _init_thumbimagelist {
586    my ( $self ) = @_;
587
588   
589    $self->imagelist->wx_thumb_imglist(
590        Wx::ImageList->new( 
591            $self->imagelist->wx_thumb_size, 
592            $self->imagelist->wx_thumb_size, 
593            1,
594            0
595        )
596    );
597   
598    # reload images
599    $self->_reload_thumb_images;
600}
601
602
603sub _reload_thumb_images {
604    my ( $self ) = @_;
605   
606    my $wximagelist = $self->imagelist->wx_thumb_imglist;
607    my $images = $self->imagelist->images;
608
609    map {
610        $wximagelist->Add(
611            Wx::Bitmap->new( 
612                $_->wx_thumb_file, 
613                $self->GetWxBitmapType($self->imagelist->type), 
614            )
615        );
616    }
617    @$images ;
618
619}
620
621sub GetWxBitmapType {
622    my ( $self, $type ) = @_;
623   
624    $self->{IMGTYPE}->{$type};
625}
626
627
628sub ResizeImage {
629    my ( $self, $image_file, $image_file_out, $type, $ratio, $width, $height, $quality ) = @_;
630   
631
632    my $image = Wx::Image->new(
633            $image_file, 
634            $self->GetWxBitmapType($type),
635            0
636    );
637   
638    my $w;
639    my $h;
640
641    my $img_w = $image->GetWidth;
642    my $img_h = $image->GetHeight;
643   
644    # use a ratio ( 25% default ) if defined
645    # default ratio is used for preview.
646    if($ratio){
647        $w = $ratio*$img_w/100 ;
648        $h = $ratio*$img_h/100 ;
649    }
650    # use specified width and height
651    else{
652        # portrait
653        if( $img_w < $img_h ){
654            $w = $height;
655        }
656        else{
657            $w = $width;
658        }
659        # to respect aspect ratio
660        $h = sprintf(
661            "%.0f",
662            ($w*$img_h)/$img_w
663        );
664    }
665
666    $image->Rescale(
667        $w,
668        $h,
669        wxIMAGE_QUALITY_HIGH
670    );
671   
672    $quality ||= 90;
673   
674    $image->SetOption( 
675        "quality", 
676        $quality 
677    );
678   
679    if(!$image->SaveFile(
680        $image_file_out,
681        $self->GetWxBitmapType($type),
682    )){
683        Wx::LogMessage(
684            "An error has occured. Can not save file %s",
685            $image_file_out,
686        )
687    };
688}
689
690sub _init_frame {
691    my ( $self ) = @_ ; 
692
693    my $config = Wx::ConfigBase::Get;
694
695    my $x = $config->ReadInt( "X", 50 );
696    my $y = $config->ReadInt( "Y", 50 );
697    my $w = $config->ReadInt( "Width", 1024 );
698    my $h = $config->ReadInt( "height", 768 );
699    my $sv = $config->ReadInt( "splitVertical", 150 );
700    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       
723
724    my ( $frame ) = Uploader::GUI::wxFrameAUI->new( 
725        {
726            x         => $x,
727            y         => $y,
728            width     => $w,
729            height    => $h,
730            title     => "pLoader - Piwigo uploader 2.0.1a - [$url]" ,
731            pwg       => $self->pwg,
732            imagelist => $self->imagelist,
733            is_connected => $is_connected,
734        }
735    );
736       
737        #printf("Config x %s, y %s, w %s, h %s\n", $x, $y, $w, $h);
738        #$frame->SetSize( $x, $y, $w, $h );
739    $frame->Show( 1 );
740    $self->SetTopWindow( $frame );
741
742    my $icon = Wx::Icon->new();
743    $icon->LoadFile('../res/favicon.ico', wxBITMAP_TYPE_ICO);
744    $frame->SetIcon($icon);     
745
746
747    return 1;
748}
749
750
751sub _readParams {
752        my( $self, $file ) = @_ ;
753
754
755        my $expr_params ;
756        eval { $expr_params = read_file( $file ); } ;
757       
758        my $paramValues = [] ;
759        if($expr_params){
760                my $expr = '$paramValues = ' ;
761                $expr .=  "$expr_params ; " ;
762                eval $expr ;
763        }
764       
765        return unless 'ARRAY' eq ref $paramValues ;
766       
767        if(scalar(@$paramValues )){
768            my $params = $paramValues->[0] ;
769            $self->SetKeyValues($params);
770        }
771}
772
773sub _readParams2 {
774        my( $self, $file ) = @_ ;
775
776
777        my $expr_params ;
778        eval { $expr_params = read_file( $file ); } ;
779       
780        my $paramValues = [] ;
781        if($expr_params){
782                my $expr = '$paramValues = ' ;
783                $expr .=  "$expr_params ; " ;
784                eval $expr ;
785        }
786       
787        return unless 'HASH' eq ref $paramValues ;
788       
789        $self->SetKeyValues($paramValues);
790}
791
792
793sub SetKeyValues {
794    my ( $self, $params )= @_; 
795
796    foreach( keys %$params ) {
797        $self->{$_} = $params->{$_} ;
798    }
799}
800
801
8021;
Note: See TracBrowser for help on using the repository browser.