diff -Nru photogeotagger-0.0.1.0/debian/changelog photogeotagger-0.0.2.0/debian/changelog --- photogeotagger-0.0.1.0/debian/changelog 2012-03-03 11:26:54.000000000 +0000 +++ photogeotagger-0.0.2.0/debian/changelog 2012-03-10 12:47:52.000000000 +0000 @@ -1,3 +1,10 @@ +photogeotagger (0.0.2.0-1ubuntu1) precise; urgency=low + + * Now show all photos imported in the map + * If double clic near photo you can see original photo + + -- Lorenzo Carbonell Sat, 10 Mar 2012 13:46:56 +0100 + photogeotagger (0.0.1.0-1ubuntu1) precise; urgency=low * First release diff -Nru photogeotagger-0.0.1.0/src/comun.py photogeotagger-0.0.2.0/src/comun.py --- photogeotagger-0.0.1.0/src/comun.py 2012-03-03 11:12:40.000000000 +0000 +++ photogeotagger-0.0.2.0/src/comun.py 2012-03-10 12:48:15.000000000 +0000 @@ -27,7 +27,7 @@ __copyright__ = 'Copyright (c) 2012 Lorenzo Carbonell' __license__ = 'GPLV3' __url__ = 'http://www.atareao.es' -__version__ = '0.0.1.0' +__version__ = '0.0.2.0' import os diff -Nru photogeotagger-0.0.1.0/src/photogeotagger.py photogeotagger-0.0.2.0/src/photogeotagger.py --- photogeotagger-0.0.1.0/src/photogeotagger.py 2012-03-03 11:35:59.000000000 +0000 +++ photogeotagger-0.0.2.0/src/photogeotagger.py 2012-03-10 12:40:19.000000000 +0000 @@ -38,7 +38,13 @@ import gettext import pyexiv2 import comun +import webbrowser +import glob +from PIL import Image from ipaddress import get_lat_lng_from_ip +from progreso import Progreso +from verimagen import VerImagen +import math # # dependencies: @@ -53,6 +59,105 @@ gettext.textdomain(comun.APP) _ = gettext.gettext +config_dir = os.path.join(os.path.expanduser('~'),'.config') +config_app_dir = os.path.join(config_dir, comun.APP) +images_dir = os.path.join(config_app_dir, 'images') +def rational_coord_to_decimal(value): + value = value.value + print value + result = (float(value[0].numerator)/float(value[0].denominator) + + float(value[1].numerator)/float(value[1].denominator)/60.0 + + float(value[2].numerator)/float(value[2].denominator)/3600.0) + print result + return result +def get_exif_data(image_path): + result = {} + exiv_image = pyexiv2.metadata.ImageMetadata(image_path) + exiv_image.read() + exif_keys = exiv_image.exif_keys + + #print exif_keys + + if ("Exif.GPSInfo.GPSLatitude" in exif_keys + and "Exif.GPSInfo.GPSLongitude" in exif_keys + and "Exif.GPSInfo.GPSLongitudeRef" in exif_keys + and "Exif.GPSInfo.GPSLatitudeRef" in exif_keys): + # convert rational values into decimal + lat = rational_coord_to_decimal( + exiv_image["Exif.GPSInfo.GPSLatitude"]) + lng = rational_coord_to_decimal( + exiv_image["Exif.GPSInfo.GPSLongitude"]) + print '########################################################' + print exiv_image["Exif.GPSInfo.GPSLongitudeRef"].value + print lng + print lat + if (exiv_image["Exif.GPSInfo.GPSLongitudeRef"].value == "W"): + print 'si' + lng = -lng + if (exiv_image["Exif.GPSInfo.GPSLatitudeRef"].value == "S"): + lat = -lat + print lng + print lat + if 'Exif.Photo.UserComment' in exif_keys: + filename = exiv_image['Exif.Photo.UserComment'].value + else: + filename = '' + return [lat, lng, filename] + +def resize_image(filename): + exiv_image = pyexiv2.metadata.ImageMetadata(filename) + exiv_image.read() + exif_keys = exiv_image.exif_keys + if ('Exif.GPSInfo.GPSLatitude' in exif_keys and 'Exif.GPSInfo.GPSLongitude' in exif_keys and 'Exif.GPSInfo.GPSLongitudeRef' in exif_keys and 'Exif.GPSInfo.GPSLatitudeRef' in exif_keys): + print exiv_image['Exif.GPSInfo.GPSLatitude'] + print exiv_image['Exif.GPSInfo.GPSLongitude'] + print exiv_image['Exif.GPSInfo.GPSLongitudeRef'] + print exiv_image['Exif.GPSInfo.GPSLatitudeRef'] + # + im1 = Image.open(filename) + resized_filename = os.path.join(images_dir,os.path.basename(filename)) + # adjust width and height to your needs + width = 64 + height = 64 + # use one of these filter options to resize the image + resized = im1.resize((width, height), Image.ANTIALIAS) # best down-sizing filter + resized.save(resized_filename) + exiv_resized_image = pyexiv2.metadata.ImageMetadata(resized_filename) + exiv_resized_image.read() + for key in exif_keys: + exiv_resized_image[key] = pyexiv2.ExifTag(key, exiv_image[key].value) + ''' + exiv_resized_image['Exif.GPSInfo.GPSLatitude'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLatitude', exiv_image['Exif.GPSInfo.GPSLatitude'].value) + exiv_resized_image['Exif.GPSInfo.GPSLongitude'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLongitude', exiv_image['Exif.GPSInfo.GPSLongitude'].value) + exiv_resized_image['Exif.GPSInfo.GPSLongitudeRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLongitudeRef', exiv_image['Exif.GPSInfo.GPSLongitudeRef'].value) + exiv_resized_image['Exif.GPSInfo.GPSLatitudeRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLatitudeRef', exiv_image['Exif.GPSInfo.GPSLatitudeRef'].value) + ''' + exiv_resized_image['Exif.Photo.UserComment'] = pyexiv2.ExifTag('Exif.Photo.UserComment',filename) + exiv_resized_image.write() + +def add2menu(menu, text = None, icon = None, conector_event = None, conector_action = None): + if text != None: + if icon == None: + menu_item = Gtk.MenuItem.new_with_label(text) + else: + menu_item = Gtk.ImageMenuItem.new_with_label(text) + image = Gtk.Image.new_from_stock(icon, Gtk.IconSize.MENU) + menu_item.set_image(image) + menu_item.set_always_show_image(True) + else: + if icon == None: + menu_item = Gtk.SeparatorMenuItem() + else: + menu_item = Gtk.ImageMenuItem() + image = Gtk.Image.new_from_stock(icon, Gtk.IconSize.MENU) + menu_item.set_image(image) + menu_item.set_always_show_image(True) + if conector_event != None and conector_action != None: + menu_item.connect(conector_event,conector_action) + menu_item.show() + menu.append(menu_item) + return menu_item + def dms(val): """ Return degrees/minutes/seconds triple of rational values. @@ -75,7 +180,61 @@ #self.set_default_size(800, 800) self.set_icon_name(comun.ICON) self.connect('destroy', self.destroy) - + self.connect('scroll_event', self.scroll) + #self.set_events(self.get_events()| Gdk.BUTTON.PRESS_MASK|gdk.BUTTON_RELEASE_MASK| gdk.POINTER_MOTION_MASK|gdk.POINTER_MOTION_HINT_MASK) + self.set_events(Gdk.EventMask.ALL_EVENTS_MASK) + # + vbox = Gtk.VBox() + self.add(vbox) + # + self.menubar = Gtk.MenuBar.new() + vbox.pack_start(self.menubar,False,False,0) + ################################################################ + self.filemenu = Gtk.Menu.new() + self.filem = Gtk.MenuItem.new_with_label(_('File')) + self.filem.set_submenu(self.filemenu) + # + self.sal = Gtk.ImageMenuItem.new_with_label(_('Exit')) + self.sal.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_QUIT, Gtk.IconSize.MENU)) + self.sal.set_always_show_image(True) + self.sal.connect('activate',self.close_application) + self.filemenu.append(self.sal) + # + self.menubar.append(self.filem) + ################################################################ + self.fileedit = Gtk.Menu.new() + self.filee = Gtk.MenuItem.new_with_label(_('Edit')) + self.filee.set_submenu(self.fileedit) + # + self.import_images = Gtk.ImageMenuItem.new_with_label(_('Import images')) + self.import_images.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_REVERT_TO_SAVED, Gtk.IconSize.MENU)) + self.import_images.connect('activate',self.on_import_images_activate) + self.import_images.set_always_show_image(True) + self.fileedit.append(self.import_images) + # + self.clear_images = Gtk.ImageMenuItem.new_with_label(_('Clear images')) + self.clear_images.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_CLEAR, Gtk.IconSize.MENU)) + self.clear_images.connect('activate',self.on_clear_images_activated) + self.clear_images.set_always_show_image(True) + self.fileedit.append(self.clear_images) + ''' + # + self.pref = Gtk.ImageMenuItem.new_with_label(_('Preferences')) + self.pref.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_PREFERENCES, Gtk.IconSize.MENU)) + #self.pref.connect('activate',self.on_preferences_activate) + self.pref.set_always_show_image(True) + self.fileedit.append(self.pref) + ''' + # + self.menubar.append(self.filee) + ################################################################ + self.filehelp = Gtk.Menu.new() + self.fileh = Gtk.MenuItem.new_with_label(_('Help')) + self.fileh.set_submenu(self.get_help_menu()) + # + self.menubar.append(self.fileh) + ################################################################ + # """Create the Champlain map view and add it to the GUI""" # Create champlain widget self.map_widget = GtkChamplain.Embed() @@ -83,23 +242,27 @@ self.map_widget.connect('motion-notify-event', self.on_mouse_moved) self.map_widget.connect('button-press-event', self.on_button_press) self.map_widget.connect('button-release-event', self.on_button_release) - self.map_widget.connect('scroll-event', self.scroll) - vbox = Gtk.VBox() - self.add(vbox) - # + self.map_widget.connect('scroll_event', self.scroll) vbox.pack_start(self.map_widget,False,False,0) self.coordinates = None # Set map view properties self.view = self.map_widget.get_view() + self.view.set_animate_zoom(True) + self.view.set_kinetic_mode(True) + #self.view.set_property("scroll-mode", Champlain.SCROLL_MODE_KINETIC) # latitude,longitude = get_lat_lng_from_ip() # self.view.center_on(latitude,longitude) - self.view.set_zoom_on_double_click(True) + #self.view.set_zoom_on_double_click(True) self.view.set_animate_zoom(True) self.view.set_zoom_level(10) + scale = Champlain.Scale.new() + scale.connect_view(self.view) + self.view.bin_layout_add(scale, + Clutter.BinAlignment.START, Clutter.BinAlignment.END) # Create Map Layer self.layer = Champlain.MarkerLayer() self.view.add_layer(self.layer) @@ -125,9 +288,126 @@ vbox.pack_start(hbox2,False,False,0) # self.path = os.getenv('HOME') + self.load_images() self.show_all() + def on_clear_images_activated(self,widget): + for image in glob.glob(os.path.join(images_dir,'*.jpg')): + os.remove(image) + self.load_images() + def on_import_images_activate(self,widget): + dialog = Gtk.FileChooserDialog(_('Import images to PhotoGeoTagger'), + self, + Gtk.FileChooserAction.OPEN, + (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, + Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) + dialog.set_default_response(Gtk.ResponseType.OK) + dialog.set_select_multiple(True) + dialog.set_current_folder(self.path) + filter = Gtk.FileFilter() + filter.set_name(_('Images')) + filter.add_mime_type('image/jpeg') + filter.add_pattern('*.jpg') + dialog.add_filter(filter) + preview = Gtk.Image() + dialog.set_preview_widget(preview) + dialog.connect('update-preview', self.update_preview_cb, preview) + response = dialog.run() + self.path = os.path.dirname(dialog.get_filename()) + + if response == Gtk.ResponseType.OK: + filenames = dialog.get_filenames() + dialog.destroy() + p = Progreso(_('Importing images'),self,len(filenames)) + for filename in filenames: + p.increase() + resize_image(filename) + self.load_images() + else: + dialog.destroy() + def load_images(self): + self.images = [] + self.view.remove_layer(self.layer) + self.layer = Champlain.MarkerLayer() + self.view.add_layer(self.layer) + if not os.path.exists(images_dir): + os.makedirs(images_dir) + filenames = glob.glob(os.path.join(images_dir,'*.jpg')) + p = Progreso(_('Loading images'),self,len(filenames)) + for image in filenames: + orange = Clutter.Color.new(0xf3, 0x94, 0x07, 0xbb) + ct = Clutter.Texture.new_from_file(image) + ct.set_size(64,64) + marker = Champlain.Label.new_with_image(ct) + marker.set_use_markup(True) + marker.set_alignment(Pango.Alignment.RIGHT) + marker.set_color(orange) + lat, lon, filename = get_exif_data(image) + marker.set_location(lat,lon) + marker.set_reactive(True) + marker.set_selectable(True) + #marker.connect("button-release-event", self.marker_button_release_cb, self.view) + self.layer.add_marker(marker) + self.images.append([lat, lon, filename]) + p.increase() + + + def get_help_menu(self): + help_menu =Gtk.Menu() + # + add2menu(help_menu,text = _('Web...'),conector_event = 'activate',conector_action = self.on_menu_project_clicked) + add2menu(help_menu,text = _('Get help online...'),conector_event = 'activate',conector_action = self.on_menu_help_online_clicked) + add2menu(help_menu,text = _('Translate this application...'),conector_event = 'activate',conector_action = self.on_menu_translations_clicked) + add2menu(help_menu,text = _('Report a bug...'),conector_event = 'activate',conector_action = self.on_menu_bugs_clicked) + add2menu(help_menu) + add2menu(help_menu,text = _('About'),conector_event = 'activate',conector_action = self.on_about_activate) + # + help_menu.show() + # + return help_menu + + def on_menu_project_clicked(self,widget): + webbrowser.open('https://launchpad.net/~atareao') + def on_menu_help_online_clicked(self,widget): + webbrowser.open('https://answers.launchpad.net/~atareao') + + def on_menu_translations_clicked(self,widget): + webbrowser.open('https://translations.launchpad.net/~atareao') + + def on_menu_bugs_clicked(self,widget): + webbrowser.open('https://bugs.launchpad.net/~atareao') + + def on_about_activate(self,widget): + ad=Gtk.AboutDialog() + ad.set_name(comun.APPNAME) + ad.set_version(comun.VERSION) + ad.set_copyright('Copyrignt (c) 2010-2011\nLorenzo Carbonell') + ad.set_comments(_('An application to Geolocate Photos')) + ad.set_license(''+ + 'This program is free software: you can redistribute it and/or modify it\n'+ + 'under the terms of the GNU General Public License as published by the\n'+ + 'Free Software Foundation, either version 3 of the License, or (at your option)\n'+ + 'any later version.\n\n'+ + 'This program is distributed in the hope that it will be useful, but\n'+ + 'WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n'+ + 'or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n'+ + 'more details.\n\n'+ + 'You should have received a copy of the GNU General Public License along with\n'+ + 'this program. If not, see .') + ad.set_website('http://www.atareao.es') + ad.set_website_label('http://www.atareao.es') + ad.set_authors(['Lorenzo Carbonell ']) + ad.set_documenters(['Lorenzo Carbonell ']) + ad.set_translator_credits(''+ + 'Lorenzo Carbonell \n') + ad.set_program_name('PhotoGeoTagger') + #ad.set_logo(GdkPixbuf.Pixbuf.new_from_file('/usr/share/icons/hicolor/scalable/apps/picapy.svg')) + ad.run() + ad.destroy() + def close_application(self,widget): + exit(0) + def marker_button_release_cb(selfactor, event, view): print 'pililin' if event.button != 1 and event.click_count > 1: @@ -135,20 +415,23 @@ print "Montreal was clicked\n" return True def on_mouse_moved(self,widget,event): - self.status.set_text('%s: %s, %s: %s'%(_('Latitude'),_('Longitude'),self.view.y_to_latitude(event.y),self.view.x_to_longitude(event.x))) + self.status.set_text('%s: %s, %s: %s'%(_('Latitude'),self.view.y_to_latitude(event.y),_('Longitude'), self.view.x_to_longitude(event.x))) def scroll(self,widget, event): + print event.time print self.map_widget.get_allocated_width() print self.map_widget.get_allocated_height() print event.x, self.view.x_to_longitude(event.x) print event.y, self.view.y_to_latitude(event.y) - self.view.center_on(self.view.y_to_latitude(event.y),self.view.x_to_longitude(event.x)) + #self.view.center_on(self.view.y_to_latitude(event.y),self.view.x_to_longitude(event.x)) if event.direction == Gdk.ScrollDirection.UP: self.view.zoom_in() else: self.view.zoom_out() + self.view.emit("realize") def on_button_release(self,widget, event): + if event.button == 1: coordinates = event.x,event.y if self.coordinates !=None and self.coordinates[0] != event.x and self.coordinates[1] != event.y: @@ -215,7 +498,16 @@ def on_button_press(self,widget, event): if event.button == 1 and event.type == Gdk.EventType(value=5): #double click print 'double' - self.view.zoom_in() + for image in self.images: + x = self.view.longitude_to_x(image[1]) + y = self.view.latitude_to_y(image[0]) + if math.sqrt(math.pow(x-event.x,2.0)+math.pow(y-event.y,2.0))<10: + print image[2] + vi = VerImagen(self,image[2]) + vi.run() + vi.hide() + vi.destroy() + return elif event.button == 1: self.coordinates = event.x,event.y print 'simple' diff -Nru photogeotagger-0.0.1.0/src/progreso.py photogeotagger-0.0.2.0/src/progreso.py --- photogeotagger-0.0.1.0/src/progreso.py 1970-01-01 00:00:00.000000000 +0000 +++ photogeotagger-0.0.2.0/src/progreso.py 2012-03-10 12:51:17.000000000 +0000 @@ -0,0 +1,89 @@ +#! /usr/bin/python +# -*- coding: iso-8859-15 -*- +# +__author__='atareao' +__date__ ='$06-jun-2010 12:34:44$' +# +# +# +# Copyright (C) 2010 Lorenzo Carbonell +# lorenzo.carbonell.cerezo@gmail.com +# +# 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, either version 3 of the License, or +# (at your option) any later version. +# +# 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, see . +# +# +# +from gi.repository import Gtk + +class Progreso(Gtk.Dialog): + def __init__(self,title,parent,max_value): + # + Gtk.Dialog.__init__(self,title,parent) + self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) + self.set_size_request(330, 40) + self.set_resizable(False) + self.connect('destroy', self.close) + # + vbox1 = Gtk.VBox(spacing = 5) + vbox1.set_border_width(5) + self.get_content_area().add(vbox1) + # + self.progressbar = Gtk.ProgressBar() + vbox1.pack_start(self.progressbar,True,True,0) + # + self.show_all() + # + self.max_value=max_value + self.value=0.0 + self.map() + while Gtk.events_pending(): + Gtk.main_iteration() + if max_value == 0: + self.hide() + self.destroy() + + + def set_value(self,value): + if value >=0 and value<=self.max_value: + self.value = value + fraction=self.value/self.max_value + self.progressbar.set_fraction(fraction) + self.map() + while Gtk.events_pending(): + Gtk.main_iteration() + if self.value==self.max_value: + self.hide() + def close(self,widget=None): + self.destroy() + + def increase(self): + self.value+=1.0 + fraction=self.value/self.max_value + self.progressbar.set_fraction(fraction) + while Gtk.events_pending(): + Gtk.main_iteration() + if self.value==self.max_value: + self.hide() + + def decrease(self): + self.value-=1.0 + fraction=self.value/self.max_value + self.progressbar.set_fraction(fraction) + self.map() + while Gtk.events_pending(): + Gtk.main_iteration() + +if __name__ == '__main__': + p = Progreso('Prueba',None,100) + diff -Nru photogeotagger-0.0.1.0/src/verimagen.py photogeotagger-0.0.2.0/src/verimagen.py --- photogeotagger-0.0.1.0/src/verimagen.py 1970-01-01 00:00:00.000000000 +0000 +++ photogeotagger-0.0.2.0/src/verimagen.py 2012-03-10 12:16:09.000000000 +0000 @@ -0,0 +1,94 @@ +#! /usr/bin/python +# -*- coding: iso-8859-15 -*- +# +__author__='atareao' +__date__ ='$06-jun-2010 12:34:44$' +# +# +# +# Copyright (C) 2010 Lorenzo Carbonell +# lorenzo.carbonell.cerezo@gmail.com +# +# 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, either version 3 of the License, or +# (at your option) any later version. +# +# 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, see . +# +# +# +from gi.repository import Gtk,GdkPixbuf +import urllib +import comun +import locale +import gettext + +locale.setlocale(locale.LC_ALL, '') +gettext.bindtextdomain(comun.APP, comun.LANGDIR) +gettext.textdomain(comun.APP) +_ = gettext.gettext + +class VerImagen(Gtk.Dialog): + def __init__(self,parent,imagen): + Gtk.Dialog.__init__(self,_('Image'),parent,Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT)) + self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) + self.set_default_size(800,800) + self.set_resizable(True) + self.connect('destroy', self.close) + # + vbox = Gtk.VBox(spacing = 5) + vbox.set_border_width(5) + self.get_content_area().add(vbox) + # + frame = Gtk.Frame() + vbox.pack_start(frame,True,True,0) + # + scrolledwindow = Gtk.ScrolledWindow() + scrolledwindow.set_size_request(800,800) + self.connect('key-release-event',self.on_key_release_event) + frame.add(scrolledwindow) + # + viewport = Gtk.Viewport() + viewport.set_size_request(800,800) + scrolledwindow.add(viewport) + # + self.scale=100 + # + # + if imagen != None: + self.image = Gtk.Image() + self.pbuf = GdkPixbuf.Pixbuf.new_from_file(imagen) + self.image.set_from_pixbuf(self.pbuf) + viewport.add(self.image) + else: + self.pbuf = None + self.show_all() + # + def on_key_release_event(self,widget,event): + print event.keyval + if event.keyval == 65451 or event.keyval == 43: + self.scale=self.scale*1.1 + elif event.keyval == 65453 or event.keyval == 45: + self.scale=self.scale*.9 + elif event.keyval == 65456 or event.keyval == 48: + self.scale = 100 + if self.pbuf != None: + w=int(self.pbuf.get_width()*self.scale/100) + h=int(self.pbuf.get_height()*self.scale/100) + pixbuf=self.pbuf.scale_simple(w,h,GdkPixbuf.InterpType.BILINEAR) + self.image.set_from_pixbuf(pixbuf) + + def close(self,widget): + self.destroy() + +if __name__ == '__main__': + vi = VerImagen(None,None) + vi.run() + exit(0) diff -Nru photogeotagger-0.0.1.0/template1/es.po photogeotagger-0.0.2.0/template1/es.po --- photogeotagger-0.0.1.0/template1/es.po 2012-03-03 11:39:01.000000000 +0000 +++ photogeotagger-0.0.2.0/template1/es.po 2012-03-10 12:46:46.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: photogeotagger 0.0.1.0\n" "Report-Msgid-Bugs-To: lorenzo.carbonell.cerezo@gmail.com\n" -"POT-Creation-Date: 2012-03-03 12:37+0100\n" +"POT-Creation-Date: 2012-03-10 13:44+0100\n" "PO-Revision-Date: 2012-03-03 12:37+0100\n" "Last-Translator: atareao \n" "Language-Team: Spanish\n" @@ -17,18 +17,85 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:194 +msgid "File" +msgstr "Archivo" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:197 +msgid "Exit" +msgstr "Salir" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:206 +msgid "Edit" +msgstr "Editar" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:209 +#, fuzzy +msgid "Import images" +msgstr "Importar imágenes" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:215 +msgid "Clear images" +msgstr "Borrar imágenes" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:232 +msgid "Help" +msgstr "Ayuda" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:298 +msgid "Import images to PhotoGeoTagger" +msgstr "Importar imágenes a PhotoGeoTagger" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:307 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:452 +msgid "Images" +msgstr "Imágenes" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:320 +msgid "Importing images" +msgstr "Importando imágenes" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:335 +msgid "Loading images" +msgstr "Cargando imágenes" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:357 +msgid "Web..." +msgstr "Web..." + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:358 +msgid "Get help online..." +msgstr "Consigue ayuda en línea..." + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:359 +msgid "Translate this application..." +msgstr "Traduce esta aplicación..." + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:360 +msgid "Report a bug..." +msgstr "Informa de un error..." + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:362 +msgid "About" +msgstr "Acerca de..." + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:385 +msgid "An application to Geolocate Photos" +msgstr "Una aplicación para geolocalizar fotografías" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Latitude" msgstr "Latitud" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Longitude" msgstr "Longitud" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:160 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:443 msgid "Select one image to geotag" msgstr "Selecciona una imagen para geolocalizar" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:169 -msgid "Images" -msgstr "Imágenes" +#: /home/atareao/Dropbox/tp/photogeotagger/src/verimagen.py:40 +#, fuzzy +msgid "Image" +msgstr "Imagen" diff -Nru photogeotagger-0.0.1.0/template1/.po photogeotagger-0.0.2.0/template1/.po --- photogeotagger-0.0.1.0/template1/.po 2012-03-03 11:39:01.000000000 +0000 +++ photogeotagger-0.0.2.0/template1/.po 2012-03-10 12:44:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: photogeotagger 0.0.1.0\n" "Report-Msgid-Bugs-To: lorenzo.carbonell.cerezo@gmail.com\n" -"POT-Creation-Date: 2012-03-03 12:37+0100\n" +"POT-Creation-Date: 2012-03-10 13:44+0100\n" "PO-Revision-Date: 2012-02-26 11:10+0100\n" "Last-Translator: atareao \n" "Language-Team: Language \n" @@ -17,18 +17,83 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:194 +msgid "File" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:197 +msgid "Exit" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:206 +msgid "Edit" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:209 +msgid "Import images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:215 +msgid "Clear images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:232 +msgid "Help" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:298 +msgid "Import images to PhotoGeoTagger" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:307 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:452 +msgid "Images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:320 +msgid "Importing images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:335 +msgid "Loading images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:357 +msgid "Web..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:358 +msgid "Get help online..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:359 +msgid "Translate this application..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:360 +msgid "Report a bug..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:362 +msgid "About" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:385 +msgid "An application to Geolocate Photos" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Latitude" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Longitude" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:160 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:443 msgid "Select one image to geotag" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:169 -msgid "Images" +#: /home/atareao/Dropbox/tp/photogeotagger/src/verimagen.py:40 +msgid "Image" msgstr "" diff -Nru photogeotagger-0.0.1.0/template1/template1.pot photogeotagger-0.0.2.0/template1/template1.pot --- photogeotagger-0.0.1.0/template1/template1.pot 2012-03-03 11:39:01.000000000 +0000 +++ photogeotagger-0.0.2.0/template1/template1.pot 2012-03-10 12:44:44.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: lorenzo.carbonell.cerezo@gmail.com\n" -"POT-Creation-Date: 2012-03-03 12:39+0100\n" +"POT-Creation-Date: 2012-03-10 13:44+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,18 +17,83 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:194 +msgid "File" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:197 +msgid "Exit" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:206 +msgid "Edit" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:209 +msgid "Import images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:215 +msgid "Clear images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:232 +msgid "Help" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:298 +msgid "Import images to PhotoGeoTagger" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:307 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:452 +msgid "Images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:320 +msgid "Importing images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:335 +msgid "Loading images" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:357 +msgid "Web..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:358 +msgid "Get help online..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:359 +msgid "Translate this application..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:360 +msgid "Report a bug..." +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:362 +msgid "About" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:385 +msgid "An application to Geolocate Photos" +msgstr "" + +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Latitude" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:138 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:418 msgid "Longitude" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:160 +#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:443 msgid "Select one image to geotag" msgstr "" -#: /home/atareao/Dropbox/tp/photogeotagger/src/photogeotagger.py:169 -msgid "Images" +#: /home/atareao/Dropbox/tp/photogeotagger/src/verimagen.py:40 +msgid "Image" msgstr ""