Re-worked the Latitude/ Longitude display.
svn: r17531
This commit is contained in:
@@ -193,13 +193,10 @@ _TOOLTIPS = {
|
|||||||
"Seconds" : _("Enter the seconds for the time of this image.\n"
|
"Seconds" : _("Enter the seconds for the time of this image.\n"
|
||||||
"Example: 0 - 59, You can either spin the up and down arrows by clicking on them or enter it manually."),
|
"Example: 0 - 59, You can either spin the up and down arrows by clicking on them or enter it manually."),
|
||||||
|
|
||||||
"DateDisplay" : _("This date is the Original Date/ Time of the image.\n"
|
"Latitude" : _("Enter the Latitude GPS Coordinates for this image,\n"
|
||||||
"The date and time it was taken/ or created."),
|
|
||||||
|
|
||||||
"Latitude" : _("Enter the GPS Latitude 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"),
|
||||||
|
|
||||||
"Longitude" : _("Enter the GPS Longitude Coordinates for your 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") }.items()
|
"Example: 10.396378, 10 23 46 E, 105° 6′ 6″ W, -105 6 6") }.items()
|
||||||
|
|
||||||
# define tooltips for all buttons...
|
# define tooltips for all buttons...
|
||||||
@@ -270,7 +267,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
self.gui.get_container_widget().remove(self.gui.textview)
|
self.gui.get_container_widget().remove(self.gui.textview)
|
||||||
self.gui.get_container_widget().add_with_viewport(vbox)
|
self.gui.get_container_widget().add_with_viewport(vbox)
|
||||||
vbox.show_all()
|
|
||||||
|
|
||||||
# setup widget tooltips for all fields and buttons...
|
# setup widget tooltips for all fields and buttons...
|
||||||
# so the user has them available even before clicking on anything...
|
# so the user has them available even before clicking on anything...
|
||||||
@@ -282,6 +278,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
main_vbox = gtk.VBox(False, 0)
|
main_vbox = gtk.VBox(False, 0)
|
||||||
|
main_vbox.set_border_width(10)
|
||||||
|
|
||||||
# Displays the file name...
|
# Displays the file name...
|
||||||
medialabel = gtk.HBox(False)
|
medialabel = gtk.HBox(False)
|
||||||
@@ -318,7 +315,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
ctc_box.add( self.__create_button(
|
ctc_box.add( self.__create_button(
|
||||||
"Clear", False, [self.clear_metadata], gtk.STOCK_CLEAR) )
|
"Clear", False, [self.clear_metadata], gtk.STOCK_CLEAR) )
|
||||||
|
|
||||||
# ThumbnailView View button...
|
# Thumbnail View button...
|
||||||
ctc_box.add(self.__create_button(
|
ctc_box.add(self.__create_button(
|
||||||
"ThumbnailView", _("Thumbnail(s)"), [self.thumbnail_view] ) )
|
"ThumbnailView", _("Thumbnail(s)"), [self.thumbnail_view] ) )
|
||||||
|
|
||||||
@@ -342,7 +339,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
# copyright field
|
# copyright field
|
||||||
("Copyright", _("Copyright"), None, False, [], True, 0),
|
("Copyright", _("Copyright"), None, False, [], True, 0),
|
||||||
|
|
||||||
# calendar date clickable entry...
|
# calendar date clickable entry
|
||||||
("Popup", "", None, True,
|
("Popup", "", None, True,
|
||||||
[("Select", _("Select Date"), "button", self.select_date)],
|
[("Select", _("Select Date"), "button", self.select_date)],
|
||||||
True, 0) ]:
|
True, 0) ]:
|
||||||
@@ -355,7 +352,8 @@ class EditExifMetadata(Gramplet):
|
|||||||
now = time.localtime()
|
now = time.localtime()
|
||||||
|
|
||||||
# iso format: Year, Month, Day spinners...
|
# iso format: Year, Month, Day spinners...
|
||||||
date_frame = gtk.Frame(_("Original Date"))
|
date_frame = gtk.Frame(_("Original Date/ Time"))
|
||||||
|
date_frame.set_size_request(100, 60)
|
||||||
main_vbox.pack_start(date_frame, expand =True, fill =True, padding =0)
|
main_vbox.pack_start(date_frame, expand =True, fill =True, padding =0)
|
||||||
|
|
||||||
new_vbox = gtk.VBox(False, 0)
|
new_vbox = gtk.VBox(False, 0)
|
||||||
@@ -399,13 +397,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
"Day", adj), expand =False, fill =True, padding =0)
|
"Day", adj), expand =False, fill =True, padding =0)
|
||||||
|
|
||||||
# Hour, Minutes, Seconds spinners...
|
# Hour, Minutes, Seconds spinners...
|
||||||
time_frame = gtk.Frame(_("Original Time"))
|
|
||||||
main_vbox.pack_start(time_frame, expand =True, fill =True, padding =0)
|
|
||||||
|
|
||||||
new_vbox = gtk.VBox(False, 0)
|
|
||||||
new_vbox.set_border_width(5)
|
|
||||||
time_frame.add(new_vbox)
|
|
||||||
|
|
||||||
new_hbox = gtk.HBox(False, 0)
|
new_hbox = gtk.HBox(False, 0)
|
||||||
new_vbox.pack_start(new_hbox, expand =True, fill =True, padding =5)
|
new_vbox.pack_start(new_hbox, expand =True, fill =True, padding =5)
|
||||||
|
|
||||||
@@ -442,21 +433,59 @@ class EditExifMetadata(Gramplet):
|
|||||||
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)
|
||||||
|
|
||||||
# GPS Latitude/ Longitude Coordinates...
|
# GPS Coordinates...
|
||||||
for items in [
|
latlong_frame = gtk.Frame(_("Latitude/ Longitude GPS Coordinates"))
|
||||||
|
latlong_frame.set_size_request(100, 40)
|
||||||
|
latlong_frame.show()
|
||||||
|
main_vbox.pack_start(latlong_frame, expand =True, fill =True, padding =0)
|
||||||
|
|
||||||
# Original Date Displayed...
|
table = gtk.Table(rows =2, columns =4, homogeneous =False)
|
||||||
("DateDisplay", _("Datestamp"), None, True, [], True, 0),
|
table.show()
|
||||||
|
latlong_frame.add(table)
|
||||||
|
|
||||||
# GPS Latitude Reference and Latitude...
|
# Latitude...
|
||||||
("Latitude", _("Latitude"), None, False, [], True, 0),
|
label = gtk.Label(_("Latitude"))
|
||||||
|
label.set_alignment(0.0, 0.5)
|
||||||
|
label.set_size_request(10, 20)
|
||||||
|
label.show()
|
||||||
|
table.attach(label, 0, 2, 0, 1)
|
||||||
|
|
||||||
# GPS Longitude Reference and Longitude...
|
event_box = gtk.EventBox()
|
||||||
("Longitude", _("Longitude"), None, False, [], True, 0) ]:
|
event_box.set_border_width(5)
|
||||||
|
|
||||||
pos, text, choices, readonly, callback, dirty, default = items
|
# set eventbox background color to "blue"
|
||||||
row = self.make_row(pos, text, choices, readonly, callback, dirty, default)
|
#event_box.modify_bg(gtk.STATE_NORMAL,
|
||||||
main_vbox.pack_start(row, False)
|
# event_box.get_colormap().alloc_color("blue"))
|
||||||
|
event_box.show()
|
||||||
|
table.attach(event_box, 0, 2, 1, 2)
|
||||||
|
self.exif_widgets["LatitudeEBox"] = event_box
|
||||||
|
|
||||||
|
entry = gtk.Entry()
|
||||||
|
entry.show()
|
||||||
|
event_box.add(entry)
|
||||||
|
self.exif_widgets["Latitude"] = entry
|
||||||
|
|
||||||
|
# Longitude...
|
||||||
|
label = gtk.Label(_("Longitude"))
|
||||||
|
label.set_alignment(0.0, 0.5)
|
||||||
|
label.set_size_request(10, 20)
|
||||||
|
label.show()
|
||||||
|
table.attach(label, 2, 4, 0, 1)
|
||||||
|
|
||||||
|
event_box = gtk.EventBox()
|
||||||
|
event_box.set_border_width(5)
|
||||||
|
|
||||||
|
# set eventbox background color to "blue"
|
||||||
|
#event_box.modify_bg(gtk.STATE_NORMAL,
|
||||||
|
# event_box.get_colormap().alloc_color("blue"))
|
||||||
|
event_box.show()
|
||||||
|
table.attach(event_box, 2, 4, 1, 2)
|
||||||
|
self.exif_widgets["LongitudeEBox"] = event_box
|
||||||
|
|
||||||
|
entry = gtk.Entry()
|
||||||
|
entry.show()
|
||||||
|
event_box.add(entry)
|
||||||
|
self.exif_widgets["Longitude"] = entry
|
||||||
|
|
||||||
# Help, Save, Delete horizontal box
|
# Help, Save, Delete horizontal box
|
||||||
hasd_box = gtk.HButtonBox()
|
hasd_box = gtk.HButtonBox()
|
||||||
@@ -480,6 +509,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
hasd_box.add(self.__create_button(
|
hasd_box.add(self.__create_button(
|
||||||
"Delete", False, [self.__wipe_dialog], gtk.STOCK_DELETE ) )
|
"Delete", False, [self.__wipe_dialog], gtk.STOCK_DELETE ) )
|
||||||
|
|
||||||
|
main_vbox.show_all()
|
||||||
return main_vbox
|
return main_vbox
|
||||||
|
|
||||||
def __create_button(self, pos, text, callback =[], icon =False, sensitive =False):
|
def __create_button(self, pos, text, callback =[], icon =False, sensitive =False):
|
||||||
@@ -502,15 +532,15 @@ class EditExifMetadata(Gramplet):
|
|||||||
|
|
||||||
return button
|
return button
|
||||||
|
|
||||||
def __create_spinner(self, pos, adjustment, climb =True, wrap =True):
|
def __create_spinner(self, pos, adjustment, climb =True, wrap =True, numdigits =0):
|
||||||
"""
|
"""
|
||||||
Creates and returns the Date/ Time spinners...
|
Creates and returns the Date/ Time spinners...
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if climb:
|
if climb:
|
||||||
spin_button = gtk.SpinButton(adjustment, climb_rate =0.0, digits =0)
|
spin_button = gtk.SpinButton(adjustment, climb_rate =0.0, digits =numdigits)
|
||||||
else:
|
else:
|
||||||
spin_button = gtk.SpinButton(adjustment, climb_rate =1.0, digits =0)
|
spin_button = gtk.SpinButton(adjustment, climb_rate =1.0, digits =numdigits)
|
||||||
|
|
||||||
spin_button.set_wrap(wrap)
|
spin_button.set_wrap(wrap)
|
||||||
spin_button.set_numeric(True)
|
spin_button.set_numeric(True)
|
||||||
@@ -606,6 +636,9 @@ class EditExifMetadata(Gramplet):
|
|||||||
# clear Edit Area and Labels...
|
# clear Edit Area and Labels...
|
||||||
self.clear_metadata(self.orig_image)
|
self.clear_metadata(self.orig_image)
|
||||||
|
|
||||||
|
# set Message Area to Select...
|
||||||
|
self.exif_widgets["MessageArea"].set_text(_("Select an image to begin..."))
|
||||||
|
|
||||||
active_handle = self.get_active("Media")
|
active_handle = self.get_active("Media")
|
||||||
if not active_handle:
|
if not active_handle:
|
||||||
self.set_has_data(False)
|
self.set_has_data(False)
|
||||||
@@ -828,7 +861,7 @@ class EditExifMetadata(Gramplet):
|
|||||||
# clear all data fields
|
# clear all data fields
|
||||||
if cleartype == "All":
|
if cleartype == "All":
|
||||||
for widgetsName in ["MediaLabel", "MimeType", "MessageArea",
|
for widgetsName in ["MediaLabel", "MimeType", "MessageArea",
|
||||||
"Description", "Artist", "Copyright", "DateDisplay", "Latitude", "Longitude"]:
|
"Description", "Artist", "Copyright", "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
|
||||||
@@ -844,9 +877,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
if (_MAGICK_FOUND or _HEAD_FOUND):
|
if (_MAGICK_FOUND or _HEAD_FOUND):
|
||||||
self.deactivate_buttons(["Delete"])
|
self.deactivate_buttons(["Delete"])
|
||||||
|
|
||||||
# set Message Area to Select...
|
|
||||||
self.exif_widgets["MessageArea"].set_text(_("Select an image to begin..."))
|
|
||||||
|
|
||||||
def EditArea(self, obj):
|
def EditArea(self, obj):
|
||||||
"""
|
"""
|
||||||
displays the image Exif metadata in the Edit Area...
|
displays the image Exif metadata in the Edit Area...
|
||||||
@@ -917,10 +947,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
year, _dd.long_months[month], day, hour, minutes, seconds)
|
year, _dd.long_months[month], day, hour, minutes, seconds)
|
||||||
else:
|
else:
|
||||||
use_date = datetime(year, month, day, hour, minutes, seconds)
|
use_date = datetime(year, month, day, hour, minutes, seconds)
|
||||||
if use_date:
|
|
||||||
if isinstance(use_date, datetime):
|
|
||||||
use_date = _format_datetime(use_date)
|
|
||||||
self.exif_widgets["DateDisplay"].set_text(use_date)
|
|
||||||
|
|
||||||
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
# LatitudeRef, Latitude, LongitudeRef, Longitude...
|
||||||
elif widgetsName == "Latitude":
|
elif widgetsName == "Latitude":
|
||||||
@@ -1330,11 +1356,6 @@ class EditExifMetadata(Gramplet):
|
|||||||
if use_date:
|
if use_date:
|
||||||
self._set_value(_DATAMAP["Original"], use_date)
|
self._set_value(_DATAMAP["Original"], use_date)
|
||||||
|
|
||||||
# display it also...
|
|
||||||
if isinstance(use_date, datetime):
|
|
||||||
use_date = _format_datetime(use_date)
|
|
||||||
self.exif_widgets["DateDisplay"].set_text(use_date)
|
|
||||||
|
|
||||||
# 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()
|
||||||
@@ -1559,9 +1580,9 @@ def _setup_datafields_buttons(extension, exif_widgets):
|
|||||||
# _vtypes is a list of valid exiv2 image types...
|
# _vtypes is a list of valid exiv2 image types...
|
||||||
goodextension = (extension in _vtypes)
|
goodextension = (extension in _vtypes)
|
||||||
|
|
||||||
# Modified and DateDisplay are gtk.Label(), which does NOT have ability to set editable or not...
|
# Modified is a gtk.Label(), which does NOT have ability to set editable or not...
|
||||||
for widget, tooltip in _TOOLTIPS:
|
for widget, tooltip in _TOOLTIPS:
|
||||||
if not widget in ["Modified", "DateDisplay"]:
|
if widget is not "Modified":
|
||||||
exif_widgets[widget].set_editable(goodextension)
|
exif_widgets[widget].set_editable(goodextension)
|
||||||
|
|
||||||
# Do NOT disable the Help button...
|
# Do NOT disable the Help button...
|
||||||
|
Reference in New Issue
Block a user