[SOLVED] I just retrieved from the gui and it worked correctly. Thank you.
Here is the code, I posted it all for clarity. So the "red" slider starts off just a tad past zero. But the others start at zero. I checked for calls of setValue and it's only called on the sliders. I have 3 comments // Red, // Green, // Blue for where I initialize the Sliders. Thanks
The reason I wanted to call a function manually is that when I change the radio button to "background" or "text color" the color doesn't update unless I click each individual slider again. Which was why I was curious of what update does. I guess I was just being lazy and didn't want to call the same color change inside the radio.onCheck() again. But it works when I do that, I was just hoping I could call the functions of the sliders to accomplish for me. Thanks
Here is the code, I posted it all for clarity. So the "red" slider starts off just a tad past zero. But the others start at zero. I checked for calls of setValue and it's only called on the sliders. I have 3 comments // Red, // Green, // Blue for where I initialize the Sliders. Thanks
Code (cpp) Select
tgui::Theme theme{ "themes/Black.txt" };
gui.add(tgui::Picture::create("RedBackground.jpg"));
auto r = 0.f, g = 0.f, b = 0.f;
auto r2 = 0.f, g2 = 0.f, b2 = 0.f;
auto menu = tgui::MenuBar::create();
menu->setRenderer(theme.getRenderer("MenuBar"));
menu->setSize(static_cast<float>(window.getSize().x), 22.f);
menu->addMenu("File");
menu->addMenuItem("Load");
menu->addMenuItem("Save");
menu->addMenuItem("Exit");
menu->addMenu("Edit");
menu->addMenuItem("Copy");
menu->addMenuItem("Paste");
menu->addMenu("Help");
menu->addMenuItem("About");
menu->connectMenuItem("File", "Exit", [&]() {window.close(); });
gui.add(menu, "menu");
auto child = tgui::ChildWindow::create();
child->setRenderer(theme.getRenderer("ChildWindow"));
child->setSize(250, 120);
child->setPosition(420, 80);
child->setTitle("Child window");
gui.add(child, "child");
auto label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText("Hi! I'm a child window.");
label->setPosition(30, 30);
label->setTextSize(15);
child->add(label, "child_label");
auto editBox = tgui::EditBox::create();
editBox->setRenderer(theme.getRenderer("EditBox"));
editBox->setSize(200, 25);
editBox->setTextSize(18);
editBox->setPosition(10, 270);
editBox->setDefaultText("Click to edit text...");
editBox->onReturnKeyPress( [&]() {
gui.get("child")->setVisible(true);
auto lbl = gui.get<tgui::ChildWindow>("child")->get<tgui::Label>("child_label");
lbl->setText(gui.get<tgui::EditBox>("editbox")->getText());
});
gui.add(editBox, "editbox");
auto button = tgui::Button::create();
button->setRenderer(theme.getRenderer("Button"));
button->setPosition("editbox.left + editbox.width + 5", "editbox.top");
button->setText("Show Popup");
button->setSize(100, 30);
button->onPress( [&]() {
gui.get<tgui::ChildWindow>("child")->setVisible(
!gui.get<tgui::ChildWindow>("child")->isVisible());
if (gui.get<tgui::ChildWindow>("child")->isVisible())
gui.get<tgui::Button>("toggleChildButton")->setText("Hide Child");
else
gui.get<tgui::Button>("toggleChildButton")->setText("Show Child");
});
gui.add(button, "toggleChildButton");
[b]// Red
auto slider = tgui::Slider::create();
slider->setRenderer(theme.getRenderer("Slider"));
slider->setPosition(55, 360);
slider->setSize(200, 18);
slider->setValue(150);
slider->setMaximum(255);
slider->setMinimum(0);
slider->setStep(1);
slider->getRenderer()->setThumbWithinTrack(true);
slider->onValueChange( [&]() {[/b]
const auto checkBG = gui.get<tgui::RadioButton>("rBGColor");
const auto checkTC = gui.get<tgui::RadioButton>("rTextColor");
if (checkBG->isChecked())
{
r = gui.get<tgui::Slider>("red")->getValue();
child->getRenderer()->setBackgroundColor({ static_cast<sf::Uint8>(r), static_cast<sf::Uint8>(g), static_cast<sf::Uint8>(b) });
gui.get<tgui::Label>("red_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("red").get()->getValue())));
}
else if (checkTC->isChecked()) {
r2 = gui.get<tgui::Slider>("red")->getValue();
auto lb = gui.get<tgui::ChildWindow>("child")->get<tgui::Label>("child_label");
lb->getRenderer()->setTextColor({ static_cast<sf::Uint8>(r2), static_cast<sf::Uint8>(g2), static_cast<sf::Uint8>(b2) });
gui.get<tgui::Label>("red_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("red").get()->getValue())));
}
});
gui.add(slider, "red");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText("Red");
label->setPosition("red.left - width - 10", "red.top");
label->setTextSize(14);
gui.add(label, "red_label");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText(std::to_string(r));
label->setPosition("red.left + red.width + 10", "red.top");
label->setTextSize(14);
gui.add(label, "red_value");
[b]// Green
slider = tgui::Slider::create();
slider->setRenderer(theme.getRenderer("Slider"));
slider->setPosition("red.left", "red.top + 35");
slider->setSize(200, 18);
slider->setValue(150);
slider->setMaximum(255);
slider->setMinimum(0);
slider->setStep(1);
slider->onValueChange([&]() {[/b]
auto checkBG = gui.get<tgui::RadioButton>("rBGColor");
auto checkTC = gui.get<tgui::RadioButton>("rTextColor");
if (checkBG->isChecked())
{
g = gui.get<tgui::Slider>("green")->getValue();
child->getRenderer()->setBackgroundColor({ static_cast<sf::Uint8>(r), static_cast<sf::Uint8>(g), static_cast<sf::Uint8>(b) });
gui.get<tgui::Label>("green_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("green").get()->getValue())));
}
else if (checkTC->isChecked()) {
g2 = gui.get<tgui::Slider>("green")->getValue();
auto lb = gui.get<tgui::ChildWindow>("child")->get<tgui::Label>("child_label");
lb->getRenderer()->setTextColor({ static_cast<sf::Uint8>(r2), static_cast<sf::Uint8>(g2), static_cast<sf::Uint8>(b2) });
gui.get<tgui::Label>("green_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("green").get()->getValue())));
}
});
gui.add(slider, "green");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText(std::to_string(g));
label->setPosition("green.left + green.width + 10", "green.top");
label->setTextSize(14);
gui.add(label, "green_value");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText("Green");
label->setPosition("green.left - width - 10", "green.top");
label->setTextSize(14);
gui.add(label, "green_label");
[b]// Blue
slider = tgui::Slider::create();
slider->setRenderer(theme.getRenderer("Slider"));
slider->setPosition("green.left", "green.top + 35");
slider->setSize(200, 18);
slider->setValue(150);
slider->setMaximum(255);
slider->setMinimum(0);
slider->setStep(1);
slider->onValueChange([&]() {[/b]
auto checkBG = gui.get<tgui::RadioButton>("rBGColor");
auto checkTC = gui.get<tgui::RadioButton>("rTextColor");
if (checkBG->isChecked())
{
b = gui.get<tgui::Slider>("blue")->getValue();
child->getRenderer()->setBackgroundColor({ static_cast<sf::Uint8>(r), static_cast<sf::Uint8>(g), static_cast<sf::Uint8>(b) });
gui.get<tgui::Label>("blue_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("blue").get()->getValue())));
}
else if (checkTC->isChecked()) {
b2 = gui.get<tgui::Slider>("blue")->getValue();
auto lb = gui.get<tgui::ChildWindow>("child")->get<tgui::Label>("child_label");
lb->getRenderer()->setTextColor({ static_cast<sf::Uint8>(r2), static_cast<sf::Uint8>(g2), static_cast<sf::Uint8>(b2) });
gui.get<tgui::Label>("blue_value")->setText(std::to_string(static_cast<int>(gui.get<tgui::Slider>("blue").get()->getValue())));
}
});
gui.add(slider, "blue");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText("Blue");
label->setPosition("blue.left - width - 10", "blue.top");
label->setTextSize(14);
gui.add(label, "blue_label");
label = tgui::Label::create();
label->setRenderer(theme.getRenderer("Label"));
label->setText(std::to_string(b));
label->setPosition("blue.left + blue.width + 10", "blue.top");
label->setTextSize(14);
gui.add(label, "blue_value");
auto radioButton = tgui::RadioButton::create();
radioButton->setRenderer(theme.getRenderer("RadioButton"));
radioButton->setPosition(20, 140);
radioButton->setText("Background Color");
radioButton->setSize(25, 25);
gui.add(radioButton, "rBGColor");
radioButton = tgui::RadioButton::create();
radioButton->setRenderer(theme.getRenderer("RadioButton"));
radioButton->setPosition(20, "rBGColor.top - 27");
radioButton->setText("Text Color");
radioButton->setSize(25, 25);
gui.add(radioButton, "rTextColor");
The reason I wanted to call a function manually is that when I change the radio button to "background" or "text color" the color doesn't update unless I click each individual slider again. Which was why I was curious of what update does. I guess I was just being lazy and didn't want to call the same color change inside the radio.onCheck() again. But it works when I do that, I was just hoping I could call the functions of the sliders to accomplish for me. Thanks