mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-03 00:46:55 +02:00
Refactor combo box
This commit is contained in:
@ -20,6 +20,7 @@
|
||||
#include "../render/Graphics.h"
|
||||
#include "../render/IFont.h"
|
||||
#include "../widgets/CComponent.h"
|
||||
#include "../widgets/ComboBox.h"
|
||||
#include "../widgets/Buttons.h"
|
||||
#include "../widgets/MiscWidgets.h"
|
||||
#include "../widgets/ObjectLists.h"
|
||||
@ -52,6 +53,7 @@ InterfaceObjectConfigurable::InterfaceObjectConfigurable(int used, Point offset)
|
||||
REGISTER_BUILDER("labelGroup", &InterfaceObjectConfigurable::buildLabelGroup);
|
||||
REGISTER_BUILDER("slider", &InterfaceObjectConfigurable::buildSlider);
|
||||
REGISTER_BUILDER("layout", &InterfaceObjectConfigurable::buildLayout);
|
||||
REGISTER_BUILDER("comboBox", &InterfaceObjectConfigurable::buildComboBox);
|
||||
}
|
||||
|
||||
void InterfaceObjectConfigurable::registerBuilder(const std::string & type, BuilderFunction f)
|
||||
@ -513,6 +515,32 @@ std::shared_ptr<CFilledTexture> InterfaceObjectConfigurable::buildTexture(const
|
||||
return std::make_shared<CFilledTexture>(image, rect);
|
||||
}
|
||||
|
||||
std::shared_ptr<ComboBox> InterfaceObjectConfigurable::buildComboBox(const JsonNode & config)
|
||||
{
|
||||
logGlobal->debug("Building widget ComboBox");
|
||||
auto position = readPosition(config["position"]);
|
||||
auto image = config["image"].String();
|
||||
auto help = readHintText(config["help"]);
|
||||
auto result = std::make_shared<ComboBox>(position, image, help, config["dropDown"]);
|
||||
if(!config["items"].isNull())
|
||||
{
|
||||
for(const auto & item : config["items"].Vector())
|
||||
{
|
||||
result->addOverlay(buildWidget(item));
|
||||
}
|
||||
}
|
||||
if(!config["imageOrder"].isNull())
|
||||
{
|
||||
auto imgOrder = config["imageOrder"].Vector();
|
||||
assert(imgOrder.size() >= 4);
|
||||
result->setImageOrder(imgOrder[0].Integer(), imgOrder[1].Integer(), imgOrder[2].Integer(), imgOrder[3].Integer());
|
||||
}
|
||||
|
||||
loadButtonBorderColor(result, config["borderColor"]);
|
||||
loadButtonHotkey(result, config["hotkey"]);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// Small helper class that provides ownership for shared_ptr's of child elements
|
||||
class InterfaceLayoutWidget : public CIntObject
|
||||
{
|
||||
|
Reference in New Issue
Block a user