1

Тема: wxWebView та CSS

Намагаюся відформатувати вивід до wxWebView ось таким чином:

vector<string> summary {};

string heading = "<h1 {color: green; border: 5px solid red;}>" + key + "</h1>";
string term = "<mark><strong>" + word_term + "</strong></mark>";
string article_paragraph = "<main><article>" + term + article + "</article></main>";
string article_formatted = "<html><body>" + heading + article_paragraph + "<hr>" + "</body></html>";
summary.push_back(article_formatted);

auto result = reduce(summary.begin(), summary.end());
html_result_window->SetPage(result, string());

Усе працює, окрім розмітки CSS.
Помилок не видає, просто не відображає необхідних змін (рамки навколо тексту, кольору).

2

Re: wxWebView та CSS

А готова сторінка в IE/Trident відображається так, як вам треба?

3

Re: wxWebView та CSS

koala написав:

А готова сторінка в IE/Trident відображається так, як вам треба?

Це інтерфейс wxWidgets, вивід іде до вікна інтерфейсу, а не до браузера.

4

Re: wxWebView та CSS

А документацію за вас хто, Іван Якович Франко читатиме?
https://docs.wxwidgets.org/3.0/classwx_web_view.html

It differs from wxHtmlWindow in that each backend is actually a full rendering engine, Trident on MSW and Webkit on OSX and GTK.

Подякували: leofun011

5

Re: wxWebView та CSS

Ось такий запис спрацював:

string heading = "<h1 style='border: 5px solid red;'>" + key + "</h1>";
Подякували: koala1

6

Re: wxWebView та CSS

Можна скористатися "сирими" стрічками (raw string literals) та wxString::Format:

wxString page = wxString::Format(R"(
<html>
    <body>
        <h1 style='border: 5px solid red;'> %s </h1>
        <main><article> 
            <mark><strong> %s </strong></mark> 
            %s 
        </article></main> 
    </body>
</html>
)", key, word_term, article);
html_result_window->SetPage(page, {});

Як на мене, це значно привабливіше за всі ці проміжні змінні та reduce.

Подякували: leofun011

7

Re: wxWebView та CSS

koala написав:

Можна скористатися "сирими" стрічками (raw string literals) та wxString::Format:

wxString page = wxString::Format(R"(
<html>
    <body>
        <h1 style='border: 5px solid red;'> %s </h1>
        <main><article> 
            <mark><strong> %s </strong></mark> 
            %s 
        </article></main> 
    </body>
</html>
)", key, word_term, article);
html_result_window->SetPage(page, {});

Як на мене, це значно привабливіше за всі ці проміжні змінні та reduce.

Проміжні змінні та reduce потрібні для виведення різних статей зі словника для одного терміна.
Наприклад, слово "cat" є в декількох словниках.
Кожна зі словникових статей зберігається до вектора, як окрема змінна.
Це відбувається в циклі, що проходить по всім словникам.
За межами циклу всі ці змінні додаються разом, як одна сторінка.
А тоді ця сторінка виводиться до відповідного вікна.
Просто wxWebView має лише SetPage, що створює цілу сторінку.
wxHTMLWindow, наприклад, має AppendToPage, що додає код до наявної сторінки.
Але wxHTMLWindow має дуже обмежену підтримку CSS, не підійде для повноцінної html сторінки.

8

Re: wxWebView та CSS

Все одно

wxString article_paragraph = wxString::Format("<main><article> %s %s </article></main>", term, article);

виглядає краще.