Clean up work:

* Added docstrings where missing...
    * removed empty lines where needed...
    * removed whitespace...
    * changed several variable names

svn: r18795
This commit is contained in:
Rob G. Healey
2012-01-30 01:45:37 +00:00
parent 9dfa6c1c32
commit 27f2603aa3

View File

@@ -161,91 +161,82 @@ _DATAMAP = {
"Exif.GPSInfo.GPSLongitude" : "Longitude", "Exif.GPSInfo.GPSLongitude" : "Longitude",
"Exif.GPSInfo.GPSAltitudeRef" : "AltitudeRef", "Exif.GPSInfo.GPSAltitudeRef" : "AltitudeRef",
"Exif.GPSInfo.GPSAltitude" : "Altitude", "Exif.GPSInfo.GPSAltitude" : "Altitude",
"Exif.Photo.DateTimeDigitized" : "Digitized" } "Exif.Photo.DateTimeDigitized" : "Digitized"}
_DATAMAP = dict( (key, val) for key, val in _DATAMAP.items()) _DATAMAP = dict( (key, val) for key, val in _DATAMAP.items())
_DATAMAP.update( (val, key) 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 = {
# Media Object's Title
"MediaTitle" : _("Warning: Changing this entry will update the Media " "MediaTitle" : _("Warning: Changing this entry will update the Media "
"object title field in Gramps not Exiv2 metadata."), "object title field in Gramps not Exiv2 metadata."),
# Description
"Description" : _("Provide a short descripion for this image."), "Description" : _("Provide a short descripion for this image."),
# Artist
"Artist" : _("Enter the Artist/ Author of this image. The person's name or " "Artist" : _("Enter the Artist/ Author of this image. The person's name or "
"the company who is responsible for the creation of this image."), "the company who is responsible for the creation of this image."),
# Copyright
"Copyright" : _("Enter the copyright information for this image. \n"), "Copyright" : _("Enter the copyright information for this image. \n"),
# Original Date/ Time
"Original" : _("The original date/ time when the image was first created/ taken as in a photograph.\n" "Original" : _("The original date/ time when the image was first created/ taken as in a photograph.\n"
"Example: 1830-01-1 09:30:59"), "Example: 1830-01-1 09:30:59"),
# Last Change/ Modify Date/ Time
"Modified" : _("This is the date/ time that the image was last changed/ modified.\n" "Modified" : _("This is the date/ time that the image was last changed/ modified.\n"
"Example: 2011-05-24 14:30:00"), "Example: 2011-05-24 14:30:00"),
# GPS Latitude coordinates
"Latitude" : _("Enter the Latitude GPS coordinates for this image,\n" "Latitude" : _("Enter the Latitude GPS coordinates for this image,\n"
"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"),
# GPS Longitude coordinates
"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"),
# GPS Altitude (in meters)
"Altitude" : _("This is the measurement of Above or Below Sea Level. It is measured in meters." "Altitude" : _("This is the measurement of Above or Below Sea Level. It is measured in meters."
"Example: 200.558, -200.558") } "Example: 200.558, -200.558")
}
_TOOLTIPS = dict( _TOOLTIPS = dict(
(key, tooltip) for key, tooltip in _TOOLTIPS.items()) (key, tooltip) for key, tooltip in _TOOLTIPS.items())
# define tooltips for all buttons # define tooltips for all buttons
# common buttons for all images # common buttons for all images
_BUTTONTIPS = { _BUTTONTIPS = {
# Wiki Help button
"Help" : _("Displays the Gramps Wiki Help page for 'Edit Image Exif Metadata' " "Help" : _("Displays the Gramps Wiki Help page for 'Edit Image Exif Metadata' "
"in your web browser."), "in your web browser."),
# Edit screen button
"Edit" : _("This will open up a new window to allow you to edit/ modify " "Edit" : _("This will open up a new window to allow you to edit/ modify "
"this image's Exif metadata.\n It will also allow you to be able to " "this image's Exif metadata.\n It will also allow you to be able to "
"Save the modified metadata."), "Save the modified metadata."),
# Thumbnail Viewing Window button
"Thumbnail" : _("Will produce a Popup window showing a Thumbnail Viewing Area"), "Thumbnail" : _("Will produce a Popup window showing a Thumbnail Viewing Area"),
# Image Type button
"ImageTypes" : _("Select from a drop- down box the image file type that you " "ImageTypes" : _("Select from a drop- down box the image file type that you "
"would like to convert your non- Exiv2 compatible media object to."), "would like to convert your non- Exiv2 compatible media object to."),
# Convert to different image type
"Convert" : _("If your image is not of an image type that can have " "Convert" : _("If your image is not of an image type that can have "
"Exif metadata read/ written to/from, convert it to a type that can?"), "Exif metadata read/ written to/from, convert it to a type that can?"),
# Delete/ Erase/ Wipe Exif metadata button
"Delete" : _("WARNING: This will completely erase all Exif metadata " "Delete" : _("WARNING: This will completely erase all Exif metadata "
"from this image! Are you sure that you want to do this?")} "from this image! Are you sure that you want to do this?")
}
# ------------------------------------------------------------------------ # ----------------------------------------------------
# """
# 'Edit Image Exif metadata' Class Edit Image Exif Metadata
#
# ------------------------------------------------------------------------ This gramplet/ add-on allows the adding, editting, and manipulating of
class EditExifMetadata(Gramplet): an image's exif metadata. These metadata items are being used and added by most modern cameras today.
def init(self):
""" Most modern graphic software is also able to add, edit, and manipulate these items.
create variables, and build display
This add- on brings this ability/ functionality to Gramps...
Special symbols... Special symbols...
degrees symbol = [Ctrl] [Shift] u \00b0 degrees symbol = [Ctrl] [Shift] u \00b0
minutes symbol = \2032 minutes symbol = \2032
seconds symbol = \2033 seconds symbol = \2033
"""
class EditExifMetadata(Gramplet):
def init(self):
"""
create variables, and build display
""" """
self.exif_widgets = {} self.exif_widgets = {}
self.dates = {} self.dates = {}
@@ -258,11 +249,11 @@ class EditExifMetadata(Gramplet):
self.dbstate.db.connect('media-update', self.update) self.dbstate.db.connect('media-update', self.update)
self.connect_signal('Media', self.update) self.connect_signal('Media', self.update)
def post_init(self): def active_changed(self, handle):
""" """
disconnects the active signal upon closing handles when a media object has changed
""" """
self.disconnect("active-changed") self.update()
def db_changed(self): def db_changed(self):
""" """
@@ -380,9 +371,6 @@ class EditExifMetadata(Gramplet):
main_vbox.show_all() main_vbox.show_all()
return main_vbox return main_vbox
def active_changed(self, handle):
self.update()
def main(self): # return false finishes def main(self): # return false finishes
""" """
get the active media, mime type, and reads the image metadata get the active media, mime type, and reads the image metadata
@@ -505,7 +493,6 @@ class EditExifMetadata(Gramplet):
previews = self.plugin_image.previews previews = self.plugin_image.previews
except (IOError, OSError): except (IOError, OSError):
return False return False
return True return True
def __display_exif_tags(self, full_path): def __display_exif_tags(self, full_path):
@@ -528,7 +515,6 @@ class EditExifMetadata(Gramplet):
will show the Convert Button once an Image Type has been selected, and if will show the Convert Button once an Image Type has been selected, and if
image extension is not an Exiv2- compatible image? image extension is not an Exiv2- compatible image?
""" """
# get convert image type and check it from ImageTypes drop- down # get convert image type and check it from ImageTypes drop- down
ext_value = self.exif_widgets["ImageTypes"].get_active() ext_value = self.exif_widgets["ImageTypes"].get_active()
if ext_value >= 1: if ext_value >= 1:
@@ -547,7 +533,6 @@ class EditExifMetadata(Gramplet):
* data fields * data fields
* buttons * buttons
""" """
# if True, setup tooltips for all Data Entry Fields # if True, setup tooltips for all Data Entry Fields
if fields: if fields:
for widget, tooltip in _TOOLTIPS.items(): for widget, tooltip in _TOOLTIPS.items():
@@ -565,7 +550,6 @@ class EditExifMetadata(Gramplet):
* setup the tooltips for the data fields, * setup the tooltips for the data fields,
* setup the tooltips for the buttons, * setup the tooltips for the buttons,
""" """
if OLD_API: # prior to pyexiv2-0.2.0 if OLD_API: # prior to pyexiv2-0.2.0
metadata = pyexiv2.Image(full_path) metadata = pyexiv2.Image(full_path)
try: try:
@@ -585,6 +569,10 @@ class EditExifMetadata(Gramplet):
return metadata return metadata
def update_has_data(self): def update_has_data(self):
"""
updates the has_data functionality to show on the sidebar/ bottombar
highlighted tab if there is any data to show...
"""
active_handle = self.get_active('Media') active_handle = self.get_active('Media')
active = self.dbstate.db.get_object_from_handle(active_handle) active = self.dbstate.db.get_object_from_handle(active_handle)
self.set_has_data(self.get_has_data(active)) self.set_has_data(self.get_has_data(active))
@@ -670,8 +658,8 @@ class EditExifMetadata(Gramplet):
evt_box.add(entry) evt_box.add(entry)
self.exif_widgets[pos] = entry self.exif_widgets[pos] = entry
entry.show()
entry.show()
return evt_box return evt_box
def thumbnail_view(self, object): def thumbnail_view(self, object):
@@ -737,7 +725,6 @@ class EditExifMetadata(Gramplet):
""" """
builds the thumbnail viewing area. builds the thumbnail viewing area.
""" """
main_vbox = gtk.VBox() main_vbox = gtk.VBox()
main_vbox.set_size_request((width - 30), (height - 30)) main_vbox.set_size_request((width - 30), (height - 30))
@@ -761,7 +748,6 @@ class EditExifMetadata(Gramplet):
""" """
Handles the Convert question Dialog Handles the Convert question Dialog
""" """
# Convert and delete original file or just convert # Convert and delete original file or just convert
OptionDialog(_("Edit Image Exif Metadata"), _("WARNING: You are about to convert this " OptionDialog(_("Edit Image Exif Metadata"), _("WARNING: You are about to convert this "
"image into a .jpeg image. Are you sure that you want to do this?"), "image into a .jpeg image. Are you sure that you want to do this?"),
@@ -770,11 +756,10 @@ class EditExifMetadata(Gramplet):
self.update() self.update()
return return
def __convert_copy(self, full_path =None): def __convert_copy(self, full_path = None):
""" """
Will attempt to convert an image to jpeg if it is not? Will attempt to convert an image to jpeg if it is not?
""" """
if full_path is None: if full_path is None:
full_path = self.image_path full_path = self.image_path
@@ -826,14 +811,12 @@ class EditExifMetadata(Gramplet):
# writes all Exif Metadata to image even if the fields are all empty so as to remove the value # writes all Exif Metadata to image even if the fields are all empty so as to remove the value
self.write_metadata(dest_meta) self.write_metadata(dest_meta)
return dest_file return dest_file
def __convert_delete(self, full_path =None): def __convert_delete(self, full_path = None):
""" """
will convert an image file and delete original non-jpeg image. will convert an image file and delete original non-jpeg image.
""" """
if full_path is None: if full_path is None:
full_path = self.image_path full_path = self.image_path
@@ -864,11 +847,10 @@ class EditExifMetadata(Gramplet):
self.exif_widgets["MessageArea"].set_text(_("There was an error in " self.exif_widgets["MessageArea"].set_text(_("There was an error in "
"deleting the original file. You will need to delete it yourself!")) "deleting the original file. You will need to delete it yourself!"))
def __convert_only(self, full_path =None): def __convert_only(self, full_path = None):
""" """
This will only convert the file and update the media object path. This will only convert the file and update the media object path.
""" """
if full_path is None: if full_path is None:
full_path = self.image_path full_path = self.image_path
@@ -882,11 +864,10 @@ class EditExifMetadata(Gramplet):
self.exif_widgets["MessageArea"].set_text(_("There was an error " self.exif_widgets["MessageArea"].set_text(_("There was an error "
"in converting your image file.")) "in converting your image file."))
def __update_media_path(self, newfilepath =None): def __update_media_path(self, newfilepath = None):
""" """
update the media object's media path. update the media object's media path.
""" """
if newfilepath: if newfilepath:
db = self.dbstate.db db = self.dbstate.db
@@ -900,19 +881,17 @@ class EditExifMetadata(Gramplet):
self.exif_widgets["MessageArea"].set_text(_("There has been an " self.exif_widgets["MessageArea"].set_text(_("There has been an "
"error in updating the image file's path!")) "error in updating the image file's path!"))
def __help_page(self, addonwiki =None): def __help_page(self, addonwiki = None):
""" """
will bring up a Wiki help page. will bring up a Wiki help page.
""" """
addonwiki = 'Edit Image Exif Metadata' addonwiki = 'Edit Image Exif Metadata'
GrampsDisplay.help(webpage =addonwiki) GrampsDisplay.help(webpage = addonwiki)
def activate_buttons(self, buttonlist): def activate_buttons(self, buttonlist):
""" """
Enable/ activate the buttons that are in buttonlist Enable/ activate the buttons that are in buttonlist
""" """
for widget in buttonlist: for widget in buttonlist:
self.exif_widgets[widget].set_sensitive(True) self.exif_widgets[widget].set_sensitive(True)
@@ -922,7 +901,6 @@ class EditExifMetadata(Gramplet):
*** if All, then disable ALL buttons in the current display *** if All, then disable ALL buttons in the current display
""" """
if buttonlist == ["All"]: if buttonlist == ["All"]:
buttonlist = [(buttonname) for buttonname in _BUTTONTIPS.keys() buttonlist = [(buttonname) for buttonname in _BUTTONTIPS.keys()
if buttonname is not "Help"] if buttonname is not "Help"]
@@ -1193,7 +1171,8 @@ class EditExifMetadata(Gramplet):
displays the image Exif metadata in the Edit Area... displays the image Exif metadata in the Edit Area...
""" """
if mediadatatags: if mediadatatags:
mediadatatags = [key for key in mediadatatags if key in _DATAMAP] mediadatatags = [key for key in mediadatatags
if key in _DATAMAP]
for key in mediadatatags: for key in mediadatatags:
widget = _DATAMAP[key] widget = _DATAMAP[key]
@@ -1275,23 +1254,10 @@ class EditExifMetadata(Gramplet):
self.media_title = self.orig_image.get_description() self.media_title = self.orig_image.get_description()
self.exif_widgets["MediaTitle"].set_text(self.media_title) self.exif_widgets["MediaTitle"].set_text(self.media_title)
def write_metadata(self, plugininstance):
"""
writes the Exif metadata to the image.
OLD_API -- prior to pyexiv2-0.2.0
-- pyexiv2-0.2.0 and above...
"""
if OLD_API:
plugininstance.writeMetadata()
else:
plugininstance.write()
def convert_format(self, latitude, longitude, format): def convert_format(self, latitude, longitude, format):
""" """
Convert GPS coordinates into a specified format. Convert GPS coordinates into a specified format.
""" """
if (not latitude and not longitude): if (not latitude and not longitude):
return [False]*2 return [False]*2
@@ -1305,7 +1271,6 @@ class EditExifMetadata(Gramplet):
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
""" """
if (not latitude or not longitude): if (not latitude or not longitude):
return [False]*2 return [False]*2
@@ -1318,7 +1283,6 @@ class EditExifMetadata(Gramplet):
gets the information from the plugin data fields gets the information from the plugin data fields
and sets the key = widgetvaluee image metadata and sets the key = widgetvaluee image metadata
""" """
# set up default variables... # set up default variables...
db = self.dbstate.db db = self.dbstate.db
valid = 0 valid = 0
@@ -1462,7 +1426,19 @@ class EditExifMetadata(Gramplet):
# update the display... # update the display...
self.update() self.update()
def strip_metadata(self, mediadatatags =None): def write_metadata(self, plugininstance):
"""
writes the Exif metadata to the image.
OLD_API -- prior to pyexiv2-0.2.0
-- pyexiv2-0.2.0 and above...
"""
if OLD_API:
plugininstance.writeMetadata()
else:
plugininstance.write()
def strip_metadata(self, mediadatatags = None):
""" """
Will completely and irrevocably erase all Exif metadata from this image. Will completely and irrevocably erase all Exif metadata from this image.
""" """
@@ -1497,12 +1473,11 @@ class EditExifMetadata(Gramplet):
self.exif_widgets["MessageArea"].set_text(_("There was an error " self.exif_widgets["MessageArea"].set_text(_("There was an error "
"in stripping the Exif metadata from this image...")) "in stripping the Exif metadata from this image..."))
def post_init(self):
def close_window(self, widgetWindow):
""" """
closes the window title by widgetWindow. disconnects the active signal upon closing
""" """
lambda w: widgetWindow.destroy() self.disconnect("active-changed")
def string_to_rational(coordinate): def string_to_rational(coordinate):
""" """
@@ -1532,7 +1507,6 @@ def convert_value(value):
""" """
if isinstance(value, (Fraction, pyexiv2.Rational)): if isinstance(value, (Fraction, pyexiv2.Rational)):
return str((Decimal(value.numerator) / Decimal(value.denominator))) return str((Decimal(value.numerator) / Decimal(value.denominator)))
return value return value
def rational_to_dms(coordinates): def rational_to_dms(coordinates):
@@ -1561,47 +1535,39 @@ def _get_exif_keypairs(plugin_image):
# * gets from and sets to the image... # * gets from and sets to the image...
# * it will still need to be saved... # * it will still need to be saved...
#------------------------------------------------ #------------------------------------------------
def _get_value(plugininstance, exiv2_key): def _get_value(plugininstance, exif2_key):
""" """
gets the value from the Exif Key, and returns it... gets the value from the Exif Key, and returns it...
@param: key -- image metadata key @param: exif2_key -- image metadata key
""" """
exiv_value = '' exif_value = ''
try: try:
if OLD_API: if OLD_API:
exiv_value = plugininstance[exiv2_key] exif_value = plugininstance[exif2_key]
else: else:
exiv_value = plugininstance[exiv2_key].value exif_value = plugininstance[exif2_key].value
except (KeyError, ValueError, AttributeError): except (KeyError, ValueError, AttributeError):
pass pass
return exif_value
return exiv_value def _set_value(plugininstance, key, widget_value):
def _set_value(plugininstance, key, widgetvalue_):
""" """
sets the value for the metadata keys sets the value for the metadata keys
""" """
if not plugininstance: if not plugininstance:
return False return False
valid = 0 valid = 0
try: try:
if OLD_API: if OLD_API:
plugininstance[key] = widgetvalue_ plugininstance[key] = widget_value
valid = 1 valid = 1
else: else:
plugininstance[key].value = widgetvalue_ plugininstance[key].value = widget_value
valid = 2 valid = 2
except KeyError: except KeyError:
plugininstance[key] = pyexiv2.ExifTag(key, widgetvalue_) plugininstance[key] = pyexiv2.ExifTag(key, widget_value)
valid = 3 valid = 3
except (ValueError, AttributeError): except (ValueError, AttributeError):
valid = 4 valid = 4
return valid return valid