add 'font' xml property to label, button, bindbox, select, textbox

This commit is contained in:
MihailRis 2026-02-16 02:54:54 +03:00
parent 5505622395
commit b0d9a162ca
9 changed files with 51 additions and 0 deletions

View file

@ -91,6 +91,10 @@ void Button::setTextAlign(Align align) {
}
}
std::shared_ptr<Label> Button::getLabel() const {
return label;
}
Align Button::getTextAlign() const {
if (label) {
return label->getAlign();

View file

@ -30,6 +30,8 @@ namespace gui {
virtual Align getTextAlign() const;
virtual void setTextAlign(Align align);
std::shared_ptr<Label> getLabel() const;
virtual void setText(std::wstring text);
virtual std::wstring getText() const;

View file

@ -38,3 +38,7 @@ void InputBindBox::keyPressed(Keycode key) {
}
defocus();
}
std::shared_ptr<Label> InputBindBox::getLabel() const {
return label;
}

View file

@ -24,5 +24,7 @@ namespace gui {
bool isFocuskeeper() const override {
return true;
}
std::shared_ptr<Label> getLabel() const;
};
}

View file

@ -86,3 +86,7 @@ void SelectBox::drawBackground(const DrawContext& pctx, const Assets&) {
pos.y + size.y / 2.0f + heightHalf
);
}
std::shared_ptr<Label> SelectBox::getLabel() const {
return label;
}

View file

@ -35,5 +35,7 @@ namespace gui {
void setOptions(std::vector<Option>&& options);
void drawBackground(const DrawContext& pctx, const Assets&) override;
std::shared_ptr<Label> getLabel() const;
};
}

View file

@ -1289,3 +1289,7 @@ void TextBox::setMarkup(std::string_view lang) {
const std::string& TextBox::getMarkup() const {
return markup;
}
std::shared_ptr<Label> TextBox::getLabel() const {
return label;
}

View file

@ -255,5 +255,7 @@ namespace gui {
virtual void setMarkup(std::string_view lang);
virtual const std::string& getMarkup() const;
std::shared_ptr<Label> getLabel() const;
};
}

View file

@ -309,6 +309,9 @@ static std::shared_ptr<UINode> read_label(
std::wstring text = parse_inner_text(element, reader.getContext());
auto label = std::make_shared<Label>(reader.getGUI(), text);
read_uinode(reader, element, *label);
if (element.has("font")) {
label->setFontName(element.attr("font").getText());
}
if (element.has("text-align")) {
label->setAlign(align_from_string(
element.attr("text-align").getText(), label->getAlign()
@ -428,6 +431,12 @@ static std::shared_ptr<UINode> read_button(
element.attr("text-align").getText(), button->getTextAlign()
));
}
if (element.has("font")) {
if (auto label = button->getLabel()) {
label->setFontName(element.attr("font").getText());
button->setMustRefresh();
}
}
return button;
}
@ -489,6 +498,12 @@ static std::shared_ptr<UINode> read_select(
GUI&, const std::string& value
) { callback(value); });
}
if (element.has("font")) {
if (auto label = selectBox->getLabel()) {
label->setFontName(element.attr("font").getText());
selectBox->setMustRefresh();
}
}
read_panel_impl(reader, element, *selectBox, false);
return selectBox;
}
@ -625,6 +640,12 @@ static std::shared_ptr<UINode> read_text_box(
if (auto onDownPressed = create_runnable(reader, element, "ondown")) {
textbox->setOnDownPressed(onDownPressed);
}
if (element.has("font")) {
if (auto label = textbox->getLabel()) {
label->setFontName(element.attr("font").getText());
textbox->setMustRefresh();
}
}
return textbox;
}
@ -703,6 +724,12 @@ static std::shared_ptr<UINode> read_input_bind_box(
glm::vec4 padding = element.attr("padding", "6").asVec4();
auto bindbox =
std::make_shared<InputBindBox>(reader.getGUI(), found, padding);
if (element.has("font")) {
if (auto label = bindbox->getLabel()) {
label->setFontName(element.attr("font").getText());
bindbox->setMustRefresh();
}
}
read_panel_impl(reader, element, *bindbox);
return bindbox;
}