bool StdGridLayoutImpl2::hasItem(int row, int col) const { WLayoutItem *item = grid_.items_[row][col].item_; if (item) { WWidget *w = item->widget(); return !w || !w->isHidden(); } else return false; }
void WBorderLayout::iterateWidgets(const HandleWidgetMethod& method) const { for (unsigned r = 0; r < grid_.rows_.size(); ++r) { for (unsigned c = 0; c < grid_.columns_.size(); ++c) { WLayoutItem *item = grid_.items_[r][c].item_.get(); if (item) item->iterateWidgets(method); } } }
bool WBoxLayout::setStretchFactor(WLayout *layout, int stretch) { for (int i = 0; i < count(); ++i) { WLayoutItem *item = itemAt(i); if (item && item->layout() == layout) { setStretchFactor(i, stretch); return true; } } return false; }
WWidgetItem *WLayout::findWidgetItem(WWidget *widget) { int c = count(); for (int i = 0; i < c; ++i) { WLayoutItem *item = itemAt(i); if (item) { WWidgetItem *result = item->findWidgetItem(widget); if (result) return result; } } return 0; }
void WLayout::setParentWidget(WWidget *parent) { if (!this->parent()) setParent(parent); assert(!impl_); int c = count(); for (int i = 0; i < c; ++i) { WLayoutItem *item = itemAt(i); if (item) item->setParentWidget(parent); } impl_ = parent->createLayoutItemImpl(this); if (hints_) { for (unsigned i = 0; i < hints_->size(); ++i) impl_->setHint((*hints_)[i].name, (*hints_)[i].value); delete hints_; hints_ = 0; } }
void StdGridLayoutImpl2::updateDom(DomElement& parent) { WApplication *app = WApplication::instance(); if (needConfigUpdate_) { needConfigUpdate_ = false; DomElement *div = DomElement::getForUpdate(this, DomElement_DIV); for (unsigned i = 0; i < addedItems_.size(); ++i) { WLayoutItem *item = addedItems_[i]; DomElement *c = createElement(item, app); div->addChild(c); } addedItems_.clear(); for (unsigned i = 0; i < removedItems_.size(); ++i) parent.callJavaScript(WT_CLASS ".remove('" + removedItems_[i] + "');", true); removedItems_.clear(); parent.addChild(div); WStringStream js; js << app->javaScriptClass() << ".layouts2.updateConfig('" << id() << "',"; streamConfig(js, app); js << ");"; app->doJavaScript(js.str()); } if (needRemeasure_) { needRemeasure_ = false; WStringStream js; js << app->javaScriptClass() << ".layouts2.setDirty('" << id() << "');"; app->doJavaScript(js.str()); } if (needAdjust_) { needAdjust_ = false; WStringStream js; js << app->javaScriptClass() << ".layouts2.adjust('" << id() << "', ["; bool first = true; const unsigned colCount = grid_.columns_.size(); const unsigned rowCount = grid_.rows_.size(); for (unsigned row = 0; row < rowCount; ++row) for (unsigned col = 0; col < colCount; ++col) if (grid_.items_[row][col].update_) { grid_.items_[row][col].update_ = false; if (!first) js << ","; first = false; js << "[" << (int)row << "," << (int)col << "]"; } js << "]);"; app->doJavaScript(js.str()); } const unsigned colCount = grid_.columns_.size(); const unsigned rowCount = grid_.rows_.size(); for (unsigned i = 0; i < rowCount; ++i) { for (unsigned j = 0; j < colCount; ++j) { WLayoutItem *item = grid_.items_[i][j].item_; if (item) { WLayout *nested = item->layout(); if (nested) (dynamic_cast<StdLayoutImpl *>(nested->impl()))->updateDom(parent); } } } }