BOOL select_next_option( dom::element& option ) { dom::element next = option.next_sibling(); if( !next.is_valid() ) goto ADD_NEW; if( !aux::streq(next.get_element_type(),"option") ) goto ADD_NEW; next.set_state(STATE_FOCUS); return TRUE; ADD_NEW: std::wstring text = option.text(); if(text.empty() || text == L" ") { ::MessageBeep(MB_ICONEXCLAMATION); return FALSE; } dom::element select = option.parent(); next = dom::element::create("option", L" "); select.insert(next,option.index()+1); select.update(); next.set_state(STATE_FOCUS); return TRUE; }
inline value_t get_option_value(const dom::element& opt ) { const wchar_t* val = opt.get_attribute("value"); if( val ) return value_t::from_string(val); return value_t(opt.text()); }
inline json::value get_option_value(const dom::element& opt ) { const wchar_t* val = opt.get_attribute("value"); if( val ) return json::value::from_string(val); return json::value(opt.text().c_str()); }