code: def __generic_save_as(self):
          
          page = self._get_page()
          if not page.editor.f:
              return True
          if page.editor.f.filename:
              d = page.editor.f.filename
          else:
              d = os.path.join(self.save_dir if self.save_dir is not None \
                                   else self.load_dir if self.load_dir is not None \
                  else ".", page.editor.f.default_filename)
          new_filename = QFileDialog.getSaveFileName(self, page.make_text_saveas(), d, page.wild)[0]
          if new_filename:
              self.save_dir, _ = os.path.split(str(new_filename))
              page.editor.f.save_as(str(new_filename))
              page.flag_changed = False
              self._update_gui_text_tabs()
              page.editor.update_gui_label_fn()
              return True
          return False
docs: Returns False if user has cancelled operation, otherwise True.