Applied part of #9115 (STC sample cleanup)
by troelsk git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62073 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4908591c7e
commit
c50e0cc752
@ -73,6 +73,7 @@ enum {
|
||||
myID_PAGEPREV,
|
||||
myID_PAGENEXT,
|
||||
myID_SELECTLINE,
|
||||
myID_WINDOW_MINIMAL,
|
||||
|
||||
// other IDs
|
||||
myID_STATUSBAR,
|
||||
|
@ -230,7 +230,7 @@ const StyleInfo g_StylePrefs [] = {
|
||||
|
||||
// mySTC_TYPE_WORD2
|
||||
{wxT("Keyword2"),
|
||||
wxT("DARK BLUE"), wxT("WHITE"),
|
||||
wxT("MIDNIGHT BLUE"), wxT("WHITE"),
|
||||
wxT(""), 10, 0, 0},
|
||||
|
||||
// mySTC_TYPE_WORD3
|
||||
|
@ -106,6 +106,10 @@ private:
|
||||
//! frame window
|
||||
AppFrame* m_frame;
|
||||
|
||||
wxFrame* MinimalEditor();
|
||||
protected:
|
||||
void OnMinimalEditor(wxCommandEvent&);
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// created dynamically by wxWidgets
|
||||
@ -193,6 +197,11 @@ private:
|
||||
|
||||
IMPLEMENT_APP (App)
|
||||
|
||||
|
||||
BEGIN_EVENT_TABLE(App, wxApp)
|
||||
EVT_MENU(myID_WINDOW_MINIMAL, App::OnMinimalEditor)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// App
|
||||
//----------------------------------------------------------------------------
|
||||
@ -564,6 +573,7 @@ void AppFrame::CreateMenu ()
|
||||
wxMenu *menuWindow = new wxMenu;
|
||||
menuWindow->Append (myID_PAGEPREV, _("&Previous\tCtrl+Shift+Tab"));
|
||||
menuWindow->Append (myID_PAGENEXT, _("&Next\tCtrl+Tab"));
|
||||
menuWindow->Append(myID_WINDOW_MINIMAL, _("&Minimal editor"));
|
||||
|
||||
// Help menu
|
||||
wxMenu *menuHelp = new wxMenu;
|
||||
@ -686,3 +696,138 @@ void AppAbout::OnTimerEvent (wxTimerEvent &WXUNUSED(event)) {
|
||||
m_timer = NULL;
|
||||
EndModal (wxID_OK);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Minimal editor added by Troels K 2008-04-08
|
||||
// Thanks to geralds for SetLexerXml() - http://wxforum.shadonet.com/viewtopic.php?t=7155
|
||||
|
||||
class MinimalEditor : public wxStyledTextCtrl
|
||||
{
|
||||
enum
|
||||
{
|
||||
margin_id_lineno,
|
||||
margin_id_fold,
|
||||
};
|
||||
|
||||
public:
|
||||
MinimalEditor(wxWindow* parent, wxWindowID id = wxID_ANY) : wxStyledTextCtrl(parent, id)
|
||||
{
|
||||
SetLexerXml();
|
||||
|
||||
SetProperty(wxT("fold"), wxT("1"));
|
||||
SetProperty(wxT("fold.comment"), wxT("1"));
|
||||
SetProperty(wxT("fold.compact"), wxT("1"));
|
||||
SetProperty(wxT("fold.preprocessor"), wxT("1"));
|
||||
SetProperty(wxT("fold.html"), wxT("1"));
|
||||
SetProperty(wxT("fold.html.preprocessor"), wxT("1"));
|
||||
|
||||
SetMarginType(margin_id_lineno, wxSTC_MARGIN_NUMBER);
|
||||
SetMarginWidth(margin_id_lineno, 32);
|
||||
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUSCONNECTED, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUSCONNECTED, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNER, wxT("WHITE"), wxT("BLACK"));
|
||||
MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNER, wxT("WHITE"), wxT("BLACK"));
|
||||
|
||||
SetMarginMask(margin_id_fold, wxSTC_MASK_FOLDERS);
|
||||
SetMarginWidth(margin_id_fold, 32);
|
||||
SetMarginSensitive(margin_id_fold, true);
|
||||
|
||||
SetFoldFlags(wxSTC_FOLDFLAG_LINEBEFORE_CONTRACTED | wxSTC_FOLDFLAG_LINEAFTER_CONTRACTED);
|
||||
|
||||
SetTabWidth(4);
|
||||
SetUseTabs(false);
|
||||
SetWrapMode(wxSTC_WRAP_WORD);
|
||||
SetWrapVisualFlags(wxSTC_WRAPVISUALFLAG_END);
|
||||
}
|
||||
virtual bool SetFont(const wxFont& font)
|
||||
{
|
||||
StyleSetFont(wxSTC_STYLE_DEFAULT, (wxFont&)font);
|
||||
return wxStyledTextCtrl::SetFont(font);
|
||||
}
|
||||
void SetLexerXml()
|
||||
{
|
||||
SetLexer(wxSTC_LEX_XML);
|
||||
StyleSetForeground(wxSTC_H_DEFAULT, *wxBLACK);
|
||||
StyleSetForeground(wxSTC_H_TAG, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_TAGUNKNOWN, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_ATTRIBUTE, *wxRED);
|
||||
StyleSetForeground(wxSTC_H_ATTRIBUTEUNKNOWN, *wxRED);
|
||||
StyleSetBold(wxSTC_H_ATTRIBUTEUNKNOWN, true);
|
||||
StyleSetForeground(wxSTC_H_NUMBER, *wxBLACK);
|
||||
StyleSetForeground(wxSTC_H_DOUBLESTRING, *wxBLACK);
|
||||
StyleSetForeground(wxSTC_H_SINGLESTRING, *wxBLACK);
|
||||
StyleSetForeground(wxSTC_H_OTHER, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_COMMENT, wxTheColourDatabase->Find(wxT("GREY")));
|
||||
StyleSetForeground(wxSTC_H_ENTITY, *wxRED);
|
||||
StyleSetBold(wxSTC_H_ENTITY, true);
|
||||
StyleSetForeground(wxSTC_H_TAGEND, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_XMLSTART, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_XMLEND, *wxBLUE);
|
||||
StyleSetForeground(wxSTC_H_CDATA, *wxRED);
|
||||
}
|
||||
protected:
|
||||
void OnMarginClick(wxStyledTextEvent&);
|
||||
void OnText(wxStyledTextEvent&);
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
BEGIN_EVENT_TABLE(MinimalEditor, wxStyledTextCtrl)
|
||||
EVT_STC_MARGINCLICK(wxID_ANY, MinimalEditor::OnMarginClick)
|
||||
EVT_STC_CHANGE(wxID_ANY, MinimalEditor::OnText)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
void MinimalEditor::OnMarginClick(wxStyledTextEvent &event)
|
||||
{
|
||||
if (event.GetMargin() == margin_id_fold)
|
||||
{
|
||||
int lineClick = LineFromPosition(event.GetPosition());
|
||||
int levelClick = GetFoldLevel(lineClick);
|
||||
if ((levelClick & wxSTC_FOLDLEVELHEADERFLAG) > 0)
|
||||
{
|
||||
ToggleFold(lineClick);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MinimalEditor::OnText(wxStyledTextEvent& event)
|
||||
{
|
||||
wxLogDebug(wxT("Modified"));
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
class MinimalEditorFrame : public wxFrame
|
||||
{
|
||||
public:
|
||||
MinimalEditorFrame() : wxFrame(NULL, wxID_ANY, _("Minimal Editor"))
|
||||
{
|
||||
MinimalEditor* editor = new MinimalEditor(this);
|
||||
editor->SetFont(wxSystemSettings::GetFont(wxSYS_ANSI_FIXED_FONT));
|
||||
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(editor, 1, wxEXPAND);
|
||||
SetSizer(sizer);
|
||||
editor->SetText(
|
||||
"<xml>\n"
|
||||
" <text>\n"
|
||||
" This is xml with syntax highlighting, line numbers, folding, word wrap and context menu\n"
|
||||
" </text>\n"
|
||||
"</xml>"
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
wxFrame* App::MinimalEditor()
|
||||
{
|
||||
MinimalEditorFrame* frame = new MinimalEditorFrame;
|
||||
frame->Show();
|
||||
return frame;
|
||||
}
|
||||
|
||||
void App::OnMinimalEditor(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
MinimalEditor();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user