| 160 | |
| 161 | template <class T, typename F> |
| 162 | void doIfTypeRecursive(widget::Widget* w, F f) { |
| 163 | T* t = dynamic_cast<T*>(w); |
| 164 | if (t) |
| 165 | f(t); |
| 166 | |
| 167 | for (widget::Widget* child : w->children) { |
| 168 | doIfTypeRecursive<T>(child, f); |
| 169 | } |
| 170 | } |
| 171 | |
| 172 | std::vector<ParamWidget*> ModuleWidget::getParams() { |
| 173 | std::vector<ParamWidget*> pws; |