views:

178

answers:

1

Looking at Stani's Python IDE, it definitely comes bundled with tons of useful features. Except it doesn't let me do custom syntax coloring.

From the Q&A on the author's site:

"- changing colors is not supported unless you edit manually sm/wxp/stc.py"

So I've attempted to check out that code myself in my quest for the perfect full-featured IDE.

The stc.py file seems to be the author's modifications on Robin Dunn's original code for wxPython. Buried within all the event handling seems to be code that determines the colour of the various syntax.

All I want to do is change the background colour to be black, change the black texts to white, and if everything else stills show up under these two new colours, i'm a happy coder.

Has anyone tried this? Thanks

edit: The lines around ~441

def SetStyles(self)

are those lines it?

edit^2: would someone be able to find the cursor blink color setting as well? Or is that something a little 'more' hard coded?

edit^3: What I have so far , modifying the hex color values from line -441, in the function SetStyles.

    def SetStyles(self):
    # anti-aliasing
    if hasattr(self,'SetUseAntiAliasing'):
        self.SetUseAntiAliasing(True)

    #INDICATOR STYLES FOR ERRORS (self.errorMark)
    self.IndicatorSetStyle(2, wx_stc.STC_INDIC_SQUIGGLE)
    self.IndicatorSetForeground(2, wx.RED)

    #import dialogs.stcStyleEditor
    if 1:#dialogs.stcStyleEditor.SetStyles(self, self.config):
        self.StyleSetSpec(wx_stc.STC_P_DEFAULT, "face:%(mono)s,fore:#B0B0B0,size:%(size)d" % self.faces)
        self.StyleClearAll()

        # Global default styles for all languages  B0B0B0= gray
        self.StyleSetSpec(wx_stc.STC_STYLE_DEFAULT,     "face:%(mono)s,fore:#B0B0B0,back:#00000,size:%(size)d" % self.faces)
        self.StyleSetSpec(wx_stc.STC_STYLE_LINENUMBER,  "back:#C0C0C0,face:%(mono)s,size:%(size)d" % self.faces)
        self.StyleSetSpec(wx_stc.STC_STYLE_CONTROLCHAR, "face:%(mono)s,fore:#B0B0B0" % self.faces)
        self.StyleSetSpec(wx_stc.STC_STYLE_BRACELIGHT,  "fore:#B0B0B0,back:#0000FF,bold")
        self.StyleSetSpec(wx_stc.STC_STYLE_BRACEBAD,    "fore:#B0B0B0,back:#FF0000,bold")

        # Python styles
        # White space
        self.StyleSetSpec(wx_stc.STC_P_DEFAULT, "face:%(mono)s,fore:#000000,back:#000000,size:%(size)d" % self.faces)
        # Comment
        self.StyleSetSpec(wx_stc.STC_P_COMMENTLINE, "face:%(mono)s,fore:#F70909,back:#000000,italic,size:%(size)d" % self.faces)
        # Number
        self.StyleSetSpec(wx_stc.STC_P_NUMBER, "face:%(mono)s,fore:#FFFFFF,size:%(size)d" % self.faces)
        # String
        self.StyleSetSpec(wx_stc.STC_P_STRING, "face:%(mono)s,fore:#34C640,size:%(size)d" % self.faces)
        # Single quoted string
        self.StyleSetSpec(wx_stc.STC_P_CHARACTER, "face:%(mono)s,fore:#43AB4E,size:%(size)d" % self.faces)
        # Keyword (Class, def, etc.)
        self.StyleSetSpec(wx_stc.STC_P_WORD, "face:%(mono)s,fore:#FF9100,bold,size:%(size)d" % self.faces)
        # Triple quotes
        self.StyleSetSpec(wx_stc.STC_P_TRIPLE, "face:%(mono)s,fore:#7F0000,size:%(size)d" % self.faces)
        # Triple double quotes
        self.StyleSetSpec(wx_stc.STC_P_TRIPLEDOUBLE, "face:%(mono)s,fore:#7F0000,size:%(size)d" % self.faces)
        # Class name definition (Name of the class)
        self.StyleSetSpec(wx_stc.STC_P_CLASSNAME, "face:%(mono)s,fore:#00AEFF,bold,size:%(size)d" % self.faces)
        # Function or method name definition (bright blue = #0011FF)
        self.StyleSetSpec(wx_stc.STC_P_DEFNAME, "face:%(mono)s,fore:#FFFF00,bold,size:%(size)d" % self.faces)
        # Operators (+ - /)
        self.StyleSetSpec(wx_stc.STC_P_OPERATOR, "face:%(mono)s,fore:#FFFFFF,bold,size:%(size)d" % self.faces)
        # Identifiers (this was all the same color - > self.SetTopWindow(self.frame))
        self.StyleSetSpec(wx_stc.STC_P_IDENTIFIER, "fore:#FFFFFF")
        # Comment-blocks
        self.StyleSetSpec(wx_stc.STC_P_COMMENTBLOCK, "face:%(mono)s,fore:#990000,back:#C0C0C0,italic,size:%(size)d" % self.faces)
        # End of line where string is not closed
        self.StyleSetSpec(wx_stc.STC_P_STRINGEOL, "face:%(mono)s,fore:#B1CCB0,face:%(mono)s,back:#E0C0E0,eol,size:%(size)d" % self.faces)

this uses a black background and changes the other colors to be brighter.

Questions Still Remaining:

1.The class identifiers ("self.", "classname.", etc) have the same color as the text after the '.', but this is how the original one is, don't think that can be changed (easily, anyway) 2. The mouse cursor position marker (blinking "|" ) is still black, which becomes invisible in the new background. 3. Does this application support mouse-overing variables and having a description of the variable's origins pop up?(like in pyscripter)?

A: 

The code I referred to above basically solves the issue, so I'll close the issue.

PPTim