def on_save(self): if self.__file is None: chooser = Gtk.FileChooserNative.new(_('Save As…'), self, Gtk.FileChooserAction.SAVE, None, None) response = chooser.run() if response != Gtk.ResponseType.ACCEPT: return filename = chooser.get_filename() self.__file = Gio.File.new_for_path(filename) assert self.__file is not None assert self.__file.get_path() is not None source_file = GtkSource.File(location=self.__file) cancellable = Gio.Cancellable() cancel_handler = self.__menu_stack.status_area.connect( 'save-cancel-clicked', lambda b: cancellable.cancel()) self.__menu_stack.status_area.show_save_status() saver = GtkSource.FileSaver(buffer=self.buffer, file=source_file) # TODO: Show progress saver.save_async(GLib.PRIORITY_DEFAULT, cancellable, None, None, self.__finish_saving, cancel_handler)