// Event handlers
void OnClose(wxCommandEvent& event);
+ void OnIdle(wxIdleEvent& event);
void OnLeftAlign(wxCommandEvent& event);
void OnRightAlign(wxCommandEvent& event);
void OnJustify(wxCommandEvent& event);
private:
wxTextCtrl *m_textCtrl;
+ long m_currentPosition;
DECLARE_EVENT_TABLE()
};
};
BEGIN_EVENT_TABLE(RichTextFrame, wxFrame)
+ EVT_IDLE(RichTextFrame::OnIdle)
EVT_MENU(RICHTEXT_CLOSE, RichTextFrame::OnClose)
EVT_MENU(RICHTEXT_LEFT_ALIGN, RichTextFrame::OnLeftAlign)
EVT_MENU(RICHTEXT_RIGHT_ALIGN, RichTextFrame::OnRightAlign)
RichTextFrame::RichTextFrame(wxWindow* parent, const wxString& title):
wxFrame(parent, -1, title, wxDefaultPosition, wxSize(300, 400))
{
+ m_currentPosition = -1;
m_textCtrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition,
wxDefaultSize, wxTE_MULTILINE|wxTE_RICH2);
menuBar->Append(editMenu, _("Edit"));
SetMenuBar(menuBar);
+ CreateStatusBar();
}
// Event handlers
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
void RichTextFrame::OnRightAlign(wxCommandEvent& event)
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
void RichTextFrame::OnJustify(wxCommandEvent& event)
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
void RichTextFrame::OnCentre(wxCommandEvent& event)
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
void RichTextFrame::OnChangeFont(wxCommandEvent& event)
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
}
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
}
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
}
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
}
}
long start, end;
m_textCtrl->GetSelection(& start, & end);
m_textCtrl->SetStyle(start, end, attr);
+
+ m_currentPosition = -1;
+ }
+}
+
+void RichTextFrame::OnIdle(wxIdleEvent& event)
+{
+ long insertionPoint = m_textCtrl->GetInsertionPoint();
+ if (insertionPoint != m_currentPosition)
+ {
+ wxTextAttr attr;
+ if (m_textCtrl->GetStyle(insertionPoint, attr))
+ {
+ wxString msg;
+ wxString facename(wxT("unknown"));
+ if (attr.GetFont().Ok())
+ {
+ facename = attr.GetFont().GetFaceName();
+ }
+ wxString alignment(wxT("unknown alignment"));
+ if (attr.GetAlignment() == wxTEXT_ALIGNMENT_CENTRE)
+ alignment = wxT("centred");
+ else if (attr.GetAlignment() == wxTEXT_ALIGNMENT_RIGHT)
+ alignment = wxT("right-aligned");
+ else if (attr.GetAlignment() == wxTEXT_ALIGNMENT_LEFT)
+ alignment = wxT("left-aligned");
+ else if (attr.GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED)
+ alignment = wxT("justified");
+ msg.Printf(wxT("Facename: %s, wxColour(%d, %d, %d), %s"),
+ (const wxChar*) facename,
+ attr.GetTextColour().Red(), attr.GetTextColour().Green(), attr.GetTextColour().Blue(),
+ (const wxChar*) alignment);
+ SetStatusText(msg);
+ }
+ m_currentPosition = insertionPoint;
}
}