Change the way we "launch" files using their default application. Instead of trying to find the application ourselves, use the OS built in functions to open a file with its default application. We no longer show the name of the application that we will open the file with because we don't know.

svn: r11781
This commit is contained in:
Brian Matherly
2009-02-01 04:21:17 +00:00
parent 6fccf8d75f
commit 3259b393da
18 changed files with 107 additions and 261 deletions

View File

@@ -1135,7 +1135,7 @@ class BookReportDialog(DocReportDialog):
self.doc.open(self.target_path)
if self.print_report.get_active():
self.doc.print_requested ()
self.doc.open_requested ()
def make_report(self):
"""The actual book report. Start it out, then go through the item list

View File

@@ -153,10 +153,8 @@ class AsciiDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
def close(self):
self.f.close()
if self.print_req:
apptype = 'text/plain'
prog = Mime.get_application(apptype)
Utils.launch(prog[0],self.filename)
if self.open_req:
Utils.open_file_with_default_application(self.filename)
def get_usable_width(self):
return _WIDTH_IN_CHARS
@@ -375,16 +373,6 @@ class AsciiDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
#------------------------------------------------------------------------
print_label = None
pmgr = PluginManager.get_instance()
try:
mprog = Mime.get_application("text/plain")
mtype = Mime.get_description('text/plain')
if Utils.search_for(mprog[0]):
print_label=_("Open in %s") % mprog[1]
else:
print_label=None
pmgr.register_text_doc(mtype, AsciiDoc, 1, 1, ".txt", print_label)
except:
pmgr.register_text_doc(_("Plain Text"), AsciiDoc, 1, 1, ".txt", None)
pmgr.register_text_doc(_("Plain Text"), AsciiDoc, 1, 1, ".txt",
_("Open with default viewer"))

View File

@@ -336,10 +336,8 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
self.f.close()
self.write_support_files()
if self.print_req:
apptype = 'text/html'
app = Mime.get_application(apptype)
Utils.launch(app[0],self.filename)
if self.open_req:
Utils.open_file_with_default_application(self.filename)
def write_support_files(self):
if self.map:
@@ -482,18 +480,5 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
#------------------------------------------------------------------------
print_label = None
pmgr = PluginManager.get_instance()
try:
prog = Mime.get_application("text/html")
mtype = Mime.get_description("text/html")
if Utils.search_for(prog[0]):
print_label=_("Open in %s") % prog[1]
else:
print_label=None
if mtype == _("unknown"):
mtype = _('HTML')
pmgr.register_text_doc(mtype, HtmlDoc, 0, 1, ".html", print_label)
except:
pmgr.register_text_doc(_('HTML'), HtmlDoc, 0, 1, ".html", None)
pmgr.register_text_doc(_('HTML'), HtmlDoc, 0, 1, ".html",
_("Open with default viewer"))

View File

@@ -303,9 +303,8 @@ class LaTeXDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
self.f.write('\\end{enumerate}\n')
self.f.write('\n\\end{document}\n')
self.f.close()
if self.print_req:
app = Mime.get_application(_apptype)
Utils.launch(app[0], self.filename)
if self.open_req:
Utils.open_file_with_default_application(self.filename)
def end_page(self):
"""Issue a new page command"""

View File

@@ -434,9 +434,8 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc):
self._write_meta_file()
self._write_mimetype_file()
self._write_zip()
if self.print_req:
app = Mime.get_application(_apptype)
Utils.launch(app[0], self.filename)
if self.open_req:
Utils.open_file_with_default_application(self.filename)
def add_media_object(self, file_name, pos, x_cm, y_cm):
@@ -1147,18 +1146,8 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc):
# Register plugins
#
#--------------------------------------------------------------------------
print_label = None
print_label = _("Open with default viewer")
pmgr = PluginManager.get_instance()
try:
mprog = Mime.get_application(_apptype)
if Utils.search_for(mprog[0]):
print_label = _("Open in %(program_name)s") % { 'program_name':
mprog[1]}
else:
print_label = None
except:
print_label = None
pmgr.register_text_doc(_('Open Document Text'),
ODFDoc, 1, 1, ".odt", print_label)

View File

@@ -46,22 +46,6 @@ def lrgb(grp):
def coords(grp):
return (gformat(grp[0]),gformat(grp[1]))
_apptype = 'application/postscript'
print_label = None
try:
# First try to find a viewer program
mprog = Mime.get_application(_apptype)
if Utils.search_for(mprog[0]):
print_label = _("Open in %(program_name)s") % {'program_name': mprog[1]}
except:
pass
if print_label is None:
# Second, try to print directly
if get_print_dialog_app() is not None:
print_label = _("Print a copy")
#-------------------------------------------------------------------------
#
@@ -152,15 +136,8 @@ class PSDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc):
self.f.write('%d\n' % self.page)
self.f.write('%%EOF\n')
self.f.close()
if self.print_req:
if print_label == _("Print a copy"):
run_print_dialog (self.filename)
elif print_label:
app = Mime.get_application(_apptype)
Utils.launch(app[0],self.filename)
else:
# This should never happen
print "Invalid print request"
if self.open_req:
Utils.open_file_with_default_application(self.filename)
def write_text(self,text,mark=None):
pass
@@ -368,4 +345,5 @@ class PSDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc):
self.f.write('grestore\n')
pmgr = PluginManager.get_instance()
pmgr.register_draw_doc(_("PostScript"), PSDrawDoc, 1, 1, ".ps", print_label);
pmgr.register_draw_doc(_("PostScript"), PSDrawDoc, 1, 1, ".ps",
_("Open with default viewer"))

View File

@@ -125,9 +125,8 @@ class PdfDoc(CairoDoc):
fontmap.set_resolution(saved_resolution)
# load the result into an external viewer
if self.print_req:
app = Mime.get_application('application/pdf')
Utils.launch(app[0], self._filename)
if self.open_req:
Utils.open_file_with_default_application(self._filename)
#------------------------------------------------------------------------
#
@@ -137,17 +136,8 @@ class PdfDoc(CairoDoc):
def register_docgen():
"""Register the docgen with the GRAMPS plugin system.
"""
try:
mprog = Mime.get_application("application/pdf")
mtype = Mime.get_description("application/pdf")
if Utils.search_for(mprog[0]):
print_label = _("Open in %s") % mprog[1]
else:
print_label = None
except:
mtype = _('PDF document')
print_label = None
mtype = _('PDF document')
print_label = _("Open with default viewer")
pmgr = PluginManager.get_instance()
pmgr.register_text_doc(mtype, PdfDoc, 1, 1, ".pdf", print_label)

View File

@@ -129,12 +129,8 @@ class RTFDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
self.f.write('}\n')
self.f.close()
if self.print_req:
try:
app = Mime.get_application(mime_type)[0]
Utils.launch(app,self.filename)
except:
pass
if self.open_req:
Utils.open_file_with_default_application(self.filename)
#--------------------------------------------------------------------
#
@@ -443,14 +439,5 @@ class RTFDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
#
#------------------------------------------------------------------------
pmgr = PluginManager.get_instance()
try:
mprog = Mime.get_application(mime_type)
mtype = Mime.get_description(mime_type)
if Utils.search_for(mprog[0]):
print_label=_("Open in %s") % mprog[1]
else:
print_label=None
pmgr.register_text_doc(mtype, RTFDoc, 1, 1, ".rtf", print_label)
except:
pmgr.register_text_doc(_('RTF document'), RTFDoc, 1, 1, ".rtf", None)
pmgr.register_text_doc(_('RTF document'), RTFDoc, 1, 1, ".rtf",
_("Open with default viewer"))

View File

@@ -263,5 +263,5 @@ def units(val):
#
#-------------------------------------------------------------------------
pmgr = PluginManager.get_instance()
pmgr.register_draw_doc(_("SVG (Scalable Vector Graphics)"),
SvgDrawDoc, 1, 1, ".svg");
pmgr.register_draw_doc(_("SVG (Scalable Vector Graphics)"), SvgDrawDoc, 1, 1,
".svg", _("Open with default viewer"))