Ignore:
Timestamp:
09/25/16 07:34:11 (8 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
hg-Phase:
(<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
Message:

Pending flights can be deleted (re #307).

File:
1 edited

Legend:

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

    r823 r824  
    243243    ]
    244244
    245     def __init__(self, which, wizard):
     245    def __init__(self, which, wizard, window):
    246246        """Construct the frame with the given title."""
    247247        super(PendingFlightsFrame, self).__init__(xstr("pendflt_title_" + which))
     
    249249        self._which = which
    250250        self._wizard = wizard
     251        self._window = window
    251252
    252253        alignment = gtk.Alignment(xscale = 1.0, yscale = 1.0)
     
    277278        self._deleteButton = gtk.Button(xstr("pendflt_delete_" + which))
    278279        self._deleteButton.set_sensitive(False)
     280        self._deleteButton.connect("clicked", self._deleteClicked)
    279281        buttonBox.pack_start(self._deleteButton, False, False, 2)
    280282
     
    340342                self._wizard.reflyFlight(flight)
    341343
     344    def _deleteClicked(self, button):
     345        """Called when the Delete button is clicked."""
     346        dialog = gtk.MessageDialog(parent = self._window,
     347                                   type = MESSAGETYPE_QUESTION,
     348                                   message_format = xstr("flight_delete_question"))
     349
     350        dialog.add_button(xstr("button_no"), RESPONSETYPE_NO)
     351        dialog.add_button(xstr("button_yes"), RESPONSETYPE_YES)
     352
     353        dialog.set_title(WINDOW_TITLE_BASE)
     354        result = dialog.run()
     355        dialog.hide()
     356
     357        if result==RESPONSETYPE_YES:
     358            gui = self._wizard.gui
     359            gui.beginBusy(xstr("pendflt_refly_busy"))
     360            self.set_sensitive(False)
     361
     362            flightIDs = [self._flights[i].id
     363                        for i in self._flightList.selectedIndexes]
     364            gui.webHandler.deleteFlights(self._deleteResultCallback, flightIDs)
     365
     366    def _deleteResultCallback(self, returned, result):
     367        """Called when the deletion result is available."""
     368        gobject.idle_add(self._handleDeleteResult, returned, result)
     369
     370    def _handleDeleteResult(self, returned, result):
     371        """Handle the delete result."""
     372
     373        self.set_sensitive(True)
     374        gui = self._wizard.gui
     375        gui.endBusy()
     376
     377        print "PendingFlightsFrame._handleDeleteResult", returned, result
     378
     379        if returned:
     380            indexes = self._flightList.selectedIndexes
     381
     382            flights = [self._flights[index] for index in indexes]
     383
     384            self._flightList.removeFlights(indexes)
     385            for index in indexes[::-1]:
     386                del self._flights[index]
     387
     388            for flight in flights:
     389                self._wizard.deleteFlight(flight)
    342390
    343391#-----------------------------------------------------------------------------
     
    364412        vbox = gtk.VBox()
    365413
    366         self._reportedFrame = PendingFlightsFrame("reported", wizard)
     414        self._reportedFrame = PendingFlightsFrame("reported", wizard, self)
    367415        vbox.pack_start(self._reportedFrame, True, True, 2)
    368416
    369         self._rejectedFrame = PendingFlightsFrame("rejected", wizard)
     417        self._rejectedFrame = PendingFlightsFrame("rejected", wizard, self)
    370418        vbox.pack_start(self._rejectedFrame, True, True, 2)
    371419
Note: See TracChangeset for help on using the changeset viewer.