Removed the Exif metadata Viewing Area...
svn: r17477
This commit is contained in:
parent
5d95f00489
commit
b70ea64125
@ -187,14 +187,11 @@ _DATAMAP.update( (val, key) for key, val in _DATAMAP.items() )
|
|||||||
# Toolt tips for the buttons in the gramplet...
|
# Toolt tips for the buttons in the gramplet...
|
||||||
_BUTTONTIPS = {
|
_BUTTONTIPS = {
|
||||||
|
|
||||||
# CopyTo button...
|
|
||||||
"CopyTo" : _("Copies information from the Display area to the Edit area."),
|
|
||||||
|
|
||||||
# Clear Edit Area button...
|
# Clear Edit Area button...
|
||||||
"Clear" : _("Clears the Exif metadata from the Edit area."),
|
"Clear" : _("Clears the Exif metadata from the Edit area."),
|
||||||
|
|
||||||
# Calendar date select button...
|
# Calendar date select button...
|
||||||
"Date:Select" : _("Allows you to select a date from a pop-up window calendar. \n"
|
"Popup:Select" : _("Allows you to select a date from a pop-up window calendar. \n"
|
||||||
"Warning: You will still need to edit the time..."),
|
"Warning: You will still need to edit the time..."),
|
||||||
|
|
||||||
# Convert to decimal button...
|
# Convert to decimal button...
|
||||||
@ -286,85 +283,79 @@ class EditExifMetadata(Gramplet):
|
|||||||
_setup_widget_tooltips(self.exif_widgets)
|
_setup_widget_tooltips(self.exif_widgets)
|
||||||
|
|
||||||
def build_gui(self):
|
def build_gui(self):
|
||||||
|
"""
|
||||||
|
creates the editing area fields.
|
||||||
|
"""
|
||||||
|
|
||||||
vbox = gtk.VBox()
|
vbox = gtk.VBox()
|
||||||
|
|
||||||
medialabel = gtk.HBox(False)
|
hbox = gtk.HBox(False)
|
||||||
self.exif_widgets["Media:Label"] = gtk.Label()
|
label = gtk.Label()
|
||||||
self.exif_widgets["Media:Label"].set_alignment(0.0, 0.0)
|
label.set_alignment(0.0, 0.0)
|
||||||
medialabel.pack_start(self.exif_widgets["Media:Label"], expand =False)
|
self.exif_widgets["Media:Label"] = label
|
||||||
vbox.pack_start(medialabel, expand =False)
|
hbox.pack_start(self.exif_widgets["Media:Label"], expand =False)
|
||||||
|
vbox.pack_start(hbox, expand =False)
|
||||||
|
|
||||||
mimetype = gtk.HBox(False)
|
hbox = gtk.HBox(False)
|
||||||
self.exif_widgets["Mime:Type"] = gtk.Label()
|
label = gtk.Label()
|
||||||
self.exif_widgets["Mime:Type"].set_alignment(0.0, 0.0)
|
label.set_alignment(0.0, 0.0)
|
||||||
mimetype.pack_start(self.exif_widgets["Mime:Type"], expand =False)
|
self.exif_widgets["Mime:Type"] = label
|
||||||
vbox.pack_start(mimetype, expand =False)
|
hbox.pack_start(self.exif_widgets["Mime:Type"], expand =False)
|
||||||
|
vbox.pack_start(hbox, expand =False)
|
||||||
|
|
||||||
messagearea = gtk.HBox(False)
|
hbox = gtk.HBox(False)
|
||||||
self.exif_widgets["Message:Area"] = gtk.Label(_("Click an image to begin..."))
|
label = gtk.Label()
|
||||||
self.exif_widgets["Message:Area"].set_alignment(0.5, 0.0)
|
label.set_alignment(0.5, 0.0)
|
||||||
messagearea.pack_start(self.exif_widgets["Message:Area"], expand =False)
|
self.exif_widgets["Message:Area"] = label
|
||||||
vbox.pack_start(messagearea, expand =False)
|
hbox.pack_start(self.exif_widgets["Message:Area"], expand =False)
|
||||||
|
vbox.pack_start(hbox, expand =False)
|
||||||
|
|
||||||
self.model = gtk.ListStore(object, str, str)
|
# Edit, Clear, Convert horizontal box
|
||||||
view = gtk.TreeView(self.model)
|
ecc_box = gtk.HButtonBox()
|
||||||
|
ecc_box.set_layout(gtk.BUTTONBOX_START)
|
||||||
# Key Column
|
vbox.pack_start(ecc_box, expand =False, fill =False, padding =10)
|
||||||
view.append_column( self.__create_column(_("Key"), 1) )
|
|
||||||
|
|
||||||
# Value Column
|
|
||||||
view.append_column( self.__create_column(_("Value"), 2) )
|
|
||||||
|
|
||||||
# CopyTo, Clear, Convert horizontal box
|
|
||||||
ccc_box = gtk.HButtonBox()
|
|
||||||
ccc_box.set_layout(gtk.BUTTONBOX_START)
|
|
||||||
vbox.pack_start(ccc_box, expand =False, fill =False, padding =10)
|
|
||||||
|
|
||||||
# Copy To Edit Area button...
|
|
||||||
ccc_box.add( self.__create_button(
|
|
||||||
"CopyTo", False, [self.CopyTo], gtk.STOCK_COPY, False) )
|
|
||||||
|
|
||||||
# Clear button...
|
# Clear button...
|
||||||
ccc_box.add( self.__create_button(
|
ecc_box.add( self.__create_button(
|
||||||
"Clear", False, [self.clear_metadata], gtk.STOCK_CLEAR, False) )
|
"Clear", False, [self.clear_metadata], gtk.STOCK_CLEAR, False) )
|
||||||
|
|
||||||
# is ImageMagick installed?
|
# is ImageMagick installed?
|
||||||
if _MAGICK_FOUND:
|
if _MAGICK_FOUND:
|
||||||
# Convert button...
|
# Convert button...
|
||||||
ccc_box.add( self.__create_button(
|
ecc_box.add( self.__create_button(
|
||||||
"Convert", False, [self.__convert_dialog], gtk.STOCK_CONVERT, False) )
|
"Convert", False, [self.__convert_dialog], gtk.STOCK_CONVERT, False) )
|
||||||
|
|
||||||
for items in [
|
for items in [
|
||||||
|
|
||||||
# Image Description
|
# Image Description
|
||||||
("Description", _("Description"), None, False, [], True, 0),
|
("Description", _("Description"), None, False, [], True, 0),
|
||||||
|
|
||||||
# Last Modified Date/ Time
|
# Last Modified Date/ Time
|
||||||
("Modified", _("Last Changed"), None, True, [], True, 0),
|
("Modified", _("Last Changed"), None, True, [], True, 0),
|
||||||
|
|
||||||
# Artist field
|
# Artist field
|
||||||
("Artist", _("Artist"), None, False, [], True, 0),
|
("Artist", _("Artist"), None, False, [], True, 0),
|
||||||
|
|
||||||
# copyright field
|
# copyright field
|
||||||
("Copyright", _("Copyright"), None, False, [], True, 0),
|
("Copyright", _("Copyright"), None, False, [], True, 0),
|
||||||
|
|
||||||
|
# calendar date clickable entry...
|
||||||
|
("Popup", "", None, True,
|
||||||
|
[("Select", _("Select Date"), "button", self.select_date)],
|
||||||
|
True, 0),
|
||||||
|
|
||||||
# calendar date clickable entry
|
|
||||||
("Date", "", None, True,
|
|
||||||
[("Select", _("Select Date"), "button", self.select_date)],
|
|
||||||
True, 0),
|
|
||||||
# Original Date/ Time Entry, 1826-April-12 14:06:00
|
# Original Date/ Time Entry, 1826-April-12 14:06:00
|
||||||
("DateTime", _("Date/ Time"), None, False, [], True, 0),
|
("DateTime", _("Date/ Time"), None, False, [], True, 0),
|
||||||
|
|
||||||
# Convert GPS Coordinates
|
# Convert GPS Coordinates
|
||||||
("GPSFormat", _("Convert GPS"), None, True,
|
("GPSFormat", _("Convert GPS"), None, True,
|
||||||
[("Decimal", _("Decimal"), "button", self.convert2decimal),
|
[("Decimal", _("Decimal"), "button", self.convert2decimal),
|
||||||
("DMS", _("Deg. Min. Sec."), "button", self.convert2dms)],
|
("DMS", _("Deg. Min. Sec."), "button", self.convert2dms)],
|
||||||
False, 0),
|
False, 0),
|
||||||
|
|
||||||
# Latitude and Longitude for this image
|
# Latitude and Longitude for this image
|
||||||
("Latitude", _("Latitude"), None, False, [], True, 0),
|
("Latitude", _("Latitude"), None, False, [], True, 0),
|
||||||
("Longitude", _("Longitude"), None, False, [], True, 0) ]:
|
("Longitude", _("Longitude"), None, False, [], True, 0) ]:
|
||||||
|
|
||||||
pos, text, choices, readonly, callback, dirty, default = items
|
pos, text, choices, readonly, callback, dirty, default = items
|
||||||
row = self.make_row(pos, text, choices, readonly, callback, dirty, default)
|
row = self.make_row(pos, text, choices, readonly, callback, dirty, default)
|
||||||
@ -388,9 +379,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
hsd_box.add(self.__create_button(
|
hsd_box.add(self.__create_button(
|
||||||
"Delete", False, [self.__delete_dialog], gtk.STOCK_DELETE, False))
|
"Delete", False, [self.__delete_dialog], gtk.STOCK_DELETE, False))
|
||||||
|
|
||||||
# adds Exif Metadata Viewing Area
|
|
||||||
vbox.pack_start(view, padding =10)
|
|
||||||
|
|
||||||
return vbox
|
return vbox
|
||||||
|
|
||||||
def update_has_data(self):
|
def update_has_data(self):
|
||||||
@ -454,15 +442,17 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
# clear Display and Edit Areas
|
# clear Display and Edit Areas
|
||||||
self.clear_metadata(self.orig_image)
|
self.clear_metadata(self.orig_image)
|
||||||
self.model.clear()
|
|
||||||
|
|
||||||
# De-activate the buttons except for Help...
|
# De-activate the buttons except for Help...
|
||||||
self.deactivate_buttons(["CopyTo", "Clear", "Save"])
|
self.deactivate_buttons(["Clear", "Save"])
|
||||||
|
|
||||||
if _MAGICK_FOUND:
|
if _MAGICK_FOUND:
|
||||||
self.deactivate_buttons(["Convert", "Delete"])
|
self.deactivate_buttons(["Convert"])
|
||||||
|
|
||||||
# Re-post initial image message...
|
if (_MAGICK_FOUND or _HEAD_FOUND):
|
||||||
|
self.deactivate_buttons(["Delete"])
|
||||||
|
|
||||||
|
# set Message Area to Select...
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Select an image to begin..."))
|
self.exif_widgets["Message:Area"].set_text(_("Select an image to begin..."))
|
||||||
|
|
||||||
active_handle = self.get_active("Media")
|
active_handle = self.get_active("Media")
|
||||||
@ -501,51 +491,29 @@ class EditExifMetadata(Gramplet):
|
|||||||
self.activate_buttons(["Save"])
|
self.activate_buttons(["Save"])
|
||||||
|
|
||||||
# display file description/ title...
|
# display file description/ title...
|
||||||
self.exif_widgets["Media:Label"].set_text( _html_escape(
|
self.exif_widgets["Media:Label"].set_text(_html_escape(
|
||||||
self.orig_image.get_description()))
|
self.orig_image.get_description() ) )
|
||||||
|
|
||||||
# will create the image and read it...
|
# will create the plugin image and read it...
|
||||||
self.setup_image(self.image_path, True)
|
self.setup_image(self.image_path, True)
|
||||||
|
|
||||||
# Checks to make sure that ImageMagick is installed on this computer and
|
# Checks to make sure that ImageMagick is installed on this computer and
|
||||||
# the image is NOT a jpeg image...
|
# the image is NOT a (.jpeg, .jfif, .jpg) image...
|
||||||
if _MAGICK_FOUND:
|
if _MAGICK_FOUND:
|
||||||
basename, extension = os.path.splitext(self.image_path)
|
basename, extension = os.path.splitext(self.image_path)
|
||||||
if extension not in [".jpeg", ".jpg", ".jfif"]:
|
if extension not in [".jpeg", ".jpg", ".jfif"]:
|
||||||
self.activate_buttons(["Convert"])
|
self.activate_buttons(["Convert"])
|
||||||
|
|
||||||
# displays the imge Exif metadata
|
# displays the imge Exif metadata
|
||||||
self.display_exif_tags(self.orig_image)
|
self.EditArea(self.orig_image)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Choose a different image..."))
|
self.exif_widgets["Message:Area"].set_text(_("Please choose a different image..."))
|
||||||
return
|
return
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Choose a different image..."))
|
self.exif_widgets["Message:Area"].set_text(_("Please choose a different image..."))
|
||||||
return
|
return
|
||||||
|
|
||||||
def __create_column(self, name, colnum, fixed =True):
|
|
||||||
"""
|
|
||||||
will create the column for the column row...
|
|
||||||
"""
|
|
||||||
|
|
||||||
renderer = gtk.CellRendererText()
|
|
||||||
column = gtk.TreeViewColumn(name, renderer, text =colnum)
|
|
||||||
|
|
||||||
if fixed:
|
|
||||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
|
||||||
column.set_expand(True)
|
|
||||||
|
|
||||||
else:
|
|
||||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
|
|
||||||
column.set_expand(False)
|
|
||||||
|
|
||||||
column.set_alignment(0.0)
|
|
||||||
column.set_sort_column_id(colnum)
|
|
||||||
|
|
||||||
return column
|
|
||||||
|
|
||||||
def __create_button(self, pos, text, callback =[], icon =False, sensitive = True):
|
def __create_button(self, pos, text, callback =[], icon =False, sensitive = True):
|
||||||
"""
|
"""
|
||||||
creates and returns a button for display
|
creates and returns a button for display
|
||||||
@ -729,131 +697,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
return KeyValue
|
return KeyValue
|
||||||
|
|
||||||
def display_exif_tags(self, obj):
|
|
||||||
"""
|
|
||||||
once the pyexiv2.Image has been created, we display
|
|
||||||
all of the image Exif metadata...
|
|
||||||
"""
|
|
||||||
|
|
||||||
# set has data flag...
|
|
||||||
self.set_has_data(len(self.MediaDataTags) > 0)
|
|
||||||
|
|
||||||
# Activate Clear and Save buttons...
|
|
||||||
self.activate_buttons(["Clear", "Save"])
|
|
||||||
|
|
||||||
# check to see if we got metadata from the media object?
|
|
||||||
if self.MediaDataTags:
|
|
||||||
|
|
||||||
# activate CopyTo button...
|
|
||||||
self.activate_buttons(["CopyTo"])
|
|
||||||
|
|
||||||
# set Message Area to Display...
|
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Displaying image Exif metadata..."))
|
|
||||||
|
|
||||||
for KeyTag in self.MediaDataTags:
|
|
||||||
|
|
||||||
if LesserVersion:
|
|
||||||
label = self.plugin_image.tagDetails(KeyTag)[0]
|
|
||||||
human_value = self.plugin_image.interpretedExifValue(KeyTag)
|
|
||||||
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
tag = self.plugin_image[KeyTag]
|
|
||||||
label = tag.label
|
|
||||||
human_value = tag.human_value
|
|
||||||
except AttributeError:
|
|
||||||
human_value = False
|
|
||||||
|
|
||||||
if KeyTag in ("Exif.Image.DateTime",
|
|
||||||
"Exif.Photo.DateTimeOriginal",
|
|
||||||
"Exif.Photo.DateTimeDigitized"):
|
|
||||||
human_value = _process_datetime(self._get_value(KeyTag))
|
|
||||||
|
|
||||||
if human_value is not False:
|
|
||||||
self.model.append((self.plugin_image, label, human_value))
|
|
||||||
|
|
||||||
def CopyTo(self, obj):
|
|
||||||
"""
|
|
||||||
reads the image metadata after the pyexiv2.Image has been created
|
|
||||||
"""
|
|
||||||
|
|
||||||
if LesserVersion:
|
|
||||||
imageKeyTags = [KeyTag for KeyTag in self.plugin_image.exifKeys() if KeyTag in _DATAMAP]
|
|
||||||
|
|
||||||
else:
|
|
||||||
imageKeyTags = [KeyTag for KeyTag in self.plugin_image.exif_keys if KeyTag in _DATAMAP]
|
|
||||||
|
|
||||||
if imageKeyTags:
|
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Copying Exif metadata to the Edit Area..."))
|
|
||||||
|
|
||||||
for KeyTag in imageKeyTags:
|
|
||||||
|
|
||||||
# name for matching to exif_widgets
|
|
||||||
widgetsName = _DATAMAP[KeyTag]
|
|
||||||
|
|
||||||
tagValue = self._get_value(KeyTag)
|
|
||||||
if tagValue:
|
|
||||||
|
|
||||||
if widgetsName in ["Description", "Artist", "Copyright"]:
|
|
||||||
self.exif_widgets[widgetsName].set_text(tagValue)
|
|
||||||
|
|
||||||
# Original Date of the image...
|
|
||||||
elif widgetsName == "DateTime":
|
|
||||||
use_date = self._get_value(KeyTag)
|
|
||||||
use_date = _process_datetime(use_date) if use_date else False
|
|
||||||
if use_date is not False:
|
|
||||||
self.exif_widgets[widgetsName].set_text(use_date)
|
|
||||||
|
|
||||||
# Last Changed/ Modified...
|
|
||||||
elif widgetsName == "Modified":
|
|
||||||
use_date = self._get_value(KeyTag)
|
|
||||||
use_date = _process_datetime(use_date) if use_date else False
|
|
||||||
if use_date is not False:
|
|
||||||
self.exif_widgets[widgetsName].set_text(use_date)
|
|
||||||
|
|
||||||
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
|
||||||
elif widgetsName == "Latitude":
|
|
||||||
|
|
||||||
latitude = self._get_value(KeyTag)
|
|
||||||
longitude = self._get_value(_DATAMAP["Longitude"] )
|
|
||||||
|
|
||||||
# if latitude and longitude exist, display them?
|
|
||||||
if (latitude and longitude):
|
|
||||||
|
|
||||||
# split latitude metadata into (degrees, minutes, and seconds) from Rational
|
|
||||||
latdeg, latmin, latsec = rational_to_dms(latitude)
|
|
||||||
|
|
||||||
# split longitude metadata into degrees, minutes, and seconds
|
|
||||||
longdeg, longmin, longsec = rational_to_dms(longitude)
|
|
||||||
|
|
||||||
# check to see if we have valid GPS Coordinates?
|
|
||||||
latfail = any(coords == False for coords in [latdeg, latmin, latsec])
|
|
||||||
longfail = any(coords == False for coords in [longdeg, longmin, longsec])
|
|
||||||
if (not latfail and not longfail):
|
|
||||||
|
|
||||||
# Latitude Direction Reference
|
|
||||||
LatitudeRef = self._get_value(_DATAMAP["LatitudeRef"] )
|
|
||||||
|
|
||||||
# Longitude Direction Reference
|
|
||||||
LongitudeRef = self._get_value(_DATAMAP["LongitudeRef"] )
|
|
||||||
|
|
||||||
# set display for Latitude GPS Coordinates
|
|
||||||
self.exif_widgets["Latitude"].set_text(
|
|
||||||
"""%s° %s′ %s″ %s""" % (latdeg, latmin, latsec, LatitudeRef) )
|
|
||||||
|
|
||||||
# set display for Longitude GPS Coordinates
|
|
||||||
self.exif_widgets["Longitude"].set_text(
|
|
||||||
"""%s° %s′ %s″ %s""" % (longdeg, longmin, longsec, LongitudeRef) )
|
|
||||||
|
|
||||||
# enable Save button after metadata has been "Copied to Edit Area"...
|
|
||||||
self.activate_buttons(["Save"])
|
|
||||||
|
|
||||||
if _MAGICK_FOUND:
|
|
||||||
self.activate_buttons(["Delete"])
|
|
||||||
|
|
||||||
# Clear the Message Area...
|
|
||||||
self.exif_widgets["Message:Area"].set_text("")
|
|
||||||
|
|
||||||
def clear_metadata(self, obj, cleartype = "All"):
|
def clear_metadata(self, obj, cleartype = "All"):
|
||||||
"""
|
"""
|
||||||
clears all data fields to nothing
|
clears all data fields to nothing
|
||||||
@ -863,19 +706,92 @@ class EditExifMetadata(Gramplet):
|
|||||||
"All" = clears all data fields
|
"All" = clears all data fields
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# set Message Area text...
|
|
||||||
self.exif_widgets["Message:Area"].set_text(_("Edit area has been cleared..."))
|
|
||||||
|
|
||||||
# clear all data fields
|
# clear all data fields
|
||||||
if cleartype == "All":
|
if cleartype == "All":
|
||||||
for widgetsName in ["Description", "Artist", "Copyright", "DateTime",
|
for widgetsName in ["Description", "Modified", "Artist", "Copyright",
|
||||||
"Latitude", "Longitude"]:
|
"DateTime", "Latitude", "Longitude"]:
|
||||||
self.exif_widgets[widgetsName].set_text("")
|
self.exif_widgets[widgetsName].set_text("")
|
||||||
|
|
||||||
# clear only the date/ time field
|
# clear only the date/ time field
|
||||||
else:
|
else:
|
||||||
|
self.exif_widgets["Modified"].set_text("")
|
||||||
self.exif_widgets["DateTime"].set_text("")
|
self.exif_widgets["DateTime"].set_text("")
|
||||||
|
|
||||||
|
def EditArea(self, obj):
|
||||||
|
"""
|
||||||
|
reads the image metadata after the pyexiv2.Image has been created
|
||||||
|
"""
|
||||||
|
|
||||||
|
# separate KeyTags into the ones that we will be using...
|
||||||
|
imageKeyTags = [KeyTag for KeyTag in self.MediaDataTags if KeyTag in _DATAMAP]
|
||||||
|
|
||||||
|
# activate Clear button...
|
||||||
|
self.activate_buttons(["Clear"])
|
||||||
|
|
||||||
|
if imageKeyTags:
|
||||||
|
|
||||||
|
# set Message Area to Copying...
|
||||||
|
self.exif_widgets["Message:Area"].set_text(_("Copying Exif metadata to the Edit Area..."))
|
||||||
|
|
||||||
|
for KeyTag in imageKeyTags:
|
||||||
|
|
||||||
|
# name for matching to exif_widgets
|
||||||
|
widgetsName = _DATAMAP[KeyTag]
|
||||||
|
|
||||||
|
tagValue = self._get_value(KeyTag)
|
||||||
|
if tagValue:
|
||||||
|
|
||||||
|
if widgetsName in ["Description", "Artist", "Copyright"]:
|
||||||
|
self.exif_widgets[widgetsName].set_text(tagValue)
|
||||||
|
|
||||||
|
# Last Changed/ Modified...
|
||||||
|
elif widgetsName == "Modified":
|
||||||
|
use_date = self._get_value(KeyTag)
|
||||||
|
use_date = _process_datetime(use_date) if use_date else False
|
||||||
|
if use_date is not False:
|
||||||
|
self.exif_widgets[widgetsName].set_text(use_date)
|
||||||
|
|
||||||
|
# Original Date/ Time of this image...
|
||||||
|
elif widgetsName == "DateTime":
|
||||||
|
use_date = self._get_value(KeyTag)
|
||||||
|
use_date = _process_datetime(use_date) if use_date else False
|
||||||
|
if use_date is not False:
|
||||||
|
self.exif_widgets[widgetsName].set_text(use_date)
|
||||||
|
|
||||||
|
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
||||||
|
elif widgetsName == "Latitude":
|
||||||
|
|
||||||
|
latitude = self._get_value(KeyTag)
|
||||||
|
longitude = self._get_value(_DATAMAP["Longitude"] )
|
||||||
|
|
||||||
|
# if latitude and longitude exist, display them?
|
||||||
|
if (latitude and longitude):
|
||||||
|
|
||||||
|
# split latitude metadata into (degrees, minutes, and seconds) from Rational
|
||||||
|
latdeg, latmin, latsec = rational_to_dms(latitude)
|
||||||
|
|
||||||
|
# split longitude metadata into degrees, minutes, and seconds
|
||||||
|
longdeg, longmin, longsec = rational_to_dms(longitude)
|
||||||
|
|
||||||
|
# check to see if we have valid GPS Coordinates?
|
||||||
|
latfail = any(coords == False for coords in [latdeg, latmin, latsec])
|
||||||
|
longfail = any(coords == False for coords in [longdeg, longmin, longsec])
|
||||||
|
if (not latfail and not longfail):
|
||||||
|
|
||||||
|
# Latitude Direction Reference
|
||||||
|
LatitudeRef = self._get_value(_DATAMAP["LatitudeRef"] )
|
||||||
|
|
||||||
|
# Longitude Direction Reference
|
||||||
|
LongitudeRef = self._get_value(_DATAMAP["LongitudeRef"] )
|
||||||
|
|
||||||
|
# set display for Latitude GPS Coordinates
|
||||||
|
self.exif_widgets["Latitude"].set_text(
|
||||||
|
"""%s° %s′ %s″ %s""" % (latdeg, latmin, latsec, LatitudeRef) )
|
||||||
|
|
||||||
|
# set display for Longitude GPS Coordinates
|
||||||
|
self.exif_widgets["Longitude"].set_text(
|
||||||
|
"""%s° %s′ %s″ %s""" % (longdeg, longmin, longsec, LongitudeRef) )
|
||||||
|
|
||||||
def convertdelete(self):
|
def convertdelete(self):
|
||||||
"""
|
"""
|
||||||
will convert2Jpeg and delete original non-jpeg image.
|
will convert2Jpeg and delete original non-jpeg image.
|
||||||
@ -1102,27 +1018,33 @@ class EditExifMetadata(Gramplet):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# determine if there has been something entered in the data fields?
|
# determine if there has been something entered in the data fields?
|
||||||
datatags = (len(self.exif_widgets["Description"].get_text() ) +
|
datatags = (
|
||||||
|
len(self.exif_widgets["Description"].get_text() ) +
|
||||||
len(self.exif_widgets["Artist"].get_text() ) +
|
len(self.exif_widgets["Artist"].get_text() ) +
|
||||||
len(self.exif_widgets["Copyright"].get_text() ) +
|
len(self.exif_widgets["Copyright"].get_text() ) +
|
||||||
len(self.exif_widgets["DateTime"].get_text() )+
|
len(self.exif_widgets["DateTime"].get_text() )+
|
||||||
len(self.exif_widgets["Latitude"].get_text() ) +
|
len(self.exif_widgets["Latitude"].get_text() ) +
|
||||||
len(self.exif_widgets["Longitude"].get_text() ) )
|
len(self.exif_widgets["Longitude"].get_text() )
|
||||||
|
)
|
||||||
|
|
||||||
# Description data field
|
# Description data field...
|
||||||
self._set_value(_DATAMAP["Description"], self.exif_widgets["Description"].get_text() )
|
description = self.exif_widgets["Description"].get_text() or ""
|
||||||
|
self._set_value(_DATAMAP["Description"], description)
|
||||||
|
|
||||||
# Modify Date/ Time... not a data field, but saved anyway...
|
# Modify Date/ Time... not a data field, but saved anyway...
|
||||||
self._set_value(_DATAMAP["Modified"], datetime.now() )
|
modified = datetime.now()
|
||||||
|
self._set_value(_DATAMAP["Modified"], modified)
|
||||||
|
|
||||||
# display modified Date/ Time
|
# display modified Date/ Time...
|
||||||
self.exif_widgets["Modified"].set_text(_format_datetime(datetime.now() ) )
|
self.exif_widgets["Modified"].set_text(_format_datetime(modified) )
|
||||||
|
|
||||||
# Artist/ Author data field
|
# Artist/ Author data field...
|
||||||
self._set_value(_DATAMAP["Artist"], self.exif_widgets["Artist"].get_text() )
|
artist = self.exif_widgets["Artist"].get_text() or ""
|
||||||
|
self._set_value(_DATAMAP["Artist"], artist)
|
||||||
|
|
||||||
# Copyright data field
|
# Copyright data field...
|
||||||
self._set_value(_DATAMAP["Copyright"], self.exif_widgets["Copyright"].get_text() )
|
copyright = self.exif_widgets["Copyright"].get_text() or ""
|
||||||
|
self._set_value(_DATAMAP["Copyright"], copyright)
|
||||||
|
|
||||||
# Original Date/ Time data field
|
# Original Date/ Time data field
|
||||||
DateTime = self.exif_widgets["DateTime"].get_text()
|
DateTime = self.exif_widgets["DateTime"].get_text()
|
||||||
@ -1131,6 +1053,9 @@ class EditExifMetadata(Gramplet):
|
|||||||
if DateTime is not False:
|
if DateTime is not False:
|
||||||
self._set_value(_DATAMAP["DateTime"], DateTime)
|
self._set_value(_DATAMAP["DateTime"], DateTime)
|
||||||
|
|
||||||
|
# display formatted date/ time as set in user preferences...
|
||||||
|
self.exif_widgets["DateTime"].set_text(DateTime)
|
||||||
|
|
||||||
# Latitude/ Longitude data fields
|
# Latitude/ Longitude data fields
|
||||||
latitude = self.exif_widgets["Latitude"].get_text()
|
latitude = self.exif_widgets["Latitude"].get_text()
|
||||||
longitude = self.exif_widgets["Longitude"].get_text()
|
longitude = self.exif_widgets["Longitude"].get_text()
|
||||||
|
Loading…
Reference in New Issue
Block a user