void wxStaticTextBase::SetLabelText(const wxString& text) { wxString str = text; if (HasFlag(wxST_MARKUP)) str = EscapeMarkup(str); // escapes markup and the & characters (which are also mnemonics) else str = EscapeMnemonics(text); // escape only the mnemonics SetLabel(str); }
bool Catalog::ExportToHTML(const wxString& filename) { size_t i; wxTextFile f; if ( wxFileExists(filename) ) { wxRemoveFile ( filename); } if (!f.Create(filename)) { return false; } // TODO use some kind of HTML template system to allow different styles wxString line; // HTML HEADER f.AddLine(_T("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">")); f.AddLine("<html>"); f.AddLine("<head>"); line.Printf("<title> %s - %s - Poedit Export </title>", EscapeMarkup(m_header.Project).c_str(), EscapeMarkup(m_header.LanguageCode).c_str()); f.AddLine(line); f.AddLine(_T("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" ) ); f.AddLine("</head>"); f.AddLine("<body bgcolor='#FFFFFF'>"); line.Printf("<h1> %s : %s</h1>", EscapeMarkup(m_header.Project).c_str(), EscapeMarkup(m_header.LanguageCode).c_str()); f.AddLine(line); // po file header information : // String here are duplicates from the ones in setting.xrc // TODO find a way if possible to synchronize them f.AddLine("<table align=center border=1 cellspacing=2 cellpadding=4>"); line.Printf("<tr><th colspan=2>%s</th></tr>", _("Project info")); f.AddLine(line); wxString line_format = "<tr><td>%s</td><td>%s</td></tr>"; line.Printf(line_format, _("Project name and version:"), EscapeMarkup(m_header.Project).c_str()); f.AddLine(line); line.Printf(line_format, _("Language:"), EscapeMarkup(m_header.LanguageCode).c_str()); f.AddLine(line); line.Printf(line_format, _("Team:"), EscapeMarkup(m_header.Team).c_str()); f.AddLine(line); line.Printf(_T("<tr><td>%s</td><td><a href=\"mailto:%s\">%s</a></td></tr>"), _("Team's email address:"), EscapeMarkup(m_header.TeamEmail).c_str(), EscapeMarkup(m_header.TeamEmail).c_str()); f.AddLine(line); line.Printf(line_format, _("Charset:"), EscapeMarkup(m_header.Charset).c_str()); f.AddLine(line); f.AddLine( "</table>" ); // statistics int all = 0; int fuzzy = 0; int untranslated = 0; int badtokens = 0; int unfinished = 0; GetStatistics(&all, &fuzzy, &badtokens, &untranslated, &unfinished); int percent = (all == 0 ) ? 0 : (100 * (all - unfinished) / all); line.Printf(_("%i %% translated, %i strings (%i fuzzy, %i bad tokens, %i not translated)"), percent, all, fuzzy, badtokens, untranslated); f.AddLine(line); // data printed in a table : f.AddLine("<table border=1 cellspacing=2 cellpadding=4>"); f.AddLine("<tr>"); f.AddLine("<th>"); f.AddLine(_("Source")); f.AddLine("</th>"); f.AddLine("<th>"); f.AddLine(_("Translation")); f.AddLine("</th>"); f.AddLine("<th>"); f.AddLine(_("Notes")); f.AddLine("</th>"); f.AddLine("</tr>"); for (i = 0; i < GetCount(); i++) { const CatalogItem& data = m_items[i]; wxColour bgcolor = g_ItemColourNormal[i % 2]; wxString source_string = data.GetString(); wxString translation = data.GetTranslation(); if (translation.empty()) { translation = " "; bgcolor = g_ItemColourUntranslated[i % 2]; } wxString flags; if (data.IsAutomatic()) { flags += EscapeMarkup(_("Automatic translation")); flags += "<BR>"; } if (data.IsFuzzy()) { bgcolor = g_ItemColourFuzzy[i % 2]; flags += EscapeMarkup(_("Fuzzy translation")); flags += "<BR>"; } if (flags.empty()) { flags = " "; } wxString tr; tr.Printf("<tr bgcolor='#%0X%0X%0X'>", bgcolor.Red(), bgcolor.Green(), bgcolor.Blue()); f.AddLine(tr); f.AddLine("<td>"); f.AddLine(EscapeMarkup(source_string)); f.AddLine("</td>"); f.AddLine("<td>"); f.AddLine(EscapeMarkup(translation)); f.AddLine("</td>"); f.AddLine("<td>"); f.AddLine(_T("<font size=\"-1\">")); f.AddLine(flags); f.AddLine("</font>"); f.AddLine("</td>"); f.AddLine("</tr>"); } f.AddLine("</table>"); f.AddLine("</body>"); f.AddLine("</html>"); bool written = f.Write(wxTextFileType_None, wxConvUTF8); f.Close(); return written; }