void PanelView::updateView() { // вычисл¤ем максимальную высоту всего добра int height = 0; for (VectorPanel::iterator iter=mItems.begin(); iter!=mItems.end(); ++iter) { MyGUI::WidgetPtr widget = (*iter)->getPanelCell()->mainWidget(); if (widget->isShow()) { height += widget->getHeight(); } } // ставим высоту холста, и спрашиваем получившуюс¤ ширину клиента mScrollView->setCanvasSize(0, height); // ширина клиента могла помен¤тс¤ MyGUI::IntCoord coord = mScrollView->getClientCoord(); mScrollView->setCanvasSize(coord.width, height); // выравниваем все панели int pos = 0; for (VectorPanel::iterator iter=mItems.begin(); iter!=mItems.end(); ++iter) { MyGUI::WidgetPtr widget = (*iter)->getPanelCell()->mainWidget(); if (widget->isShow()) { height = widget->getHeight(); widget->setPosition(MyGUI::IntCoord(0, pos, coord.width, height)); pos += height; } } mNeedUpdate = false; MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &PanelView::frameEntered); }
bool GUIMessageLayout::Load() { bool res = GUILayout::Load(); MyGUI::ButtonPtr button; MyGUI::Gui *gui = GUISystem::GetInstance()->GetGui(); button = gui->findWidget<MyGUI::Button>("MessageButtonOK"); button->eventMouseButtonClick = MyGUI::newDelegate(this, &GUIMessageLayout::mousePressed); MyGUI::WidgetPtr widget = Widgets.front(); widget->setPosition(gui->getViewWidth()/2-widget->getWidth()/2,gui->getViewHeight()/2-widget->getHeight()/2); return res; }
void InfoBoxDialog::layoutVertically(MyGUI::WidgetPtr widget, int margin) { size_t count = widget->getChildCount(); int pos = 0; pos += margin; int width = 0; for (unsigned i = 0; i < count; ++i) { MyGUI::WidgetPtr child = widget->getChildAt(i); if (!child->getVisible()) continue; child->setPosition(child->getLeft(), pos); width = std::max(width, child->getWidth()); pos += child->getHeight() + margin; } width += margin*2; widget->setSize(width, pos); }