http://scintilla.org/ScintillaDoc.html
http://wiki.wxpython.org/index.cgi/wxStyledTextCtrl
Scintilla 관련 참조 도큐먼트들. (Refactoring 필요)
PythonCard 의 코드를 읽어보면서 이용방법들을 익히게 되었다.
=== syntax hilighting 셋팅 ===
Boa Constructor 나 Pythoncard, wxPython 의 samples 의 StyleEditor 등을 보면 STCStyleEditor 모듈이 있다. 이 모듈에서 initSTC 함수를 사용하면 된다.
환경 셋팅 다이얼로그를 띄우고 싶다면 STCStyleEditDlg 를 사용한다.
{{{~cpp
stcControl = self
language = 'python'
configFileAbsolutePath = os.path.abspath("stc-styles.rc.cfg")
STCStyleEditor.STCStyleEditDlg(stcControl, language, configFileAbsolutePath)
try:
dlg.ShowModal()
finally:
dlg.Destroy()
stcControl.setDefaultStyles()
}}}
=== 커서 위치 관련 메소드들 ===
GetCurrentPos()
LineFromPosition(aPos)
GetColumn(aPos)
=== Refactor 할 것들 ===
SetEdgeColumn(aCol)
GetModify() - 수정상황인지 아닌지 표시
setEditorStyle('python')
text
SetSavePoint()
SetUndoCollection(0)
ClearAll()
EmptyUndoBuffer()
SetUndoCollection(1)
SetSavePoint()
GotoLine(lineNum - 1)
CmdKeyExecute(stc.wxSTC_CMD_TAB)
CmdKeyExecute(stc.wxSTC_CMD_BACKTAB)
sel=GetSelection()
LineFromPosition(sel[0])
LineFromPosition(sel[1])
if end > start and doc.GetColumn(sel[1]) == 0:
end = end-1
BeginUndoAction()
firstChar = PositionFromLine(lineNumber)
InsertText(firstChar, "##")
SetCurrentPos(PositionFromLine(start))
SetAnchor(GetLineEndPosition(end))
EndUndoAction()
SetCurrentPos(aPos)
GetCharAt(aPos)
DelLineLeft()
SetViewWhiteSpace(boolean)
SetIndentationGuides(boolean)
SetEdgeMode(stc.wxSTC_EDGE_LINE)
SetEdgeMode(stc.wxSTC_EDGE_NONE)
getStyleConfigPath()
SetWrapMode(boolean)
CmdKeyExecute(stc.wxSTC_CMD_NEWLINE)
indent = GetLineIndentation(line)
padding = " " * indent
pos = GetCurrentPos()
GetStyleAt(colonPos) not in [stc.wxSTC_P_COMMENTLINE,
stc.wxSTC_P_COMMENTBLOCK,
stc.wxSTC_P_TRIPLEDOUBLE]:
padding += " " * 4
InsertText(pos, padding)
newpos = pos + len(pandding)
SetCurrentPos(newpos)
SetSelection(newpos, newpos)
----
[PyIde]