Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/gui/gui.py

    r450 r496  
    1414from mlx.gui.callouts import ApproachCalloutsEditor
    1515from mlx.gui.pirep import PIREPViewer
     16from mlx.gui.bugreport import BugReportDialog
    1617
    1718import mlx.const as const
     
    8586
    8687        self._sendPIREPCallback = None
     88        self._sendBugReportCallback = None
    8789
    8890        self.webHandler = web.Handler()
     
    109111        self._checklistEditor = ChecklistEditor(self)
    110112        self._approachCalloutsEditor = ApproachCalloutsEditor(self)
     113        self._bugReportDialog = BugReportDialog(self)
    111114
    112115        menuBar = self._buildMenuBar(accelGroup)
     
    993996        prefsMenuItem.connect("activate", self._editPreferences)
    994997        toolsMenu.append(prefsMenuItem)
     998
     999        toolsMenu.append(gtk.SeparatorMenuItem())
     1000
     1001        bugReportMenuItem = gtk.ImageMenuItem(gtk.STOCK_PASTE)
     1002        bugReportMenuItem.set_use_stock(True)
     1003        bugReportMenuItem.set_label(xstr("menu_tools_bugreport"))
     1004        bugReportMenuItem.add_accelerator("activate", accelGroup,
     1005                                          ord(xstr("menu_tools_bugreport_key")),
     1006                                          CONTROL_MASK, ACCEL_VISIBLE)
     1007        bugReportMenuItem.connect("activate", self._reportBug)
     1008        toolsMenu.append(bugReportMenuItem)
    9951009
    9961010        viewMenuItem = gtk.MenuItem(xstr("menu_view"))
     
    11321146        self._setupTimeSync()
    11331147        self._listenHotkeys()
     1148
     1149    def _reportBug(self, menuItem):
     1150        """Callback for reporting a bug."""
     1151        self._bugReportDialog.run()
    11341152
    11351153    def _setupTimeSync(self):
     
    13721390            callback(returned, result)
    13731391
     1392    def sendBugReport(self, summary, description, email, callback = None):
     1393        """Send the bug report with the given data."""
     1394        description += "\n\n" + ("=" * 40)
     1395        description += "\n\nThe contents of the log:\n\n"
     1396
     1397        for (timestampString, text) in self._logger.lines:
     1398            description += unicode(formatFlightLogLine(timestampString, text))
     1399
     1400        description += "\n\n" + ("=" * 40)
     1401        description += "\n\nThe contents of the debug log:\n\n"
     1402
     1403        buffer = self._debugLogView.get_buffer()
     1404        description += buffer.get_text(buffer.get_start_iter(),
     1405                                       buffer.get_end_iter(), True)
     1406
     1407        self.beginBusy(xstr("sendBugReport_busy"))
     1408        self._sendBugReportCallback = callback
     1409        self.webHandler.sendBugReport(self._bugReportSentCallback,
     1410                                      summary, description, email)
     1411
     1412    def _bugReportSentCallback(self, returned, result):
     1413        """Callback function for the bug report sending result."""
     1414        gobject.idle_add(self._handleBugReportSent, returned, result)
     1415
     1416    def _handleBugReportSent(self, returned, result):
     1417        """Callback for the bug report sending result."""
     1418        self.endBusy()
     1419        secondaryMarkup = None
     1420        type = MESSAGETYPE_ERROR
     1421        if returned:
     1422            if result.success:
     1423                type = MESSAGETYPE_INFO
     1424                messageFormat = xstr("sendBugReport_success") % (result.ticketID,)
     1425                secondaryMarkup = xstr("sendBugReport_success_sec")
     1426            else:
     1427                messageFormat = xstr("sendBugReport_error")
     1428                secondaryMarkup = xstr("sendBugReport_siteerror_sec")
     1429        else:
     1430            messageFormat = xstr("sendBugReport_error")
     1431            secondaryMarkup = xstr("sendBugReport_error_sec")
     1432
     1433        dialog = gtk.MessageDialog(parent = self._wizard.gui._bugReportDialog,
     1434                                   type = type, message_format = messageFormat)
     1435        dialog.add_button(xstr("button_ok"), RESPONSETYPE_OK)
     1436        dialog.set_title(WINDOW_TITLE_BASE)
     1437        if secondaryMarkup is not None:
     1438            dialog.format_secondary_markup(secondaryMarkup)
     1439
     1440        dialog.run()
     1441        dialog.hide()
     1442
     1443        callback = self._sendBugReportCallback
     1444        self._sendBugReportCallback = None
     1445        if callback is not None:
     1446            callback(returned, result)
     1447
    13741448    def _listenHotkeys(self):
    13751449        """Setup the hotkeys based on the configuration."""
Note: See TracChangeset for help on using the changeset viewer.