replace 'markdown' (bool) property with 'markup' (str)

This commit is contained in:
MihailRis 2024-12-06 19:36:38 +03:00
parent 2f292537ad
commit 3d484383fc
8 changed files with 27 additions and 28 deletions

View File

@ -1,7 +1,7 @@
# Text styles # Text styles
A proprietary Markdown dialect is used to mark up text styles. A proprietary Markdown dialect is used to mark up text styles.
Formatting works on UI elements: label and textbox, if `markdown="true"` is explicitly specified. Formatting works on UI elements: label and textbox, if `markup="md"` is explicitly specified.
## Styles ## Styles

View File

@ -1,7 +1,7 @@
# Стили текста # Стили текста
Для разметки стилей текста используется собственный диалект Markdown. Для разметки стилей текста используется собственный диалект Markdown.
Форматирование работает на UI элементах: label и textbox, если явно указано `markdown="true"`. Форматирование работает на UI элементах: label и textbox, если явно указано `markup="md"`.
## Стили ## Стили

View File

@ -22,7 +22,7 @@
multiline='true' multiline='true'
size-func="gui.get_viewport()[1],40" size-func="gui.get_viewport()[1],40"
gravity="bottom-left" gravity="bottom-left"
markdown="true" markup="md"
></textbox> ></textbox>
</container> </container>
<container id="editorContainer" pos="0,60" color="#00000080" <container id="editorContainer" pos="0,60" color="#00000080"
@ -55,7 +55,7 @@
<textbox id='prompt' <textbox id='prompt'
consumer='submit' consumer='submit'
margin='0' margin='0'
markdown="true" markup="md"
gravity='bottom-left' gravity='bottom-left'
size-func="gui.get_viewport()[1],40" size-func="gui.get_viewport()[1],40"
onup="on_history_up()" onup="on_history_up()"

View File

@ -82,7 +82,7 @@ glm::vec2 Label::calcSize() {
} }
void Label::setText(std::wstring text) { void Label::setText(std::wstring text) {
if (isMarkdown()) { if (markup == "md") {
auto [processedText, styles] = markdown::process(text, true); auto [processedText, styles] = markdown::process(text, true);
text = std::move(processedText); text = std::move(processedText);
setStyles(std::move(styles)); setStyles(std::move(styles));
@ -248,13 +248,13 @@ bool Label::isTextWrapping() const {
return textWrap; return textWrap;
} }
void Label::setMarkdown(bool flag) { void Label::setMarkup(std::string_view lang) {
markdown = flag; markup = lang;
setText(text); setText(text);
} }
bool Label::isMarkdown() const { const std::string& Label::getMarkup() const {
return markdown; return markup;
} }
void Label::setStyles(std::unique_ptr<FontStylesScheme> styles) { void Label::setStyles(std::unique_ptr<FontStylesScheme> styles) {

View File

@ -53,8 +53,8 @@ namespace gui {
/// @brief Auto resize label to fit text /// @brief Auto resize label to fit text
bool autoresize = false; bool autoresize = false;
/// @brief Enable text markdown /// @brief Text markup language
bool markdown = false; std::string markup;
std::unique_ptr<FontStylesScheme> styles; std::unique_ptr<FontStylesScheme> styles;
public: public:
@ -116,8 +116,8 @@ namespace gui {
virtual void setTextWrapping(bool flag); virtual void setTextWrapping(bool flag);
virtual bool isTextWrapping() const; virtual bool isTextWrapping() const;
virtual void setMarkdown(bool flag); virtual void setMarkup(std::string_view lang);
virtual bool isMarkdown() const; virtual const std::string& getMarkup() const;
virtual void setStyles(std::unique_ptr<FontStylesScheme> styles); virtual void setStyles(std::unique_ptr<FontStylesScheme> styles);
}; };

View File

@ -194,7 +194,7 @@ void TextBox::refreshLabel() {
label->setColor(textColor * glm::vec4(input.empty() ? 0.5f : 1.0f)); label->setColor(textColor * glm::vec4(input.empty() ? 0.5f : 1.0f));
const auto& displayText = input.empty() && !hint.empty() ? hint : getText(); const auto& displayText = input.empty() && !hint.empty() ? hint : getText();
if (markdown) { if (markup == "md") {
auto [processedText, styles] = markdown::process(displayText, !focused); auto [processedText, styles] = markdown::process(displayText, !focused);
label->setText(std::move(processedText)); label->setText(std::move(processedText));
label->setStyles(std::move(styles)); label->setStyles(std::move(styles));
@ -850,7 +850,7 @@ bool TextBox::isShowLineNumbers() const {
return showLineNumbers; return showLineNumbers;
} }
void TextBox::setSyntax(const std::string& lang) { void TextBox::setSyntax(std::string_view lang) {
syntax = lang; syntax = lang;
if (syntax.empty()) { if (syntax.empty()) {
label->setStyles(nullptr); label->setStyles(nullptr);
@ -859,10 +859,10 @@ void TextBox::setSyntax(const std::string& lang) {
} }
} }
void TextBox::setMarkdown(bool flag) { void TextBox::setMarkup(std::string_view lang) {
markdown = flag; markup = lang;
} }
bool TextBox::isMarkdown() const { const std::string& TextBox::getMarkup() const {
return markdown; return markup;
} }

View File

@ -56,8 +56,7 @@ namespace gui {
bool editable = true; bool editable = true;
bool autoresize = false; bool autoresize = false;
bool showLineNumbers = false; bool showLineNumbers = false;
bool markdown = false; std::string markup;
std::string syntax; std::string syntax;
void stepLeft(bool shiftPressed, bool breakSelection); void stepLeft(bool shiftPressed, bool breakSelection);
@ -227,9 +226,9 @@ namespace gui {
virtual void setOnUpPressed(const runnable &callback); virtual void setOnUpPressed(const runnable &callback);
virtual void setOnDownPressed(const runnable &callback); virtual void setOnDownPressed(const runnable &callback);
virtual void setSyntax(const std::string& lang); virtual void setSyntax(std::string_view lang);
virtual void setMarkdown(bool flag); virtual void setMarkup(std::string_view lang);
virtual bool isMarkdown() const; virtual const std::string& getMarkup() const;
}; };
} }

View File

@ -278,8 +278,8 @@ static std::shared_ptr<UINode> readLabel(
if (element.has("text-wrap")) { if (element.has("text-wrap")) {
label->setTextWrapping(element.attr("text-wrap").asBool()); label->setTextWrapping(element.attr("text-wrap").asBool());
} }
if (element.has("markdown")) { if (element.has("markup")) {
label->setMarkdown(element.attr("markdown").asBool()); label->setMarkup(element.attr("markup").getText());
} }
return label; return label;
} }
@ -384,8 +384,8 @@ static std::shared_ptr<UINode> readTextBox(UiXmlReader& reader, const xml::xmlel
if (element.has("line-numbers")) { if (element.has("line-numbers")) {
textbox->setShowLineNumbers(element.attr("line-numbers").asBool()); textbox->setShowLineNumbers(element.attr("line-numbers").asBool());
} }
if (element.has("markdown")) { if (element.has("markup")) {
textbox->setMarkdown(element.attr("markdown").asBool()); textbox->setMarkup(element.attr("markup").getText());
} }
if (element.has("consumer")) { if (element.has("consumer")) {
textbox->setTextConsumer(scripting::create_wstring_consumer( textbox->setTextConsumer(scripting::create_wstring_consumer(