/************************************************************************* Create a new window of the specified type *************************************************************************/ Window* WindowManager::createWindow(const String& type, const String& name) { String finalName(name.empty() ? generateUniqueWindowName() : name); if (isWindowPresent(finalName)) { throw AlreadyExistsException("WindowManager::createWindow - A Window object with the name '" + finalName +"' already exists within the system."); } WindowFactoryManager& wfMgr = WindowFactoryManager::getSingleton(); WindowFactory* factory = wfMgr.getFactory(type); Window* newWindow = factory->createWindow(finalName); Logger::getSingleton().logEvent("Window '" + finalName +"' of type '" + type + "' has been created.", Informative); // see if we need to assign a look to this window if (wfMgr.isFalagardMappedType(type)) { // this was a mapped type, so assign a look to the window so it can finalise // its initialisation newWindow->setLookNFeel(type, wfMgr.getMappedLookForType(type)); } // perform initialisation step newWindow->initialise(); d_windowRegistry[finalName] = newWindow; return newWindow; }
/************************************************************************* Create a new window of the specified type *************************************************************************/ Window* WindowManager::createWindow(const String& type, const String& name) { // only allow creation of Window objects if we are in unlocked state if (isLocked()) CEGUI_THROW(InvalidRequestException( "WindowManager is in the locked state.")); String finalName(name.empty() ? generateUniqueWindowName() : name); WindowFactoryManager& wfMgr = WindowFactoryManager::getSingleton(); WindowFactory* factory = wfMgr.getFactory(type); Window* newWindow = factory->createWindow(finalName); char addr_buff[32]; sprintf(addr_buff, "(%p)", static_cast<void*>(newWindow)); Logger::getSingleton().logEvent("Window '" + finalName +"' of type '" + type + "' has been created. " + addr_buff, Informative); // see if we need to assign a look to this window if (wfMgr.isFalagardMappedType(type)) { const WindowFactoryManager::FalagardWindowMapping& fwm = wfMgr.getFalagardMappingForType(type); // this was a mapped type, so assign a look to the window so it can finalise // its initialisation newWindow->d_falagardType = type; newWindow->setWindowRenderer(fwm.d_rendererType); newWindow->setLookNFeel(fwm.d_lookName); initialiseRenderEffect(newWindow, fwm.d_effectName); } d_windowRegistry.push_back(newWindow); // fire event to notify interested parites about the new window. WindowEventArgs args(newWindow); fireEvent(EventWindowCreated, args, EventNamespace); return newWindow; }