Well, I wanted to make my own syntax highlighter using Wx::StyledTextCtrl.
The easiest way to do it seemed to parse the text contents in a
content-changed-event. But it doesn''t seem to work..
I tried to edit the scintilla sample and added this event(@sci is the
StyledTextCtrl):
@sci.evt_stc_change(@sci.get_id) do
@sci.clear_document_style
@sci.start_styling(1,31)
@sci.style_set_font_attr(10, 10, "Courier", true, true, true)
@sci.set_styling(2,10)
puts 1
end
This prints out "1" when you edit the text(twice actually, which i do
not
understand), but doesn''t change the text layout. But if I put it in an
event
triggered by a button, it will work(onEOL is triggered by clicking the
"show
end of line" button in the scintilla sample):
def onEOL
@sci.clear_document_style
@sci.start_styling(1,31)
@sci.style_set_font_attr(10, 10, "Courier", true, true, true)
@sci.set_styling(2,10)
puts 1
end
As soon as I click the button, the second and third character get styled. I
don''t get why it doesn''t work in the text content changed
event. What
happens there, is it intended not to work? What is the best way to get it to
work?
_______________________________________________
wxruby-users mailing list
wxruby-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/wxruby-users
Alex Fenton
2007-Oct-24 19:49 UTC
[wxruby-users] Problems with creating my own syntax highlighter
Christian Bielert wrote:> Well, I wanted to make my own syntax highlighter using > Wx::StyledTextCtrl. The easiest way to do it seemed to parse the text > contents in a content-changed-event. But it doesn''t seem to work..I would have expected the code you posted to work too, but the following seems to work for me (Linux/GTK), hooking into evt_stc_updateui @sci.style_set_font_attr(10, 10, "Courier", true, true, true) @sci.evt_stc_updateui(@sci) do | e | @sci.clear_document_style @sci.start_styling(2,31) @sci.set_styling(5,10) @sci.set_save_point end style_set_xxx only needs to be called once per style, per control. It seems to be a reasonably expensive call so putting it outside the loop got rid of any lag for me. There are a few odd things going on with StyledTextEvent - from the Scintilla docs evt_stc_change should only get called when the text is modifed, but it seems to be getting called repeatedly. And StyledTextEvent should inherit from Wx::Event, but it currently inherits from Wx::Control (!). I''ll look into those and hopefully fix something up for the next release. Thanks for the report. cheers alex