Ignore:
Timestamp:
05/05/12 11:02:52 (12 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
Phase:
public
Message:

Added support for saving and loading PIREPs

File:
1 edited

Legend:

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

    r146 r151  
    21872187        self._saveButton = self.addButton(xstr("finish_save"),
    21882188                                          sensitive = False,
    2189                                           tooltip = xstr("finish_send_tooltip"))
    2190        
    2191         self._sendButton = self.addButton(xstr("finish_send"), default = True,
     2189                                          clicked = self._saveClicked,
     2190                                          tooltip = xstr("finish_save_tooltip"))
     2191        self._savePIREPDialog = None
     2192        self._lastSavePath = None
     2193       
     2194        self._sendButton = self.addButton(xstr("sendPIREP"), default = True,
    21922195                                          sensitive = False,
    21932196                                          clicked = self._sendClicked,
    2194                                           tooltip = xstr("finish_send_tooltip"))
     2197                                          tooltip = xstr("sendPIREP_tooltip"))
    21952198       
    21962199    @property
     
    22552258                     self._gate.get_active()>=0)
    22562259       
    2257         #self._saveButton.set_sensitive(sensitive)
     2260        self._saveButton.set_sensitive(sensitive)
    22582261        self._sendButton.set_sensitive(sensitive)       
    22592262
     
    22662269        self._updateButtons()
    22672270
     2271    def _saveClicked(self, button):
     2272        """Called when the Save PIREP button is clicked."""
     2273        gui = self._wizard.gui
     2274
     2275        bookedFlight = gui.bookedFlight
     2276        tm = time.gmtime()
     2277       
     2278        fileName = "%s %s %02d%02d %s-%s.pirep" % \
     2279                   (gui.loginResult.pilotID,
     2280                    str(bookedFlight.departureTime.date()),
     2281                    tm.tm_hour, tm.tm_min,
     2282                    bookedFlight.departureICAO,
     2283                    bookedFlight.arrivalICAO)
     2284
     2285        dialog = self._getSaveDialog()
     2286
     2287        if self._lastSavePath is None:
     2288            pirepDirectory = gui.config.pirepDirectory
     2289            if pirepDirectory is not None:
     2290                dialog.set_current_folder(pirepDirectory)
     2291        else:
     2292            dialog.set_current_folder(os.path.dirname(self._lastSavePath))
     2293           
     2294        dialog.set_current_name(fileName)
     2295        result = dialog.run()
     2296        dialog.hide()
     2297
     2298        if result==RESPONSETYPE_OK:
     2299            pirep = PIREP(gui)
     2300
     2301            self._lastSavePath = dialog.get_filename()
     2302           
     2303            if pirep.save(self._lastSavePath):
     2304                type = MESSAGETYPE_INFO
     2305                message = xstr("finish_save_done")
     2306                secondary = None
     2307            else:
     2308                type = MESSAGETYPE_ERROR
     2309                message = xstr("finish_save_failed")
     2310                secondary = xstr("finish_save_failed_sec")
     2311               
     2312            dialog = gtk.MessageDialog(parent = gui.mainWindow,
     2313                                       type = type, message_format = message)
     2314            dialog.add_button(xstr("button_ok"), RESPONSETYPE_OK)
     2315            dialog.set_title(WINDOW_TITLE_BASE)
     2316            if secondary is not None:
     2317                dialog.format_secondary_markup(secondary)
     2318
     2319            dialog.run()
     2320            dialog.hide()
     2321
     2322    def _getSaveDialog(self):
     2323        """Get the PIREP saving dialog.
     2324
     2325        If it does not exist yet, create it."""
     2326        if self._savePIREPDialog is None:
     2327            gui = self._wizard.gui
     2328            dialog = gtk.FileChooserDialog(title = WINDOW_TITLE_BASE + " - " +
     2329                                           xstr("finish_save_title"),
     2330                                           action = FILE_CHOOSER_ACTION_SAVE,
     2331                                           buttons = (gtk.STOCK_CANCEL,
     2332                                                      RESPONSETYPE_CANCEL,
     2333                                                      gtk.STOCK_OK, RESPONSETYPE_OK),
     2334                                           parent = gui.mainWindow)
     2335            dialog.set_modal(True)
     2336            dialog.set_do_overwrite_confirmation(True)
     2337           
     2338            filter = gtk.FileFilter()
     2339            filter.set_name(xstr("loadPIREP_filter_pireps"))
     2340            filter.add_pattern("*.pirep")
     2341            dialog.add_filter(filter)
     2342           
     2343            filter = gtk.FileFilter()
     2344            filter.set_name(xstr("loadPIREP_filter_all"))
     2345            filter.add_pattern("*.*")
     2346            dialog.add_filter(filter)
     2347
     2348            self._savePIREPDialog = dialog
     2349
     2350        return self._savePIREPDialog
     2351       
     2352
    22682353    def _sendClicked(self, button):
    22692354        """Called when the Send button is clicked."""
    22702355        pirep = PIREP(self._wizard.gui)
    2271         gui = self._wizard.gui
    2272         gui.beginBusy(xstr("finish_send_busy"))
    2273         gui.webHandler.sendPIREP(self._pirepSentCallback, pirep)
    2274 
    2275     def _pirepSentCallback(self, returned, result):
    2276         """Callback for the PIREP sending result."""
    2277         gobject.idle_add(self._handlePIREPSent, returned, result)
     2356        self._wizard.gui.sendPIREP(pirep,
     2357                                   callback = self._handlePIREPSent)
    22782358
    22792359    def _handlePIREPSent(self, returned, result):
    22802360        """Callback for the PIREP sending result."""
    2281         self._wizard.gui.endBusy()
    2282         secondaryMarkup = None
    2283         type = MESSAGETYPE_ERROR
    2284         if returned:
    2285             if result.success:
    2286                 type = MESSAGETYPE_INFO
    2287                 messageFormat = xstr("finish_send_success")
    2288                 secondaryMarkup = xstr("finish_send_success_sec")
    2289             elif result.alreadyFlown:
    2290                 messageFormat = xstr("finish_send_already")
    2291                 secondaryMarkup = xstr("finish_send_already_sec")
    2292             elif result.notAvailable:
    2293                 messageFormat = xstr("finish_send_notavail")
    2294             else:
    2295                 messageFormat = xstr("finish_send_unknown")
    2296                 secondaryMarkup = xstr("finish_send_unknown_sec")
    2297         else:
    2298             print "PIREP sending failed", result
    2299             messageFormat = xstr("finish_send_failed")
    2300             secondaryMarkup = xstr("finish_send_failed_sec")
    2301        
    2302         dialog = gtk.MessageDialog(parent = self._wizard.gui.mainWindow,
    2303                                    type = type, message_format = messageFormat)
    2304         dialog.add_button(xstr("button_ok"), RESPONSETYPE_OK)
    2305         dialog.set_title(WINDOW_TITLE_BASE)
    2306         if secondaryMarkup is not None:
    2307             dialog.format_secondary_markup(secondaryMarkup)
    2308 
    2309         dialog.run()
    2310         dialog.hide()
    2311 
    23122361        if self._wizard.gui.config.onlineGateSystem and returned and result.success:
    23132362            bookedFlight = self._wizard.bookedFlight
Note: See TracChangeset for help on using the changeset viewer.