diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/Preferences/ThemeManager.py --- a/src/eric7/Preferences/ThemeManager.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/Preferences/ThemeManager.py Wed Jul 13 14:55:47 2022 +0200 @@ -25,6 +25,7 @@ """ Class implementing a manager object for color themes. """ + ColorKeyPatternList = [ "Diff/.*Color", "Editor/Colour/", @@ -46,20 +47,20 @@ "UI/NotificationWarningBackground", "UI/NotificationWarningForeground", ] - + def __init__(self: "ThemeManager", parent: QObject = None): """ Constructor - + @param parent reference to the parent object (defaults to None) @type QObject (optional) """ super().__init__(parent) - + def importTheme(self: "ThemeManager") -> bool: """ Public method to import a theme file and set the colors. - + @return flag indicating a successful import @rtype bool """ @@ -67,7 +68,7 @@ None, self.tr("Import Theme"), getConfig("ericThemesDir"), - self.tr("eric Theme Files (*.ethj);;All Files (*)") + self.tr("eric Theme Files (*.ethj);;All Files (*)"), ) if filename: try: @@ -81,27 +82,29 @@ self.tr( "<p>The theme file <b>{0}</b> could not" " be read.</p><p>Reason: {1}</p>" - ).format(filename, str(err)) + ).format(filename, str(err)), ) return False - + # step 1: process stylesheet data stylesheetDict = themeDict["stylesheet"] if stylesheetDict["name"]: - stylesheetsDir = os.path.join( - Globals.getConfigDir(), "stylesheets") + stylesheetsDir = os.path.join(Globals.getConfigDir(), "stylesheets") if not os.path.exists(stylesheetsDir): os.makedirs(stylesheetsDir) - stylesheetFile = os.path.join( - stylesheetsDir, stylesheetDict["name"]) - ok = EricMessageBox.yesNo( - None, - self.tr("Import Theme"), - self.tr( - "The stylesheet file {0} exists already." - " Shall it be overwritten?" - ).format(stylesheetDict["name"]) - ) if os.path.exists(stylesheetFile) else True + stylesheetFile = os.path.join(stylesheetsDir, stylesheetDict["name"]) + ok = ( + EricMessageBox.yesNo( + None, + self.tr("Import Theme"), + self.tr( + "The stylesheet file {0} exists already." + " Shall it be overwritten?" + ).format(stylesheetDict["name"]), + ) + if os.path.exists(stylesheetFile) + else True + ) if ok: try: with open(stylesheetFile, "w") as f: @@ -113,22 +116,22 @@ self.tr( "<p>The stylesheet file <b>{0}</b> could" " not be written.</p><p>Reason: {1}</p>" - ).format(stylesheetFile, str(err)) + ).format(stylesheetFile, str(err)), ) stylesheetFile = "" Preferences.setUI("StyleSheet", stylesheetFile) - + # step 2: transfer the color entries settings = Preferences.getSettings() colorsDict = themeDict["colors"] for key, value in colorsDict.items(): settings.setValue(key, value) - + Preferences.syncPreferences() return True - + return False - + def exportTheme(self: "ThemeManager"): """ Public method to export the current colors to a theme file. @@ -139,45 +142,44 @@ os.path.expanduser("~"), self.tr("eric Theme Files (*.ethj)"), "", - EricFileDialog.DontConfirmOverwrite + EricFileDialog.DontConfirmOverwrite, ) if filename: ext = os.path.splitext(filename)[1] if not ext: filename = "{0}{1}".format( - filename, - selectedFilter.rsplit(None, 1)[-1][2:-1]) - + filename, selectedFilter.rsplit(None, 1)[-1][2:-1] + ) + ok = ( EricMessageBox.yesNo( None, self.tr("Export Theme"), self.tr( """<p>The theme file <b>{0}</b> exists""" - """ already. Overwrite it?</p>""").format(filename)) - if os.path.exists(filename) else - True + """ already. Overwrite it?</p>""" + ).format(filename), + ) + if os.path.exists(filename) + else True ) - + if ok: # step 1: generate a dictionary with all color settings settings = Preferences.getSettings() - colorKeyFilterRe = re.compile("|".join( - ThemeManager.ColorKeyPatternList + - ThemeManager.ColorKeyList - )) - - keys = [k for k in settings.allKeys() - if colorKeyFilterRe.match(k)] + colorKeyFilterRe = re.compile( + "|".join( + ThemeManager.ColorKeyPatternList + ThemeManager.ColorKeyList + ) + ) + + keys = [k for k in settings.allKeys() if colorKeyFilterRe.match(k)] colorsDict = {} for key in keys: colorsDict[key] = settings.value(key) - + # step 2: read the contents of the current stylesheet - stylesheetDict = { - "contents": "", - "name": "" - } + stylesheetDict = {"contents": "", "name": ""} stylesheet = Preferences.getUI("StyleSheet") if stylesheet and os.path.exists(stylesheet): try: @@ -191,14 +193,14 @@ self.tr( "<p>The stylesheet file <b>{0}</b> could not" " be read.</p><p>Reason: {1}</p>" - ).format(stylesheet, str(err)) + ).format(stylesheet, str(err)), ) - + themeDict = { "colors": colorsDict, "stylesheet": stylesheetDict, } - + try: jsonString = json.dumps(themeDict, indent=2) with open(filename, "w") as f: @@ -210,5 +212,5 @@ self.tr( "<p>The theme file <b>{0}</b> could not" " be written.</p><p>Reason: {1}</p>" - ).format(filename, str(err)) + ).format(filename, str(err)), )