Example #1
0
 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;
             }
         }
     }
 }