pLoader-1.6/0000755000175000017500000000000011377742432011136 5ustar ronronpLoader-1.6/bin/0000755000175000017500000000000011377742432011706 5ustar ronronpLoader-1.6/locale/0000755000175000017500000000000011377742432012375 5ustar ronronpLoader-1.6/res/0000755000175000017500000000000011377742432011727 5ustar ronronpLoader-1.6/src/0000755000175000017500000000000011377742432011725 5ustar ronronpLoader-1.6/build/0000755000175000017500000000000011377742431012234 5ustar ronronpLoader-1.6/bin/pLoader.ini0000644000175000017500000000021411207570126013761 0ustar ronron[ { site_url => 'http://localhost', site_username => 'username', site_password => 'password', } ]pLoader-1.6/locale/en_US/0000755000175000017500000000000011377742432013406 5ustar ronronpLoader-1.6/locale/hu_HU/0000755000175000017500000000000011377742432013405 5ustar ronronpLoader-1.6/locale/cs_CZ/0000755000175000017500000000000011377742432013376 5ustar ronronpLoader-1.6/locale/ja_JP/0000755000175000017500000000000011377742432013360 5ustar ronronpLoader-1.6/locale/de_DE/0000755000175000017500000000000011377742431013334 5ustar ronronpLoader-1.6/locale/en_GB/0000755000175000017500000000000011377742432013347 5ustar ronronpLoader-1.6/locale/zh_CN/0000755000175000017500000000000011377742432013376 5ustar ronronpLoader-1.6/locale/nl_NL/0000755000175000017500000000000011377742432013377 5ustar ronronpLoader-1.6/locale/en_EN/0000755000175000017500000000000011377742432013361 5ustar ronronpLoader-1.6/locale/ru_RU/0000755000175000017500000000000011377742432013431 5ustar ronronpLoader-1.6/locale/es_ES/0000755000175000017500000000000011377742432013373 5ustar ronronpLoader-1.6/locale/fr_FR/0000755000175000017500000000000011377742432013373 5ustar ronronpLoader-1.6/locale/it_IT/0000755000175000017500000000000011377742432013405 5ustar ronronpLoader-1.6/locale/en_US/gs.html0000644000175000017500000000074611270120110014663 0ustar ronron

Click links below to start using pLoader.


1. Add a new album.

2. Add photos to the selection.

3. Upload the photo selection into your album.
pLoader-1.6/locale/hu_HU/pLoader.mo0000644000175000017500000003247711347556155015347 0ustar ronron43L5O%b   $ *5<@I P\nt {       (0C)U    (>Rh    /?Obx  %! $-= BNS bp v     &)P oz  %#*<PY`|  $ 7$Ns "7O`|     )3<Qb~+ /C cp  !BD$bU   ) %H &n    "    !!!A!`!!h!!! !!!B!"$"," 4"U"%##'$9$Q$i$#$$$$!$%% %(%0%8%@%I%_%{%% % %%%%%% % %& &#&B&V&]&p&$&&&& && & &' ':'V'['`'z'' '&' ''' '( ($(C(W( _(k( r(|(( ((((() )&)!6)X)&_)&)) )))) ) )) *"* **4*C*G*M*]*o*w*** *****0+1+ J+W+ r++++#+++ ,9,A,R, f,p, x,,, , ,,',-7- N-Z- y-$-%---...%!. G.U.[.j.y.. ......./ /*/2/ B/N/m/ // // / ///%/!0=0Q0e0 }0 0000 0001 1$1<1LY1=1)1d2s2z22 222"2"23)393?3:G3 3 3 333333H3&4%/4U4h4|444F4+45 5-5K"E tA9uv3 \Fw*(-p47RLhD Wa&:]` @;s?QSCN~ M}g!l)OP21j<kz.ef8IqB%>/orT_b,d=0U+c{Gxni$|HZ5yXJ6'V[^m# YA least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photosAdd photos to the selection.Admin. password :Admin. username :AdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCaptionCategorieCategoriesCategory nameCenterChanges apply to the whole batchChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioCzechDanishDefault authorDefault photo captionDo not ask me againDo you want to createDrag photos here to get startedDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHigh definitionHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensMaximum heightMaximum widthModelNew albumNew categoryNoNoneNot connectedNot selectedOKOr clickOrientationPhotoPhoto captionPhoto caption prefixPhoto exif propertiesPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperties of the %s selected photosProperty listRank number + prefixRefreshRemove photo from selectionRemove selected photosRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSearchSelect photos for uploadSelectedShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishTagsTags of the %s selected photosTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransferTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload high definition Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWatermarkWeb sizedWhat is the destination album?What is the destination category?What shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?Who can see?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoYou have selected a batch of %s photosadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplacesecondsto choose files on your computerProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: sámli Language-Team: Hungarian Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-Language: Hungarian X-Poedit-Country: HUNGARY Legalább egy képet már hozzáadtakVízjel aktiválásaVízjel aktiválása nagy felbontásbanÚj album hozzáadása.Új album létrehozásaÚj kategória hozzáadásaFeltöltendő képek kiválasztásaKépek hozzáadásaKépek kiválasztása.Rendszergazda jelszó :Rendszergazda felhasználónév :HaladóAlbumAlbum neve:AlbumokÖsszesBlende:Szerző:Automatikus forgatásKép automatikus forgatásaFeketeLentBalra lentJobbra lentBrazilMégsemKépfeldolgozás megszakításaFeltöltés megszakításaFeliratKategóriaKategóriákKategória neve:KözépenKijelölt képek módosításaEllenőrző összegKínaiKínai (egyszerű)Válasszon nyelvetItt indíthatja a pLoader programot.BezárMindent bezárSzínMegjegyzés:Kommunikációs hibaCsatlakozásKapcsolódásKészítés időpontja:Készítés időpontja + előtagSaját előnézeti viszony:CsehDánAlapértelmezett szerző:Alapértelmezett képfelirat:Ne kérdezze meg újraLétrehozzuk?Húzza át a képeket ide a kezdéshezIdőtartamHollandAngolKilépésÖsszes kibontásaFájlnévFájl neve és elérési útjaGyújtótávolság:FranciaÁltalánosNémetIndításÁltalános beállításokHD kép elmosás:HD kép készHD kép szűrő:HD kép magasság:HD kép interlace:HD kép JPEG minőség:HD kép szélesség:Magasság:Nagy felbontásA kiválasztott kép megjelenéseMagyarKépfeldolgozás haladó információkKép feltöltés haladó információkOlaszJPEG-képJapánNyelv kiválasztásaBalraBal margó:Objektív:Maximális magasságMaximális szélességModell:Új albumÚj kategóriaNemNincsNincs kapcsolatNem kiválasztottRendbenVagy kattintsonElhelyezkedés:KépKép felirat:Kép képaláírás előtag:Kép exif adataiKép tulajdonságokKép kiválasztásaKiválasztott kép bélyegkép (JPEG) minőség:Kép bélyegkép méret:Kép méreteKép frissítés kezeléseKategóriákBejelentkezés a galériábaHiba a bejelentkezéskorGaléria feltöltési hibaGaléria feltöltési információkGaléria elérési út :Válasszon egy érvényes cél kategóriátLengyelBrazil PortugálPortugál PortugálPozició:ElőtagElőtag + készítés időpontjaElőtag + sorozatszámÁtméretezett kép készítésElőnézetFeldolgozásBeállításokTulajdonságok: %s (kiválasztott kép)Tulajdonságok listájaSorozatszám + előtagFrissítésKiválasztott képek törléseKijelölt képek eltávolításaEltávolítás (feltöltött képek)Képméret igazítása a weboldalhoz:ÁtméretezettÁtméretezett kép készJobbraOroszKeresVálassza ki a feltöltendő képeketKiválasztottMutatZársebesség:Kép elmosás:Szűrő:Kép magasság:Interlace:JPEG minőség:Kép szélesség:Bélyegkép (JPEG) minőség:Bélyegkép mérete:SzlovákSpanyolCimkeCimkék: %s (kiválasztott kép)SzövegSzöveg méret:BélyegképBélyegkép és képaláírásBélyegkép készEszközökFentBalra fentFelső margó:Jobbra fentVégrehajtAz átvitt blokk mérete:Feltöltés megszakításaHD kép feltöltés (eredeti méret):Kép feltöltés (eredeti méret)HD kép feltöltésAlbum feltöltése.Feltöltés galériábaFeltöltésFeltöltésHD kép feltöltésÁtméretezett kép feltöltésBélyegkép feltöltésExif adatok:EredetiÁtméretezettVízjelKépek mérete a WebenMi legyen a cél album?Mi legyen a cél kategória?Mit csináljunk a fájlokkal? (bélyegkép, átméretezett, nagy felbontás)Mit tegyünk az egyéb jellemzőkkel? (kategóriák, cimkék)Mit tegyünk a hozzáférési szintekkel?Mit tegyünk az egyedi jellemzőkkel? (képaláírás, megjegyzés, szerző, készítés időpontja)FehérKi láthatja a képeket?Ki láthatja ?Szélesség:Kapcsolat nélküli munkaIgenIgen, eredeti kép átméretezéseIgen, másolat az eredeti képrőlKiválasztva %s képadminisztrátoralbumalbumokhozzáfűzés (jelenlegi megtartása és új készítése)kategóriakategóriákkapcsolatokKapcsolat nélküli munkahibásmindenkihibacsaládtöltse ki ha üres (csak az üres helyekre Galéria tulajdonságoknál)barátokHibás feltöltés (nem feltöltött)Kép feldolgozásaFeltöltött képekvízjelsemmibeAz új nyelv használatához újra kell indítania a pLoader programothozzáadott képek száma kiválasztásbólcseremásodpercválassza ki a fájlokat a számítógéprőlpLoader-1.6/locale/hu_HU/pLoader.po0000644000175000017500000003111511347556200015325 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: sámli \n" "Language-Team: Hungarian Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-Language: Hungarian\n" "X-Poedit-Country: HUNGARY\n" msgid "Select photos for upload" msgstr "Válassza ki a feltöltendő képeket" msgid "JPEG files" msgstr "JPEG-kép" msgid "Default author" msgstr "Alapértelmezett szerző:" msgid "Photo caption prefix" msgstr "Kép képaláírás előtag:" msgid "Site thumbnail size" msgstr "Bélyegkép mérete:" msgid "Site image width" msgstr "Kép szélesség:" msgid "Site image height" msgstr "Kép magasság:" msgid "Auto rotate image" msgstr "Kép automatikus forgatása" msgid "Upload high (original size) " msgstr "Kép feltöltés (eredeti méret)" msgid "Upload high definition " msgstr "HD kép feltöltés" msgid "High definition" msgstr "Nagy felbontás" msgid "Yes" msgstr "Igen" msgid "No" msgstr "Nem" msgid "Admin. username :" msgstr "Rendszergazda felhasználónév :" msgid "Admin. password :" msgstr "Rendszergazda jelszó :" msgid "OK" msgstr "Rendben" msgid "Cancel" msgstr "Mégsem" msgid "Create date" msgstr "Készítés időpontja:" msgid "Width" msgstr "Szélesség:" msgid "Height" msgstr "Magasság:" msgid "Orientation" msgstr "Elhelyezkedés:" msgid "Shutter speed" msgstr "Zársebesség:" msgid "Aperture" msgstr "Blende:" msgid "Focal length" msgstr "Gyújtótávolság:" msgid "Model" msgstr "Modell:" msgid "Lens" msgstr "Objektív:" msgid "Author" msgstr "Szerző:" msgid "Comment" msgstr "Megjegyzés:" msgid "Chinese" msgstr "Kínai" msgid "Chinese simplified" msgstr "Kínai (egyszerű)" msgid "Czech" msgstr "Cseh" msgid "Danish" msgstr "Dán" msgid "English" msgstr "Angol" msgid "German" msgstr "Német" msgid "Spanish" msgstr "Spanyol" msgid "French" msgstr "Francia" msgid "Hungarian" msgstr "Magyar" msgid "Italian" msgstr "Olasz" msgid "Japanese" msgstr "Japán" msgid "Dutch" msgstr "Holland" msgid "Polish" msgstr "Lengyel" msgid "Portuguese Brazil" msgstr "Brazil Portugál" msgid "Portuguese Portugal" msgstr "Portugál Portugál" msgid "Russian" msgstr "Orosz" msgid "Slovak" msgstr "Szlovák" msgid "Brasil" msgstr "Brazil" msgid "pLoader needs to be restarted to display the new selected language" msgstr "Az új nyelv használatához újra kell indítania a pLoader programot" msgid "Piwigo categories" msgstr "Kategóriák" msgid "Photo properties" msgstr "Kép tulajdonságok" msgid "Tools" msgstr "Eszközök" msgid "Global settings" msgstr "Általános beállítások" msgid "Advanced" msgstr "Haladó" msgid "Transfert chunk size" msgstr "Az átvitt blokk mérete:" msgid "General" msgstr "Általános" msgid "Resized" msgstr "Átméretezett" msgid "Thumbnail" msgstr "Bélyegkép" msgid "Preview" msgstr "Előnézet" msgid "Photo selection" msgstr "Kép kiválasztása" msgid "Language choice" msgstr "Nyelv kiválasztása" msgid "Choose a language" msgstr "Válasszon nyelvet" msgid "Upload to Piwigo" msgstr "Feltöltés galériába" msgid "Remove photo from selection" msgstr "Kiválasztott képek törlése" msgid "Add photo to selection" msgstr "Feltöltendő képek kiválasztása" msgid "Not connected" msgstr "Nincs kapcsolat" msgid "Connection to" msgstr "Kapcsolódás" msgid "failed" msgstr "hiba" msgid "Piwigo login" msgstr "Bejelentkezés a galériába" msgid "Piwigo login error" msgstr "Hiba a bejelentkezéskor" msgid "Please select a valid target category" msgstr "Válasszon egy érvényes cél kategóriát" msgid "Piwigo upload error" msgstr "Galéria feltöltési hiba" msgid "Category name" msgstr "Kategória neve:" msgid "Add new category" msgstr "Új kategória hozzáadása" msgid "New category" msgstr "Új kategória" msgid "Upload cancelled" msgstr "Feltöltés megszakítása" msgid "Image upload progress information" msgstr "Kép feltöltés haladó információk" msgid "Cancel upload" msgstr "Feltöltés megszakítása" msgid "Piwigo upload information" msgstr "Galéria feltöltési információk" msgid "Processing" msgstr "Feldolgozás" msgid "images processed" msgstr "Kép feldolgozása" msgid "images uploaded" msgstr "Feltöltött képek" msgid "images in errors and not uploaded" msgstr "Hibás feltöltés (nem feltöltött)" msgid "Duration" msgstr "Időtartam" msgid "seconds" msgstr "másodperc" msgid "Categories" msgstr "Kategóriák" msgid "categories" msgstr "kategóriák" msgid "Categorie" msgstr "Kategória" msgid "categorie" msgstr "kategória" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Albumok" msgid "album" msgstr "album" msgid "albums" msgstr "albumok" msgid "Photo caption" msgstr "Kép felirat:" msgid "File name" msgstr "Fájlnév" msgid "Default photo caption" msgstr "Alapértelmezett képfelirat:" msgid "Resize site image" msgstr "Képméret igazítása a weboldalhoz:" msgid "Auto rotate" msgstr "Automatikus forgatás" msgid "Upload high (original size)" msgstr "HD kép feltöltés (eredeti méret):" msgid "Site image jpeg quality" msgstr "JPEG minőség:" msgid "Site image filter" msgstr "Szűrő:" msgid "Site image blur" msgstr "Kép elmosás:" msgid "Site image interlace" msgstr "Interlace:" msgid "Site thumbnail jpeg quality" msgstr "Bélyegkép (JPEG) minőség:" msgid "Photo selection thumbnail size" msgstr "Kép bélyegkép méret:" msgid "Photo selection thumbnail jpeg quality" msgstr "Kiválasztott kép bélyegkép (JPEG) minőség:" msgid "Use exif preview when available" msgstr "Exif adatok:" msgid "Custom preview ratio" msgstr "Saját előnézeti viszony:" msgid "Piwigo url" msgstr "Galéria elérési út :" msgid "Connect" msgstr "Csatlakozás" msgid "Work Offline" msgstr "Kapcsolat nélküli munka" msgid "Exit" msgstr "Kilépés" msgid "empty - work Offline" msgstr "Kapcsolat nélküli munka" msgid "None" msgstr "Nincs" msgid "File path and name" msgstr "Fájl neve és elérési útja" msgid "Prefix" msgstr "Előtag" msgid "Prefix + rank number" msgstr "Előtag + sorozatszám" msgid "Rank number + prefix" msgstr "Sorozatszám + előtag" msgid "Prefix + create date chrono" msgstr "Előtag + készítés időpontja" msgid "Create date chrono + prefix" msgstr "Készítés időpontja + előtag" msgid "Photo" msgstr "Kép" msgid "Image processing progress information" msgstr "Képfeldolgozás haladó információk" msgid "Cancel image processing" msgstr "Képfeldolgozás megszakítása" msgid "Add new album" msgstr "Új album létrehozása" msgid "Album name" msgstr "Album neve:" msgid "New album" msgstr "Új album" msgid "Refresh" msgstr "Frissítés" msgid "Expand all" msgstr "Összes kibontása" msgid "Collapse all" msgstr "Mindent bezár" msgid "Getting started" msgstr "Indítás" msgid "Properties" msgstr "Beállítások" msgid "Remove uploaded photo from selection" msgstr "Eltávolítás (feltöltött képek)" msgid "Activate watermark" msgstr "Vízjel aktiválása" msgid "Activate watermark on high definition" msgstr "Vízjel aktiválása nagy felbontásban" msgid "Text" msgstr "Szöveg" msgid "Text size" msgstr "Szöveg méret:" msgid "Color" msgstr "Szín" msgid "Position" msgstr "Pozició:" msgid "Top margin" msgstr "Felső margó:" msgid "Left margin" msgstr "Bal margó:" msgid "White" msgstr "Fehér" msgid "Black" msgstr "Fekete" msgid "Top" msgstr "Fent" msgid "Top left" msgstr "Balra fent" msgid "Top right" msgstr "Jobbra fent" msgid "Bottom" msgstr "Lent" msgid "Bottom left" msgstr "Balra lent" msgid "Bottom right" msgstr "Jobbra lent" msgid "Center" msgstr "Középen" msgid "Left" msgstr "Balra" msgid "Right" msgstr "Jobbra" msgid "my watermark" msgstr "vízjel" msgid "Show" msgstr "Mutat" msgid "All" msgstr "Összes" msgid "Selected" msgstr "Kiválasztott" msgid "Not selected" msgstr "Nem kiválasztott" msgid "Uploading" msgstr "Feltöltés" msgid "Uploading resized" msgstr "Átméretezett kép feltöltés" msgid "Uploading thumbnail" msgstr "Bélyegkép feltöltés" msgid "Uploading high definition" msgstr "HD kép feltöltés" msgid "Checksum for" msgstr "Ellenőrző összeg" msgid "Communication error with" msgstr "Kommunikációs hiba" msgid "Thumbnail image done for" msgstr "Bélyegkép kész" msgid "HD image done for" msgstr "HD kép kész" msgid "Resized image done for" msgstr "Átméretezett kép kész" msgid "Uploaded" msgstr "Feltöltés" msgid "Preparing resized image for" msgstr "Átméretezett kép készítés" msgid "Close" msgstr "Bezár" msgid "on" msgstr "be" msgid "photos added to the selection" msgstr "hozzáadott képek száma kiválasztásból" msgid "errors" msgstr "hibás" msgid "Yes, use HD resized of the original photo" msgstr "Igen, eredeti kép átméretezése" msgid "Yes, use a copy of the original photo" msgstr "Igen, másolat az eredeti képről" msgid "HD image width" msgstr "HD kép szélesség:" msgid "HD image height" msgstr "HD kép magasság:" msgid "HD image jpeg quality" msgstr "HD kép JPEG minőség:" msgid "HD image filter" msgstr "HD kép szűrő:" msgid "HD image blur" msgstr "HD kép elmosás:" msgid "HD image interlace" msgstr "HD kép interlace:" msgid "nothing" msgstr "semmi" msgid "replace" msgstr "csere" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "töltse ki ha üres (csak az üres helyekre Galéria tulajdonságoknál)" msgid "append (keep existing and add new)" msgstr "hozzáfűzés (jelenlegi megtartása és új készítése)" msgid "Do not ask me again" msgstr "Ne kérdezze meg újra" msgid "A least one photo has already been added in the past." msgstr "Legalább egy képet már hozzáadtak" msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Mit csináljunk a fájlokkal? (bélyegkép, átméretezett, nagy felbontás)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Mit tegyünk az egyedi jellemzőkkel? (képaláírás, megjegyzés, szerző, készítés időpontja)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Mit tegyünk az egyéb jellemzőkkel? (kategóriák, cimkék)" msgid "Photo update management" msgstr "Kép frissítés kezelése" msgid "Who can see the photo?" msgstr "Ki láthatja a képeket?" msgid "everybody" msgstr "mindenki" msgid "contacts" msgstr "kapcsolatok" msgid "friends" msgstr "barátok" msgid "family" msgstr "család" msgid "admins" msgstr "adminisztrátor" msgid "What shall we do with privacy level?" msgstr "Mit tegyünk a hozzáférési szintekkel?" msgid "Thumbnail and caption" msgstr "Bélyegkép és képaláírás" msgid "Property list" msgstr "Tulajdonságok listája" msgid "How photo selection is displayed" msgstr "A kiválasztott kép megjelenése" msgid "Use original" msgstr "Eredeti" msgid "Use resized original" msgstr "Átméretezett" msgid "Web sized" msgstr "Képek mérete a Weben" msgid "Do you want to create" msgstr "Létrehozzuk?" msgid "Transfer" msgstr "Végrehajt" msgid "Click links below to start using pLoader." msgstr "Itt indíthatja a pLoader programot." msgid "Add a new album." msgstr "Új album hozzáadása." msgid "Add photos to the selection." msgstr "Képek kiválasztása." msgid "Upload the photo selection into your album." msgstr "Album feltöltése." msgid "Photo size" msgstr "Kép mérete" msgid "Maximum width" msgstr "Maximális szélesség" msgid "Maximum height" msgstr "Maximális magasság" msgid "What is the destination category?" msgstr "Mi legyen a cél kategória?" msgid "What is the destination album?" msgstr "Mi legyen a cél album?" msgid "Caption" msgstr "Felirat" msgid "Who can see?" msgstr "Ki láthatja ?" msgid "You have selected a batch of %s photos" msgstr "Kiválasztva %s kép" msgid "Changes apply to the whole batch" msgstr "Kijelölt képek módosítása" msgid "Drag photos here to get started" msgstr "Húzza át a képeket ide a kezdéshez" msgid "Or click" msgstr "Vagy kattintson" msgid "to choose files on your computer" msgstr "válassza ki a fájlokat a számítógépről" msgid "Add photos" msgstr "Képek hozzáadása" msgid "Remove selected photos" msgstr "Kijelölt képek eltávolítása" msgid "Properties of the %s selected photos" msgstr "Tulajdonságok: %s (kiválasztott kép)" msgid "Tags of the %s selected photos" msgstr "Cimkék: %s (kiválasztott kép)" msgid "Watermark" msgstr "Vízjel" msgid "Tags" msgstr "Cimke" msgid "Search" msgstr "Keres" msgid "Photo exif properties" msgstr "Kép exif adatai" pLoader-1.6/locale/cs_CZ/pLoader.mo0000644000175000017500000002727111326151441015316 0ustar ronron| 051g%z $- 3>EIR Yew}       #)5_ erx  2HQW_ d oy    .DS Z {%!     ,/ 4 BO R^ dr& #7 Q%\    *8MU$q  ,>Sk|      !+4IZv+ # CP eBoD$Urx )%"  - 7BK` gqxA! !B$g:& a (r      ! ! +!7! =!J!O!T!]! c!p!!! ! ! !!!! ! !! ""("0"C"?R"" "" "" " """#$#+#3#I#a#u## ### ### # ###$ $$ )$7$M$]$q$$$$#$ $*$+%?% G%T%]%l% s%%% %%%%% %% %% %% &"&2&R&j& {&&&& &&&& ''%','C'_'|'' '''''"' (((0(O(W(](x(( ((((( ((( ) #) -)9)>)M)U)k) )) ) ) ))))*))*F* e* s* ******* +H+Dc+6+g+G,N,g,p,,-,',,,,1, )- 3-=-F-a-g-p-v-Y}- -(- . . 0.>.F.JI...I}Ezdc%>P:]KYR08B6{L)OC 1wi&5gG_["3\fmXo!.~pa2|=M  HqxhT<rD$+ 9kj 7U(-*vtsy JW4'A^?,ebFSn`#Zl@V;NQ/uA least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photos to the selection.Admin. passwordAdmin. usernameAdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCategorieCategoriesCategory nameCenterChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioCzechDanishDefault authorDefault photo captionDo not ask me againDo you want to createDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFoto prefixFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensModelNew albumNew categoryNoNoneNot connectedNot selectedOKOrientationPhotoPhoto captionPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperty listRank number + prefixRefreshRemove photo from selectionRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSelect photos for uploadSelectedShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransferTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWeb sizedWhat shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplaceProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-06-16 09:54+0100 PO-Revision-Date: Last-Translator: noname Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res Alespoň jedna fotografie byla přidána již v minulosti.Aktivuj vodotiskAktivuj vodotisk pro vysoké rozlišeníPřidat nové album.Přidat nové albumPřidej novou kategoriiPřidat foto do výběruPřidat fotky do výběru.Admin. hesloAdmin. jménoPokročiléAlbumAlbum názevAlbaVšeApertureAutorAutom.rotaceAuto rotace fotekČernáDoleDole vlevoDole vpravoBrazilskyZrušitZrušit zpracování obrazůUkončit uploadKategorieKategorieNázev kategorieUprostředKontrolní součetChineseChinese simplifiedVyber překladVyberte odkaz níže pro zahájení práce s aplikací pLoader.ZavřítSbalit všeBarvaKomentářChyba komunikace sPřipojitPřipojeno kVytvořeno dneChrono. datum + prefixObecná hodnota pro previewČeskyDánskyPřednastavený autorDefaultní foto titulekNeptej se mě znovuChcete vytvořitPrůběhHolandskyAnglickyUkončitRozbal všeNázev souboruSoubor cesta a názevFocal lengthFoto prefixFrenchHlavníNěmeckyStartGlobální nastaveníHD image blurHD obraz dokončen zaHD image filtervýška HD obrázkuHD image interlaceHD obrázek jpeg kvalitašířka HD obrázkuVýškaJak se zobrazí výběr fotografiíMaďarskyInformace o průběhu zpracování obrazůUkládání obrázků informace o průběhuItalskyJPEG souboryJaponskyVýběr jazykaNalevoLevý okrajObjektivModelNové albumNová kategorieNeNicSpojení nenavázánoNevybránoOKOrientaceFotoFoto titulekParametry FotekVýběr fotekFoto výběr kvality miniatur jpegFoto výběr velikosti miniaturPhoto update managementPiwigo KategoriePiwigo loginPiwigo login chybaPiwigo Upload chybaPiwigo upload informacePiwigo urlVyberte existující kategoriiPolskyPortuguese BrazilPortuguese PortugalPozicePrefixPrefix + chrono. datumPrefix + pořadové čísloPříprava resized image forUkázkaPracujiNastaveníOprávnění seznamPořadové číslo + prefixObnovitOdeber foto z výběruOdebrat odeslané fotky z výběruZměnit velikost fotek pro webResizedZměna velikosti dokončena zaNapravoRuskyVyberte fotky k odesláníVybránoUkažShutter speedSite image blurPoužíj filtrWeb obr.výškaSite image interlaceJPEG-kvalitaWeb obr.šířkaJPEG kvalita náhleduWeb velikost náhleduSlovenskyŠpanělskyTextVelikost textuNáhledThumbnail and captionMiniatura obrazu dokončena zaNástrojeHorníHorní vlevoHorní okrajHorní vpravoTransferTransfert chunk sizeUpload ukončenUpload vysoké rozlišení (original size)Upload ve vysokém rozl. (original size) Nahrát vybrané fotky na web.Upload na webUploadovánoUploadingUploading high definitionUploading resizedUploading thumbnailPoužít EXIF-ukázku pokud jePoužij originálUse resized originalWeb sizedCo budeme dělat se soubory fotek? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)Co budeme dělat s úrovní ochrany osobních údajů?Co budeme dělat s jednotlivými hodnotami vlastností? (Titulek, komentář, autor, datum vytvoření)BíláKdo může vidět fotku?ŠířkaPracovat offlineAnoAno, použij HD velikost původní fotografieAno, použij kopii původní fotografieadministrátořialbumalbapřipojit (zachovat stávající a přidat nový)kategoriekategoriekontaktyprázdné - práce OfflinechybyvšichniChybarodinavyplňte pokud je pole prázdné (jen vyplňuje aktuálně prázdná nastavení v Piwigo)přáteléDošlo k chybě a fotky nebyly odeslányFotky zpracováványFotky odeslánymůj vodotisknothingonAplikace pLoader musí být pro změnu jazyka ukončena a znovu spuštěnafotky přidány do výběrunahraditpLoader-1.6/locale/cs_CZ/pLoader.po0000644000175000017500000002607711361143767015337 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-16 09:54+0100\n" "PO-Revision-Date: \n" "Last-Translator: noname \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Vyberte fotografie k odeslání" msgid "JPEG files" msgstr "JPEG soubory" msgid "Default author" msgstr "Přednastavený autor" msgid "Foto prefix" msgstr "Foto prefix" msgid "Site thumbnail size" msgstr "Web velikost náhledu" msgid "Site image width" msgstr "Web obr.šířka" msgid "Site image height" msgstr "Web obr.výška" msgid "Auto rotate image" msgstr "Auto rotace fotek" msgid "Upload high (original size) " msgstr "Nahrát ve vysokém rozl. (original size) " msgid "Yes" msgstr "Ano" msgid "No" msgstr "Ne" msgid "Admin. username" msgstr "Admin. jméno" msgid "Admin. password" msgstr "Admin. heslo" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Zrušit" msgid "Create date" msgstr "Vytvořeno dne" msgid "Width" msgstr "Šířka" msgid "Height" msgstr "Výška" msgid "Orientation" msgstr "Orientace" msgid "Shutter speed" msgstr "Čas" msgid "Aperture" msgstr "Clona" msgid "Focal length" msgstr "Ohnisková vzdálenost" msgid "Model" msgstr "Model" msgid "Lens" msgstr "Objektiv" msgid "Author" msgstr "Autor" msgid "Comment" msgstr "Komentář" msgid "Chinese" msgstr "Čínsky" msgid "Chinese simplified" msgstr "Čínsky zjednodušeně" msgid "Czech" msgstr "Česky" msgid "Danish" msgstr "Dánsky" msgid "English" msgstr "Anglicky" msgid "German" msgstr "Německy" msgid "Spanish" msgstr "Španělsky" msgid "French" msgstr "French" msgid "Hungarian" msgstr "Maďarsky" msgid "Italian" msgstr "Italsky" msgid "Japanese" msgstr "Japonsky" msgid "Dutch" msgstr "Holandsky" msgid "Polish" msgstr "Polsky" msgid "Portuguese Brazil" msgstr "Portugalsky Brazilsky" msgid "Portuguese Portugal" msgstr "Portugalsky" msgid "Russian" msgstr "Rusky" msgid "Slovak" msgstr "Slovensky" msgid "Brasil" msgstr "Brazilsky" msgid "pLoader needs to be restarted to display the new selected language" msgstr "Aplikace pLoader musí být pro změnu jazyka ukončena a znovu spuštěna" msgid "Piwigo categories" msgstr "Piwigo Kategorie" msgid "Photo properties" msgstr "Parametry Fotek" msgid "Tools" msgstr "Nástroje" msgid "Global settings" msgstr "Globální nastavení" msgid "Advanced" msgstr "Pokročilé" msgid "Transfert chunk size" msgstr "Transfert chunk size" msgid "General" msgstr "Hlavní" msgid "Resized" msgstr "Resized" msgid "Thumbnail" msgstr "Náhled" msgid "Preview" msgstr "Ukázka" msgid "Photo selection" msgstr "Výběr fotek" msgid "Language choice" msgstr "Výběr jazyka" msgid "Choose a language" msgstr "Vyber překlad" msgid "Upload to Piwigo" msgstr "Upload na web" msgid "Remove photo from selection" msgstr "Odeber foto z výběru" msgid "Add photo to selection" msgstr "Přidat foto do výběru" msgid "Not connected" msgstr "Spojení nenavázáno" msgid "Connection to" msgstr "Připojeno k" msgid "failed" msgstr "Chyba" msgid "Piwigo login" msgstr "Piwigo login" msgid "Piwigo login error" msgstr "Piwigo login chyba" msgid "Please select a valid target category" msgstr "Vyberte existující kategorii" msgid "Piwigo upload error" msgstr "Piwigo Upload chyba" msgid "Category name" msgstr "Název kategorie" msgid "Add new category" msgstr "Přidej novou kategorii" msgid "New category" msgstr "Nová kategorie" msgid "Upload cancelled" msgstr "Nahrání ukončeno" msgid "Image upload progress information" msgstr "Ukládání obrázků informace o průběhu" msgid "Cancel upload" msgstr "Ukončit upload" msgid "Piwigo upload information" msgstr "Piwigo upload informace" msgid "Processing" msgstr "Pracuji" msgid "images processed" msgstr "Fotky zpracovávány" msgid "images uploaded" msgstr "Fotky odeslány" msgid "images in errors and not uploaded" msgstr "Došlo k chybě a fotky nebyly odeslány" msgid "Duration" msgstr "Průběh" msgid "Categories" msgstr "Kategorie" msgid "categories" msgstr "kategorie" msgid "Categorie" msgstr "Kategorie" msgid "categorie" msgstr "kategorie" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Alba" msgid "album" msgstr "album" msgid "albums" msgstr "alba" msgid "Photo caption" msgstr "Foto titulek" msgid "Default photo caption" msgstr "Defaultní foto titulek" msgid "Resize site image" msgstr "Změnit velikost fotek pro web" msgid "Auto rotate" msgstr "Autom.rotace" msgid "Upload high (original size)" msgstr "Upload vysoké rozlišení (original size)" msgid "Site image jpeg quality" msgstr "JPEG-kvalita" msgid "Site image filter" msgstr "Použíj filtr" msgid "Site image blur" msgstr "Rozmazání" msgid "Site image interlace" msgstr "Prokládání" msgid "Site thumbnail jpeg quality" msgstr "JPEG kvalita náhledu" msgid "Photo selection thumbnail size" msgstr "Foto výběr velikosti miniatur" msgid "Photo selection thumbnail jpeg quality" msgstr "Foto výběr kvality miniatur jpeg" msgid "Use exif preview when available" msgstr "Použít EXIF-ukázku pokud je" msgid "Custom preview ratio" msgstr "Obecná hodnota pro preview" msgid "Piwigo url" msgstr "Piwigo url" msgid "Connect" msgstr "Připojit" msgid "Work Offline" msgstr "Pracovat offline" msgid "Exit" msgstr "Ukončit" msgid "empty - work Offline" msgstr "prázdné - práce Offline" msgid "None" msgstr "Nic" msgid "File name" msgstr "Název souboru" msgid "File path and name" msgstr "Soubor cesta a název" msgid "Prefix" msgstr "Prefix" msgid "Prefix + rank number" msgstr "Prefix + pořadové číslo" msgid "Rank number + prefix" msgstr "Pořadové číslo + prefix" msgid "Prefix + create date chrono" msgstr "Prefix + chrono. datum" msgid "Create date chrono + prefix" msgstr "Chrono. datum + prefix" msgid "Photo" msgstr "Foto" msgid "Image processing progress information" msgstr "Informace o průběhu zpracování obrazů" msgid "Cancel image processing" msgstr "Zrušit zpracování obrazů" msgid "Add new album" msgstr "Přidat nové album" msgid "Album name" msgstr "Album název" msgid "New album" msgstr "Nové album" msgid "Refresh" msgstr "Obnovit" msgid "Expand all" msgstr "Rozbal vše" msgid "Collapse all" msgstr "Sbalit vše" msgid "Getting started" msgstr "Start" msgid "Properties" msgstr "Nastavení" msgid "Remove uploaded photo from selection" msgstr "Odebrat odeslané fotky z výběru" msgid "Activate watermark" msgstr "Aktivuj vodoznak" msgid "Activate watermark on high definition" msgstr "Aktivuj vodoznak pro vysoké rozlišení" msgid "Text" msgstr "Text" msgid "Text size" msgstr "Velikost textu" msgid "Color" msgstr "Barva" msgid "Position" msgstr "Pozice" msgid "Top margin" msgstr "Horní okraj" msgid "Left margin" msgstr "Levý okraj" msgid "White" msgstr "Bílá" msgid "Black" msgstr "Černá" msgid "Top" msgstr "Horní" msgid "Top left" msgstr "Horní vlevo" msgid "Top right" msgstr "Horní vpravo" msgid "Bottom" msgstr "Dole" msgid "Bottom left" msgstr "Dole vlevo" msgid "Bottom right" msgstr "Dole vpravo" msgid "Center" msgstr "Uprostřed" msgid "Left" msgstr "Nalevo" msgid "Right" msgstr "Napravo" msgid "my watermark" msgstr "můj vodotisk" msgid "Show" msgstr "Ukaž" msgid "All" msgstr "Vše" msgid "Selected" msgstr "Vybráno" msgid "Not selected" msgstr "Nevybráno" msgid "Uploading" msgstr "Nahrávám" msgid "Uploading resized" msgstr "Nahrávám zmenšené" msgid "Uploading thumbnail" msgstr "Nahrávám náhledy" msgid "Uploading high definition" msgstr "Nahrávám originální velikost" msgid "Checksum for" msgstr "Kontrolní součet" msgid "Communication error with" msgstr "Chyba komunikace s" msgid "Thumbnail image done for" msgstr "Miniatura obrazu dokončena za" msgid "HD image done for" msgstr "HD obraz dokončen za" msgid "Resized image done for" msgstr "Změna velikosti dokončena za" msgid "Uploaded" msgstr "Uploadováno" msgid "Preparing resized image for" msgstr "Příprava zmenšeného obrázku pro" msgid "Close" msgstr "Zavřít" msgid "on" msgstr "na" msgid "photos added to the selection" msgstr "fotky přidány do výběru" msgid "errors" msgstr "chyby" msgid "Yes, use HD resized of the original photo" msgstr "Ano, použij HD velikost původní fotografie" msgid "Yes, use a copy of the original photo" msgstr "Ano, použij kopii původní fotografie" msgid "HD image width" msgstr "šířka HD obrázku" msgid "HD image height" msgstr "výška HD obrázku" msgid "HD image jpeg quality" msgstr "HD obrázek jpeg kvalita" msgid "HD image filter" msgstr "HD filtr obrázku" msgid "HD image blur" msgstr "HD rozmazání obrázku" msgid "HD image interlace" msgstr "HD prokládání obrázku" msgid "nothing" msgstr "nic" msgid "replace" msgstr "nahradit" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "vyplňte pokud je pole prázdné (jen vyplňuje aktuálně prázdná nastavení v Piwigo)" msgid "append (keep existing and add new)" msgstr "připojit (zachovat stávající a přidat nový)" msgid "Do not ask me again" msgstr "Neptej se mě znovu" msgid "A least one photo has already been added in the past." msgstr "Alespoň jedna fotografie byla přidána již v minulosti." msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Co budeme dělat se soubory fotek? (thumbnail, resized, high resolution)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Co budeme dělat s jednotlivými vlastnostmi? (Titulek, komentář, autor, datum vytvoření)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Co budeme dělat s vícenásobnými vlastnostmi? (kategorie, klíčová slova)" msgid "Photo update management" msgstr "Zpráva aktualizace fotografií" msgid "Who can see the photo?" msgstr "Kdo může vidět fotku?" msgid "everybody" msgstr "všichni" msgid "contacts" msgstr "kontakty" msgid "friends" msgstr "přátelé" msgid "family" msgstr "rodina" msgid "admins" msgstr "administrátoři" msgid "What shall we do with privacy level?" msgstr "Co budeme dělat s úrovní ochrany osobních údajů?" msgid "Thumbnail and caption" msgstr "Náhled a název" msgid "Property list" msgstr "Oprávnění seznam" msgid "How photo selection is displayed" msgstr "Jak se zobrazí výběr fotografií" msgid "Use original" msgstr "Použij originál" msgid "Use resized original" msgstr "Použij zmenšený originál" msgid "Web sized" msgstr "Web velikost" msgid "Do you want to create" msgstr "Chcete vytvořit" msgid "Transfer" msgstr "Přenos" msgid "Click links below to start using pLoader." msgstr "Vyberte odkaz níže pro zahájení práce s aplikací pLoader." msgid "Add a new album." msgstr "Přidat nové album." msgid "Add photos to the selection." msgstr "Přidat fotky do výběru." msgid "Upload the photo selection into your album." msgstr "Nahrát vybrané fotky na web." pLoader-1.6/locale/ja_JP/pLoader.mo0000644000175000017500000001723711326151441015301 0ustar ronronx( ) : H Y p           * 5 C )U           # ( 3 = P ] d l s   % !       ' * / = @ L R ` v  &    # =%Hn u  $4FNV o}  '17Hd+   ,!3Ufv*%$P$u$  * 7A HUq**  Um  !$'  3@P Waz!   *,Wg x   !& <1I${! #B.q ! !&<H*  <"#!Fh*(+!<L \6f01<!=:_    Qa$z([+`7ikV.fr6plmx 3\Xc1WACOZd&^E8T,s_wgo! JF/GKL;PH %aNn:qtj 5v*@-=>]S?'u$M"29Dh)R BeU<4bY# IQ0Add a new album.Add new albumAdd new categoryAdd photo to selectionAdd photos to the selection.Admin. passwordAdmin. usernameAlbumAlbum nameAlbumsApertureAuthorAuto rotateAuto rotate imageCancelCancel image processingCancel uploadCategorieCategoriesCategory nameChoose a languageClick links below to start using pLoader.Collapse allCommentConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioDefault authorDefault photo captionDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHeightImage processing progress informationImage upload progress informationItalianJPEG filesLanguage choiceLensModelNew albumNew categoryNoNoneNot connectedOKOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguesePrefixPrefix + create date chronoPrefix + rank numberPreviewProcessingPropertiesRank number + prefixRefreshRemove photo from selectionRemove uploaded photo from selectionResize site imageResizedRussianSelect photos for uploadShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSpanishThumbnailToolsUpload cancelledUpload high (original size)Upload high (original size) Upload the photo selection into your album.Upload to PiwigoUse exif preview when availableWidthWork OfflineYesalbumalbumscategoriecategoriesempty - work Offlinefailedimages in errors and not uploadedimages processedimages uploadedProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-02-14 11:36+0100 PO-Revision-Date: Last-Translator: Mitsuhiro Yoshida Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res 新しいアルバムを追加します。新しいアルバムを追加する新しいカテゴリを追加する選択に写真を追加する写真を選択に追加します。管理者パスワード管理者ユーザ名アルバムアルバム名アルバム絞り値作者自動回転イメージの自動回転キャンセルイメージ処理をキャンセルするアップロードをキャンセルするカテゴリカテゴリカテゴリ名言語を選択するpLoaderを開始するには、下記のリンクをクリックしてください。すべてを折りたたむコメント接続接続作成日作成日時の昇順 + 接頭辞カスタムプレビューレシオデフォルト作者デフォルト写真キャプション持続期間オランダ語英語閉じるすべてを展開するファイル名ファイルパスおよび名称焦点距離フランス語一般ドイツ語スタートするグローバル設定高さイメージ処理進行情報イメージアップロード進行情報イタリア語JPEGファイル言語選択レンズモデル 新しいアルバム新しいカテゴリNoなし未接続OK方向写真写真キャプション写真キャプション接頭辞写真プロパティ写真選択サイト選択サムネイルJPEGクオリティ写真選択サムネイルサイズPiwigoカテゴリPiwigoログインPiwigoログインエラーPiwigoアップロードエラーPiwigoアップロード情報Piwigo URI有効なターゲットカテゴリを選択してください。ポーランド語ポルトガル語接頭辞接頭辞 + 作成日時の昇順接頭辞 + 連番プレビュー処理中プロパティ連番 + 接頭辞リフレッシュ選択より写真を削除するアップロードされた写真を選択より削除するサイトイメージをリサイズするリサイズロシア語アップロードする写真を選択してください。シャッタースピードサイトイメージ境界 (blur)サイトイメージフィルタサイトイメージ高サイトイメージインターレースサイトイメージJPEGクオリティサイトイメージ幅サイトサムネイルJPEGクオリティサイトサムネイルサイズスペイン語サムネイルツールアップロードがキャンセルされました。アップロード高 (オリジナルサイズ)アップロード高 (オリジナルサイズ) 写真選択をあなたのアルバムに追加します。Piwigoにアップロードする利用可能な場合、exifプレビューを使用する幅オフライン作業Yesアルバムアルバムカテゴリカテゴリ空 - オフライン作業失敗エラーのため、イメージはアップロードされませんでした。処理済みイメージアップロード済みイメージpLoader-1.6/locale/ja_JP/pLoader.po0000644000175000017500000001642711326151441015304 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-02-14 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Mitsuhiro Yoshida \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "アップロードする写真を選択してください。" msgid "JPEG files" msgstr "JPEGファイル" msgid "Default author" msgstr "デフォルト作者" msgid "Photo caption prefix" msgstr "写真キャプション接頭辞" msgid "Site thumbnail size" msgstr "サイトサムネイルサイズ" msgid "Site image width" msgstr "サイトイメージ幅" msgid "Site image height" msgstr "サイトイメージ高" msgid "Auto rotate image" msgstr "イメージの自動回転" msgid "Upload high (original size) " msgstr "アップロード高 (オリジナルサイズ) " msgid "Yes" msgstr "Yes" msgid "No" msgstr "No" msgid "Admin. username" msgstr "管理者ユーザ名" msgid "Admin. password" msgstr "管理者パスワード" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "キャンセル" msgid "Create date" msgstr "作成日" msgid "Width" msgstr "幅" msgid "Height" msgstr "高さ" msgid "Orientation" msgstr "方向" msgid "Shutter speed" msgstr "シャッタースピード" msgid "Aperture" msgstr "絞り値" msgid "Focal length" msgstr "焦点距離" msgid "Model" msgstr "モデル " msgid "Lens" msgstr "レンズ" msgid "Author" msgstr "作者" msgid "Comment" msgstr "コメント" msgid "French" msgstr "フランス語" msgid "English" msgstr "英語" msgid "Russian" msgstr "ロシア語" msgid "Italian" msgstr "イタリア語" msgid "German" msgstr "ドイツ語" msgid "Spanish" msgstr "スペイン語" msgid "Portuguese" msgstr "ポルトガル語" msgid "Dutch" msgstr "オランダ語" msgid "Polish" msgstr "ポーランド語" msgid "Piwigo categories" msgstr "Piwigoカテゴリ" msgid "Photo properties" msgstr "写真プロパティ" msgid "Tools" msgstr "ツール" msgid "Global settings" msgstr "グローバル設定" msgid "General" msgstr "一般" msgid "Resized" msgstr "リサイズ" msgid "Thumbnail" msgstr "サムネイル" msgid "Preview" msgstr "プレビュー" msgid "Photo selection" msgstr "写真選択" msgid "Language choice" msgstr "言語選択" msgid "Choose a language" msgstr "言語を選択する" msgid "Upload to Piwigo" msgstr "Piwigoにアップロードする" msgid "Remove photo from selection" msgstr "選択より写真を削除する" msgid "Add photo to selection" msgstr "選択に写真を追加する" msgid "Not connected" msgstr "未接続" msgid "Connection to" msgstr "接続" msgid "failed" msgstr "失敗" msgid "Piwigo login" msgstr "Piwigoログイン" msgid "Piwigo login error" msgstr "Piwigoログインエラー" msgid "Please select a valid target category" msgstr "有効なターゲットカテゴリを選択してください。" msgid "Piwigo upload error" msgstr "Piwigoアップロードエラー" msgid "Category name" msgstr "カテゴリ名" msgid "Add new category" msgstr "新しいカテゴリを追加する" msgid "New category" msgstr "新しいカテゴリ" msgid "Upload cancelled" msgstr "アップロードがキャンセルされました。" msgid "Image upload progress information" msgstr "イメージアップロード進行情報" msgid "Cancel upload" msgstr "アップロードをキャンセルする" msgid "Piwigo upload information" msgstr "Piwigoアップロード情報" msgid "Processing" msgstr "処理中" msgid "images processed" msgstr "処理済みイメージ" msgid "images uploaded" msgstr "アップロード済みイメージ" msgid "images in errors and not uploaded" msgstr "エラーのため、イメージはアップロードされませんでした。" msgid "Duration" msgstr "持続期間" msgid "Categories" msgstr "カテゴリ" msgid "categories" msgstr "カテゴリ" msgid "Categorie" msgstr "カテゴリ" msgid "categorie" msgstr "カテゴリ" msgid "Album" msgstr "アルバム" msgid "Albums" msgstr "アルバム" msgid "album" msgstr "アルバム" msgid "albums" msgstr "アルバム" msgid "Photo caption" msgstr "写真キャプション" msgid "File name" msgstr "ファイル名" msgid "Default photo caption" msgstr "デフォルト写真キャプション" msgid "Resize site image" msgstr "サイトイメージをリサイズする" msgid "Auto rotate" msgstr "自動回転" msgid "Upload high (original size)" msgstr "アップロード高 (オリジナルサイズ)" msgid "Site image jpeg quality" msgstr "サイトイメージJPEGクオリティ" msgid "Site image filter" msgstr "サイトイメージフィルタ" msgid "Site image blur" msgstr "サイトイメージ境界 (blur)" msgid "Site image interlace" msgstr "サイトイメージインターレース" msgid "Site thumbnail jpeg quality" msgstr "サイトサムネイルJPEGクオリティ" msgid "Photo selection thumbnail size" msgstr "写真選択サムネイルサイズ" msgid "Photo selection thumbnail jpeg quality" msgstr "サイト選択サムネイルJPEGクオリティ" msgid "Use exif preview when available" msgstr "利用可能な場合、exifプレビューを使用する" msgid "Custom preview ratio" msgstr "カスタムプレビューレシオ" msgid "Piwigo url" msgstr "Piwigo URI" msgid "Connect" msgstr "接続" msgid "Work Offline" msgstr "オフライン作業" msgid "Exit" msgstr "閉じる" msgid "empty - work Offline" msgstr "空 - オフライン作業" msgid "None" msgstr "なし" msgid "File path and name" msgstr "ファイルパスおよび名称" msgid "Prefix" msgstr "接頭辞" msgid "Prefix + rank number" msgstr "接頭辞 + 連番" msgid "Rank number + prefix" msgstr "連番 + 接頭辞" msgid "Prefix + create date chrono" msgstr "接頭辞 + 作成日時の昇順" msgid "Create date chrono + prefix" msgstr "作成日時の昇順 + 接頭辞" msgid "Photo" msgstr "写真" msgid "Image processing progress information" msgstr "イメージ処理進行情報" msgid "Cancel image processing" msgstr "イメージ処理をキャンセルする" msgid "Add new album" msgstr "新しいアルバムを追加する" msgid "Album name" msgstr "アルバム名" msgid "New album" msgstr "新しいアルバム" msgid "Refresh" msgstr "リフレッシュ" msgid "Expand all" msgstr "すべてを展開する" msgid "Collapse all" msgstr "すべてを折りたたむ" msgid "Getting started" msgstr "スタートする" msgid "Properties" msgstr "プロパティ" msgid "Remove uploaded photo from selection" msgstr "アップロードされた写真を選択より削除する" msgid "Click links below to start using pLoader." msgstr "pLoaderを開始するには、下記のリンクをクリックしてください。" msgid "Add a new album." msgstr "新しいアルバムを追加します。" msgid "Add photos to the selection." msgstr "写真を選択に追加します。" msgid "Upload the photo selection into your album." msgstr "写真選択をあなたのアルバムに追加します。" pLoader-1.6/locale/de_DE/pLoader.mo0000644000175000017500000001525511326151441015254 0ustar ronronv|    ! 8 U e u {       ) < I Q Y g s          & - 5 < L \ %c !           0 &@ g     %  )0La i t$ &6HZo  +*Vg   !%B`t    ,/Dt   "+3 BL _ j v    #27>N Q^ct $% +G+V   +4"`   /? HRX!k!"  % + 5@W(^X2eiWR QC0.?,D]Gl>=$tcu&s# <o @!`*+O4^(-FE;qPHYVj_h:Z%\bp/1fmL7vK TS)[gUd 589nIB'MA3r"6JakN Add a new album.Add new albumAdd new categoryAdd photo to selectionAdd photos to the selection.Admin. passwordAdmin. usernameAlbumAlbumsApertureAuthorAuto rotateAuto rotate imageCancelCancel image processingCancel uploadCategorieCategoriesCategory nameChoose a languageClick links below to start using pLoader.Collapse allCommentConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioDefault authorDefault photo captionDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFoto prefixFrenchGeneralGermanGetting startedGlobal settingsHeightImage processing progress informationImage upload progress informationItalianJPEG filesLanguage choiceLensModelNew categoryNoNoneNot connectedOKOrientationPhotoPhoto captionPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguesePrefixPrefix + create date chronoPrefix + rank numberPreviewProcessingPropertiesRank number + prefixRefreshRemove photo from selectionRemove uploaded photo from selectionResize site imageResizedRussianSelect photos for uploadShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSpanishThumbnailToolsUpload cancelledUpload high (original size)Upload high (original size) Upload the photo selection into your album.Upload to PiwigoUse exif preview when availableWidthWork OfflineYesalbumalbumscategoriecategoriesempty - work Offlinefailedimages in errors and not uploadedimages processedimages uploadedProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-06-16 09:54+0100 PO-Revision-Date: Last-Translator: Daniel Riedel Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res Erstelle ein neues Album.Fge ein neues Album hinzuErstelle eine neue KategorieFge Fotos der Auswahl hinzuFge Fotos der Auswahl hinzu.Passwort den AdminsBenutzername des AdminsAlbumAlbenBlendeAuthorAutomatisch drehenBilder automatisch drehenAbbrechenBreche Bildverarbeitung abBreche Upload abKategorieKategorienKategorienameWhlen Sie eine SpracheKlicke die Links um mit dem Ploader zu starten.Alle einklappenKommentarVerbindeVerbundenErstellungsdatumErstellungsdatum + prfixEigenes VorschauverhltnisStandartauthorStandart-BildunterschriftDauerHollndischEnglischBeendenAlle erweiternDateinameDateipfad und NameBrennweiteFoto prfixFranzsischGenerellDeutschStartGlobale EinstellungenHheFortschritt der BildverarbeitungStatus des Bilder-UploadsItalienischJPEG-DateienSprachwahlObjektivModellNeue KategorieNeinNichtsNicht verbundenOKOrientierungFotoBildunterschriftEigenschaften des FotosFotoauswahlFoto-Auswahl-Thumbnail-JPEG-QualittGre der Thumbnails der Foto-AuswahlPiwigo KategorienPiwigo loginPiwigo login FehlerPiwigo Upload FehlerInformation ber den UploadURL der PiwigoBitte whlen Sie eine gltige ZielkategoriePolnischPortugiesischPrfixPrfix + ErstellungsdatumPrfixe + RangnummerVorschauFortschrittVoreinstellungenRangnummer + prfixAktualisierenLsche Fotos aus der AuswahlEntferne hochgeladene Fotos aus der AuswahlFr die Website Bildgre anpassenResizedRussischWhle Fotos fr den UploadVerschlusszeitBildschrfe:BildverarbeitungsfilterBildhheBildzwischenzeileJPEG-QualittBildbreiteThumbnail JPEG QualittThumbnail-GreSpanischThumbnailToolsUpload abgebrochenBilder in Originalgre hochladenBilder in Originalgre hochladenLade die Fotos in dein Album hoch.Upload zur PiwigoNutze EXIF-Vorschau wenn mglichBreiteArbeite OfflineJaAlbumAlbenKategorieKategorienleer - arbeite OfflineFehlerFehlerhafte Bilder und nicht hochgeladenBilder verarbeitetBilder hochgeladenpLoader-1.6/locale/de_DE/pLoader.po0000644000175000017500000001447011326151441015255 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-16 09:54+0100\n" "PO-Revision-Date: \n" "Last-Translator: Daniel Riedel \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Whle Fotos fr den Upload" msgid "JPEG files" msgstr "JPEG-Dateien" msgid "Default author" msgstr "Standartauthor" msgid "Foto prefix" msgstr "Foto prfix" msgid "Site thumbnail size" msgstr "Thumbnail-Gre" msgid "Site image width" msgstr "Bildbreite" msgid "Site image height" msgstr "Bildhhe" msgid "Auto rotate image" msgstr "Bilder automatisch drehen" msgid "Upload high (original size) " msgstr "Bilder in Originalgre hochladen" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nein" msgid "Admin. username" msgstr "Benutzername des Admins" msgid "Admin. password" msgstr "Passwort den Admins" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Abbrechen" msgid "Create date" msgstr "Erstellungsdatum" msgid "Width" msgstr "Breite" msgid "Height" msgstr "Hhe" msgid "Orientation" msgstr "Orientierung" msgid "Shutter speed" msgstr "Verschlusszeit" msgid "Aperture" msgstr "Blende" msgid "Focal length" msgstr "Brennweite" msgid "Model" msgstr "Modell" msgid "Lens" msgstr "Objektiv" msgid "Author" msgstr "Author" msgid "Comment" msgstr "Kommentar" msgid "French" msgstr "Franzsisch" msgid "English" msgstr "Englisch" msgid "Russian" msgstr "Russisch" msgid "Italian" msgstr "Italienisch" msgid "German" msgstr "Deutsch" msgid "Spanish" msgstr "Spanisch" msgid "Portuguese" msgstr "Portugiesisch" msgid "Dutch" msgstr "Hollndisch" msgid "Polish" msgstr "Polnisch" msgid "Piwigo categories" msgstr "Piwigo Kategorien" msgid "Photo properties" msgstr "Eigenschaften des Fotos" msgid "Tools" msgstr "Tools" msgid "Global settings" msgstr "Globale Einstellungen" msgid "General" msgstr "Generell" msgid "Resized" msgstr "Resized" msgid "Thumbnail" msgstr "Thumbnail" msgid "Preview" msgstr "Vorschau" msgid "Photo selection" msgstr "Fotoauswahl" msgid "Language choice" msgstr "Sprachwahl" msgid "Choose a language" msgstr "Whlen Sie eine Sprache" msgid "Upload to Piwigo" msgstr "Upload zur Piwigo" msgid "Remove photo from selection" msgstr "Lsche Fotos aus der Auswahl" msgid "Add photo to selection" msgstr "Fge Fotos der Auswahl hinzu" msgid "Not connected" msgstr "Nicht verbunden" msgid "Connection to" msgstr "Verbunden" msgid "failed" msgstr "Fehler" msgid "Piwigo login" msgstr "Piwigo login" msgid "Piwigo login error" msgstr "Piwigo login Fehler" msgid "Please select a valid target category" msgstr "Bitte whlen Sie eine gltige Zielkategorie" msgid "Piwigo upload error" msgstr "Piwigo Upload Fehler" msgid "Category name" msgstr "Kategoriename" msgid "Add new category" msgstr "Erstelle eine neue Kategorie" msgid "New category" msgstr "Neue Kategorie" msgid "Upload cancelled" msgstr "Upload abgebrochen" msgid "Image upload progress information" msgstr "Status des Bilder-Uploads" msgid "Cancel upload" msgstr "Breche Upload ab" msgid "Piwigo upload information" msgstr "Information ber den Upload" msgid "Processing" msgstr "Fortschritt" msgid "images processed" msgstr "Bilder verarbeitet" msgid "images uploaded" msgstr "Bilder hochgeladen" msgid "images in errors and not uploaded" msgstr "Fehlerhafte Bilder und nicht hochgeladen" msgid "Duration" msgstr "Dauer" msgid "Categories" msgstr "Kategorien" msgid "categories" msgstr "Kategorien" msgid "Categorie" msgstr "Kategorie" msgid "categorie" msgstr "Kategorie" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Alben" msgid "album" msgstr "Album" msgid "albums" msgstr "Alben" msgid "Photo caption" msgstr "Bildunterschrift" msgid "File name" msgstr "Dateiname" msgid "Default photo caption" msgstr "Standart-Bildunterschrift" msgid "Resize site image" msgstr "Fr die Website Bildgre anpassen" msgid "Auto rotate" msgstr "Automatisch drehen" msgid "Upload high (original size)" msgstr "Bilder in Originalgre hochladen" msgid "Site image jpeg quality" msgstr "JPEG-Qualitt" msgid "Site image filter" msgstr "Bildverarbeitungsfilter" msgid "Site image blur" msgstr "Bildschrfe:" msgid "Site image interlace" msgstr "Bildzwischenzeile" msgid "Site thumbnail jpeg quality" msgstr "Thumbnail JPEG Qualitt" msgid "Photo selection thumbnail size" msgstr "Gre der Thumbnails der Foto-Auswahl" msgid "Photo selection thumbnail jpeg quality" msgstr "Foto-Auswahl-Thumbnail-JPEG-Qualitt" msgid "Use exif preview when available" msgstr "Nutze EXIF-Vorschau wenn mglich" msgid "Custom preview ratio" msgstr "Eigenes Vorschauverhltnis" msgid "Piwigo url" msgstr "URL der Piwigo" msgid "Connect" msgstr "Verbinde" msgid "Work Offline" msgstr "Arbeite Offline" msgid "Exit" msgstr "Beenden" msgid "empty - work Offline" msgstr "leer - arbeite Offline" msgid "None" msgstr "Nichts" msgid "File path and name" msgstr "Dateipfad und Name" msgid "Prefix" msgstr "Prfix" msgid "Prefix + rank number" msgstr "Prfixe + Rangnummer" msgid "Rank number + prefix" msgstr "Rangnummer + prfix" msgid "Prefix + create date chrono" msgstr "Prfix + Erstellungsdatum" msgid "Create date chrono + prefix" msgstr "Erstellungsdatum + prfix" msgid "Photo" msgstr "Foto" msgid "Image processing progress information" msgstr "Fortschritt der Bildverarbeitung" msgid "Cancel image processing" msgstr "Breche Bildverarbeitung ab" msgid "Add new album" msgstr "Fge ein neues Album hinzu" msgid "Refresh" msgstr "Aktualisieren" msgid "Expand all" msgstr "Alle erweitern" msgid "Collapse all" msgstr "Alle einklappen" msgid "Getting started" msgstr "Start" msgid "Properties" msgstr "Voreinstellungen" msgid "Remove uploaded photo from selection" msgstr "Entferne hochgeladene Fotos aus der Auswahl" msgid "Click links below to start using pLoader." msgstr "Klicke die Links um mit dem Ploader zu starten." msgid "Add a new album." msgstr "Erstelle ein neues Album." msgid "Add photos to the selection." msgstr "Fge Fotos der Auswahl hinzu." msgid "Upload the photo selection into your album." msgstr "Lade die Fotos in dein Album hoch." pLoader-1.6/locale/en_GB/gs.html0000644000175000017500000000074611207320662014642 0ustar ronron

Click links below to start using pLoader.


1. Add a new album.

2. Add photos to the selection.

3. Upload the photo selection into your album.
pLoader-1.6/locale/zh_CN/pLoader.mo0000644000175000017500000001526411326151441015315 0ustar ronronx( ) : H Y p           * 5 C )U           # ( 3 = P ] d l s   % !       ' * / = @ L R ` v  &    # =%Hn u  $4FNV o}  '17Hd+   ,!3Ufv.>Ng     %29@P'c   #*1 8 ER hry          %,3C JT[k ("  . B$Pu | %- I V` y * C MW^q--  %29@GNUh!o([+`7ikV.fr6plmx 3\Xc1WACOZd&^E8T,s_wgo! JF/GKL;PH %aNn:qtj 5v*@-=>]S?'u$M"29Dh)R BeU<4bY# IQ0Add a new album.Add new albumAdd new categoryAdd photo to selectionAdd photos to the selection.Admin. passwordAdmin. usernameAlbumAlbum nameAlbumsApertureAuthorAuto rotateAuto rotate imageCancelCancel image processingCancel uploadCategorieCategoriesCategory nameChoose a languageClick links below to start using pLoader.Collapse allCommentConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioDefault authorDefault photo captionDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHeightImage processing progress informationImage upload progress informationItalianJPEG filesLanguage choiceLensModelNew albumNew categoryNoNoneNot connectedOKOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguesePrefixPrefix + create date chronoPrefix + rank numberPreviewProcessingPropertiesRank number + prefixRefreshRemove photo from selectionRemove uploaded photo from selectionResize site imageResizedRussianSelect photos for uploadShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSpanishThumbnailToolsUpload cancelledUpload high (original size)Upload high (original size) Upload the photo selection into your album.Upload to PiwigoUse exif preview when availableWidthWork OfflineYesalbumalbumscategoriecategoriesempty - work Offlinefailedimages in errors and not uploadedimages processedimages uploadedProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: ron osman Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res 添加新相册。添加新相册添加新类别添加相片到选择区添加相片到选择区域。管理员,密码:管理员,用户名:相册相册名称:相册光圈:作者:自动旋转:自动旋转图片:取消取消图片处理取消上传类别类别类别名称:选择一个语言点击以下链接开始使用 pLoader.收缩所有评论:连接连接到创建日期:创建日期 + 前缀自定义预览旋转比率:默认作者:默认相片标题:期间荷兰英国退出展开所有文件名:文件路径和名称焦距:法国一般德国入门指南全局设置高度:图片处理进度信息图片上传进度意大利JPEG 文件语言选择镜头:模特儿:新相册新类别不是没有没有连接上确定方向:相片相片标题:相片标题前缀:相片属性选择的相片图片选择区的 jpeg 缩略图质量:图片选择区的缩略图尺寸:Piwigo 类别登录 PiwigoPiwigo 登录错误Piwigo 上传错误Piwigo 上传情况Piwigo 网址请选择一个有效的目标目录波兰葡萄牙前缀前缀 + 创建日期前缀 + 等级数预览正在处理属性等级数 + 前缀刷新移除选择区里的相片移除选择区里已上传的相片:调整网站图片大小:改变尺寸俄罗斯选择要上传的相片快门:网站图片模糊:网站图片过滤:网站图片高度:网站图片交错:网站 jpeg 图片质量:网站图片宽度:网站 jpeg 文件的质量:网站缩略图尺寸:西班牙缩略图工具上传已被取消上传高度(原始尺寸)上传高度 ( 原始尺寸 )上传选择区域的相片到您的相册。上传到 Piwigo当 Exif 信息可用时,即显示出来:宽度:离线操作是的相册相册类别类别空 - 离线操作失败图片上传出错,上传失败图片已被处理图片已上传pLoader-1.6/locale/zh_CN/pLoader.po0000644000175000017500000001445411326151441015320 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: ron osman \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "选择要上传的相片" msgid "JPEG files" msgstr "JPEG 文件" msgid "Default author" msgstr "默认作者:" msgid "Photo caption prefix" msgstr "相片标题前缀:" msgid "Site thumbnail size" msgstr "网站缩略图尺寸:" msgid "Site image width" msgstr "网站图片宽度:" msgid "Site image height" msgstr "网站图片高度:" msgid "Auto rotate image" msgstr "自动旋转图片:" msgid "Upload high (original size) " msgstr "上传高度 ( 原始尺寸 )" msgid "Yes" msgstr "是的" msgid "No" msgstr "不是" msgid "Admin. username" msgstr "管理员,用户名:" msgid "Admin. password" msgstr "管理员,密码:" msgid "OK" msgstr "确定" msgid "Cancel" msgstr "取消" msgid "Create date" msgstr "创建日期:" msgid "Width" msgstr "宽度:" msgid "Height" msgstr "高度:" msgid "Orientation" msgstr "方向:" msgid "Shutter speed" msgstr "快门:" msgid "Aperture" msgstr "光圈:" msgid "Focal length" msgstr "焦距:" msgid "Model" msgstr "模特儿:" msgid "Lens" msgstr "镜头:" msgid "Author" msgstr "作者:" msgid "Comment" msgstr "评论:" msgid "French" msgstr "法国" msgid "English" msgstr "英国" msgid "Russian" msgstr "俄罗斯" msgid "Italian" msgstr "意大利" msgid "German" msgstr "德国" msgid "Spanish" msgstr "西班牙" msgid "Portuguese" msgstr "葡萄牙" msgid "Dutch" msgstr "荷兰" msgid "Polish" msgstr "波兰" msgid "Piwigo categories" msgstr "Piwigo 类别" msgid "Photo properties" msgstr "相片属性" msgid "Tools" msgstr "工具" msgid "Global settings" msgstr "全局设置" msgid "General" msgstr "一般" msgid "Resized" msgstr "改变尺寸" msgid "Thumbnail" msgstr "缩略图" msgid "Preview" msgstr "预览" msgid "Photo selection" msgstr "选择的相片" msgid "Language choice" msgstr "语言选择" msgid "Choose a language" msgstr "选择一个语言" msgid "Upload to Piwigo" msgstr "上传到 Piwigo" msgid "Remove photo from selection" msgstr "移除选择区里的相片" msgid "Add photo to selection" msgstr "添加相片到选择区" msgid "Not connected" msgstr "没有连接上" msgid "Connection to" msgstr "连接到" msgid "failed" msgstr "失败" msgid "Piwigo login" msgstr "登录 Piwigo" msgid "Piwigo login error" msgstr "Piwigo 登录错误" msgid "Please select a valid target category" msgstr "请选择一个有效的目标目录" msgid "Piwigo upload error" msgstr "Piwigo 上传错误" msgid "Category name" msgstr "类别名称:" msgid "Add new category" msgstr "添加新类别" msgid "New category" msgstr "新类别" msgid "Upload cancelled" msgstr "上传已被取消" msgid "Image upload progress information" msgstr "图片上传进度" msgid "Cancel upload" msgstr "取消上传" msgid "Piwigo upload information" msgstr "Piwigo 上传情况" msgid "Processing" msgstr "正在处理" msgid "images processed" msgstr "图片已被处理" msgid "images uploaded" msgstr "图片已上传" msgid "images in errors and not uploaded" msgstr "图片上传出错,上传失败" msgid "Duration" msgstr "期间" msgid "Categories" msgstr "类别" msgid "categories" msgstr "类别" msgid "Categorie" msgstr "类别" msgid "categorie" msgstr "类别" msgid "Album" msgstr "相册" msgid "Albums" msgstr "相册" msgid "album" msgstr "相册" msgid "albums" msgstr "相册" msgid "Photo caption" msgstr "相片标题:" msgid "File name" msgstr "文件名:" msgid "Default photo caption" msgstr "默认相片标题:" msgid "Resize site image" msgstr "调整网站图片大小:" msgid "Auto rotate" msgstr "自动旋转:" msgid "Upload high (original size)" msgstr "上传高度(原始尺寸)" msgid "Site image jpeg quality" msgstr "网站 jpeg 图片质量:" msgid "Site image filter" msgstr "网站图片过滤:" msgid "Site image blur" msgstr "网站图片模糊:" msgid "Site image interlace" msgstr "网站图片交错:" msgid "Site thumbnail jpeg quality" msgstr "网站 jpeg 文件的质量:" msgid "Photo selection thumbnail size" msgstr "图片选择区的缩略图尺寸:" msgid "Photo selection thumbnail jpeg quality" msgstr "图片选择区的 jpeg 缩略图质量:" msgid "Use exif preview when available" msgstr "当 Exif 信息可用时,即显示出来:" msgid "Custom preview ratio" msgstr "自定义预览旋转比率:" msgid "Piwigo url" msgstr "Piwigo 网址" msgid "Connect" msgstr "连接" msgid "Work Offline" msgstr "离线操作" msgid "Exit" msgstr "退出" msgid "empty - work Offline" msgstr "空 - 离线操作" msgid "None" msgstr "没有" msgid "File path and name" msgstr "文件路径和名称" msgid "Prefix" msgstr "前缀" msgid "Prefix + rank number" msgstr "前缀 + 等级数" msgid "Rank number + prefix" msgstr "等级数 + 前缀" msgid "Prefix + create date chrono" msgstr "前缀 + 创建日期" msgid "Create date chrono + prefix" msgstr "创建日期 + 前缀" msgid "Photo" msgstr "相片" msgid "Image processing progress information" msgstr "图片处理进度信息" msgid "Cancel image processing" msgstr "取消图片处理" msgid "Add new album" msgstr "添加新相册" msgid "Album name" msgstr "相册名称:" msgid "New album" msgstr "新相册" msgid "Refresh" msgstr "刷新" msgid "Expand all" msgstr "展开所有" msgid "Collapse all" msgstr "收缩所有" msgid "Getting started" msgstr "入门指南" msgid "Properties" msgstr "属性" msgid "Remove uploaded photo from selection" msgstr "移除选择区里已上传的相片:" msgid "Click links below to start using pLoader." msgstr "点击以下链接开始使用 pLoader." msgid "Add a new album." msgstr "添加新相册。" msgid "Add photos to the selection." msgstr "添加相片到选择区域。" msgid "Upload the photo selection into your album." msgstr "上传选择区域的相片到您的相册。" pLoader-1.6/locale/nl_NL/pLoader.mo0000644000175000017500000003435011354707027015323 0ustar ronronT7h5i%  *GWgp v    9 O Y dr y ) 8 @ NZw0Ffou}     -@Vel | %!   ,1 @N T ^kn s   & 7BZ ly % !-4Pe   $-Rdl  1B^ry     <Y+q  !. CM!lBD$ U;     ) % &"!I!P!V!"]! ! !!!! !!!A!"!">"O" _"l"t"Bw"""" " #3$$%%&%@%Z% u%%&%%% %& &&%& +&5&;&P&o&u& {& & &&*&& &(&' 0' :' G'U'C\'''' '1'(#(3( 9(D( Y(c( r(((1((() !),)2)B)W) t)))/)) )))* * *4*F*L*U* [* g*r*&*****+-+4+6C+z+B+A+ ,,!, (,3, 9,E,J,Z,j, p,|,,,,,,, , ,,, -,-%G-m------.. 8.&C.j.p... .. .!.'./ / (/6/(I/r/!/ /!/$/4/20J0"e000(0 00 0 00 1181 N1o1'1 1111 112%2 B2N2 T2 `2 l2 y2.22/2/2&33<3p3 33-3*323(,4U4 k4 44 4K4C 5!d5^555 6%6-6<6:?6$z6$6666.6 7 7 '717E7L7U7]7We77)7788-838I68'8 88,8 rS7,:|deC#0;6)y[PGABaVOj$J]/h{*qNfbQv\liwn.FY`z (s @~k_K8LX D-9&+>gto34M% ^mucWE51=p"?2ZI}<HR!'TUx A least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photosAdd photos to the selection.Admin. passwordAdmin. usernameAdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCaptionCaption + create date chronoCaption + rank numberCategorieCategoriesCategory nameCenterChanges apply to the whole batchChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + captionCreate date chrono + prefixCreate date chrono + rankCustom preview ratioCzechDanishDefault authorDefault captionDefault caption patternDefault photo captionDo not ask me againDo you want to createDrag photos here to get startedDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHigh definitionHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensMaximum heightMaximum widthModelNew albumNew categoryNoNoneNot connectedNot selectedOKOr clickOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPreferencesPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperty listRank + create date chronoRank number + captionRank number + prefixRefreshRemove photo from selectionRemove selected photosRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSelect photos for uploadSelectedSelectionShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransferTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload high definition Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWeb sizedWhat is the destination album?What is the destination category?What shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?Who can see?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoYou have selected a batch of %s photosadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplacesecondsto choose files on your computerProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: Kees Hessels Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res In het verleden is er minstens een foto toegevoegd.Activeer watermerkActiveer watermerk met hoge definitieMaak een nieuw album aan.Een nieuw album toevoegenNieuwe categirie toevoegenVoef afbeelding toe aan selectieVoeg afbeeldingen toeVoeg afbeeldingen toe aan de selectie.Admin. wachtwoordAdmin. GebruikersnaamGevorderdAlbumNaam van het albumAlbumsAllesDiafragmaMakerAutomatische rotatieAfbeelding automatisch roterenZwartOnderOnder linksOnder rechtsBrasiliaansAnnuleerAnnuleer de verwerking van de afbeeldingenAnnuleer uploadBijschriftBijschrift + chronologische aanmaakdatumBijschrift + rangnummerCategorieCategorieënCategorienaamMiddenDe aanpassingen worden op alle geselecteerde afbeeldingen toegepastControlecijfer (Checksum) voorChineesChinees vereenvoudigdKies een taalKlik op de links hieronder om pLoader te starten.SluitAlles inklappenKleurCommentaarCommunicatiefout metVerbindenVerbinding metAanmaakdatumChronologische aanmaakdatum + bijschriftAanmaakdatum chronologisch + voorvoegsel (prefix)Chronologische aanmaakdatum + rangnummerAangepaste preview-verhoudingTsjechischDeensStandaard MakerStandaard bijschriftStandaard bijschrift-patroonStandaard afbeeldings-bijschriftNiet meer vragenWilt u aanmakenSleep afbeeldingen hier naar toe om te beginnenDuurNederlandsEngelsExitAlles uitklappenBestandsnaamPad en bestandsnaamBrandpuntsafstandFransAlgemeenDuitsaan de slagVoorkeurenHD-afbeelding vervaging (blur)Hoge definitie afbeelding gemaakt voorHD-afbeelding filterHD-afbeelding hoogteHD-afbeelding interlaceHD-afbeelding jpeg-kwaliteitHD-afbeelding breedteHoogteHoge definitieHoe de selectie van afbeelding moet worden weergegevenHongaarsInformatie over de voortgang van de verwerking van de afbeeldingenInformatie over de voortgang van het overzetten van de afbeeldingItaliaansJPEG-bestandenJapansTaal-keuzeLinksMarge linksLensMaximale hoogteMaximum breedteModelNieuw albumNieuwe categorieNeeGeenNiet verbondenNiet geselecteerdOKOf klikOriëntatieAfbeeldingAfbeeldings-bijschriftFoto bijschrift voorvoegselEigenschappen van de afbeeldingGeselecteerde afbeeldingenJpeg-kwaliteit van de mini-afbeeldingGrootte van de mini-afbeeldingGrootte van de afbeeldingAfbeeldingen update managementPiwigo categorieënaanmelding bij PiwigoAanmeldings-fout PiwigoUpload-fout naar PiwigoPiwigo upload informatiePiwigo URLAub een bestaande categorie selecterenPoolsPortugees BraziliëPortugees PortugalPositieVoorkeurenVoorvoegsel (prefix)VoorvoegselVoorvoegsel (prefix) + rangnummerBezig met aanmaken aagepaste afbeeldingPreviewVerwerkingEigenschappenEigenschappenlijstRangnummer + Chronologische aanmaakdatumRangnummer + bijschriftRangnummer + voorvoegsel (prefix)VerversenVerwijder afbeelding van selectieVerwijder geselecteerde afbeeldingenVerwijder de ge-uploade afbeeldingen van de selectieMaak afbeelding passendOp juiste grootte gebrachtAangepaste afbeelding gemaakt voorRechtsRussischSelecteer de over te zetten afbeeldingenGeselecteerdSelectieLaat zienSluitertijdAfbeeldings-vervaging (blur)Afbeeldings-filterHoogte van de afbeeldingenAfbeeldings-interlaceJpeg-kwaliteit van de afbeeldingBreedte van de afbeeldingenJpeg-kwaliteit van de mini-afbeeldingenFormaat van de mini-afbeeldingenSlowaaksSpaansTekstTekstgrootteMini-afbeeldingMini-afbeelding en bijschriftMini-afbeelding gemaakt voorGereedschapBovenBoven linksMarge bovenBoven rechtsOverzettenGrootte van de over te zetten bestands-blokkenUpload geannuleerdUploaden met hoge definitie (origineel formaat)Uploaden met hoge definitie (origineel formaat)Upload hoge definitieUpload de geselecteerde afbeeldingen naar je album.Zet over naar PiwigoGe-uploadBezig met uploadBezig met upload van hoge defintie afbeeldingBezig met upload van aangepaste afbeeldingBezig met upload van hoge defintie mini-afbeeldingGebruik exif preview wanneer beschikbaarGebruik het origineelGebruik het aangepaste origineelweb sizedWat is het bestemmingsalbum?Wat is de bestemmingscategorie ?Wat doen we met de bestanden? (mini-afbeelding, aangepaste, hoge resolutie)Wat doen we met de enkele waarde eigenschappen? (categorieen, tags)Wat doen we met het privacy-nivo?Wat doen we met de enkele waarde eigenschappen? (bijschrijft, commentaar, maker, aanmaakdatum)WitWie mag deze afbeeldingen zien?Wie mag de afbeelding zien?BreedteOffline werkenJaJa, gebruik een HD aangepaste afbeelding van het origineelOui, une copie de la photo originaleU heeft %s afbeeldingen geselecteerdadministrateursalbumalbumsvoeg toe (bewaar bestaande en voeg nieuwe toe)categoriecategorieëncontactenleeg - werk offlinefouteniedereenmisluktfamilievullen indien leeg (vervang alleen de momenteel in Piwigo niet ingevulde eigenschappen)vriendenafmeeldingen met fouten en niet ge-uploadverwerkte afbeeldingenafbeeldingen ge-uploadMijn watermerknietsoppLoader moet worden herstart om de geselecteerde nieuwe taal te activerenafbeeldingen toegevoegd aan de selectievervangensecondenom afbeeldingen op uw computer te selecterenpLoader-1.6/locale/nl_NL/pLoader.po0000644000175000017500000003275611354652715015341 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Kees Hessels \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Selecteer de over te zetten afbeeldingen" msgid "JPEG files" msgstr "JPEG-bestanden" msgid "Default author" msgstr "Standaard Maker" msgid "Photo caption prefix" msgstr "Foto bijschrift voorvoegsel" msgid "Site thumbnail size" msgstr "Formaat van de mini-afbeeldingen" msgid "Site image width" msgstr "Breedte van de afbeeldingen" msgid "Site image height" msgstr "Hoogte van de afbeeldingen" msgid "Auto rotate image" msgstr "Afbeelding automatisch roteren" msgid "Upload high (original size) " msgstr "Uploaden met hoge definitie (origineel formaat)" msgid "Upload high definition " msgstr "Upload hoge definitie" msgid "High definition" msgstr "Hoge definitie" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nee" msgid "Admin. username" msgstr "Admin. Gebruikersnaam" msgid "Admin. password" msgstr "Admin. wachtwoord" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Annuleer" msgid "Create date" msgstr "Aanmaakdatum" msgid "Width" msgstr "Breedte" msgid "Height" msgstr "Hoogte" msgid "Orientation" msgstr "Oriëntatie" msgid "Shutter speed" msgstr "Sluitertijd" msgid "Aperture" msgstr "Diafragma" msgid "Focal length" msgstr "Brandpuntsafstand" msgid "Model" msgstr "Model" msgid "Lens" msgstr "Lens" msgid "Author" msgstr "Maker" msgid "Comment" msgstr "Commentaar" msgid "Chinese" msgstr "Chinees" msgid "Chinese simplified" msgstr "Chinees vereenvoudigd" msgid "Czech" msgstr "Tsjechisch" msgid "Danish" msgstr "Deens" msgid "English" msgstr "Engels" msgid "German" msgstr "Duits" msgid "Spanish" msgstr "Spaans" msgid "French" msgstr "Frans" msgid "Hungarian" msgstr "Hongaars" msgid "Italian" msgstr "Italiaans" msgid "Japanese" msgstr "Japans" msgid "Dutch" msgstr "Nederlands" msgid "Polish" msgstr "Pools" msgid "Portuguese Brazil" msgstr "Portugees Brazilië" msgid "Portuguese Portugal" msgstr "Portugees Portugal" msgid "Russian" msgstr "Russisch" msgid "Slovak" msgstr "Slowaaks" msgid "Brasil" msgstr "Brasiliaans" msgid "pLoader needs to be restarted to display the new selected language" msgstr "pLoader moet worden herstart om de geselecteerde nieuwe taal te activeren" msgid "Piwigo categories" msgstr "Piwigo categorieën" msgid "Photo properties" msgstr "Eigenschappen van de afbeelding" msgid "Tools" msgstr "Gereedschap" msgid "Global settings" msgstr "Voorkeuren" msgid "Advanced" msgstr "Gevorderd" msgid "Transfert chunk size" msgstr "Grootte van de over te zetten bestands-blokken" msgid "General" msgstr "Algemeen" msgid "Resized" msgstr "Op juiste grootte gebracht" msgid "Thumbnail" msgstr "Mini-afbeelding" msgid "Preview" msgstr "Preview" msgid "Photo selection" msgstr "Geselecteerde afbeeldingen" msgid "Language choice" msgstr "Taal-keuze" msgid "Choose a language" msgstr "Kies een taal" msgid "Upload to Piwigo" msgstr "Zet over naar Piwigo" msgid "Remove photo from selection" msgstr "Verwijder afbeelding van selectie" msgid "Add photo to selection" msgstr "Voef afbeelding toe aan selectie" msgid "Not connected" msgstr "Niet verbonden" msgid "Connection to" msgstr "Verbinding met" msgid "failed" msgstr "mislukt" msgid "Piwigo login" msgstr "aanmelding bij Piwigo" msgid "Piwigo login error" msgstr "Aanmeldings-fout Piwigo" msgid "Please select a valid target category" msgstr "Aub een bestaande categorie selecteren" msgid "Piwigo upload error" msgstr "Upload-fout naar Piwigo" msgid "Category name" msgstr "Categorienaam" msgid "Add new category" msgstr "Nieuwe categirie toevoegen" msgid "New category" msgstr "Nieuwe categorie" msgid "Upload cancelled" msgstr "Upload geannuleerd" msgid "Image upload progress information" msgstr "Informatie over de voortgang van het overzetten van de afbeelding" msgid "Cancel upload" msgstr "Annuleer upload" msgid "Piwigo upload information" msgstr "Piwigo upload informatie" msgid "Processing" msgstr "Verwerking" msgid "images processed" msgstr "verwerkte afbeeldingen" msgid "images uploaded" msgstr "afbeeldingen ge-upload" msgid "images in errors and not uploaded" msgstr "afmeeldingen met fouten en niet ge-upload" msgid "Duration" msgstr "Duur" msgid "seconds" msgstr "seconden" msgid "Categories" msgstr "Categorieën" msgid "categories" msgstr "categorieën" msgid "Categorie" msgstr "Categorie" msgid "categorie" msgstr "categorie" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Albums" msgid "album" msgstr "album" msgid "albums" msgstr "albums" msgid "Photo caption" msgstr "Afbeeldings-bijschrift" msgid "File name" msgstr "Bestandsnaam" msgid "Default photo caption" msgstr "Standaard afbeeldings-bijschrift" msgid "Resize site image" msgstr "Maak afbeelding passend" msgid "Auto rotate" msgstr "Automatische rotatie" msgid "Upload high (original size)" msgstr "Uploaden met hoge definitie (origineel formaat)" msgid "Site image jpeg quality" msgstr "Jpeg-kwaliteit van de afbeelding" msgid "Site image filter" msgstr "Afbeeldings-filter" msgid "Site image blur" msgstr "Afbeeldings-vervaging (blur)" msgid "Site image interlace" msgstr "Afbeeldings-interlace" msgid "Site thumbnail jpeg quality" msgstr "Jpeg-kwaliteit van de mini-afbeeldingen" msgid "Photo selection thumbnail size" msgstr "Grootte van de mini-afbeelding" msgid "Photo selection thumbnail jpeg quality" msgstr "Jpeg-kwaliteit van de mini-afbeelding" msgid "Use exif preview when available" msgstr "Gebruik exif preview wanneer beschikbaar" msgid "Custom preview ratio" msgstr "Aangepaste preview-verhouding" msgid "Piwigo url" msgstr "Piwigo URL" msgid "Connect" msgstr "Verbinden" msgid "Work Offline" msgstr "Offline werken" msgid "Exit" msgstr "Exit" msgid "empty - work Offline" msgstr "leeg - werk offline" msgid "None" msgstr "Geen" msgid "File path and name" msgstr "Pad en bestandsnaam" msgid "Prefix" msgstr "Voorvoegsel (prefix)" msgid "Prefix + rank number" msgstr "Voorvoegsel (prefix) + rangnummer" msgid "Rank number + prefix" msgstr "Rangnummer + voorvoegsel (prefix)" msgid "Prefix + create date chrono" msgstr "Voorvoegsel" msgid "Create date chrono + prefix" msgstr "Aanmaakdatum chronologisch + voorvoegsel (prefix)" msgid "Photo" msgstr "Afbeelding" msgid "Image processing progress information" msgstr "Informatie over de voortgang van de verwerking van de afbeeldingen" msgid "Cancel image processing" msgstr "Annuleer de verwerking van de afbeeldingen" msgid "Add new album" msgstr "Een nieuw album toevoegen" msgid "Album name" msgstr "Naam van het album" msgid "New album" msgstr "Nieuw album" msgid "Refresh" msgstr "Verversen" msgid "Expand all" msgstr "Alles uitklappen" msgid "Collapse all" msgstr "Alles inklappen" msgid "Getting started" msgstr "aan de slag" msgid "Properties" msgstr "Eigenschappen" msgid "Remove uploaded photo from selection" msgstr "Verwijder de ge-uploade afbeeldingen van de selectie" msgid "Activate watermark" msgstr "Activeer watermerk" msgid "Activate watermark on high definition" msgstr "Activeer watermerk met hoge definitie" msgid "Text" msgstr "Tekst" msgid "Text size" msgstr "Tekstgrootte" msgid "Color" msgstr "Kleur" msgid "Position" msgstr "Positie" msgid "Top margin" msgstr "Marge boven" msgid "Left margin" msgstr "Marge links" msgid "White" msgstr "Wit" msgid "Black" msgstr "Zwart" msgid "Top" msgstr "Boven" msgid "Top left" msgstr "Boven links" msgid "Top right" msgstr "Boven rechts" msgid "Bottom" msgstr "Onder" msgid "Bottom left" msgstr "Onder links" msgid "Bottom right" msgstr "Onder rechts" msgid "Center" msgstr "Midden" msgid "Left" msgstr "Links" msgid "Right" msgstr "Rechts" msgid "my watermark" msgstr "Mijn watermerk" msgid "Show" msgstr "Laat zien" msgid "All" msgstr "Alles" msgid "Selected" msgstr "Geselecteerd" msgid "Not selected" msgstr "Niet geselecteerd" msgid "Uploading" msgstr "Bezig met upload" msgid "Uploading resized" msgstr "Bezig met upload van aangepaste afbeelding" msgid "Uploading thumbnail" msgstr "Bezig met upload van hoge defintie mini-afbeelding" msgid "Uploading high definition" msgstr "Bezig met upload van hoge defintie afbeelding" msgid "Checksum for" msgstr "Controlecijfer (Checksum) voor" msgid "Communication error with" msgstr "Communicatiefout met" msgid "Thumbnail image done for" msgstr "Mini-afbeelding gemaakt voor" msgid "HD image done for" msgstr "Hoge definitie afbeelding gemaakt voor" msgid "Resized image done for" msgstr "Aangepaste afbeelding gemaakt voor" msgid "Uploaded" msgstr "Ge-upload" msgid "Preparing resized image for" msgstr "Bezig met aanmaken aagepaste afbeelding" msgid "Close" msgstr "Sluit" msgid "on" msgstr "op" msgid "photos added to the selection" msgstr "afbeeldingen toegevoegd aan de selectie" msgid "errors" msgstr "fouten" msgid "Yes, use HD resized of the original photo" msgstr "Ja, gebruik een HD aangepaste afbeelding van het origineel" msgid "Yes, use a copy of the original photo" msgstr "Oui, une copie de la photo originale" msgid "HD image width" msgstr "HD-afbeelding breedte" msgid "HD image height" msgstr "HD-afbeelding hoogte" msgid "HD image jpeg quality" msgstr "HD-afbeelding jpeg-kwaliteit" msgid "HD image filter" msgstr "HD-afbeelding filter" msgid "HD image blur" msgstr "HD-afbeelding vervaging (blur)" msgid "HD image interlace" msgstr "HD-afbeelding interlace" msgid "nothing" msgstr "niets" msgid "replace" msgstr "vervangen" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "vullen indien leeg (vervang alleen de momenteel in Piwigo niet ingevulde eigenschappen)" msgid "append (keep existing and add new)" msgstr "voeg toe (bewaar bestaande en voeg nieuwe toe)" msgid "Do not ask me again" msgstr "Niet meer vragen" msgid "A least one photo has already been added in the past." msgstr "In het verleden is er minstens een foto toegevoegd." msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Wat doen we met de bestanden? (mini-afbeelding, aangepaste, hoge resolutie)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Wat doen we met de enkele waarde eigenschappen? (bijschrijft, commentaar, maker, aanmaakdatum)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Wat doen we met de enkele waarde eigenschappen? (categorieen, tags)" msgid "Photo update management" msgstr "Afbeeldingen update management" msgid "Who can see the photo?" msgstr "Wie mag deze afbeeldingen zien?" msgid "everybody" msgstr "iedereen" msgid "contacts" msgstr "contacten" msgid "friends" msgstr "vrienden" msgid "family" msgstr "familie" msgid "admins" msgstr "administrateurs" msgid "What shall we do with privacy level?" msgstr "Wat doen we met het privacy-nivo?" msgid "Thumbnail and caption" msgstr "Mini-afbeelding en bijschrift" msgid "Property list" msgstr "Eigenschappenlijst" msgid "How photo selection is displayed" msgstr "Hoe de selectie van afbeelding moet worden weergegeven" msgid "Use original" msgstr "Gebruik het origineel" msgid "Use resized original" msgstr "Gebruik het aangepaste origineel" msgid "Web sized" msgstr "web sized" msgid "Do you want to create" msgstr "Wilt u aanmaken" msgid "Transfer" msgstr "Overzetten" msgid "Click links below to start using pLoader." msgstr "Klik op de links hieronder om pLoader te starten." msgid "Add a new album." msgstr "Maak een nieuw album aan." msgid "Add photos to the selection." msgstr "Voeg afbeeldingen toe aan de selectie." msgid "Upload the photo selection into your album." msgstr "Upload de geselecteerde afbeeldingen naar je album." msgid "Photo size" msgstr "Grootte van de afbeelding" msgid "Maximum width" msgstr "Maximum breedte" msgid "Maximum height" msgstr "Maximale hoogte" msgid "What is the destination category?" msgstr "Wat is de bestemmingscategorie ?" msgid "What is the destination album?" msgstr "Wat is het bestemmingsalbum?" msgid "Caption" msgstr "Bijschrift" msgid "Who can see?" msgstr "Wie mag de afbeelding zien?" msgid "You have selected a batch of %s photos" msgstr "U heeft %s afbeeldingen geselecteerd" msgid "Changes apply to the whole batch" msgstr "De aanpassingen worden op alle geselecteerde afbeeldingen toegepast" msgid "Drag photos here to get started" msgstr "Sleep afbeeldingen hier naar toe om te beginnen" msgid "Or click" msgstr "Of klik" msgid "to choose files on your computer" msgstr "om afbeeldingen op uw computer te selecteren" msgid "Add photos" msgstr "Voeg afbeeldingen toe" msgid "Remove selected photos" msgstr "Verwijder geselecteerde afbeeldingen" msgid "Default caption pattern" msgstr "Standaard bijschrift-patroon" msgid "Default caption" msgstr "Standaard bijschrift" msgid "Caption + rank number" msgstr "Bijschrift + rangnummer" msgid "Rank number + caption" msgstr "Rangnummer + bijschrift" msgid "Caption + create date chrono" msgstr "Bijschrift + chronologische aanmaakdatum" msgid "Create date chrono + caption" msgstr "Chronologische aanmaakdatum + bijschrift" msgid "Create date chrono + rank" msgstr "Chronologische aanmaakdatum + rangnummer" msgid "Rank + create date chrono" msgstr "Rangnummer + Chronologische aanmaakdatum" msgid "Preferences" msgstr "Voorkeuren" msgid "Selection" msgstr "Selectie" pLoader-1.6/locale/en_EN/gs.html0000644000175000017500000000074611270127204014651 0ustar ronron

Click links below to start using pLoader.


1. Add a new album.

2. Add photos to the selection.

3. Upload the photo selection into your album.
pLoader-1.6/locale/en_EN/pLoader.mo0000644000175000017500000000046711203321701015267 0ustar ronron$,89Project-Id-Version: Piwigo pLoader Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit POT-Creation-Date: PO-Revision-Date: Last-Translator: ron osman pLoader-1.6/locale/en_EN/pLoader.po0000644000175000017500000000055611314623350015301 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" "Last-Translator: ron osman \n" #: ../res/login_wdr.pl:43 msgid "Admin. username" msgstr "" pLoader-1.6/locale/ru_RU/pLoader.mo0000644000175000017500000003727311326151441015354 0ustar ronron P5Q% $4DM S^eir y       (0C)U    (>Rhqw    /BXgn ~ %!   ".3 9 CPS X fs v &+ =J]q %*F N Y dr$(1 6DTfx  $=CG P [ez+ ",FXl  BD$@Ue )%?FL"S v  A !4E UbjBm\ . Y!)i!(!.!)!*")@"'j"" """"" "##D(#m# |#### #6# $"$5$H$ b$!m$$!$$p$M%\%r%{%%%%%3%u*&&&3&:&-9'$g'"''' '''('.(V(k(|(('(((9(K4)K)l)99*Ks* *%*7**+<=+Bz+++++ ,,,A, R,_,w,,,,, ,,,,&-8-R-8f-5-5- .&%.7L... .^.)/%:/)`///&/,/V0[0c0|00.00/021AF11?1 1 1'2*292J26j2.2.282783.p313!334 4"4<4$O4Ct44 4404%5!?5a5?}5?5,5>*6i6660666'7O<7'7K748588AK991:*:: e:r::i:K:B; a;n;b};;;<!< 9< F<S< d<o< <G=3L=-== ==~=<^>>>H~D{ed%KP:]JYR08A6|L)bOB 1xj&5hF_["3\gnXp!.qa2}=M  GryiT<sC$+ 9lk 7U(-*wutz IW4'@^>,fcESo`#Zm?V;NQ/vA least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photos to the selection.Admin. passwordAdmin. usernameAdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCategorieCategoriesCategory nameCenterChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + prefixCustom preview ratioCzechDanishDefault authorDefault photo captionDo not ask me againDo you want to createDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHigh definitionHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensModelNew albumNew categoryNoNoneNot connectedNot selectedOKOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperty listRank number + prefixRefreshRemove photo from selectionRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSelect photos for uploadSelectedShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload high definition Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWeb sizedWhat shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplacesecondsProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: ddtddt Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res Наименьшее одно фото уже было добавлено в прошлом.Активируйте водяной знакАктивируйте водяной знак на высоком определенииДобавьте новый альбом.Добавить новый альбомДобавьте новую категориюДобавьте фото к выборуДобавьте фото к выбору.Пароль администратораЛогин администратораПредварительноАльбомИмя альбомаАльбомыВсеАпертураАвторАвтомобиль вращаетАвтомобиль поворачивает изображениеЧернотаВнизуВнизу слеваВнизу справаБразилияОтменаОтмена обработки изображенийОтмените uploadКатегорииКатегорииИмя категорииЦентрКонтрольная суммаКитайскоУпрощенный китаецВыберите языкСоединения щелчка ниже, котор нужно начать использовать pLoader.ЗакрытьРушатся всеЦветКомментарийОшибка связи сСоединитесьСоединение кСоздайте датуДата создания Chrono + префиксаИзготовленный на заказ коэффициент предваротельного просмотраЧехословакскоДанськоАвтор значения по умолчаниюТитр фото значения по умолчаниюНе спрашивайте мне сноваВы хотите создатьсяПродолжительностьГолландскоАнглийскоВыходРасширьте всеИмя файлаПуть и имя архиваФокусное расстояниоеФранцузскоДженералНемецкоПолучать начатоГлобальные установкичеткое изображение Blurчеткое изображение сделано дляФильтр изображения высокого определенияВысота изображения высокого определениячересстрочной развертки изображения высокого определениячеткое изображение JPEG качествоШирина изображения высокого определенияВысотаВысокое определениеСпособ отображения фото отборВенгерскомагу информация о ходе обработкиДанные по прогресса upload изображенияИтальянскоАрхивы JPEGЯпонскоВыбор языкаЛевыйЛевый допустимый пределОбъективМодельНовый альбомНовая категорияНетНикакиеНе соединеноНе выбраноО'КЕЙОриентацияФотоТитр фотоПриставка титра фотоСвойства фотоВыбор фотоФото выборе эскиза Качество JPEGФото Выбор размера миниатюрыУправление новой версии фотоКатегории PiwigoИмя пользователя PiwigoОшибка имени пользователя PiwigoОшибка upload PiwigoДанные по upload PiwigoURL PiwigoПожалуйста выберите действительную категорию целиПольскийПортугалка БразилияПортугалка ПортугалияПоложениеПриставкаПрефикс + новизне ChronoПрефикс + номер рейтингаПодготовка для изменения размеров изображенийPreviewОбрабатыватьСвойстваВсе объектыНомер рейтинга + префиксаОсвежитеИзвлекайте фото от выбораRemove загрузил фото от выбораИзмените размеры изображение местаИзменено размерыУменьшить изображение сделано дляПравыйРусскоВыберите фото для uploadВыбраноВыставкаВыдержка затвораНерезкость изображения местаФильтр изображения местаВысота изображения местаИзображение места переплетаетКачество JPEG изображения местаШирина изображения местаСайт миниатюры Качество JPEGРазмер thumbnail местаСловацкийИспанскоТекстРазмер текстаМиниатюраМиниатюра и подписьМиниатюрное изображение сделано дляИнструментыВверхуВверху слеваВерхний допустимый пределВверху справаРазмер ломтя TransfertОтмененный UploadUpload высокий (первоначально размер)Upload высокий (первоначально размер)Определение Upload высокоеЗагрузите выбор фото в ваш альбом.Отправить в PiwigoЗагруженоЗагружатьЗагружаю высокой четкостиИзмененный размеры загружатьЗагружаю миниатюрамиИспользования EXIF просмотра, когда доступноИспользуйте оригиналИспользуйте измененный размеры оригиналОпределенная размер паутинаЧего мы сделать с архивами? (разрешение thumbnail, измененного размеры, высокого)Чего мы сделать с свойствами значений многократной цепи? (категории, бирки)Что мы будем делать в личную уровне?Чего мы сделать с одиночными свойствами значения? (титр, комментарий, автор, создает дату)БелоКто может увидеть фото?ШиринаРабота OfflineДаДа, использовать HD изменении размера исходной фотографииДа, использовать копии оригинальных фотоАдминистраторамальбомальбомыприложите (держите существовать и добавляйте новую) o)категориикатегорииконтактыпусто - работа OfflineОшибкикаждоенеудачносемьяЗаполните, если пусто (только заменить свойств в настоящее время пуст Piwigo)друзьяне загруженные изображения в ошибках иобрабатываемые изображениязагруженные изображениямой водяной знакничегонаpLoader нужно быть повторенным старт для показа нового выбранного языкаФотографии, добавленные к выборузаменитьсекундыpLoader-1.6/locale/ru_RU/pLoader.po0000644000175000017500000003602611326151441015352 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: ddtddt \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Выберите фото для upload" msgid "JPEG files" msgstr "Архивы JPEG" msgid "Default author" msgstr "Автор значения по умолчанию" msgid "Photo caption prefix" msgstr "Приставка титра фото" msgid "Site thumbnail size" msgstr "Размер thumbnail места" msgid "Site image width" msgstr "Ширина изображения места" msgid "Site image height" msgstr "Высота изображения места" msgid "Auto rotate image" msgstr "Автомобиль поворачивает изображение" msgid "Upload high (original size) " msgstr "Upload высокий (первоначально размер)" msgid "Upload high definition " msgstr "Определение Upload высокое" msgid "High definition" msgstr "Высокое определение" msgid "Yes" msgstr "Да" msgid "No" msgstr "Нет" msgid "Admin. username" msgstr "Логин администратора" msgid "Admin. password" msgstr "Пароль администратора" msgid "OK" msgstr "О'КЕЙ" msgid "Cancel" msgstr "Отмена" msgid "Create date" msgstr "Создайте дату" msgid "Width" msgstr "Ширина" msgid "Height" msgstr "Высота" msgid "Orientation" msgstr "Ориентация" msgid "Shutter speed" msgstr "Выдержка затвора" msgid "Aperture" msgstr "Апертура" msgid "Focal length" msgstr "Фокусное расстояниое" msgid "Model" msgstr "Модель" msgid "Lens" msgstr "Объектив" msgid "Author" msgstr "Автор" msgid "Comment" msgstr "Комментарий" msgid "Chinese" msgstr "Китайско" msgid "Chinese simplified" msgstr "Упрощенный китаец" msgid "Czech" msgstr "Чехословакско" msgid "Danish" msgstr "Дансько" msgid "English" msgstr "Английско" msgid "German" msgstr "Немецко" msgid "Spanish" msgstr "Испанско" msgid "French" msgstr "Французско" msgid "Hungarian" msgstr "Венгерско" msgid "Italian" msgstr "Итальянско" msgid "Japanese" msgstr "Японско" msgid "Dutch" msgstr "Голландско" msgid "Polish" msgstr "Польский" msgid "Portuguese Brazil" msgstr "Португалка Бразилия" msgid "Portuguese Portugal" msgstr "Португалка Португалия" msgid "Russian" msgstr "Русско" msgid "Slovak" msgstr "Словацкий" msgid "Brasil" msgstr "Бразилия" msgid "pLoader needs to be restarted to display the new selected language" msgstr "pLoader нужно быть повторенным старт для показа нового выбранного языка" msgid "Piwigo categories" msgstr "Категории Piwigo" msgid "Photo properties" msgstr "Свойства фото" msgid "Tools" msgstr "Инструменты" msgid "Global settings" msgstr "Глобальные установки" msgid "Advanced" msgstr "Предварительно" msgid "Transfert chunk size" msgstr "Размер ломтя Transfert" msgid "General" msgstr "Дженерал" msgid "Resized" msgstr "Изменено размеры" msgid "Thumbnail" msgstr "Миниатюра" msgid "Preview" msgstr "Preview" msgid "Photo selection" msgstr "Выбор фото" msgid "Language choice" msgstr "Выбор языка" msgid "Choose a language" msgstr "Выберите язык" msgid "Upload to Piwigo" msgstr "Отправить в Piwigo" msgid "Remove photo from selection" msgstr "Извлекайте фото от выбора" msgid "Add photo to selection" msgstr "Добавьте фото к выбору" msgid "Not connected" msgstr "Не соединено" msgid "Connection to" msgstr "Соединение к" msgid "failed" msgstr "неудачно" msgid "Piwigo login" msgstr "Имя пользователя Piwigo" msgid "Piwigo login error" msgstr "Ошибка имени пользователя Piwigo" msgid "Please select a valid target category" msgstr "Пожалуйста выберите действительную категорию цели" msgid "Piwigo upload error" msgstr "Ошибка upload Piwigo" msgid "Category name" msgstr "Имя категории" msgid "Add new category" msgstr "Добавьте новую категорию" msgid "New category" msgstr "Новая категория" msgid "Upload cancelled" msgstr "Отмененный Upload" msgid "Image upload progress information" msgstr "Данные по прогресса upload изображения" msgid "Cancel upload" msgstr "Отмените upload" msgid "Piwigo upload information" msgstr "Данные по upload Piwigo" msgid "Processing" msgstr "Обрабатывать" msgid "images processed" msgstr "обрабатываемые изображения" msgid "images uploaded" msgstr "загруженные изображения" msgid "images in errors and not uploaded" msgstr "не загруженные изображения в ошибках и" msgid "Duration" msgstr "Продолжительность" msgid "seconds" msgstr "секунды" msgid "Categories" msgstr "Категории" msgid "categories" msgstr "категории" msgid "Categorie" msgstr "Категории" msgid "categorie" msgstr "категории" msgid "Album" msgstr "Альбом" msgid "Albums" msgstr "Альбомы" msgid "album" msgstr "альбом" msgid "albums" msgstr "альбомы" msgid "Photo caption" msgstr "Титр фото" msgid "File name" msgstr "Имя файла" msgid "Default photo caption" msgstr "Титр фото значения по умолчанию" msgid "Resize site image" msgstr "Измените размеры изображение места" msgid "Auto rotate" msgstr "Автомобиль вращает" msgid "Upload high (original size)" msgstr "Upload высокий (первоначально размер)" msgid "Site image jpeg quality" msgstr "Качество JPEG изображения места" msgid "Site image filter" msgstr "Фильтр изображения места" msgid "Site image blur" msgstr "Нерезкость изображения места" msgid "Site image interlace" msgstr "Изображение места переплетает" msgid "Site thumbnail jpeg quality" msgstr "Сайт миниатюры Качество JPEG" msgid "Photo selection thumbnail size" msgstr "Фото Выбор размера миниатюры" msgid "Photo selection thumbnail jpeg quality" msgstr "Фото выборе эскиза Качество JPEG" msgid "Use exif preview when available" msgstr "Использования EXIF просмотра, когда доступно" msgid "Custom preview ratio" msgstr "Изготовленный на заказ коэффициент предваротельного просмотра" msgid "Piwigo url" msgstr "URL Piwigo" msgid "Connect" msgstr "Соединитесь" msgid "Work Offline" msgstr "Работа Offline" msgid "Exit" msgstr "Выход" msgid "empty - work Offline" msgstr "пусто - работа Offline" msgid "None" msgstr "Никакие" msgid "File path and name" msgstr "Путь и имя архива" msgid "Prefix" msgstr "Приставка" msgid "Prefix + rank number" msgstr "Префикс + номер рейтинга" msgid "Rank number + prefix" msgstr "Номер рейтинга + префикса" msgid "Prefix + create date chrono" msgstr "Префикс + новизне Chrono" msgid "Create date chrono + prefix" msgstr "Дата создания Chrono + префикса" msgid "Photo" msgstr "Фото" msgid "Image processing progress information" msgstr "магу информация о ходе обработки" msgid "Cancel image processing" msgstr "Отмена обработки изображений" msgid "Add new album" msgstr "Добавить новый альбом" msgid "Album name" msgstr "Имя альбома" msgid "New album" msgstr "Новый альбом" msgid "Refresh" msgstr "Освежите" msgid "Expand all" msgstr "Расширьте все" msgid "Collapse all" msgstr "Рушатся все" msgid "Getting started" msgstr "Получать начато" msgid "Properties" msgstr "Свойства" msgid "Remove uploaded photo from selection" msgstr "Remove загрузил фото от выбора" msgid "Activate watermark" msgstr "Активируйте водяной знак" msgid "Activate watermark on high definition" msgstr "Активируйте водяной знак на высоком определении" msgid "Text" msgstr "Текст" msgid "Text size" msgstr "Размер текста" msgid "Color" msgstr "Цвет" msgid "Position" msgstr "Положение" msgid "Top margin" msgstr "Верхний допустимый предел" msgid "Left margin" msgstr "Левый допустимый предел" msgid "White" msgstr "Бело" msgid "Black" msgstr "Чернота" msgid "Top" msgstr "Вверху" msgid "Top left" msgstr "Вверху слева" msgid "Top right" msgstr "Вверху справа" msgid "Bottom" msgstr "Внизу" msgid "Bottom left" msgstr "Внизу слева" msgid "Bottom right" msgstr "Внизу справа" msgid "Center" msgstr "Центр" msgid "Left" msgstr "Левый" msgid "Right" msgstr "Правый" msgid "my watermark" msgstr "мой водяной знак" msgid "Show" msgstr "Выставка" msgid "All" msgstr "Все" msgid "Selected" msgstr "Выбрано" msgid "Not selected" msgstr "Не выбрано" msgid "Uploading" msgstr "Загружать" msgid "Uploading resized" msgstr "Измененный размеры загружать" msgid "Uploading thumbnail" msgstr "Загружаю миниатюрами" msgid "Uploading high definition" msgstr "Загружаю высокой четкости" msgid "Checksum for" msgstr "Контрольная сумма" msgid "Communication error with" msgstr "Ошибка связи с" msgid "Thumbnail image done for" msgstr "Миниатюрное изображение сделано для" msgid "HD image done for" msgstr "четкое изображение сделано для" msgid "Resized image done for" msgstr "Уменьшить изображение сделано для" msgid "Uploaded" msgstr "Загружено" msgid "Preparing resized image for" msgstr "Подготовка для изменения размеров изображений" msgid "Close" msgstr "Закрыть" msgid "on" msgstr "на" msgid "photos added to the selection" msgstr "Фотографии, добавленные к выбору" msgid "errors" msgstr "Ошибки" msgid "Yes, use HD resized of the original photo" msgstr "Да, использовать HD изменении размера исходной фотографии" msgid "Yes, use a copy of the original photo" msgstr "Да, использовать копии оригинальных фото" msgid "HD image width" msgstr "Ширина изображения высокого определения" msgid "HD image height" msgstr "Высота изображения высокого определения" msgid "HD image jpeg quality" msgstr "четкое изображение JPEG качество" msgid "HD image filter" msgstr "Фильтр изображения высокого определения" msgid "HD image blur" msgstr "четкое изображение Blur" msgid "HD image interlace" msgstr "чересстрочной развертки изображения высокого определения" msgid "nothing" msgstr "ничего" msgid "replace" msgstr "заменить" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "Заполните, если пусто (только заменить свойств в настоящее время пуст Piwigo)" msgid "append (keep existing and add new)" msgstr "приложите (держите существовать и добавляйте новую) o)" msgid "Do not ask me again" msgstr "Не спрашивайте мне снова" msgid "A least one photo has already been added in the past." msgstr "Наименьшее одно фото уже было добавлено в прошлом." msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Чего мы сделать с архивами? (разрешение thumbnail, измененного размеры, высокого)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Чего мы сделать с одиночными свойствами значения? (титр, комментарий, автор, создает дату)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Чего мы сделать с свойствами значений многократной цепи? (категории, бирки)" msgid "Photo update management" msgstr "Управление новой версии фото" msgid "Who can see the photo?" msgstr "Кто может увидеть фото?" msgid "everybody" msgstr "каждое" msgid "contacts" msgstr "контакты" msgid "friends" msgstr "друзья" msgid "family" msgstr "семья" msgid "admins" msgstr "Администраторам" msgid "What shall we do with privacy level?" msgstr "Что мы будем делать в личную уровне?" msgid "Thumbnail and caption" msgstr "Миниатюра и подпись" msgid "Property list" msgstr "Все объекты" msgid "How photo selection is displayed" msgstr "Способ отображения фото отбор" msgid "Use original" msgstr "Используйте оригинал" msgid "Use resized original" msgstr "Используйте измененный размеры оригинал" msgid "Web sized" msgstr "Определенная размер паутина" msgid "Do you want to create" msgstr "Вы хотите создаться" msgid "Click links below to start using pLoader." msgstr "Соединения щелчка ниже, котор нужно начать использовать pLoader." msgid "Add a new album." msgstr "Добавьте новый альбом." msgid "Add photos to the selection." msgstr "Добавьте фото к выбору." msgid "Upload the photo selection into your album." msgstr "Загрузите выбор фото в ваш альбом." pLoader-1.6/locale/es_ES/pLoader.mo0000644000175000017500000000073711367340543015321 0ustar ronron$,89Project-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: jpr928 Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res pLoader-1.6/locale/es_ES/pLoader.po0000644000175000017500000003675011367340502015323 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: jpr928 \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" #, fuzzy msgid "Select photos for upload" msgstr "Escoger las fotos que hay que trasladar" #, fuzzy msgid "JPEG files" msgstr "Ficheros JPEG" #, fuzzy msgid "Default author" msgstr "Autor por defecto:" #, fuzzy msgid "Photo caption prefix" msgstr "Prefijo del título de la foto:" #, fuzzy msgid "Site thumbnail size" msgstr "Talla miniatura:" #, fuzzy msgid "Site image width" msgstr "Anchura de la imagen" #, fuzzy msgid "Site image height" msgstr "Altura de la imagen" #, fuzzy msgid "Auto rotate image" msgstr "Rotación automática de la imagen" #, fuzzy msgid "Upload high (original size) " msgstr "Cargar la foto original:" #, fuzzy msgid "Upload high definition " msgstr "Transferencia alta definición:" #, fuzzy msgid "High definition" msgstr "Alta definición:" #, fuzzy msgid "Yes" msgstr "Sí" #, fuzzy msgid "No" msgstr "No" #, fuzzy msgid "Admin. username" msgstr "Identificando a administrador:" #, fuzzy msgid "Admin. password" msgstr "Contraseña administrador:" #, fuzzy msgid "OK" msgstr "Validar" #, fuzzy msgid "Cancel" msgstr "Anular" #, fuzzy msgid "Create date" msgstr "Data de creación:" #, fuzzy msgid "Width" msgstr "Anchura:" #, fuzzy msgid "Height" msgstr "Altura" #, fuzzy msgid "Orientation" msgstr "Orientación:" #, fuzzy msgid "Shutter speed" msgstr "Velocidad de obturación:" #, fuzzy msgid "Aperture" msgstr "Apertura:" #, fuzzy msgid "Focal length" msgstr "Longitud focal:" #, fuzzy msgid "Model" msgstr "Modelo" #, fuzzy msgid "Lens" msgstr "Óptica:" #, fuzzy msgid "Author" msgstr "Autor:" #, fuzzy msgid "Comment" msgstr "Comentario:" #, fuzzy msgid "Chinese" msgstr "Chino" #, fuzzy msgid "Chinese simplified" msgstr "Chino simplificado" #, fuzzy msgid "Czech" msgstr "Checo" #, fuzzy msgid "Danish" msgstr "Danés" #, fuzzy msgid "English" msgstr "Inglés" #, fuzzy msgid "German" msgstr "Alemán" #, fuzzy msgid "Spanish" msgstr "Español" #, fuzzy msgid "French" msgstr "Francés" #, fuzzy msgid "Hungarian" msgstr "Húngaro" #, fuzzy msgid "Italian" msgstr "Italiano" #, fuzzy msgid "Japanese" msgstr "Japonés" #, fuzzy msgid "Dutch" msgstr "Holandés" #, fuzzy msgid "Polish" msgstr "Polaco" #, fuzzy msgid "Portuguese Brazil" msgstr "Brasil portugués" #, fuzzy msgid "Portuguese Portugal" msgstr "Portugal portugués" #, fuzzy msgid "Russian" msgstr "Ruso" #, fuzzy msgid "Slovak" msgstr "Eslovaco" #, fuzzy msgid "Brasil" msgstr "Brasil" #, fuzzy msgid "pLoader needs to be restarted to display the new selected language" msgstr "PLoader debe ser dejado partir para fijar la nueva lengua seleccionada" #, fuzzy msgid "Piwigo categories" msgstr "Categorías en Piwigo" #, fuzzy msgid "Photo properties" msgstr "Propiedades de la foto" #, fuzzy msgid "Tools" msgstr "Herramientas" #, fuzzy msgid "Global settings" msgstr "Preferencias" #, fuzzy msgid "Advanced" msgstr "Avanzado" #, fuzzy msgid "Transfert chunk size" msgstr "Talla bloques de transferencia:" #, fuzzy msgid "General" msgstr "General" #, fuzzy msgid "Resized" msgstr "Reducción" #, fuzzy msgid "Thumbnail" msgstr "Miniatura" #, fuzzy msgid "Preview" msgstr "Previsualización" #, fuzzy msgid "Photo selection" msgstr "Fotos seleccionadas" #, fuzzy msgid "Language choice" msgstr "Elección de la lengua" #, fuzzy msgid "Choose a language" msgstr "Escoger una lengua" #, fuzzy msgid "Upload to Piwigo" msgstr "Trasladar hacia Piwigo" #, fuzzy msgid "Remove photo from selection" msgstr "Llevarse la foto de la selección" #, fuzzy msgid "Add photo to selection" msgstr "Añadir la foto a la selección" #, fuzzy msgid "Not connected" msgstr "No conectado" #, fuzzy msgid "Connection to" msgstr "La conexión a" #, fuzzy msgid "failed" msgstr "Fue suspendido" #, fuzzy msgid "Piwigo login" msgstr "Conexión en Piwigo" #, fuzzy msgid "Piwigo login error" msgstr "Error de conexión en Piwigo" #, fuzzy msgid "Please select a valid target category" msgstr "Por favor, seleccione otra categoría" #, fuzzy msgid "Piwigo upload error" msgstr "Error de transferencia a Piwigo" #, fuzzy msgid "Category name" msgstr "Nombre de la categoría" #, fuzzy msgid "Add new category" msgstr "Añadir una nueva categoría" #, fuzzy msgid "New category" msgstr "Nueva categoría" #, fuzzy msgid "Upload cancelled" msgstr "Transferencia anulada" #, fuzzy msgid "Image upload progress information" msgstr "Progresión de la transferencia de imagen" #, fuzzy msgid "Cancel upload" msgstr "Anular la transferencia" #, fuzzy msgid "Piwigo upload information" msgstr "Información sobre la transferencia a Piwigo" #, fuzzy msgid "Processing" msgstr "Tratamiento corriente" #, fuzzy msgid "images processed" msgstr "imágenes tratadas" #, fuzzy msgid "images uploaded" msgstr "Imágenes trasladadas" #, fuzzy msgid "images in errors and not uploaded" msgstr "Imágenes en error y no trasladadas" #, fuzzy msgid "Duration" msgstr "Duración" #, fuzzy msgid "seconds" msgstr "Segundos" #, fuzzy msgid "Categories" msgstr "Categorías" #, fuzzy msgid "categories" msgstr "categorías" #, fuzzy msgid "Categorie" msgstr "Categoría" #, fuzzy msgid "categorie" msgstr "categoría" #, fuzzy msgid "Album" msgstr "Álbum" #, fuzzy msgid "Albums" msgstr "Álbums" #, fuzzy msgid "album" msgstr "álbum" #, fuzzy msgid "albums" msgstr "álbums" #, fuzzy msgid "Photo caption" msgstr "Título de la foto:" #, fuzzy msgid "File name" msgstr "Nombre del fichero:" #, fuzzy msgid "Default photo caption" msgstr "Título por defecto:" #, fuzzy msgid "Resize site image" msgstr "Reducirse para el sitio:" #, fuzzy msgid "Auto rotate" msgstr "Rotación automática:" #, fuzzy msgid "Upload high (original size)" msgstr "Trasladar la foto original:" #, fuzzy msgid "Site image jpeg quality" msgstr "Calidad JPEG de la foto:" #, fuzzy msgid "Site image filter" msgstr "Filtro de reducción:" #, fuzzy msgid "Site image blur" msgstr "Acentuación / ligereza:" #, fuzzy msgid "Site image interlace" msgstr "Entrelazamiento:" #, fuzzy msgid "Site thumbnail jpeg quality" msgstr "Calidad JPEG de las miniaturas del sitio:" #, fuzzy msgid "Photo selection thumbnail size" msgstr "Talla miniaturas de la selección foto:" #, fuzzy msgid "Photo selection thumbnail jpeg quality" msgstr "Calidad JPEG de las miniaturas de la selección foto:" #, fuzzy msgid "Use exif preview when available" msgstr "Utilizar la previsualización extejo:" #, fuzzy msgid "Custom preview ratio" msgstr "Ratio de previsualización:" #, fuzzy msgid "Piwigo url" msgstr "url del sitio Piwigo" #, fuzzy msgid "Connect" msgstr "Conectar" #, fuzzy msgid "Work Offline" msgstr "Trabajar fuera de conexión" #, fuzzy msgid "Exit" msgstr "Salir" #, fuzzy msgid "empty - work Offline" msgstr "Nada que hay que fijar - fuera de conexión" #, fuzzy msgid "None" msgstr "Ninguno" #, fuzzy msgid "File path and name" msgstr "Camino y nombre del fichero" #, fuzzy msgid "Prefix" msgstr "Prefijo" #, fuzzy msgid "Prefix + rank number" msgstr "Prefijo + número de fila" #, fuzzy msgid "Rank number + prefix" msgstr "Número de fila + prefijo" #, fuzzy msgid "Prefix + create date chrono" msgstr "Prefijo + cronómetro data de creación" #, fuzzy msgid "Create date chrono + prefix" msgstr "Cronómetro data de creación + prefijo" #, fuzzy msgid "Photo" msgstr "Foto" #, fuzzy msgid "Image processing progress information" msgstr "Progresión del tratamiento de imagen" #, fuzzy msgid "Cancel image processing" msgstr "Anular el tratamiento de imagen" #, fuzzy msgid "Add new album" msgstr "Añadir un nuevo álbum" #, fuzzy msgid "Album name" msgstr "Nombre del álbum:" #, fuzzy msgid "New album" msgstr "Nuevo álbum" #, fuzzy msgid "Refresh" msgstr "Actualizar" #, fuzzy msgid "Expand all" msgstr "Fijar todo" #, fuzzy msgid "Collapse all" msgstr "Reducir todo" #, fuzzy msgid "Getting started" msgstr "Arrancar" #, fuzzy msgid "Properties" msgstr "Propiedades" #, fuzzy msgid "Remove uploaded photo from selection" msgstr "Vaciar la selección foto después de transferencia:" #, fuzzy msgid "Activate watermark" msgstr "Acelerar watermark:" #, fuzzy msgid "Activate watermark on high definition" msgstr "Acelerar watermark sobre la alta definición:" #, fuzzy msgid "Text" msgstr "Texto:" #, fuzzy msgid "Text size" msgstr "Talla del texto:" #, fuzzy msgid "Color" msgstr "Color:" #, fuzzy msgid "Position" msgstr "Posición:" #, fuzzy msgid "Top margin" msgstr "Margen arriba:" #, fuzzy msgid "Left margin" msgstr "Margen a la izquierda:" #, fuzzy msgid "White" msgstr "Blanco" #, fuzzy msgid "Black" msgstr "Negro" #, fuzzy msgid "Top" msgstr "Altura" #, fuzzy msgid "Top left" msgstr "Altura a la izquierda" #, fuzzy msgid "Top right" msgstr "Altura a la derecha" #, fuzzy msgid "Bottom" msgstr "Bajura" #, fuzzy msgid "Bottom left" msgstr "Bajura a la izquierda" #, fuzzy msgid "Bottom right" msgstr "Bajura a la derecha" #, fuzzy msgid "Center" msgstr "Centrado" #, fuzzy msgid "Left" msgstr "Izquierda" #, fuzzy msgid "Right" msgstr "Derecha" #, fuzzy msgid "my watermark" msgstr "Mi watermark" #, fuzzy msgid "Show" msgstr "Espectáculo" #, fuzzy msgid "All" msgstr "Todo" #, fuzzy msgid "Selected" msgstr "Seleccionado" #, fuzzy msgid "Not selected" msgstr "No conectado" #, fuzzy msgid "Uploading" msgstr "Traslada" #, fuzzy msgid "Uploading resized" msgstr "Traslada la foto reducida" #, fuzzy msgid "Uploading thumbnail" msgstr "Traslada la miniatura" #, fuzzy msgid "Uploading high definition" msgstr "Traslada la foto HD" #, fuzzy msgid "Checksum for" msgstr "Sueño de control" #, fuzzy msgid "Communication error with" msgstr "Error de comunicación con" #, fuzzy msgid "Thumbnail image done for" msgstr "Miniatura de la imagen acabada para" #, fuzzy msgid "HD image done for" msgstr "Llena de imágenes alta definición acabada para" #, fuzzy msgid "Resized image done for" msgstr "Imagen reducida acabada para" #, fuzzy msgid "Uploaded" msgstr "Trasladado" #, fuzzy msgid "Preparing resized image for" msgstr "Prepara la foto reducida de" #, fuzzy msgid "Close" msgstr "Cerrarse" #, fuzzy msgid "on" msgstr "sobre" #, fuzzy msgid "photos added to the selection" msgstr "fotos añadidas a la selección" #, fuzzy msgid "errors" msgstr "Errores" #, fuzzy msgid "Yes, use HD resized of the original photo" msgstr "Sí, utilizar una reducción HD de la foto original" #, fuzzy msgid "Yes, use a copy of the original photo" msgstr "Sí, utilizar una copia de la foto original" #, fuzzy msgid "HD image width" msgstr "Anchura de la imagen HD:" #, fuzzy msgid "HD image height" msgstr "Altura de la imagen HD:" #, fuzzy msgid "HD image jpeg quality" msgstr "Calidad JPEG de la imagen HD:" #, fuzzy msgid "HD image filter" msgstr "Filtro de reducción de la imagen HD:" #, fuzzy msgid "HD image blur" msgstr "Acentuación / ligereza de la imagen HD:" #, fuzzy msgid "HD image interlace" msgstr "Entrelazamiento de la imagen HD:" #, fuzzy msgid "nothing" msgstr "No hacer nada" #, fuzzy msgid "replace" msgstr "Reemplazar" #, fuzzy msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "Cumplir si no informado (reemplazar sólo las propiedades vacías en Piwigo)" #, fuzzy msgid "append (keep existing and add new)" msgstr "Acumular (guardar el existente y añadir)" #, fuzzy msgid "Do not ask me again" msgstr "Más pedirme" #, fuzzy msgid "A least one photo has already been added in the past." msgstr "Por lo menos una foto ya ha sido añadida en el pasado." #, fuzzy msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "¿ Que hacer para los ficheros? (Miniatura, talla web, alta definición)" #, fuzzy msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "¿ Que hacer para las propiedades simples? (Título(acción), comentario, autor, fecha de creación)" #, fuzzy msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "¿ Que hacer para las propiedades a valores múltiples? (Categorías, tags)" #, fuzzy msgid "Photo update management" msgstr "Gestión de la puesta al día de las fotos" #, fuzzy msgid "Who can see the photo?" msgstr "¿ Quién puede ver la foto?:" #, fuzzy msgid "everybody" msgstr "Todo el mundo" #, fuzzy msgid "contacts" msgstr "contactos" #, fuzzy msgid "friends" msgstr "amigos" #, fuzzy msgid "family" msgstr "familia" #, fuzzy msgid "admins" msgstr "Administradores" #, fuzzy msgid "What shall we do with privacy level?" msgstr "¿ Que hacer para el nivel de confidencialidad?" #, fuzzy msgid "Thumbnail and caption" msgstr "Miniatura y título" #, fuzzy msgid "Property list" msgstr "Lista de propiedades" #, fuzzy msgid "How photo selection is displayed" msgstr "Cómo la selección de fotos es fijada" #, fuzzy msgid "Use original" msgstr "Utilizar el original" #, fuzzy msgid "Use resized original" msgstr "Redimensionar el original" #, fuzzy msgid "Web sized" msgstr "Foto talla web" #, fuzzy msgid "Do you want to create" msgstr "Por favor, créese" #, fuzzy msgid "Transfer" msgstr "Transferencia" #, fuzzy msgid "Click links below to start using pLoader." msgstr "Haga clic en los lazos para comenzar con pLoader." #, fuzzy msgid "Add a new album." msgstr "Crear un nuevo álbum." #, fuzzy msgid "Add photos to the selection." msgstr "Añadir fotos a la selección." #, fuzzy msgid "Upload the photo selection into your album." msgstr "Trasladar en un álbum." #, fuzzy msgid "Photo size" msgstr "Dimensión de las fotos" #, fuzzy msgid "Maximum width" msgstr "Anchura máxima" #, fuzzy msgid "Maximum height" msgstr "Altura máxima" #, fuzzy msgid "What is the destination category?" msgstr "¿ Cuál es la categoría destino?" #, fuzzy msgid "What is the destination album?" msgstr "¿ Cuál es el álbum destino?" #, fuzzy msgid "Caption" msgstr "Título" #, fuzzy msgid "Who can see?" msgstr "¿ Quién puede ver?" #, fuzzy msgid "You have selected a batch of %s photos" msgstr "Usted seleccionó un lote de %s fotos" #, fuzzy msgid "Changes apply to the whole batch" msgstr "Las modificaciones se aplican a todas las fotos de la selección" #, fuzzy msgid "Drag photos here to get started" msgstr "Depositas sus fotos aquí para empezar" #, fuzzy msgid "Or click" msgstr "O haga clic sobre" #, fuzzy msgid "to choose files on your computer" msgstr "Para escoger ficheros de su ordenador" #, fuzzy msgid "Add photos" msgstr "Añadir fotos" #, fuzzy msgid "Remove selected photos" msgstr "Quitar las fotos seleccionadas" #, fuzzy msgid "Default caption pattern" msgstr "Tamaño de título por defecto" #, fuzzy msgid "Default caption" msgstr "Título por defecto" #, fuzzy msgid "Caption + rank number" msgstr "Título + N ° de orden" #, fuzzy msgid "Rank number + caption" msgstr "N ° de orden + título" #, fuzzy msgid "Caption + create date chrono" msgstr "Título + cronómetro fecha de creación" #, fuzzy msgid "Create date chrono + caption" msgstr "Cronómetro fecha de creación + título" #, fuzzy msgid "Create date chrono + rank" msgstr "Cronómetro fecha de creación + N ° de orden" #, fuzzy msgid "Rank + create date chrono" msgstr "N ° de orden + cronómetro fecha de creación" #, fuzzy msgid "Preferences" msgstr "Preferencias" #, fuzzy msgid "Selection" msgstr "Selección" pLoader-1.6/locale/fr_FR/pLoader.mo0000644000175000017500000003512211371040661015306 0ustar ronron=5%*P ao % &*3 :FX^ e q~     . O\dw)   ,Hbw}$*2 7 BL _ls{  ! 1 R%\!      # ( 6CF O[ ao&  !.AU o%z 6 > I Tb| 6$%J\d{  ):Vjqy    ;X+p  - B L !k B D $!U:!!! !! !!)!%!&!"1H"z""""" " """" """A#E#!M#o## ###B## $$ $:$:%&*/&Z&r&&!&&2&$'7'S'n'v'|''' '''''' ' ' ( ((3(H( N(o( ( ((((D( ))$)7)2J)}) )) )) ))) )#*&5*\*w********.+0+ 7+B+J+ Q+_+n++ + ++ + ++&+",6,L,h,,,,-,,!, -.- 6-D-M-`-g-w---- ---- ---- ...0.N.g.3~.,..%./2/G/f/(//+/// 0 0 )070#@0d0{000 00&0 11 41 B1!M1"o1Q1*12 %202N2U2![2}2 222222 223$*3O3e3n3w333 33#3333 33 4464H40g4444 4 44525#J5n5555&5H5J<6.6Y677/7?7G7b7,f7$7+7M728B8H8&O8 v8 88"88 8 88O829%79]9n9 9 99K9!9 ::-$:NK8:0 1.!SJ\E@fmw r} FzWs|tc7,vehM[aTP$%ip4L# qVdX~3lb 5k ]2O>=xY)I<HUuBDRo-?9jn*+g(y_ZGQ6{/&;A`^C'"A least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photosAdd photos for resizing and uploadingAdd photos to the selection.Admin. passwordAdmin. usernameAdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCaptionCaption + create date chronoCaption + rank numberCategorieCategoriesCategory nameCenterChange global settingsChanges apply to the whole batchChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + captionCreate date chrono + prefixCreate date chrono + rankCustom preview ratioCzechDanishDefault authorDefault captionDefault caption patternDefault photo captionDo not ask me againDo you want to createDrag photos here to get startedDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHigh definitionHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensMaximum heightMaximum widthModelNew albumNew categoryNoNoneNot connectedNot selectedOKOr clickOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPreferencesPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperty listRank + create date chronoRank number + captionRank number + prefixRectangularRefreshRemove photo from selectionRemove selected photosRemove selected photos. Original files are not deletedRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSelect photos for uploadSelectedSelectionShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishSquareTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransferTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload high definition Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWeb sizedWhat is the destination album?What is the destination category?What shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?Who can see?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoYou have selected a batch of %s photosYour user account is not granted to upload photosadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplacesecondsto choose files on your computerProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-10-10 11:36+0100 PO-Revision-Date: Last-Translator: Karim AGREBI Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res Au moins une photo a déjà été ajoutée dans le passé.Activer watermarkActiver watermark sur la haute définitionCréer un nouvel album.Ajouter un nouvel albumAjouter une nouvelle catégorieAjouter la photo à la sélectionAjouter des photosAjoute des photos à redimensionner et transférerAjouter des photos à la sélection.Mot de passe administrateurIdentifiant administrateurAvancéAlbumNom de l'albumAlbumsToutOuvertureAuteurRotation automatiqueRotation automatique de l'imageNoirBasBas à gaucheBas à droiteBrésilienAnnulerAnnuler le traitement d'imageAnnuler le transfertTitreTitre + chrono date de créationTitre + N° d'ordreCatégorieCatégoriesNom de la catégorieCentreChange les réglagesLes modifications s'appliquent à toutes les photos de la sélectionChecksum deChinoisChinois simplifiéChoisir une langueCliquez sur les liens pour commencer avec pLoader.FermerRéduire toutCouleurCommentaireErreur de communication avecConnecterLa connection àDate de créationChrono date de création + titreChrono date de création + préfixeChrono date de création + N° d'ordreRatio de prévisualisationTchèqueDanoisAuteur par défautTitre par défautFormat de titre par défautTitre par défautNe plus me demanderVoulez vous créerGlissez-déposez vos photos ici pour démarrerDuréeHollandaisAnglaisSortirAfficher toutNom du fichierChemin et nom du fichierLongueur focaleFrançaisGénéralAllemandDémarrerPréférencesAccentuation/flou de l'image HDImage haute définition terminée pourFiltre de réduction de l'image HDHauteur de l'image HDEntrelacement de l'image HDQualité jpeg de l'image HDLargeur de l'image HDHauteurHaute définitionComment la sélection de photos est affichéeHongroisProgression du traitement d'imageProgression du transfert d'imageItalienFichiers JPEGJaponaisChoix de la langueGaucheMarge à gaucheOptiqueHauteur maximaleLargeur maximaleModèleNouvel albumNouvelle catégorieNonAucunNon connectéNon sélectionnésValiderOu cliquez surOrientationPhotoTitre de la photoPréfixe du titre de la photoPropriétés de la photoPhotos sélectionnéesQualité jpeg des miniatures de la sélection photoTaille des miniatures de la sélection photoDimension des photosGestion de la mise à jour des photosCatégories dans PiwigoConnection à PiwigoErreur de connection à PiwigoErreur de transfert vers PiwigoInformation sur le transfert vers PiwigoAdresse du site PiwigoVeuillez sélectionner une autre catégoriePolonaisPortugais BrésilPortugais PortugalPositionPréférencesPréfixePréfixe + chrono date de créationPréfixe + N° d'ordrePrépare la photo réduite dePrévisualisationTraitement en coursPropriétésListe de propriétésN° d'ordre + chrono date de créationN° d'ordre + titreN° d'ordre + préfixeRectangulaireActualiserEnlever la photo de la sélectionEnlever les photos sélectionnéesEnlève les photos sélectionnées. Les fichiers originaux ne sont pas supprimésVider la sélection photo après transfertRéduire pour le siteRéductionImage réduite terminée pourDroiteRusseChoisir les photos à transférerSélectionnésSélectionAfficherVitesse d'obturationAccentuation/flouFiltre de réductionHauteur de l'imageEntrelacementQualité jpeg de la photoLargeur de l'imageQualité jpeg des miniatures du siteTaille des miniaturesSlovaqueEspagnolCarréeTexteTaille du texteMiniatureMiniature et titreMiniature de l'image terminée pourOutilsHautHaut à gaucheMarge en hautHaut à droiteTransfertTaille des blocs de transfertTransfert annuléTransférer la photo originaleTransfert haute définition ( taille originale )Transfert haute définitionTransférer dans un album.Transférer vers PiwigoTransféréTransfèreTransfère la photo HDTransfère la photo réduiteTransfère la miniatureUtiliser la prévisualisation exifUtiliser l'originalRedimensionner l'originalPhoto taille webQuel est l'album destination ?Quelle est la catégorie destination ?Que faire pour les fichiers ? (miniature, taille web, haute définition)Que faire pour les propriétés à valeurs multiples ? (catégories, tags)Que faire pour le niveau de confidentialité ?Que faire pour les propriétés simples ? (titre, commentaire, auteur, date de création)BlancQui peut voir la photo ?Qui peut voir ?LargeurTravailler hors connectionOuiOui, une réduction HD de la photo originaleOui, une copie de la photo originaleVous avez sélectionné un lot de %s photosLes droits associés à votre compte ne permettent pas le transfert de photosadministrateursalbumalbumscumuler (garder l'existant et ajouter)catégoriecatégoriescontactsrien à afficher - hors connectionerreurstout le mondea échouéfamilleremplir si non renseigné (ne remplacer que les propriétés vides dans Piwigo)amisimages en erreur et non transféréesimages traitéesimages transféréesmon watermarkne rien fairesurpLoader doit être relancé pour afficher la nouvelle langue sélectionnéephotos ajoutées à la sélectionremplacersecondespour choisir des fichiers de votre ordinateurpLoader-1.6/locale/fr_FR/pLoader.po0000644000175000017500000003351211371040661015312 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-10-10 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Karim AGREBI \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Choisir les photos à transférer" msgid "JPEG files" msgstr "Fichiers JPEG" msgid "Default author" msgstr "Auteur par défaut" msgid "Photo caption prefix" msgstr "Préfixe du titre de la photo" msgid "Site thumbnail size" msgstr "Taille des miniatures" msgid "Site image width" msgstr "Largeur de l'image" msgid "Site image height" msgstr "Hauteur de l'image" msgid "Auto rotate image" msgstr "Rotation automatique de l'image" msgid "Upload high (original size) " msgstr "Transfert haute définition ( taille originale )" msgid "Upload high definition " msgstr "Transfert haute définition" msgid "High definition" msgstr "Haute définition" msgid "Yes" msgstr "Oui" msgid "No" msgstr "Non" msgid "Admin. username" msgstr "Identifiant administrateur" msgid "Admin. password" msgstr "Mot de passe administrateur" msgid "OK" msgstr "Valider" msgid "Cancel" msgstr "Annuler" msgid "Create date" msgstr "Date de création" msgid "Width" msgstr "Largeur" msgid "Height" msgstr "Hauteur" msgid "Orientation" msgstr "Orientation" msgid "Shutter speed" msgstr "Vitesse d'obturation" msgid "Aperture" msgstr "Ouverture" msgid "Focal length" msgstr "Longueur focale" msgid "Model" msgstr "Modèle" msgid "Lens" msgstr "Optique" msgid "Author" msgstr "Auteur" msgid "Comment" msgstr "Commentaire" msgid "Chinese" msgstr "Chinois" msgid "Chinese simplified" msgstr "Chinois simplifié" msgid "Czech" msgstr "Tchèque" msgid "Danish" msgstr "Danois" msgid "English" msgstr "Anglais" msgid "German" msgstr "Allemand" msgid "Spanish" msgstr "Espagnol" msgid "French" msgstr "Français" msgid "Hungarian" msgstr "Hongrois" msgid "Italian" msgstr "Italien" msgid "Japanese" msgstr "Japonais" msgid "Dutch" msgstr "Hollandais" msgid "Polish" msgstr "Polonais" msgid "Portuguese Brazil" msgstr "Portugais Brésil" msgid "Portuguese Portugal" msgstr "Portugais Portugal" msgid "Russian" msgstr "Russe" msgid "Slovak" msgstr "Slovaque" msgid "Brasil" msgstr "Brésilien" msgid "pLoader needs to be restarted to display the new selected language" msgstr "pLoader doit être relancé pour afficher la nouvelle langue sélectionnée" msgid "Piwigo categories" msgstr "Catégories dans Piwigo" msgid "Photo properties" msgstr "Propriétés de la photo" msgid "Tools" msgstr "Outils" msgid "Global settings" msgstr "Préférences" msgid "Advanced" msgstr "Avancé" msgid "Transfert chunk size" msgstr "Taille des blocs de transfert" msgid "General" msgstr "Général" msgid "Resized" msgstr "Réduction" msgid "Thumbnail" msgstr "Miniature" msgid "Preview" msgstr "Prévisualisation" msgid "Photo selection" msgstr "Photos sélectionnées" msgid "Language choice" msgstr "Choix de la langue" msgid "Choose a language" msgstr "Choisir une langue" msgid "Upload to Piwigo" msgstr "Transférer vers Piwigo" msgid "Remove photo from selection" msgstr "Enlever la photo de la sélection" msgid "Add photo to selection" msgstr "Ajouter la photo à la sélection" msgid "Not connected" msgstr "Non connecté" msgid "Connection to" msgstr "La connection à" msgid "failed" msgstr "a échoué" msgid "Piwigo login" msgstr "Connection à Piwigo" msgid "Piwigo login error" msgstr "Erreur de connection à Piwigo" msgid "Please select a valid target category" msgstr "Veuillez sélectionner une autre catégorie" msgid "Piwigo upload error" msgstr "Erreur de transfert vers Piwigo" msgid "Category name" msgstr "Nom de la catégorie" msgid "Add new category" msgstr "Ajouter une nouvelle catégorie" msgid "New category" msgstr "Nouvelle catégorie" msgid "Upload cancelled" msgstr "Transfert annulé" msgid "Image upload progress information" msgstr "Progression du transfert d'image" msgid "Cancel upload" msgstr "Annuler le transfert" msgid "Piwigo upload information" msgstr "Information sur le transfert vers Piwigo" msgid "Processing" msgstr "Traitement en cours" msgid "images processed" msgstr "images traitées" msgid "images uploaded" msgstr "images transférées" msgid "images in errors and not uploaded" msgstr "images en erreur et non transférées" msgid "Duration" msgstr "Durée" msgid "seconds" msgstr "secondes" msgid "Categories" msgstr "Catégories" msgid "categories" msgstr "catégories" msgid "Categorie" msgstr "Catégorie" msgid "categorie" msgstr "catégorie" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Albums" msgid "album" msgstr "album" msgid "albums" msgstr "albums" msgid "Photo caption" msgstr "Titre de la photo" msgid "File name" msgstr "Nom du fichier" msgid "Default photo caption" msgstr "Titre par défaut" msgid "Resize site image" msgstr "Réduire pour le site" msgid "Auto rotate" msgstr "Rotation automatique" msgid "Upload high (original size)" msgstr "Transférer la photo originale" msgid "Site image jpeg quality" msgstr "Qualité jpeg de la photo" msgid "Site image filter" msgstr "Filtre de réduction" msgid "Site image blur" msgstr "Accentuation/flou" msgid "Site image interlace" msgstr "Entrelacement" msgid "Site thumbnail jpeg quality" msgstr "Qualité jpeg des miniatures du site" msgid "Photo selection thumbnail size" msgstr "Taille des miniatures de la sélection photo" msgid "Photo selection thumbnail jpeg quality" msgstr "Qualité jpeg des miniatures de la sélection photo" msgid "Use exif preview when available" msgstr "Utiliser la prévisualisation exif" msgid "Custom preview ratio" msgstr "Ratio de prévisualisation" msgid "Piwigo url" msgstr "Adresse du site Piwigo" msgid "Connect" msgstr "Connecter" msgid "Work Offline" msgstr "Travailler hors connection" msgid "Exit" msgstr "Sortir" msgid "empty - work Offline" msgstr "rien à afficher - hors connection" msgid "None" msgstr "Aucun" msgid "File path and name" msgstr "Chemin et nom du fichier" msgid "Prefix" msgstr "Préfixe" msgid "Prefix + rank number" msgstr "Préfixe + N° d'ordre" msgid "Rank number + prefix" msgstr "N° d'ordre + préfixe" msgid "Prefix + create date chrono" msgstr "Préfixe + chrono date de création" msgid "Create date chrono + prefix" msgstr "Chrono date de création + préfixe" msgid "Photo" msgstr "Photo" msgid "Image processing progress information" msgstr "Progression du traitement d'image" msgid "Cancel image processing" msgstr "Annuler le traitement d'image" msgid "Add new album" msgstr "Ajouter un nouvel album" msgid "Album name" msgstr "Nom de l'album" msgid "New album" msgstr "Nouvel album" msgid "Refresh" msgstr "Actualiser" msgid "Expand all" msgstr "Afficher tout" msgid "Collapse all" msgstr "Réduire tout" msgid "Getting started" msgstr "Démarrer" msgid "Properties" msgstr "Propriétés" msgid "Remove uploaded photo from selection" msgstr "Vider la sélection photo après transfert" msgid "Activate watermark" msgstr "Activer watermark" msgid "Activate watermark on high definition" msgstr "Activer watermark sur la haute définition" msgid "Text" msgstr "Texte" msgid "Text size" msgstr "Taille du texte" msgid "Color" msgstr "Couleur" msgid "Position" msgstr "Position" msgid "Top margin" msgstr "Marge en haut" msgid "Left margin" msgstr "Marge à gauche" msgid "White" msgstr "Blanc" msgid "Black" msgstr "Noir" msgid "Top" msgstr "Haut" msgid "Top left" msgstr "Haut à gauche" msgid "Top right" msgstr "Haut à droite" msgid "Bottom" msgstr "Bas" msgid "Bottom left" msgstr "Bas à gauche" msgid "Bottom right" msgstr "Bas à droite" msgid "Center" msgstr "Centre" msgid "Left" msgstr "Gauche" msgid "Right" msgstr "Droite" msgid "my watermark" msgstr "mon watermark" msgid "Show" msgstr "Afficher" msgid "All" msgstr "Tout" msgid "Selected" msgstr "Sélectionnés" msgid "Not selected" msgstr "Non sélectionnés" msgid "Uploading" msgstr "Transfère" msgid "Uploading resized" msgstr "Transfère la photo réduite" msgid "Uploading thumbnail" msgstr "Transfère la miniature" msgid "Uploading high definition" msgstr "Transfère la photo HD" msgid "Checksum for" msgstr "Checksum de" msgid "Communication error with" msgstr "Erreur de communication avec" msgid "Thumbnail image done for" msgstr "Miniature de l'image terminée pour" msgid "HD image done for" msgstr "Image haute définition terminée pour" msgid "Resized image done for" msgstr "Image réduite terminée pour" msgid "Uploaded" msgstr "Transféré" msgid "Preparing resized image for" msgstr "Prépare la photo réduite de" msgid "Close" msgstr "Fermer" msgid "on" msgstr "sur" msgid "photos added to the selection" msgstr "photos ajoutées à la sélection" msgid "errors" msgstr "erreurs" msgid "Yes, use HD resized of the original photo" msgstr "Oui, une réduction HD de la photo originale" msgid "Yes, use a copy of the original photo" msgstr "Oui, une copie de la photo originale" msgid "HD image width" msgstr "Largeur de l'image HD" msgid "HD image height" msgstr "Hauteur de l'image HD" msgid "HD image jpeg quality" msgstr "Qualité jpeg de l'image HD" msgid "HD image filter" msgstr "Filtre de réduction de l'image HD" msgid "HD image blur" msgstr "Accentuation/flou de l'image HD" msgid "HD image interlace" msgstr "Entrelacement de l'image HD" msgid "nothing" msgstr "ne rien faire" msgid "replace" msgstr "remplacer" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "remplir si non renseigné (ne remplacer que les propriétés vides dans Piwigo)" msgid "append (keep existing and add new)" msgstr "cumuler (garder l'existant et ajouter)" msgid "Do not ask me again" msgstr "Ne plus me demander" msgid "A least one photo has already been added in the past." msgstr "Au moins une photo a déjà été ajoutée dans le passé." msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Que faire pour les fichiers ? (miniature, taille web, haute définition)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Que faire pour les propriétés simples ? (titre, commentaire, auteur, date de création)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Que faire pour les propriétés à valeurs multiples ? (catégories, tags)" msgid "Photo update management" msgstr "Gestion de la mise à jour des photos" msgid "Who can see the photo?" msgstr "Qui peut voir la photo ?" msgid "everybody" msgstr "tout le monde" msgid "contacts" msgstr "contacts" msgid "friends" msgstr "amis" msgid "family" msgstr "famille" msgid "admins" msgstr "administrateurs" msgid "What shall we do with privacy level?" msgstr "Que faire pour le niveau de confidentialité ?" msgid "Thumbnail and caption" msgstr "Miniature et titre" msgid "Property list" msgstr "Liste de propriétés" msgid "How photo selection is displayed" msgstr "Comment la sélection de photos est affichée" msgid "Use original" msgstr "Utiliser l'original" msgid "Use resized original" msgstr "Redimensionner l'original" msgid "Web sized" msgstr "Photo taille web" msgid "Do you want to create" msgstr "Voulez vous créer" msgid "Transfer" msgstr "Transfert" msgid "Click links below to start using pLoader." msgstr "Cliquez sur les liens pour commencer avec pLoader." msgid "Add a new album." msgstr "Créer un nouvel album." msgid "Add photos to the selection." msgstr "Ajouter des photos à la sélection." msgid "Upload the photo selection into your album." msgstr "Transférer dans un album." msgid "Photo size" msgstr "Dimension des photos" msgid "Maximum width" msgstr "Largeur maximale" msgid "Maximum height" msgstr "Hauteur maximale" msgid "What is the destination category?" msgstr "Quelle est la catégorie destination ?" msgid "What is the destination album?" msgstr "Quel est l'album destination ?" msgid "Caption" msgstr "Titre" msgid "Who can see?" msgstr "Qui peut voir ?" msgid "You have selected a batch of %s photos" msgstr "Vous avez sélectionné un lot de %s photos" msgid "Changes apply to the whole batch" msgstr "Les modifications s'appliquent à toutes les photos de la sélection" msgid "Drag photos here to get started" msgstr "Glissez-déposez vos photos ici pour démarrer" msgid "Or click" msgstr "Ou cliquez sur" msgid "to choose files on your computer" msgstr "pour choisir des fichiers de votre ordinateur" msgid "Add photos" msgstr "Ajouter des photos" msgid "Remove selected photos" msgstr "Enlever les photos sélectionnées" msgid "Default caption pattern" msgstr "Format de titre par défaut" msgid "Default caption" msgstr "Titre par défaut" msgid "Caption + rank number" msgstr "Titre + N° d'ordre" msgid "Rank number + caption" msgstr "N° d'ordre + titre" msgid "Caption + create date chrono" msgstr "Titre + chrono date de création" msgid "Create date chrono + caption" msgstr "Chrono date de création + titre" msgid "Create date chrono + rank" msgstr "Chrono date de création + N° d'ordre" msgid "Rank + create date chrono" msgstr "N° d'ordre + chrono date de création" msgid "Preferences" msgstr "Préférences" msgid "Selection" msgstr "Sélection" msgid "Your user account is not granted to upload photos" msgstr "Les droits associés à votre compte ne permettent pas le transfert de photos" msgid "Add photos for resizing and uploading" msgstr "Ajoute des photos à redimensionner et transférer" msgid "Remove selected photos. Original files are not deleted" msgstr "Enlève les photos sélectionnées. Les fichiers originaux ne sont pas supprimés" msgid "Change global settings" msgstr "Change les réglages" msgid "Rectangular" msgstr "Rectangulaire" msgid "Square" msgstr "Carrée"pLoader-1.6/locale/it_IT/pLoader.mo0000644000175000017500000003525611371050033015322 0ustar ronron=5%*P ao % &*3 :FX^ e q~     . O\dw)   ,Hbw}$*2 7 BL _ls{  ! 1 R%\!      # ( 6CF O[ ao&  !.AU o%z 6 > I Tb| 6$%J\d{  ):Vjqy    ;X+p  - B L !k B D $!U:!!! !! !!)!%!&!"1H"z""""" " """" """A#E#!M#o## ###B## $$ $:$-&C&(V&&&&!&&4')<'f'~'''''''''"'( (("( 1( <((F(o(( (( ( ((((5) G)S)Z)n)-)) )))) ))* *#A*+e****** *++ )+$7+\+c+l+t+{+ +++++++ +'+(,%G,m,,,,,,-, &-+0--\-- - -------. ..%.(. 0.=.M.P. _.l.q....5.2.2/&E/l///$/+/00<0D0W0 m0 w00#000 00 11+&1R1m1 1 1 11B162V2 j2 t2222 2 2 2233$3 :3H3a3&y3333333 334 *44494I4 Y4 g4&u44"4745.5F5 a5 l5z5 55 556#6"76'Z6J6<6$ 7S/7777 77707(898VS8888+8 8 89"91989 >9I9BR99#99999:L :V: s::&:NK8:0 1.!SJ\E@fmw r} FzWs|tc7,vehM[aTP$%ip4L# qVdX~3lb 5k ]2O>=xY)I<HUuBDRo-?9jn*+g(y_ZGQ6{/&;A`^C'"A least one photo has already been added in the past.Activate watermarkActivate watermark on high definitionAdd a new album.Add new albumAdd new categoryAdd photo to selectionAdd photosAdd photos for resizing and uploadingAdd photos to the selection.Admin. passwordAdmin. usernameAdvancedAlbumAlbum nameAlbumsAllApertureAuthorAuto rotateAuto rotate imageBlackBottomBottom leftBottom rightBrasilCancelCancel image processingCancel uploadCaptionCaption + create date chronoCaption + rank numberCategorieCategoriesCategory nameCenterChange global settingsChanges apply to the whole batchChecksum forChineseChinese simplifiedChoose a languageClick links below to start using pLoader.CloseCollapse allColorCommentCommunication error withConnectConnection toCreate dateCreate date chrono + captionCreate date chrono + prefixCreate date chrono + rankCustom preview ratioCzechDanishDefault authorDefault captionDefault caption patternDefault photo captionDo not ask me againDo you want to createDrag photos here to get startedDurationDutchEnglishExitExpand allFile nameFile path and nameFocal lengthFrenchGeneralGermanGetting startedGlobal settingsHD image blurHD image done forHD image filterHD image heightHD image interlaceHD image jpeg qualityHD image widthHeightHigh definitionHow photo selection is displayedHungarianImage processing progress informationImage upload progress informationItalianJPEG filesJapaneseLanguage choiceLeftLeft marginLensMaximum heightMaximum widthModelNew albumNew categoryNoNoneNot connectedNot selectedOKOr clickOrientationPhotoPhoto captionPhoto caption prefixPhoto propertiesPhoto selectionPhoto selection thumbnail jpeg qualityPhoto selection thumbnail sizePhoto sizePhoto update managementPiwigo categoriesPiwigo loginPiwigo login errorPiwigo upload errorPiwigo upload informationPiwigo urlPlease select a valid target categoryPolishPortuguese BrazilPortuguese PortugalPositionPreferencesPrefixPrefix + create date chronoPrefix + rank numberPreparing resized image forPreviewProcessingPropertiesProperty listRank + create date chronoRank number + captionRank number + prefixRectangularRefreshRemove photo from selectionRemove selected photosRemove selected photos. Original files are not deletedRemove uploaded photo from selectionResize site imageResizedResized image done forRightRussianSelect photos for uploadSelectedSelectionShowShutter speedSite image blurSite image filterSite image heightSite image interlaceSite image jpeg qualitySite image widthSite thumbnail jpeg qualitySite thumbnail sizeSlovakSpanishSquareTextText sizeThumbnailThumbnail and captionThumbnail image done forToolsTopTop leftTop marginTop rightTransferTransfert chunk sizeUpload cancelledUpload high (original size)Upload high (original size) Upload high definition Upload the photo selection into your album.Upload to PiwigoUploadedUploadingUploading high definitionUploading resizedUploading thumbnailUse exif preview when availableUse originalUse resized originalWeb sizedWhat is the destination album?What is the destination category?What shall we do with files? (thumbnail, resized, high resolution)What shall we do with multiple values properties? (categories, tags)What shall we do with privacy level?What shall we do with single value properties?(caption, comment, author, create date)WhiteWho can see the photo?Who can see?WidthWork OfflineYesYes, use HD resized of the original photoYes, use a copy of the original photoYou have selected a batch of %s photosYour user account is not granted to upload photosadminsalbumalbumsappend (keep existing and add new)categoriecategoriescontactsempty - work Offlineerrorseverybodyfailedfamilyfill if empty (only replace properties currently empty in Piwigo)friendsimages in errors and not uploadedimages processedimages uploadedmy watermarknothingonpLoader needs to be restarted to display the new selected languagephotos added to the selectionreplacesecondsto choose files on your computerProject-Id-Version: Piwigo pLoader Report-Msgid-Bugs-To: POT-Creation-Date: 2009-12-19 11:36+0100 PO-Revision-Date: Last-Translator: Karim AGREBI Language-Team: Piwigo team MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Basepath: . X-Poedit-Language: Italian X-Poedit-Country: ITALY X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI X-Poedit-SearchPath-1: d:/pLoader/res Almeno una foto è stata aggiunta in passato.Attivare watermarkAttivare watermark sull'alta definizioneCreare un nuovo album.Aggiungere un nuovo albumAggiungere una nuova categoriaAggiungere la foto alla selezioneAggiungere delle fotoAggiungere delle foto da ridimenzionare e trasferireAggiungere delle immagini alla selezione.Password amministratoreLogin amministratoreAdvancedAlbumNome dell'albumAlbumTuttoAperturaAutoreRotazione automaticaRotazione automatica dell'immagineNeroBassoBasso a sinistraBasso a destraBrasilianoAnnullareCancellare il trattamento delle immaginiAnnullare il trasferimentoTitoloTitolo + Crono data di creazioneTitolo + N° d'ordinamentoCategoriaCategorieNome della categoriaCentroCambiare i settaggiLe modifiche si applicano a tutte le foto selezionateChecksum diCineseCinese semplificatoScegliere una linguaCliccare sul link per cominciare con pLoader.ChiudereRidurre tuttoColoreCommentoErrore di comunicazione conConnettereConnessione a Data di creazioneCrono data di creazione + TitoloChrono data di creazione + prefissoCrono data di creazione + N° d'ordinamentoRapporto di previsualizzazioneCecoDaneseAutore di defaulttitolo di defaultFormatodi default per il titolo Titolo di defaultRicordare la rispostaVolete creareDepositate le foto qui per inizziareDurataOlandeseIngleseUscireVisualizzare tuttoNome del fileDirectory e nome fileLunghezza della focaleFranceseGeneraleTedescoAvviarePreferenzeAccentuazione/sfuocato dell'immagine HDImmagine alta definizione effettuata perFiltro di riduzzione dell'immagine HDAltezza dell'immagine HDIntreciamento dell'immagine HDQualità jpeg dell'immagine HDLarggezza dell'immagine HDAltezzaAlta definizioneCome vengono visualizzate le foto selezionateUnghereseProgressione del trattamento delle immaginiProgressione del trasferimento delle immaginiItalianoFile JPEGGiapponeseScelta della linguaSinistraMargine a sinistraOtticaAltezza massimaLarghezza massimaModelloNuovo albumNuova categoriaNoNessunoNon connessoNon selezionatiOKO cliccare quiOrientamentoFotoTitolo della fotoPrefisso del titolo della fotoProprietà della fotoFoto selezionateQualità jpeg delle miniature della selezione di fotoDimensioni delle miniature della selezione di fotoFormato delle fotoGestione dell'aggiornamento delle fotoCategorie in PiwigoConessione a PiwigoErrore di conessione a PiwigoErrore di trasferimento verso PiwigoInformazioni sul trasferimento verso PiwigoIndirizzo del sito PiwigoSelezionare un'altra categoriaPolaccoPortoghese BrasilePortoghese PortogalloPosizionePreferenzePrefissoPrefisso + chrono data di creazionePrefisso + N° d'ordinePreparare la foto ridotta diAnteprimaTrattamento in corsoProprietàElenco delle proprietàN° d'ordinamento + Crono data di creazioneN° d'ordinamento + TitoloN° d'ordine + prefissoRettangolareAggiornareTogliere la foto dalla selezioneRitirare le foto selezzionateTogliere le foto selezionate. Gli originali non saranno cancellatiSvuotare la selezione delle foto dopo il trasferimentoRidurre per il sitoRiduzioneImmagine ridotta effettuata per DestraRussoScegliere le foto da trasferireSelezionatiSelelzioneVisualizzareVelocità dell'otturatoreAccentuare/BlurFiltro di riduzioneAltezza dell'immagineInterlacciatoQualità jpeg della fotoLarghezza dell'immagineQualità jpeg delle miniature del sitoDimensioni delle miniatureSlovaccoSpagnoloQuadrataTestoDimenzioni del testoMiniatureMiniatura e il titoloMiniatura effettuata perStrumentiAltoAlto a sinistraMargine in altoAlto a destraTrasferimentoDimensione dei blocci di trasferimentoTrasferimento annullataTrasferimento della foto originaleTrasferimento alta definizione ( dimenzioni originali )Trasferimento alta definizioneTrasferire in un'album.Trasferimento verso PiwigoTrasferitoTrasferimentoTrasferimento della foto HDTrasferimento della foto ridottaTrasferimento della miniaturaUsare la previsualizzazione exifUsare l'originaleRidimenzionare l'originaleFoto dimenzioni webQuale è l'album di destinazione ?Quale è la categoria di destinazione ?Cosa fare per i file? (miniatura, dimenzioni per il Web, alta definizione)Cosa fare per le proprietà con più valori?(categorie, tag)Cosa fare per il livello di privasi?Cosa fare per le proprietà semplice? (titolo, commento, autore, data di creazione)BiancoChi può vedere l'immagine?Qui può vedere ?LarghezzaLavorare fuori conessioneSiSi, usare una riduzzione HD della foto originaleSi, usare una copia della foto originaleAvete selezionato %s fotoLe autorizzazioni associate al vostro conto non vi permettono di trasferire delle fotoamministratorialbumalbumappend (e mantenere l'attuale e aggiungere)categoriacategorieContattiniente da visualizzare - sconnessoerrorituttiè fallitofamigliariempire se vuoto (sostituisce solo le proprietà vuote di Piwigo)amiciimmagini in errore e non trasferiteimmagini trattateimmagini trasferiteil mio watermarknon fare nientesupLoader deve essere rilanciato per visualizzare la nuova lingua selezzionatafoto aggiunte alla selezionerimpiazzaresecondiper scegliere delle foto del vostro PCpLoader-1.6/locale/it_IT/pLoader.po0000644000175000017500000003366011371050033015322 0ustar ronronmsgid "" msgstr "" "Project-Id-Version: Piwigo pLoader\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-12-19 11:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: Karim AGREBI \n" "Language-Team: Piwigo team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Basepath: .\n" "X-Poedit-Language: Italian\n" "X-Poedit-Country: ITALY\n" "X-Poedit-SearchPath-0: C:/strawberry/perl/site/lib/Uploader/GUI\n" "X-Poedit-SearchPath-1: d:/pLoader/res\n" msgid "Select photos for upload" msgstr "Scegliere le foto da trasferire" msgid "JPEG files" msgstr "File JPEG" msgid "Default author" msgstr "Autore di default" msgid "Photo caption prefix" msgstr "Prefisso del titolo della foto" msgid "Site thumbnail size" msgstr "Dimensioni delle miniature" msgid "Site image width" msgstr "Larghezza dell'immagine" msgid "Site image height" msgstr "Altezza dell'immagine" msgid "Auto rotate image" msgstr "Rotazione automatica dell'immagine" msgid "Upload high (original size) " msgstr "Trasferimento alta definizione ( dimenzioni originali )" msgid "Upload high definition " msgstr "Trasferimento alta definizione" msgid "High definition" msgstr "Alta definizione" msgid "Yes" msgstr "Si" msgid "No" msgstr "No" msgid "Admin. username" msgstr "Login amministratore" msgid "Admin. password" msgstr "Password amministratore" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Annullare" msgid "Create date" msgstr "Data di creazione" msgid "Width" msgstr "Larghezza" msgid "Height" msgstr "Altezza" msgid "Orientation" msgstr "Orientamento" msgid "Shutter speed" msgstr "Velocità dell'otturatore" msgid "Aperture" msgstr "Apertura" msgid "Focal length" msgstr "Lunghezza della focale" msgid "Model" msgstr "Modello" msgid "Lens" msgstr "Ottica" msgid "Author" msgstr "Autore" msgid "Comment" msgstr "Commento" msgid "Chinese" msgstr "Cinese" msgid "Chinese simplified" msgstr "Cinese semplificato" msgid "Czech" msgstr "Ceco" msgid "Danish" msgstr "Danese" msgid "English" msgstr "Inglese" msgid "German" msgstr "Tedesco" msgid "Spanish" msgstr "Spagnolo" msgid "French" msgstr "Francese" msgid "Hungarian" msgstr "Ungherese" msgid "Italian" msgstr "Italiano" msgid "Japanese" msgstr "Giapponese" msgid "Dutch" msgstr "Olandese" msgid "Polish" msgstr "Polacco" msgid "Portuguese Brazil" msgstr "Portoghese Brasile" msgid "Portuguese Portugal" msgstr "Portoghese Portogallo" msgid "Russian" msgstr "Russo" msgid "Slovak" msgstr "Slovacco" msgid "Brasil" msgstr "Brasiliano" msgid "pLoader needs to be restarted to display the new selected language" msgstr "pLoader deve essere rilanciato per visualizzare la nuova lingua selezzionata" msgid "Piwigo categories" msgstr "Categorie in Piwigo" msgid "Photo properties" msgstr "Proprietà della foto" msgid "Tools" msgstr "Strumenti" msgid "Global settings" msgstr "Preferenze" msgid "Advanced" msgstr "Advanced" msgid "Transfert chunk size" msgstr "Dimensione dei blocci di trasferimento" msgid "General" msgstr "Generale" msgid "Resized" msgstr "Riduzione" msgid "Thumbnail" msgstr "Miniature" msgid "Preview" msgstr "Anteprima" msgid "Photo selection" msgstr "Foto selezionate" msgid "Language choice" msgstr "Scelta della lingua" msgid "Choose a language" msgstr "Scegliere una lingua" msgid "Upload to Piwigo" msgstr "Trasferimento verso Piwigo" msgid "Remove photo from selection" msgstr "Togliere la foto dalla selezione" msgid "Add photo to selection" msgstr "Aggiungere la foto alla selezione" msgid "Not connected" msgstr "Non connesso" msgid "Connection to" msgstr "Connessione a " msgid "failed" msgstr "è fallito" msgid "Piwigo login" msgstr "Conessione a Piwigo" msgid "Piwigo login error" msgstr "Errore di conessione a Piwigo" msgid "Please select a valid target category" msgstr "Selezionare un'altra categoria" msgid "Piwigo upload error" msgstr "Errore di trasferimento verso Piwigo" msgid "Category name" msgstr "Nome della categoria" msgid "Add new category" msgstr "Aggiungere una nuova categoria" msgid "New category" msgstr "Nuova categoria" msgid "Upload cancelled" msgstr "Trasferimento annullata" msgid "Image upload progress information" msgstr "Progressione del trasferimento delle immagini" msgid "Cancel upload" msgstr "Annullare il trasferimento" msgid "Piwigo upload information" msgstr "Informazioni sul trasferimento verso Piwigo" msgid "Processing" msgstr "Trattamento in corso" msgid "images processed" msgstr "immagini trattate" msgid "images uploaded" msgstr "immagini trasferite" msgid "images in errors and not uploaded" msgstr "immagini in errore e non trasferite" msgid "Duration" msgstr "Durata" msgid "seconds" msgstr "secondi" msgid "Categories" msgstr "Categorie" msgid "categories" msgstr "categorie" msgid "Categorie" msgstr "Categoria" msgid "categorie" msgstr "categoria" msgid "Album" msgstr "Album" msgid "Albums" msgstr "Album" msgid "album" msgstr "album" msgid "albums" msgstr "album" msgid "Photo caption" msgstr "Titolo della foto" msgid "File name" msgstr "Nome del file" msgid "Default photo caption" msgstr "Titolo di default" msgid "Resize site image" msgstr "Ridurre per il sito" msgid "Auto rotate" msgstr "Rotazione automatica" msgid "Upload high (original size)" msgstr "Trasferimento della foto originale" msgid "Site image jpeg quality" msgstr "Qualità jpeg della foto" msgid "Site image filter" msgstr "Filtro di riduzione" msgid "Site image blur" msgstr "Accentuare/Blur" msgid "Site image interlace" msgstr "Interlacciato" msgid "Site thumbnail jpeg quality" msgstr "Qualità jpeg delle miniature del sito" msgid "Photo selection thumbnail size" msgstr "Dimensioni delle miniature della selezione di foto" msgid "Photo selection thumbnail jpeg quality" msgstr "Qualità jpeg delle miniature della selezione di foto" msgid "Use exif preview when available" msgstr "Usare la previsualizzazione exif" msgid "Custom preview ratio" msgstr "Rapporto di previsualizzazione" msgid "Piwigo url" msgstr "Indirizzo del sito Piwigo" msgid "Connect" msgstr "Connettere" msgid "Work Offline" msgstr "Lavorare fuori conessione" msgid "Exit" msgstr "Uscire" msgid "empty - work Offline" msgstr "niente da visualizzare - sconnesso" msgid "None" msgstr "Nessuno" msgid "File path and name" msgstr "Directory e nome file" msgid "Prefix" msgstr "Prefisso" msgid "Prefix + rank number" msgstr "Prefisso + N° d'ordine" msgid "Rank number + prefix" msgstr "N° d'ordine + prefisso" msgid "Prefix + create date chrono" msgstr "Prefisso + chrono data di creazione" msgid "Create date chrono + prefix" msgstr "Chrono data di creazione + prefisso" msgid "Photo" msgstr "Foto" msgid "Image processing progress information" msgstr "Progressione del trattamento delle immagini" msgid "Cancel image processing" msgstr "Cancellare il trattamento delle immagini" msgid "Add new album" msgstr "Aggiungere un nuovo album" msgid "Album name" msgstr "Nome dell'album" msgid "New album" msgstr "Nuovo album" msgid "Refresh" msgstr "Aggiornare" msgid "Expand all" msgstr "Visualizzare tutto" msgid "Collapse all" msgstr "Ridurre tutto" msgid "Getting started" msgstr "Avviare" msgid "Properties" msgstr "Proprietà" msgid "Remove uploaded photo from selection" msgstr "Svuotare la selezione delle foto dopo il trasferimento" msgid "Activate watermark" msgstr "Attivare watermark" msgid "Activate watermark on high definition" msgstr "Attivare watermark sull'alta definizione" msgid "Text" msgstr "Testo" msgid "Text size" msgstr "Dimenzioni del testo" msgid "Color" msgstr "Colore" msgid "Position" msgstr "Posizione" msgid "Top margin" msgstr "Margine in alto" msgid "Left margin" msgstr "Margine a sinistra" msgid "White" msgstr "Bianco" msgid "Black" msgstr "Nero" msgid "Top" msgstr "Alto" msgid "Top left" msgstr "Alto a sinistra" msgid "Top right" msgstr "Alto a destra" msgid "Bottom" msgstr "Basso" msgid "Bottom left" msgstr "Basso a sinistra" msgid "Bottom right" msgstr "Basso a destra" msgid "Center" msgstr "Centro" msgid "Left" msgstr "Sinistra" msgid "Right" msgstr "Destra" msgid "my watermark" msgstr "il mio watermark" msgid "Show" msgstr "Visualizzare" msgid "All" msgstr "Tutto" msgid "Selected" msgstr "Selezionati" msgid "Not selected" msgstr "Non selezionati" msgid "Uploading" msgstr "Trasferimento" msgid "Uploading resized" msgstr "Trasferimento della foto ridotta" msgid "Uploading thumbnail" msgstr "Trasferimento della miniatura" msgid "Uploading high definition" msgstr "Trasferimento della foto HD" msgid "Checksum for" msgstr "Checksum di" msgid "Communication error with" msgstr "Errore di comunicazione con" msgid "Thumbnail image done for" msgstr "Miniatura effettuata per" msgid "HD image done for" msgstr "Immagine alta definizione effettuata per" msgid "Resized image done for" msgstr "Immagine ridotta effettuata per " msgid "Uploaded" msgstr "Trasferito" msgid "Preparing resized image for" msgstr "Preparare la foto ridotta di" msgid "Close" msgstr "Chiudere" msgid "on" msgstr "su" msgid "photos added to the selection" msgstr "foto aggiunte alla selezione" msgid "errors" msgstr "errori" msgid "Yes, use HD resized of the original photo" msgstr "Si, usare una riduzzione HD della foto originale" msgid "Yes, use a copy of the original photo" msgstr "Si, usare una copia della foto originale" msgid "HD image width" msgstr "Larggezza dell'immagine HD" msgid "HD image height" msgstr "Altezza dell'immagine HD" msgid "HD image jpeg quality" msgstr "Qualità jpeg dell'immagine HD" msgid "HD image filter" msgstr "Filtro di riduzzione dell'immagine HD" msgid "HD image blur" msgstr "Accentuazione/sfuocato dell'immagine HD" msgid "HD image interlace" msgstr "Intreciamento dell'immagine HD" msgid "nothing" msgstr "non fare niente" msgid "replace" msgstr "rimpiazzare" msgid "fill if empty (only replace properties currently empty in Piwigo)" msgstr "riempire se vuoto (sostituisce solo le proprietà vuote di Piwigo)" msgid "append (keep existing and add new)" msgstr "append (e mantenere l'attuale e aggiungere)" msgid "Do not ask me again" msgstr "Ricordare la risposta" msgid "A least one photo has already been added in the past." msgstr "Almeno una foto è stata aggiunta in passato." msgid "What shall we do with files? (thumbnail, resized, high resolution)" msgstr "Cosa fare per i file? (miniatura, dimenzioni per il Web, alta definizione)" msgid "What shall we do with single value properties?(caption, comment, author, create date)" msgstr "Cosa fare per le proprietà semplice? (titolo, commento, autore, data di creazione)" msgid "What shall we do with multiple values properties? (categories, tags)" msgstr "Cosa fare per le proprietà con più valori?(categorie, tag)" msgid "Photo update management" msgstr "Gestione dell'aggiornamento delle foto" msgid "Who can see the photo?" msgstr "Chi può vedere l'immagine?" msgid "everybody" msgstr "tutti" msgid "contacts" msgstr "Contatti" msgid "friends" msgstr "amici" msgid "family" msgstr "famiglia" msgid "admins" msgstr "amministratori" msgid "What shall we do with privacy level?" msgstr "Cosa fare per il livello di privasi?" msgid "Thumbnail and caption" msgstr "Miniatura e il titolo" msgid "Property list" msgstr "Elenco delle proprietà" msgid "How photo selection is displayed" msgstr "Come vengono visualizzate le foto selezionate" msgid "Use original" msgstr "Usare l'originale" msgid "Use resized original" msgstr "Ridimenzionare l'originale" msgid "Web sized" msgstr "Foto dimenzioni web" msgid "Do you want to create" msgstr "Volete creare" msgid "Transfer" msgstr "Trasferimento" msgid "Click links below to start using pLoader." msgstr "Cliccare sul link per cominciare con pLoader." msgid "Add a new album." msgstr "Creare un nuovo album." msgid "Add photos to the selection." msgstr "Aggiungere delle immagini alla selezione." msgid "Upload the photo selection into your album." msgstr "Trasferire in un'album." msgid "Photo size" msgstr "Formato delle foto" msgid "Maximum width" msgstr "Larghezza massima" msgid "Maximum height" msgstr "Altezza massima" msgid "What is the destination category?" msgstr "Quale è la categoria di destinazione ?" msgid "What is the destination album?" msgstr "Quale è l'album di destinazione ?" msgid "Caption" msgstr "Titolo" msgid "Who can see?" msgstr "Qui può vedere ?" msgid "You have selected a batch of %s photos" msgstr "Avete selezionato %s foto" msgid "Changes apply to the whole batch" msgstr "Le modifiche si applicano a tutte le foto selezionate" msgid "Drag photos here to get started" msgstr "Depositate le foto qui per inizziare" msgid "Or click" msgstr "O cliccare qui" msgid "to choose files on your computer" msgstr "per scegliere delle foto del vostro PC" msgid "Add photos" msgstr "Aggiungere delle foto" msgid "Remove selected photos" msgstr "Ritirare le foto selezzionate" msgid "Default caption pattern" msgstr "Formatodi default per il titolo " msgid "Default caption" msgstr "titolo di default" msgid "Caption + rank number" msgstr "Titolo + N° d'ordinamento" msgid "Rank number + caption" msgstr "N° d'ordinamento + Titolo" msgid "Caption + create date chrono" msgstr "Titolo + Crono data di creazione" msgid "Create date chrono + caption" msgstr "Crono data di creazione + Titolo" msgid "Create date chrono + rank" msgstr "Crono data di creazione + N° d'ordinamento" msgid "Rank + create date chrono" msgstr "N° d'ordinamento + Crono data di creazione" msgid "Preferences" msgstr "Preferenze" msgid "Selection" msgstr "Selelzione" msgid "Your user account is not granted to upload photos" msgstr "Le autorizzazioni associate al vostro conto non vi permettono di trasferire delle foto" msgid "Add photos for resizing and uploading" msgstr "Aggiungere delle foto da ridimenzionare e trasferire" msgid "Remove selected photos. Original files are not deleted" msgstr "Togliere le foto selezionate. Gli originali non saranno cancellati" msgid "Change global settings" msgstr "Cambiare i settaggi" msgid "Rectangular" msgstr "Rettangolare" msgid "Square" msgstr "Quadrata" pLoader-1.6/res/mnu_collapseall.png0000644000175000017500000000173311210762027015577 0ustar ronronPNG  IHDR(-SsRGBgAMA a cHRMz&u0`:pQ<PLTEE|;tMIDAT(SmA D"j{JtƷLH|Oe΅y B 00L 2z7D T_6atIENDB`pLoader-1.6/res/tb_add.png0000644000175000017500000000113111067221304013630 0ustar ronronPNG  IHDR szzsBIT|dIDATX햱kAH$D+AX?B[CF+AA\aai#v"B,LD"hlryMv݋Zx ;70cDU۳z?v{:d֕3vO"ae3No3A d홆9{!K|=Swz"(-g˙Z|w͛ܐOK1ђ<'!${V3K8̈́ N΁u}'l('Aq)m/Ǒp0VLq &o3 s R7~1j>,$jt mPcT&tlV%~~3# jiw] (0[@ 4w$H^wIH|4N rZc'2Se_T0/]X&΍-OV +0JOhC3o? WLvIENDB`pLoader-1.6/res/images.png0000644000175000017500000000122511067221304013664 0ustar ronronPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDAT8˅kPW V,톕"es[СkL݊ 6MV&bQ+ QM Nڏ4sNa9{rI7#bsRԎp ςXa2*6~1L:GZ:_7a|aUEwl|,.,2cuyA+oaCLMXxx>En5P!k.J1|))e98' ވ%Zko+# ϧ k,GA$?ʚ ǹ}pO0;_t*ęE| J+Pw2K=E7׿˯o* e|v`H,Ј ҇E o;ȏP,7$xiahZ~MH-|3˜~R.̶X6S.4pe B]C:;r']{]ki[t29DO P]t{PFP%M}IikS!IENDB`pLoader-1.6/res/favicon.ico0000644000175000017500000000257611067221304014044 0ustar ronronh( 22<<@@BBjjvvxx~~yREHV{4")>t/X6 #8iQW\~j *}@7edYb KTg,fm_!G[+P^M.ֻa-zGNtvX70p4:ZuSrQvvIENDB`pLoader-1.6/res/mnu_refresh.png0000644000175000017500000000162011210043034014723 0ustar ronronPNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<"IDAT8mRMlTe={3m[ 3јF7`XDa M ta1L%47!«qВF;̴Yp=''\bfHe4jՄ'¸.ؖp|t&E@O*}]gQ(V02v|g'-lzW6ÌĈdǂЉ  3EW Ŋ 5>.W f43=gOk40ĭCձž _M^l8l?3]X1/23ǕgƧg^hڷuS( wD-HU/<A2e^ۏ^,}?,az  ,Hc$UgnSui&vn{'v>Eq4Akw_?߼''k'W%߼[0j>AX-/?ԩT=eYcJ奎Go@W!'$_ԓSln\{&?3 DV%r=?JeFmXv@x\qqah=Ѿ2;}З|9r-k5tT2>hMA҄ǡ̖MD, z=*];[x 8wyIuI1MN<-I7, #?[FՕD(̗ˣRmcer-0{ W1oR ]!PՑl.UvjeIENDB`pLoader-1.6/res/tree_folder.png0000644000175000017500000000102211071767316014721 0ustar ronronPNG  IHDRaIDATxcd(F `@F泳Lc˜KJ@@olvE Z v-K@`4j&ư[߿` s O0oCh}CP2 s-g<9Yh( ֬PrcX6EᅤñMr/ t K b'|+c<:I翕٣Gy¼]uEQ"v]wHR0 x^R)ɤ7n7oV SoXEQ>T cΝؘ8( 4M!1D"]ֳB[oU-(pGKp/V!DEm㠹s TS MӖ@UU!i À뺕灁7ɜS%S@'˂8PU|RJ]חSB0.8研"L"LfZe`B3CCC" -#4"BJsp!R3)˲˲|Pqga0 |Re!sض;vPEQ,\IJ---Z(B6렔BUU!N:Uojs^ֆ[1VqmB!a-JN-7|377VAWWzj0P[9۶qy˲et]0<߶m0 4N< ])d}A)=3NK)æiHssi&Ŷm(R`xqxx؋/L[='.)G(mHӘccclzzy饗L*l޻w/49ŊOtsՕj8Ϋ_}-[x1qpΡ( "F{W*T}>+ U&!DY`j%1Jb[!!PUiBJJS0:: !Lӄ녦id@^QEi7M3.\ׅ8aB!pq5qGJI*O?1!zu|>|gi92\EGG900#G6vwwe#Gh333of6]‪r8~84MB\ Pe aYRzk}4\x^O$"R7 uL !0;;;D:`!a||b}Yi*(${EQP__Vh>dp]{GJFKq6}bnnN[_O>) CCCw655mmmFkk+BUUD"?x&i|>UUqܹ뺻k,eYJ0Tggg/_ Á۷nF)ݴgöm\pA\r3g XKKsm:tP^xRĉ$I @F__@+}6,1Uε_VA HX!*uyu5,.G?jž_Beq\3C_,z@i {JLV7P;0fmU#HWciN2P6&4=r5 VR<%3 mcF:kX Oc]dJq@_b0D~w-I8nL7BV ̓eJNuŻ OXx/^UiyM6ljk}w^PYA6zz1@uAq[tsc ~J-*Z0zXK4(PC^qNq&/SWuUGEtT<Y1KbW*xeyDc]{APzd a)2Msm'ˇ_?UezὡOl4R1>ٻO?uɵl\cqɷ};mxebb7g^]O70/`/IENDB`pLoader-1.6/res/picture_edit.png0000644000175000017500000000147211326553206015112 0ustar ronronPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8}KhgO2$ I("mTA7U"KE]7EDp [kWPqB`MZ$ )sg2>!jPrx_qƓRgK-M> `H%vo8BIkw_f}i۶#~)JbLzY$Rtg/] Rݙ!BC Mqlk_"# ۦe jjz\ |5eP)A2mS 1B"xO% dD,dL'?U^@9CrLŘzr)ںIz$wf(d3p©Mԛ{䨪ְELTi]kqK,YL2CHSWOQdlWS۾?wJ07@S^ef;S$/ zZf.ܥ_㍞G"dUᴷeCR  @a>˚.oLg|ǣ=vhy'H9+]@tx{w5EdHgz{X+ҕ"l&$|3vM C.!\7ĪC)HguwG!vk'^>'GZϖbC/`j\CZLߝd_̸ u<}صݞ6֬ȠLae|b߶ on;IENDB`pLoader-1.6/res/mnu_preview.png0000644000175000017500000000115111210043034014745 0ustar ronronPNG  IHDRabKGD4g pHYs  tIME %/IDAT8˝MkQ;$MfJR ]hE Uw&o$ADtYwUM;AT(VP5G'M23EHIBRgw=GvM;N!#Lv B]wf2f_Kдkw߾J9zjmŋi+dk&nߌĢ5(4]#Ns ^R>q>sƕ]$ ORpsӶQ %#6Kot Kz Xd4,U~_e% EJvK0n \$[5ܪ-]pi-Nlc5ߣ-F}=kr+Bt4M¹|'+7*|\YT[z,?",+| 0p8TNVdT앬/dߧ>xtXtk뗧d3 ;e+D, X==k ܴ봅;)bn4w=)_*6̼}W~[ -+3-rJ= .?_)vMf&Sl_rg>#0 .lU6LLtb&uk8--NCZ`ĚX~[{SnC:Ѹ=1g֝s "8 !-Xs״es쮉+PQk*]ʲ5'0idOGo#K{?t;JM?P^k/:c3U㿶ӝh5<?CقoNV\:<^1bkX,U-=k`^<&_=meunc ]_s_j:~n %+ }GJw4ڵ_VW/*:]N@U#QQcςg1J@E?{3 `(|~`%5ߐ N5!sHnax-]g\Xm[ۛgݶX玍5liY7hލ5;!1ؙ} $=m8 Q@*5PՁ ?\W~x0[f_p*tg TbAJ^7``PP{;#$䋑P+K_Ə$q\?GB;9wNah~ @ $FZaRKIh$Q:Eya&.] c)MalTfπ+PPoԆ1πg$sH>O m UIQ#:c  022i 4AzGj(VW_?T0R qP554Kgde2&l˂CD3CnPh'Ӵfg<9ioご|~IENDB`pLoader-1.6/res/piwigo_logo.png0000644000175000017500000003546011207320662014750 0ustar ronronPNG  IHDRduYgAMA7tEXtSoftwareAdobe ImageReadyqe<:IDATx] xUE }GQqí]uvqf[֖iqADA@PQI ,dIQoKQ4徺֭luꔦ^JsA5WL.Oؾ'͢I]S.ɩIb޹9 v Ohߛ *]{Vyu8)_̽k8 }Cė.#~r5]`ٱWla.f&=-?(_D")zcW_@߫ ]x).m^i3&;ĶBw\"Yoy=T*6asӺƵ h]$A#0MtT|B}"W~S*ꛄgnW&|4 jDf|XB!C%/cch)]1BPKNh6|{NUV8mʗN3M-r2Z'hz s%֥2~; aw _v8^k-Q@OCLs '[/U4; ?>A gp{ip+.e)"v5?q]IAiU!fEfor)"!k̺ خAfue l4Kς)Yi]#`EذLSO))m!nCookqdh0Tn &p{`aM7Ą!⚙CmBrq X^./60'1 xI"jy1,plMz?᲋ƻ9`_ o_q]!An0U7ހ`cX |E7Kj^\FlQn4Bkp$^a!]Ӆ4sl4j c1Jcl6[ vϘW>_҃AgduClL:,uDeA20PS1~m{riW/"vP vD t[xstwR'xdm uO}pkkM`}c_Z$lr:TX Uڃ@ Z[D$94w׷5!? w详ov{Smh)2y* *ӦnA2$ݩ v ôun\ =Bv-#A H„II1(sV[[K^uﯮqjMj)og ˘&L"`̓Z1CwxDdf LwL=^&nO\ohn:wKہ fWs311_q%~ƹ%{<.A 2kn= hvː4%.u(?&D4- blѲ/ #6\c/}è*mw%mNc#2e#~dLBnZđ4bE5PZ`A'Ea$ 73{J}M]=)S@@kF{ srs~Hb΄ֲ #Aw&V޽;O *0ab/}dÊ)Ls'izGĢkWڙgA?FHFEPrtd;<7j*PϞSOmR;I0MZw1T)\XVR9I5I^Bki"!*_vRX`~+:'UNlst$hekjrۛI B 5A :|71L.3phf*|=%A}́@njН͌c|:N hrFj ?׳  %tv;>aD!6^;Z]8E$zcj6{[RM醢i #)]8!tڼm/%v[?"vb01~ڱaSmB0549j3'\A\cs ф7)[`S.:SKvtDH B+>fJtڛ6]$َYP.옰$Z-50t5@@>#Lr%#A CfZ͵'cYsA%hw.qT頰 ;(,m(> cV I?#(|UUƆf= z<%%C~Ďk|Օ555\_ I{bAp;26=z-2xcUUUCCC4LLLCZWexvA#t9niYͅ(LLAcG==X55K m۴c RzpzBӲ"qٝ&'haxTd!(Qma1aN 8hYݣ.CBY (E~fM*+ ⱕH2"6qQj;ۭ@yf 6#fQT4139vè0`M7%I\@Hg4r\761 -}~E!= 3Сn:qb_>n1_deɰ}a&kw S̄)( 30d&vKT'bks?rmXʀ} UyxΠT `Ȍ QYZZzW@@<Ӹx}u4 0#}"F:"N*p>nW>w͵?=ZhŊѣG_tC/춝l(K^p?'|Y eԴ`V סvKA/\𫯾;-- Λ>}*@Pnr:j;N7mK/DŽ *k#4&vn\vRvi08B`۶m_ ΀;n&@,']v/S, N֣DMZbbblL5:qJ@j ȫ馛B =6މ}3݅M^1 Sb|> ћ3ӦM{Ez^xCA@qȑlW reIIɡC @HH7 4n !-3؅ۮtAjR?{a?p~1Cƻ">щ=zܳgO(̯rݰ-[h"0?iY_߹⁩T'zM5f$o+OSO="I&m߾=!!>њ2>LKdr8ݺ7399yذaP~_mٲ=MTj-7T_Wj%{a`xdWb"L]{eћёb :gg5ϗD>u-K(> 12퐥mZNr56vʢXK`OKRVEEs6}fьHu^U%̜*+ ҔstfKK3c brDe61t@+_?A {9s`0hBnrۧ6=`4wj!RMQ`yȂ3hoP# ,w1RJ wx8:]>( ^!q<9\E- ^7`jڒ۷EAhkKnsQ`pAs^kPתi ʊ8B :nfߡbtÇsssOD#?nݺ$+*V<OZZ ~E39^AQ-ǽtA* # ot( YK|S%##PuF&{8xHvuiF[Ln^&Lb[Z+r⮉E>L[~dx(:_ohq(X8q`F EEE> )fΜy饗riƤrƛLw}w߾}#e!"GkM.=^lyj:kځ_}e//]CixPk׮g}w-..Mת½f\>쳡|Y7,X ǏUV7gZ^7ff0,8z^\>gO1}k8X\e1HJJ'`йJ)MHD"̓N: 7J[0pA9,_Fٽ{wUzHԑad ES,[3`LƐ>7da'oJ_~`̘9쟔tժU] ycÆŋGp]w+?6>6 P[ Ai"XںbC$JR!12T 5~þt>op~AQyʕiWP/ɶ1Rdo+$>MJ$]R AuF۷%` `,`Cӟ4tPejXԙf% }21wn;n/`f8{wiL`ի0F%ZA_1;3𐈅 < \/m(Rq4IX@a̘1{ "wMR@t7mڴ6k,(( Fc>AUزef@ r)TcEA$ZBm aÆٳg<5tӌSf%+WVsNW8{EZutu$do<GU,OUQe` p>9,,p5۷qF &mD}?a!U)fL89fJp"`) _ `}ǎ s9n{_xn ͽ{6 דּDkcK~ϿGM۝`2][Z^3'u6: $VZ:esNl`Bk<3-X~oBX/D 9qٲeSNևAE SO=νC:T {PD0Г3fYxZCk/-5_s{bt C٢O F415HϞEK57 ͕v9G/? z|,)Ո}T=pyAq_^Ra{ٮpes( ArIDCXACB(,rs\,(\P۷[rrNУYT46]̬,)2hPQ]_0t6@ 0`w`v.^vl>(O4 BSQ.†O%{C{0ƍ=VL|*S0ЩJa͔)Sⴅ70 $c(qn,um2f;}YݺA2h#~m%ބRgXC51 NpAfn1 a"t0aTsY*5㊸B|p,)Po޼b J v30``$*=90[;Ug}:9jꐼ߱$p|}׮6~G)):TMOòF7x#Qp s1bLhdCFk S.)ͣ*o<qI3g\pCaU$G > 댪,**v:9;;&c-bo߾Æ [j dyZ}=6}'&bit" }jiٮ&hcM^/,j{[.0rّڥTwЦn ) ?A0\$7 חf2E$/``Rg~tޝ(ҪO`R@װ!ъ6c:;F /)8SYY,k6u+@nРAUUU4GЇhYt+"\)//@D#j`tJ3g\ĩD[,1x{u4|o/+D=_:wHj: \LJr (۰H,I2z1afAP!Tfԑ Yh4Lz3D/<K(Yeر0 |:tl ⌋]vV!0 a&l"ܐ6< Az1@}2p3MHF+h̥"5">(+x(GpiGFc.'iS<%p$} .p($z:.2liG\f0U)obyaT5@`V]3fXt:ذ1oNw<|C"0Cc`*j|ifƭ[z(s9yyyh9Z`L XL@,o Y([[xYF wô kqBа^o3w8p`Ǔ> js~2ar-&Hw bdmӹ"n:Ga?WѭZ5CgeVX2)03'd1𧼝5k8>@_^uց"Z)aUc,q peK7eL-bE5CԔ 2&ܚBeOFgq?eCSiy&?Ƀ(}r:J (Y9bae-h"C ,A|v1 KP-Eh'\Ÿ 5k8T{XaĐ!Cd "P8cEw@H@eec24]U{ z3wVs{̌%kj0qIg1OUz"ZCVqj(6-UĨO U_8Y? c h\h&+u')pw~}d*D|wUx6E ;4Aqh3-ˆCY3{0cd؎K bu5EZ] #r]lFr(QI@óLmRvÀ0-0dqg}hjX b?T)@qiBf˧sIj(5K 'qfY|{Ȋ @PYy^u{F'Kaצj4+>y}a +"UI'4n8G~%;w,((HÇ[0~-F-͛wRn> 7q&u )t T pW(o<Ӓ,s_|ZFK`}_\T돳\p6.|Ә6M[*fBV~x(jiHR9=r @-[&S0,=e 5*YbŪUT9 `0,Hv5܁m."7aG,Ytd[ tā>_}qqwYN &ZzziPI$Ue1t5 ë*G^7TحpYgeeeI _y.E2N&dggcVH[J[a Ov){衇"FZ7Nͅv/Vf#18cݾ]5%(iÆ}xo !d^sUj AXݲ 0'4!\ꪫónVmV!]7ڵ˲Jk1fjؒ7n5ǡ kƾ}ږ-b6W+* l3<길p*IU_ٴi`LD'aCwڪ@G4V{/Ww!o6hp.b:aqb}0ؽSwNeEEm;?]dk}wL}ĸgDXZZZD|" !CI!###|ԩkկc"[n?>'Yr BV )S>P t͜k߮ټ󇟐!Р/_}3GX8MHNfԏhR2u 4rȈuawRX>W^i95a8sϬY:tfN(W^y%yQQ_Hֶ̖h֍x-zݸqsf>l{u# ז,1gV_޽zkO~~fR @0ZGA.裏"3d(ׅQM(ƍ7lcPbJsD۸$(WG~ӦjIdFi(7Hee…K/mszG_i-SE~h~ ;ag8/~1r.\*cSOq]"1Z'NHSԒO5_3gJ^+P$///yUO>*c5q8>#7t\eGN?rj67yfٯbaJj8d)D %{}I99ٙ99TI7GP)B`TR0JP--EČ0Kf*7dȐpiK{Xyyy`69`Ç3\*ZeK,ZOmOR[n(``J [ KIm|xF"GeYYY\ŎFVyő#Q(׮k{=3G`h@DZ%^ٟdIzd~Kd c֢vQQ P&q.>W0BcƌYnjR๧vZzz:X^3@XL4i˖-K'2% `D5d m`r}"<&{?a jWA?ChO tA/ڵK>NM. m8/HyŜcSO ?t7Cunnjw@Kz;Vd`-T?~Mu@f qZ<e,*! m9Zfd#?eʔ^zIJR wygG Θ1^4'B ǙqdEB͗iG _NbY_P.))'T`IYdeR3BƣKm[Cqe`fKKءl OcLY9''59XwEbŊ[b8h M;v,4T:W 4`1w , vxh ؿ_۾=&3==_?Wv4UBWT[[#511=9xB_55HU)(+cEWO =]"FmԮ‰ %S- 5-bYJSFFCET%sbْC薨p1)5tx:p@ee K޽S2eu]/J_aG\WA&ag?P} 8;xP+/ԠYNƞB @^RSɉnwJb"GU)"! W~EkfUpry,Z,`T0QT01APrF"#aK2yĩBQo19ۅ,ZrqmCΝO@Gژ`_ #oiIbȃڝƔ! [".y- 4_'xh>lzjoU0?tZy oÆ z܌mSPFt(k'KK+F_ׂ?OP--~i& ޳>{饗–4m.{gǎA!/~ޘ⮻9s ka FӬD-󼓨\VScHK. Y`:`H0x:whQEL;rlu6&.Ϟ={ɓ'ˣ+qiOD4:EfzTv\AU]ҍڼd!  \X%D0T3`* T|pȐ!2u3W^y%?╕{>O?[oPw.|Qܲe d]+\:!|Yi=x(Q_sρYs7x0=ymM뿢? |im۠h0zttN:s 'E߿q`{/q n2{ax(C!h[vX=.\H5̛7oСhXXLaCϞ=< 8K!`x Pgq%O‰LB/$e{xPBn0`޻nݺwuasd A:4t`G;1T2}|r"(`ŽcFLB*T7pDP'qŋqx2)KБ:@P"݇[oAį],4De>N@JdF黑 lA~8$crEÆeޙNJ"wF p~N(.(QpP],"WrWց1`B'V~V0˹A % lxOZeop'h6DZT+W5kbƍ^?jԨ;w㡲̕ qqҤIr@_mWઝtIh3^_z%/E%r.Dc`O::_|jqP֭!pjh*YEc }у>1f gqzI E-n3bt%ЀQ>.B C¸2Xf3v7cГTij _ ̙ۙ @20GІ &r͆6 @/ pFF8裏M%wuA+w dI ތ;[)fzȥm8g1 [\ A8BSՑdC`o=Ǔۄ`Ck̹l47Aե0yh ~ˆbM=Җ|W_>΄j<|;Q[zwߍe ⨬Ԇlk'P@h PE}{:>ub伲 1฀&׬Y' Sf29کRisDvOG`2`Ax] B\AUhQlte8 ag<$R^O2j`VBO>c,H0$hRY 9mM:_SnS%`erq!T&$Ks,ڱR3QwHĿ#; A1 icpdh2qLf.DRҩMB8fCG<1keThɊ-CV;Z<,2{|͈18Lpg>ZPSWy;E&#ʞ˓ ߛ_3uE[qzrcS iGkD́0zv(Ja-.[.$ihurz<ʪ*~+*Gw ":l&HW Enf]v\>}ײrz Z #=n*6.eO9GFĕ5 "(Y<)"=mXRlVUVN.UqUX2ZIB&%HAUk(J^L+Cij(l X_b+MDþ;wvԫJ Ak! 8O'D䏅NDQl>sU12ٻcp k/Lcrh&Vbnz)OY!lj?}矪Kc{ZIENDB`pLoader-1.6/res/tb_getting_started.png0000644000175000017500000000256211207320662016303 0ustar ronronPNG  IHDR szzsBIT|d)IDATXݗYlUE3su+t!JhC)[ B"$ 'B]xA,mH/H)EBz+]o{瞙%miKwofswkuYMYh×3/gTs rz_ol-2(ɦOkVwtcl \L5xh{qT\B6.pT߾~/88P''Ӎx';h 3%Kx5* ^t1J&Ko BBspUɎEu%5M\5GHRBvUx$!^IU}HL~tKW; OϘ!=`SNBI3-$(y:gM8vtOU^|-q!`t Kyu:i(؎+2'Ou\RMx5^k ɅDgqPæR\3Du'}&"#C̞[tLXkT6ZRȚ{)Hw:5CV3oO2rX@qhl 3@Gl ZV 5Tzj-1J(K1rhBRq .<98+e74!ÊrvnǢxK n#c07A@U{dT_͖J8 涎0/"h[[n㶼<!^bΑ]Vi碋p)9QIENDB`pLoader-1.6/res/tb_remove.png0000644000175000017500000000047511067221304014407 0ustar ronronPNG  IHDR szzsBIT|dIDATX!NCA}k8 p pE3 HȈRҤo+7$I$g_>~r }绋ugv.^N@)5Ng= ^HKc/Jj{kT퓦{5Sd L07-Mj%/^^g˶o^UFCj.a&c?pb>RUf/I$I2odIENDB`pLoader-1.6/res/tree_pwg.png0000644000175000017500000000132411071767316014250 0ustar ronronPNG  IHDRaIDATxuSJa=֙,ƭZ uaRA|o|@AĊq bD\BLL2ϟk?2dOHöG\( 4 SBxm~{!|2@!<:knBeI ~?PWWb3& W(TJr33 LMAdYɪ i&Dz cG͞DlJI=$h~HSbh|p< 68>zc#lBZ]XhE-ΊMJdՅag2><\^XpWTKKP C:2̈́R DTVbgq&t¤kk2t:~ 2:J @'g'WWk0,n6Cqw qOw7BHofr'Duh"cqr:(`vv2,[WWȳr4"011Ntwwӊ@lpꍍ%qݞ^__bJrKҲu=8>iVohh ˥$HAVQdeTȀU32Z W"pcnssHImmml{Ja=9[WU F`a8m;g>!¹nIA4Y=lӆcy$cW_T9Ra NVIotS_IENDB`pLoader-1.6/res/mnu_folder_new.png0000644000175000017500000000117311210043034015414 0ustar ronronPNG  IHDRabKGDC pHYs B(xtIME UO-IDAT8˥=hSaޖ{SI۴$ V\JEAM]AP['qpE.@%-A-Bh!?!!AŇ܍L&s5hkU_z>MP\g/[}C(˧=}$?  il ci1 l22v\ޛБl*gH֡(UmSk繼Pa3. rf_>cvMl/~p0Urs0~d4Ydi1S(e`6H<%A4jF')εbm;M  T -v[7H0t]|TtZ|}OT#[mm:%b@VXF"R AbH 0"duE\6%,V4_=EP ԅ0Z`={QmAP pkk/Ggs]H"/\7ᚩIENDB`pLoader-1.6/res/mnu_properties.png0000644000175000017500000000072011210043034015461 0ustar ronronPNG  IHDRabKGD pHYs  tIME  +T]IDAT8˭jP l"ނfuء-8(q%.]tiQpNDdМ)v1}qAG%rE"糈d0M3%Q~¥Dz׍j5z^u:JR r}Vv5Zk`:bfneYXVjWwpθX,<A$v{sN-fb1FA0$ C!Zm6& B\.|>RJ;pza4$h\..v-4))? ``0x}+ڶm1$IENDB`pLoader-1.6/res/mnu_expandall.png0000644000175000017500000000175311210762027015256 0ustar ronronPNG  IHDR(-SsRGBgAMA a cHRMz&u0`:pQ<PLTEFz]IDAT(SmQ C+nn? ~<r 4,fC#!8f`)lr8SR )T{๸Ȉxp|*IENDB`pLoader-1.6/res/nb_information.png0000644000175000017500000000141211067221304015421 0ustar ronronPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDAT8˥kW?wLdL&1 6Ѩ(hR,M!R;TA.\tm\ >VtZ΢043$BH|=/_>8U}T!su4-WNV8 (wOo^uŕr#ɞF֮`!r pzyeHnVZԜგ[C*³2??\S +K;EСzrc%5*cb]3_槻i4|vQ @hԎdÅ"@IzSlՒ,Ѿ1AֆFޟXq AǏd'bβE.r`o+)ȶ6P)G!wGCqnfG SJy8ux8q8+g~jnBs14({^&xqXxXƘ0 `~Mqrd;;?ln]-G "8:Z &V#_M_G_8T-y/LZOr_wnYf .m[/-q_1rdߪr^LJ&KӼ~-<]0(Œ1n+iU ' 4`)7 r珁s?w ?{Y!IENDB`pLoader-1.6/res/tb_i18n.png0000644000175000017500000000431311172102066013664 0ustar ronronPNG  IHDR szzsBIT|dIDATX[ls]kc8vML.`&A ) R*Z*REj-I[ZZ%NR$b!1qww.ga&*jzO9:3g{SLM轊\IYNBB9Uuhu#-u ^NII brr$aN2ayV%m;<'/hk{(Z⣕(|GNa|ڤ}+b;.dGѝ)Zע*B0:?,9pqsz)@GvK,(0,]UPUEU(OXjm#8iRJ*+˸a$ehk{(co񋸦| cyt1lڨl//9DU˩MUJr9 aOf];o}@~[B,<}):;5|^߇(xk45F|>;>h供\(B)}U HxuM#Wƹyc#ãY,[۸B;ݓ9M64.?CU*kmr$y[!Q+8.B‚ҲgeRVײ=T.JR ׏мWʍ}EIF#6Hu*b3 XBb iKL!$U^Bu})Q?7{!B[Vs~(R骠*Plf)CKdlV( >$Ä HCH9xi)};RJlƶmTUAE29#?[0ΞːhXBrk1ԓ'1,A޴ɛ6)Sn|4,k?% Mg&}U;\Tyri7u kY)_+.qi铞^ԥ$c? 9uzRri\TNSPDq}gi2==âd%ac"=ޙ  Cyk[Q?gPQ,<`>y ^E[_KK8,K-Ew,LNz^f c:θIM2Ʈ z3333t&C8p3Yr  à<{'١CCer@m^4|"&e0B~]%Zd9.`4蘦ɅW4;#epxiYC,?~" J `C '>ZB"Xm$?H{4=/hA8> UW;5д}^]Yd"#D OX/La=}c/2Cg`G0*'>~gϫƂNz$} ǃZ ;SBKym/Wnļ14z]C4#.@)l=۫D v"~SbTHw[LH9wb\gBIw(,E+Msw&`6]໤vT"YKQ[(o6Ll*4MA;(r_!Z"@WMte뤶FpVC< eP !fJn5IşehM=Kx7!H[47v6 TjUCiȱV$V>&d%ױ4lcym wd]ZN&c KSغdr+@/r(ϙ_.(K湅{ zZs(.qim[XUҍ??%f~3s{~OqLJ^B~ e(w3srFIENDB`pLoader-1.6/src/pLoader.exe.manifest0000644000175000017500000000134211067221304015605 0ustar ronron pLoader pLoader-1.6/src/ploader.pl0000644000175000017500000000545611353211553013707 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ use strict; use File::Spec; use Wx; use Class::Accessor::Fast; use Uploader::GUI::wxApp; use Uploader::GUI::Frame; use Uploader::GUI::Layout::GlobalSettings; use Uploader::GUI::Layout::Progress; use Uploader::GUI::Layout::Login; use Uploader::GUI::Layout::Reupload; use Uploader::GUI::Layout::PhotoProperties; use Uploader::GUI::Layout::PhotoPropertiesCategoriesTags; use Uploader::GUI::Layout::PhotoPropertiesExif; use Uploader::GUI::Layout::DestinationCategory; use JSON; use Wx::Locale qw/:default/; use Data::Dumper; use File::HomeDir; $SIG{__DIE__} = \&OnDieHandler; eval { my $app = Uploader::GUI::wxApp->new( { root_dir => $ENV{PLOADER_ROOT}||'..', resource_dir => 'res', locale_dir => 'locale', argv => [ grep { -f $_ } @ARGV ], } ); $app->SetFrame( Uploader::GUI::Frame->new( { title => sprintf("pLoader - Piwigo uploader %s - [%s]", $app->version, $app->site_url), pwg => $app->pwg, imagelist => $app->imagelist, imageviewer_index => $app->imageviewerIndex, frameLayout => $app->frameLayout, } ) ); $app->MainLoop(); }; sub OnDieHandler { my ( $exception ) = @_; # if triggered in eval # return if $^S; print $exception; } 1; pLoader-1.6/src/properties.ini0000644000175000017500000000146511355130420014610 0ustar ronronthumbnail_size => 120, thumbnail_quality => 90, wx_thumbnail_size => 100, wx_thumbnail_quality => 90, resize_w => 640, resize_h => 480, resize_filter => 'Lanczos', resize_blur => 0.9, resize_quality => 95, resize_interlace => 'Line', auto_rotate => 1, upload_hd => 'No', hd_filter => 'Lanczos', hd_blur => 0.9, hd_quality => 95, hd_w => 1600, hd_h => 1200, hd_interlace => 'Line', remove_uploaded_from_selection => 1, create_resized => 1, default_caption_pattern => 'File name', default_caption => gettext('Photo '), watermark_text => gettext("my watermark"), watermark_text_size => 12, watermark_position => 'Center', watermark_y => 10, watermark_x => 10, watermark_color => 'White', pLoader-1.6/src/pLoader.ini0000644000175000017500000000021411067221304013773 0ustar ronron[ { site_url => 'http://localhost', site_username => 'username', site_password => 'password', } ]pLoader-1.6/src/Uploader/0000755000175000017500000000000011377742432013500 5ustar ronronpLoader-1.6/src/Uploader/Object2.pm0000644000175000017500000000747011330151201015307 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::Object2; use strict; use Data::Dumper; use base qw/ Class::Accessor::Fast /; __PACKAGE__->mk_accessors( qw/ accessors frame_callbacks / ); # Set control values with accessor sub SetControlValues { my ( $self ) = @_; my $accessors = $self->accessors; # accessor_name => [ sub {}, control_id ] map { my $control_id = $_; $self->SetControlValue($control_id); } keys %$accessors; } sub GetControlValue { my( $self, $control_id ) = @_; my $ctrl = $self->FindWindow($control_id) ; my $accessor = $self->accessors->{$control_id}; # to execute the right method my $method = { 'Wx::TextCtrl' => sub { $accessor->( $ctrl->GetValue() ); }, 'Wx::StaticText' => sub { $accessor->( $ctrl->GetLabel() ); }, 'Wx::StaticBitmap' => sub { $accessor->( $ctrl->GetBitmap() ); }, 'Wx::RadioBox' => sub { $accessor->( $ctrl->GetSelection() ); }, }; eval { $method->{ref $ctrl }->(); }; } sub SetControlValue { my( $self, $control_id ) = @_; my $ctrl = $self->FindWindow($control_id) ; my $accessor = $self->accessors->{$control_id}; # to execute the right method my $method = { 'Wx::TextCtrl' => sub { $ctrl->ChangeValue( $accessor->() ); }, 'Wx::StaticText' => sub { $ctrl->SetLabel( $accessor->() ); }, 'Wx::StaticBitmap' => sub { $ctrl->SetBitmap( $accessor->() ); }, 'Wx::RadioBox' => sub { $ctrl->SetSelection( $accessor->() ); }, }; eval { $method->{ref $ctrl }->(); }; } 1;pLoader-1.6/src/Uploader/Image.pm0000644000175000017500000000435511354367261015065 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::Image; use strict; use base qw/Uploader::Object/; __PACKAGE__->mk_accessors( qw/ file wx_thumb_file site_high_file site_name site_resized_file site_thumb_file site_author site_comment site_original_filename exif_metadata add_rank site_categories site_tags file_sum width height privacy_level caption / ); sub Init { my ( $self ) = @_; } sub exif_tag { my ( $self, $tag ) = @_; my $exif = $self->exif_metadata ; $exif->{$tag}; } sub create_date { my ( $self, $date ) = @_; my $exif = $self->exif_metadata ; $self->{-create_date} ||= $exif->{CreateDate}; $self->{-create_date} = $date if defined $date; $self->{-create_date}; } 1;pLoader-1.6/src/Uploader/PWG.pm0000644000175000017500000000467211370624445014500 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::PWG; use strict; use Data::Dumper; use Uploader::PWG::WebServices; use Uploader::PWG::Categories; use base qw/ Uploader::Object Class::Accessor::Fast Uploader::PWG::WebServices Uploader::PWG::Categories /; __PACKAGE__->mk_accessors( qw/ site_url site_username site_password http_username http_password branding use_offline version / ); $|=1; sub Init { my ( $self ) = @_; # for web services $self->SUPER::Init( $self->version ); if($self->use_offline){ $self->categories([]); } else{ $self->GetMethods; $self->RefreshCategories; $self->RefreshTags; } } sub RefreshCategories { my ( $self ) = @_; $self->categories( $self->prepare_items( $self->GetCategories ) ); } sub RefreshTags { my ( $self ) = @_; $self->tags( $self->GetTags ); } 1;pLoader-1.6/src/Uploader/ImageList.pm0000644000175000017500000012004711371040661015705 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::ImageList; use strict; use Carp; use base qw/Uploader::Object/; use Image::ExifTool qw(:Public); use Image::Magick; use File::Spec; use Uploader::Image; use Data::Dumper; use Storable; use Digest::MD5::File qw/file_md5_hex md5_hex/; use Wx::Locale qw/:default/; use Wx qw/wxTheApp/; # this class implements a collection of image files with associated data $|=1; __PACKAGE__->mk_accessors( qw/ thumb_size preview_ratio categories type filter blur quality resize_w resize_h hd_filter hd_blur hd_quality hd_w hd_h hd_interlace prefix author count new_files storable_file wx_thumb_size current_image images image_selection exif_metadata wx_thumb_imglist wx_thumb_dir site_resized_dir site_thumb_dir userdata_dir progress_msg last_error_msg default_caption default_caption_pattern SetNewFilesViewerRefreshCallback SetNewFilesProgressCallback SetNewFilesDisplayEndInfoCallback YieldCallback UploadImagesViewerCallback progress_thumbnail_refresh progress_msg_details_refresh progress_msg_refresh progressbar_refresh progress_endinfo_refresh ResizeCallback upload_rejects pwg upload_high upload_hd remove_uploaded_from_selection wx_quality th_quality auto_rotate interlace create_resized use_exif_preview image_sums upload_image_sums sums version imagelist_version uploaded_images watermark_activate watermark_activate_pwg_high watermark_text watermark_text_size watermark_position watermark_y watermark_x watermark_color gravity rgbcolor upload_msg upload_selection_count upload_uploaded_count upload_rejected_count upload_last_error upload_error_content upload_begin_time upload_end_time upload_duration upload_file upload_name ReuploadCallback reupload_action_files reupload_action_properties reupload_action_properties_m reupload_not_ask display_mode stop_processing image_selection_tags image_selection_privacy_level image_selection_name image_selection_comment image_selection_author image_selection_create_date thumbnail_shape_square / ); sub Init { my ( $self ) = @_; $self->image_selection([]) if !defined $self->image_selection; $self->uploaded_images([]); $self->gravity( { 'Top' => 'North', 'Left' => 'West', 'Right' => 'East', 'Bottom' => 'South', 'Top left' => 'NorthWest', 'Top right' => 'NorthEast', 'Bottom left' => 'SouthWest', 'Bottom right' => 'SouthEast', 'Center' => 'Center', } ); $self->rgbcolor( { "White" => '#FFFFFF', "Black" => '#000000', } ); $self->image_selection_tags( [] ) unless defined $self->image_selection_tags; } sub _set_exif_tag { my ( $self, $file, $tag, $newValue ) = @_; my $options = {}; # Create a new Image::ExifTool object my $exifTool = new Image::ExifTool; # Extract meta information from an image $exifTool->ExtractInfo($file, $options); # Set a new value for a tag $exifTool->SetNewValue($tag, $newValue); # Write new meta information to a file $exifTool->WriteInfo($file); } sub _set_current_image_filepaths { my ( $self ) = @_; my $filename = sprintf( "%s.%s", $self->current_image->file_sum, $self->type, ); $self->current_image->wx_thumb_file( File::Spec->catfile( $self->wx_thumb_dir, $filename ) ); $self->current_image->site_thumb_file( sprintf("%s.%s", File::Spec->catfile( $self->site_thumb_dir, 'thumbnail' ), $self->type ) ); } sub SetCurrentImage { my ( $self, $indx ) = @_; $self->current_image( $indx != -1 ? $self->GetImage($indx) : Uploader::Image->new() ); } sub SetNewFiles { my ( $self, $files ) = @_; $self->stop_processing(0); $self->new_files( $files ); # if some files have been previously selected my $i = scalar @{$self->sums}; #printf("SetNewFiles %s\n", $i); my $count = 0; $self->count($count); my $errors = 0; foreach my $file ( @{$files} ) { my $info = $self->_read_exif_metatdata($file->{ANSIPathName}); my $is_new_image = $self->_add_image($file, $info, $i); $self->SetCurrentImage($i); $self->_set_current_image_filepaths(); if($is_new_image){ #my $use_wx_resize = $self->_create_gui_preview($info); $self->_create_gui_thumbnail(); # ok if(!$@){ $self->progress_msg(gettext("Selection thumbnail created for %s")); } else { $self->progress_msg("An error has occured when processing %s\n$@"); # remove from list splice @{$self->sums}, $i, 1; $errors++; } $self->SetNewFilesProgressCallback->(); } $i++; $count++; $self->count($count); $self->SetNewFilesViewerRefreshCallback->(); last if $self->stop_processing; } $self->SetNewFilesDisplayEndInfoCallback->( sprintf( "%s : %s\n\n%s : %s", gettext("photos added to the selection"), $self->count, gettext("errors"), $errors, ), $errors ); $self->Store; } sub _read_exif_metatdata { my ( $self, $file ) = @_; # read exif metadata my $info; eval { $info = ImageInfo( $file ); }; $info = {} if($@); $info; } # key is file path sub _add_image { my ( $self, $file, $info, $i ) = @_; my $is_new_image; # for legacy imagelist that do not have image_sums property $self->image_sums( {} ) if !$self->image_sums; my $sum = file_md5_hex($file->{ANSIPathName}); my $image; if ( !exists $self->image_sums->{$sum} ){ #print "_add_image ", Dumper $file, "\n"; # append to image list $image = Uploader::Image->new( { file => $file->{ANSIPathName}, file_sum => $sum, site_name => $self->init_default_caption($file->{PathName}, $info, $i), caption => $self->default_caption, site_author => $self->author, exif_metadata => $self->_select_exif_data($info), add_rank => $i, site_categories => [], site_tags => [], site_high_file => $file->{ANSIPathName}, } ); $self->image_sums->{$sum} = $image ; $is_new_image = 1; } else { $image = $self->image_sums->{$sum}; } $self->sums->[$i] = $sum ; $is_new_image; } sub init_default_caption { my ( $self, $file, $info, $i ) = @_; my $create_date = $info->{CreateDate}; $self->init_caption_from_pattern( $file, $create_date, $i, $self->default_caption, $self->default_caption_pattern ); } sub init_caption_from_pattern { my ( $self, $file, $create_date, $i, $caption, $pattern ) = @_; my ( $yyyy, $mm, $dd, $hh, $mi, $ss ) = split /[:\s]/, $create_date ; my $chrono = join('', $yyyy, $mm, $dd); my $caption_from_pattern; my $ext; my ( $vol, $path, $filename ) = File::Spec->splitpath($file); ( $filename, $ext ) = split /\.\w+$/, $filename; if('Caption' eq $pattern){ $caption_from_pattern = $caption } elsif('File name' eq $pattern){ $caption_from_pattern = $filename } elsif('File path and name' eq $pattern){ $caption_from_pattern = sprintf( "%s", File::Spec->catfile($path, $filename), ) } elsif('Caption + rank number' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", $caption, 1+$i, ) } elsif('Rank number + caption' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", 1+$i, $caption, ) } elsif('Caption + create date chrono' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", $caption, $chrono, ) } elsif('Create date chrono + caption' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", $chrono, $caption, ) } elsif('Create date chrono + rank' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", $chrono, 1+$i, ) } elsif('Rank + create date chrono' eq $pattern){ $caption_from_pattern = sprintf( "%s %s", 1+$i, $chrono, ) } $caption_from_pattern; } sub GetCurrentImageCaption { my ( $self, $index, $pattern ) = @_; $pattern = wxTheApp->eng_caption_patterns->{$pattern}; $self->SetCurrentImage($index); my $img = $self->current_image; $self->init_caption_from_pattern( $img->file, $img->create_date, $index, $self->current_image->caption, $pattern ); } sub _create_gui_thumbnail { my ( $self ) = @_; eval { if(!$self->CreateGUIThumbnail()) { $self->ResizeCallback->( $self->current_image->file, $self->current_image->wx_thumb_file, $self->type, $self->wx_thumb_size, $self->wx_thumb_size, $self->wx_quality, ); } }; } sub RemoveImageSelection { my ( $self ) = @_; return if (! scalar @{$self->sums} ); return if (! defined $self->image_selection ); $self->_remove_image_list($self->image_selection); # clear image selection $self->image_selection([]); } sub _remove_image_list { my ( $self, $list ) = @_; # the list is sorted, ascendant # we reverse it to have # higher first, and keep same indexes during remove @$list = reverse @$list; map { $self->DeleteImage($_); splice @{$self->sums}, $_, 1 ; $self->wx_thumb_imglist->Remove($_); shift @$list; } @$list; } # used for display in GUI. has to fit a square box ( wxImageList ) sub CreateGUIThumbnail { my ( $self ) = @_; my $rval = 0; my $image = new Image::Magick; my $size = $self->wx_thumb_size||100; my $status = $image->Set(size=>sprintf("%sx%s", 2*$size, 2*$size)); warn "$status" if $status ; $status = $image->ReadImage( $self->current_image->file ); warn "$status" if $status; return $rval if $status; $self->current_image->width( $image->Get('width') ); $self->current_image->height( $image->Get('height') ); # maximize size and keep aspect ratio $status = $image->Thumbnail( geometry=>sprintf("%s%s>", $size*$size, '@') ); # to get adjusted to a square box #$status = $image->Thumbnail( # geometry=>sprintf("%sx%s%s", $size, $size, '^') #); warn "$status" if $status; return $rval if $status; # causes strange behaviour with i18n -> yellow borders when local is other than EN # $status = $image->Set(background=>"white"); # warn "$status" if $status ; $status = $image->Set(Gravity=>"Center"); warn "$status" if $status ; $image->Extent( geometry=>sprintf("%sx%s", $size, $size), gravity=>'center', ); $image->Set( quality=>$self->wx_quality||90 ); $status = $image->Strip(); warn "$status" if $status ; # exif from original image my $orientation = $self->current_image->exif_metadata->{Orientation}; # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW if( $orientation =~ m/Rotate (\d+)/ ){ printf( "Rotate %s\n", $1 ); $image->Rotate( degrees=>$1 ) if $self->auto_rotate; } $image->Write( sprintf( "%s:%s", $self->type, $self->current_image->wx_thumb_file, ) ); undef $image; $rval = 1; return $rval; } sub CreateResized { my ( $self ) = @_; my $rval = 1 ; my $image = new Image::Magick; my $status = $image->ReadImage( $self->current_image->file ); warn "$status" if $status ; return 0 if $status; my $w = $image->Get('width'); my $h = $image->Get('height'); $status = $image->Set(Gravity=>"Center"); warn "$status" if $status ; # exif from original image my $orientation = $self->current_image->exif_metadata->{Orientation}; # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW if( $orientation =~ m/Rotate (\d+)/ ){ printf( "Rotate %s\n", $1 ); $image->Rotate( degrees=>$1 ) if $self->auto_rotate; } #printf("resize with blur value %s\n", $self->blur); $status = $image->Resize( geometry => sprintf("%sx%s>", $self->resize_w, $self->resize_h), filter => sprintf("%s", $self->filter), blur => $self->blur ); warn "$status" if $status ; return 0 if $status; #printf("resize with quality value %s\n", $self->quality); $status = $image->Set(quality=>$self->quality); warn "$status" if $status ; $status = $image->Set(interlace=>$self->interlace); warn "$status" if $status ; $image->Write( sprintf( "%s:%s", $self->type, $self->current_image->site_resized_file, ) ); warn "$status" if $status ; return 0 if $status; undef $image; $rval = 0 if $status; return $rval; } sub CreateThumbnail { my ( $self ) = @_; #return 1 if( -e $self->current_image->site_thumb_file ); my $rval = 1; my $image = new Image::Magick; my $status = $image->ReadImage( $self->current_image->site_resized_file ); warn "$status" if $status ; my $pattern = $self->thumbnail_shape_square ? "%sx%s^" : "%sx%s>" ; $status = $image->Resize( geometry => sprintf( $pattern, $self->thumb_size, $self->thumb_size ), ); warn "$status" if $status ; $status = $image->Set(Gravity=>"Center"); warn "$status" if $status ; $status = $image->Crop( geometry=>sprintf("%sx%s+0+0", $self->thumb_size, $self->thumb_size) ) if $self->thumbnail_shape_square; $status = $image->Set(quality=>$self->th_quality); warn "$status" if $status ; $status = $image->Strip(); warn "$status" if $status ; $image->Write( sprintf( "%s:%s", $self->type, $self->current_image->site_thumb_file, ) ); undef $image; $rval = 0 if $status; return $rval; } sub _select_exif_data { my ( $self, $exif ) = @_; return { map { $_ => $exif->{$_}, } qw/ CreateDate ImageWidth ImageHeight Orientation DateTimeOriginal ISO ExposureTime ApertureValue FocalLength Lens Exposure Make Model / }; } sub Store { my ( $self ) = @_; my $data = $self->get_storable( [ qw/ images thumb_size preview_ratio type filter blur quality wx_quality th_quality prefix author count resize_w resize_h hd_filter hd_blur hd_quality hd_w hd_h hd_interlace new_files storable_file wx_thumb_size current_image exif_metadata wx_thumb_dir site_resized_dir site_thumb_dir userdata_dir progress_msg default_caption default_caption_pattern upload_high upload_hd remove_uploaded_from_selection auto_rotate interlace create_resized use_exif_preview image_sums sums version imagelist_version watermark_activate watermark_activate_pwg_high watermark_text watermark_text_size watermark_position watermark_y watermark_x watermark_color reupload_action_files reupload_action_properties reupload_action_properties_m display_mode image_selection_tags thumbnail_shape_square / ] ); eval { store $data, $self->storable_file; }; if($@){ print $@, "\n"; } } sub UploadSelection { my ( $self ) = @_; $self->stop_processing(0); my $viewer_callback = $self->UploadImagesViewerCallback ; $self->image_selection([]) if !defined $self->image_selection; $self->upload_rejects( [] ); $self->count( 1 ); $self->upload_uploaded_count(0); $self->upload_rejected_count(0); $self->upload_begin_time(time); $self->upload_selection_count(scalar @{$self->image_selection}); # for re-upload management $self->upload_image_sums( [ map { $self->GetImage($_)->file_sum } @{$self->image_selection} ] ); # check if already exist on server my $uploaded = $self->pwg->IsAlreadyUploaded($self->upload_image_sums); my @already_uploaded = grep { $_ } values %$uploaded ; $self->ReuploadCallback->() if ( scalar @already_uploaded and !$self->reupload_not_ask ); foreach(@{$self->image_selection}) { # current image object $self->current_image( $self->GetImage($_) ); # prepare resized, high, thumbnail # if not already uploaded $self->_set_site_resized_file(); $self-> _set_site_high_file (); # photo metadata $self->_upload_selection_prepare() if (!$uploaded->{$self->current_image->file_sum} or $self->reupload_action_files); $self->_prepare_upload_properties(); # transfert resized, high, thumbnail to site my $status = $self->_upload_selection_transfert(); # log operations $self->_upload_selection_log($status); $self->count( 1+$self->count ); # remove thumbnail, resized # to make sure everything is clean # keep site_high_file because it can be the original !!! $self->_remove_resized_from_cache; last if $self->stop_processing; } $self->stop_processing(0); if($self->remove_uploaded_from_selection){ $self->_remove_image_list($self->uploaded_images); # clear thumbnail imagelistctrl $viewer_callback->(); } $self->_upload_selection_final_log(); } sub _remove_resized_from_cache { my ( $self ) = @_; unlink $self->current_image->site_thumb_file if -e $self->current_image->site_thumb_file; map { my $file = File::Spec->catfile( $self->site_resized_dir, sprintf( "%s.%s", $_, $self->type, ) ); unlink $file if -e $file; } qw /resized high/; } sub _upload_selection_prepare { my ( $self ) = @_; $self->progress_thumbnail_refresh->(); # PREPARE $self->_set_upload_msg(gettext("Preparing resized image for")); $self->_upload_progress(); #printf("resized %s\n", $self->create_resized); if( $self->create_resized ){ $self->_create_site_resized_file(); $self->_set_upload_msg(gettext("Resized image done for")); $self->_upload_progress(); } # the original is at the right size, no need to create a resize else { #printf("original no resized %s\n", $self->create_resized); $self->current_image->site_resized_file( $self->current_image->file, ); } my $decode = { 'No' => 0, 'Yes, use HD resized of the original photo' => 'HD', 'Yes, use a copy of the original photo' => 'ORIGINAL', }; #printf("upload HD %s\n", $self->upload_hd); $self->upload_high( $decode->{$self->upload_hd} ); #printf("upload High %s\n", $self->upload_high); # if upload high, rotate a copy of original file if($self->upload_high){ $self->CreateHigh(); $self->_set_upload_msg(gettext("HD image done for")); $self->_upload_progress(); } eval { $self->CreateThumbnail(); }; $self->_set_upload_msg(gettext("Thumbnail image done for")); $self->_upload_progress(); } sub _upload_progress { my ( $self, $value ) = @_; eval { $self->progress_msg_refresh->( $self->upload_msg ); }; # user cancelled : dialog box is destroyed croak gettext("Upload cancelled"), " .", $@ if $@ ; } sub _set_upload_msg { my ( $self, $msg, $errmsg ) = @_; $self->upload_msg( sprintf( "%s : %s - %s\n\n%s %s %s %s\n%s", $msg, $self->upload_file, $self->upload_name, gettext("Photo"), $self->count, gettext("on"), $self->upload_selection_count, $errmsg ) ); } sub _upload_selection_transfert { my ( $self ) = @_; return if $self->stop_processing; $self->_set_upload_msg(gettext("Uploading")); $self->_upload_progress(0); # UPLOAD my ( $status, $status_msg, $content ) = $self->pwg->UploadImage( { yield => $self->YieldCallback, bar => $self->progressbar_refresh, msg => $self->progress_msg_refresh, msg_details => $self->progress_msg_details_refresh, resized_msg => gettext("Uploading resized"), thumbnail_msg => gettext("Uploading thumbnail"), highdef_msg => gettext("Uploading high definition"), checksum_msg => gettext("Checksum for"), original_sum => $self->current_image->file_sum, stop_processing => $self->stop_processing, } ); my $ok = 0; # HTTP REQUEST OK if ( $status ){ # PIWIGO RESULT ( HTTP may be ok while Piwigo is not ) $ok = 'fail' eq $content->{stat} ? 0 : 1; } else{ Wx::LogMessage( "%s %s : %s", gettext("Communication error with"), $self->pwg->site_url, $status_msg, ); } $self->upload_last_error( $status_msg ); $self->upload_error_content( $content ); $ok; } sub _upload_selection_log { my ( $self, $ok ) = @_; if($ok){ $self->_set_upload_msg(gettext("Uploaded")); $self->_upload_progress(0); push @{$self->uploaded_images}, $_; $self->upload_uploaded_count( 1+$self->upload_uploaded_count ); } else { $self->_set_upload_msg(gettext("An error has occured"), Dumper($self->upload_error_content)); $self->upload_rejected_count( 1+$self->upload_rejected_count ); } } sub _upload_selection_final_log { my ( $self ) = @_; $self->upload_end_time(time); $self->upload_duration( $self->upload_end_time - $self->upload_begin_time ); $self->progress_endinfo_refresh->( sprintf( "%s : %s\n\n%s : %s\n\n%s : %s\n\n\n%s : %s %s", gettext("images processed"), $self->count - 1, gettext("images uploaded"), $self->upload_uploaded_count, gettext("images in errors and not uploaded"), $self->upload_rejected_count, gettext("Duration"), $self->upload_duration, gettext("seconds"), ) ); } sub _set_site_resized_file { my ( $self ) = @_; my ( $vol, $dir, $file ) = File::Spec->splitpath( $self->current_image->file ); $self->upload_file( $file ); $self->upload_name( $self->current_image->site_name ); my $filename = $self->current_image->file_sum ; # lately defined to make sure we have the last global properties ( resize_w, resize_h ) $self->current_image->site_resized_file( File::Spec->catfile( $self->site_resized_dir, sprintf( "%s.%s", 'resized', $self->type, ) ) ); printf("_set_site_resized_file %s\n", $self->current_image->site_resized_file); } sub _create_site_resized_file { my ( $self ) = @_; eval { if(!$self->CreateResized()){ $self->_create_resized_fallback(); }; $self->_set_exif_tag( $self->current_image->site_resized_file, 'Orientation', 'Horizontal (normal)', ) if $self->auto_rotate; $self->CreateWatermark( $self->watermark_text, $self->watermark_text_size, $self->watermark_position, $self->watermark_x, $self->watermark_y, $self->watermark_color, $self->current_image->site_resized_file ) if $self->watermark_activate; } } sub _create_resized_fallback { my ( $self ) = @_; # use wx builtin rescale if IM fails printf("CreateResized failed %s. Use ResizeCallback\n", $@); # use method provided by the caller # source, target, type, ratio, width, $height $self->ResizeCallback->( $self->current_image->file, $self->current_image->site_resized_file, $self->type, $self->resize_w, $self->resize_h, $self->quality, ); $self->RotateImage( $self->current_image->site_resized_file, ) if $self->auto_rotate; } # if we need to rotate sub CreateHigh { my ( $self ) = @_; #printf("CreateHigh %s\n", $self->upload_high); my $bModifyOriginal; my $bRotate; my $bAddWatermark; my $bResize; my $orientation = $self->current_image->exif_metadata->{Orientation}; my $degrees; # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW if( $self->auto_rotate and $orientation =~ m/Rotate (\d+)/ ){ $bModifyOriginal = 1; $bRotate = 1; $degrees = $1; } if( $self->watermark_activate_pwg_high ){ $bModifyOriginal = 1; $bAddWatermark = 1; } # HD resize if('HD' eq $self->upload_high){ $bModifyOriginal = 1; $bResize = 1; } if($bModifyOriginal){ my $image = Image::Magick->new(); # we read original my $status = $image->Read( $self->current_image->file ); warn "$status ", $self->current_image->file, "\n" if $status ; return 0 if $status; if($bRotate){ $image->Rotate( degrees=>$degrees ); } $image->Write( $self->current_image->site_high_file ); warn "$status ", $self->current_image->site_high_file, "\n" if $status ; return 0 if $status; if($bResize){ $status = $image->Resize( geometry => sprintf("%sx%s>", $self->hd_w, $self->hd_h), filter => sprintf("%s", $self->hd_filter), blur => $self->hd_blur ); warn "$status" if $status ; return 0 if $status; } #printf("resize with quality value %s\n", $self->quality); $status = $image->Set(quality=>$self->quality); warn "$status" if $status ; $status = $image->Set(interlace=>$self->interlace); warn "$status" if $status ; undef $image; if($bAddWatermark){ my $file_out = $self->current_image->site_high_file; $self->CreateWatermark( $self->watermark_text, $self->watermark_text_size, $self->watermark_position, $self->watermark_x, $self->watermark_y, $self->watermark_color, $file_out ); } $self->_set_exif_tag( $self->current_image->site_high_file, 'Orientation', 'Horizontal (normal)', ); # Now all images that need to be rotated are done. Update exif $self->current_image->exif_metadata->{Orientation} = 'Horizontal (normal)'; } else{ # high file is the original file $self->current_image->site_high_file( $self->current_image->file ); #printf("site high file %s\n", $self->current_image->site_high_file); } return 1; } # file name for original copy # we do not need the original file name sub _set_site_high_file { my ( $self ) = @_; my ( $vol, $dir, $file ) = File::Spec->splitpath( $self->current_image->file ); $self->current_image->site_original_filename( $file ); my ( $filename, $ext ) = split /\./, $file ; # high_file is a resized of original $self->current_image->site_high_file( File::Spec->catfile( $self->site_resized_dir, sprintf( "%s.%s", 'high', $self->type, ) ) ); } sub CreateWatermark { my ( $self, $text, $text_size, $position, $x, $y, $color, $file_out ) = @_; my $rval = 1 ; my $gravity = $self->gravity->{$position}; my $fill = $self->rgbcolor->{$color}; # debug #printf("Create watermark %s\n", $file_out); my $image = new Image::Magick; my $status = $image->ReadImage( $file_out ); my $ratio = $image->Get('height')/($self->resize_h||$image->Get('height')); $ratio||=1; $text ||="Your watermark"; $image->Annotate( pointsize => $text_size*$ratio, fill => $fill, x => $x*$ratio, y => $y*$ratio, text => $text, gravity => $gravity, ); $image->Write( sprintf( "%s:%s", $self->type, $file_out, ) ); } sub _prepare_upload_properties { my ( $self ) = @_; # set default values only if not defined # || operator is not used because 0 is a choice value # and would replace a valid choice with a default value $self->reupload_action_files(1) unless defined $self->reupload_action_files; $self->pwg->reupload_action_properties(1) unless defined $self->pwg->reupload_action_properties; $self->pwg->reupload_action_properties_m(1) unless defined $self->pwg->reupload_action_properties_m; $self->pwg->reupload_action_files( $self->reupload_action_files ); $self->pwg->reupload_action_properties( $self->reupload_action_properties ); $self->pwg->reupload_action_properties_m( $self->reupload_action_properties_m ); $self->pwg->upload_high( $self->upload_high ); $self->pwg->site_high_file( $self->current_image->site_high_file ); $self->pwg->site_original_filename( $self->current_image->site_original_filename ); $self->pwg->site_resized_file( $self->current_image->site_resized_file ); $self->pwg->site_thumb_file( $self->current_image->site_thumb_file ); $self->pwg->site_author( $self->current_image->site_author ); $self->pwg->site_comment( $self->current_image->site_comment ); $self->pwg->site_image_name( $self->current_image->site_name ); $self->pwg->site_img_date_creation( substr($self->current_image->create_date, 0, 10) ); $self->pwg->privacy_level( $self->current_image->privacy_level ); $self->current_image->site_categories( $self->categories ); $self->pwg->categories( sprintf( "%s", join(';', @{$self->categories}) ) ); $self->pwg->site_tags( join(',', @{$self->current_image->site_tags}) ); } # read Orientation exif tag from original image # apply rotation to $file image sub RotateImage { my ( $self, $file ) = @_; # exif from original image my $orientation = $self->current_image->exif_metadata->{Orientation}; # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW if( $orientation =~ m/Rotate (\d+)/ ){ printf( "Rotate %s\n", $1 ); my $image = Image::Magick->new(); # read resized file my $status = $image->Read( $file ); warn "$status ", $file, "\n" if $status ; return 0 if $status; $image->Rotate( degrees=>$1 ); # write resized file $image->Write( $file ); warn "$status ", $file, "\n" if $status ; return 0 if $status; undef $image; } return 1; } sub GetImage { my ( $self, $indx ) = @_; my $sum = $self->sums->[$indx]; $self->image_sums->{$sum}; } sub DeleteImage { my ( $self, $indx ) = @_; my $sum = $self->sums->[$indx]; delete $self->image_sums->{$sum}; } sub multi_selection_mode { my ( $self ) = @_; scalar @{$self->image_selection} > 1; } sub SetImageSelectionTags { my ( $self, $tags ) = @_; $self->image_selection_tags($tags) if 'ARRAY' eq ref $tags; # append to each image # if multiple selection if($self->multi_selection_mode){ map { # need to dedup my $tags = [ @{$self->GetImage($_)->site_tags}, @{$self->image_selection_tags}, ]; #deduplicate my $uniq = { map { $_ => 1 } @$tags }; @$tags = keys %$uniq; $self->GetImage($_)->site_tags( $tags ); }@{$self->image_selection}; } $self->image_selection_tags; } sub SetImageSelectionPrivacyLevel { my ( $self, $privacy_level ) = @_; # append to each image # if multiple selection if($self->multi_selection_mode){ if(defined $privacy_level){ $self->image_selection_privacy_level($privacy_level); map { $self->GetImage($_)->privacy_level( $privacy_level ) ; }@{$self->image_selection} }; } $self->image_selection_privacy_level; } sub SetImageSelectionName { my ( $self, $name, $param ) = @_; # works in single and multi selection mode if(defined $name){ map { my $_name; if( 'CODE' eq ref $name ){ $_name = $name->($_, $param); } else{ $_name = $name; $self->GetImage($_)->caption( $_name ) ; } $self->image_selection_name($_name); $self->GetImage($_)->site_name( $_name ) ; }@{$self->image_selection} } } sub SetImageSelectionAuthor { my ( $self, $author ) = @_; # append to each image # if multiple selection if($self->multi_selection_mode){ if(defined $author){ $self->image_selection_author($author); map { $self->GetImage($_)->site_author( $author ) ; }@{$self->image_selection} }; } $self->image_selection_author; } sub SetImageSelectionComment { my ( $self, $comment ) = @_; # append to each image # if multiple selection if($self->multi_selection_mode){ if(defined $comment){ $self->image_selection_comment($comment); map { $self->GetImage($_)->site_comment( $comment ) ; }@{$self->image_selection} }; } $self->image_selection_comment; } sub SetImageSelectionCreateDate { my ( $self, $date ) = @_; # append to each image # if multiple selection if($self->multi_selection_mode){ if(defined $date){ $self->image_selection_create_date($date); map { $self->GetImage($_)->create_date( $date ) ; }@{$self->image_selection} }; } $self->image_selection_create_date; } sub CheckUpload { my ( $self ) = @_; $self->pwg->CheckUpload; } 1;pLoader-1.6/src/Uploader/Object.pm0000644000175000017500000000713511330151201015223 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::Object; use strict; use Data::Dumper; use Storable; use File::Slurp ; use Data::Dumper; use base qw/ Class::Accessor::Fast /; # $param is a hash with : # key : member name sub new { my ( $class, $params ) = @_; $params ||= {}; my $self = bless $params, $class ; # create member accessors #__PACKAGE__->mk_accessors( # keys %$params #); if(defined $self->{plugin_file}){ die "Plugin file is missing." unless -e $self->{plugin_file}; $self->InitPlugins(); } # member accessors initialization eval { map { $self->$_( $params->{$_} ); } keys %$params; }; if($@){ warn $@; } # must be defined in child class $self->Init(); return $self; } sub InitPlugins { my ( $self ) = @_; my $data; eval { $data = read_file( $self->{plugin_file} ); } ; my $plugins = [] ; if( defined $data){ my $expr = '$plugins = ' ; $expr .= "$data " ; eval $expr ; } # load plugins my $hplugins = $plugins->[0] if scalar @$plugins; while( my ( $key, $value ) = each %$hplugins ) { $self->ReadParams( $value, $key); } } sub ReadParams { my( $self, $file, $key ) = @_ ; my $expr_params ; eval { $expr_params = read_file( $file ); } ; my $paramValues = [] ; if($expr_params){ my $expr = '$paramValues = ' ; $expr .= "$expr_params " ; eval $expr ; } return unless 'ARRAY' eq ref $paramValues ; if($@){ die "Cannot load data $@"; } if(scalar(@$paramValues )){ my $params = $paramValues->[0] ; $self->SetKeyValues($params, $key); } } sub SetKeyValues { my ( $self, $params, $key )= @_; if (defined $key) { foreach( keys %$params ) { $self->{$key}->{$_} = $params->{$_} ; } } else { foreach( keys %$params ) { $self->{$_} = $params->{$_} ; } } } sub get_storable { my ( $self, $keys ) = @_; my $data = { map { $_ => $self->{$_}, } @$keys }; $data; } 1;pLoader-1.6/src/Uploader/PWG/0000755000175000017500000000000011377742432014135 5ustar ronronpLoader-1.6/src/Uploader/GUI/0000755000175000017500000000000011377742432014124 5ustar ronronpLoader-1.6/src/Uploader/PWG/Categories.pm0000644000175000017500000000660011365157151016555 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::PWG::Categories; use strict; use Data::Dumper; use Wx::Locale qw/:default/; use base qw/ Uploader::Object Class::Accessor::Fast /; # create a list of tree items sub prepare_items { my ( $self, $categories ) = @_; my $records = {}; # lookup by id # every node is a parent map { $records->{$_->{id}} = _record( $_ ); } @$categories; # find the parent # sort by global rank, descending # to make sure children come before their parents map { my $child = $records->{$_}; my $parentid = _parentid($child); if(defined $parentid){ _addchild( $records->{$parentid}, $child ); delete $records->{$_}; } } sort { $records->{$b}->[7] cmp $records->{$a}->[7] } keys %$records; return [ [ $self->branding->{Categories}, undef, -1, 0, -1, ], sort { $a->[6] <=> $b->[6] } values %$records, ]; } sub _parentid { my ( $record ) = @_; $record->[5]; } sub _addchild { my ( $record, $child ) = @_; $record->[1] ||= []; my $children = $record->[1]; push @$children, $child; # sort by rank @$children = sort { $a->[6] <=> $b->[6] } @$children; } sub _parent_rank { my ( $category ) = @_; my @rank = split /\./, $category->{global_rank} ; my @ucats = split /,/, $category->{uppercats} ; my $parent; if( 1 < scalar @ucats ){ $parent = $ucats[scalar @rank - 2 ]; } my $rank = $rank[scalar @rank - 1 ]; return ($parent, $rank); } sub _record { my ( $category ) = @_; my ( $parent, $rank ) = _parent_rank($category); return [ $category->{name}, undef, $category, 1, -1, $parent, $rank, $category->{global_rank}, ]; } 1;pLoader-1.6/src/Uploader/PWG/WebServices.pm0000644000175000017500000004510111370624445016711 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::PWG::WebServices; use strict; use warnings; use MIME::Base64 qw(encode_base64); use JSON; use LWP::UserAgent; use Data::Dumper; use Digest::MD5::File qw/file_md5_hex md5_hex/; use File::Slurp; use File::Spec; use POSIX qw(ceil floor); use base qw/ Uploader::Object Class::Accessor::Fast /; __PACKAGE__->mk_accessors( qw/ uagent urlbase username password qry_list_categories qry_add_categories qry_list_methods qry_list_tags qry_check_upload items tags categories site_original_filename site_high_file site_resized_file site_thumb_file site_image_name site_tags rank site_author site_comment site_img_date_creation uagent_response login_result action_result upload_high chunk_size sum image_id typecode reupload_action_files reupload_action_properties reupload_action_properties_m single_value_mode multiple_value_mode privacy_level is_method_available / ); $|=1; sub Init { my ( $self, $version ) = @_ ; # to transform a type_code into a typename $self->typecode( { file => 'file', thumbnail => 'thumb', high => 'high', } ); $self->single_value_mode( { 1 => 'fill_if_empty', 2 => 'replace', } ); $self->multiple_value_mode( { 1 => 'append', 2 => 'replace', } ); $self->uagent( LWP::UserAgent->new( agent => sprintf("Mozilla/pLoader %s", $version) ) ); $self->uagent->cookie_jar({}); $self->urlbase( $self->{site_url} ); $self->username( $self->{site_username} ); $self->password( $self->{site_password} ); $self->chunk_size( $self->{chunk_size} ); $self->uagent->default_headers->authorization_basic( $self->{http_username}||$self->username, $self->{http_password}||$self->password ); $self->qry_list_categories( sprintf "%s/ws.php?format=json&method=%s&recursive=%s", $self->urlbase, # 'pwg.categories.getAdminList', 'pwg.categories.getList', 'true', ); $self->qry_list_tags( sprintf "%s/ws.php?format=json&method=%s", $self->urlbase, 'pwg.tags.getAdminList', ); $self->qry_list_methods( sprintf "%s/ws.php?format=json&method=%s", $self->urlbase, 'reflection.getMethodList', ); $self->qry_check_upload( sprintf "%s/ws.php?format=json&method=%s", $self->urlbase, 'pwg.images.checkUpload', ); my $form = { method => 'pwg.session.login', username => $self->username, password => $self->password, }; $self->_execute_post( $form ); $self->login_result( $self->_json_response_content ); } sub _json_response_content { my ( $self ) = @_; my $hresult = {} ; if($self->uagent_response->is_success){ eval { $hresult = from_json( $self->uagent_response->content ); }; if($@){ # when server response has warnings, the content response is not a valid json string # find the json response $self->uagent_response->content =~ /(\{.+\})/; #printf("json response %s\n", $1); eval { $hresult = from_json( $1 ); }; } } else{ $hresult = { 'message' => $self->uagent_response->message, 'stat' => 'fail', }; } if(401 == $self->uagent_response->code){ $hresult->{message} = 'Access denied'; } $hresult; } sub _execute_get { my ( $self, $query ) = @_; eval { $self->uagent_response( $self->uagent->get( $query ) ); }; if($@){ printf("An error occured in query execution %s\n%s", $query, $@, ); } } sub _execute_post { my ( $self, $form ) = @_; my $result; eval { $result = $self->uagent_response( $self->uagent->post( $self->urlbase.'/ws.php?format=json', $form ) ); }; if($@){ printf("An error occured in post execution %s\n%s", $form->{method}, $@, ); } return ( $result->is_success, $result->status_line ); } sub GetCategories { my ( $self ) = @_; $self->_execute_get( $self->qry_list_categories ); $self->_json_response_content->{result}{categories}; } sub GetTags { my ( $self ) = @_; $self->_execute_get( $self->qry_list_tags ); $self->_json_response_content->{result}{tags}; } sub AddTags { my ( $self, $name ) = @_; my $form = { method => 'pwg.tags.add', name => $name, }; return ( $self->_execute_post($form), $self->_json_response_content ); } sub CheckUpload { my ( $self ) = @_; my $err_msg; if($self->is_method_available->{'pwg.images.checkUpload'}){ $self->_execute_get( $self->qry_check_upload ); # my $result = $self->_json_response_content->{result}; my $hresult = $self->_json_response_content; $err_msg = 'ok' eq $hresult->{stat} ? $hresult->{result}{message} : $hresult->{message}; } $err_msg; } sub GetMethods { my ( $self ) = @_; $self->_execute_get( $self->qry_list_methods ); my $methods = $self->_json_response_content->{result}{methods}; $self->is_method_available( {} ); map { $self->is_method_available->{$_}++ }@$methods; $methods; } sub UploadImage { my ( $self, $progress ) = @_; return if $progress->{stop_processing}; $self->image_id( $self->_exists($progress->{original_sum}) ); my $status = 1; my $status_line ="OK"; my $content = {}; my $doubleCheck; my $form; UPLOAD: while(1){ # first upload if(!defined($self->image_id)){ $doubleCheck = 1; $self->_checksum_files($progress); my @types = ('file', 'thumb'); #printf("WS upload_high %s\n", $self->upload_high); push @types, 'high' if $self->upload_high; map{ my $rval = $self->_send_chunks($_, $progress); $status_line = $rval->{message}; if (!$rval->{ok}){ $status = 0; last UPLOAD ; } } @types; $form = { method => 'pwg.images.add', original_sum => $self->sum->{original}, original_filename => $self->site_original_filename, file_sum => $self->sum->{file}, thumbnail_sum => $self->sum->{thumb}, categories => $self->categories, name => $self->site_image_name, author => $self->site_author, comment => $self->site_comment, date_creation => $self->site_img_date_creation, tag_ids => $self->site_tags, }; $form->{high_sum} = $self->sum->{high} if $self->upload_high; $progress->{yield}->(); ( $status, $status_line ) = $self->_execute_post($form); } # re-upload else{ # need to check if files have changed # and update image info if($self->reupload_action_files){ $self->_checksum_files($progress); my $files = $self->_check_files(); if(defined($files)){ $self->_add_files($files, $progress); } } $form = { method => 'pwg.images.setInfo', image_id => $self->image_id, }; # update metadata info # simple value metadata if($self->reupload_action_properties){ $form->{name} = $self->site_image_name; $form->{author} = $self->site_author; $form->{comment} = $self->site_comment; $form->{date_creation} = $self->site_img_date_creation; $form->{single_value_mode} = $self->single_value_mode->{$self->reupload_action_properties}; $form->{level} = $self->privacy_level ? 2**($self->privacy_level - 1) : 0; } # multi value metadata if($self->reupload_action_properties_m){ $form->{tag_ids} = $self->site_tags if $self->site_tags; $form->{categories} = $self->categories; $form->{multiple_value_mode} = $self->multiple_value_mode->{$self->reupload_action_properties_m}; }; $progress->{yield}->(); ( $status, $status_line ) = $self->_execute_post($form); } delete $form->{tag_ids} unless defined $self->site_tags; delete $form->{tag_ids} if '' eq $self->site_tags; $progress->{yield}->(); # for first upload # make sure the image is uploaded by querying for its existence if($doubleCheck){ $self->image_id( $self->_exists($progress->{original_sum}) ); $content->{stat} = !defined $self->image_id ? 'fail' : 'ok'; if(defined $self->image_id and defined $self->privacy_level){ ( $status, $status_line, $content ) = $self->_set_privacy_level; } } last UPLOAD; }# UPLOAD return ( $status, $status_line, $content); } sub _set_privacy_level { my ( $self ) = @_; my $form = { method => 'pwg.images.setPrivacyLevel', image_id => $self->image_id, level => $self->privacy_level ? 2**($self->privacy_level - 1) : 0, }; my ( $status, $status_line ) = $self->_execute_post($form); my $hresult = $self->_json_response_content; ($status, $status_line, $hresult ); } sub _checksum_files { my ( $self, $progress ) = @_; $self->sum( { file => $self->_checksum( $self->site_resized_file, $progress ), thumb => $self->_checksum( $self->site_thumb_file, $progress ), original => $progress->{original_sum} } ); $self->sum->{high} = $self->_checksum( $self->site_high_file, $progress ) if $self->upload_high ; } sub _check_files { my ( $self ) = @_; my $form = { method => 'pwg.images.checkFiles', image_id => $self->image_id, }; @$form{'thumbnail_sum', 'file_sum' } = ( $self->sum->{thumb}, $self->sum->{file}, ); if($self->upload_high){ $form->{high_sum} = $self->sum->{high}; } $self->_execute_post($form); my $hresult = $self->_json_response_content; my $rval = 'ok' eq $hresult->{stat} ? $hresult->{result} : undef; $rval; } # $files is returned by _check_files # { # thumbnail => 'equals', 'differs', 'missing' # file => 'equals', 'differs', 'missing' # high => 'equals', 'differs', 'missing' #} sub _add_files { my ( $self, $files, $progress ) = @_; map{ $self->_add_file($_, $progress); } map{ $self->typecode->{$_}; } grep { 'equals' ne $files->{$_} } keys %$files ; } sub _add_file { my ( $self, $type_code, $progress ) = @_; $self->_send_chunks( $type_code, $progress, ); my $form = { method => 'pwg.images.addFile', image_id => $self->image_id, type => $type_code, sum => $self->sum->{$type_code}, }; $self->_execute_post($form); my $hresult = $self->_json_response_content; my $rval = 'ok' eq $hresult->{stat} ? $hresult->{result} : undef; $rval; } sub IsAlreadyUploaded { my ( $self, $md5_sums ) = @_; # md5_sums is an array ref $self->_execute_post({ method => 'pwg.images.exist', md5sum_list => join(',', @$md5_sums) } ); my $sums = $self->_json_response_content->{result}; $sums; } sub _exists { my ( $self, $md5_sum ) = @_; my $form = { method => 'pwg.images.exist', md5sum_list => $md5_sum, }; $self->_execute_post($form); my $hresult = $self->_json_response_content; $hresult->{result} = {} if 'HASH' ne ref $hresult->{result}; my $id = 'ok' eq $hresult->{stat} ? $hresult->{result}{$md5_sum} : undef ; $id; } sub _checksum { my ( $self, $file, $progress ) = @_; my $file_sum; my $yield = $progress->{yield}; $yield->(); $progress->{msg_details}->( sprintf( "%s : %s", $progress->{checksum_msg}, $file ) ); eval { $file_sum = file_md5_hex( $file ); }; $yield->(); $file_sum; } sub _send_chunks { my ( $self, $type_code, $progress ) = @_; my $msg = { thumb=>'thumbnail_msg', file=>'resized_msg', high=>'highdef_msg', }; my $filepath = { thumb=>$self->site_thumb_file, file=>$self->site_resized_file, high=>$self->site_high_file, }; $progress->{current_msg} = $progress->{$msg->{$type_code}}; $progress->{yield}->(); my $params = { filepath => $filepath->{$type_code}, type => $type_code, original_sum => $self->sum->{original}, }; #print Dumper $params; $self->send_chunks( $params, $progress, ); $progress->{yield}->(); $params; } sub AddCategories{ my ( $self, $name, $parentid ) = @_; my $form = { method => 'pwg.categories.add', name => $name, parent => $parentid, }; return ( $self->_execute_post($form), $self->_json_response_content ); } sub SetInfoCategories{ my ( $self, $name, $comment, $parentid ) = @_; my $form = { method => 'pwg.categories.setInfo', name => $name, comment => $comment, category_id => $parentid, }; return ( $self->_execute_post($form), $self->_json_response_content ); } sub send_chunks { my ( $self, $params, $progress ) = @_; my $yield = $progress->{yield}; my ( $vol, $dir, $filename ) = File::Spec->splitpath($params->{filepath}); $yield->(); $progress->{bar}->(0); $yield->(); $progress->{msg_details}->( sprintf( "%s : %s", $progress->{current_msg}, $filename ) ); $yield->(); my $content = read_file( $params->{filepath}, binmode => ':raw', ); $yield->(); my $content_length = length($content); my $nb_chunks = ceil($content_length / $self->chunk_size->()); my $chunk_pos = 0; my $chunk_id = 1; while ($chunk_pos < $content_length) { my $chunk = substr( $content, $chunk_pos, $self->chunk_size->() ); $chunk_pos += $self->chunk_size->(); #print "pwg.images.addChunk\n"; my $data = encode_base64($chunk); #printf("chunk : %s, data %s\n", length $chunk, length $data); my $response = $self->uagent->post( $self->urlbase.'/ws.php?format=json', { method => 'pwg.images.addChunk', data => $data, original_sum => $params->{original_sum}, position => $chunk_id, type => $params->{type}, } ); #print Dumper $response; $yield->(); $progress->{bar}->(100*($chunk_pos/$content_length)); $progress->{msg_details}->( sprintf( "%s : %s", $progress->{current_msg}, $filename ) ); $params->{ok} = 1; if ($response->code != 200) { printf("response code : %u\n", $response->code); printf("response message : %s\n", $response->message); $params->{ok} = 0; $params->{message} = $response->message; $params->{code} = $response->code; last; } $chunk_id++; } } 1; pLoader-1.6/src/Uploader/GUI/wxImageView.pm0000644000175000017500000000437111330151201016674 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxImageView; use Wx qw/wxDefaultPosition wxDefaultSize wxLC_ICON wxIMAGE_LIST_NORMAL wxLC_LIST wxSUNKEN_BORDER wxLC_EDIT_LABELS/; use base qw/Wx::ListCtrl/; use strict; sub new { my ( $class, $parentwnd, $images ) = @_; my $self = $class->SUPER::new( $parentwnd, -1, wxDefaultPosition, wxDefaultSize, wxLC_LIST| wxSUNKEN_BORDER|wxLC_EDIT_LABELS ); $self->SetSingleStyle( wxLC_ICON ); $self->Initialize($images); return $self; } sub Initialize { my ( $self, $images ) = @_; $self->AssignImageList( $images, wxIMAGE_LIST_NORMAL ); for( my $i = 0 ; $i < $images->GetImageCount ; $i++ ) { my $idx = $self->InsertStringImageItem( $i, "Item $i", $i % 5 ); $self->SetItemData( $idx, $i ); } } 1;pLoader-1.6/src/Uploader/GUI/wxGlobalSettings.pm0000644000175000017500000002036711355127776017776 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxGlobalSettings; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxVERTICAL wxDEFAULT_DIALOG_STYLE wxCAPTION wxCLOSE_BOX wxMAXIMIZE_BOX wxMINIMIZE_BOX wxRESIZE_BORDER wxALIGN_CENTER wxALL wxBK_DEFAULT wxALIGN_CENTER_VERTICAL wxGROW wxALIGN_CENTER_VERTICAL wxLI_HORIZONTAL wxALIGN_BOTTOM wxALIGN_CENTER_HORIZONTAL wxBITMAP_TYPE_PNG wxTheApp wxBK_LEFT wxHORIZONTAL /; use base qw/Wx::Dialog Uploader::GUI::DlgCommon/; use Wx::Locale qw/:default/; use Wx::Event qw/ EVT_CLOSE /; use Carp; use Data::Dumper; sub new { my ($this, $params) = @_; my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{caption}, wxDefaultPosition, wxDefaultSize, wxCAPTION| wxCLOSE_BOX| wxMAXIMIZE_BOX| wxMINIMIZE_BOX| wxRESIZE_BORDER| wxDEFAULT_DIALOG_STYLE ); $self->{tags} = $params->{tags}; $self->{orientation} = $params->{orientation}||wxVERTICAL; # load controls GlobalSetting_ToolBook($self, 1); $self->properties( $params->{properties} ); $self->{cpane_thumbnail} = $self->FindWindow($main::CPANE_THUMBNAIL); $self->{cpane_resize} = $self->FindWindow($main::CPANE_RESIZE); $self->{cpane_resize_advanced} = $self->FindWindow($main::CPANE_RESIZE_ADVANCED); $self->{cpane_hd} = $self->FindWindow($main::CPANE_HD); $self->{cpane_hd_advanced} = $self->FindWindow($main::CPANE_HD_ADVANCED); $self->{cpane_watermark} = $self->FindWindow($main::CPANE_WATERMARK); $self->{cpane_transfert_advanced} = $self->FindWindow($main::CPANE_TRANSFERT_ADVANCED); $self->{gs_close} = $self->FindWindow($main::GS_CLOSE); $self->InitLabels(); $self->InitChoices(); $self->SetProperties(); $self->InitHandler(); $self->_initEventHandlers(); $self->_DefautPhotoCaption( $main::GS_DEFAULT_PHOTO_CAPTION ); if($@){ Wx::LogMessage("Error during dialogbox initialization"); } # Force layout an paint : awful but works $self->{cpane_hd}->Collapse(0); $self->{cpane_hd}->Collapse(1); $self; } sub _initEventHandlers { my ( $self ) = @_; Wx::Event::EVT_BUTTON( $self, $self->{gs_close}, \&OnClose ); # Required for GTK Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_thumbnail}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_resize}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_resize_advanced}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_hd}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_hd_advanced}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_watermark}, \&OnPaneChanged ); Wx::Event::EVT_COLLAPSIBLEPANE_CHANGED( $self, $self->{cpane_transfert_advanced}, \&OnPaneChanged ); } sub OnClose { my ( $self, $event ) = @_; $self->_close; } sub _close { my ( $self ) = @_; $self->Hide; } sub OnDefaultPhotoCaption { my ( $self, $event ) = @_; $self->_DefautPhotoCaption( $event->GetId ); $event->Skip(1); } # Display prefix textfield when needed sub _DefautPhotoCaption { my ( $self, $id ) = @_; my $b=0; if('CODE' eq ref $self->properties->{$id}->{string_selection}){ if ( $self->properties->{$id} ->{string_selection}->() =~ /caption/i ){ $b=1; } } map { $self->FindWindow($_)->Show($b) }( $main::PHOTO_CAPTION_PREFIX, $main::GS_PHOTO_CAPTION_PREFIX ); } sub OnCreateResized { my ( $self, $event ) = @_; my $id = $event->GetId; my $b = 1; if('CODE' eq ref $self->properties->{$id}->{selection}){ $b = !$self->properties->{$id}->{selection}->() } $self->{cpane_resize}->Collapse($b); $event->Skip(1); } sub OnHDUpload { my ( $self, $event ) = @_; my $id = $event->GetId; my $b = 1; if('CODE' eq ref $self->properties->{$id}->{string_selection}){ if ( $self->properties->{$id} ->{string_selection}->() =~ /resized/){ $b = 0; } } $self->{cpane_hd}->Collapse($b); $event->Skip(1); } sub OnWatermark { my ( $self, $event ) = @_; my $id = $event->GetId; my $b = 1; if('CODE' eq ref $self->properties->{$id}->{value}){ $b = !$self->properties->{$id}->{value}->() } $self->{cpane_watermark}->Collapse($b); $event->Skip(1); } sub OnPaneChanged { my( $self, $event ) = @_; $self->Layout; $event->Skip(1); } sub GlobalSetting_ToolBook { my( $parent ) = $_[0]; my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); my( $tbook ) = Wx::Toolbook->new( $parent, $main::ID_NOTEBOOK, wxDefaultPosition, [-1,-1], wxBK_LEFT ); my $imgl = Wx::ImageList->new( 16, 16 ); map { $imgl->Add( Wx::Bitmap->new( wxTheApp->resource_path($_), wxBITMAP_TYPE_PNG ) ) } qw/picture_edit.png pictures.png picture_key.png picture_go.png world.png/; $tbook->AssignImageList($imgl); my( $item3 ) = Wx::Panel->new( $tbook, -1 ); &main::GS_photo_properties( $item3, 0 ); $tbook->AddPage( $item3, gettext("Photo properties"), 0, 0 ); my( $item4 ) = Wx::Panel->new( $tbook, -1 ); &main::GS_photo_preparation( $item4, 0 ); $tbook->AddPage( $item4, gettext("Photo size"), 0, 1 ); my( $item5 ) = Wx::Panel->new( $tbook, -1 ); &main::GS_photo_watermark( $item5, 0 ); $tbook->AddPage( $item5, gettext("Watermark"), 0, 2 ); my( $item6 ) = Wx::Panel->new( $tbook, -1 ); &main::GS_photo_transfer( $item6, 0 ); $tbook->AddPage( $item6, gettext("Transfer"), 0, 3 ); my( $item7 ) = Wx::Panel->new( $tbook, -1 ); &main::GS_language( $item7, 0 ); $tbook->AddPage( $item7, gettext("Language choice"), 0, 4 ); $topsizer->Add( $tbook, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item87 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item88 ) = Wx::StaticLine->new( $parent, -1, wxDefaultPosition, [20,-1], wxLI_HORIZONTAL ); $item87->AddWindow( $item88, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item89 ) = Wx::Button->new( $parent, $main::GS_CLOSE, gettext("Close"), wxDefaultPosition, wxDefaultSize, 0 ); $item87->AddWindow( $item89, 0, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); $topsizer->Add( $item87, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $_[0]->SetSizerAndFit( $topsizer ); $topsizer; } 1;pLoader-1.6/src/Uploader/GUI/Frame.pm0000644000175000017500000016272611371040661015517 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::Frame; use strict; use Data::Dumper; use Carp; use Wx; use Wx::DND; use Wx qw/ wxCLIP_CHILDREN wxYES_NO wxYES wxICON_QUESTION wxITEM_NORMAL wxID_OK wxDEFAULT_FRAME_STYLE wxVERTICAL wxGROW wxSHAPED wxBITMAP_TYPE_JPEG wxBITMAP_TYPE_GIF wxBITMAP_TYPE_PNG wxBITMAP_TYPE_ANY wxTB_FLAT wxTB_TEXT wxSIZE wxWHITE wxBLACK wxID_CANCEL wxFD_OPEN wxFD_MULTIPLE wxALL wxGROW wxDefaultPosition wxDefaultSize wxTheApp wxIMAGE_LIST_NORMAL wxNO_BORDER wxTE_MULTILINE wxTE_READONLY wxITEM_NORMAL wxBORDER_NONE wxNullBitmap wxTR_MULTIPLE wxTR_EXTENDED wxTR_HIDE_ROOT wxTR_HAS_BUTTONS wxTR_EDIT_LABELS wxMAXIMIZE wxOK wxICON_EXCLAMATION wxICON_INFORMATION WXK_DELETE wxHORIZONTAL wxVERTICAL wxEXPAND wxSWISS wxNORMAL wxBOLD wxALIGN_CENTER /; use base qw/Wx::Frame Class::Accessor::Fast/; use File::Spec; use Wx::Locale qw/:default/; use POSIX qw(ceil floor); require Win32 if($^O =~ /MSWin32/); my @properties = qw/ progressdlg upload_progressdlg imageviewer imageviewer_img tree tree_root treeimglist tree_item_default pwg logwnd oldlogwnd categories imagelist image_preview_dlg image_prop_piwigo exif_dlg image_prop_tags global_settings_dlg piwigo_property_list exif_properties global_settings toolbar branding current_imageviewer_index imageviewer_mnu tree_mnu imageviewer_select_multi frameLayout piwigo_tags image_tags piwigo_photo_properties piwigo_photo_properties_dlg piwigo_photo_properties_tags image_preview_need_refresh imageviewer_refresh imageviewer_item_refresh horizontal_splitter destination_category_dlg destination_categories categories_treectrl /; __PACKAGE__->mk_accessors( @properties ); use Wx::Perl::TextValidator; use Uploader::GUI::wxImageListCtrl; use Uploader::GUI::wxPropertyListDlg; use Uploader::GUI::wxGlobalSettings; use Uploader::GUI::wxImagePreview; use Uploader::GUI::wxPhotoProperties; use Uploader::GUI::wxImageReuploadDlg; use Uploader::GUI::wxImageProcessingProgressDlg; use Uploader::GUI::wxDestinationCategoryDlg; use Uploader::GUI::wxCategoryTreeCtrl; use utf8; $|=1; my $ID_TREE_CTX_MENU = 20000 ; my $ID_IMAGEVIEWER_CTX_MENU = 20100 ; sub new { my( $class, $params ) = @_; my $self = $class->SUPER::new( undef, -1, $params->{title}, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE ); $self->pwg( $params->{pwg} ); $self->imagelist( $params->{imagelist} ); $self->imagelist->pwg( $self->pwg ); $self->imagelist->categories( [] ); $self->init_gui_callbacks; $self->init_properties_dlg_bindings; $self->init_frame; $self->init_menus; $self->init_event_handlers; $self->init_image_types; $self->imageviewer->SelectItem( $self->current_imageviewer_index ) if $self->imageviewer->GetItemCount; # if file in command line parameters, try to load my $files = wxTheApp->argv; $self->SetNewFiles($files) if scalar @$files; $self->Show; $self; } sub init_gui_callbacks { my ( $self ) = @_; # callback for GUI refresh : add thumbnail images to the imageviewer control $self->imagelist->SetNewFilesViewerRefreshCallback( sub { $self->SetNewFilesViewerRefresh(@_) } ); # callback for GUI refresh : progress dialog display of thumbnail image being created $self->imagelist->SetNewFilesProgressCallback( sub { $self->SetNewFilesProgress(@_) } ); $self->imagelist->SetNewFilesDisplayEndInfoCallback( sub { $self->SetNewFilesDisplayEndInfo(@_) } ); # callback for GUI refresh : remove thumbnail images from imageviewer control $self->imagelist->UploadImagesViewerCallback( sub { $self->UploadImagesViewerRefresh(@_) } ); $self->imagelist->ReuploadCallback( sub { Uploader::GUI::wxImageReuploadDlg->new( { title => gettext("Photo update management"), properties => { $main::ID_REUPLOAD_ACTION_FILES => { selection=>sub {$self->imagelist->reupload_action_files(@_)}, label=>gettext("What shall we do with files? (thumbnail, resized, high resolution)"), labels=>[ gettext("nothing"), gettext("replace"), ], }, $main::ID_REUPLOAD_ACTION_PROPERTIES => { selection=>sub{$self->imagelist->reupload_action_properties(@_)}, label=>gettext("What shall we do with single value properties?(caption, comment, author, create date)"), labels=>[ gettext("nothing"), gettext("fill if empty (only replace properties currently empty in Piwigo)"), gettext("replace"), ], }, $main::ID_REUPLOAD_ACTION_PROPERTIES_M => { selection=>sub{$self->imagelist->reupload_action_properties_m(@_)}, label=>gettext("What shall we do with multiple values properties? (categories, tags)"), labels=>[ gettext("nothing"), gettext("append (keep existing and add new)"), gettext("replace"), ], }, $main::ID_REUPLOAD_NOT_ASK => { value=>sub{$self->imagelist->reupload_not_ask(@_)}, label=>gettext("Do not ask me again"), }, $main::ID_REUPLOAD_TEXT => { label=>gettext("A least one photo has already been added in the past."), }, }, } )->ShowModal();} ); # callback for GUI refresh : progress dialog display current uploaded image $self->imagelist->progress_thumbnail_refresh( sub { $self->UploadProgressThumbnailRefresh(@_) } ); $self->imagelist->progress_msg_refresh( sub { $self->UploadProgressMessageRefresh(@_) } ); $self->imagelist->progress_msg_details_refresh( sub { $self->UploadProgressMessageDetailsRefresh(@_) } ); $self->imagelist->progressbar_refresh( sub { $self->UploadProgressBarRefresh(@_) } ); $self->imagelist->progress_endinfo_refresh( sub { $self->UploadDisplayEndInfo(@_) } ); } sub init_properties_dlg_bindings { my ( $self ) = @_; $self->piwigo_photo_properties( { $main::CAPTION => { label=>gettext("Caption")}, $main::PHOTO_PROPERTIES_CAPTION => { multi_selection_mode => sub { $self->multi_selection_mode }, string_selection => sub { return 1; }, value => sub { $self->imagelist->SetImageSelectionName(@_); $self->multi_selection_mode ? $self->imagelist->image_selection_name : $self->imagelist->current_image->site_name; }, pre_process => sub { sub { $self->imagelist->GetCurrentImageCaption(@_); } }, choices => [ map { gettext $_ } @{wxTheApp->caption_patterns} ], frame_callback => sub { $self->imageviewer_item_refresh(1); }, }, $main::COMMENT => { label=>gettext("Comment")}, $main::PHOTO_PROPERTIES_COMMENT => { value => sub { $self->multi_selection_mode ? $self->imagelist->SetImageSelectionComment(@_): $self->imagelist->current_image->site_comment(@_) }, frame_callback => sub { $self->imageviewer_item_refresh(1); }, }, $main::AUTHOR => { label=>gettext("Author")}, $main::PHOTO_PROPERTIES_AUTHOR => { value => sub { $self->multi_selection_mode ? $self->imagelist->SetImageSelectionAuthor(@_): $self->imagelist->current_image->site_author(@_) }, frame_callback => sub { $self->imageviewer_item_refresh(1); }, }, $main::TAGS => { label=>gettext("Tags")}, $main::CREATE_DATE => { label=>gettext("Create date")}, $main::PHOTO_PROPERTIES_CREATE_DATE => { value => sub { $self->multi_selection_mode ? $self->imagelist->SetImageSelectionCreateDate(@_): $self->imagelist->current_image->create_date(@_) }, frame_callback => sub { $self->imageviewer_item_refresh(1); }, }, $main::PRIVACY_LEVEL => { label=>gettext("Who can see?")}, $main::PHOTO_PROPERTIES_PRIVACY_LEVEL => { selection => sub { $self->multi_selection_mode ? $self->imagelist->SetImageSelectionPrivacyLevel(@_): $self->imagelist->current_image->privacy_level(@_) }, choices => wxTheApp->privacy_level_choices, }, $main::PHOTO_PROPERTIES_NB => { texts => [ gettext("Properties"), gettext("Tags") ], }, $main::PHOTO_PROPERTIES_UPLOAD => { label=>gettext("Upload to Piwigo") }, } ); $self->global_settings( { $main::DEFAULT_PHOTO_CAPTION => { label => gettext("Default caption pattern") }, $main::CPANE_RESIZE_ADVANCED => { label => gettext("Advanced") }, $main::CPANE_HD_ADVANCED => { label => gettext("Advanced") }, $main::CPANE_TRANSFERT_ADVANCED => { label => gettext("Advanced") }, $main::GS_THUMBNAIL => { label => gettext("Thumbnail") }, $main::GS_SITE_IMG => { label => gettext("Web sized") }, $main::GS_HD => { label => gettext("High definition") }, $main::GS_CLOSE => { label => gettext("Close")}, $main::GS_THUMBNAIL_SHAPE => { selection => sub { $self->imagelist->thumbnail_shape_square(@_) }, choices => [ map { gettext $_ } ( "Rectangular", "Square" ) ], }, $main::GS_DEFAULT_PHOTO_CAPTION => { string_selection => sub { $self->imagelist->default_caption_pattern(@_) }, choices => [ map { gettext $_ } @{wxTheApp->caption_patterns} ], pre_process => sub { my ( $value ) = @_; wxTheApp->eng_caption_patterns->{$value} }, frame_callback => sub { my( $self, $ctrl, $event ) = @_; $self->OnDefaultPhotoCaption($event); }, }, $main::PHOTO_CAPTION_PREFIX => { label => gettext("Default caption") }, $main::GS_PHOTO_CAPTION_PREFIX => { value => sub { $self->imagelist->default_caption(@_) }, }, $main::GS_AUTO_ROTATE => { label => gettext("Auto rotate image"), value => sub { $self->imagelist->auto_rotate(@_) } }, $main::DEFAULT_AUTHOR => { label => gettext("Default author")}, $main::GS_DEFAULT_AUTHOR => { value => sub { $self->imagelist->author(@_) } }, $main::THUMBNAIL_SIZE => { label => gettext("Site thumbnail size") }, $main::GS_THUMBNAIL_SIZE => { value => sub { $self->imagelist->thumb_size(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::THUMBNAIL_JPEG_QUALITY => { label => gettext("Site thumbnail jpeg quality") }, $main::GS_THUMBNAIL_JPEG_QUALITY => { value => sub { $self->imagelist->th_quality(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::GS_CREATE_RESIZED => { selection => sub { $self->imagelist->create_resized(@_) }, choices => [ map { gettext $_ } ( "Use original", "Use resized original" ) ], frame_callback => sub { my( $dlg, $ctrl, $event ) = @_; $dlg->OnCreateResized($event); }, }, $main::SITE_IMG_WIDTH => { label => gettext("Maximum width") }, $main::GS_SITE_IMG_WIDTH => { value => sub { $self->imagelist->resize_w(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::SITE_IMG_HEIGHT => { label => gettext("Maximum height") }, $main::GS_SITE_IMG_HEIGHT => { value => sub { $self->imagelist->resize_h(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::SITE_IMG_JPEG_QUALITY => { label => gettext("Site image jpeg quality") }, $main::GS_SITE_IMG_JPEG_QUALITY => { value => sub { $self->imagelist->quality(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::SITE_IMG_FILTER => { label => gettext("Site image filter") }, $main::GS_SITE_IMG_FILTER => { string_selection => sub { $self->imagelist->filter(@_) }, choices => [ qw/Point Box Triangle Hermite Hanning Hamming Blackman Gaussian Quadratic Cubic Catrom Mitchell Lanczos Bessel Sinc/ ], }, $main::SITE_IMG_BLUR => { label => gettext("Site image blur") }, $main::GS_SITE_IMG_BLUR => { value => sub { $self->imagelist->blur(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::SITE_IMG_INTERLACE => { label => gettext("Site image interlace") }, $main::GS_SITE_IMG_INTERLACE => { string_selection => sub { $self->imagelist->interlace(@_) }, choices => [ qw/None Line Plane Partition JPEG GIF PNG/ ], }, $main::GS_REMOVE_UPLOADED_FROM_SELECTION => { label => gettext("Remove uploaded photo from selection"), value => sub { $self->imagelist->remove_uploaded_from_selection(@_) }, }, $main::GS_HD_UPLOAD => { choices => [ map { gettext $_ } @{wxTheApp->upload_hd} ], pre_process => sub { my ( $value ) = @_; wxTheApp->eng_upload_hd->{$value} }, string_selection => sub { $self->imagelist->upload_hd(@_) }, frame_callback => sub { my( $self, $ctrl, $event ) = @_; $self->OnHDUpload($event); }, }, $main::HD_IMG_WIDTH => { label => gettext("Maximum width") }, $main::GS_HD_IMG_WIDTH => { label => gettext("HD image width"), value => sub { $self->imagelist->hd_w(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::HD_IMG_HEIGHT => { label => gettext("Maximum height") }, $main::GS_HD_IMG_HEIGHT => { label => gettext("HD image height"), value => sub { $self->imagelist->hd_h(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::HD_IMG_JPEG_QUALITY => { label => gettext("HD image jpeg quality") }, $main::GS_HD_IMG_JPEG_QUALITY => { value => sub { $self->imagelist->hd_quality(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::HD_IMG_FILTER => { label => gettext("HD image filter") }, $main::GS_HD_IMG_FILTER => { string_selection => sub { $self->imagelist->hd_filter(@_) }, choices => [ qw/Point Box Triangle Hermite Hanning Hamming Blackman Gaussian Quadratic Cubic Catrom Mitchell Lanczos Bessel Sinc/ ], }, $main::HD_IMG_BLUR => { label => gettext("HD image blur") }, $main::GS_HD_IMG_BLUR => { value => sub { $self->imagelist->hd_blur(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::HD_IMG_INTERLACE => { label => gettext("HD image interlace") }, $main::GS_HD_IMG_INTERLACE => { string_selection => sub { $self->imagelist->hd_interlace(@_) }, choices => [ qw/None Line Plane Partition JPEG GIF PNG/ ], }, $main::GS_WMARK_ACTIVATE => { label => gettext("Activate watermark"), value => sub { $self->imagelist->watermark_activate(@_) }, frame_callback => sub { my( $self, $ctrl, $event ) = @_; $self->OnWatermark($event); }, }, $main::GS_WMARK_ACTIVATE_HD => { label => gettext("Activate watermark on high definition"), value => sub { $self->imagelist->watermark_activate_pwg_high(@_) }, frame_callback => sub { my( $self, $ctrl, $event ) = @_; $self->OnWatermark($event); }, }, $main::WMARK_TEXT => { label => gettext("Text") }, $main::GS_WMARK_TEXT => { value => sub { $self->imagelist->watermark_text(@_) }, }, $main::WMARK_TEXT_SIZE => { label => gettext("Text size") }, $main::GS_WMARK_TEXT_SIZE => { value => sub { $self->imagelist->watermark_text_size(@_) }, }, $main::WMARK_COLOR => { label => gettext("Color") }, $main::GS_WMARK_COLOR => { string_selection => sub { $self->imagelist->watermark_color(@_) }, choices => [ map { gettext $_ } @{wxTheApp->colors} ], pre_process => sub { my ( $value ) = @_; wxTheApp->eng_colors->{$value} }, }, $main::WMARK_POSITION => { label => gettext("Position") }, $main::GS_WMARK_POSITION => { string_selection => sub { $self->imagelist->watermark_position(@_) }, choices => [ map { gettext $_ } @{wxTheApp->positions} ], pre_process => sub { my ( $value ) = @_; wxTheApp->eng_positions->{$value} }, }, $main::WMARK_MARGIN_TOP => { label => gettext("Top margin") }, $main::GS_WMARK_MARGIN_TOP => { value => sub { $self->imagelist->watermark_y(@_) }, }, $main::WMARK_MARGIN_LEFT => { label => gettext("Left margin") }, $main::GS_WMARK_MARGIN_LEFT => { value => sub { $self->imagelist->watermark_x(@_) }, }, $main::CHUNK_SIZE => { label => gettext("Transfert chunk size") }, $main::GS_CHUNK_SIZE => { value => sub { wxTheApp->chunk_size(@_) }, validator => Wx::Perl::TextValidator->new( '\d' ) }, $main::LANGUAGE => { label => gettext("Choose a language") }, $main::GS_LANGUAGE => { selection => sub { wxTheApp->current_language(@_) }, choices => [ map { sprintf($_->[0], gettext($_->[2])) } @{wxTheApp->available_languages} ], pre_process => sub { my ( $value ) = @_; wxTheApp->available_languages->[$value][1] }, frame_callback => sub { my ( $self, $ctrl, $event ) = @_; Wx::LogMessage( sprintf( "%s : %s", gettext("pLoader needs to be restarted to display the new selected language"), gettext(wxTheApp->available_languages->[$event->GetSelection][2]) ) ); wxTheApp->layout_clean(1); }, }, } ); $self->piwigo_property_list( [ { label => gettext("Photo caption"), }, { label => gettext("Comment"), }, { label => gettext("Author"), }, { label => gettext("File name"), }, { label => gettext("Create date"), }, ] ); $self->exif_properties( [ { label => gettext("Create date"), value => sub { $self->imagelist->current_image->create_date }, readonly => 1, }, { label => gettext("Model"), value => sub { $self->imagelist->current_image->exif_tag('Model') }, readonly => 1, }, { label => gettext("Width"), value => sub { $self->imagelist->current_image->exif_tag('ImageWidth') }, readonly => 1, }, { label => gettext("Height"), value => sub { $self->imagelist->current_image->exif_tag('ImageHeight') }, readonly => 1, }, { label => gettext("Orientation"), value => sub { $self->imagelist->current_image->exif_tag('Orientation') }, readonly => 1, }, { label => "ISO", value => sub { $self->imagelist->current_image->exif_tag('ISO') }, readonly => 1, }, { label => gettext("Shutter speed"), value => sub { $self->imagelist->current_image->exif_tag('ExposureTime') }, readonly => 1, }, { label => gettext("Aperture"), value => sub { $self->imagelist->current_image->exif_tag('ApertureValue') }, readonly => 1, }, { label => gettext("Focal length"), value => sub { $self->imagelist->current_image->exif_tag('FocalLength') }, readonly => 1, }, { label => gettext("Lens"), value => sub { $self->imagelist->current_image->exif_tag('Lens') }, readonly => 1, }, ] ); $self->image_tags( sub { scalar @{$self->imagelist->image_selection} > 1 ? $self->imagelist->SetImageSelectionTags(@_) : $self->imagelist->current_image->site_tags(@_)||[] } ); $self->piwigo_tags( sub { wxTheApp->pwg->tags } ); } sub init_image_types { my ( $self ) = @_; $self->{IMGTYPE} = { 'jpg' => wxBITMAP_TYPE_JPEG, 'gif' => wxBITMAP_TYPE_GIF, 'png' => wxBITMAP_TYPE_PNG, }; } sub init_frame { my ( $self ) = @_; $self->create_toolbar; my $sizer_h = Wx::BoxSizer->new( wxHORIZONTAL ); $self->imageviewer( Uploader::GUI::wxImageListCtrl->new( { parentwnd => $self, imagelist => $self->imagelist, image_size => $self->imagelist->wx_thumb_size, columns => $self->piwigo_property_list, } ) ); $self->piwigo_photo_properties_dlg ( Uploader::GUI::wxPhotoProperties->new( { parentwnd => $self, categories => [ @{$self->pwg->categories}], properties => $self->piwigo_photo_properties, tags => { id => $main::PHOTO_PROPERTIES_TAG, choices => $self->piwigo_tags, selection => $self->image_tags, creation_callback => sub { $self->_create_piwigo_tag(@_) }, }, } ) ); $self->piwigo_photo_properties_tags( $self->piwigo_photo_properties_dlg->FindWindow($main::PHOTO_PROPERTIES_TAG) ); $self->tree( $self->piwigo_photo_properties_dlg->FindWindow($main::PHOTO_PROPERTIES_CATEGORIES) ); $self->init_dnd_targets; $self->init_dialogs; $self->show_hide_pwg_categories_empty_msg; if( $self->imagelist->wx_thumb_imglist->GetImageCount){ $self->ShowImageViewer; $self->imageviewer->Refresh( $self->imagelist->wx_thumb_imglist ); $self->OnUpdateImageviewerNotEmpty; } else{ $self->OnUpdateImageviewerEmpty; } # the imageviewer has a stretch factor of 1 : expands its size on frame resize $sizer_h->Add( $self->imageviewer, 1, wxEXPAND|wxALL, 2 ); $sizer_h->Add( $self->piwigo_photo_properties_dlg, 0, wxEXPAND|wxALL, 2 ); $self->SetSizer( $sizer_h ); my $new_size = $sizer_h->Fit( $self ); $self->SetMinSize([600, 660]); $self->Center; } sub _create_piwigo_tag { my ( $self, $name ) = @_; if( Wx::MessageBox( sprintf( "%s \"%s\" ?", gettext("Do you want to create"), $name, ), gettext("Piwigo search information"), wxYES_NO | wxICON_QUESTION, ) == wxYES ){ $self->pwg->AddTags($name); $self->pwg->RefreshTags; } } sub OnUpdateImageviewerEmpty { my ( $self ) = @_; $self->piwigo_photo_properties_dlg->SetDisabled; $self->imageviewer->OnEmpty; } sub OnUpdateImageviewerNotEmpty { my ( $self ) = @_; $self->piwigo_photo_properties_dlg->SetEnabled; $self->imageviewer->OnNotEmpty; } sub init_dialogs { my ( $self ) = @_; $self->exif_dlg( Uploader::GUI::wxPropertyListDlg->new( { parentwnd => $self, properties => $self->exif_properties, caption => sprintf("%s - EXIF", gettext("Properties")), } ) ); $self->exif_dlg->Hide; $self->global_settings_dlg( Uploader::GUI::wxGlobalSettings->new( { parentwnd => $self, caption => gettext("Global settings"), properties => $self->global_settings, } ) ); $self->global_settings_dlg->Hide; $self->image_preview_dlg( Uploader::GUI::wxImagePreview->new( { parentwnd => $self, caption => gettext("Preview"), } ) ); $self->destination_category_dlg( Uploader::GUI::wxDestinationCategoryDlg->new( { parentwnd => $self, caption => gettext("Upload to Piwigo"), categories => [@{$self->pwg->categories}], properties => { $main::CHOOSE_DESTINATION => { label => wxTheApp->branding->{'What is the destination category?'} }, $main::DESTINATION_CATEGORIES_OK => { label=>gettext("Upload to Piwigo")}, $main::DESTINATION_CATEGORIES_CANCEL => { label=>gettext("Cancel")}, $main::DESTINATION_CATEGORIES => { id_selection => sub { $self->imagelist->categories(@_) }, frame_callback => sub { my ( $dlg, $ctrl, $evt ) = @_; $dlg->FindWindow($main::DESTINATION_CATEGORIES_OK)->Enable(scalar @{$self->imagelist->categories}); }, }, }, frame_callback => sub { $self->OnRefreshCategories }, } ) ); $self->destination_category_dlg->Hide; $self->destination_categories( $self->destination_category_dlg->FindWindow($main::DESTINATION_CATEGORIES) ); $self->categories_treectrl( [ $self->destination_categories, $self->tree, ] ); } sub init_dnd_targets { my ( $self ) = @_; $self->imageviewer->SetDropTarget( DNDImageListDropTarget->new( $self->imageviewer ) ); $self->tree->SetDropTarget( DNDCategoryTreeDropTarget->new( $self->tree ) ); } sub OnPhotoProperties { my ( $self ) = @_; $self->exif_dlg->Show(1); } sub OnPreview { my ( $self ) = @_; $self->image_preview_dlg->Show(1); } sub OnGlobalSettings { my ( $self ) = @_; $self->global_settings_dlg->Show(1); } sub OnGeneralSettingsClose { my ( $self, $event ) = @_; $self->global_settings_dlg->Hide; } sub OnImageExifPropClose { my ( $self, $event ) = @_; $self->image_exif_prop->Hide; } sub show_hide_pwg_categories_empty_msg { my ( $self ) = @_; map { $_->GetCount > 1 ? $_->HideEmptyMsg : $_->ShowEmptyMsg; }@{$self->categories_treectrl}; } sub init_menus { my ( $self ) = @_ ; $self->_tree_mnu; $self->_imageviewer_mnu; } sub _tree_mnu { my ( $self ) = @_; my $ctx_mnu = Wx::Menu->new; map { $ctx_mnu->Append( @$_[0..2], wxITEM_NORMAL ); } ( # workaround : first item does not show bitmap [ 0, "", "", wxTheApp->resource_path('mnu_folder_new.png'), ], [ 1+$ID_TREE_CTX_MENU, wxTheApp->branding->{'Add new category'}, sprintf( "%s %s %s %s", gettext("Add a new"), wxTheApp->branding->{category}, gettext("to the currently selected"), wxTheApp->branding->{category}, ), wxTheApp->resource_path('mnu_folder_new.png'), ], [ 2+$ID_TREE_CTX_MENU, gettext("Refresh"), sprintf( "Refresh %s list.", wxTheApp->branding->{category}, ), wxTheApp->resource_path('mnu_refresh.png'), ], [ 3+$ID_TREE_CTX_MENU, gettext("Expand all"), sprintf( "Expand %s list.", wxTheApp->branding->{category}, ), wxTheApp->resource_path('mnu_expandall.png'), ], [ 4+$ID_TREE_CTX_MENU, gettext("Collapse all"), sprintf( "Collapse %s list.", wxTheApp->branding->{category}, ), wxTheApp->resource_path('mnu_collapseall.png'), ], ); $ctx_mnu->Delete(0); $self->tree_mnu( $ctx_mnu ); } sub _imageviewer_mnu { my ( $self ) = @_; my $ctx_mnu = Wx::Menu->new; map { $ctx_mnu->Append( @$_[0..2] ); } ( # workaround : first item does not show bitmap [ 0, "", "", wxTheApp->resource_path('mnu_properties.png'), ], [ 1+$ID_IMAGEVIEWER_CTX_MENU, gettext("Properties"), gettext("Modify photo properties"), wxTheApp->resource_path('mnu_properties.png'), ], [ 2+$ID_IMAGEVIEWER_CTX_MENU, gettext("Preview"), gettext("Display photo preview"), wxTheApp->resource_path('mnu_preview.png'), ], ); $ctx_mnu->Delete(0); $self->imageviewer_mnu( $ctx_mnu ); } sub init_event_handlers { my ( $self ) = @_ ; Wx::Event::EVT_MENU( $self, 101, \&OnAddImages ); Wx::Event::EVT_MENU( $self, 102, \&OnRemoveImages ); Wx::Event::EVT_MENU( $self, 103, \&OnUploadImages ); Wx::Event::EVT_MENU( $self, 104, \&OnGlobalSettings ); Wx::Event::EVT_CHOICE( $self, 106, \&OnPhotoSelMode ); 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_DESELECTED($self, $self->imageviewer, \&OnImageViewerItemDeSelected) ; 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, \&OnAddCategory ); Wx::Event::EVT_MENU( $self, 2+$ID_TREE_CTX_MENU, \&OnRefreshCategories ); Wx::Event::EVT_MENU( $self, 3+$ID_TREE_CTX_MENU, \&OnExpandCategories ); Wx::Event::EVT_MENU( $self, 4+$ID_TREE_CTX_MENU, \&OnCollapseCategories ); Wx::Event::EVT_MENU( $self, 1+$ID_IMAGEVIEWER_CTX_MENU, \&OnPhotoProperties ); Wx::Event::EVT_MENU( $self, 2+$ID_IMAGEVIEWER_CTX_MENU, \&OnPreview ); Wx::Event::EVT_BUTTON( $self, $main::PHOTO_PROPERTIES_UPLOAD, \&OnUploadImages ); Wx::Event::EVT_BUTTON( $self, $self->imageviewer->add_button->GetId, \&OnAddImages ); Wx::Event::EVT_KEY_DOWN($self, \&OnKeyDown ); # only refresh when calling event is finished Wx::Event::EVT_IDLE( $self, sub { my ( $self, $event ) = @_; if ( $self->image_preview_need_refresh and $self->image_preview_dlg->IsShown ){ $self->set_preview_image; $self->image_preview_dlg->Refresh; $self->image_preview_need_refresh(0); } if($self->imageviewer_refresh){ $self->imageviewer->Refresh; $self->imageviewer_refresh(0); } if($self->imageviewer_item_refresh){ # for batch mode map { $self->imageviewer->ItemRefresh( $_ ) } @{$self->imageviewer->GetSelectedItems}; $self->imageviewer_item_refresh(0); } if(!$self->selected_images_count and $self->piwigo_photo_properties_dlg->IsEnabled){ $self->piwigo_photo_properties_dlg->SetDisabled; } $self->OnUpdateToolbar; $event->Skip; } ); } sub selected_images_count { my ( $self ) = @_; scalar @{$self->imageviewer->GetSelectedItems}; } { my $prevfile; my $prevdir; sub OnAddImages { my( $self, $event ) = @_; $prevdir = wxTheApp->default_openfile_dir if ( -d wxTheApp->default_openfile_dir); my $dialog = Wx::FileDialog->new ( $self, gettext("Select photos for upload"), $prevdir, $prevfile, sprintf("%s (*.JPG;*.jpg)|*.JPG;*.jpg|%s (*.*)|*.*", gettext("JPEG files"), gettext("All")), wxFD_OPEN|wxFD_MULTIPLE ); my $file_paths = []; if( $dialog->ShowModal != wxID_CANCEL ) { @$file_paths = $dialog->GetPaths; $self->SetNewFiles($file_paths) ; } wxTheApp->default_openfile_dir( $dialog->GetDirectory ); $dialog->Destroy; } } sub OnUpdateToolbar { my( $self ) = @_; if($self->global_settings_dlg->IsShown){ $self->toolbar->EnableTool(104, 0); } else{ $self->toolbar->EnableTool(104, 1); } if($self->global_settings_dlg->IsShown){ $self->toolbar->EnableTool(104, 0); } else{ $self->toolbar->EnableTool(104, 1); } } sub OnRemoveImages { my( $self, $event ) = @_; $self->imagelist->RemoveImageSelection; $self->imageviewer->Refresh; if (!$self->imageviewer->GetItemCount){ $self->image_preview_dlg->image( 0 ); # have to reset $self->piwigo_photo_properties_dlg->ClearProperties; $self->piwigo_photo_properties_tags->ClearAllSelection; $self->imagelist->SetCurrentImage(-1); $self->OnUpdateImageviewerEmpty; } else{ $self->OnUpdateImageviewerNotEmpty; } if(!$self->multi_selection_mode){ $self->OnUpdateSingleSelectionModeUI; } $self->image_preview_dlg->Refresh; $self->exif_dlg->Refresh; } sub SetNewFiles { my ( $self, $file_paths ) = @_; $self->ShowImageViewer(); $self->progressdlg->Destroy if defined $self->progressdlg; $self->progressdlg( Uploader::GUI::wxImageProcessingProgressDlg->new( { title => gettext("Image processing progress information"), bt_label => gettext("Cancel image processing"), bt_close_label => gettext("Close"), stop_processing => sub { $self->imagelist->stop_processing(1); Wx::Yield(); }, } ) ); $self->progressdlg->Show(1); Wx::Yield(); my $files = [ map { # to make sure that unicode chars in filenames are supported { ANSIPathName => $^O =~ /MSWin32/ ? Win32::GetANSIPathName($_) : $_, PathName => $_, }, }@$file_paths ]; @$files = sort { $a->{PathName} cmp $b->{PathName} } @$files; $self->imagelist->SetNewFiles( $files ); } sub OnTreeSelChanged { my( $self, $event ) = @_; $self->imagelist->categories( $event->GetEventObject->GetSelectionsIds ); } sub OnTreeItemRightClick { my( $self, $event ) = @_; $self->PopupMenu($self->tree_mnu, wxDefaultPosition); } sub OnTreeEndLabelEdit { my( $self, $event ) = @_; my $label = $event->GetLabel; $label =~ s/^\s+$//; if(defined($label) and !( "" eq $label )){ $self->_SetLabel($event) } else{ $event->Veto; } } sub _SetLabel { my( $self, $event ) = @_; my $category = $self->tree->GetPlData($event->GetItem); my $category_id; $category_id = $category->{id} if 'HASH' eq ref($category) ; my $comment; my ( $success, $status_msg, $content ) = $self->pwg->SetInfoCategories( $event->GetLabel, $comment, $category_id ); my $ok = 1; if(!$success){ $ok = 0; } if('fail' eq $content->{stat}){ $ok = 0; } # method call failed if(!$ok){ $event->Veto; Wx::MessageBox( sprintf( "%s %s", gettext("Update failed : "), $status_msg ), gettext("Piwigo update error"), wxOK | wxICON_EXCLAMATION, ); Wx::LogMessage("%s\n\n%s", Dumper($content), gettext("This function is not available. A Piwigo upgrade may resolve this issue.")); } } sub OnImageViewerItemRightClick { my( $self, $event ) = @_; $self->PopupMenu($self->imageviewer_mnu, wxDefaultPosition); } sub OnExpandCategories { my ( $self, $event ) = @_; my $parent_item = $self->tree->GetSelection; $self->tree->ExpandAllChildren($parent_item); $self->tree->EnsureVisible($parent_item); } sub OnCollapseCategories { my ( $self, $event ) = @_; my $parent_item = $self->tree->GetSelection; $self->tree->CollapseAllChildren($parent_item); $self->tree->Expand($parent_item) if -1 == $self->tree->GetPlData($parent_item); } sub OnAddCategory { my ( $self, $event ) = @_; $self->tree->AddCategory; } sub OnRefreshCategories { my ( $self, $event ) = @_; $self->_refresh_all_categories_helper; } sub _refresh_all_categories_helper { my ( $self ) = @_; my $busycursor = Wx::BusyCursor->new(); $self->tree->CollapseAll; $self->tree->DeleteAllItems; $self->pwg->RefreshCategories(); $self->tree->categories( $self->pwg->categories ); $self->tree->Populate; $self->show_hide_pwg_categories_empty_msg; } sub OnImageViewerEndLabelEdit { my( $self, $event ) = @_; my $image = $self->imagelist->GetImage($event->GetIndex); $image->site_name( $event->GetLabel ); $self->piwigo_photo_properties_dlg->SetProperties; } sub OnImageViewerItemActivated { my( $self, $event ) = @_; $self->current_imageviewer_index( $event->GetIndex ); $self->OnPhotoProperties; } sub OnImageViewerItemSelected { my( $self, $event ) = @_; my $bc = Wx::BusyCursor->new; my $indx = $event->GetIndex; $self->piwigo_photo_properties_dlg->SetEnabled if !$self->piwigo_photo_properties_dlg->IsEnabled; $self->_on_imageviewer_item_selected($indx); $event->Skip; } sub OnImageViewerItemDeSelected { my( $self, $event ) = @_; my $bc = Wx::BusyCursor->new; $self->_on_imageviewer_item_selection_changed; $event->Skip; } sub _on_imageviewer_item_selected { my ( $self, $index ) = @_; $self->current_imageviewer_index($index); $self->imagelist->SetCurrentImage($index); $self->_on_imageviewer_item_selection_changed; } sub _on_imageviewer_item_selection_changed { my ( $self ) = @_; $self->imagelist->image_selection( $self->imageviewer->GetSelectedItems ); # for batch mode : reset the batch buffer if single selection if($self->multi_selection_mode){ $self->OnUpdateMultiSelectionModeUI; $self->imagelist->SetImageSelectionTags([]); $self->imagelist->image_selection_privacy_level(-1); $self->imagelist->image_selection_name(""); $self->imagelist->image_selection_author(""); $self->imagelist->image_selection_comment(""); $self->imagelist->image_selection_create_date(-1); } else{ $self->OnUpdateSingleSelectionModeUI; } # process image_preview in idle time # and when current event is processed # see call to EVT_IDLE $self->image_preview_need_refresh(1); $self->piwigo_photo_properties_dlg->SetProperties if defined $self->piwigo_photo_properties_dlg; $self->exif_dlg->Refresh; $self->piwigo_photo_properties_tags->RefreshChoices; } sub multi_selection_mode { my ( $self ) = @_; scalar @{$self->imagelist->image_selection} > 1; } sub OnUpdateMultiSelectionModeUI{ my( $self ) = @_; $self->piwigo_photo_properties_dlg->SetMultiSelectionMode( $self->imageviewer->GetSelectectItemsCount ); } sub OnUpdateSingleSelectionModeUI{ my( $self ) = @_; $self->piwigo_photo_properties_dlg->SetSingleSelectionMode; } sub set_preview_image { my ( $self ) = @_; my $current_image = $self->imagelist->current_image; my $image = Wx::Image->new; $image->LoadFile( $current_image->file, wxBITMAP_TYPE_ANY ); if($self->imagelist->auto_rotate){ # exif from original image my $orientation = $current_image->exif_metadata->{Orientation}; # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW if( $orientation =~ m/Rotate (\d+)/ ){ for(my $i=0; $i < floor($1/90) ; $i++){ $image = $image->Rotate90; } } } $self->image_preview_dlg->image_size( [$image->GetWidth, $image->GetHeight, ] ); $self->image_preview_dlg->image( $image ); } sub OnImageViewerKeyDown { my( $self, $event ) = @_; if(WXK_DELETE == $event->GetKeyCode){ $self->OnRemoveImages(); my $index = $self->current_imageviewer_index < $self->imageviewer->GetItemCount ? $self->current_imageviewer_index : $self->imageviewer->GetItemCount -1 ; $self->imageviewer->SelectItem( $index ); $self->imageviewer->EnsureVisible( $index ); } } sub OnUploadImages { my( $self, $event ) = @_; my $select_all = 1; eval { $self->ProcessImageSelection( $select_all ); }; } # remove image from imagelist when uploaded sub UploadImagesViewerRefresh { my ( $self ) = @_; $self->imageviewer->Refresh; if(!$self->imageviewer->GetItemCount){ $self->image_preview_dlg->image(0); $self->OnUpdateImageviewerEmpty; } # reset previous selection $self->imagelist->image_selection( [] ); if(!$self->multi_selection_mode){ $self->OnUpdateSingleSelectionModeUI; } $self->image_preview_dlg->Refresh; Wx::Yield(); } sub UploadProgressMessageRefresh { my ( $self, $msg ) = @_; Wx::Yield(); $self->upload_progressdlg->processing( $msg ); $self->upload_progressdlg->LogProgress(); Wx::Yield(); } sub UploadProgressMessageDetailsRefresh { my ( $self, $msg ) = @_; Wx::Yield(); $self->upload_progressdlg->processing_details( $msg ); $self->upload_progressdlg->LogProgress(); Wx::Yield(); } sub UploadProgressThumbnailRefresh { my ( $self ) = @_; my $imagelist = $self->imagelist ; $self->upload_progressdlg->image->SetBitmap(wxNullBitmap); $self->upload_progressdlg->image->SetBitmap( Wx::Bitmap->new( $self->imagelist->current_image->wx_thumb_file, $self->GetWxBitmapType($self->imagelist->type), ) ); Wx::Yield(); } sub UploadProgressBarRefresh { my ( $self, $value ) = @_; eval { $self->upload_progressdlg->progress( $value ); $self->upload_progressdlg->LogProgress(); }; #croak gettext("Upload cancelled") if $@; Wx::Yield(); } sub SetNewFilesDisplayEndInfo { my ( $self, $msg, $errors ) = @_; if($errors){ $self->progressdlg->DisplayEndInfo($msg); } else{ $self->progressdlg->Show(0); } } sub UploadDisplayEndInfo { my ( $self, $msg ) = @_; my $imagelist = $self->imagelist ; $self->upload_progressdlg->DisplayEndInfo($msg); } sub ShowImageViewer { my ( $self ) = @_; if(!$self->imageviewer->IsShown){ $self->imageviewer->Show(1); } } sub SetNewFilesViewerRefresh { my ( $self ) = @_; my $wximagelist = $self->imagelist->wx_thumb_imglist; #print Dumper "SetNewFilesViewerRefresh", $self->imagelist->current_image; my $indx = $wximagelist->Add( Wx::Bitmap->new( $self->imagelist->current_image->wx_thumb_file, $self->GetWxBitmapType($self->imagelist->type), ) ) if defined $self->imagelist->current_image->wx_thumb_file; #print $self->imagelist->current_image->wx_thumb_file, " added with index ", $indx, "\n"; $self->imageviewer->Refresh( $wximagelist ); $self->OnUpdateImageviewerNotEmpty if $self->imageviewer->GetItemCount; Wx::Yield(); } sub GetWxBitmapType { my ( $self, $type ) = @_; $self->{IMGTYPE}->{$type}; } # prepare and upload image_selection sub ProcessImageSelection { my ( $self, $select_all ) = @_; return if wxTheApp->CheckUpload; return if !scalar @{$self->imagelist->sums}; if( $self->destination_categories_are_empty ){ return unless $self->destination_category_dlg->ShowModal != wxID_CANCEL; } $self->imagelist->image_selection( $self->imageviewer->GetAllItems ) if $select_all; return if( !defined $self->imagelist->image_selection ); return if( !scalar @{$self->imagelist->image_selection} ); $self->upload_progressdlg->Destroy if defined $self->upload_progressdlg; $self->upload_progressdlg( Uploader::GUI::wxImageProcessingProgressDlg->new( { title => gettext("Image upload progress information"), bt_label => gettext("Cancel upload"), bt_close_label => gettext("Close"), stop_processing => sub { $self->imagelist->stop_processing(1); Wx::Yield(); }, } ) ); # modeless dialog $self->upload_progressdlg->Show(1); Wx::Yield(); eval { $self->imagelist->UploadSelection; }; if($@){ Wx::MessageBox( sprintf( gettext("Upload cancelled"), ), gettext("Piwigo upload information"), wxOK | wxICON_INFORMATION, ); } } sub destination_categories_are_empty { my ( $self ) = @_; !scalar @{$self->imagelist->categories}; } sub SetNewFilesProgress { my ( $self ) = @_; my $imagelist = $self->imagelist; $self->progressdlg->processing( sprintf( $imagelist->progress_msg, $imagelist->current_image->file, ) ); eval { $self->progressdlg->image->SetSize([ $imagelist->wx_thumb_size, $imagelist->wx_thumb_size]); $self->progressdlg->image->SetBitmap(wxNullBitmap); $self->progressdlg->image->SetBitmap( Wx::Bitmap->new( $imagelist->current_image->wx_thumb_file, $self->GetWxBitmapType( $imagelist->type ) ) ); $self->progressdlg->progress( $imagelist->count * ( 100/scalar @{$imagelist->new_files} ) ); $self->progressdlg->LogProgress(); }; Wx::Yield(); } sub OnClose { my $self = shift; # Restaure previous log wnd Wx::Log::SetActiveTarget( $self->oldlogwnd ); # allways store wxTheApp->StoreConnectionProperties; $self->imagelist->Store; wxTheApp->login_dlg->Destroy; wxTheApp->imageviewerIndex( $self->current_imageviewer_index ); my $frameLayout = {}; ( $frameLayout->{pX}, $frameLayout->{pY}, $frameLayout->{W}, $frameLayout->{H} ) = ( $self->GetPositionXY, $self->GetSizeWH ) ; wxTheApp->frameLayout( $frameLayout ); wxTheApp->StoreLayoutProperties; #destroy hidden dialogs $self->global_settings_dlg->Destroy; $self->image_preview_dlg->Destroy; $self->exif_dlg->Destroy; $self->destination_category_dlg->Destroy; $self->progressdlg->Destroy if defined $self->progressdlg; $self->upload_progressdlg->Destroy if defined $self->upload_progressdlg; $self->Destroy; } sub create_toolbar { my( $self ) = @_; my $tb = Wx::ToolBar->new( $self, -1, wxDefaultPosition, [600, -1], wxTB_FLAT|wxTB_TEXT ); $tb->SetToolBitmapSize( wxSIZE( 32, 32 ) ); map { my $icon1 = Wx::Icon->new(); eval { $icon1->LoadFile($_->[2], $_->[3]); }; my $tb_icon1 = Wx::Bitmap->new( $icon1 ); my $icon2 = Wx::Icon->new(); eval { $icon2->LoadFile($_->[5], $_->[3]); }; my $tb_icon2 = Wx::Bitmap->new( $icon2 ); $tb->AddTool( $_->[0], $_->[1], $tb_icon1, $tb_icon2, wxITEM_NORMAL, $_->[6] ); $tb->EnableTool( $_->[0], $_->[4]); } ( [ 101, gettext("Add photos"), wxTheApp->resource_path('tb_add.png'), wxBITMAP_TYPE_PNG, 1, wxTheApp->resource_path('tb_add.png'), gettext("Add photos for resizing and uploading") ], [ 102, gettext("Remove selected photos"), wxTheApp->resource_path('tb_remove.png'), wxBITMAP_TYPE_PNG, 1, wxTheApp->resource_path('tb_remove.png'), gettext("Remove selected photos. Original files are not deleted") ], [ 104, gettext("Preferences"), wxTheApp->resource_path('tb_settings.png'), wxBITMAP_TYPE_PNG, 0, wxTheApp->resource_path('tb_settings.png'), gettext("Change global settings") ], ); $tb->AddSeparator; $tb->AddControl( Wx::Choice->new( $tb, 106, wxDefaultPosition, [300, -1], [], ) ); my $ch = $tb->FindWindow(106); $ch->SetToolTip(gettext("How photo selection is displayed")); map { $ch->Append(gettext($_), $_); }( "Thumbnail and caption", "Thumbnail", "Property list" ); $ch->SetStringSelection(gettext($self->imagelist->display_mode)); $tb->Realize; $self->toolbar( $tb ); $self->SetToolBar($tb); return $tb; } sub OnPhotoSelMode { my ( $self, $event )= @_; $self->imagelist->display_mode( $event->GetClientData ); $self->imageviewer->change_display_mode(1); } sub _create_textctrl { my( $self, $parent, $text, $size ) = @_; return Wx::TextCtrl->new( $parent, -1, $text, [0, 0], $size, wxNO_BORDER | wxTE_MULTILINE | wxTE_READONLY ); } sub create_textctrl { my( $self, $text, $size ) = @_; return $self->_create_textctrl( $self, $text, $size ); } sub DESTROY { my( $self ) = @_; } 1; package DNDImageListDropTarget; use Wx qw/wxTheApp/; use base qw(Wx::FileDropTarget Class::Accessor::Fast); __PACKAGE__->mk_accessors( qw/ imageviewer / ); sub new { my $class = shift; my $imageviewer = shift; my $self = $class->SUPER::new( @_ ); $self->imageviewer($imageviewer); return $self; } sub OnDropFiles { my( $self, $x, $y, $files ) = @_; wxTheApp->frame->SetNewFiles($files) ; } 1; package DNDCategoryTreeDropTarget; use base qw(Wx::TextDropTarget Class::Accessor::Fast); use Data::Dumper; use Wx qw/ wxDragNone wxDragCopy wxDragMove wxTheApp /; __PACKAGE__->mk_accessors( qw/ tree / ); sub new { my ( $class, $tree ) = @_; my $self = $class->SUPER::new(); $self->tree($tree); return $self; } sub OnDropText { my( $self, $x, $y, $textdata ) = @_; # must be $VAR1 because $textdata is the result of Data::Dumper my $VAR1; eval $textdata; eval { if(scalar @$VAR1){ my @items; if(scalar @items < 2) { my ($dropItem, $flag) = $self->tree->HitTest([$x, $y]); push @items, $dropItem; } else { @items = $self->tree->GetSelections; } # remove root item which is not a valid category @items = grep { $self->tree->GetPlData( $_ ) != -1 } @items; wxTheApp->frame->imagelist->categories( [ map { $self->tree->GetPlData( $_ )->{id}; } @items ] ); wxTheApp->frame->imagelist->image_selection($VAR1); wxTheApp->frame->ProcessImageSelection ; } }; } 1; pLoader-1.6/src/Uploader/GUI/wxChoiceFilteredPanel.pm0000644000175000017500000002542711355146471020701 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxChoiceFilteredPanel; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxVERTICAL wxALIGN_CENTER_VERTICAL wxALL wxSHAPED wxALIGN_CENTER wxTE_PROCESS_ENTER wxRA_SPECIFY_ROWS wxGROW wxEXPAND /; use base qw/Wx::Panel Uploader::Object2/; use Wx::Locale qw/:default/; use Data::Dumper; __PACKAGE__->mk_accessors( qw/ frame_callbacks choices selection id_lookup row_lookup id_from_name search choices_list btn_show show_method is_selected creation_callback search_result previous_autocompleted autocomplete_from autocomplete_to autocomplete_set_selection current_show_mode / ); sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( $params->{parentwnd}, $params->{id}||-1, wxDefaultPosition, wxDefaultSize ); $self->init_panel; $self->init_properties($params); $self->init_event_handlers; $self; } sub init_panel { my ( $self ) = @_; my( $vsizer ) = Wx::BoxSizer->new( wxVERTICAL ); $self->search( Wx::SearchCtrl->new( $self, -1, "", wxDefaultPosition, [-1,-1],wxTE_PROCESS_ENTER ) ); $self->search->ShowCancelButton( 1 ); $vsizer->Add( $self->search, 0, wxEXPAND|wxALL, 2 ); $self->choices_list( Wx::CheckListBox->new( $self, -1, wxDefaultPosition, [-1,-1], [], 0 ) ); $vsizer->Add( $self->choices_list, 1, wxEXPAND|wxALL, 2 ); $self->btn_show( Wx::RadioBox->new( $self, -1, sprintf("%s :", gettext("Show")), wxDefaultPosition, [-1, -1], [gettext("All"),gettext("Selection")] , 1, wxRA_SPECIFY_ROWS ) ); $vsizer->Add( $self->btn_show, 0, wxEXPAND|wxALL, 2 ); $self->SetSizer( $vsizer ); $vsizer->Fit( $self ); } sub init_properties { my ( $self, $params ) = @_; $self->choices( $params->{choices}|| sub { [] } ); $self->selection( $params->{selection}|| sub{ [] } ); $self->search_result( [] ); $self->is_selected({}); $self->creation_callback( $params->{creation_callback} ) if 'CODE' eq ref($params->{creation_callback}); $self->show_method( { gettext("All") => sub { $self->show_all(@_) }, gettext("Selection") => sub { $self->show_selected(@_) }, } ); } sub RefreshChoices { my ( $self ) = @_; $self->refresh_lookups( $self->choices->() ); $self->refresh_is_selected; my $show_mode = $self->current_show_mode||gettext("All"); $self->show_method->{$show_mode}->(); } sub refresh_lookups { my ( $self, $choices ) = @_; $self->id_lookup({}); $self->row_lookup({}); $self->id_from_name({}); my $row = 0; #print Dumper $self->properties; map { $self->id_lookup->{$row} = $_->{id}; $self->row_lookup->{$_->{id}} = $row; $self->id_from_name->{$_->{name}} = $_->{id}; $row++; }@{$choices}; } sub refresh_is_selected { my ( $self ) = @_; my $selection = $self->selection->(); $self->is_selected({}); map { $self->is_selected->{$_} = 1; } @$selection; } sub show_all { my ( $self ) = @_; my $choices = $self->choices->(); $self->current_show_mode( gettext("All") ); $self->refresh_choices_list( $self->choices->() ); } sub show_selected { my ( $self ) = @_; $self->current_show_mode( gettext("Selection") ); $self->refresh_choices_list( $self->get_selected_choices() ); } sub refresh_choices_list { my ( $self, $choices ) = @_; $self->choices_list->Freeze; $self->choices_list->Clear; #print Dumper $self->properties; my $i=0; map { $self->choices_list->Append( $_->{name}, ); $self->choices_list->Check( $i, $self->is_selected->{$_->{id}} ); $i++; }@{$choices}; $self->choices_list->Thaw; } sub get_selected_choices { my ( $self ) = @_; my $choices = $self->choices->()||[]; # each choice item is { id => $id, name => $name, url_nam => $url_name } my $selected = [ grep { $self->is_selected->{$_->{id}} } @$choices ]; $selected; } sub ClearAllSelection { my ( $self ) = @_; my $row = 0; my $choices = $self->choices->(); $self->choices_list->Freeze; map { $self->choices_list->Check($row, 0) ; $row++; }@$choices; $self->choices_list->Thaw; } sub init_event_handlers { my ( $self ) = @_; Wx::Event::EVT_CHECKLISTBOX( $self, $self->choices_list, \&OnCheck ); Wx::Event::EVT_LISTBOX( $self, $self->choices_list, \&OnSelected ); Wx::Event::EVT_SEARCHCTRL_SEARCH_BTN( $self, $self->search, \&OnSearch ); Wx::Event::EVT_SEARCHCTRL_CANCEL_BTN( $self, $self->search, \&OnCancel ); Wx::Event::EVT_TEXT( $self, $self->search, \&OnSearch ); Wx::Event::EVT_TEXT_ENTER( $self, $self->search, \&OnSearchEnter ); Wx::Event::EVT_RADIOBOX( $self, $self->btn_show, \&OnShow ); # fix for linux : can not call SetSelection before the current event is processed. # call when idle Wx::Event::EVT_IDLE( $self, sub { my ($self, $event)=@_; $self->search->SetSelection( $self->autocomplete_from, $self->autocomplete_to ) if $self->autocomplete_set_selection; $self->autocomplete_set_selection(0); } ); } sub OnSelected { my ( $self, $event ) = @_; my $list = $event->GetEventObject; my $row = $event->GetInt; $list->Check( $row, !$list->IsChecked($row) ); $self->OnCheck($event); } sub OnCheck { my ( $self, $event ) = @_; my $list = $event->GetEventObject; my $indx = $event->GetInt; my $item = $list->GetString($indx); if($list->IsChecked($indx)){ $self->add_to_selection($item); } else{ $self->remove_from_selection($item); } } sub add_to_selection { my ( $self, $item ) = @_; return if !defined $item; my $id = $self->id_from_name->{$item}; return if !defined $id; $self->is_selected->{$id} = 1; my $selection = $self->selection->(); $self->selection->( [ $id, @$selection ] ); } sub remove_from_selection { my ( $self, $item ) = @_; my $id = $self->id_from_name->{$item}; my $selection = $self->selection->(); $self->selection->( [ grep { $_ ne $id } @$selection ] ); $self->refresh_is_selected; } sub OnShow { my( $self, $event ) = @_; my $show_mode = $event->GetString(); $self->show_method->{$show_mode}->(); } sub OnSearchEnter { my( $self, $event ) = @_; my $searched = $self->search->GetValue; eval { $searched =~ s/\s+$//; }; $searched = $searched eq "" ? undef : $searched ; my $cleanup; if(defined($searched)){ my $busy = Wx::BusyCursor->new(); if(!scalar @{$self->search_result}){ $self->creation_callback->( $searched ); $self->refresh_selected_searched($searched); $cleanup = 1; } if( 1 == scalar @{$self->search_result}){ $self->refresh_selected_searched($searched); $cleanup = 1; } } else{ $cleanup = 1; } if($cleanup){ $self->search->ChangeValue(""); $self->search->SetFocus; } } sub refresh_selected_searched { my ( $self, $searched ) = @_; $self->refresh_lookups( $self->choices->() ); $self->add_to_selection($searched); $self->show_selected; $self->btn_show->SetStringSelection(gettext("Selection")); } sub OnSearch { my( $self, $event ) = @_; $self->btn_show->SetStringSelection(gettext("All")); my $searched = $self->search->GetValue; $self->search_result( $self->search_in_choices( $searched ) ); $self->refresh_choices_list( $self->search_result ); # autocompletion if(1== scalar @{$self->search_result}){ my $value = $self->search_result->[0]->{name}; unless( $value eq $self->previous_autocompleted ){ $self->autocomplete_from( $self->search->GetLastPosition ); $self->search->ChangeValue($value); $self->autocomplete_to( $self->search->GetLastPosition ); $self->autocomplete_set_selection(1); $self->previous_autocompleted($value); } } else{ $self->previous_autocompleted(undef); } $event->Skip; } sub search_in_choices { my ( $self, $searched ) = @_; my $choices = $self->choices->()||[]; [ grep { $_->{name} =~ /\b$searched/i} @$choices ]; } sub OnCancel { my( $self, $event ) = @_; $self->init_choices_list( $self->choices->() ); $self->btn_show->SetStringSelection(gettext("All")); } 1; pLoader-1.6/src/Uploader/GUI/wxImageReuploadDlg.pm0000644000175000017500000000553211330151201020164 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxImageReuploadDlg; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxID_CANCEL wxID_OK wxSTAY_ON_TOP /; #use base qw/Wx::Dialog Class::Accessor::Fast Uploader::GUI::DlgCommon/; use base qw/Wx::Dialog Uploader::GUI::DlgCommon/; use Wx::Event qw/ EVT_BUTTON EVT_CLOSE /; use Carp; sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{title}, wxDefaultPosition, wxDefaultSize, wxSTAY_ON_TOP); # load controls eval { &main::Reupload($self, 1); $self->properties( $params->{properties} ); $self->InitLabels(); $self->SetProperties(); $self->_initEventHandlers(); if($@){ Wx::LogMessage("Error during dialogbox initialization"); } }; $self; } sub _initEventHandlers { my ( $self ) = @_; EVT_BUTTON( $self, $main::ID_REUPLOAD_OK, \&OnOK ); EVT_CLOSE( $self, \&OnClose ); } sub OnOK { my ( $self, $event ) = @_; $self->_close; } sub OnClose { my ( $self, $event ) = @_; $self->_close; } sub _close { my ( $self ) = @_; $self->GetProperties(); $self->Destroy; } 1;pLoader-1.6/src/Uploader/GUI/wxImageProcessingProgressDlg.pm0000644000175000017500000001046411355127776022305 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxImageProcessingProgressDlg; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxID_CANCEL wxID_OK wxGREEN wxDIALOG_NO_PARENT wxDEFAULT_DIALOG_STYLE wxMAXIMIZE_BOX wxMINIMIZE_BOX /; use base qw/Wx::Dialog Class::Accessor::Fast/; use Wx::Event qw/ EVT_UPDATE_UI EVT_BUTTON /; __PACKAGE__->mk_accessors( qw/ btok gauge progress processing txtprocessing processing_details txtprocessing_details image cancelled bt_close_label stop_processing / ); use Carp; sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{title}, wxDefaultPosition, wxDefaultSize, wxDIALOG_NO_PARENT| wxDEFAULT_DIALOG_STYLE| wxMAXIMIZE_BOX| wxMINIMIZE_BOX ); # load controls eval { &main::ProcessingProgress($self, 1); $self->_initEventHandlers(); $self->btok( $self->FindWindow($main::ID_PROGRESS_OK) ); $self->gauge( $self->FindWindow($main::ID_PROGRESS_GAUGE) ); $self->txtprocessing( $self->FindWindow($main::ID_PROGRESS_TXT) ); $self->txtprocessing_details( $self->FindWindow($main::ID_PROGRESS_TXT2) ); $self->image( $self->FindWindow($main::ID_STATICBITMAP) ); $self->gauge->SetForegroundColour(wxGREEN); }; $self->btok->SetLabel( $params->{bt_label}||'Cancel' ); $self->bt_close_label( $params->{bt_close_label}||'Close' ); $self->stop_processing( $params->{stop_processing} ); if($@){ Wx::LogMessage("Error during dialogbox initialization"); } $self; } sub _initEventHandlers { my ( $self ) = @_; EVT_BUTTON( $self, $main::ID_PROGRESS_OK, \&OnOK ); } # Update progress information sub LogProgress { my ( $self ) = @_; croak "Cancelled by user\n" if $self->cancelled; $self->txtprocessing->SetLabel( $self->processing ); $self->txtprocessing_details->SetLabel( $self->processing_details ); $self->gauge->SetValue( $self->progress ); } sub DisplayEndInfo { my ( $self, $msg ) = @_; $self->txtprocessing->SetLabel( $msg ); $self->image->Show(0); $self->gauge->Show(0); # for i18n $self->btok->SetLabel( $self->bt_close_label ); $self->txtprocessing_details->SetLabel(""); } sub OnOK { my ( $self, $event ) = @_; $self->cancelled(1); $self->stop_processing->(); $self->Hide; } 1;pLoader-1.6/src/Uploader/GUI/wxCategoryTreeCtrl.pm0000644000175000017500000001542211353211553020254 0ustar ronronpackage Uploader::GUI::wxCategoryTreeCtrl; use strict; use Wx; use Wx::DND; use base qw/Wx::TreeCtrl Class::Accessor::Fast/; use Wx qw/ wxTheApp wxBITMAP_TYPE_PNG wxDefaultPosition wxDefaultSize wxALIGN_CENTER wxALL wxSWISS wxNORMAL wxVERTICAL wxBOLD wxWHITE wxID_CANCEL /; __PACKAGE__->mk_accessors( qw/ wx_img categories root selection_ids frame_callback / ); use Data::Dumper; sub new { my( $class, $params ) = @_; my( $self ) = $class->SUPER::new( $params->{parentwnd}, $params->{id}||-1, $params->{position}||wxDefaultPosition, $params->{size}||[ -1, -1], ); $self->categories( $params->{categories} ); $self->selection_ids( $params->{selection_ids} ); $self->frame_callback( $params->{frame_callback} ); $self->init_bitmaps; $self->init_empty_category_msg; $self->init_empty_category_evt; if(wxTheApp->use_offline){ $self->Enable(0); } else{ $self->Populate; } $self; } sub ShowEmptyMsg { my ( $self ) = @_; $self->{_empty_panel}->Show; } sub HideEmptyMsg { my ( $self ) = @_; $self->{_empty_panel}->Hide; } sub init_bitmaps{ my ( $self ) = @_; $self->wx_img( Wx::ImageList->new( 16, 16, 1 ) ); map { $self->wx_img->Add( Wx::Bitmap->new( $_, wxBITMAP_TYPE_PNG ) ); } ( wxTheApp->resource_path('tree_pwg.png'), wxTheApp->resource_path('tree_folder.png'), ); $self->SetImageList( $self->wx_img ); } sub itemData { Wx::TreeItemData->new( $_[0] ) } sub Populate { my ( $self ) = @_; my $tree_items = $self->categories; my $root = shift @{$tree_items}; $self->root( $self->AddRoot( $root->[0], $root->[3], $root->[4], itemData( $root->[2] ) ) ); $self->populate_tree_helper( $self->root, $tree_items ); $self->Expand( $self->root ); } sub populate_tree_helper { my ( $self, $parent_id, $tree_items ) = @_; my $id; map { my $name = $_->[0]; $id = $self->AppendItem( $parent_id, $name, defined($_->[3]) ? $_->[3] : 0, defined($_->[4]) ? $_->[4] : 0, itemData( $_->[2]) ); # current item has children if( ref( $_->[1] ) eq 'ARRAY' ) { $self->populate_tree_helper( $id, $_->[1] ); } } @{$tree_items}; } sub init_empty_category_msg { my ( $self ) = @_; # add a panel my $empty_panel = Wx::Panel->new($self, -1, wxDefaultPosition, wxDefaultSize); my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my $fb = Wx::Font->new( 12, wxSWISS, wxNORMAL, wxBOLD ); my( $item1 ) = Wx::Button->new( $empty_panel, $main::CATEGORIES_ADD, wxTheApp->branding->{'Add new category'}, wxDefaultPosition, [-1,40], 0 ); my $btfont = Wx::Font->new(12, wxSWISS, wxNORMAL, wxNORMAL ); $item1->SetFont($btfont); $item0->AddWindow( $item1, 0, wxALIGN_CENTER|wxALL, 5 ); $empty_panel->SetSizer( $item0 ); $item0->SetSizeHints( $empty_panel ); $self->{_empty_panel} = $empty_panel; $self->{_empty_panel}->SetBackgroundColour(wxWHITE); my ($wp, $hp) = $self->{_empty_panel}->GetSizeWH; $self->SetMinSize( [20+$wp, -1 ]); Wx::Event::EVT_BUTTON( $self, $main::CATEGORIES_ADD, \&AddCategory ); } sub init_empty_category_evt{ my ( $self ) = @_; Wx::Event::EVT_PAINT( $self, sub { my ( $tree, $event ) = @_; if(exists $tree->{_empty_panel} and ! exists $tree->{_empty_panel}{_paint}){ my ($w, $h) = $tree->GetSizeWH; my ($x, $y) = $tree->{_empty_panel}->GetPositionXY; $tree->{_empty_panel}{x} = $x if !exists $tree->{_empty_panel}{x} ; $tree->{_empty_panel}{y} = $y if !exists $tree->{_empty_panel}{y}; my ($wp, $hp) = $tree->{_empty_panel}->GetSizeWH; my $x_off = ($w-$wp)/2 > 0 ? ($w-$wp)/2 : 0; my $y_off = ($h-$hp)/2 > 0 ? ($h-$hp)/2 : 0; $tree->{_empty_panel}->Move( [ $tree->{_empty_panel}{x}+$x_off, $tree->{_empty_panel}{y}+$y_off ] ); $tree->{_empty_panel}{_paint} = 1; } $event->Skip; } ); } sub GetSelectionsIds { my ( $self )=@_; return [ grep { defined $_ } map { my $category = $self->GetPlData( $_ ); $category != -1 ? $category->{id} : undef ; } ( $self->GetSelections ) ]; } sub AddCategory { my ( $self, $event ) = @_; $self->SelectDefaultParent; my $parent_category_id = $self->GetSelectionsIds->[0]; my $parent_item = $self->GetSelection; my $dialog = Wx::TextEntryDialog->new( $self, wxTheApp->branding->{'Category name'}, wxTheApp->branding->{'Add new category'}, wxTheApp->branding->{'New category'}, ); if( $dialog->ShowModal != wxID_CANCEL ) { my $name = $dialog->GetValue; my ( $success, $status_msg, $content ) = wxTheApp->pwg->AddCategories( $name, $parent_category_id); if($success){ $self->_append_category($parent_item, $name, $content->{result}{id}); # direct, without test on pwg_categories # because of lazy refresh to avoid re-populating the whole tree $self->ShowHideEmptyCategoriesMsg; $self->frame_callback->() if 'CODE' eq ref $self->frame_callback; } } $dialog->Destroy; } sub SelectDefaultParent { my ( $self ) = @_; if(!scalar @{$self->GetSelectionsIds}){ $self->SelectItem($self->GetRootItem); } } sub ShowHideEmptyCategoriesMsg { my ( $self ) = @_; $self->GetCount > 1 ? $self->HideEmptyMsg : $self->ShowEmptyMsg; } sub _append_category { my ( $self, $parent_id, $name, $id ) = @_; $self->SelectItem( $self->AppendItem( $parent_id, $name, 1, -1, Wx::TreeItemData->new( { id => $id } ) ) ); } 1; pLoader-1.6/src/Uploader/GUI/wxLoginDlg.pm0000644000175000017500000000712111330151201016512 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxLoginDlg; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxID_CANCEL wxID_OK wxGREEN /; use base qw/Wx::Dialog Class::Accessor::Fast/; use Wx::Event qw/ EVT_BUTTON /; __PACKAGE__->mk_accessors( qw/ btok url username password use_offline / ); sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{title}, wxDefaultPosition, wxDefaultSize); # load controls &main::Login($self, 1); $self->use_offline( $params->{use_offline} ); $self->url( $params->{site_url} ); $self->username( $params->{site_username} ); $self->password( $params->{site_password} ); $self->_initEventHandlers(); $self->btok( $self->FindWindow($main::ID_PWG_OK) ); $self->FindWindow($main::ID_PWG_URL)->SetValue( $self->url->() ); $self->FindWindow($main::ID_PWG_USERNAME)->SetValue( $self->username->() ); $self->FindWindow($main::ID_PWG_PASSWORD)->SetValue( $self->password->() ); $self; } sub _initEventHandlers { my ( $self ) = @_; EVT_BUTTON( $self, $main::ID_PWG_OK, \&OnLoginOK ); EVT_BUTTON( $self, $main::ID_PWG_CANCEL, \&OnLoginCancel ); EVT_BUTTON( $self, $main::ID_PWG_OFFLINE, \&OnLoginOffline ); } sub OnLoginOffline { my ( $self, $event ) = @_; $self->use_offline->(1); $self->EndModal(2); } sub OnLoginOK { my ( $self, $event ) = @_; $self->url->( $self->FindWindow($main::ID_PWG_URL)->GetValue ); $self->username->( $self->FindWindow($main::ID_PWG_USERNAME)->GetValue ); $self->password->( $self->FindWindow($main::ID_PWG_PASSWORD)->GetValue ); $self->EndModal(1); } sub OnLoginCancel { my ( $self, $event ) = @_; $self->EndModal(0); } 1;pLoader-1.6/src/Uploader/GUI/DlgCommon.pm0000644000175000017500000003537411355330335016344 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::DlgCommon; use strict; use Wx qw/wxDP_ALLOWNONE wxDefaultPosition wxDefaultSize/; use Wx::Calendar; use Wx::Locale qw/:default/; use Data::Dumper; use base qw/ Class::Accessor::Fast /; __PACKAGE__->mk_accessors( qw/ properties frame_callback / ); sub InitHandler { my ( $self ) = @_; # to connect the right event handler to each control my $ctrl_handlers = { 'Wx::TextCtrl' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_TEXT( $ctrl, $ctrl, sub { $self->OnTextCtrl(@_) } ); }, 'Wx::Choice' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_CHOICE( $ctrl, $ctrl, sub { $self->OnChoice(@_) } ); }, 'Wx::RadioBox' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_RADIOBOX( $ctrl, $ctrl, sub { $self->OnRadioBox(@_) } ); }, 'Wx::CheckBox' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_CHECKBOX( $ctrl, $ctrl, sub { $self->OnCheckBox(@_) } ); }, 'Wx::SpinCtrl' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_SPINCTRL( $ctrl, $ctrl, sub { $self->OnSpinCtrl(@_) } ); }, 'Wx::ComboBox' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_COMBOBOX( $ctrl, $ctrl, sub { $self->OnComboBox(@_) } ); Wx::Event::EVT_TEXT( $ctrl, $ctrl, sub { $self->OnComboBoxText(@_) } ); }, 'Wx::DatePickerCtrl' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_DATE_CHANGED( $ctrl, $ctrl, sub { $self->OnDatePicker(@_) } ); }, 'Uploader::GUI::wxCategoryTreeCtrl' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_TREE_SEL_CHANGED( $ctrl, $ctrl, sub { $self->OnCategoryTreeSelChanged(@_); } ); }, }; map { my $ctrl =$self->FindWindow($_); if(defined $ctrl){ $ctrl_handlers->{ ref $ctrl}->($ctrl) if exists $ctrl_handlers->{ ref $ctrl}; $ctrl->SetValidator( $self->properties->{$_}->{validator} ) if exists $self->properties->{$_}->{validator}; } } keys %{$self->properties}; } # what does happen when the text changes sub OnCheckBox { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # change the property value $self->properties->{$id}->{value}->( $event->IsChecked ) if exists $self->properties->{$id}->{value}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } # what does happen when selection changes sub OnComboBoxText { my ( $self, $ctrl, $event ) = @_; # text changed by user, not selection if( $ctrl->GetValue ne $ctrl->GetStringSelection){ my $id = $ctrl->GetId; # change the property value $self->properties->{$id}->{value}->( $ctrl->GetValue ) if exists $self->properties->{$id}->{value}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; } } sub OnComboBox { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; $ctrl->{_multi_selection_mode} = $self->properties->{$id}->{multi_selection_mode}->() if exists $self->properties->{$id}->{multi_selection_mode}; my $selection = exists $self->properties->{$id}->{string_selection} ? $ctrl->GetValue : $ctrl->GetSelection; my $value = $self->properties->{$id}->{pre_process}->( $selection ) if exists $self->properties->{$id}->{pre_process}; if( exists $self->properties->{$id}->{value} ){ $value = $self->properties->{$id}->{value}->( $value, $selection, ); # the item selected in the list is not the real value # we place here the actual value # to use in EVT_IDLE event, and overwrite the text field with it $ctrl->{_value} = $value; } # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; } # what does happen when the text changes sub OnTextCtrl { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # change the property value $self->properties->{$id}->{value}->( $event->GetString ) if exists $self->properties->{$id}->{value}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; } sub OnSpinCtrl { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # change the property value $self->properties->{$id}->{value}->( $event->GetInt ) if exists $self->properties->{$id}->{value}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } sub OnRadioBox { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # if a preprocess value is required my $value = $event->GetSelection; $value = $self->properties->{$id}->{pre_process}->( $value ) if exists $self->properties->{$id}->{pre_process}; # change the property value. use the index selection $self->properties->{$id}->{selection}->( $value ) if exists $self->properties->{$id}->{selection}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } sub OnChoice { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # if a preprocess value is required my $value = exists $self->properties->{$id}->{string_selection} ? $event->GetString : $event->GetSelection; $value = $self->properties->{$id}->{pre_process}->( $value ) if exists $self->properties->{$id}->{pre_process}; # change the property value. use the index selection $self->properties->{$id}->{selection}->( $value ) if exists $self->properties->{$id}->{selection}; # change the property value. use the string $self->properties->{$id}->{string_selection}->( $value ) if exists $self->properties->{$id}->{string_selection}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } sub OnDatePicker { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # change the property value $self->properties->{$id}->{value}->( $event->GetDate->FormatISODate ) if exists $self->properties->{$id}->{value}; # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } my $change_value = { 'Wx::SpinCtrl' => sub { my ($ctrl, $value ) = @_; $ctrl->SetValue($value)}, 'Wx::TextCtrl' => sub { my ($ctrl, $value ) = @_; $ctrl->ChangeValue($value)}, 'Wx::CheckBox' => sub { my ($ctrl, $value ) = @_; $ctrl->SetValue($value)}, 'Wx::DatePickerCtrl' => sub { my ($ctrl, $value ) = @_; my $date = Wx::DateTime->new; my ($yyyy, $mm, $dd, $hh, $mi, $ss ) = split(/[:\/\\\-\.\s]/, $value); $date->ParseDate( sprintf("%s/%s/%s", $yyyy, $mm, $dd) ); if(-1 eq $value){ $date->SetToCurrent; } $ctrl->SetValue($date); }, 'Wx::ComboBox' => sub { my ($ctrl, $value ) = @_; $ctrl->SetValue($value) ; }, }; sub OnCategoryTreeSelChanged { my ( $self, $ctrl, $event ) = @_; my $id = $ctrl->GetId; # change the property value. $self->properties->{$id}->{id_selection}->( $event->GetEventObject->GetSelectionsIds ) if exists $self->properties->{$id}->{id_selection}; #printf("OnCategoryTreeSelChanged %s\n", Dumper $self->properties->{$id}->{id_selection}->()); # exec the callback $self->properties->{$id}->{frame_callback}->($self, $ctrl, $event) if exists $self->properties->{$id}->{frame_callback}; $event->Skip; } my $clear_value = { 'Wx::TextCtrl' => sub { my ($ctrl) = @_; $ctrl->Clear}, 'Wx::CheckBox' => sub { my ($ctrl) = @_; $ctrl->SetValue(0)}, 'Wx::DatePickerCtrl' => sub { my ($ctrl) = @_; $ctrl->SetValue(Wx::DateTime->new->SetToCurrent)}, 'Uploader::GUI::wxCategoryTreeCtrl' => sub { my ( $ctrl ) = @_; $ctrl->SelectItem($ctrl->GetRootItem); }, }; sub SetProperties { my ( $self ) = @_; map { my $ctrl =$self->FindWindow($_); if(defined $ctrl){ #printf("%s\n", $ctrl); # checkbox, static text $change_value->{ref $ctrl}->( $ctrl, $self->properties->{$_}->{value}->() ) if exists $self->properties->{$_}->{value}; # only works for control with items $ctrl->SetSelection( $self->properties->{$_}->{selection}->() ) if exists $self->properties->{$_}->{selection}; $ctrl->SetStringSelection( gettext( $self->properties->{$_}->{string_selection}->() ) ) if exists $self->properties->{$_}->{string_selection}; } } keys %{$self->properties}; } sub InitLabels { my ( $self ) = @_; map { my $ctrl =$self->FindWindow($_)||$self->{$_}; #printf("ctrl %s : %s\n", $_, $ctrl); if(defined $ctrl){ # checkbox, static text $ctrl->SetLabel( $self->properties->{$_}->{label} ) if exists $self->properties->{$_}->{label}; $ctrl->GetStaticBox->SetLabel( $self->properties->{$_}->{staticbox_label} ) if exists $self->properties->{$_}->{staticbox_label}; # radiobox my $labels =$self->properties->{$_}->{labels}; $labels||=[]; for(my $i=0; $i < scalar @$labels ; $i++){ $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]); } } } keys %{$self->properties}; } sub InitChoices { my ( $self ) = @_; map { my $ctrl =$self->FindWindow($_); #printf("ctrl %s : %s\n", $_, $ctrl); if(defined $ctrl){ # choice my $choices =$self->properties->{$_}->{choices}; $choices||=[]; map{ $ctrl->Append($_); }@$choices; } } keys %{$self->properties}; } sub GetProperties { my ( $self ) = @_; map { my $ctrl = $self->FindWindow($_); #printf("ctrl %s : %s\n", $_, $ctrl); if(defined $ctrl){ # checkbox, static text $self->properties->{$_}->{value}->( $ctrl->GetValue() ) if exists $self->properties->{$_}->{value}; $self->properties->{$_}->{selection}->( $ctrl->GetSelection() ) if exists $self->properties->{$_}->{selection}; $self->properties->{$_}->{string_selection}->( $ctrl->GetStringSelection() ) if exists $self->properties->{$_}->{string_selection}; } } keys %{$self->properties}; } sub ClearProperties { my ( $self ) = @_; map { my $ctrl =$self->FindWindow($_); if(defined $ctrl){ # checkbox, static text $clear_value->{ref $ctrl}->( $ctrl ) if exists $clear_value->{ref $ctrl}; # only works for control with items $ctrl->SetSelection( -1 ) if exists $self->properties->{$_}->{selection}; } $ctrl->SetStringSelection( -1 ) if exists $self->properties->{$_}->{string_selection}; } keys %{$self->properties}; } 1;pLoader-1.6/src/Uploader/GUI/wxImagePreview.pm0000644000175000017500000000735411355335472017434 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxImagePreview; use strict; use base qw/Wx::Dialog Class::Accessor::Fast/; use Wx qw/ wxDefaultPosition wxDefaultSize wxBG_STYLE_CUSTOM wxIMAGE_QUALITY_HIGH wxRESIZE_BORDER wxDIALOG_EX_METAL wxDIALOG_NO_PARENT wxDEFAULT_DIALOG_STYLE wxMAXIMIZE_BOX wxMINIMIZE_BOX wxSTAY_ON_TOP /; __PACKAGE__->mk_accessors( qw/ image image_size caption / ); use Data::Dumper; use Wx::Event qw/ EVT_PAINT EVT_SIZE /; sub new { my( $class, $params ) = @_; my( $self ) = $class->SUPER::new( undef, -1, $params->{caption}, wxDefaultPosition, [400,300], wxMAXIMIZE_BOX| wxMINIMIZE_BOX| wxRESIZE_BORDER| wxDEFAULT_DIALOG_STYLE| wxDIALOG_NO_PARENT| wxSTAY_ON_TOP ); $self->SetBackgroundStyle(wxBG_STYLE_CUSTOM); Wx::InitAllImageHandlers(); EVT_SIZE($self, sub { my ( $this, $event ) = @_; $this->Refresh; $event->Skip(); } ); EVT_PAINT( $self, sub { my ( $this, $event ) = @_; my $dc = Wx::AutoBufferedPaintDC->new($this); if($this->image){ my ($w, $h) = $this->GetSizeWH; my $p_prop = $w / $h; # calculation made to keep aspect # ratio and maximize image size my $scale; my ($img_w, $img_h) = @{$this->image_size}; return unless $img_w; return unless $img_h; my $img_prop = $img_w / $img_h; $scale = ($p_prop > $img_prop) ? ($h / $img_h) : ($w / $img_w); $scale = 1 if($scale > 1); my ($sw, $sh) = map({$_ * $scale} $img_w, $img_h); my $bmp = Wx::Bitmap->new($this->image->Scale($sw, $sh, wxIMAGE_QUALITY_HIGH)); my $xoff = ($w - $sw) / 2; my $yoff = ($h - $sh) / 2; $dc->DrawBitmap($bmp, $xoff, $yoff, $dc->Clear ? 1:1); } else{ $dc->Clear; } } ); $self; } 1; pLoader-1.6/src/Uploader/GUI/wxPropertyListDlg.pm0000644000175000017500000000650311355127776020160 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxPropertyListDlg; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxLIST_AUTOSIZE wxDEFAULT_DIALOG_STYLE wxMAXIMIZE_BOX wxMINIMIZE_BOX wxLC_NO_HEADER /; use Wx::Locale qw/:default/; use base qw/Wx::Dialog Uploader::Object2/; use Data::Dumper; __PACKAGE__->mk_accessors( qw/ properties list / ); sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{caption}, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE| wxMAXIMIZE_BOX| wxMINIMIZE_BOX ); &main::image_prop_exif($self); $self->properties( $params->{properties} ); $self->list( $self->FindWindow($main::IMG_PROP_EXIF_LIST) ); $self->list->SetSingleStyle(wxLC_NO_HEADER); $self->{img_exif_prop_close} = $self->FindWindow($main::IMG_PROP_EXIF_CLOSE); $self->{img_exif_prop_close}->SetLabel( gettext("Close") ); Wx::Event::EVT_BUTTON( $self, $self->{img_exif_prop_close}, \&OnClose ); $self->list->InsertColumn(0, gettext("Property")); $self->list->InsertColumn(1, gettext("Value")); $self; } sub Refresh { my ( $self ) = @_; $self->list->Freeze; $self->list->DeleteAllItems; my $i=0; map { $self->list->InsertStringItem($i, $_->{label}); $self->list->SetItem($i, 1, $_->{value}->()); $i++; }@{$self->properties}; $self->list->SetColumnWidth(0, wxLIST_AUTOSIZE ); $self->list->SetColumnWidth(1, wxLIST_AUTOSIZE ); $self->list->Thaw; } # call to destroy crashes with GTK sub OnClose { my ( $self, $event ) = @_; $self->Hide; } 1;pLoader-1.6/src/Uploader/GUI/wxImageListCtrl.pm0000644000175000017500000003331411353214124017532 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxImageListCtrl; use strict; use Wx; use Wx::DND; use POSIX qw(ceil floor); use Wx::Locale qw/:default/; use Wx qw/ wxDefaultPosition wxDefaultSize wxLC_LIST wxNO_BORDER wxLC_EDIT_LABELS wxLC_ICON wxLC_REPORT wxLC_SMALL_ICON wxIMAGE_LIST_NORMAL wxBITMAP_TYPE_JPEG wxBITMAP_TYPE_PNG wxBLACK wxLC_REPORT wxLIST_NEXT_ALL wxLIST_STATE_SELECTED wxLIST_STATE_DONTCARE wxLIST_STATE_FOCUSED wxIMAGE_LIST_SMALL wxTheApp wxVERTICAL wxALIGN_CENTER wxHORIZONTAL wxALL wxGROW wxWHITE wxSWISS wxNORMAL wxBOLD wxBITMAP_TYPE_PNG /; use Wx::Event qw/ EVT_LIST_BEGIN_DRAG EVT_LIST_ITEM_SELECTED EVT_SIZE /; use base qw/Wx::ListCtrl Class::Accessor::Fast/; __PACKAGE__->mk_accessors( qw/ prevItemCount imagenames imagelist wx_imagelist image_size arrange_items styles insert_items initialize columns change_display_mode wx_img item_refresh / ); use Data::Dumper; sub new { my( $class, $params ) = @_; my( $self ) = $class->SUPER::new( $params->{parentwnd}, -1, wxDefaultPosition, [ -1, -1], ); $self->wx_img( Wx::ImageList->new( 16, 16, 1 ) ); $self->wx_img->Add( Wx::Bitmap->new( wxTheApp->resource_path('image.png'), wxBITMAP_TYPE_PNG ) ); $self->imagelist( $params->{imagelist} ); # bitmap container for photo selection $self->wx_imagelist( $params->{wx_imagelist}||$self->imagelist->wx_thumb_imglist ); $self->image_size( $params->{image_size} ); $self->columns( $params->{columns} ); $self->prevItemCount(-1); EVT_LIST_BEGIN_DRAG( $self, $self, \&OnBeginDrag); EVT_SIZE($self, sub { my ( $this, $event ) = @_; $this->arrange_items(1); $event->Skip(); } ); Wx::Event::EVT_IDLE( $self, sub { my ($self, $event)=@_; if($self->arrange_items){ $self->Refresh; $self->arrange_items(0); } if($self->change_display_mode){ my $dm = $self->imagelist->display_mode; $self->initialize->{$dm}->($self) if exists $self->initialize->{$dm}; $self->Refresh; $self->change_display_mode(0); } $event->Skip; } ); # manages empty panel position Wx::Event::EVT_PAINT( $self, sub { my ( $self, $event ) = @_; if(exists $self->{_empty_panel}){ my ($w, $h) = $self->GetSizeWH; my ($x, $y) = $self->GetPositionXY; my ($wp, $hp) = $self->{_empty_panel}->GetSizeWH; my $x_off = ($w-$wp)/3 > 0 ? ($w-$wp)/3 : 0; my $y_off = ($h-$hp)/3 > 0 ? ($h-$hp)/3 : 0; $self->{_empty_panel}->Move( [ $x+$x_off, $y+$y_off ] ); } $event->Skip; } ); $self->initialize( { 'Thumbnail' => sub { my ( $self ) = @_; $self->Freeze; $self->ClearAll; $self->SetSingleStyle(wxLC_ICON); $self->SetSingleStyle(wxLC_EDIT_LABELS, 0); $self->SetImageList( $self->wx_imagelist, wxIMAGE_LIST_NORMAL ) ; $self->Thaw; }, 'Thumbnail and caption' => sub { my ( $self ) = @_; $self->Freeze; $self->ClearAll; $self->SetSingleStyle(wxLC_ICON); $self->SetSingleStyle(wxLC_EDIT_LABELS); $self->SetImageList( $self->wx_imagelist, wxIMAGE_LIST_NORMAL ) ; $self->Thaw; }, 'Property list' => sub { my ( $self ) = @_; my $i=0; $self->Freeze; $self->ClearAll; $self->SetSingleStyle(wxLC_REPORT); $self->SetSingleStyle(wxLC_EDIT_LABELS); $self->SetImageList( $self->wx_img, wxIMAGE_LIST_SMALL ) ; map { $self->InsertColumn($i, $_->{label}); $i++; }@{$self->columns}; $self->Thaw; }, } ); $self->item_refresh( { 'Thumbnail' => sub {}, 'Thumbnail and caption' => sub { my ( $self, $index ) = @_; my $image = $self->imagelist->GetImage($index); $self->SetItem( $index, 0, $image->site_name, ) if defined $image; }, 'Property list' => sub { my ( $self, $index ) = @_; my $col = 0; my $image = $self->imagelist->GetImage($index); map{ $self->SetItem( $index, $col, $image->$_ ) if defined $image; $self->SetColumnWidth($col, -1); $col++; } qw/site_name site_comment site_author file create_date/; }, } ); $self->insert_items( { 'Thumbnail' => sub { my ( $self, $index ) = @_; $self->InsertImageItem($index, $index);}, 'Thumbnail and caption' => sub { my ( $self, $index ) = @_; $self->InsertImageStringItem( $index, $self->imagelist->GetImage($index)->site_name, $index, ); }, 'Property list' => sub { my ( $self, $index ) = @_; $self->InsertImageStringItem( $index, "", 0 ); $self->ItemRefresh($index); }, } ); $self->initialize->{$self->imagelist->display_mode}->($self) if exists $self->initialize->{$self->imagelist->display_mode}; $self->init_empty_msg; $self; } sub ItemRefresh { my ( $self, $index ) = @_; $self->item_refresh->{$self->imagelist->display_mode}->($self, $index) if exists $self->item_refresh->{$self->imagelist->display_mode}; } sub OnBeginDrag { my( $self, $event ) = @_; my $data = Wx::TextDataObject->new( Dumper $self->GetSelectedItems ); my $source = Wx::DropSource->new( $self ); $source->SetData( $data ); $source->DoDragDrop( 1 ); } sub GetSelectectItemsCount { my ( $self ) = @_; scalar @{$self->GetSelectedItems}; } sub GetSelectedItems { my ( $self ) = @_; # find selected items my $item = -1; my $items = []; while(1) { $item = $self->GetNextItem( $item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); last if(-1 == $item); # item is selected push @$items, $item } $items; } sub GetAllItems { my ( $self ) = @_; # find selected items my $item = -1; my $items = []; while(1) { $item = $self->GetNextItem( $item, wxLIST_NEXT_ALL, wxLIST_STATE_DONTCARE ); last if(-1 == $item); # item is selected push @$items, $item } $items; } sub Refresh { my ( $self ) = @_; $self->Freeze(); $self->DeleteAllItems; eval { my $y0 = 0; my $x0 = 0; my $x_spacing = $self->image_size + 2; my $y_spacing = $self->image_size + 2; my $ipr = floor(($self->GetClientSize->GetWidth - 0.20*$x_spacing)/$x_spacing)||1; for( my $i = 0 ; $i < $self->wx_imagelist->GetImageCount ; $i++){ # call the method corresponding to the display mode my $indx = $self->insert_items->{$self->imagelist->display_mode}->($self, $i); if( 'Thumbnail' eq $self->imagelist->display_mode){ my $row = floor($i/$ipr); my $col = $i%$ipr; $self->SetItemPosition( $i, Wx::Point->new( $x0 + $x_spacing*$col, $y0 + $y_spacing*$row, ), ); } } }; map{ $self->SelectItem( $_ ); $self->EnsureVisible($_); } @{$self->imagelist->image_selection||[]}; $self->Thaw(); $self->SetFocus; } sub SelectItem { my ( $self, $index ) = @_; $self->SetItemState( $index, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED ); } sub OnEmpty { my ( $self ) = @_; $self->_OnEmptyLayout; } sub OnNotEmpty { my ( $self ) = @_; $self->{_empty_panel}->Show(0) if exists $self->{_empty_panel}; } sub _OnEmptyLayout { my( $self ) = @_; $self->{_empty_panel}->Show(1); } sub add_button { my ( $self ) = @_; $self->{_add_bt}; } sub init_empty_msg { my ( $self ) = @_; # add a panel my $empty_panel = Wx::Panel->new($self, -1, wxDefaultPosition, wxDefaultSize); my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my $fb = Wx::Font->new( 12, wxSWISS, wxNORMAL, wxBOLD ); my $fn = Wx::Font->new( 12, wxSWISS, wxNORMAL, wxNORMAL ); my( $item1 ) = Wx::StaticText->new( $empty_panel, -1, gettext("Drag photos here to get started"), wxDefaultPosition, wxDefaultSize, 0 ); $item1->SetFont($fb); $item0->AddWindow( $item1, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item2 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item3 ) = Wx::StaticText->new( $empty_panel, -1, gettext("Or click"), wxDefaultPosition, wxDefaultSize, 0 ); $item3->SetFont($fn); $item2->AddWindow( $item3, 0, wxALIGN_CENTER|wxALL, 5 ); my $icon1 = Wx::Icon->new(); eval { $icon1->LoadFile( wxTheApp->resource_path('tb_add.png'), wxBITMAP_TYPE_PNG ); }; my $bmp = Wx::Bitmap->new( $icon1 ); my( $item4 ) = Wx::BitmapButton->new( $empty_panel, -1, $bmp, wxDefaultPosition, wxDefaultSize ); $item2->AddWindow( $item4, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item5 ) = Wx::StaticText->new( $empty_panel, -1, gettext("to choose files on your computer"), wxDefaultPosition, wxDefaultSize, 0 ); $item5->SetFont($fn); $item2->AddWindow( $item5, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item2, 0, wxALIGN_CENTER|wxALL, 0 ); $empty_panel->SetSizer( $item0 ); $item0->SetSizeHints( $empty_panel ); $self->{_empty_panel} = $empty_panel; $self->{_add_bt} = $item4; $self->{_empty_panel}->SetBackgroundColour(wxWHITE); my ($wp, $hp) = $self->{_empty_panel}->GetSizeWH; $self->SetMinSize( [20+$wp, -1 ]); } 1; pLoader-1.6/src/Uploader/GUI/wxDestinationCategoryDlg.pm0000644000175000017500000000630411355127776021456 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxDestinationCategoryDlg; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxDIALOG_NO_PARENT wxDEFAULT_DIALOG_STYLE wxMAXIMIZE_BOX wxMINIMIZE_BOX wxID_CANCEL wxID_OK /; use base qw/Wx::Dialog Uploader::GUI::DlgCommon Class::Accessor::Fast/; use Wx::Event qw/ EVT_BUTTON /; __PACKAGE__->mk_accessors( qw/ btok / ); use Carp; use Uploader::GUI::wxCategoryTreeCtrl; sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( undef, -1, $params->{caption}, wxDefaultPosition, [450, 300], wxDIALOG_NO_PARENT| wxDEFAULT_DIALOG_STYLE| wxMAXIMIZE_BOX| wxMINIMIZE_BOX ); # load controls &main::DestinationCategory($self, $params ); $self->properties( $params->{properties} ); $self->InitLabels(); $self->InitChoices(); $self->SetProperties(); $self->InitHandler(); $self->init_event_handlers(); $self->btok( $self->FindWindow($main::DESTINATION_CATEGORIES_OK) ); $self->btok->Enable(0); $self; } sub init_event_handlers { my ( $self ) = @_; EVT_BUTTON( $self, $main::DESTINATION_CATEGORIES_OK, \&OnOK ); EVT_BUTTON( $self, $main::DESTINATION_CATEGORIES_CANCEL, \&OnCancel ); } # Update progress information sub OnOK { my ( $self, $event ) = @_; $self->EndModal(wxID_OK); } sub OnCancel { my ( $self, $event ) = @_; $self->ClearProperties; $self->EndModal(wxID_CANCEL); } 1;pLoader-1.6/src/Uploader/GUI/wxApp.pm0000644000175000017500000006503411371051022015547 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxApp; use strict; use base qw/Wx::App Class::Accessor::Fast/; use Wx qw/ wxBITMAP_TYPE_GIF wxBITMAP_TYPE_ICO wxBITMAP_TYPE_BMP wxBITMAP_TYPE_PNG wxBITMAP_TYPE_JPEG wxIMAGE_QUALITY_NORMAL wxIMAGE_QUALITY_HIGH wxSPLASH_CENTRE_ON_SCREEN wxSPLASH_TIMEOUT wxDefaultPosition wxDefaultSize wxSIMPLE_BORDER wxFRAME_TOOL_WINDOW wxFRAME_NO_TASKBAR wxWHITE wxICON_EXCLAMATION wxICON_ERROR wxOK wxLANGUAGE_CHINESE_SIMPLIFIED wxLANGUAGE_CZECH wxLANGUAGE_DANISH wxLANGUAGE_DUTCH wxLANGUAGE_ENGLISH wxLANGUAGE_FRENCH wxLANGUAGE_GERMAN wxLANGUAGE_HUNGARIAN wxLANGUAGE_ITALIAN wxLANGUAGE_JAPANESE wxLANGUAGE_POLISH wxLANGUAGE_PORTUGUESE wxLANGUAGE_PORTUGUESE_BRAZILIAN wxLANGUAGE_RUSSIAN wxLANGUAGE_SLOVAK wxLANGUAGE_SPANISH /; use File::Slurp ; use Data::Dumper; use Storable; use File::HomeDir; use File::Spec; use Uploader::PWG; use Uploader::ImageList; use Uploader::GUI::wxLoginDlg; use Wx::Locale qw/:default/; use utf8; $|=1; __PACKAGE__->mk_accessors( qw/ pwg site_url site_username site_password http_username http_password rejects imagelist storable_file wx_thumb_dir resized_dir userdata_dir resized_dir thumb_dir conf_file layout_file locale current_language languages available_languages version imagelist_version use_offline login_dlg branding frame imageviewerIndex frameLayout chunk_size layout_clean colors eng_colors positions eng_positions caption_patterns eng_caption_patterns upload_hd eng_upload_hd privacy_level user_defined_properties root_dir bin_dir resource_dir locale_dir argv default_openfile_dir / ); sub FilterEvent { my( $self, $event ) = @_; Wx::LogMessage "EventType %s", $event->GetEventType(); return -1; } # not very clean but : # at that moment, object is not yet instanciated # only way : class variable # there is only one instance of wxApp my $root_dir; my $bin_dir; my $resource_dir; my $locale_dir; my $argv; sub new { my ( $self, $params ) = @_; $root_dir = $params->{root_dir}||'.'; $bin_dir = $params->{bin_dir}||'bin'; $locale_dir = $params->{locale_dir}||'locale'; $resource_dir = $params->{resource_dir}||'res'; $argv = $params->{argv}; $self->SUPER::new(); } sub OnInit { my( $self ) = @_; $self->root_dir( $root_dir ); $self->bin_dir( $bin_dir ); $self->locale_dir( $locale_dir ); $self->resource_dir( $resource_dir ); $self->version( '1.6' ); # to check if we can use stored cache $self->imagelist_version( '16' ); $self->argv( $argv ); $self->languages( [ ["中文 (%s)", wxLANGUAGE_CHINESE_SIMPLIFIED, 'Chinese simplified'], ["Česky (%s)", wxLANGUAGE_CZECH, 'Czech'], ["Dansk (%s)", wxLANGUAGE_DANISH, 'Danish'], ["Deutsch (%s)", wxLANGUAGE_GERMAN, 'German'], ["English (%s)", wxLANGUAGE_ENGLISH, 'English'], ["Español (%s)", wxLANGUAGE_SPANISH, 'Spanish'], ["Français (%s)", wxLANGUAGE_FRENCH, 'French'], ["Italiano (%s)", wxLANGUAGE_ITALIAN, 'Italian'], ["日本語 (にほんご) (%s)", wxLANGUAGE_JAPANESE, 'Japanese'], ["Magyar (%s)", wxLANGUAGE_HUNGARIAN, 'Hungarian'], ["Nederlands (%s)", wxLANGUAGE_DUTCH, 'Dutch'], ["Polski (%s)", wxLANGUAGE_POLISH, 'Polish'], ["Português Brasileiro (%s)", wxLANGUAGE_PORTUGUESE_BRAZILIAN, 'Portuguese Brazil'], ["Português Portugal (%s)", wxLANGUAGE_PORTUGUESE, 'Portuguese Portugal'], ["Русский (%s)", wxLANGUAGE_RUSSIAN, 'Russian'], ["Slovenčina (%s)", wxLANGUAGE_SLOVAK, 'Slovak'], ] ); # some languages may be unavailable due to system configuration. $self->_filter_available_languages; Wx::InitAllImageHandlers(); my $applicationName = "pLoader" ; $self->SetAppName( $applicationName ); $self->SetVendorName( "Piwigo Team" ); $self->{IMGTYPE} = { 'jpg' => wxBITMAP_TYPE_JPEG, 'gif' => wxBITMAP_TYPE_GIF, 'png' => wxBITMAP_TYPE_PNG, }; $self->_init_userdir; my $conf = retrieve $self->conf_file if -e $self->conf_file; if(defined $conf ){ $self->SetKeyValues($conf); } else { $self->_readParams( $self->bin_path('pLoader.ini') ) unless defined $conf ; } $self->_read_default_user_properties( $self->bin_path('properties.ini') ) ; $self->site_url( $self->{site_url} ); $self->site_username( $self->{site_username} ); $self->site_password( $self->{site_password} ); $self->http_username( $self->{http_username} ); $self->http_password( $self->{http_password} ); $self->current_language( $self->{current_language}||Wx::Locale::GetSystemLanguage() ); $self->chunk_size( $self->{chunk_size}||500_000 ); $self->init_locale; $self->_init_localized_properties; my $not_exit = $self->Login(); # user pressed OK if($not_exit){ $self->StoreConnectionProperties; if( !$self->use_offline ){ while( $not_exit and !$self->_is_connected ){ $not_exit = $self->Login(); last if $self->use_offline; } $self->CheckUpload; } $self->_init_imagelist; $self->_init_thumbimagelist; $self->_set_stored_layout; } $not_exit; } # helper method to get the full path for a resource sub resource_path{ my ( $self, $file ) = @_; File::Spec->catfile($self->root_dir, $self->resource_dir, $file); } sub bin_path{ my ( $self, $file ) = @_; File::Spec->catfile($self->root_dir, $self->bin_dir, $file); } sub locale_path{ my ( $self, $file ) = @_; File::Spec->catfile($self->root_dir, $self->locale_dir, $file); } sub locale_catalog_path{ my ( $self, $file ) = @_; File::Spec->catfile($self->root_dir, $self->locale_dir, $self->locale->GetCanonicalName, $file); } sub _set_stored_layout { my ( $self ) = @_; # when language is switched, need a new layout unlink $self->layout_file if $self->layout_clean; $self->layout_clean(0); my $layout = retrieve $self->layout_file if -e $self->layout_file; if(defined $layout ){ $self->SetKeyValues($layout); } } # some properties are displayed in choice list, with translated strings # the translation has to be reverted to store a language independant value sub _init_localized_properties { my ( $self ) = @_; $self->colors( ['Black', 'White'] ); # We need to translate back to english when we store properties $self->eng_colors( { map { gettext($_) => $_ } @{$self->colors} } ); $self->positions( [ 'Top', 'Left', 'Right', 'Bottom', 'Top left', 'Top right', 'Bottom left', 'Bottom right', 'Center', ] ); $self->eng_positions( { map { gettext($_) => $_ } @{$self->positions} } ); $self->upload_hd( [ 'No', 'Yes, use HD resized of the original photo', 'Yes, use a copy of the original photo', ] ); $self->eng_upload_hd( { map { gettext($_) => $_ } @{$self->upload_hd} } ); $self->caption_patterns( [ 'None', 'File name', 'File path and name', 'Caption', 'Caption + rank number', 'Rank number + caption', 'Caption + create date chrono', 'Create date chrono + caption', 'Create date chrono + rank', 'Rank + create date chrono', ] ); $self->eng_caption_patterns( { map { gettext($_) => $_ } @{$self->caption_patterns} } ); # hard coded because the piwigo api to read custom privacy level is not yet available $self->privacy_level( [ 'everybody', 'contacts', 'friends', 'family', 'admins' ] ); } # display privacy level list in a pyramid way : # ['everybody', 'contacts', friends, family, admins] -> [everybody, 'contacts, friends, family, admins', 'friends, family, admins', 'family, admins', 'admins only' ] sub privacy_level_choices{ my ( $self ) = @_; my $pl = $self->privacy_level; my $n = scalar @$pl - 1; my $list = [ gettext($pl->[0]) ]; my $i=0; while(++$i<$n){ push @$list, join( ', ', map{ gettext($_) } @$pl[$i..$n] ); } push @$list, gettext($pl->[$n]); $list; } sub _filter_available_languages { my ( $self ) = @_; # check if the locale can be set and the translation catalog available $self->available_languages( [ grep {$_} map{ # a locale may be unavailable due to system limitations ( ex: chinese, japanese when language pack are not installed ) if(Wx::Locale::IsAvailable($_->[1])){ my $locale = Wx::Locale->new($_->[1]); $locale->AddCatalogLookupPathPrefix( File::Spec->catfile($self->root_dir, $self->locale_dir) ); $_ if $locale->AddCatalog('pLoader'); } } @{$self->languages} ] ); } sub _is_connected { my ( $self ) = @_; my $is_connected; if($self->pwg->login_result->{stat} eq 'ok'){ $is_connected = 1; } else{ Wx::MessageBox( sprintf( "%s\n\n%s %s %s", $self->pwg->login_result->{message}, gettext("Connection to"), $self->site_url, gettext("failed"), ), gettext("Piwigo login error"), wxOK | wxICON_EXCLAMATION, ); } $is_connected; } my $locale; sub init_locale { my ( $self, $language ) = @_; $self->current_language( $language ) if defined $language; undef $locale; $locale = Wx::Locale->new( $self->current_language ); $locale->AddCatalogLookupPathPrefix( File::Spec->catfile($self->root_dir, $self->locale_dir) ); if(!$locale->AddCatalog( 'pLoader.mo' )){ Wx::LogMessage gettext("Cannot find translation catalog files for %s. Use default language"), $locale->GetCanonicalName(); } $self->locale($locale); } sub StoreConnectionProperties { my ( $self ) = @_; eval { store( { map{ $_ => $self->{$_}, } qw/ site_url site_username site_password http_username http_password current_language chunk_size layout_clean default_openfile_dir / }, $self->conf_file ); }; } sub StoreLayoutProperties { my ( $self ) = @_; eval { store( { map{ $_ => $self->{$_}, } qw/ imageviewerIndex frameLayout / }, $self->layout_file ); }; } sub _init_imagelist { my ( $self ) = @_; my $stored_imagelist; my $use_new_imagelist; if( -e $self->storable_file ){ eval { $stored_imagelist = retrieve $self->storable_file; }; if($@){ Wx::LogMessage( gettext("An error has occured. Can not read %s\n%s"), $self->storable_file, $@ ); $use_new_imagelist = 1 ; } # should have a valid imagelist else{ $use_new_imagelist = 1 unless $self->imagelist_version eq $stored_imagelist->{imagelist_version}; } # make sure we really have $use_new_imagelist = 1 unless defined $stored_imagelist; if($use_new_imagelist){ Wx::LogMessage(gettext("pLoader has to reset image cache.")); # and silently clean layout $self->layout_clean(1); } } else{ $use_new_imagelist = 1 ; } if($use_new_imagelist){ $stored_imagelist = $self->_default_imagelist_params ; } $self->imagelist( Uploader::ImageList->new( $stored_imagelist ) ); $self->imagelist->SetCurrentImage(-1); $self->imagelist->ResizeCallback( sub { $self->ResizeImage(@_) } ); $self->imagelist->YieldCallback( sub { Wx::Yield } ); } sub _default_imagelist_params { my ( $self ) = @_ ; my $params = { new_files => [], hd_filter => $self->user_defined_properties->{hd_filter}||'Lanczos', hd_blur => $self->user_defined_properties->{hd_blur}||0.9, hd_quality => $self->user_defined_properties->{hd_quality}||95, hd_w => $self->user_defined_properties->{hd_w}||1600, hd_h => $self->user_defined_properties->{hd_h}||1200, hd_interlace => $self->user_defined_properties->{hd_interlace}||'Line', thumb_size => $self->user_defined_properties->{thumbnail_size}||120, site_thumb_dir => $self->thumb_dir, wx_thumb_size => $self->user_defined_properties->{wx_thumbnail_size}||100, wx_thumb_dir => $self->wx_thumb_dir, resize_w => $self->user_defined_properties->{resize_w}||800, resize_h => $self->user_defined_properties->{resize_h}||600, site_resized_dir => $self->resized_dir, type => 'jpg', filter => $self->user_defined_properties->{resize_filter}||'Lanczos', blur => $self->user_defined_properties->{resize_blur}||0.9, quality => $self->user_defined_properties->{resize_quality}||95, wx_quality => $self->user_defined_properties->{wx_thumbnail_quality}||90, th_quality => $self->user_defined_properties->{thumbnail_quality}||90, auto_rotate => $self->user_defined_properties->{auto_rotate}||1, upload_hd => $self->user_defined_properties->{upload_hd}||'No', remove_uploaded_from_selection => $self->user_defined_properties->{remove_uploaded_from_selection}||1, interlace => $self->user_defined_properties->{resize_interlace}||'Line', create_resized => $self->user_defined_properties->{create_resized}||1, prefix => 'TN', count => 0, storable_file => $self->storable_file, userdata_dir => $self->userdata_dir, default_caption_pattern => $self->user_defined_properties->{default_caption_pattern}||'File name', default_caption => $self->user_defined_properties->{default_caption}||gettext('Photo '), upload_rejects => [], image_sums => {}, sums => [], version => $self->version, imagelist_version => $self->imagelist_version, ResizeCallback => sub { $self->ResizeImage(@_) }, watermark_text => $self->user_defined_properties->{watermark_text}||gettext("my watermark"), watermark_text_size => $self->user_defined_properties->{watermark_text_size}||12, watermark_position => $self->user_defined_properties->{watermark_position}||'Center', watermark_y => $self->user_defined_properties->{watermark_y}||10, watermark_x => $self->user_defined_properties->{watermark_x}||10, watermark_color => $self->user_defined_properties->{watermark_color}||'White', reupload_action_files => 1, reupload_action_properties => 2, reupload_action_properties_m => 1, display_mode => $self->user_defined_properties->{display_mode}||'Thumbnail and caption', }; return $params; } sub Login { my ( $self ) = @_; $self->login_dlg( Uploader::GUI::wxLoginDlg->new( { title => gettext("Piwigo login"), site_url => sub { $self->site_url(@_) }, site_username => sub { $self->site_username(@_) }, site_password => sub { $self->site_password(@_) }, use_offline => sub { $self->use_offline(@_) }, } ) ) unless $self->login_dlg; my $icon = Wx::Icon->new(); $icon->LoadFile( $self->resource_path('favicon.ico'), wxBITMAP_TYPE_ICO ); $self->login_dlg->SetIcon($icon); my $rval = $self->login_dlg->ShowModal(); $self->login_dlg->Show(0); $self->_init_branding; if ($self->site_url !~ /^http:/){ $self->site_url( sprintf( "http://%s", $self->site_url ) ); } $self->pwg( # get these parameters from dialog or from file Uploader::PWG->new( { site_url => $self->site_url, site_username => $self->site_username, site_password => $self->site_password, http_username => $self->http_username, http_password => $self->http_password, branding => $self->branding, chunk_size => sub { $self->chunk_size(@_) }, use_offline => $self->use_offline, version => $self->version, } ) ); $rval; } sub _init_userdir { my ( $self ) = @_; my $applicationName = $self->GetAppName ; my $userdatadir = File::Spec->canonpath( File::Spec->catfile( File::HomeDir->my_data(), "\.$applicationName" ) ); if(! -d $userdatadir){ if(! mkdir $userdatadir){ Wx::MessageBox( sprintf( "%s directory creation failed", $userdatadir, ), "pLoader working directory creation error", wxOK | wxICON_EXCLAMATION, ); $userdatadir = File::Spec->canonpath( File::Spec->catfile( File::Spec->tmpdir(), "\.$applicationName" ) ); mkdir $userdatadir; } } $self->userdata_dir($userdatadir); $self->conf_file( File::Spec->catfile( $self->userdata_dir, ".$applicationName.conf" ) ); $self->layout_file( File::Spec->catfile( $self->userdata_dir, ".$applicationName.layout" ) ); $self->storable_file( File::Spec->catfile($self->userdata_dir, 'pLoader.dat') ); my $thumbdir = File::Spec->catfile($self->userdata_dir, 'thumbnails'); mkdir $thumbdir unless -d $thumbdir ; $self->thumb_dir($thumbdir); my $wxthumbdir = File::Spec->catfile($self->userdata_dir, 'wxthumbnails'); mkdir $wxthumbdir unless -d $wxthumbdir ; $self->wx_thumb_dir($wxthumbdir); my $resizedir = File::Spec->catfile($self->userdata_dir, 'resize'); mkdir $resizedir unless -d $resizedir ; $self->resized_dir($resizedir); } sub _init_thumbimagelist { my ( $self ) = @_; $self->imagelist->wx_thumb_imglist( Wx::ImageList->new( $self->imagelist->wx_thumb_size, $self->imagelist->wx_thumb_size, 1, 0 ) ); # reload images $self->_reload_thumb_images; } sub _reload_thumb_images { my ( $self ) = @_; my $wximagelist = $self->imagelist->wx_thumb_imglist; my $sums = $self->imagelist->sums; map { my $image = $self->imagelist->image_sums->{$_}; $wximagelist->Add( Wx::Bitmap->new( $image->wx_thumb_file, $self->GetWxBitmapType($self->imagelist->type), ) ); } @$sums ; } sub GetWxBitmapType { my ( $self, $type ) = @_; $self->{IMGTYPE}->{$type}; } sub ResizeImage { my ( $self, $image_file, $image_file_out, $type, $width, $height, $quality ) = @_; my $image = Wx::Image->new( $image_file, $self->GetWxBitmapType($type), 0 ); my $w; my $h; my $img_w = $image->GetWidth; my $img_h = $image->GetHeight; # portrait if( $img_w < $img_h ){ $w = $height; } else{ $w = $width; } # to respect aspect ratio $h = sprintf( "%.0f", ($w*$img_h)/$img_w ); $image->Rescale( $w, $h, wxIMAGE_QUALITY_HIGH ); #$image->Resize( # [ $width, $height ], [ 0, 20], #); $quality ||= 90; $image->SetOption( "quality", $quality ); if(!$image->SaveFile( $image_file_out, $self->GetWxBitmapType($type), )){ Wx::LogMessage( gettext("An error has occured. Can not save file %s"), $image_file_out, ) }; } # some labels differ with branding ( piwigo.com or piwigo.org ) sub _init_branding { my ( $self ) =@_; if( $self->site_url =~ /\.piwigo\.com/ ){ $self->branding( { category => gettext("album"), Category => gettext("Album"), categories => gettext("albums"), Categories => gettext("Albums"), 'Add new category' => gettext("Add new album"), 'Category name' => gettext("Album name :"), 'New category' => gettext("New album"), 'What is the destination category?' => gettext("What is the destination album?") } ); } else{ $self->branding( { category => gettext("categorie"), Category => gettext("Categorie"), categories => gettext("categories"), Categories => gettext("Categories"), 'Add new category' => gettext("Add new category"), 'Category name' => gettext("Category name :"), 'New category' => gettext("New category"), 'What is the destination category?' => gettext("What is the destination category?") } ); } } sub SetFrame { my ( $self, $frame ) = @_; my $url = $self->site_url; if($self->use_offline){ $url = gettext("Work Offline"); } $self->frame($frame); my $icon = Wx::Icon->new(); $icon->LoadFile( File::Spec->catfile( $self->root_dir, $self->resource_dir, 'favicon.ico' ), wxBITMAP_TYPE_ICO ); $self->frame->SetIcon($icon); } sub _readParams { my( $self, $file ) = @_ ; my $expr_params ; eval { $expr_params = read_file( $file ); } ; my $paramValues = [] ; if($expr_params){ my $expr = '$paramValues = ' ; $expr .= "$expr_params ; " ; eval $expr ; } return unless 'ARRAY' eq ref $paramValues ; if(scalar(@$paramValues )){ my $params = $paramValues->[0] ; $self->SetKeyValues($params); } } sub _read_default_user_properties { my( $self, $file ) = @_ ; my $expr_params ; eval { $expr_params = read_file( $file ); } ; my $properties; if($expr_params){ my $expr = '$properties = ' ; $expr .= " { $expr_params }; " ; eval $expr ; } $properties = {} unless 'HASH' eq ref $properties; $self->user_defined_properties($properties); } sub SetKeyValues { my ( $self, $params )= @_; foreach( keys %$params ) { $self->{$_} = $params->{$_} ; } } sub CheckUpload { my ( $self ) = @_; my $err_msg = $self->pwg->CheckUpload; $err_msg = gettext("Your user account is not granted to upload photos") if 'Access denied' eq $err_msg; #Wx::LogMessage("%s", $err_msg) if $err_msg; Wx::MessageBox($err_msg, "", wxOK | wxICON_ERROR) if $err_msg; $err_msg; } 1;pLoader-1.6/src/Uploader/GUI/wxPhotoProperties.pm0000644000175000017500000001043311355126157020204 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008-2010 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ package Uploader::GUI::wxPhotoProperties; use strict; use Wx qw/ wxDefaultSize wxDefaultPosition wxTAB_TRAVERSAL wxID_CANCEL wxID_OK wxGREEN /; use base qw/Wx::Panel Uploader::GUI::DlgCommon/; use Wx::Event qw/ EVT_BUTTON EVT_CLOSE /; use Wx::Locale qw/:default/; use Carp; use Data::Dumper; sub new { my ($this, $params) = @_; #on recupere le nom de la classe en fonction du type d'appel de la mthode. my $class = ref($this) || $this; my $self = $class->SUPER::new( $params->{parentwnd}, -1, wxDefaultPosition, [-1, -1], wxTAB_TRAVERSAL ); # load controls &main::PhotoPropertiesCategoriesTags( $self, $params->{categories} ); $self->_initNotebook($params->{tags}); $self->properties( $params->{properties} ); $self->InitLabels(); $self->InitChoices(); $self->SetProperties(); $self->InitHandler(); $self->_initEventHandlers(); if($@){ Wx::LogMessage("Error during dialogbox initialization"); } $self; } sub _initEventHandlers { my ( $self ) = @_; EVT_BUTTON( $self, $main::ID_REUPLOAD_OK, \&OnOK ); 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" ); $self->{notebook} = $nb; } sub OnOK { my ( $self, $event ) = @_; $self->_close; } sub OnClose { my ( $self, $event ) = @_; $self->_close; } sub _close { my ( $self ) = @_; $self->GetProperties(); $self->Destroy; } sub SetEnabled { my ( $self ) = @_; $self->{_properties_notebook}->Enable(1); } sub SetDisabled { my ( $self ) = @_; $self->{_properties_notebook}->Enable(0); } sub IsEnabled { my ( $self ) = @_; $self->{_properties_notebook}->IsEnabled; } sub SetMultiSelectionMode { my ( $self, $count ) = @_; $self->{_multi_selection_mode_panel}{_text1}->SetLabel( sprintf(gettext("You have selected a batch of %s photos"), $count ) ); $self->{_multi_selection_mode_panel}{_text2}->SetLabel( gettext("Changes apply to the whole batch") ); $self->{_multi_selection_mode_panel}->Show(1); $self->Layout; } sub SetSingleSelectionMode { my ( $self ) = @_; $self->{_multi_selection_mode_panel}->Show(0); $self->Layout; } 1;pLoader-1.6/src/Uploader/GUI/Layout/0000755000175000017500000000000011377742432015401 5ustar ronronpLoader-1.6/src/Uploader/GUI/Layout/GlobalSettings.pm0000644000175000017500000005465411371040661020663 0ustar ronronuse Wx; use strict; # Custom source use Wx qw/wxCP_DEFAULT_STYLE wxCP_NO_TLW_RESIZE/; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL wxALIGN_LEFT wxALIGN_TOP); use Wx qw( wxST_NO_AUTORESIZE ); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($DEFAULT_PHOTO_CAPTION); $DEFAULT_PHOTO_CAPTION = 10000; use vars qw($GS_DEFAULT_PHOTO_CAPTION); $GS_DEFAULT_PHOTO_CAPTION = 10001; use vars qw($PHOTO_CAPTION_PREFIX); $PHOTO_CAPTION_PREFIX = 10002; use vars qw($GS_PHOTO_CAPTION_PREFIX); $GS_PHOTO_CAPTION_PREFIX = 10003; use vars qw($DEFAULT_AUTHOR); $DEFAULT_AUTHOR = 10004; use vars qw($GS_DEFAULT_AUTHOR); $GS_DEFAULT_AUTHOR = 10005; use vars qw($GS_AUTO_ROTATE); $GS_AUTO_ROTATE = 10006; sub GS_photo_properties { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item2 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item1 ) = Wx::StaticBoxSizer->new( $item2, wxVERTICAL ); $parent->{sb_photo_properties} = $item1; my( $item3 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item4 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item5 ) = Wx::StaticText->new( $parent, $main::DEFAULT_PHOTO_CAPTION, "text", wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE ); $item4->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); my( $item6 ) = Wx::Choice->new( $parent, $main::GS_DEFAULT_PHOTO_CAPTION, wxDefaultPosition, [190,-1], [], 0 ); $item4->AddWindow( $item6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item3->Add( $item4, 0, 0, 5 ); my( $item7 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item8 ) = Wx::StaticText->new( $parent, $main::PHOTO_CAPTION_PREFIX, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); my( $item9 ) = Wx::TextCtrl->new( $parent, $main::GS_PHOTO_CAPTION_PREFIX, "", wxDefaultPosition, [100,-1], 0 ); $item7->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item3->Add( $item7, 0, 0, 5 ); my( $item10 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item11 ) = Wx::StaticText->new( $parent, $main::DEFAULT_AUTHOR, "", wxDefaultPosition, wxDefaultSize, 0 ); $item10->AddWindow( $item11, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); my( $item12 ) = Wx::TextCtrl->new( $parent, $main::GS_DEFAULT_AUTHOR, "", wxDefaultPosition, [200,-1], 0 ); $item10->AddWindow( $item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item3->Add( $item10, 0, 0, 5 ); my( $item13 ) = Wx::CheckBox->new( $parent, $main::GS_AUTO_ROTATE, "", wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item13, 0, wxALIGN_BOTTOM|wxALL, 5 ); $item1->Add( $item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $item0 ); if( $call_fit == 1 ) { $item0->SetSizeHints( $_[0] ); } } $item0; } use vars qw($GS_THUMBNAIL); $GS_THUMBNAIL = 10007; use vars qw($CPANE_THUMBNAIL); $CPANE_THUMBNAIL = 10008; use vars qw($THUMBNAIL_SIZE); $THUMBNAIL_SIZE = 10009; use vars qw($GS_THUMBNAIL_SIZE); $GS_THUMBNAIL_SIZE = 10010; use vars qw($THUMBNAIL_JPEG_QUALITY); $THUMBNAIL_JPEG_QUALITY = 10011; use vars qw($GS_THUMBNAIL_JPEG_QUALITY); $GS_THUMBNAIL_JPEG_QUALITY = 10012; use vars qw($GS_SITE_IMG); $GS_SITE_IMG = 10013; use vars qw($GS_CREATE_RESIZED); $GS_CREATE_RESIZED = 10014; use vars qw($CPANE_RESIZE); $CPANE_RESIZE = 10015; use vars qw($SITE_IMG_WIDTH); $SITE_IMG_WIDTH = 10016; use vars qw($GS_SITE_IMG_WIDTH); $GS_SITE_IMG_WIDTH = 10017; use vars qw($SITE_IMG_HEIGHT); $SITE_IMG_HEIGHT = 10018; use vars qw($GS_SITE_IMG_HEIGHT); $GS_SITE_IMG_HEIGHT = 10019; use vars qw($SITE_IMG_JPEG_QUALITY); $SITE_IMG_JPEG_QUALITY = 10020; use vars qw($GS_SITE_IMG_JPEG_QUALITY); $GS_SITE_IMG_JPEG_QUALITY = 10021; use vars qw($CPANE_RESIZE_ADVANCED); $CPANE_RESIZE_ADVANCED = 10022; use vars qw($SITE_IMG_FILTER); $SITE_IMG_FILTER = 10023; use vars qw($GS_SITE_IMG_FILTER); $GS_SITE_IMG_FILTER = 10024; use vars qw($SITE_IMG_BLUR); $SITE_IMG_BLUR = 10025; use vars qw($GS_SITE_IMG_BLUR); $GS_SITE_IMG_BLUR = 10026; use vars qw($SITE_IMG_INTERLACE); $SITE_IMG_INTERLACE = 10027; use vars qw($GS_SITE_IMG_INTERLACE); $GS_SITE_IMG_INTERLACE = 10028; use vars qw($GS_HD); $GS_HD = 10029; use vars qw($GS_HD_UPLOAD); $GS_HD_UPLOAD = 10030; use vars qw($CPANE_HD); $CPANE_HD = 10031; use vars qw($HD_IMG_WIDTH); $HD_IMG_WIDTH = 10032; use vars qw($GS_HD_IMG_WIDTH); $GS_HD_IMG_WIDTH = 10033; use vars qw($HD_IMG_HEIGHT); $HD_IMG_HEIGHT = 10034; use vars qw($GS_HD_IMG_HEIGHT); $GS_HD_IMG_HEIGHT = 10035; use vars qw($HD_IMG_JPEG_QUALITY); $HD_IMG_JPEG_QUALITY = 10036; use vars qw($GS_HD_IMG_JPEG_QUALITY); $GS_HD_IMG_JPEG_QUALITY = 10037; use vars qw($CPANE_HD_ADVANCED); $CPANE_HD_ADVANCED = 10038; use vars qw($HD_IMG_FILTER); $HD_IMG_FILTER = 10039; use vars qw($GS_HD_IMG_FILTER); $GS_HD_IMG_FILTER = 10040; use vars qw($HD_IMG_BLUR); $HD_IMG_BLUR = 10041; use vars qw($GS_HD_IMG_BLUR); $GS_HD_IMG_BLUR = 10042; use vars qw($HD_IMG_INTERLACE); $HD_IMG_INTERLACE = 10043; use vars qw($GS_HD_IMG_INTERLACE); $GS_HD_IMG_INTERLACE = 10044; use vars qw($GS_THUMBNAIL_SHAPE); $GS_THUMBNAIL_SHAPE = 10045; sub GS_photo_preparation { my( $parent ) = $_[0]; my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); my( $sb ) = Wx::StaticBox->new( $parent, -1, "" ); my( $sb_th ) = Wx::StaticBoxSizer->new( $sb, wxVERTICAL ); $parent->{sb_thumbnail} = $sb_th; my( $stxt_th ) = Wx::StaticText->new( $parent, $main::GS_THUMBNAIL, "text", wxDefaultPosition, wxDefaultSize, 0 ); $sb_th->AddWindow( $stxt_th, 0, wxALL, 5 ); my( $bh_th ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $ch_th ) = Wx::Choice->new( $parent, $main::GS_THUMBNAIL_SHAPE, wxDefaultPosition, [250,-1], [], 0 ); $bh_th->AddWindow( $ch_th, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); my( $cp_th_option ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_THUMBNAIL, "Options", wxDefaultPosition, [300,-1], 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $cp_th_option->GetPane(); my( $item5 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item6 ) = Wx::StaticText->new( $parent, $main::THUMBNAIL_SIZE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item5->AddWindow( $item6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item7 ) = Wx::TextCtrl->new( $parent, $main::GS_THUMBNAIL_SIZE, "", wxDefaultPosition, [80,-1], 0 ); $item5->AddWindow( $item7, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item8 ) = Wx::StaticText->new( $parent, $main::THUMBNAIL_JPEG_QUALITY, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item5->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item9 ) = Wx::TextCtrl->new( $parent, $main::GS_THUMBNAIL_JPEG_QUALITY, "", wxDefaultPosition, [80,-1], 0 ); $item5->AddWindow( $item9, 0, wxALIGN_CENTER|wxALL, 5 ); $parent->SetSizer( $item5 ); $parent = $oldparent; #$sbsizer->AddWindow( $cp_th_options, 0, wxALL, 5 ); $sb_th->Add( $bh_th, 0, wxALIGN_CENTER_VERTICAL, 5 ); $bh_th->AddWindow( $cp_th_option, 0, wxALL, 5 ); $topsizer->Add( $sb_th, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item11 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $sb_web ) = Wx::StaticBoxSizer->new( $item11, wxVERTICAL ); $parent->{sb_web_sized_photo} = $sb_web; my( $stxt_web ) = Wx::StaticText->new( $parent, $main::GS_SITE_IMG, "text", wxDefaultPosition, wxDefaultSize, 0 ); $sb_web->AddWindow( $stxt_web, 0, wxALIGN_LEFT|wxALIGN_TOP|wxALL, 5 ); my( $bh_web ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $ch_web ) = Wx::Choice->new( $parent, $main::GS_CREATE_RESIZED, wxDefaultPosition, [250,-1], [], 0 ); $bh_web->AddWindow( $ch_web, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); my( $cp_web_option ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_RESIZE, "Options", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $cp_web_option->GetPane(); my( $item16 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item17 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_WIDTH, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item17, 0, wxALL, 5 ); my( $item18 ) = Wx::TextCtrl->new( $parent, $main::GS_SITE_IMG_WIDTH, "", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item19 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_HEIGHT, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item19, 0, wxALL, 5 ); my( $item20 ) = Wx::TextCtrl->new( $parent, $main::GS_SITE_IMG_HEIGHT, "", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item20, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item21 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_JPEG_QUALITY, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item21, 0, wxALL, 5 ); my( $item22 ) = Wx::TextCtrl->new( $parent, $main::GS_SITE_IMG_JPEG_QUALITY, "", wxDefaultPosition, wxDefaultSize, 0 ); $item16->AddWindow( $item22, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $parent->SetSizer( $item16 ); $parent = $oldparent; $bh_web->AddWindow( $cp_web_option, 0, wxALL, 5 ); my( $cp_web_adv ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_RESIZE_ADVANCED, "Advanced", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $cp_web_adv->GetPane(); my( $item24 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item25 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_FILTER, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item24->AddWindow( $item25, 0, wxALL, 5 ); my( $item26 ) = Wx::Choice->new( $parent, $main::GS_SITE_IMG_FILTER, wxDefaultPosition, [100,-1], [], 0 ); $item24->AddWindow( $item26, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item27 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_BLUR, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item24->AddWindow( $item27, 0, wxALL, 5 ); my( $item28 ) = Wx::TextCtrl->new( $parent, $main::GS_SITE_IMG_BLUR, "", wxDefaultPosition, wxDefaultSize, 0 ); $item24->AddWindow( $item28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item29 ) = Wx::StaticText->new( $parent, $main::SITE_IMG_INTERLACE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item24->AddWindow( $item29, 0, wxALL, 5 ); my( $item30 ) = Wx::Choice->new( $parent, $main::GS_SITE_IMG_INTERLACE, wxDefaultPosition, [100,-1], [], 0 ); $item24->AddWindow( $item30, 0, wxALIGN_CENTER|wxALL, 5 ); $parent->SetSizer( $item24 ); $parent = $oldparent; $bh_web->AddWindow( $cp_web_adv, 0, wxALL, 5 ); $sb_web->Add( $bh_web, 0, wxALIGN_CENTER_VERTICAL, 5 ); $topsizer->Add( $sb_web, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item32 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item31 ) = Wx::StaticBoxSizer->new( $item32, wxVERTICAL ); my( $item33 ) = Wx::StaticText->new( $parent, $main::GS_HD, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item31->AddWindow( $item33, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item34 ) = Wx::BoxSizer->new( wxHORIZONTAL ); $parent->{sb_high_definition_photo} = $item34; my( $item35 ) = Wx::Choice->new( $parent, $main::GS_HD_UPLOAD, wxDefaultPosition, [250,-1], [], 0 ); $item34->AddWindow( $item35, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); my( $item36 ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_HD, "Options", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $item36->GetPane(); my( $item37 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item38 ) = Wx::StaticText->new( $parent, $main::HD_IMG_WIDTH, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item38, 0, wxALL, 5 ); my( $item39 ) = Wx::TextCtrl->new( $parent, $main::GS_HD_IMG_WIDTH, "", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item39, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item40 ) = Wx::StaticText->new( $parent, $main::HD_IMG_HEIGHT, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item40, 0, wxALL, 5 ); my( $item41 ) = Wx::TextCtrl->new( $parent, $main::GS_HD_IMG_HEIGHT, "", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item41, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item42 ) = Wx::StaticText->new( $parent, $main::HD_IMG_JPEG_QUALITY, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item42, 0, wxALL, 5 ); my( $item43 ) = Wx::TextCtrl->new( $parent, $main::GS_HD_IMG_JPEG_QUALITY, "", wxDefaultPosition, wxDefaultSize, 0 ); $item37->AddWindow( $item43, 0, wxALIGN_CENTER|wxALL, 5 ); $parent->SetSizer( $item37 ); $parent = $oldparent; $item34->AddWindow( $item36, 0, wxALL, 5 ); my( $item44 ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_HD_ADVANCED, "Advanced", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $item44->GetPane(); my( $item45 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item46 ) = Wx::StaticText->new( $parent, $main::HD_IMG_FILTER, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item45->AddWindow( $item46, 0, wxALL, 5 ); my( $item47 ) = Wx::Choice->new( $parent, $main::GS_HD_IMG_FILTER, wxDefaultPosition, [100,-1], [], 0 ); $item45->AddWindow( $item47, 0, wxALL, 5 ); my( $item48 ) = Wx::StaticText->new( $parent, $main::HD_IMG_BLUR, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item45->AddWindow( $item48, 0, wxALL, 5 ); my( $item49 ) = Wx::TextCtrl->new( $parent, $main::GS_HD_IMG_BLUR, "", wxDefaultPosition, wxDefaultSize, 0 ); $item45->AddWindow( $item49, 0, wxALL, 5 ); my( $item50 ) = Wx::StaticText->new( $parent, $main::HD_IMG_INTERLACE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item45->AddWindow( $item50, 0, wxALL, 5 ); my( $item51 ) = Wx::Choice->new( $parent, $main::GS_HD_IMG_INTERLACE, wxDefaultPosition, [100,-1], [], 0 ); $item45->AddWindow( $item51, 0, wxALL, 5 ); $parent->SetSizer( $item45 ); $parent = $oldparent; $item34->AddWindow( $item44, 0, wxALL, 5 ); $item31->Add( $item34, 0, wxALIGN_CENTER_VERTICAL, 5 ); $topsizer->Add( $item31, 0, wxALIGN_LEFT|wxALL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $topsizer ); if( $call_fit == 1 ) { $topsizer->SetSizeHints( $_[0] ); } } $topsizer; } use vars qw($GS_WMARK_ACTIVATE); $GS_WMARK_ACTIVATE = 10046; use vars qw($GS_WMARK_ACTIVATE_HD); $GS_WMARK_ACTIVATE_HD = 10047; use vars qw($CPANE_WATERMARK); $CPANE_WATERMARK = 10048; use vars qw($WMARK_TEXT); $WMARK_TEXT = 10049; use vars qw($GS_WMARK_TEXT); $GS_WMARK_TEXT = 10050; use vars qw($WMARK_TEXT_SIZE); $WMARK_TEXT_SIZE = 10051; use vars qw($GS_WMARK_TEXT_SIZE); $GS_WMARK_TEXT_SIZE = 10052; use vars qw($WMARK_COLOR); $WMARK_COLOR = 10053; use vars qw($GS_WMARK_COLOR); $GS_WMARK_COLOR = 10054; use vars qw($WMARK_POSITION); $WMARK_POSITION = 10055; use vars qw($GS_WMARK_POSITION); $GS_WMARK_POSITION = 10056; use vars qw($WMARK_MARGIN_TOP); $WMARK_MARGIN_TOP = 10057; use vars qw($GS_WMARK_MARGIN_TOP); $GS_WMARK_MARGIN_TOP = 10058; use vars qw($WMARK_MARGIN_LEFT); $WMARK_MARGIN_LEFT = 10059; use vars qw($GS_WMARK_MARGIN_LEFT); $GS_WMARK_MARGIN_LEFT = 10060; sub GS_photo_watermark { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item2 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item1 ) = Wx::StaticBoxSizer->new( $item2, wxHORIZONTAL ); $parent->{sb_watermark} = $item1; my( $item3 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item4 ) = Wx::CheckBox->new( $parent, $main::GS_WMARK_ACTIVATE, "", wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item5 ) = Wx::CheckBox->new( $parent, $main::GS_WMARK_ACTIVATE_HD, "", wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item1->Add( $item3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); my( $item6 ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_WATERMARK, "Options", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $item6->GetPane(); my( $item7 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item8 ) = Wx::StaticText->new( $parent, $main::WMARK_TEXT, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item8, 0, wxALL, 5 ); my( $item9 ) = Wx::TextCtrl->new( $parent, $main::GS_WMARK_TEXT, "", wxDefaultPosition, [200,-1], 0 ); $item7->AddWindow( $item9, 0, wxALL, 5 ); my( $item10 ) = Wx::StaticText->new( $parent, $main::WMARK_TEXT_SIZE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item10, 0, wxALL, 5 ); my( $item11 ) = Wx::SpinCtrl->new( $parent, $main::GS_WMARK_TEXT_SIZE, "0", wxDefaultPosition, [50,-1], 0, 0, 100, 0 ); $item7->AddWindow( $item11, 0, wxALL, 5 ); my( $item12 ) = Wx::StaticText->new( $parent, $main::WMARK_COLOR, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item12, 0, wxALL, 5 ); my( $item13 ) = Wx::Choice->new( $parent, $main::GS_WMARK_COLOR, wxDefaultPosition, [100,-1], [], 0 ); $item7->AddWindow( $item13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item14 ) = Wx::StaticText->new( $parent, $main::WMARK_POSITION, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item14, 0, wxALL, 5 ); my( $item15 ) = Wx::Choice->new( $parent, $main::GS_WMARK_POSITION, wxDefaultPosition, [100,-1], [], 0 ); $item7->AddWindow( $item15, 0, wxALL, 5 ); my( $item16 ) = Wx::StaticText->new( $parent, $main::WMARK_MARGIN_TOP, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item16, 0, wxALL, 5 ); my( $item17 ) = Wx::SpinCtrl->new( $parent, $main::GS_WMARK_MARGIN_TOP, "0", wxDefaultPosition, [100,-1], 0, 0, 100, 0 ); $item7->AddWindow( $item17, 0, wxALL, 5 ); my( $item18 ) = Wx::StaticText->new( $parent, $main::WMARK_MARGIN_LEFT, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item7->AddWindow( $item18, 0, wxALL, 5 ); my( $item19 ) = Wx::SpinCtrl->new( $parent, $main::GS_WMARK_MARGIN_LEFT, "0", wxDefaultPosition, [100,-1], 0, 0, 100, 0 ); $item7->AddWindow( $item19, 0, wxALL, 5 ); $parent->SetSizer( $item7 ); $parent = $oldparent; $item1->AddWindow( $item6, 0, wxALL, 5 ); $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $item0 ); if( $call_fit == 1 ) { $item0->SetSizeHints( $_[0] ); } } $item0; } use vars qw($GS_REMOVE_UPLOADED_FROM_SELECTION); $GS_REMOVE_UPLOADED_FROM_SELECTION = 10070; use vars qw($CPANE_TRANSFERT_ADVANCED); $CPANE_TRANSFERT_ADVANCED = 10071; use vars qw($CHUNK_SIZE); $CHUNK_SIZE = 10072; use vars qw($GS_CHUNK_SIZE); $GS_CHUNK_SIZE = 10073; sub GS_photo_transfer { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item2 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item1 ) = Wx::StaticBoxSizer->new( $item2, wxHORIZONTAL ); $parent->{sb_transfert} = $item1; my( $item3 ) = Wx::CheckBox->new( $parent, $main::GS_REMOVE_UPLOADED_FROM_SELECTION, "", wxDefaultPosition, wxDefaultSize, 0 ); $item1->AddWindow( $item3, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item4 ) = Wx::CollapsiblePane->new( $parent, $main::CPANE_TRANSFERT_ADVANCED, "Options", wxDefaultPosition, wxDefaultSize, 0|wxCP_DEFAULT_STYLE ); my( $oldparent ) = $parent; $parent = $item4->GetPane(); my( $item5 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item6 ) = Wx::StaticText->new( $parent, $main::CHUNK_SIZE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item5->AddWindow( $item6, 0, wxALL, 5 ); my( $item7 ) = Wx::TextCtrl->new( $parent, $main::GS_CHUNK_SIZE, "", wxDefaultPosition, wxDefaultSize, 0 ); $item5->AddWindow( $item7, 0, wxALL, 5 ); $parent->SetSizer( $item5 ); $parent = $oldparent; $item1->AddWindow( $item4, 0, wxALL, 5 ); $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $item0 ); if( $call_fit == 1 ) { $item0->SetSizeHints( $_[0] ); } } $item0; } use vars qw($LANGUAGE); $LANGUAGE = 10064; use vars qw($GS_LANGUAGE); $GS_LANGUAGE = 10065; sub GS_language { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item2 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item1 ) = Wx::StaticBoxSizer->new( $item2, wxVERTICAL ); $parent->{sb_language} = $item1; my( $item5 ) = Wx::StaticText->new( $parent, $main::LANGUAGE, "", wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE ); $item1->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); my( $item6 ) = Wx::Choice->new( $parent, $main::GS_LANGUAGE, wxDefaultPosition, [200,-1], [], 0 ); $item1->AddWindow( $item6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $_[0]->SetSizer( $item0 ); $item0->SetSizeHints( $_[0] ); $item0; } pLoader-1.6/src/Uploader/GUI/Layout/Reupload.pm0000644000175000017500000000543211342163720017503 0ustar ronronuse Wx; use strict; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxRA_SPECIFY_COLS ); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($ID_REUPLOAD_TEXT); $ID_REUPLOAD_TEXT = 10000; use vars qw($ID_REUPLOAD_ACTION_FILES); $ID_REUPLOAD_ACTION_FILES = 10001; use vars qw($ID_REUPLOAD_ACTION_PROPERTIES); $ID_REUPLOAD_ACTION_PROPERTIES = 10002; use vars qw($ID_REUPLOAD_ACTION_PROPERTIES_M); $ID_REUPLOAD_ACTION_PROPERTIES_M = 10003; use vars qw($ID_REUPLOAD_NOT_ASK); $ID_REUPLOAD_NOT_ASK = 10004; use vars qw($ID_REUPLOAD_OK); $ID_REUPLOAD_OK = 10005; sub Reupload { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item1 ) = Wx::StaticText->new( $parent, $main::ID_REUPLOAD_TEXT, "Some photos in the selection have already been uploaded. What do you want to do ?", wxDefaultPosition, wxDefaultSize, 0 ); $item0->AddWindow( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item2 ) = Wx::RadioBox->new( $parent, $main::ID_REUPLOAD_ACTION_FILES, "Thumbnail, web size, high definition files", wxDefaultPosition, [600,-1], ["nothing","replace"] , 1, wxRA_SPECIFY_COLS ); $item0->AddWindow( $item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item3 ) = Wx::RadioBox->new( $parent, $main::ID_REUPLOAD_ACTION_PROPERTIES, "Title, description, author, created date )", wxDefaultPosition, [600,-1], ["nothing","append ( keep existing and set if not defined in Piwigo )","replace"] , 1, wxRA_SPECIFY_COLS ); $item0->AddWindow( $item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item4 ) = Wx::RadioBox->new( $parent, $main::ID_REUPLOAD_ACTION_PROPERTIES_M, "Categories, tags", wxDefaultPosition, [600,-1], ["nothing","append ( keep existing and add new )","replace"] , 1, wxRA_SPECIFY_COLS ); $item0->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item5 ) = Wx::CheckBox->new( $parent, $main::ID_REUPLOAD_NOT_ASK, "Do not ask me again", wxDefaultPosition, wxDefaultSize, 0 ); $item0->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item6 ) = Wx::Button->new( $parent, $main::ID_REUPLOAD_OK, "OK", wxDefaultPosition, wxDefaultSize, 0 ); $item0->AddWindow( $item6, 0, wxALIGN_CENTER|wxALL, 5 ); $_[0]->SetSizer( $item0 ); $item0->SetSizeHints( $_[0] ); $item0; } use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); pLoader-1.6/src/Uploader/GUI/Layout/DestinationCategory.pm0000644000175000017500000000357111353211553021711 0ustar ronronuse strict; use Data::Dumper; use Wx qw/ wxVERTICAL wxSWISS wxNORMAL wxBOLD wxALIGN_CENTER wxEXPAND wxALL wxDefaultSize wxDefaultPosition /; use Uploader::GUI::wxCategoryTreeCtrl; use vars qw($CHOOSE_DESTINATION); $CHOOSE_DESTINATION = 10000; use vars qw($DESTINATION_CATEGORIES); $DESTINATION_CATEGORIES = 10001; use vars qw($DESTINATION_CATEGORIES_OK); $DESTINATION_CATEGORIES_OK = 10002; use vars qw($DESTINATION_CATEGORIES_CANCEL); $DESTINATION_CATEGORIES_CANCEL = 10003; sub DestinationCategory { my ( $parent, $params ) = @_; my( $top_sizer ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item1 ) = Wx::StaticText->new( $parent, $main::CHOOSE_DESTINATION, "", wxDefaultPosition, [-1,40], 0 ); my $btfont = Wx::Font->new(12, wxSWISS, wxNORMAL, wxNORMAL ); $item1->SetFont($btfont); $top_sizer->AddWindow( $item1, 0, wxALIGN_LEFT|wxALL, 5 ); $top_sizer->AddWindow( Uploader::GUI::wxCategoryTreeCtrl->new( { parentwnd => $parent, id => $main::DESTINATION_CATEGORIES, categories => $params->{categories}, frame_callback => $params->{frame_callback}, } ), 1, wxEXPAND|wxALL, 5 ); my( $item2 ) = Wx::StdDialogButtonSizer->new(); $item2->SetAffirmativeButton( Wx::Button->new( $parent, $main::DESTINATION_CATEGORIES_OK, "" ) ); $item2->SetCancelButton( Wx::Button->new( $parent, $main::DESTINATION_CATEGORIES_CANCEL, "" ) ); $item2->Realize(); $top_sizer->Add( $item2, 0, wxEXPAND|wxALL, 5 ); $parent->SetSizer( $top_sizer ); #$top_sizer->Fit( $parent ); $top_sizer; } 1; pLoader-1.6/src/Uploader/GUI/Layout/Progress.pm0000644000175000017500000000461111342163720017532 0ustar ronronuse Wx; use strict; use Wx qw( wxDefaultSize wxDefaultPosition wxID_OK wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW wxADJUST_MINSIZE ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxLI_HORIZONTAL ); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($ID_PROGRESS_TXT); $ID_PROGRESS_TXT = 10000; use vars qw($ID_STATICBITMAP); $ID_STATICBITMAP = 10001; use vars qw($ID_PROGRESS_GAUGE); $ID_PROGRESS_GAUGE = 10002; use vars qw($ID_LINE); $ID_LINE = 10003; use vars qw($ID_PROGRESS_OK); $ID_PROGRESS_OK = 10004; use vars qw($ID_PROGRESS_TXT2); $ID_PROGRESS_TXT2 = 10005; sub ProcessingProgress { my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item1 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item2 ) = Wx::StaticText->new( $_[0], $main::ID_PROGRESS_TXT, "", wxDefaultPosition, wxDefaultSize, 0 ); $item1->AddWindow( $item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item1->AddSpace( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item3 ) = Wx::StaticBitmap->new( $_[0], $main::ID_STATICBITMAP, wxNullBitmap, wxDefaultPosition, [100,100] ); $item1->AddWindow( $item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); $item1->AddSpace( 20, 30, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item30 ) = Wx::StaticText->new( $_[0], $main::ID_PROGRESS_TXT2, "", wxDefaultPosition, wxDefaultSize, 0 ); $item1->AddWindow( $item30, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item4 ) = Wx::Gauge->new( $_[0], $main::ID_PROGRESS_GAUGE, 100, wxDefaultPosition, [400,12], 0 ); $item1->AddWindow( $item4, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); $item0->Add( $item1, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item5 ) = Wx::StaticLine->new( $_[0], $main::ID_LINE, wxDefaultPosition, [20,-1], wxLI_HORIZONTAL ); $item0->AddWindow( $item5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item6 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item7 ) = Wx::Button->new( $_[0], $main::ID_PROGRESS_OK, "OK", wxDefaultPosition, wxDefaultSize, 0 ); $item6->AddWindow( $item7, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item6, 0, wxALIGN_CENTER|wxALL, 5 ); $_[0]->SetSizer( $item0 ); $item0->SetSizeHints( $_[0] ); $item0; } pLoader-1.6/src/Uploader/GUI/Layout/PhotoPropertiesCategoriesTags.pm0000644000175000017500000002501611353360023023720 0ustar ronronuse Wx qw/wxFONTFAMILY_SWISS wxFONTSTYLE_NORMAL wxFONTWEIGHT_NORMAL wxFONTWEIGHT_BOLD wxGREEN /; use Wx::Calendar; use Wx::DateTime; use strict; use Data::Dumper; # Custom source use Uploader::GUI::wxChoiceFilteredPanel; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW wxEXPAND); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxTR_HAS_BUTTONS wxTR_LINES_AT_ROOT wxSUNKEN_BORDER wxLI_HORIZONTAL wxTE_MULTILINE ); use Wx qw( wxDP_DROPDOWN wxCB_READONLY); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($PHOTO_PROPERTIES_NB); $PHOTO_PROPERTIES_NB = 10000; use vars qw($PHOTO_PROPERTIES_CATEGORIES); $PHOTO_PROPERTIES_CATEGORIES = 10001; use vars qw($ID_LINE); $ID_LINE = 10002; use vars qw($PHOTO_PROPERTIES_UPLOAD); $PHOTO_PROPERTIES_UPLOAD = 10003; sub PhotoPropertiesCategoriesTags { my( $parent, $categories ) = @_; my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); $parent->{_multi_selection_mode_panel} = Wx::Panel->new( $parent, -1, wxDefaultPosition, [450, -1] ); _multi_selection_mode_panel_layout( $parent->{_multi_selection_mode_panel} ); $parent->{_multi_selection_mode_panel}->Show(0); $topsizer->Add( $parent->{_multi_selection_mode_panel}, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 ); # defines minimum size my( $item2 ) = Wx::Notebook->new( $parent, $main::PHOTO_PROPERTIES_NB, wxDefaultPosition, [450,-1], 0 ); my( $item1 ) = $item2; if( Wx->VERSION < 0.21 ) { $item1 = Wx::NotebookSizer->new( $item2 ); } $parent->{_properties_notebook} = $item2; # the notebook has adaptive size : stretch factor 2, wxEXPAND $topsizer->Add( $item1, 2, wxEXPAND|wxALL, 5 ); # the notebook has adaptive size : stretch factor 1, wxEXPAND my ( $tree_categories ) = Uploader::GUI::wxCategoryTreeCtrl->new( { parentwnd => $parent, id => $main::PHOTO_PROPERTIES_CATEGORIES, categories => $categories, } ); $tree_categories->Populate; my( $cat_sizer ) = Wx::BoxSizer->new( wxHORIZONTAL ); $cat_sizer->Add( $tree_categories, 1, wxEXPAND|wxALL, 5 ); $topsizer->Add( $cat_sizer, 1, wxEXPAND|wxALL, 5 ); my( $item4 ) = Wx::StaticLine->new( $parent, $main::ID_LINE, wxDefaultPosition, [20,-1], wxLI_HORIZONTAL ); $topsizer->AddWindow( $item4, 0, wxEXPAND|wxALL, 5 ); my( $item5 ) = Wx::Button->new( $parent, $main::PHOTO_PROPERTIES_UPLOAD, "", wxDefaultPosition, [-1,40], 0 ); my $btfont = Wx::Font->new(16, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD ); $item5->SetFont($btfont); $item5->SetForegroundColour( Wx::Colour->new(255, 51, 99) ); $topsizer->AddWindow( $item5, 0, wxEXPAND|wxALL, 5 ); $parent->SetSizer( $topsizer ); $topsizer->Fit( $parent ); $topsizer; } use vars qw($TAGS); $TAGS = 10004; use vars qw($PHOTO_PROPERTIES_TAG); $PHOTO_PROPERTIES_TAG = 10005; sub photo_properties_tags { my( $parent, $tags ) = @_; my( $topsizer ) = Wx::BoxSizer->new( wxVERTICAL ); $tags->{parentwnd}=$parent; my( $panel ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags); # the panel has adaptive size : stretch factor 1, wxEXPAND $topsizer->AddWindow( $panel, 1, wxEXPAND|wxALL, 5 ); $parent->SetSizer( $topsizer ); $topsizer->Fit( $parent ); $topsizer; } use vars qw($CAPTION); $CAPTION = 10006; use vars qw($PHOTO_PROPERTIES_CAPTION); $PHOTO_PROPERTIES_CAPTION = 10007; use vars qw($AUTHOR); $AUTHOR = 10008; use vars qw($PHOTO_PROPERTIES_AUTHOR); $PHOTO_PROPERTIES_AUTHOR = 10009; use vars qw($COMMENT); $COMMENT = 10010; use vars qw($PHOTO_PROPERTIES_COMMENT); $PHOTO_PROPERTIES_COMMENT = 10011; use vars qw($CREATE_DATE); $CREATE_DATE = 10012; use vars qw($PHOTO_PROPERTIES_CREATE_DATE); $PHOTO_PROPERTIES_CREATE_DATE = 10013; use vars qw($PRIVACY_LEVEL); $PRIVACY_LEVEL = 10014; use vars qw($PHOTO_PROPERTIES_PRIVACY_LEVEL); $PHOTO_PROPERTIES_PRIVACY_LEVEL = 10015; sub photo_properties_caption_comments { my( $parent ) = @_; my $topsizer = Wx::BoxSizer->new( wxVERTICAL ); $topsizer->Add( ComboField( $parent, $main::CAPTION, $main::PHOTO_PROPERTIES_CAPTION ), 0, wxEXPAND|wxALL, 2 ); my $sizer_comment = Wx::BoxSizer->new( wxHORIZONTAL ); $sizer_comment->Add( TextField( $parent, $main::COMMENT, $main::PHOTO_PROPERTIES_COMMENT, 1, wxTE_MULTILINE ), 1, wxEXPAND|wxALL, 2 ); $topsizer->Add( $sizer_comment, 1, wxEXPAND|wxALL, 2 ); my $sizer_author_create = Wx::BoxSizer->new( wxVERTICAL ); $sizer_author_create->Add( TextField( $parent, $main::AUTHOR, $main::PHOTO_PROPERTIES_AUTHOR ), 1, wxEXPAND|wxALL, 2 ); $sizer_author_create->Add( DatepickerField( $parent, $main::CREATE_DATE, $main::PHOTO_PROPERTIES_CREATE_DATE ), 1, wxEXPAND|wxALL, 2 ); my $sizer_author_create_privacy = Wx::BoxSizer->new( wxHORIZONTAL ); my $sizer_privacy = Wx::BoxSizer->new( wxHORIZONTAL ); $sizer_privacy->Add( ChoiceField( $parent, $main::PRIVACY_LEVEL, $main::PHOTO_PROPERTIES_PRIVACY_LEVEL, ), 1, wxALL, 2 ); $sizer_author_create_privacy->Add($sizer_author_create, 0, wxEXPAND|wxALL, 0); $sizer_author_create_privacy->Add($sizer_privacy, 1, wxEXPAND|wxALL, 0); $topsizer->Add( $sizer_author_create_privacy, 0, wxEXPAND|wxALL, 2 ); $parent->SetSizer( $topsizer ); $topsizer->Fit( $parent ); $topsizer; } use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); sub TextField { my ( $parent, $id_label, $id_textctrl, $expand, $style ) = @_; $expand||=0; $style||0; my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); $sizer->Add( Wx::StaticText->new( $parent, $id_label, "text", wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); $sizer->Add( Wx::TextCtrl->new( $parent, $id_textctrl, "", wxDefaultPosition, [-1,-1], $style ), $expand, wxEXPAND|wxALL, 1 ); $sizer; } sub DatepickerField { my ( $parent, $id_label, $id_ctrl, $expand ) = @_; $expand ||=0; my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); $sizer->Add( Wx::StaticText->new( $parent, $id_label, "text", wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); $sizer->Add( Wx::DatePickerCtrl->new( $parent, $id_ctrl, Wx::DateTime->new(), wxDefaultPosition, [200,-1], wxDP_DROPDOWN ), $expand, wxEXPAND|wxALL, 1 ); $sizer; } sub ChoiceField { my ( $parent, $id_label, $id_ctrl, $expand ) = @_; $expand ||=0; my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); $expand||=0; $sizer->Add( Wx::StaticText->new( $parent, $id_label, "text", wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); $sizer->Add( Wx::Choice->new( $parent, $id_ctrl, wxDefaultPosition, [-1,-1], [], 0 ), $expand, wxEXPAND|wxALL, 1 ); $sizer; } sub ComboField { my ( $parent, $id_label, $id_ctrl, $expand ) = @_; $expand ||=0; my( $sizer ) = Wx::BoxSizer->new( wxVERTICAL ); $expand||=0; $sizer->Add( Wx::StaticText->new( $parent, $id_label, "text", wxDefaultPosition, wxDefaultSize, 0 ), 0, wxALL, 1 ); my $ctrl = Wx::ComboBox->new( $parent, $id_ctrl, "", wxDefaultPosition, [-1,-1], [], ); # the EVT_COMBOBOX has set _value if we need to overwrite the default # text. The list contains function names. We want to have the value returned by the function # in the text field Wx::Event::EVT_IDLE( $ctrl, sub { my ( $ctrl, $event ) = @_; if(exists $ctrl->{_value}){ $ctrl->SetValue($ctrl->{_value}) if !$ctrl->{_multi_selection_mode}; delete $ctrl->{_value}; delete $ctrl->{_multi_selection_mode}; } } ); $sizer->Add( $ctrl, $expand, wxEXPAND|wxALL, 1 ); $sizer; } sub _multi_selection_mode_panel_layout{ my ( $panel ) = @_; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my $fb = Wx::Font->new( 10, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD ); my $fn = Wx::Font->new( 10, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL ); $panel->{_text1} = Wx::StaticText->new( $panel, -1, "Text", wxDefaultPosition, wxDefaultSize, 0 ); $panel->{_text1}->SetFont($fb); $item0->Add( $panel->{_text1}, 0, wxALIGN_LEFT|wxALL, 1 ); $panel->{_text2} = Wx::StaticText->new( $panel, -1, "Text", wxDefaultPosition, wxDefaultSize, 0 ); $panel->{_text2}->SetFont($fn); $item0->Add( $panel->{_text2}, 0, wxALIGN_LEFT|wxALL, 1 ); $panel->SetSizer( $item0 ); $item0->SetSizeHints( $panel ); } use vars qw($CATEGORIES_ADD); $CATEGORIES_ADD = 10020; 1; pLoader-1.6/src/Uploader/GUI/Layout/PhotoPropertiesExif.pm0000644000175000017500000000253411342163720021712 0ustar ronronuse Wx; use strict; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxLC_REPORT wxSUNKEN_BORDER ); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($IMG_PROP_EXIF_LIST); $IMG_PROP_EXIF_LIST = 10000; use vars qw($IMG_PROP_EXIF_CLOSE); $IMG_PROP_EXIF_CLOSE = 10001; sub image_prop_exif { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item1 ) = Wx::ListCtrl->new( $parent, $main::IMG_PROP_EXIF_LIST, wxDefaultPosition, [400,200], wxLC_REPORT|wxSUNKEN_BORDER ); $item0->AddWindow( $item1, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item2 ) = Wx::Button->new( $parent, $main::IMG_PROP_EXIF_CLOSE, "OK", wxDefaultPosition, wxDefaultSize, 0 ); $item0->AddWindow( $item2, 0, wxALIGN_CENTER|wxALL, 5 ); $_[0]->SetSizer( $item0 ); $item0->SetSizeHints( $_[0] ); $item0; } # Toolbar functions use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); pLoader-1.6/src/Uploader/GUI/Layout/Login.pm0000644000175000017500000000656511342163720017010 0ustar ronronuse Wx; use strict; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxTE_PASSWORD ); use Wx::Locale; # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($ID_TEXT); $ID_TEXT = 10000; use vars qw($ID_PWG_URL); $ID_PWG_URL = 10001; use vars qw($ID_PWG_USERNAME); $ID_PWG_USERNAME = 10002; use vars qw($ID_PWG_PASSWORD); $ID_PWG_PASSWORD = 10003; use vars qw($ID_PWG_OK); $ID_PWG_OK = 10004; use vars qw($ID_PWG_OFFLINE); $ID_PWG_OFFLINE = 10005; use vars qw($ID_PWG_CANCEL); $ID_PWG_CANCEL = 10006; sub Login { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); $item0->AddSpace( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item2 ) = Wx::StaticBox->new( $parent, -1, "" ); my( $item1 ) = Wx::StaticBoxSizer->new( $item2, wxVERTICAL ); my( $item3 ) = Wx::FlexGridSizer->new( 0, 2, 0, 0 ); my( $item4 ) = Wx::StaticText->new( $parent, $main::ID_TEXT, gettext("Piwigo url"), wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item5 ) = Wx::TextCtrl->new( $parent, $main::ID_PWG_URL, "", wxDefaultPosition, [400,-1], 0 ); $item3->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item6 ) = Wx::StaticText->new( $parent, $main::ID_TEXT, gettext("Admin. username :"), wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item7 ) = Wx::TextCtrl->new( $parent, $main::ID_PWG_USERNAME, "", wxDefaultPosition, [200,-1], 0 ); $item3->AddWindow( $item7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item8 ) = Wx::StaticText->new( $parent, $main::ID_TEXT, gettext("Admin. password :"), wxDefaultPosition, wxDefaultSize, 0 ); $item3->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item9 ) = Wx::TextCtrl->new( $parent, $main::ID_PWG_PASSWORD, "", wxDefaultPosition, [200,-1], wxTE_PASSWORD ); $item3->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); $item1->Add( $item3, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item1, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->AddSpace( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item10 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item11 ) = Wx::Button->new( $parent, $main::ID_PWG_OK, gettext("Connect"), wxDefaultPosition, wxDefaultSize, 0 ); $item11->SetDefault(); $item10->AddWindow( $item11, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item12 ) = Wx::Button->new( $parent, $main::ID_PWG_OFFLINE, gettext("Work Offline"), wxDefaultPosition, wxDefaultSize, 0 ); $item10->AddWindow( $item12, 0, wxALIGN_CENTER|wxALL, 5 ); my( $item13 ) = Wx::Button->new( $parent, $main::ID_PWG_CANCEL, gettext("Exit"), wxDefaultPosition, wxDefaultSize, 0 ); $item10->AddWindow( $item13, 0, wxALIGN_CENTER|wxALL, 5 ); $item0->Add( $item10, 0, wxALIGN_CENTER|wxALL, 5 ); $_[0]->SetSizer( $item0 ); $item0->SetSizeHints( $_[0] ); $item0; } use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); pLoader-1.6/src/Uploader/GUI/Layout/PhotoProperties.pm0000644000175000017500000001211411344123612021067 0ustar ronron#----------------------------------------------------------------------------- # Perl source generated by wxDesigner from file: photo_properties.wdr # Do not modify this file, all changes will be lost! #----------------------------------------------------------------------------- use Wx; use Wx::Calendar; use Wx::DateTime; use strict; # Custom source use Uploader::GUI::wxChoiceFilteredPanel; use Wx qw( wxDefaultSize wxDefaultPosition wxNullAnimation wxNullFont wxBLACK ); use Wx qw( wxID_OK wxID_APPLY wxID_SAVE wxID_SAVEAS wxID_CANCEL wxID_YES wxID_NO wxID_EXIT wxID_ABOUT wxID_HELP ); use Wx qw( wxVERTICAL wxHORIZONTAL wxALL wxLEFT wxRIGHT wxTOP wxBOTTOM wxCENTRE wxGROW ); use Wx qw( wxALIGN_RIGHT wxALIGN_BOTTOM wxALIGN_CENTER wxALIGN_CENTER_VERTICAL wxALIGN_CENTER_HORIZONTAL ); use Wx qw( wxTE_MULTILINE wxDP_DROPDOWN wxDP_ALLOWNONE); # Bitmap functions use Wx qw( wxNullBitmap wxBITMAP_TYPE_PNG ); # Window functions use vars qw($CAPTION); $CAPTION = 10000; use vars qw($PHOTO_PROPERTIES_CAPTION); $PHOTO_PROPERTIES_CAPTION = 10001; use vars qw($AUTHOR); $AUTHOR = 10002; use vars qw($PHOTO_PROPERTIES_AUTHOR); $PHOTO_PROPERTIES_AUTHOR = 10003; use vars qw($COMMENT); $COMMENT = 10004; use vars qw($PHOTO_PROPERTIES_COMMENT); $PHOTO_PROPERTIES_COMMENT = 10005; use vars qw($CREATE_DATE); $CREATE_DATE = 10006; use vars qw($PHOTO_PROPERTIES_CREATE_DATE); $PHOTO_PROPERTIES_CREATE_DATE = 10007; use vars qw($TAGS); $TAGS = 10008; use vars qw($PHOTO_PROPERTIES_TAG); $PHOTO_PROPERTIES_TAG = 10009; use vars qw($PRIVACY_LEVEL); $PRIVACY_LEVEL = 10010; use vars qw($PHOTO_PROPERTIES_PRIVACY_LEVEL); $PHOTO_PROPERTIES_PRIVACY_LEVEL = 10011; sub PhotoProperties { my( $parent ) = $_[0]; my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item1 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item2 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item3 ) = Wx::StaticText->new( $parent, $main::CAPTION, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item2->AddWindow( $item3, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item4 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CAPTION, "", wxDefaultPosition, [200,-1], 0 ); $item2->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL, 5 ); my( $item5 ) = Wx::StaticText->new( $parent, $main::AUTHOR, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item2->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item6 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_AUTHOR, "", wxDefaultPosition, [200,-1], 0 ); $item2->AddWindow( $item6, 0, wxALIGN_CENTER, 5 ); my( $item7 ) = Wx::StaticText->new( $parent, $main::COMMENT, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item2->AddWindow( $item7, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item8 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_COMMENT, "", wxDefaultPosition, [200,100], wxTE_MULTILINE ); $item2->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item9 ) = Wx::StaticText->new( $parent, $main::CREATE_DATE, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item2->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item10 ) = Wx::DatePickerCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, Wx::DateTime->new(), wxDefaultPosition, [200,-1], wxDP_ALLOWNONE ); $item2->AddWindow( $item10, 0, wxALIGN_CENTER_VERTICAL, 5 ); $item1->Add( $item2, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); my( $item11 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item12 ) = Wx::StaticText->new( $parent, $main::TAGS, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item11->AddWindow( $item12, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my $tags = $_[1]; $tags->{parentwnd}=$parent; my( $item13 ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags); $item11->AddWindow( $item13, 0, wxALIGN_CENTER_VERTICAL, 5 ); $item1->Add( $item11, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 0 ); $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $item14 ) = Wx::BoxSizer->new( wxHORIZONTAL ); my( $item15 ) = Wx::BoxSizer->new( wxVERTICAL ); my( $item16 ) = Wx::StaticText->new( $parent, $main::PRIVACY_LEVEL, "text", wxDefaultPosition, wxDefaultSize, 0 ); $item15->AddWindow( $item16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); my( $item17 ) = Wx::Choice->new( $parent, $main::PHOTO_PROPERTIES_PRIVACY_LEVEL, wxDefaultPosition, [520,-1], [], 0 ); $item15->AddWindow( $item17, 0, wxALIGN_CENTER_VERTICAL, 5 ); $item14->Add( $item15, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); $item0->Add( $item14, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); my( $set_size ) = @_ >= 3 ? $_[2] : 1; my( $call_fit ) = @_ >= 2 ? $_[1] : 1; if( $set_size == 1 ) { $_[0]->SetSizer( $item0 ); if( $call_fit == 1 ) { $item0->SetSizeHints( $_[0] ); } } $item0; } # Menu bar functions # Toolbar functions use Wx qw( wxITEM_NORMAL wxITEM_RADIO wxITEM_CHECK ); # End of generated file pLoader-1.6/build/par_options.txt0000644000175000017500000003256511207567153015343 0ustar ronron# +-----------------------------------------------------------------------+ # | pLoader - a Perl photo uploader for Piwigo | # +-----------------------------------------------------------------------+ # | Copyright(C) 2008 Piwigo Team http://piwigo.org | # +-----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of the GNU General Public License as published by | # | the Free Software Foundation | # | | # | This program is distributed in the hope that it will be useful, but | # | WITHOUT ANY WARRANTY; without even the implied warranty of | # | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | # | General Public License for more details. | # | | # | You should have received a copy of the GNU General Public License | # | along with this program; if not, write to the Free Software | # | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | # | USA. | # +-----------------------------------------------------------------------+ # wxpar Getopt::Argfile for PAR::Packer pp -M attributes.pm -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/mingwm10.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_adv_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_qa_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_html_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxbase28u_net_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_gl_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_aui_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxmsw28u_core_gcc_custom.dll -l C:/strawberry/perl/site/lib/Alien/wxWidgets/msw_2_8_8_uni_mslu_gcc_3_4/lib/wxbase28u_gcc_custom.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/delegates.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_vicar_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mpeg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_x_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ept_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_sun_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_png_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_wpg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pdb_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_txt_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_cip_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xpm_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xtrn_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pwp_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/type.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_Magick++_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/X11.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_cin_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_raw_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pix_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dib_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/Xext.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_plasma_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_fax_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/configure.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/magic.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_sfw_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_map_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_magick_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pdf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_clip_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_url_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_rgb_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_scr_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_locale_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_art_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_tiff_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_jpeg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_thumbnail_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/analyze.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_gray_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_xlib_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_jp2_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_braille_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ps3_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_jbig_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_tim_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_rla_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pnm_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xwd_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pcd_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pcl_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_rle_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_cmyk_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_svg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_histogram_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/thresholds.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_magick_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_djvu_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_label_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_gif_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/Magick.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ps_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mpc_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_wbmp_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_tga_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mpr_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mvg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_jbig_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dpx_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_viff_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/log.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_logo_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dcm_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_wand_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dng_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/coder.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/english.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_miff_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_msl_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_html_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xbm_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_exr_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_jpeg_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_avs_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pict_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_jp2_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ycbcr_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_emf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_topol_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pcx_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/autosplit.ix -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_zlib_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xc_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/locale.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_cut_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_uyvy_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mat_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_libxml_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_meta_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_matte_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_uil_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_caption_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xps_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mtv_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_fpx_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_yuv_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_mono_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ps2_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_lcms_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_sgi_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_otb_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_palm_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_vid_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_sct_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_bmp_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_clipboard_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_tiff_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/colors.xml -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_tile_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_cineon_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dps_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_xcf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dot_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_gradient_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_fits_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_avi_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_psd_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_bzlib_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_ttf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_wmf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_stegano_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_preview_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_info_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_null_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_pattern_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_icon_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ttf_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_ipl_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/CORE_RL_png_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/IM_MOD_RL_dds_.dll -l C:/strawberry/perl/site/lib/auto/Image/Magick/type-ghostscript.xml -a "C:/strawberry/perl/site/lib/File/HomeDir/Windows.pm;lib/File/HomeDir/Windows.pm" -a "C:/strawberry/perl/site/lib/File/HomeDir/Darwin.pm;lib/File/HomeDir/Darwin.pm" -a "C:/strawberry/perl/site/lib/File/HomeDir/Driver.pm;lib/File/HomeDir/Driver.pm" -a "C:/strawberry/perl/site/lib/File/HomeDir/MacOS9.pm;lib/File/HomeDir/MacOS9.pm" -a "C:/strawberry/perl/site/lib/File/HomeDir/Unix.pm;lib/File/HomeDir/Unix.pm" -a "C:/strawberry/perl/site/lib/JSON/PP.pm;lib/JSON/PP.pm" -a "C:/strawberry/perl/site/lib/JSON/PP56.pm;lib/JSON/PP56.pm" -a "C:/strawberry/perl/site/lib/JSON/PP58.pm;lib/JSON/PP58.pm" -a "C:/strawberry/perl/site/lib/JSON/PP5005.pm;lib/JSON/PP5005.pm" -a "C:/strawberry/perl/site/lib/JSON/PP/Boolean.pm;lib/JSON/PP/Boolean.pm" -a "C:/strawberry/perl/site/lib/Image/ExifTool/Writer.pl;lib/Image/ExifTool/Writer.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WriteXMP.pl;lib/Image/ExifTool/WriteXMP.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WritePostScript.pl;lib/Image/ExifTool/WritePostScript.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WritePNG.pl;lib/Image/ExifTool/WritePNG.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WritePhotoshop.pl;lib/Image/ExifTool/WritePhotoshop.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WritePDF.pl;lib/Image/ExifTool/WritePDF.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WriteIPTC.pl;lib/Image/ExifTool/WriteIPTC.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WriteExif.pl;lib/Image/ExifTool/WriteExif.pl" -a "C:/strawberry/perl/site/lib/Image/ExifTool/WriteCanonRaw.pl;lib/Image/ExifTool/WriteCanonRaw.pl" -l ../src/pLoader.exe.manifest pLoader-1.6/build/build_pLoader.bat0000644000175000017500000000015711207570126015464 0ustar ronronpp @par_options.txt --gui --lib=..\src --icon=..\res\favicon.ico -output=..\bin\pLoader.exe ..\src\ploader.pl