2011-10-18 104 views
3

由於缺少很多場合的答案,以及我在這裏收到的良好答案,這裏是我的問題。Python wx.stc自定義突出顯示

我正在爲ABC音樂符號語言編寫一個程序(下面給出的示例)。這不是wx.stc支持的語言,我還沒有找到如何一個很好的解釋或例如:

  1. 添加自己的詞法分析器/熒光筆
  2. 從頭開始創建自己的熒光筆和使用RichTextCtrl或喜歡。

歡迎任何方向的幫助。

ABC-符號例如:基於你到了那裏我想你是知道的Scintilla是什麼underlies wx.stc.StyledTextCtrl的 「火花」 標籤

%% this is a midi or postscript argument, and should be colored 
X: 1 % this is a comment and should be colored differently 
T: Speed The Plough % everything followed by a colon, except for |: should be colored 
M: 4/4 % a variety of others should be colored 
L: 1/8 
R: reel 
K: Dmaj 
d3A BAFB|AF~F2 EFDE|F2AF ~G3B| % the non-alphanumerics should be colored 
ABdg fgfe|d3A BAFB|AF~F2 EFDE| 
F2AF GABG|1ABdg fedc:|2ABde fdde|| 
|:f2ab afdf|g2fg ed (3Bcd|a2ab afdB| % | and |: should be colored differently 
ABde fe~e2|f2ab afdf|g2fg edBA| 
[1F2AF GABG|ABdg fddg:|2F2AF ~G3B|ABdg fgfe|| 
+0

出於某種原因,這是有效的着色,就好像它是一種編程語言。這絕不代表應該成爲什麼。 – ShadowFlame

回答

2

Python中做到這一點,你需要設置詞法分析器「容器」,然後處理「的風格,需要」事件:

self.SetLexer(wx.stc.STC_LEX_CONTAINER) 
self.SetStyleBits(5) 
self.Bind(wx.stc.EVT_STC_STYLENEEDED, self.handleStyleNeeded) 

您的處理程序中做的正是將明顯依賴於您試圖突出顯示的語法細節。

爲了獲得靈感,我建議您熟悉scintilla documentation on styling,並查看一些較簡單的內置詞法分析器的source code

一個小Googling也發現了這個wx.stc例如,可能會有所幫助:

http://www.janthor.com/skizzenaux/lexer/html_with_tex_ctrl.py

相關問題