void PopupMenu::_set_items(const Array &p_items) { ERR_FAIL_COND(p_items.size() % 10); clear(); for (int i = 0; i < p_items.size(); i += 10) { String text = p_items[i + 0]; Ref<Texture> icon = p_items[i + 1]; bool checkable = p_items[i + 2]; bool checked = p_items[i + 3]; bool disabled = p_items[i + 4]; int id = p_items[i + 5]; int accel = p_items[i + 6]; Variant meta = p_items[i + 7]; String subm = p_items[i + 8]; bool sep = p_items[i + 9]; int idx = get_item_count(); add_item(text, id); set_item_icon(idx, icon); set_item_as_checkable(idx, checkable); set_item_checked(idx, checked); set_item_disabled(idx, disabled); set_item_id(idx, id); set_item_metadata(idx, meta); set_item_as_separator(idx, sep); set_item_accelerator(idx, accel); set_item_submenu(idx, subm); } }
bool ItemListPlugin::_set(const StringName& p_name, const Variant& p_value) { String name = p_name; int idx = name.get_slice("/",0).to_int(); String what=name.get_slice("/",1); if (what=="text") set_item_text(idx,p_value); else if (what=="icon") set_item_icon(idx,p_value); else if (what=="checkable") set_item_checkable(idx,p_value); else if (what=="checked") set_item_checked(idx,p_value); else if (what=="id") set_item_id(idx,p_value); else if (what=="enabled") set_item_enabled(idx,p_value); else if (what=="separator") set_item_separator(idx,p_value); else return false; return true; }
bool ItemListPlugin::_set(const StringName &p_name, const Variant &p_value) { String name = p_name; int idx = name.get_slice("/", 0).to_int(); String what = name.get_slice("/", 1); if (what == "text") set_item_text(idx, p_value); else if (what == "icon") set_item_icon(idx, p_value); else if (what == "checkable") { // This keeps compatibility to/from versions where this property was a boolean, before radio buttons switch ((int)p_value) { case 0: case 1: set_item_checkable(idx, p_value); break; case 2: set_item_radio_checkable(idx, true); break; } } else if (what == "checked") set_item_checked(idx, p_value); else if (what == "id") set_item_id(idx, p_value); else if (what == "enabled") set_item_enabled(idx, p_value); else if (what == "separator") set_item_separator(idx, p_value); else return false; return true; }
void PopupMenu::_set_items(const Array &p_items) { ERR_FAIL_COND(p_items.size() % 10); clear(); for (int i = 0; i < p_items.size(); i += 10) { String text = p_items[i + 0]; Ref<Texture> icon = p_items[i + 1]; // For compatibility, use false/true for no/checkbox and integers for other values bool checkable = p_items[i + 2]; bool radio_checkable = (int)p_items[i + 2] == Item::CHECKABLE_TYPE_RADIO_BUTTON; bool checked = p_items[i + 3]; bool disabled = p_items[i + 4]; int id = p_items[i + 5]; int accel = p_items[i + 6]; Variant meta = p_items[i + 7]; String subm = p_items[i + 8]; bool sep = p_items[i + 9]; int idx = get_item_count(); add_item(text, id); set_item_icon(idx, icon); if (checkable) { if (radio_checkable) { set_item_as_radio_checkable(idx, true); } else { set_item_as_checkable(idx, true); } } set_item_checked(idx, checked); set_item_disabled(idx, disabled); set_item_id(idx, id); set_item_metadata(idx, meta); set_item_as_separator(idx, sep); set_item_accelerator(idx, accel); set_item_submenu(idx, subm); } }