Changeset 496:0dadad5a93b8


Ignore:
Timestamp:
04/06/13 14:06:45 (11 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
xplane
Parents:
478:00d38a068da9 (diff), 495:9c830f5791a5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
hg-Phase:
(<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
Message:

Merged the default branch

Location:
src/mlx
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/checks.py

    r478 r496  
    13821382            if state.groundSpeed>50:
    13831383                SpeedChecker.logSpeedFault(flight, state)
     1384        else:
     1385            self._takeoffState = None
    13841386
    13851387    def _checkPushAndTaxi(self, flight, aircraft, state):
     
    14261428    def isCondition(self, flight, aircraft, oldState, state):
    14271429        """Check if the fault condition holds."""
    1428         return (flight.stage==const.STAGE_BOARDING and \
     1430        return state.strobeLightsOn is not None and \
     1431              ((flight.stage==const.STAGE_BOARDING and \
    14291432                state.strobeLightsOn and state.onTheGround) or \
    14301433                (flight.stage==const.STAGE_TAKEOFF and \
     
    14341437                  not state.strobeLightsOn and not state.onTheGround) or \
    14351438                  (flight.stage==const.STAGE_PARKING and \
    1436                    state.strobeLightsOn and state.onTheGround)
     1439                   state.strobeLightsOn and state.onTheGround))
    14371440
    14381441    def logFault(self, flight, aircraft, logger, oldState, state):
  • src/mlx/checks.py

    r480 r496  
    957957        """Check if the fault condition holds."""
    958958        if flight.stage==const.STAGE_CRUISE:
    959             bankLimit = 30
     959            isDH8DXplane = flight.aircraftType==const.AIRCRAFT_DH8D and \
     960                           (flight.fsType==const.SIM_XPLANE10 or
     961                            flight.fsType==const.SIM_XPLANE9)
     962            bankLimit = 35 if isDH8DXplane else 30
    960963        elif flight.stage in [const.STAGE_TAKEOFF, const.STAGE_CLIMB,
    961964                              const.STAGE_DESCENT, const.STAGE_LANDING]:
     
    968971    def logFault(self, flight, aircraft, logger, oldState, state):
    969972        """Log the fault."""
     973        message = "Bank too steep (%.1f)" % (state.bank,)
    970974        flight.handleFault(BankChecker, state.timestamp,
    971                            FaultChecker._appendDuring(flight, "Bank too steep"),
     975                           FaultChecker._appendDuring(flight, message),
    972976                           2)
    973977
  • 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."""
  • src/mlx/gui/gui.py

    r491 r496  
    6969        self._flight = None
    7070        self._simulator = None
     71        self._fsType = None
    7172        self._monitoring = False
    7273
     
    208209
    209210    @property
     211    def fsType(self):
     212        """Get the flight simulator type."""
     213        return self._fsType
     214
     215    @property
    210216    def entranceExam(self):
    211217        """Get whether an entrance exam is about to be taken."""
     
    428434            self._wizard.connected(fsType, descriptor)
    429435        self._reconnecting = False
     436        self._fsType = fsType
    430437        self._listenHotkeys()
    431438
  • src/mlx/gui/monitor.py

    r431 r496  
    376376            self._navLightsOn.set_sensitive(aircraftState.navLightsOn is True)
    377377            self._antiCollisionLightsOn.set_sensitive(aircraftState.antiCollisionLightsOn)
    378             self._strobeLightsOn.set_sensitive(aircraftState.strobeLightsOn)
     378            self._strobeLightsOn.set_sensitive(aircraftState.strobeLightsOn is True)
    379379
    380380            if self._previousState is None or \
  • src/mlx/gui/monitor.py

    r480 r496  
    226226        table.attach(label, 0, 1, 8, 9)
    227227        table.attach(self._qnh, 1, 2, 8, 9)
     228
     229        (label, self._cog) = self._createLabeledEntry("CoG:", 7)
     230        table.attach(label, 2, 3, 8, 9)
     231        table.attach(self._cog, 3, 4, 8, 9)
    228232
    229233        alignment.add(table)
     
    312316            self._adf2.set_text("-")
    313317            self._qnh.set_text("-")
     318            self._cog.set_text("-")
    314319        else:
    315320            self._timestamp.set_text(time.strftime("%H:%M:%S",
     
    386391            self._gearControlDown.set_sensitive(aircraftState.gearControlDown)
    387392            self._gearsDown.set_sensitive(aircraftState.gearsDown)
    388             self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed)
     393            self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed is True)
    389394            self._spoilersExtension.set_text("%.0f" % (aircraftState.spoilersExtension,))
    390395            self._windSpeed.set_text("%.0f" % (aircraftState.windSpeed,))
     
    404409            self._adf1.set_text("-" if aircraftState.adf1 is None else aircraftState.adf1)
    405410            self._adf2.set_text("-" if aircraftState.adf2 is None else aircraftState.adf2)
     411            self._cog.set_text("%.2f%%" % (aircraftState.cog*100.0,))
    406412
    407413#------------------------------------------------------------------------------
  • src/mlx/web.py

    r450 r496  
    1313import traceback
    1414import xml.sax
     15import xmlrpclib
    1516
    1617#---------------------------------------------------------------------------------------
     
    794795#------------------------------------------------------------------------------
    795796
     797class SendBugReport(Request):
     798    """A request to send a bug report to the project homepage."""
     799    _latin2Encoder = codecs.getencoder("iso-8859-2")
     800
     801    def __init__(self, callback, summary, description, email):
     802        """Construct the request for the given bug report."""
     803        super(SendBugReport, self).__init__(callback)
     804        self._summary = summary
     805        self._description = description
     806        self._email = email
     807
     808    def run(self):
     809        """Perform the sending of the bug report."""
     810        serverProxy = xmlrpclib.ServerProxy("http://mlx.varadiistvan.hu/rpc")
     811
     812        result = Result()
     813        result.success = False
     814
     815        attributes = {}
     816        if self._email:
     817            attributes["reporter"] = self._email
     818
     819        result.ticketID = serverProxy.ticket.create(self._summary, self._description,
     820                                                    attributes, True)
     821        print "Created ticket with ID:", result.ticketID
     822        result.success = True
     823
     824        return result
     825
     826#------------------------------------------------------------------------------
     827
    796828class Handler(threading.Thread):
    797829    """The handler for the web services.
     
    835867        """Send the given ACARS"""
    836868        self._addRequest(SendACARS(callback, acars))
     869
     870    def sendBugReport(self, callback, summary, description, email):
     871        """Send a bug report with the given data."""
     872        self._addRequest(SendBugReport(callback, summary, description, email))
    837873
    838874    def run(self):
Note: See TracChangeset for help on using the changeset viewer.