20 void ROOT::Experimental::RMenuItems::PopulateObjectMenu(
void *obj, TClass *cl)
25 cl->GetMenuItems(&lst);
30 while ((m = (TMethod *)iter()) !=
nullptr) {
32 if (m->IsMenuItem() == kMenuToggle) {
34 if (m->Getter() && strlen(m->Getter()) > 0) {
36 }
else if (strncmp(m->GetName(),
"Set", 3) == 0) {
37 getter = TString(m->GetName())(3, strlen(m->GetName()) - 3);
38 if (cl->GetMethodAllAny(TString(
"Has") + getter))
39 getter = TString(
"Has") + getter;
40 else if (cl->GetMethodAllAny(TString(
"Get") + getter))
41 getter = TString(
"Get") + getter;
42 else if (cl->GetMethodAllAny(TString(
"Is") + getter))
43 getter = TString(
"Is") + getter;
48 if ((getter.Length() > 0) && cl->GetMethodAllAny(getter)) {
51 auto call = std::make_unique<TMethodCall>(cl, getter,
"");
53 if (call->ReturnType() == TMethodCall::kLong) {
55 call->Execute(obj, l);
57 AddChkMenuItem(m->GetName(), m->GetTitle(), l != 0, Form(
"%s(%s)", m->GetName(), (l != 0) ?
"0" :
"1"));
64 TList *args = m->GetListOfMethodArgs();
66 if (!args || (args->GetSize() == 0)) {
67 AddMenuItem(m->GetName(), m->GetTitle(), Form(
"%s()", m->GetName()));
69 auto item = std::make_unique<Detail::RArgsMenuItem>(m->GetName(), m->GetTitle());
70 item->SetExec(Form(
"%s()", m->GetName()));
72 TIter args_iter(args);
73 TMethodArg *arg =
nullptr;
75 while ((arg = dynamic_cast<TMethodArg *>(args_iter())) !=
nullptr) {
76 Detail::RMenuArgument menu_arg(arg->GetName(), arg->GetTitle(), arg->GetFullTypeName());
77 if (arg->GetDefault()) menu_arg.SetDefault(arg->GetDefault());
78 item->AddArg(menu_arg);