Fixed and updated the 'Select Date' button to work properly with the spin buttons for the Date/ Time.

svn: r17524
This commit is contained in:
Rob G. Healey 2011-05-17 21:11:54 +00:00
parent 21bb57478a
commit 62bafc0491

View File

@ -141,7 +141,22 @@ if not _JHEAD_FOUND:
_vtypes = [".jpeg", ".jpg", ".jfif", ".exv", ".tiff", ".dng", ".nef", ".pef", ".pgf", _vtypes = [".jpeg", ".jpg", ".jfif", ".exv", ".tiff", ".dng", ".nef", ".pef", ".pgf",
".png", ".psd", ".jp2"] ".png", ".psd", ".jp2"]
# define tooltips for all entries # set up Exif keys for Image.exif_keys
_DATAMAP = {
"Exif.Image.ImageDescription" : "Description",
"Exif.Image.DateTime" : "Modified",
"Exif.Image.Artist" : "Artist",
"Exif.Image.Copyright" : "Copyright",
"Exif.Photo.DateTimeOriginal" : "Original",
"Exif.Photo.DateTimeDigitized" : "Digitized",
"Exif.GPSInfo.GPSLatitudeRef" : "LatitudeRef",
"Exif.GPSInfo.GPSLatitude" : "Latitude",
"Exif.GPSInfo.GPSLongitudeRef" : "LongitudeRef",
"Exif.GPSInfo.GPSLongitude" : "Longitude"}
_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...
_TOOLTIPS = { _TOOLTIPS = {
"Description" : _("Provide a short descripion for this image."), "Description" : _("Provide a short descripion for this image."),
@ -160,43 +175,28 @@ _TOOLTIPS = {
"Longitude" : _("Enter the GPS Longitude Coordinates for your image,\n" "Longitude" : _("Enter the GPS Longitude Coordinates for your image,\n"
"Example: 10.396378, 10 23 46 E, 105° 6 6″ W, -105 6 6") }.items() "Example: 10.396378, 10 23 46 E, 105° 6 6″ W, -105 6 6") }.items()
# set up Exif keys for Image.exif_keys # define tooltips for all buttons...
_DATAMAP = {
"Exif.Image.ImageDescription" : "Description",
"Exif.Image.DateTime" : "Modified",
"Exif.Image.Artist" : "Artist",
"Exif.Image.Copyright" : "Copyright",
"Exif.Photo.DateTimeOriginal" : "Original",
"Exif.Photo.DateTimeDigitized" : "Digitized",
"Exif.GPSInfo.GPSLatitudeRef" : "LatitudeRef",
"Exif.GPSInfo.GPSLatitude" : "Latitude",
"Exif.GPSInfo.GPSLongitudeRef" : "LongitudeRef",
"Exif.GPSInfo.GPSLongitude" : "Longitude"}
_DATAMAP = dict( (key, val) for key, val in _DATAMAP.items() )
_DATAMAP.update( (val, key) for key, val in _DATAMAP.items() )
# Toolt tips for the buttons in the gramplet...
_BUTTONTIPS = { _BUTTONTIPS = {
# 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...
"Popup:Select" : _("Allows you to select a date from a Popup window Calendar. \n" "Popup:Select" : _("Allows you to select a date from a Popup window Calendar. \n"
"Warning: You will still need to edit the time..."), "Warning: You will still need to edit the time..."),
# Thumbnail Viewing Window button... # Thumbnail Viewing Window button...
"ThumbnailView" : _("Will produce a Popup window showing a Thumbnail Viewing Area"), "ThumbnailView" : _("Will produce a Popup window showing a Thumbnail Viewing Area"),
# Wiki Help button... # 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."),
# Advanced Display Window button... # Advanced Display Window button...
"Advanced" : _("Will pop open a window with all of the Exif metadata Key/alue pairs."), "Advanced" : _("Will pop open a window with all of the Exif metadata Key/alue pairs."),
# Save Exif Metadata button... # Save Exif Metadata button...
"Save" : _("Saves/ writes the Exif metadata to this image.\n" "Save" : _("Saves/ writes the Exif metadata to this image.\n"
"WARNING: Exif metadata will be erased if you save a blank entry field...") } "WARNING: Exif metadata will be erased if you save a blank entry field...") }
# if ImageMagick is installed on this computer then, add button tooltips for Convert button... # if ImageMagick is installed on this computer then, add button tooltips for Convert button...
@ -204,14 +204,14 @@ if _MAGICK_FOUND:
_BUTTONTIPS.update( { _BUTTONTIPS.update( {
# Convert to .Jpeg button... # Convert to .Jpeg button...
"Convert" : _("If your image is not a .jpg image, convert it to a .jpg image?") } ) "Convert" : _("If your image is not a .jpg image, convert it to a .jpg image?") } )
# if ImageMagick's "convert" or jhead is installed, add this button tooltip... # if ImageMagick's "convert" or jhead is installed, add this button tooltip...
if _MAGICK_FOUND or _JHEAD_FOUND: if _MAGICK_FOUND or _JHEAD_FOUND:
_BUTTONTIPS.update( { _BUTTONTIPS.update( {
# Delete/ Erase/ Wipe Exif metadata button... # 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?") } )
def _help_page(obj): def _help_page(obj):
@ -221,29 +221,6 @@ def _help_page(obj):
GrampsDisplay.help(webpage = "Edit Image Exif Metadata") GrampsDisplay.help(webpage = "Edit Image Exif Metadata")
_allmonths = list([_dd.short_months[i], _dd.long_months[i], i] for i in range(1, 13))
def _return_month(month):
"""
returns either an integer of the month number or the abbreviated month name
@param: rmonth -- can be one of:
10, "10", "Oct", or "October"
"""
try:
month = int(month)
except ValueError:
for sm, lm, index in _allmonths:
if month == sm or month == lm:
month = int(index)
break
elif str(month) == index:
month = lm
break
return month
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
# Gramplet class # Gramplet class
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
@ -368,7 +345,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[0], lower=1826, upper=2100, step_incr=1.0, page_incr=100) adj = gtk.Adjustment(value=now[0], lower=1826, upper=2100, step_incr=1, page_incr=100)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Year", adj, False, False), expand =False, fill =True, padding =0) "Year", adj, False, False), expand =False, fill =True, padding =0)
@ -379,7 +356,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[1], lower=1.0, upper=12.0, step_incr=1.0, page_incr=5.0, page_size=0.0) adj = gtk.Adjustment(value=now[1], lower=1, upper=12, step_incr=1, page_incr=5)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Month", adj), expand =False, fill =True, padding =0) "Month", adj), expand =False, fill =True, padding =0)
@ -390,7 +367,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[2], lower=1.0, upper=31.0, step_incr=1.0, page_incr=5.0, page_size=0.0) adj = gtk.Adjustment(value=now[2], lower=1, upper=31, step_incr=1, page_incr=5)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Day", adj), expand =False, fill =True, padding =0) "Day", adj), expand =False, fill =True, padding =0)
@ -412,7 +389,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[3], lower=0, upper=23, step_incr=1, page_incr=5, page_size=0.0) adj = gtk.Adjustment(value=now[3], lower=0, upper=23, step_incr=1, page_incr=5)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Hour", adj), expand =False, fill =True, padding =0) "Hour", adj), expand =False, fill =True, padding =0)
@ -423,7 +400,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[4], lower=0, upper=59, step_incr=1, page_incr=5.0, page_size=0.0) adj = gtk.Adjustment(value=now[4], lower=0, upper=59, step_incr=1, page_incr=5)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Minutes", adj), expand =False, fill =True, padding =0) "Minutes", adj), expand =False, fill =True, padding =0)
@ -434,7 +411,7 @@ class EditExifMetadata(Gramplet):
label.set_alignment(0, 0.5) label.set_alignment(0, 0.5)
vbox2.pack_start(label, expand =False, fill =True, padding =0) vbox2.pack_start(label, expand =False, fill =True, padding =0)
adj = gtk.Adjustment(value=now[5], lower=0, upper=59, step_incr=1.0, page_incr=5.0, page_size=0.0) adj = gtk.Adjustment(value=now[5], lower=0, upper=59, step_incr=1, page_incr=5)
vbox2.pack_start(self.__create_spinner( vbox2.pack_start(self.__create_spinner(
"Seconds", adj), expand =False, fill =True, padding =0) "Seconds", adj), expand =False, fill =True, padding =0)
@ -896,32 +873,23 @@ 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, mins, secs = use_date[0:6] year, month, 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 year, month, day = use_date.year, use_date.month, use_date.day
hour, mins, secs = 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 year = False
if year: if year:
# split the date/ time into its six pieces... # update Date/ Time spin buttons...
for widget, value in { self.update_spinners(year, month, day, hour, minutes, seconds)
"Year" : year,
"Month" : month,
"Day" : day,
"Hour" : hour,
"Minutes" : mins,
"Seconds" : secs}.items():
# set the date/ time spin buttons...
self.exif_widgets[widget].set_value(value)
use_date = False use_date = False
if year < 1900: if year < 1900:
use_date = "%04d-%s-%02d %02d:%02d:%02d" % ( use_date = "%04d-%s-%02d %02d:%02d:%02d" % (
year, _dd.long_months[month], day, hour, mins, secs) year, _dd.long_months[month], day, hour, minutes, seconds)
else: else:
use_date = datetime(year, month, day, hour, mins, secs) use_date = datetime(year, month, day, hour, minutes, seconds)
if use_date: if use_date:
if isinstance(use_date, datetime): if isinstance(use_date, datetime):
use_date = _format_datetime(use_date) use_date = _format_datetime(use_date)
@ -1437,9 +1405,36 @@ class EditExifMetadata(Gramplet):
year, month, day = self.exif_widgets["Calendar"].get_date() year, month, day = self.exif_widgets["Calendar"].get_date()
# month has to be increased by one to make it work correctly...
month += 1
hour, minutes, seconds = now[3:6]
# close this window # close this window
self.app.destroy() self.app.destroy()
# update Date/ Time spin buttons...
self.update_spinners(year, month, day, hour, minutes, seconds)
def update_spinners(self, year, month, day, hour, minutes, seconds):
"""
update Date/ Time spinners
"""
# split the date/ time into its six pieces...
datetimevalues = {
"Year" : year,
"Month" : month,
"Day" : day,
"Hour" : hour,
"Minutes" : minutes,
"Seconds" : seconds}.items()
for widget, value in datetimevalues:
# set the date/ time spin buttons...
self.exif_widgets[widget].set_value(value)
def thumbnail_view(self, obj): def thumbnail_view(self, obj):
""" """
will allow a display area for a thumbnail pop-up window. will allow a display area for a thumbnail pop-up window.