I was having similar issues where my text color would bleed over where it wasn't supposed to, changing the order of the BeginBold/BeginTextColour/BeginAlignment methods seemed to correct that with some trial and error, so I suspect that I may still be doing that incorrectly, but the current order has produced the most consistent results thus far.
Here's one of my filtering methods, the other two are very similar - m_statusText is my wxRichTextCtrl which is constructed with the wxRE_READONLY style. My apologies if my code is incorrect/poorly written - I'm about 8 months into learning to code so I still have a lot to learn...
Thanks a bunch.
Code: Select all
void Frame::displayStatusAll()
{
m_statusText->Clear();
m_statusText->SetBackgroundColour(wxColour(*wxLIGHT_GREY));
m_statusText->BeginBold();
m_statusText->BeginTextColour(wxColour{ 0, 0, 255 });
m_statusText->WriteText("Enterprise Portal: " + m_credentials.getPortal());
m_statusText->EndTextColour();
m_statusText->Newline();
m_statusText->BeginTextColour(wxColour{ 21, 67, 96 });
m_statusText->WriteText(m_mapServices.getTimeStamp());
m_statusText->Newline();
m_statusText->WriteText("Total Services: " + m_mapServices.getCountTotalAsString());
m_statusText->Newline();
m_statusText->WriteText(m_mapServices.getCountStartedAsString() + " - Started.");
m_statusText->Newline();
m_statusText->WriteText(m_mapServices.getCountStoppedAsString() + " - Stopped.");
m_statusText->EndTextColour();
m_statusText->EndBold();
m_statusText->Newline();
m_statusText->Newline();
m_statusText->BeginAlignment(wxTEXT_ALIGNMENT_CENTER);
m_statusText->BeginBold();
m_statusText->BeginTextColour(wxColour{ 23, 32, 42, });
m_statusText->WriteText("*** Displaying All Services ***");
m_statusText->Newline();
m_statusText->EndTextColour();
m_statusText->EndBold();
m_statusText->EndAlignment();
m_statusText->Newline();
for (const auto& [folder, services] : m_mapServices.m_serviceInformation)
{
m_statusText->BeginBold();
m_statusText->BeginTextColour(wxColour{ 23, 32, 42 });
m_statusText->WriteText(folder + ":");
m_statusText->Newline();
m_statusText->EndTextColour();
m_statusText->EndBold();
for (const auto& [service, status] : services)
{
if (status == "STARTED") // Green Text if STARTED.
{
m_statusText->BeginTextColour(wxColour{ 0, 139, 0 });
m_statusText->WriteText("\t" + service + " - " + status);
m_statusText->EndTextColour();
}
else // Red Text if STOPPED or unexpected.
{
m_statusText->BeginTextColour(wxColour{ 255, 0, 0 });
m_statusText->WriteText("\t" + service + " - " + status);
m_statusText->EndTextColour();
}
m_statusText->Newline();
}
m_statusText->Newline();
}
}