File indexing completed on 2025-03-09 04:10:20

0001 """
0002 SPDX-FileCopyrightText: 2017 Eliakin Costa <eliakim170@gmail.com>
0003 
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 """
0006 from PyQt5.QtWidgets import QComboBox
0007 from PyQt5.QtGui import QPalette
0008 from scripter.ui_scripter.syntax import syntaxstyles
0009 
0010 
0011 class SyntaxStylesComboBox(QComboBox):
0012 
0013     def __init__(self, highlight, editor, parent=None):
0014         super(SyntaxStylesComboBox, self).__init__(parent)
0015 
0016         self.highlight = highlight
0017         self.editor = editor
0018         self.styleClasses = [syntaxstyles.DefaultSyntaxStyle, syntaxstyles.PythonVimSyntaxStyle, syntaxstyles.BreezeLightSyntaxStyle, syntaxstyles.BreezeDarkSyntaxStyle, syntaxstyles.BlenderSyntaxStyle, syntaxstyles.SolarizedDarkSyntaxStyle, syntaxstyles.SolarizedLightSyntaxStyle]
0019 
0020         for styleClass in self.styleClasses:
0021             className = styleClass.__name__
0022             self.addItem(className)
0023 
0024             if isinstance(self.highlight.getSyntaxStyle(), styleClass):
0025                 self.setCurrentIndex(self.findText(className))
0026 
0027         self.currentIndexChanged.connect(self._currentIndexChanged)
0028 
0029     def _currentIndexChanged(self, index):
0030         syntaxStyle = getattr(syntaxstyles, self.itemText(index))()
0031         self.highlight.setSyntaxStyle(syntaxStyle)
0032         self.highlight.rehighlight()
0033         p = self.editor.palette()
0034         p.setColor(QPalette.Base, syntaxStyle['background'].foreground().color())
0035         p.setColor(QPalette.Text, syntaxStyle['foreground'].foreground().color())
0036         self.editor.setPalette(p)
0037         self.editor.highlightCurrentLine()
0038 
0039     def readSettings(self, settings):
0040         syntaxStyle = settings.value('syntaxStyle', '')
0041 
0042         if syntaxStyle:
0043             self.setCurrentIndex(self.findText(syntaxStyle))
0044 
0045     def writeSettings(self, settings):
0046         settings.setValue('syntaxStyle', type(self.highlight.getSyntaxStyle()).__name__)