int main(int argc, char **argv) { if (argc < 2) { std::cerr << "Syntax: cpp_introspection_test <filename or path> [<message type>]" << std::endl; exit(1); } load(argv[1]); if (packages().empty()) return 1; if (argc < 3) { PackagePtr package = packages().back(); std::cout << "Introspecting package " << package->getName() << "..." << std::endl; for(Package::const_iterator it = package->begin(); it != package->end(); ++it) { MessagePtr message = *it; std::cout << std::endl << "Creating an instance of " << message->getName() << "..." << std::endl; VoidPtr instance = message->createInstance(); MessagePtr introspected = message->introspect(instance.get()); print_introspection(introspected); std::cout << std::endl << "...and expanded ..." << std::endl; print_introspection(expand(introspected)); } } else { std::cout << std::endl << "Introspecting " << argv[2] << ":" << std::endl; MessagePtr introspected = messageByDataType(argv[2]); if (!introspected) { std::cout << "I am sorry, I don't know that message type." << std::endl; } else { V_string fields, types; introspected->getFields(fields, true); introspected->getTypes(types, true); assert(fields.size() == types.size()); for(size_t i = 0; i < fields.size(); ++i) { std::cout << " " << types[i] << "\t" << fields[i] << std::endl; } } } exit(0); }
bool CheckBox::handleUI(Event::Type type, const UIEvent& event, const VoidPtr& sender) { OUZEL_UNUSED(event); if (!enabled) return true; if (sender.get() == this) { if (type == Event::Type::UI_ENTER_NODE) { pointerOver = true; updateSprite(); } else if (type == Event::Type::UI_LEAVE_NODE) { pointerOver = false; updateSprite(); } else if (type == Event::Type::UI_PRESS_NODE) { pressed = true; updateSprite(); } else if (type == Event::Type::UI_RELEASE_NODE) { if (pressed) { pressed = false; updateSprite(); } } else if (type == Event::Type::UI_CLICK_NODE) { pressed = false; checked = !checked; updateSprite(); Event event; event.sender = shared_from_this(); event.type = Event::Type::UI_WIDGET_CHANGE; sharedEngine->getEventDispatcher()->dispatchEvent(event); } } return true; }
bool Button::handleUI(Event::Type type, const UIEvent& event, const VoidPtr& sender) { OUZEL_UNUSED(event); if (!enabled) return true; if (sender.get() == this) { if (type == Event::Type::UI_ENTER_NODE) { pointerOver = true; updateSprite(); } else if (type == Event::Type::UI_LEAVE_NODE) { pointerOver = false; updateSprite(); } else if (type == Event::Type::UI_PRESS_NODE) { pressed = true; updateSprite(); } else if (type == Event::Type::UI_RELEASE_NODE) { if (pressed) { pressed = false; updateSprite(); } } else if (type == Event::Type::UI_CLICK_NODE) { if (pressed) { pressed = false; updateSprite(); } } } return true; }