1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: sample of using wxStyledTextCtrl
8 // Copyright: (c) 2000 by Total Control Software
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
13 #pragma implementation "stctest.cpp"
14 #pragma interface "stctest.cpp"
17 // For compilers that support precompilation, includes "wx/wx.h".
18 #include "wx/wxprec.h"
24 // for all others, include the necessary headers (this file is usually all you
25 // need because it includes almost all "standard" wxWindows headers
30 #include <wx/wfstream.h>
32 #include <wx/stc/stc.h>
34 //----------------------------------------------------------------------
36 class MyApp
: public wxApp
39 virtual bool OnInit();
42 //----------------------------------------------------------------------
44 // Define a new frame type: this is going to be our main frame
45 class MyFrame
: public wxFrame
48 MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
);
50 void OnQuit(wxCommandEvent
& event
);
51 void OnAbout(wxCommandEvent
& event
);
52 void OnStyleNeeded(wxStyledTextEvent
& event
);
61 // IDs for the controls and the menu commands
70 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
71 EVT_MENU (ID_Quit
, MyFrame::OnQuit
)
72 EVT_MENU (ID_About
, MyFrame::OnAbout
)
73 EVT_STC_STYLENEEDED (ID_ED
, MyFrame::OnStyleNeeded
)
78 //----------------------------------------------------------------------
79 // `Main program' equivalent: the program execution "starts" here
83 MyFrame
*frame
= new MyFrame("Testing wxStyledTextCtrl",
84 wxPoint(5, 5), wxSize(400, 600));
90 //----------------------------------------------------------------------
93 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
)
94 : wxFrame((wxFrame
*)NULL
, -1, title
, pos
, size
)
97 // we need this in order to allow the about menu relocation, since ABOUT is
98 // not the default id of the about menu
99 wxApp::s_macAboutMenuItemId
= ID_About
;
104 wxMenu
*menuFile
= new wxMenu("", wxMENU_TEAROFF
);
106 // the "About" item should be in the help menu
107 wxMenu
*helpMenu
= new wxMenu
;
108 helpMenu
->Append(ID_About
, "&About...\tCtrl-A", "Show about dialog");
110 menuFile
->Append(ID_Quit
, "E&xit\tAlt-X", "Quit this program");
112 // now append the freshly created menu to the menu bar...
113 wxMenuBar
*menuBar
= new wxMenuBar();
114 menuBar
->Append(menuFile
, "&File");
115 menuBar
->Append(helpMenu
, "&Help");
117 // ... and attach this menu bar to the frame
122 SetStatusText("Testing wxStyledTextCtrl");
123 #endif // wxUSE_STATUSBAR
126 //----------------------------------------
128 ed
= new wxStyledTextCtrl(this, ID_ED
);
131 wxFont
font(8, wxMODERN
, wxNORMAL
, wxNORMAL
);
132 ed
->StyleSetFont(wxSTC_STYLE_DEFAULT
, font
);
135 ed
->StyleSetForeground(0, wxColour(0x80, 0x80, 0x80));
136 ed
->StyleSetForeground(1, wxColour(0x00, 0x7f, 0x00));
137 //ed->StyleSetForeground(2, wxColour(0x00, 0x7f, 0x00));
138 ed
->StyleSetForeground(3, wxColour(0x7f, 0x7f, 0x7f));
139 ed
->StyleSetForeground(4, wxColour(0x00, 0x7f, 0x7f));
140 ed
->StyleSetForeground(5, wxColour(0x00, 0x00, 0x7f));
141 ed
->StyleSetForeground(6, wxColour(0x7f, 0x00, 0x7f));
142 ed
->StyleSetForeground(7, wxColour(0x7f, 0x00, 0x7f));
143 ed
->StyleSetForeground(8, wxColour(0x00, 0x7f, 0x7f));
144 ed
->StyleSetForeground(9, wxColour(0x7f, 0x7f, 0x7f));
145 ed
->StyleSetForeground(10, wxColour(0x00, 0x00, 0x00));
146 ed
->StyleSetForeground(11, wxColour(0x00, 0x00, 0x00));
147 ed
->StyleSetBold(5, TRUE
);
148 ed
->StyleSetBold(10, TRUE
);
151 ed
->StyleSetSpec(2, "fore:#007f00,bold,face:Arial,size:7");
153 ed
->StyleSetSpec(2, "fore:#007f00,bold,face:Helvetica,size:7");
156 // give it some text to play with
157 wxFile
file("stctest.cpp");
160 char* buff
= st
.GetWriteBuf(file
.Length());
161 file
.Read(buff
, file
.Length());
164 ed
->InsertText(0, st
);
165 ed
->EmptyUndoBuffer();
167 ed
->SetLexer(wxSTC_LEX_CPP
);
169 "asm auto bool break case catch char class const "
170 "const_cast continue default delete do double "
171 "dynamic_cast else enum explicit export extern "
172 "false float for friend goto if inline int long "
173 "mutable namespace new operator private protected "
174 "public register reinterpret_cast return short signed "
175 "sizeof static static_cast struct switch template this "
176 "throw true try typedef typeid typename union unsigned "
177 "using virtual void volatile wchar_t while");
184 void MyFrame::OnStyleNeeded(wxStyledTextEvent
& event
) {
185 int currEndStyled
= ed
->GetEndStyled();
186 ed
->Colourise(currEndStyled
, event
.GetPosition());
192 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
194 // TRUE is to force the frame to close
198 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
201 msg
.Printf( _T("Testing wxStyledTextCtrl...\n"));
203 wxMessageBox(msg
, "About This Test", wxOK
| wxICON_INFORMATION
, this);