virtual Ihandle *create_() { L("HBox create_"); std::vector<Ihandle*> handles; handles.reserve(widgets_.size()+1); for (auto w: widgets_) handles.push_back(*w); handles.push_back(0); return IupHboxv(handles.data()); }
Ihandle* IupCreatev(const char *name, void **params) { Iclass *ic = NULL; char lower[30]; int size = 0; assert(name); if(name == NULL) return NULL; size = (int)strlen(name); size++; assert(size < 30 && size > 0); /* invalid name */ if(size > 30 || size <= 0) return NULL; while(size--) lower[size] = (char)tolower(name[size]); if(iupStrEqual(lower, "dialog")) return IupDialog(params? params[0] : NULL); else if(iupStrEqual(lower, "canvas")) return IupCanvas(NULL); else if(iupStrEqual(lower, "button")) return IupButton(NULL, NULL); else if(iupStrEqual(lower, "toggle")) return IupToggle(NULL, NULL); else if(iupStrEqual(lower, "label")) return IupLabel(NULL); else if(iupStrEqual(lower, "frame")) return IupFrame(NULL); else if(iupStrEqual(lower, "list")) return IupList(NULL); else if(iupStrEqual(lower, "multiline")) return IupMultiLine(NULL); else if(iupStrEqual(lower, "text")) return IupText(NULL); else if(iupStrEqual(lower, "user")) return IupUser(); else if(iupStrEqual(lower, "fill")) return IupFill(); else if(iupStrEqual(lower, "separator")) return IupSeparator(); else if(iupStrEqual(lower, "item")) return IupItem(NULL, NULL); else if(iupStrEqual(lower, "hbox")) return IupHboxv((Ihandle**)params); else if(iupStrEqual(lower, "zbox")) return IupZboxv((Ihandle**)params); else if(iupStrEqual(lower, "vbox")) return IupVboxv((Ihandle**)params); else if(iupStrEqual(lower, "menu")) return IupMenuv((Ihandle**)params); else if(iupStrEqual(lower, "radio")) return IupRadio(params[0]); else if(iupStrEqual(lower, "submenu")) return IupSubmenu(NULL, params? params[0] : NULL); /* Not accepted: image color IupGetFile IupListDialog IupMessage IupScanf IupAlarm */ ic = iupCpiGetClass(lower); return iupCpiCreate(ic, params); }