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()
 |