MCPcopy Create free account
hub / github.com/OpenMW/openmw / setEventCallbacks

Function setEventCallbacks

components/lua_ui/element.cpp:176–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174 }
175
176 void setEventCallbacks(WidgetExtension* ext, const sol::object& eventsObj)
177 {
178 ext->clearCallbacks();
179 if (eventsObj == sol::nil)
180 return;
181 if (!eventsObj.is<sol::table>())
182 throw std::logic_error("The \"events\" layout field must be a table of callbacks");
183 auto events = eventsObj.as<sol::table>();
184 events.for_each([ext](const sol::object& name, const sol::object& callback) {
185 if (name.is<std::string>() && LuaUtil::Callback::isLuaCallback(callback))
186 ext->setCallback(name.as<std::string>(), LuaUtil::Callback::fromLua(callback));
187 else if (!name.is<std::string>())
188 Log(Debug::Warning) << "UI event key must be a string";
189 else
190 Log(Debug::Warning) << "UI event handler for key \"" << name.as<std::string>()
191 << "\" must be an openmw.async.callback";
192 });
193 }
194
195 WidgetExtension* createWidget(const sol::table& layout, bool isRoot, uint64_t depth)
196 {

Callers 1

updateWidgetFunction · 0.85

Calls 4

LogClass · 0.85
clearCallbacksMethod · 0.80
setCallbackMethod · 0.80
for_eachMethod · 0.45

Tested by

no test coverage detected