WxStyledTextCtrl свертывание кода для PHP - PullRequest
1 голос
/ 30 мая 2011

Мне нужно отобразить код PHP с помощью WxStyledTextCtrl. Все работает нормально, кроме свертывания кода.

Я следовал примерам на странице wxWidgets http://wiki.wxwidgets.org/WxStyledTextCtrl, они используют лексер wxSTC_LEX_CPP, и это работает. Я адаптировал их код, но когда я изменил это:

text->SetLexer(wxSTC_LEX_CPP);

для этого:

text->SetLexer(wxSTC_LEX_HTML);

сворачивание кода перестает работать, я перепробовал все, но не могу заставить его работать. Я использую последний выпуск wxWidgets, скомпилированный с VS2010. Любая помощь будет оценена.

1 Ответ

3 голосов
/ 07 июля 2011

Свертывание кода Scintilla для PHP немного отличается от остальных, поскольку обрабатывается лексером HTML.Код ниже включит свертывание кода в PHP.Сгиб будет выглядеть как Visual Studio (коробка со знаком плюс внутри)

wxStyledTextCtrl *ctrl = // from somewhere ....
wxColour backgroundColor = // the background color
wxColour color =  // the foreground color
ctrl->SetProperty(wxT("fold"), wxT("1"));
ctrl->SetProperty(wxT("fold.comment"), wxT("1"));
ctrl->SetProperty(wxT("fold.html"), wxT("1"));
ctrl->SetFoldFlags(wxSTC_FOLDFLAG_LINEBEFORE_CONTRACTED | wxSTC_FOLDFLAG_LINEAFTER_CONTRACTED);
int marginNum = 1; // can be 0-5 I believe 
ctrl->SetMarginType(marginNum, wxSTC_MARGIN_SYMBOL);
ctrl->SetMarginWidth(marginNum, 16);
ctrl->SetMarginSensitive(marginNum, true);
ctrl->SetMarginMask(1, wxSTC_MASK_FOLDERS);
ctrl->SetFoldMarginColour(true, backgroundColor);
ctrl->SetFoldMarginHiColour(true, backgroundColor);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNER, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUSCONNECTED, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUSCONNECTED, backgroundColor, color);
ctrl->MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNER, backgroundColor, color);
...