First step in reading and processing GPSAltitude, and GPSTimeStamp.
svn: r17642
This commit is contained in:
parent
7901808c88
commit
10906f43be
@ -164,9 +164,11 @@ _DATAMAP = {
|
|||||||
"Exif.GPSInfo.GPSLatitude" : "Latitude",
|
"Exif.GPSInfo.GPSLatitude" : "Latitude",
|
||||||
"Exif.GPSInfo.GPSLongitudeRef" : "LongitudeRef",
|
"Exif.GPSInfo.GPSLongitudeRef" : "LongitudeRef",
|
||||||
"Exif.GPSInfo.GPSLongitude" : "Longitude",
|
"Exif.GPSInfo.GPSLongitude" : "Longitude",
|
||||||
"Exif.GPSInfo.GPSTimeStamp" : "GPSTimeStamp"}
|
"Exif.GPSInfo.AltitudeRef" : "AltitudeRef",
|
||||||
_DATAMAP = dict( (key, val) for key, val in _DATAMAP.items() )
|
"Exif.GPSInfo.GPSAltitude" : "Altitude",
|
||||||
_DATAMAP.update( (val, key) for key, val in _DATAMAP.items() )
|
"Exif.GPSInfo.GPSTimeStamp" : "gpsTimeStamp"}
|
||||||
|
_DATAMAP = dict((key, val) for key, val in _DATAMAP.items())
|
||||||
|
_DATAMAP.update( (val, key) for key, val in _DATAMAP.items())
|
||||||
|
|
||||||
# define tooltips for all data entry fields...
|
# define tooltips for all data entry fields...
|
||||||
_TOOLTIPS = {
|
_TOOLTIPS = {
|
||||||
@ -190,7 +192,13 @@ _TOOLTIPS = {
|
|||||||
"Example: 43.722965, 43 43 22 N, 38° 38′ 03″ N, 38 38 3"),
|
"Example: 43.722965, 43 43 22 N, 38° 38′ 03″ N, 38 38 3"),
|
||||||
|
|
||||||
"Longitude" : _("Enter the Longitude GPS Coordinates for this image,\n"
|
"Longitude" : _("Enter the Longitude GPS Coordinates for this image,\n"
|
||||||
"Example: 10.396378, 10 23 46 E, 105° 6′ 6″ W, -105 6 6") }
|
"Example: 10.396378, 10 23 46 E, 105° 6′ 6″ W, -105 6 6"),
|
||||||
|
|
||||||
|
"Altitude" : _("This is the amount of meters that you are either above or below sea level.\n"
|
||||||
|
"Example: 54 1, 54 0"),
|
||||||
|
|
||||||
|
"gpsTimeStamp" : _("The Hour Minutes Seconds that the GPS Coordinates were received.\n"
|
||||||
|
"Example: 13 30 25") }
|
||||||
|
|
||||||
_TOOLTIPS = dict( (key, tip) for key, tip in _TOOLTIPS.items() )
|
_TOOLTIPS = dict( (key, tip) for key, tip in _TOOLTIPS.items() )
|
||||||
|
|
||||||
@ -248,31 +256,25 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
# Displays the file name...
|
# Displays the file name...
|
||||||
medialabel = gtk.HBox(False)
|
medialabel = gtk.HBox(False)
|
||||||
label = gtk.Label()
|
|
||||||
label.set_alignment(0.0, 0.0)
|
label = self.__create_label("MediaLabel", False, False, False)
|
||||||
label.set_line_wrap(True)
|
|
||||||
medialabel.pack_start(label, expand =False)
|
medialabel.pack_start(label, expand =False)
|
||||||
self.exif_widgets["MediaLabel"] = label
|
|
||||||
main_vbox.pack_start(medialabel, expand =False, fill =False, padding =2)
|
main_vbox.pack_start(medialabel, expand =False, fill =False, padding =2)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
# Displays mime type information...
|
# Displays mime type information...
|
||||||
mimetype = gtk.HBox(False)
|
mimetype = gtk.HBox(False)
|
||||||
label = gtk.Label()
|
|
||||||
label.set_alignment(0.0, 0.0)
|
label = self.__create_label("MimeType", False, False, False)
|
||||||
label.set_line_wrap(True)
|
|
||||||
mimetype.pack_start(label, expand =False)
|
mimetype.pack_start(label, expand =False)
|
||||||
self.exif_widgets["MimeType"] = label
|
|
||||||
main_vbox.pack_start(mimetype, expand =False, fill =False, padding =2)
|
main_vbox.pack_start(mimetype, expand =False, fill =False, padding =2)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
# Displays all plugin messages...
|
# Displays all plugin messages...
|
||||||
messagearea = gtk.HBox(False)
|
messagearea = gtk.HBox(False)
|
||||||
label = gtk.Label()
|
|
||||||
label.set_alignment(0.5, 0.0)
|
label = self.__create_label("MessageArea", False, False, False)
|
||||||
label.set_line_wrap(True)
|
|
||||||
messagearea.pack_start(label, expand =False)
|
messagearea.pack_start(label, expand =False)
|
||||||
self.exif_widgets["MessageArea"] = label
|
|
||||||
main_vbox.pack_start(messagearea, expand =False, fill =False, padding =2)
|
main_vbox.pack_start(messagearea, expand =False, fill =False, padding =2)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
@ -405,7 +407,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
# display all exif metadata...
|
# display all exif metadata...
|
||||||
mediadatatags = _get_exif_keypairs(self.plugin_image)
|
mediadatatags = _get_exif_keypairs(self.plugin_image)
|
||||||
self.set_has_data( len(mediadatatags) > 0)
|
|
||||||
if mediadatatags:
|
if mediadatatags:
|
||||||
self.display_metadata(mediadatatags)
|
self.display_metadata(mediadatatags)
|
||||||
|
|
||||||
@ -574,6 +575,28 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
return button
|
return button
|
||||||
|
|
||||||
|
def __create_label(self, widget, text, width, height, wrap =True):
|
||||||
|
"""
|
||||||
|
creates a label for this addon.
|
||||||
|
"""
|
||||||
|
|
||||||
|
label = gtk.Label()
|
||||||
|
label.set_alignment(0.0, 0.0)
|
||||||
|
|
||||||
|
if wrap:
|
||||||
|
label.set_line_wrap(True)
|
||||||
|
|
||||||
|
if (width and height):
|
||||||
|
label.set_size_request(width, height)
|
||||||
|
|
||||||
|
if text:
|
||||||
|
label.set_text(text)
|
||||||
|
|
||||||
|
if widget:
|
||||||
|
self.exif_widgets[widget] = label
|
||||||
|
|
||||||
|
return label
|
||||||
|
|
||||||
def build_shaded_display(self):
|
def build_shaded_display(self):
|
||||||
"""
|
"""
|
||||||
Build the GUI interface.
|
Build the GUI interface.
|
||||||
@ -760,7 +783,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
if not self.exif_widgets["Save"].get_sensitive():
|
if not self.exif_widgets["Save"].get_sensitive():
|
||||||
self.activate_buttons(["Save"])
|
self.activate_buttons(["Save"])
|
||||||
|
|
||||||
def display_edit_window(self, obj):
|
def display_edit_window(self, object):
|
||||||
"""
|
"""
|
||||||
creates the editing area fields.
|
creates the editing area fields.
|
||||||
"""
|
"""
|
||||||
@ -770,14 +793,14 @@ class EditExifMetadata(Gramplet):
|
|||||||
self.edtarea = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
self.edtarea = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
self.edtarea.tooltip = tip
|
self.edtarea.tooltip = tip
|
||||||
self.edtarea.set_title( self.orig_image.get_description() )
|
self.edtarea.set_title( self.orig_image.get_description() )
|
||||||
self.edtarea.set_default_size(550, 642)
|
self.edtarea.set_default_size(570, 642)
|
||||||
self.edtarea.set_border_width(10)
|
self.edtarea.set_border_width(10)
|
||||||
self.edtarea.connect("destroy", lambda w: self.edtarea.destroy() )
|
self.edtarea.connect("destroy", lambda w: self.edtarea.destroy() )
|
||||||
|
|
||||||
# create a new scrolled window.
|
# create a new scrolled window.
|
||||||
scrollwindow = gtk.ScrolledWindow()
|
scrollwindow = gtk.ScrolledWindow()
|
||||||
scrollwindow.set_border_width(10)
|
scrollwindow.set_border_width(10)
|
||||||
scrollwindow.set_size_request(490, 588)
|
scrollwindow.set_size_request(510, 542)
|
||||||
scrollwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
scrollwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||||
|
|
||||||
# The dialog window is created with a vbox packed into it.
|
# The dialog window is created with a vbox packed into it.
|
||||||
@ -799,7 +822,10 @@ class EditExifMetadata(Gramplet):
|
|||||||
self._setup_widget_tips([True, True])
|
self._setup_widget_tips([True, True])
|
||||||
|
|
||||||
# display all Exif metadata if they are in _DATAMAP, see line #151...
|
# display all Exif metadata if they are in _DATAMAP, see line #151...
|
||||||
self.EditArea([KeyTag for KeyTag in _get_exif_keypairs(self.plugin_image) if KeyTag in _DATAMAP])
|
mediadatatags = _get_exif_keypairs(self.plugin_image)
|
||||||
|
if mediadatatags:
|
||||||
|
mediadatatags = [KeyTag for KeyTag in mediadatatags if KeyTag in _DATAMAP]
|
||||||
|
self.EditArea(mediadatatags)
|
||||||
|
|
||||||
def build_edit_gui(self):
|
def build_edit_gui(self):
|
||||||
"""
|
"""
|
||||||
@ -808,18 +834,16 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
main_vbox = gtk.VBox()
|
main_vbox = gtk.VBox()
|
||||||
main_vbox.set_border_width(10)
|
main_vbox.set_border_width(10)
|
||||||
main_vbox.set_size_request(480, 578)
|
main_vbox.set_size_request(500, 690)
|
||||||
|
|
||||||
label = gtk.Label()
|
label = self.__create_label("Edit:Message", False, False, False)
|
||||||
label.set_alignment(0.0, 0.0)
|
|
||||||
main_vbox.pack_start(label, expand =False, fill =False, padding =5)
|
main_vbox.pack_start(label, expand =False, fill =False, padding =5)
|
||||||
label.show()
|
label.show()
|
||||||
self.exif_widgets["Edit:Message"] = label
|
|
||||||
|
|
||||||
# create the data fields...
|
# create the data fields...
|
||||||
# ***Label/ Title, Description, Artist, and Copyright
|
# ***Label/ Title, Description, Artist, and Copyright
|
||||||
gen_frame = gtk.Frame(_("General Data"))
|
gen_frame = gtk.Frame(_("General Data"))
|
||||||
gen_frame.set_size_request(460, 200)
|
gen_frame.set_size_request(470, 200)
|
||||||
main_vbox.pack_start(gen_frame, expand =False, fill =True, padding =10)
|
main_vbox.pack_start(gen_frame, expand =False, fill =True, padding =10)
|
||||||
gen_frame.show()
|
gen_frame.show()
|
||||||
|
|
||||||
@ -827,43 +851,34 @@ class EditExifMetadata(Gramplet):
|
|||||||
gen_frame.add(new_vbox)
|
gen_frame.add(new_vbox)
|
||||||
new_vbox.show()
|
new_vbox.show()
|
||||||
|
|
||||||
textNames = list( (text) for text in [_("Exif Title :"), _("Description :"), _("Artist :"), _("Copyright :") ] )
|
for widget, text in [
|
||||||
widgetsNames = list( (widget) for widget in ["ExifLabel", "Description", "Artist", "Copyright"] )
|
("ExifLabel", _("Exif Label :") ),
|
||||||
while (textNames and widgetsNames):
|
("Description", _("Description :") ),
|
||||||
text = textNames[0]
|
("Artist", _("Artist :") ),
|
||||||
widget = widgetsNames[0]
|
("Copyright", _("Copyright :") ) ]:
|
||||||
|
|
||||||
new_hbox = gtk.HBox(False, 0)
|
new_hbox = gtk.HBox(False, 0)
|
||||||
new_vbox.pack_start(new_hbox, expand =False, fill =False, padding =5)
|
new_vbox.pack_start(new_hbox, expand =False, fill =False, padding =5)
|
||||||
new_hbox.show()
|
new_hbox.show()
|
||||||
|
|
||||||
label = gtk.Label(text)
|
label = self.__create_label(False, text, width =90, height =25)
|
||||||
label.set_alignment(0.0, 0.0)
|
|
||||||
label.set_size_request(80, 25)
|
|
||||||
new_hbox.pack_start(label, expand =False, fill =False, padding =0)
|
new_hbox.pack_start(label, expand =False, fill =False, padding =0)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
event_box = gtk.EventBox()
|
event_box = gtk.EventBox()
|
||||||
event_box.set_size_request(380, 30)
|
event_box.set_size_request(380, 30)
|
||||||
new_hbox.pack_start(event_box, expand =False, fill =False, padding =0)
|
new_hbox.pack_start(event_box, expand =False, fill =False, padding =0)
|
||||||
event_box.show()
|
|
||||||
self.exif_widgets[widget + "Box"] = event_box
|
self.exif_widgets[widget + "Box"] = event_box
|
||||||
|
event_box.show()
|
||||||
|
|
||||||
entry = gtk.Entry(max =50)
|
entry = gtk.Entry(max =50)
|
||||||
event_box.add(entry)
|
event_box.add(entry)
|
||||||
entry.show()
|
|
||||||
self.exif_widgets[widget] = entry
|
self.exif_widgets[widget] = entry
|
||||||
|
entry.show()
|
||||||
# remove text and widget from their list...
|
|
||||||
textNames.remove(text)
|
|
||||||
widgetsNames.remove(widget)
|
|
||||||
|
|
||||||
# get current date and time from this computer...
|
|
||||||
now = time.localtime()
|
|
||||||
|
|
||||||
# iso format: Year, Month, Day spinners...
|
# iso format: Year, Month, Day spinners...
|
||||||
datetime_frame = gtk.Frame(_("Date/ Time"))
|
datetime_frame = gtk.Frame(_("Date/ Time"))
|
||||||
datetime_frame.set_size_request(460, 180)
|
datetime_frame.set_size_request(470, 180)
|
||||||
main_vbox.pack_start(datetime_frame, expand =False, fill =False, padding =0)
|
main_vbox.pack_start(datetime_frame, expand =False, fill =False, padding =0)
|
||||||
datetime_frame.show()
|
datetime_frame.show()
|
||||||
|
|
||||||
@ -885,14 +900,12 @@ class EditExifMetadata(Gramplet):
|
|||||||
new_hbox.pack_start(vbox2, expand =False, fill =False, padding =5)
|
new_hbox.pack_start(vbox2, expand =False, fill =False, padding =5)
|
||||||
vbox2.show()
|
vbox2.show()
|
||||||
|
|
||||||
label = gtk.Label(text)
|
label = self.__create_label(widget, text, width =460, height = 25)
|
||||||
label.set_alignment(0.0, 0.0)
|
|
||||||
label.set_size_request(440, 25)
|
|
||||||
vbox2.pack_start(label, expand =False, fill =False, padding =0)
|
vbox2.pack_start(label, expand =False, fill =False, padding =0)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
event_box = gtk.EventBox()
|
event_box = gtk.EventBox()
|
||||||
event_box.set_size_request(440, 40)
|
event_box.set_size_request(460, 40)
|
||||||
|
|
||||||
# set eventbox background color to "black"
|
# set eventbox background color to "black"
|
||||||
event_box.modify_bg(gtk.STATE_NORMAL,
|
event_box.modify_bg(gtk.STATE_NORMAL,
|
||||||
@ -908,7 +921,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
# GPS Coordinates...
|
# GPS Coordinates...
|
||||||
latlong_frame = gtk.Frame(_("Latitude/ Longitude GPS Coordinates"))
|
latlong_frame = gtk.Frame(_("Latitude/ Longitude GPS Coordinates"))
|
||||||
latlong_frame.set_size_request(460, 100)
|
latlong_frame.set_size_request(470, 180)
|
||||||
main_vbox.pack_start(latlong_frame, expand =False, fill =False, padding =0)
|
main_vbox.pack_start(latlong_frame, expand =False, fill =False, padding =0)
|
||||||
latlong_frame.show()
|
latlong_frame.show()
|
||||||
|
|
||||||
@ -923,34 +936,63 @@ class EditExifMetadata(Gramplet):
|
|||||||
# Latitude/ Longitude GPS Coordinates...
|
# Latitude/ Longitude GPS Coordinates...
|
||||||
for widget, text in [
|
for widget, text in [
|
||||||
("Latitude", _("Latitude :") ),
|
("Latitude", _("Latitude :") ),
|
||||||
("Longitude", _("Longitude :") ),
|
("Longitude", _("Longitude :") ) ]:
|
||||||
("GPSTimeStamp", _("GPS TimeStamp :") ) ]:
|
|
||||||
|
|
||||||
vbox2 = gtk.VBox(False, 0)
|
vbox2 = gtk.VBox(False, 0)
|
||||||
new_hbox.pack_start(vbox2, expand =False, fill =False, padding =5)
|
new_hbox.pack_start(vbox2, expand =False, fill =False, padding =5)
|
||||||
vbox2.show()
|
vbox2.show()
|
||||||
|
|
||||||
label = gtk.Label(text)
|
label = self.__create_label(widget, text, width =230, height =25)
|
||||||
label.set_alignment(0.0, 0.0)
|
|
||||||
label.set_size_request(150, 25)
|
|
||||||
vbox2.pack_start(label, expand =False, fill =False, padding =0)
|
vbox2.pack_start(label, expand =False, fill =False, padding =0)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
event_box = gtk.EventBox()
|
event_box = gtk.EventBox()
|
||||||
event_box.set_border_width(2)
|
event_box.set_border_width(2)
|
||||||
event_box.set_size_request(150, 40)
|
event_box.set_size_request(230, 40)
|
||||||
|
|
||||||
# set eventbox background color to "blue"
|
# set eventbox background color to "blue"
|
||||||
event_box.modify_bg(gtk.STATE_NORMAL,
|
event_box.modify_bg(gtk.STATE_NORMAL,
|
||||||
event_box.get_colormap().alloc_color("blue"))
|
event_box.get_colormap().alloc_color("blue"))
|
||||||
vbox2.pack_start(event_box, expand =False, fill =False, padding =0)
|
vbox2.pack_start(event_box, expand =False, fill =False, padding =0)
|
||||||
event_box.show()
|
|
||||||
self.exif_widgets[widget + "Box"] = event_box
|
self.exif_widgets[widget + "Box"] = event_box
|
||||||
|
event_box.show()
|
||||||
|
|
||||||
entry = gtk.Entry(max =25)
|
entry = gtk.Entry(max =30)
|
||||||
event_box.add(entry)
|
event_box.add(entry)
|
||||||
entry.show()
|
|
||||||
self.exif_widgets[widget] = entry
|
self.exif_widgets[widget] = entry
|
||||||
|
entry.show()
|
||||||
|
|
||||||
|
new_hbox = gtk.HBox(False, 0)
|
||||||
|
new_vbox.pack_start(new_hbox, expand =False, fill =False, padding =0)
|
||||||
|
new_hbox.show()
|
||||||
|
|
||||||
|
for widget, text in [
|
||||||
|
("Altitude", _("Altitude") ),
|
||||||
|
("gpsTimeStamp", _("GPS Time Stamp") ) ]:
|
||||||
|
|
||||||
|
vbox2 = gtk.VBox(False, 0)
|
||||||
|
new_hbox.pack_start(vbox2, expand =False, fill =False, padding =5)
|
||||||
|
vbox2.show()
|
||||||
|
|
||||||
|
label = self.__create_label(widget, text, width =230, height =25)
|
||||||
|
vbox2.pack_start(label, expand =False, fill =False, padding =0)
|
||||||
|
label.show()
|
||||||
|
|
||||||
|
event_box = gtk.EventBox()
|
||||||
|
event_box.set_border_width(2)
|
||||||
|
event_box.set_size_request(230, 40)
|
||||||
|
|
||||||
|
# set eventbox background color to "blue"
|
||||||
|
event_box.modify_bg(gtk.STATE_NORMAL,
|
||||||
|
event_box.get_colormap().alloc_color("blue"))
|
||||||
|
vbox2.pack_start(event_box, expand =False, fill =False, padding =0)
|
||||||
|
self.exif_widgets[widget + "Box"] = event_box
|
||||||
|
event_box.show()
|
||||||
|
|
||||||
|
entry = gtk.Entry(max =30)
|
||||||
|
event_box.add(entry)
|
||||||
|
self.exif_widgets[widget] = entry
|
||||||
|
entry.show()
|
||||||
|
|
||||||
# Help, Save, Clear, and Close horizontal box
|
# Help, Save, Clear, and Close horizontal box
|
||||||
hscc_box = gtk.HButtonBox()
|
hscc_box = gtk.HButtonBox()
|
||||||
@ -1019,7 +1061,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
for widget in ["ExifLabel", "Description", "Artist", "Copyright", "Modified", "Original",
|
for widget in ["ExifLabel", "Description", "Artist", "Copyright", "Modified", "Original",
|
||||||
"Latitude", "Longitude", "GPSTimeStamp", "Edit:Message"]:
|
"Latitude", "Longitude", "gpsTimeStamp", "Edit:Message"]:
|
||||||
self.exif_widgets[widget].set_text("")
|
self.exif_widgets[widget].set_text("")
|
||||||
|
|
||||||
def clear_display(self, object):
|
def clear_display(self, object):
|
||||||
@ -1043,10 +1085,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
displays the image Exif metadata in the Edit Area...
|
displays the image Exif metadata in the Edit Area...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# update has_data()
|
|
||||||
self.set_has_data( len(MediaDataTags) > 0)
|
|
||||||
|
|
||||||
# if no Exif metadata, disable the has_data() functionality?
|
|
||||||
if MediaDataTags:
|
if MediaDataTags:
|
||||||
|
|
||||||
for KeyTag in MediaDataTags:
|
for KeyTag in MediaDataTags:
|
||||||
@ -1057,7 +1095,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
tagValue = self._get_value(KeyTag)
|
tagValue = self._get_value(KeyTag)
|
||||||
if tagValue:
|
if tagValue:
|
||||||
|
|
||||||
if widgetsName in ["ExifLabel", "Description", "Artist", "Copyright", "GPSTimeStamp"]:
|
if widgetsName in ["ExifLabel", "Description", "Artist", "Copyright"]:
|
||||||
self.exif_widgets[widgetsName].set_text(tagValue)
|
self.exif_widgets[widgetsName].set_text(tagValue)
|
||||||
|
|
||||||
# Last Changed/ Modified...
|
# Last Changed/ Modified...
|
||||||
@ -1077,17 +1115,17 @@ class EditExifMetadata(Gramplet):
|
|||||||
if isinstance(use_date, str):
|
if isinstance(use_date, str):
|
||||||
use_date = _get_date_format(use_date)
|
use_date = _get_date_format(use_date)
|
||||||
if use_date:
|
if use_date:
|
||||||
year, month, day, hour, minutes, seconds = use_date[0:6]
|
pyear, pmonth, day, hour, minutes, seconds = use_date[0:6]
|
||||||
|
|
||||||
elif isinstance(use_date, datetime):
|
elif isinstance(use_date, datetime):
|
||||||
year, month, day = use_date.year, use_date.month, use_date.day
|
pyear, pmonth, day = use_date.year, use_date.month, use_date.day
|
||||||
hour, minutes, seconds = use_date.hour, use_date.minute, use_date.second
|
hour, minutes, seconds = use_date.hour, use_date.minute, use_date.second
|
||||||
|
|
||||||
else:
|
else:
|
||||||
year = False
|
pyear = False
|
||||||
if year:
|
if pyear:
|
||||||
|
|
||||||
use_date = _create_datetime(year, month, day, hour, minutes, seconds)
|
use_date = _create_datetime(pyear, pmonth, day, hour, minutes, seconds)
|
||||||
self.exif_widgets["Original"].set_text( _format_datetime(use_date) )
|
self.exif_widgets["Original"].set_text( _format_datetime(use_date) )
|
||||||
|
|
||||||
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
||||||
@ -1124,13 +1162,30 @@ class EditExifMetadata(Gramplet):
|
|||||||
self.exif_widgets["Longitude"].set_text(
|
self.exif_widgets["Longitude"].set_text(
|
||||||
"""%s° %s′ %s″ %s""" % (longdeg, longmin, longsec, LongRef) )
|
"""%s° %s′ %s″ %s""" % (longdeg, longmin, longsec, LongRef) )
|
||||||
|
|
||||||
else:
|
elif widgetsName == "Altitude":
|
||||||
|
AltitudeRef = self._get_value(_DATAMAP["AltitudeRef"] )
|
||||||
|
|
||||||
|
Altitude = str((Decimal(tagValue.numerator) / Decimal(tagValue.denominator)))
|
||||||
|
if AltitudeRef is not False:
|
||||||
|
if AltitudeRef == 0:
|
||||||
|
AltRef = _("Above Sea Level")
|
||||||
|
else:
|
||||||
|
AltRef = _("Below Sea Level")
|
||||||
|
|
||||||
|
self.exif_widgets[widgetsName] = "%s, %s" % (Altitude, AltRef)
|
||||||
|
|
||||||
|
elif widgetsName == "gpsTimeStamp":
|
||||||
|
gpsTimeStamp = rational_to_dms(tagValue)
|
||||||
|
|
||||||
|
hour, minutes, seconds = gpsTimeStamp
|
||||||
|
hour, minutes, seconds = int(hour), int(minutes), int(seconds)
|
||||||
|
self.exif_widgets[widgetsName].set_text("%02d:%02d:%02d" % (hour, minutes, seconds) )
|
||||||
|
else:
|
||||||
# set Message Area to None...
|
# set Message Area to None...
|
||||||
self.exif_widgets["MessageArea"].set_text(_("There is NO Exif "
|
self.exif_widgets["Edit:Message"].set_text(_("There is NO Exif "
|
||||||
"metadata for this image yet..."))
|
"metadata for this image yet..."))
|
||||||
|
|
||||||
for widgetsName in ["ExifLabel", "Description", "Artist", "Copyright", "Latitude", "Longitude"]:
|
for widgetsName, text in _TOOLTIPS.items():
|
||||||
|
|
||||||
# once the user types in that field,
|
# once the user types in that field,
|
||||||
# the Edit, Clear, and Delete buttons will become active...
|
# the Edit, Clear, and Delete buttons will become active...
|
||||||
@ -1276,7 +1331,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
self.exif_widgets["Latitude"].set_text(latitude)
|
self.exif_widgets["Latitude"].set_text(latitude)
|
||||||
self.exif_widgets["Longitude"].set_text(longitude)
|
self.exif_widgets["Longitude"].set_text(longitude)
|
||||||
|
|
||||||
def convert2dms(self, latitude, longitude):
|
def convert2dms(self, latitude =False, longitude =False):
|
||||||
"""
|
"""
|
||||||
will convert a decimal GPS Coordinates into degrees, minutes, seconds
|
will convert a decimal GPS Coordinates into degrees, minutes, seconds
|
||||||
for display only
|
for display only
|
||||||
@ -1478,20 +1533,25 @@ def _get_exif_keypairs(plugin_image):
|
|||||||
"""
|
"""
|
||||||
Will be used to retrieve and update the Exif metadata from the image.
|
Will be used to retrieve and update the Exif metadata from the image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if not plugin_image:
|
||||||
|
return False
|
||||||
|
|
||||||
MediaDataTags = False
|
MediaDataTags = False
|
||||||
|
if LesserVersion: # prior to pyexiv2-0.2.0
|
||||||
|
|
||||||
if plugin_image:
|
# get all KeyTags for this image for diplay only...
|
||||||
if LesserVersion: # prior to pyexiv2-0.2.0
|
MediaDataTags = [KeyTag for KeyTag in chain(
|
||||||
# get all KeyTags for this image for diplay only...
|
plugin_image.exifKeys(), plugin_image.xmpKeys(),
|
||||||
MediaDataTags = [KeyTag for KeyTag in chain(
|
plugin_image.iptcKeys() ) ]
|
||||||
plugin_image.exifKeys(), plugin_image.xmpKeys(),
|
|
||||||
plugin_image.iptcKeys() ) ]
|
else: # pyexiv2-0.2.0 and above
|
||||||
|
|
||||||
|
# get all KeyTags for this image for diplay only...
|
||||||
|
MediaDataTags = [KeyTag for KeyTag in chain(
|
||||||
|
plugin_image.exif_keys, plugin_image.xmp_keys,
|
||||||
|
plugin_image.iptc_keys) ]
|
||||||
|
|
||||||
else: # pyexiv2-0.2.0 and above
|
|
||||||
# get all KeyTags for this image for diplay only...
|
|
||||||
MediaDataTags = [KeyTag for KeyTag in chain(
|
|
||||||
plugin_image.exif_keys, plugin_image.xmp_keys,
|
|
||||||
plugin_image.iptc_keys) ]
|
|
||||||
return MediaDataTags
|
return MediaDataTags
|
||||||
|
|
||||||
def string_to_rational(coordinate):
|
def string_to_rational(coordinate):
|
||||||
|
Loading…
Reference in New Issue
Block a user