// 'Main program' equivalent: the program execution "starts" here
bool MyApp::OnInit()
{
+ if ( !wxApp::OnInit() )
+ return false;
+
#if wxUSE_HELP
wxHelpProvider::Set(new wxSimpleHelpProvider);
#endif
editMenu->Append(wxID_COPY, _("&Copy\tCtrl+C"));
editMenu->Append(wxID_PASTE, _("&Paste\tCtrl+V"));
- editMenu->Append(wxID_CLEAR, _("&Delete\tDel"));
-
editMenu->AppendSeparator();
editMenu->Append(wxID_SELECTALL, _("Select A&ll\tCtrl+A"));
#if 0
toolBar->Realize();
- wxSplitterWindow* splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, GetClientSize(), wxSP_NO_XP_THEME|wxSP_3D|wxSP_LIVE_UPDATE);
+ wxSplitterWindow* splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, GetClientSize(), wxSP_LIVE_UPDATE);
wxFont textFont = wxFont(12, wxROMAN, wxNORMAL, wxNORMAL);
wxFont boldFont = wxFont(12, wxROMAN, wxNORMAL, wxBOLD);
wxFont italicFont = wxFont(12, wxROMAN, wxITALIC, wxNORMAL);
- m_richTextCtrl = new wxRichTextCtrl(splitter, ID_RICHTEXT_CTRL, wxEmptyString, wxDefaultPosition, wxSize(200, 200), wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS);
+ m_richTextCtrl = new wxRichTextCtrl(splitter, ID_RICHTEXT_CTRL, wxEmptyString, wxDefaultPosition, wxSize(200, 200), wxVSCROLL|wxHSCROLL|wxWANTS_CHARS);
wxFont font(12, wxROMAN, wxNORMAL, wxNORMAL);
m_richTextCtrl->SetFont(font);
r.BeginBold();
r.BeginFontSize(14);
- r.WriteText(wxT("Welcome to wxRichTextCtrl, a wxWidgets control for editing and presenting styled text and images"));
+
+ wxString lineBreak = (wxChar) 29;
+
+ r.WriteText(wxString(wxT("Welcome to wxRichTextCtrl, a wxWidgets control")) + lineBreak + wxT("for editing and presenting styled text and images"));
r.EndFontSize();
r.Newline();
r.EndItalic();
r.EndBold();
-
r.Newline();
+
r.WriteImage(wxBitmap(zebra_xpm));
r.EndAlignment();
r.Newline();
r.WriteText(wxT("What can you do with this thing? "));
+
r.WriteImage(wxBitmap(smiley_xpm));
r.WriteText(wxT(" Well, you can change text "));
r.WriteText(wxT("colour, like this red bit."));
r.EndTextColour();
- r.BeginTextColour(wxColour(0, 0, 255));
- r.WriteText(wxT(" And this blue bit."));
- r.EndTextColour();
+ wxRichTextAttr backgroundColourAttr;
+ backgroundColourAttr.SetBackgroundColour(*wxGREEN);
+ backgroundColourAttr.SetTextColour(wxColour(0, 0, 255));
+ r.BeginStyle(backgroundColourAttr);
+ r.WriteText(wxT(" And this blue on green bit."));
+ r.EndStyle();
r.WriteText(wxT(" Naturally you can make things "));
r.BeginBold();
tabs.Add(600);
tabs.Add(800);
tabs.Add(1000);
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_TABS);
attr.SetTabs(tabs);
r.SetDefaultStyle(attr);
if (formatDlg.ShowModal() == wxID_OK)
{
- formatDlg.ApplyStyle(m_richTextCtrl, range);
+ formatDlg.ApplyStyle(m_richTextCtrl, range, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY);
}
// Old method using wxFontDialog
void MyFrame::OnIndentMore(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_LEFT_INDENT);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- wxFontData fontData;
attr.SetLeftIndent(attr.GetLeftIndent() + 100);
attr.SetFlags(wxTEXT_ATTR_LEFT_INDENT);
void MyFrame::OnIndentLess(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_LEFT_INDENT);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- if (attr.GetLeftIndent() >= 100)
+ if (attr.GetLeftIndent() > 0)
{
- wxFontData fontData;
- attr.SetLeftIndent(attr.GetLeftIndent() - 100);
+ attr.SetLeftIndent(wxMax(0, attr.GetLeftIndent() - 100));
m_richTextCtrl->SetStyle(range, attr);
}
void MyFrame::OnLineSpacingHalf(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- wxFontData fontData;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
attr.SetLineSpacing(15);
void MyFrame::OnLineSpacingDouble(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- wxFontData fontData;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
attr.SetLineSpacing(20);
void MyFrame::OnLineSpacingSingle(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- wxFontData fontData;
attr.SetFlags(wxTEXT_ATTR_LINE_SPACING);
attr.SetLineSpacing(0); // Can also use 10
void MyFrame::OnParagraphSpacingMore(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_PARA_SPACING_AFTER);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (m_richTextCtrl->HasSelection())
range = m_richTextCtrl->GetSelectionRange();
- wxFontData fontData;
attr.SetParagraphSpacingAfter(attr.GetParagraphSpacingAfter() + 20);
attr.SetFlags(wxTEXT_ATTR_PARA_SPACING_AFTER);
void MyFrame::OnParagraphSpacingLess(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_PARA_SPACING_AFTER);
if (m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr))
if (attr.GetParagraphSpacingAfter() >= 20)
{
- wxFontData fontData;
attr.SetParagraphSpacingAfter(attr.GetParagraphSpacingAfter() - 20);
attr.SetFlags(wxTEXT_ATTR_PARA_SPACING_AFTER);
wxRichTextHTMLHandler htmlHandler;
htmlHandler.SetFlags(wxRICHTEXT_HANDLER_SAVE_IMAGES_TO_MEMORY);
+ wxArrayInt fontSizeMapping;
+ fontSizeMapping.Add(7);
+ fontSizeMapping.Add(9);
+ fontSizeMapping.Add(11);
+ fontSizeMapping.Add(12);
+ fontSizeMapping.Add(14);
+ fontSizeMapping.Add(22);
+ fontSizeMapping.Add(100);
+
+ htmlHandler.SetFontSizeMapping(fontSizeMapping);
+
if (htmlHandler.SaveFile(& m_richTextCtrl->GetBuffer(), strStream))
{
win->SetPage(text);
void MyFrame::OnInsertSymbol(wxCommandEvent& WXUNUSED(event))
{
- wxTextAttrEx attr;
+ wxRichTextAttr attr;
attr.SetFlags(wxTEXT_ATTR_FONT);
m_richTextCtrl->GetStyle(m_richTextCtrl->GetInsertionPoint(), attr);
wxRichTextAttr urlStyle;
urlStyle.SetTextColour(*wxBLUE);
urlStyle.SetFontUnderlined(true);
-
+
m_richTextCtrl->BeginStyle(urlStyle);
m_richTextCtrl->BeginURL(url);
m_richTextCtrl->WriteText(url);