AutoLayoutContainer::~AutoLayoutContainer() { std::list<Widget*>::iterator currChild(mChildren.begin()); std::list<Widget*>::iterator endChildren(mChildren.end()); for(; currChild != endChildren; ++currChild) { (*currChild)->removeWidgetListener(this); } }
void VBox::fitChildrenToAxis() { std::list<Widget*>::iterator currChild(mChildren.begin()); std::list<Widget*>::iterator endChildren(mChildren.end()); int containerWidth = getWidth() - mChildrenOffset; for(; currChild != endChildren; ++currChild) { (*currChild)->_setWidthWithoutNotifying(containerWidth); } }
bool _findChainRec(typename std::vector<tree_type>::const_iterator begin, typename std::vector<tree_type>::const_iterator end, std::vector<tree_type::ptr_type> & res){ if(begin == end) return true; if( compareNode(*begin)){ res.push_back(this); begin++; for(iterator it = beginChildren(); it != endChildren(); ++it){ if( it->_findChainRec(begin, end, res) == true){ return true; } } } return false; }
void VBox::relayoutChildren() { std::list<Widget*>::iterator currChild(mAddedOrder.begin()); std::list<Widget*>::iterator endChildren(mAddedOrder.end()); int height = 0; for(; currChild != endChildren; ++currChild) { Widget* child = (*currChild); if(child->isVisible()) { child->setPosition(mChildrenOffset, height); height += child->getHeight() + mPadding; } } }
int VBox::getVisibleChildrenHeight() const { std::list<Widget*>::const_iterator currChild(mAddedOrder.begin()); std::list<Widget*>::const_iterator endChildren(mAddedOrder.end()); int height = 0; for(; currChild != endChildren; ++currChild) { Widget *child = (*currChild); if(child->isVisible()) { height += child->getHeight(); } } return height; }
int VBox:: getMaxVisibleChildWidth() const { std::list<Widget*>::const_iterator currChild(mChildren.begin()); std::list<Widget*>::const_iterator endChildren(mChildren.end()); int max = 0; for(; currChild != endChildren; ++currChild) { Widget *child = (*currChild); if(child->isVisible()) { max = std::max(child->getWidth(), max); } } return max; }
inline bool matchTree(const BasicPtree & rtree) const{ if(compareNode(rtree) == false){ return false; } for(const_iterator it_rtree = rtree.beginChildren(); it_rtree != rtree.endChildren(); ++it_rtree){ bool found=false; for(const_iterator it = beginChildren(); it != endChildren(); ++it){ if(it->matchTree(*it_rtree) ){ found = true; break; } } if(!found){ // failed to find rtree node in main tree return false; } } std::cout << " end node " << rtree._data << std::endl; return true; }