void Object::attachRenderer(const RendererPtr &pRend) { if (pRend->getClientObjID()!=qlib::invalid_uid) { // Error !! object is already attached to another object!! LOG_DPRINTLN("ERROR !! Renderer already attached"); LString msg = LString::format("Renderer already attached %s", pRend->getName().c_str()); MB_THROW(qlib::RuntimeException, msg); return; } MB_DPRINTLN("attachRenderer clientObjID=%d", (int)pRend->getClientObjID()); if (!registerRendererImpl(pRend)) { // Error !! cannot register renderer. LOG_DPRINTLN("ERROR !! cannot register renderer"); LString msg = LString::format("Cannot register renderer %s", pRend->getName().c_str()); MB_THROW(qlib::RuntimeException, msg); return; } // update stylesheet settings pRend->reapplyStyle(); }
RendererPtr Object::createRenderer(const LString &type_name) { RendererFactory *pRF = RendererFactory::getInstance(); RendererPtr pRend = pRF->create(type_name); if (!registerRendererImpl(pRend)) { // error !! cannot register renderer. LOG_DPRINTLN("ERROR !! cannot register renderer"); LString msg = LString::format("Cannot register renderer %s", type_name.c_str()); MB_THROW(qlib::RuntimeException, msg); return RendererPtr(); } MB_DPRINTLN("createRenderer clientObjID=%d OK", (int)pRend->getClientObjID()); return pRend; }