More robust error checking

svn: r692
This commit is contained in:
Don Allingham 2002-01-09 03:17:19 +00:00
parent 9878aa0d34
commit de4851f566
11 changed files with 68 additions and 32 deletions

View File

@ -126,16 +126,27 @@ class MediaView:
obj.thaw() obj.thaw()
def on_select_row(self,obj,row,b,c): def on_select_row(self,obj,row,b,c):
fexists = 1
mobj = obj.get_row_data(row) mobj = obj.get_row_data(row)
type = mobj.getMimeType() type = mobj.getMimeType()
type_name = utils.get_mime_description(type) type_name = utils.get_mime_description(type)
path = mobj.getPath() path = mobj.getPath()
self.preview.load_file(utils.thumb_path(self.db.getSavePath(),mobj)) thumb_path = utils.thumb_path(self.db.getSavePath(),mobj)
pexists = os.path.exists(path)
if pexists and os.path.exists(thumb_path):
self.preview.load_file(thumb_path)
else:
self.preview.load_file(utils.find_icon(type))
if not pexists:
fexists = 0
self.mid.set_text(mobj.getId()) self.mid.set_text(mobj.getId())
self.mtype.set_text(type_name) self.mtype.set_text(type_name)
self.mdesc.set_text(mobj.getDescription()) self.mdesc.set_text(mobj.getDescription())
if path[0] == "/": if len(path) == 0 or fexists == 0:
self.mpath.set_text(_("The file no longer exists"))
elif path[0] == "/":
self.mpath.set_text(path) self.mpath.set_text(path)
else: else:
self.mpath.set_text("<local>") self.mpath.set_text("<local>")
@ -175,6 +186,7 @@ class MediaView:
path = self.db.getSavePath() path = self.db.getSavePath()
id = self.obj.getId() id = self.obj.getId()
name = RelImage.import_media_object(self.obj.getPath(),path,id) name = RelImage.import_media_object(self.obj.getPath(),path,id)
if name:
self.obj.setPath(name) self.obj.setPath(name)
self.obj.setLocal(1) self.obj.setLocal(1)
@ -304,6 +316,7 @@ class MediaView:
name = RelImage.import_media_object(name, name = RelImage.import_media_object(name,
self.db.getSavePath(), self.db.getSavePath(),
photo.getId()) photo.getId())
if name:
photo.setPath(name) photo.setPath(name)
photo.setLocal(1) photo.setLocal(1)
utils.modified() utils.modified()
@ -332,6 +345,7 @@ class MediaView:
id = photo.getId() id = photo.getId()
path = self.db.getSavePath() path = self.db.getSavePath()
name = RelImage.import_media_object(tfile,path,id) name = RelImage.import_media_object(tfile,path,id)
if name:
photo.setLocal(1) photo.setLocal(1)
photo.setPath(name) photo.setPath(name)
except: except:

View File

@ -63,6 +63,10 @@ except:
def import_media_object(filename,path,base): def import_media_object(filename,path,base):
import shutil import shutil
if not os.path.exists(filename):
GnomeErrorDialog(_("Could not import %s\nThe file has been moved or deleted") % filename)
return ""
type = utils.get_mime_type(filename) type = utils.get_mime_type(filename)
if type[0:5] == "image": if type[0:5] == "image":
name = "%s/%s.jpg" % (path,base) name = "%s/%s.jpg" % (path,base)
@ -83,9 +87,16 @@ def import_media_object(filename,path,base):
try: try:
path = "%s/%s" % (thumb,base) path = "%s/%s" % (thumb,base)
mk_thumb(filename,path,const.thumbScale) mk_thumb(filename,path,const.thumbScale)
shutil.copy(filename,name)
except: except:
GnomeErrorDialog(_("Error creating the thumbnail : %s") + "\n" + msg)
return "" return ""
try:
shutil.copy(filename,name)
except IOError,msg:
GnomeErrorDialog(_("Error copying %s") + "\n" + msg)
return ""
else: else:
bname = os.path.basename(filename) bname = os.path.basename(filename)
l = string.split(bname,'.') l = string.split(bname,'.')
@ -106,13 +117,18 @@ def scale_image(path,size):
image1 = GdkImlib.Image(path) image1 = GdkImlib.Image(path)
except: except:
GnomeWarningDialog(_("Could not load image file %s") % path) GnomeWarningDialog(_("Could not load image file %s") % path)
return return GdkImlib.Image(const.icon)
width = image1.rgb_width width = image1.rgb_width
height = image1.rgb_height height = image1.rgb_height
scale = size / float(max(width,height)) scale = size / float(max(width,height))
try:
image2 = image1.clone_scaled_image(int(scale*width), int(scale*height)) image2 = image1.clone_scaled_image(int(scale*width), int(scale*height))
except:
GnomeWarningDialog(_("Could not load image file %s") % path)
return GdkImlib.Image(const.icon)
return image2 return image2
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -121,7 +137,6 @@ def scale_image(path,size):
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def mk_thumb(source,dest,size): def mk_thumb(source,dest,size):
dir = os.path.dirname(dest) dir = os.path.dirname(dest)
try: try:
if not os.path.exists(dir): if not os.path.exists(dir):
@ -134,11 +149,18 @@ def mk_thumb(source,dest,size):
return return
if os.path.exists(dest): if os.path.exists(dest):
try:
os.remove(dest) os.remove(dest)
except IOError,msg:
errmsg = _("Could not replace %s") % dir
GnomeErrorDialog(errmsg + "\n" + msg)
return
if not os.path.exists(source):
GnomeErrorDialog(_("Could not create a thumbnail for %s\nThe file has been moved or deleted") % filename)
if no_pil: if no_pil:
cmd = "%s -geometry %dx%d '%s' '%s'" % (const.convert,size,size,source,dest) cmd = "%s -geometry %dx%d '%s' '%s'" % (const.convert,size,size,source,dest)
print cmd
os.system(cmd) os.system(cmd)
else: else:
try: try:
@ -148,10 +170,9 @@ def mk_thumb(source,dest,size):
im.draft('RGB',im.size) im.draft('RGB',im.size)
im = im.convert("RGB") im = im.convert("RGB")
im.save(dest,"JPEG") im.save(dest,"JPEG")
print "saving",dest
except: except:
print "save failed" GnomeErrorDialog(_("Could not create a thumbnail for %s") % source)
pass return
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -160,11 +181,11 @@ def mk_thumb(source,dest,size):
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def check_thumb(source,dest,size): def check_thumb(source,dest,size):
if not os.path.isfile(source): if not os.path.isfile(source):
return return 0
if not os.path.isfile(dest): if not os.path.isfile(dest):
mk_thumb(source,dest,size) mk_thumb(source,dest,size)
elif os.path.getmtime(source) > os.path.getmtime(dest): elif os.path.getmtime(source) > os.path.getmtime(dest):
mk_thumb(source,dest,size) mk_thumb(source,dest,size)
return 1

View File

@ -255,7 +255,7 @@ class AncestorChartDialog(DrawReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Ancestor Chart") return "%s - %s - GRAMPS" % (_("Ancestor Chart"),_("Graphical Reports"))
def get_header(self, name): def get_header(self, name):
"""The header line at the top of the dialog contents.""" """The header line at the top of the dialog contents."""

View File

@ -235,7 +235,7 @@ class AncestorReportDialog(TextReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Ahnentafel Report") return "%s - %s - GRAMPS" % (_("Ahnentafel Report"),_("Text Reports"))
def get_header(self, name): def get_header(self, name):
"""The header line at the top of the dialog contents""" """The header line at the top of the dialog contents"""

View File

@ -310,7 +310,7 @@ class DescendantReportDialog(DrawReportDialog):
DrawReportDialog.__init__(self,database,person) DrawReportDialog.__init__(self,database,person)
def get_title(self): def get_title(self):
return _("Gramps - Descendant Graph") return "%s - %s - GRAMPS" % (_("Descendant Graph"),_("Graphical Reports"))
def get_header(self,name): def get_header(self,name):
return _("Descendant Graph for %s") % name return _("Descendant Graph for %s") % name

View File

@ -140,7 +140,7 @@ class DescendantReportDialog(TextReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Descendant Report") return "%s - %s - GRAMPS" % (_("Descendant Report"),_("Text Reports"))
def get_header(self, name): def get_header(self, name):
"""The header line at the top of the dialog contents""" """The header line at the top of the dialog contents"""

View File

@ -335,7 +335,7 @@ class FamilyGroupDialog(TextReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Family Group Report") return "%s - %s - GRAMPS" % (_("Family Group Report"),_("Text Reports"))
def get_header(self, name): def get_header(self, name):
"""The header line at the top of the dialog contents""" """The header line at the top of the dialog contents"""

View File

@ -126,7 +126,7 @@ class GraphVizDialog(ReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Generate Relationship Graphs") return "%s - %s - GRAMPS" % (_("Relationship Graph"),_("Graphical Reports"))
def get_target_browser_title(self): def get_target_browser_title(self):
"""The title of the window created when the 'browse' button is """The title of the window created when the 'browse' button is
@ -283,7 +283,7 @@ from Plugins import register_report
register_report( register_report(
report, report,
_("Relationship graph"), _("Relationship Graph"),
status=(_("Beta")), status=(_("Beta")),
category=_("Graphical Reports"), category=_("Graphical Reports"),
description=get_description() description=get_description()

View File

@ -327,7 +327,7 @@ class IndivSummaryDialog(TextReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Individual Summary") return "%s - %s - GRAMPS" %(_("Individual Summary"),_("Text Reports"))
def get_header(self, name): def get_header(self, name):
"""The header line at the top of the dialog contents""" """The header line at the top of the dialog contents"""

View File

@ -41,7 +41,6 @@ from gnome.ui import *
from libglade import * from libglade import *
from Report import * from Report import *
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
@ -813,7 +812,7 @@ class WebReportDialog(ReportDialog):
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_title(self): def get_title(self):
"""The window title for this dialog""" """The window title for this dialog"""
return _("Gramps - Generate HTML reports") return "%s - %s - GRAMPS" % (_("Generate Web Site"),_("Web Page"))
def get_target_browser_title(self): def get_target_browser_title(self):
"""The title of the window created when the 'browse' button is """The title of the window created when the 'browse' button is

View File

@ -420,8 +420,10 @@ def thumb_path(dir,mobj):
if type[0:5] == "image": if type[0:5] == "image":
thumb = "%s/.thumb/%s.jpg" % (dir,mobj.getId()) thumb = "%s/.thumb/%s.jpg" % (dir,mobj.getId())
try: try:
RelImage.check_thumb(mobj.getPath(),thumb,const.thumbScale) if RelImage.check_thumb(mobj.getPath(),thumb,const.thumbScale):
return thumb return thumb
else:
return find_icon(type)
except: except:
return find_icon(type) return find_icon(type)
else: else: