void Gui::destroyWidgets(EnumeratorWidgetPtr& _widgets) { VectorWidgetPtr widgets; while (_widgets.next()) widgets.push_back(_widgets.current()); destroyWidgets(widgets); }
void CGuiCom::doSizeGUI(EnumeratorWidgetPtr widgets) { while (widgets.next()) { WP wp = widgets.current(); std::string relativeTo = wp->getUserString("RelativeTo"); if (relativeTo != "") { // position & size relative to the widget specified in "RelativeTo" property (or full screen) IntSize relSize; if (relativeTo == "Screen") relSize = IntSize(app->mWindow->getWidth(), app->mWindow->getHeight()); else { WP window = fWP(relativeTo); relSize = window->getSize(); } // retrieve original size & pos IntPoint origPos; IntSize origSize; origPos.left = s2i(wp->getUserString("origPosX")); origPos.top = s2i(wp->getUserString("origPosY")); origSize.width = s2i(wp->getUserString("origSizeX")); origSize.height = s2i(wp->getUserString("origSizeY")); // calc & apply new size & pos float sx = relSize.width / 800.f, sy = relSize.height / 600.f; wp->setPosition(IntPoint( int(origPos.left * sx), int(origPos.top * sy) )); wp->setSize(IntSize( int(origSize.width * sx), int(origSize.height * sy) )); } doSizeGUI(wp->getEnumerator()); } }
void CGuiCom::setToolTips(EnumeratorWidgetPtr widgets) { while (widgets.next()) { WP wp = widgets.current(); wp->setAlign(Align::Default); IntPoint origPos = wp->getPosition(); IntSize origSize = wp->getSize(); wp->setUserString("origPosX", toStr(origPos.left)); wp->setUserString("origPosY", toStr(origPos.top)); wp->setUserString("origSizeX", toStr(origSize.width)); wp->setUserString("origSizeY", toStr(origSize.height)); // find parent window WP p = wp->getParent(); while (p) { if (p->getTypeName() == "Window") { if (p->getUserString("NotSized").empty()) wp->setUserString("RelativeTo", p->getName()); break; } p = p->getParent(); } bool tip = wp->isUserString("tip"); if (tip) // if has tooltip string { // needed for translation wp->setUserString("tip", LanguageManager::getInstance().replaceTags(wp->getUserString("tip"))); wp->setNeedToolTip(true); wp->eventToolTip += newDelegate(this, &CGuiCom::notifyToolTip); } //LogO(wp->getName() + (tip ? " *" : "")); setToolTips(wp->getEnumerator()); } }