void WTemplate::resolveString(const std::string& varName, const std::vector<WString>& args, std::ostream& result) { /* * FIXME: have an extra result parameter which indicates whether the * widget is view-only. Better to do that in resolveValue() and * provide a utility method that converts a widget to XHTML ? */ StringMap::const_iterator i = strings_.find(varName); if (i != strings_.end()) result << i->second; else { WWidget *w = resolveWidget(varName); if (w) { w->setParentWidget(this); if (previouslyRendered_ && previouslyRendered_->find(w) != previouslyRendered_->end()) { result << "<span id=\"" << w->id() << "\"> </span>"; } else { applyArguments(w, args); w->htmlText(result); } if (newlyRendered_) newlyRendered_->push_back(w); } else handleUnresolvedVariable(varName, args, result); } }
WWidget *WTemplate::takeWidget(const std::string& varName) { WidgetMap::iterator i = widgets_.find(varName); if (i != widgets_.end()) { WWidget *result = i->second; result->setParentWidget(0); return result; } else return 0; }
WWidget *WScrollArea::takeWidget() { WWidget *result = widget_; widget_ = 0; setWidget(0); if (result) result->setParentWidget(0); return result; }