'Edit Spyder preferences'

@Slot()
def edit_preferences(self):

    from spyder.plugins.configdialog import ConfigDialog
    dlg = ConfigDialog(self)
    dlg.size_change.connect(self.set_prefs_size)
    if (self.prefs_dialog_size is not None):
        dlg.resize(self.prefs_dialog_size)
    for PrefPageClass in self.general_prefs:
        widget = PrefPageClass(dlg, main=self)
        widget.initialize()
        dlg.add_page(widget)
    for plugin in ([self.workingdirectory, self.editor, self.projects, self.ipyconsole, self.historylog, self.help, self.variableexplorer, self.onlinehelp, self.explorer, self.findinfiles] + self.thirdparty_plugins):
        if (plugin is not None):
            try:
                widget = plugin.create_configwidget(dlg)
                if (widget is not None):
                    dlg.add_page(widget)
            except Exception:
                traceback.print_exc(file=sys.stderr)
    if (self.prefs_index is not None):
        dlg.set_current_index(self.prefs_index)
    dlg.show()
    dlg.check_all_settings()
    dlg.pages_widget.currentChanged.connect(self.__preference_page_changed)
    dlg.exec_()
