'Perform actions before parent main window is closed'

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('recent_files', self.recent_files)
    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
