encapsulate control.lbl so setText() is required

This commit is contained in:
2024-08-12 19:42:43 -05:00
committed by Celtic Minstrel
parent c08a10867c
commit d5a536c19c
5 changed files with 11 additions and 11 deletions

View File

@@ -75,10 +75,10 @@ void cButton::draw(){
} else if(type == BTN_PUSH) {
to_rect.top += 42;
style.colour = textClr;
int w = string_length(lbl, style);
int w = string_length(getText(), style);
to_rect.inset((w - 30) / -2,0);
}
std::string label = lbl, keyDesc = getAttachedKeyDescription();
std::string label = getText(), keyDesc = getAttachedKeyDescription();
for(size_t key_pos = label.find_first_of(KEY_PLACEHOLDER); key_pos < label.size(); key_pos = label.find_first_of(KEY_PLACEHOLDER)) {
label.replace(key_pos, 1, keyDesc);
}
@@ -164,7 +164,7 @@ void cButton::validatePostParse(ticpp::Element& elem, std::string fname, const s
if(labelledButtons.count(type)) {
if(!attrs.count("color") && !attrs.count("colour") && parent->getBg() == cDialog::BG_DARK)
setColour(sf::Color::White);
if(!lbl.empty() && !attrs.count("width"))
if(!getText().empty() && !attrs.count("width"))
throw xMissingAttr(elem.Value(), "width", elem.Row(), elem.Column(), fname);
}
}

View File

@@ -603,8 +603,8 @@ cControl::storage_t cControl::store() const {
void cControl::restore(storage_t to) {
if(to.find("text") != to.end())
lbl = boost::any_cast<std::string>(to["text"]);
else lbl = "";
setText(boost::any_cast<std::string>(to["text"]));
else setText("");
if(to.find("visible") != to.end())
boost::any_cast<bool>(to["visible"]) ? show() : hide();
}

View File

@@ -435,8 +435,6 @@ protected:
/// The parent window of the control.
/// This is for use in implementing draw().
sf::RenderWindow* inWindow;
/// The control's current text.
std::string lbl;
/// Whether the control is visible
bool visible, depressed = false; ///< Whether the control is depressed; only applicable for clickable controls
/// The control's bounding rect.
@@ -457,6 +455,8 @@ protected:
void playClickSound();
private:
friend class cDialog; // TODO: This is only so it can access parseColour... hack!
/// The control's current text.
std::string lbl;
eControlType type;
std::map<eDlogEvt, boost::any> event_handlers;
// Transient values only used during parsing

View File

@@ -104,7 +104,7 @@ void cLed::draw(){
style.colour = textClr;
to_rect.right = frame.right;
to_rect.left = frame.left + 18; // Possibly could be 20
win_draw_string(*inWindow,to_rect,lbl,wrapLabel ? eTextMode::WRAP : eTextMode::LEFT_TOP,style);
win_draw_string(*inWindow,to_rect,getText(),wrapLabel ? eTextMode::WRAP : eTextMode::LEFT_TOP,style);
}
inWindow->setActive();

View File

@@ -97,7 +97,7 @@ void cTextMsg::setFixed(bool w, bool h) {
void cTextMsg::calculate_layout() {
to_rect = frame;
msg = lbl;
msg = getText();
for(const auto& key : keyRefs) {
size_t pos = msg.find_first_of(KEY_PLACEHOLDER);
if(pos == std::string::npos) break;
@@ -125,7 +125,7 @@ void cTextMsg::recalcRect() {
style.pointSize = textSize;
style.underline = underlined;
style.lineHeight = textSize + 2;
std::string test = lbl;
std::string test = getText();
size_t lines = 1, cur_line_chars = 0, max_line_chars = 0;
// Substitute | with newlines for measuring
for(auto& c : test) {
@@ -160,7 +160,7 @@ void cTextMsg::recalcRect() {
temp.create(frame.width(), frame.height());
rectangle test_rect = calc_rect;
test_rect.offset(-test_rect.left, -test_rect.top);
rects = draw_string_hilite(temp, test_rect, lbl, style, hilites, sf::Color::Black);
rects = draw_string_hilite(temp, test_rect, getText(), style, hilites, sf::Color::Black);
if(rects.empty()) return;
// Basically take the the union of the rects, and add 8 to its height or width
rectangle combo = rects.back();