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:
@@ -73,6 +73,7 @@ enum {
|
|||||||
myID_PAGEPREV,
|
myID_PAGEPREV,
|
||||||
myID_PAGENEXT,
|
myID_PAGENEXT,
|
||||||
myID_SELECTLINE,
|
myID_SELECTLINE,
|
||||||
|
myID_WINDOW_MINIMAL,
|
||||||
|
|
||||||
// other IDs
|
// other IDs
|
||||||
myID_STATUSBAR,
|
myID_STATUSBAR,
|
||||||
|
@@ -230,7 +230,7 @@ const StyleInfo g_StylePrefs [] = {
|
|||||||
|
|
||||||
// mySTC_TYPE_WORD2
|
// mySTC_TYPE_WORD2
|
||||||
{wxT("Keyword2"),
|
{wxT("Keyword2"),
|
||||||
wxT("DARK BLUE"), wxT("WHITE"),
|
wxT("MIDNIGHT BLUE"), wxT("WHITE"),
|
||||||
wxT(""), 10, 0, 0},
|
wxT(""), 10, 0, 0},
|
||||||
|
|
||||||
// mySTC_TYPE_WORD3
|
// mySTC_TYPE_WORD3
|
||||||
|
@@ -106,6 +106,10 @@ private:
|
|||||||
//! frame window
|
//! frame window
|
||||||
AppFrame* m_frame;
|
AppFrame* m_frame;
|
||||||
|
|
||||||
|
wxFrame* MinimalEditor();
|
||||||
|
protected:
|
||||||
|
void OnMinimalEditor(wxCommandEvent&);
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
// created dynamically by wxWidgets
|
// created dynamically by wxWidgets
|
||||||
@@ -193,6 +197,11 @@ private:
|
|||||||
|
|
||||||
IMPLEMENT_APP (App)
|
IMPLEMENT_APP (App)
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(App, wxApp)
|
||||||
|
EVT_MENU(myID_WINDOW_MINIMAL, App::OnMinimalEditor)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// App
|
// App
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
@@ -564,6 +573,7 @@ void AppFrame::CreateMenu ()
|
|||||||
wxMenu *menuWindow = new wxMenu;
|
wxMenu *menuWindow = new wxMenu;
|
||||||
menuWindow->Append (myID_PAGEPREV, _("&Previous\tCtrl+Shift+Tab"));
|
menuWindow->Append (myID_PAGEPREV, _("&Previous\tCtrl+Shift+Tab"));
|
||||||
menuWindow->Append (myID_PAGENEXT, _("&Next\tCtrl+Tab"));
|
menuWindow->Append (myID_PAGENEXT, _("&Next\tCtrl+Tab"));
|
||||||
|
menuWindow->Append(myID_WINDOW_MINIMAL, _("&Minimal editor"));
|
||||||
|
|
||||||
// Help menu
|
// Help menu
|
||||||
wxMenu *menuHelp = new wxMenu;
|
wxMenu *menuHelp = new wxMenu;
|
||||||
@@ -686,3 +696,138 @@ void AppAbout::OnTimerEvent (wxTimerEvent &WXUNUSED(event)) {
|
|||||||
m_timer = NULL;
|
m_timer = NULL;
|
||||||
EndModal (wxID_OK);
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user