f04880ec09
svn: r14091
116 lines
3.9 KiB
Python
116 lines
3.9 KiB
Python
#-------------------------------------------------------------------------
|
|
#
|
|
# GNOME modules
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
import gtk
|
|
|
|
#-------------------------------------------------------------------------
|
|
#
|
|
# gramps modules
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
import const
|
|
from gen.ggettext import sgettext as _
|
|
from _ErrorReportAssistant import ErrorReportAssistant
|
|
import GrampsDisplay
|
|
|
|
#-------------------------------------------------------------------------
|
|
#
|
|
# Constants
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
WIKI_HELP_PAGE = '%s_-_FAQ' % const.URL_MANUAL_PAGE
|
|
WIKI_HELP_SEC = _('manual|General')
|
|
|
|
class ErrorView(object):
|
|
"""
|
|
A Dialog for displaying errors.
|
|
"""
|
|
|
|
def __init__(self, error_detail, rotate_handler):
|
|
"""
|
|
Initialize the handler with the buffer size.
|
|
"""
|
|
|
|
self._error_detail = error_detail
|
|
self._rotate_handler = rotate_handler
|
|
|
|
self.draw_window()
|
|
self.run()
|
|
|
|
def run(self):
|
|
response = gtk.RESPONSE_HELP
|
|
while response == gtk.RESPONSE_HELP:
|
|
response = self.top.run()
|
|
if response == gtk.RESPONSE_HELP:
|
|
self.help_clicked()
|
|
elif response == gtk.RESPONSE_YES:
|
|
self.top.destroy()
|
|
ErrorReportAssistant(error_detail = self._error_detail,
|
|
rotate_handler = self._rotate_handler,
|
|
ownthread=True)
|
|
elif response == gtk.RESPONSE_CANCEL:
|
|
self.top.destroy()
|
|
|
|
def help_clicked(self):
|
|
"""Display the relevant portion of GRAMPS manual"""
|
|
|
|
GrampsDisplay.help(WIKI_HELP_PAGE, WIKI_HELP_SEC)
|
|
|
|
def draw_window(self):
|
|
title = "%s - Gramps" % _("Error Report")
|
|
self.top = gtk.Dialog(title)
|
|
#self.top.set_default_size(400,350)
|
|
self.top.set_has_separator(False)
|
|
self.top.vbox.set_spacing(5)
|
|
self.top.set_border_width(12)
|
|
hbox = gtk.HBox()
|
|
hbox.set_spacing(12)
|
|
image = gtk.Image()
|
|
image.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
|
|
label = gtk.Label('<span size="larger" weight="bold">%s</span>'
|
|
% _("Gramps has experienced an unexpected error"))
|
|
label.set_use_markup(True)
|
|
|
|
hbox.pack_start(image,False)
|
|
hbox.add(label)
|
|
|
|
self.top.vbox.pack_start(hbox,False,False,5)
|
|
|
|
instructions_label = gtk.Label(
|
|
_("Your data will be safe but it would be advisable to restart Gramps immediately. "\
|
|
"If you would like to report the problem to the Gramps team "\
|
|
"please click Report and the Error Reporting Wizard will help you "\
|
|
"to make a bug report."))
|
|
instructions_label.set_line_wrap(True)
|
|
instructions_label.set_use_markup(True)
|
|
|
|
self.top.vbox.pack_start(instructions_label,False,False,5)
|
|
|
|
tb_frame = gtk.Frame(_("Error Detail"))
|
|
tb_frame.set_border_width(6)
|
|
tb_label = gtk.TextView()
|
|
tb_label.get_buffer().set_text(self._error_detail.get_formatted_log())
|
|
tb_label.set_border_width(6)
|
|
tb_label.set_editable(False)
|
|
|
|
scroll = gtk.ScrolledWindow()
|
|
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
|
|
|
tb_frame.add(scroll)
|
|
scroll.add_with_viewport(tb_label)
|
|
|
|
tb_expander = gtk.Expander('<span weight="bold">%s</span>' % _("Error Detail"))
|
|
tb_expander.set_use_markup(True)
|
|
tb_expander.add(tb_frame)
|
|
|
|
self.top.vbox.pack_start(tb_expander,True,True,5)
|
|
|
|
|
|
self.top.add_button(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL)
|
|
self.top.add_button(_("Report"),gtk.RESPONSE_YES)
|
|
self.top.add_button(gtk.STOCK_HELP,gtk.RESPONSE_HELP)
|
|
|
|
self.top.show_all()
|