code: def closing_plugin(self, cancelable=False):
          
          state = self.splitter.saveState()
          self.set_option('splitter_state', qbytearray_to_str(state))
          filenames = []
          editorstack = self.editorstacks[0]
  
          active_project_path = None
          if self.projects is not None:
               active_project_path = self.projects.get_active_project_path()
          if not active_project_path:
              self.set_open_filenames()
          else:
              self.projects.set_project_filenames(
                  [finfo.filename for finfo in editorstack.data])
  
          self.set_option('layout_settings',
                          self.editorsplitter.get_layout_settings())
          self.set_option('windows_layout_settings',
                      [win.get_layout_settings() for win in self.editorwindows])
  #        self.set_option('filenames', filenames)
          self.set_option('recent_files', self.recent_files)
  
          # Stop autosave timer before closing windows
          self.autosave.stop_autosave_timer()
  
          try:
              if not editorstack.save_if_changed(cancelable) and cancelable:
                  return False
              else:
                  for win in self.editorwindows[:]:
                      win.close()
                  return True
          except IndexError:
              return True
docs: Perform actions before parent main window is closed