virtual void TriggerProperty(const std::string& key) { if (key == show_help_prop.get_key()) { panel_agent->request_help(); } else if (key == logo_prop.get_key()) { panel_agent->request_factory_menu(); } else if (key.substr(0, 9) == factory_prop_prefix) { panel_agent->change_factory(key.substr(9));// skip "/Factory/" } else if (key.substr(0, 8) == helper_prop_prefix) { panel_agent->start_helper(key.substr(8));// skip "/Helper/" } else { for (size_t i = 0; i < panel_props.size(); ++i) { if (key == panel_props.at(i).get_key()) { // found one std::vector<String> list_result; for (size_t j = 0; j < panel_props.size(); ++j) { if (panel_props.at(j).is_a_leaf_of(panel_props.at(i))) { list_result.push_back(Property2String(panel_props.at(j))); } } if (list_result.size() == 0) { panel_agent->trigger_property(key); } else { this->ExecMenu(list_result); } break; } } } }