--- a/RefactoringRope/CodeAssistServer.py Mon Oct 17 08:37:28 2022 +0200 +++ b/RefactoringRope/CodeAssistServer.py Mon Oct 17 16:45:23 2022 +0200 @@ -9,6 +9,7 @@ import contextlib import os +import shutil import sys import uuid @@ -188,8 +189,7 @@ ropedir = self.__clientConfigs[idString] if ropedir: configfile = os.path.join(ropedir, "config.py") - if not os.path.exists(configfile): - configfile = None + return configfile def __configChanged(self, idString): @@ -218,12 +218,52 @@ editor.editorSaved.connect(lambda: self.__configChanged(idString)) self.__editors[idString] = editor return + else: + EricMessageBox.critical( + self.__ui, + self.tr("Configure rope"), + self.tr( + """The rope configuration file '{0}' does not exist.""" + ).format(configfile), + ) else: EricMessageBox.critical( self.__ui, - self.tr("Configure Rope"), + self.tr("Configure rope"), self.tr( - """The Rope configuration file '{0}' does""" """ not exist.""" + "The path of the rope configuration file could not be determined." + ).format(configfile), + ) + + def createConfig(self, idString): + """ + Public slot to create a new default rope configuration file. + + @param idString id for which to create the configuration file + @type str + """ + configfile = self.__ropeConfigFile(idString) + if configfile: + defaultConfigFile = os.path.join( + os.path.dirname(__file__), "default_config.py" + ) + try: + shutil.copyfile(defaultConfigFile, configfile) + except OSError as err: + EricMessageBox.critical( + self.__ui, + self.tr("Configure Rope"), + self.tr( + "<p>A new Rope default configuration could not be written to" + " the file '{0}'.</p><p>Reason: {1}</p>" + ).format(configfile, str(err)), + ) + else: + EricMessageBox.critical( + self.__ui, + self.tr("Configure rope"), + self.tr( + "The path of the rope configuration file could not be determined." ).format(configfile), )