Exemplo n.º 1
0
 def __showBrowser(self, browserID, ctx):
     LOG_BROWSER('CTRL: Showing a browser: ', browserID, ctx['url'])
     if ctx.get('showWindow'):
         alias = ctx['alias']
         g_eventBus.handleEvent(
             LoadViewEvent(alias, getViewName(alias, browserID), ctx=ctx),
             EVENT_BUS_SCOPE.LOBBY)
     showBrowserCallback = ctx.get('showBrowserCallback')
     if showBrowserCallback:
         showBrowserCallback()
Exemplo n.º 2
0
 def createNextBrowser():
     LOG_BROWSER('CTRL: Triggering create of next browser from: ',
                 browserID)
     BigWorld.cancelCallback(timeoutid)
     creation = self.__browserCreationCallbacks.pop(browserID, None)
     if creation is not None:
         self.__browsers[
             browserID].onCanCreateNewBrowser -= creation
     BigWorld.callback(1.0, self.__tryCreateNextPendingBrowser)
     return
Exemplo n.º 3
0
 def successfulCreationCallback(url, isLoaded, httpStatusCode=None):
     LOG_BROWSER('CTRL: Ready to show: ', browserID, isLoaded, url)
     self.__clearCallbacks(browserID, self.__browsers[browserID],
                           False)
     if isLoaded:
         self.__showBrowser(browserID, ctx)
     else:
         LOG_WARNING('Browser request url was not loaded!', url)
     g_eventBus.handleEvent(
         BrowserEvent(BrowserEvent.BROWSER_CREATED, ctx=ctx))
     self.__createDone(ctx)
Exemplo n.º 4
0
 def delBrowser(self, browserID):
     if browserID in self.__browsers:
         LOG_BROWSER('CTRL: Deleting a browser: ', browserID)
         browser = self.__browsers.pop(browserID)
         self.__clearCallbacks(browserID, browser, True)
         browser.destroy()
         if self.__creatingBrowserID == browserID:
             self.__creatingBrowserID = None
             self.__tryCreateNextPendingBrowser()
         if browserID in self.__pendingBrowsers:
             del self.__pendingBrowsers[browserID]
     self.onBrowserDeleted(browserID)
     return
Exemplo n.º 5
0
 def load(self,
          url=None,
          title=None,
          showActionBtn=True,
          showWaiting=True,
          browserID=None,
          isAsync=False,
          browserSize=None,
          isDefault=True,
          callback=None,
          showCloseBtn=False,
          useBrowserWindow=True,
          isModal=False,
          showCreateWaiting=False,
          handlers=None,
          showBrowserCallback=None,
          isSolidBorder=False):
     if constants.IS_BOOTCAMP_ENABLED:
         from bootcamp.Bootcamp import g_bootcamp
         if g_bootcamp.isRunning():
             return
     if showCreateWaiting:
         Waiting.show('browser/init')
     url = yield self.__urlMacros.parse(url or GUI_SETTINGS.browser.url)
     suffix = yield self.__urlMacros.parse(GUI_SETTINGS.browser.params)
     concatenator = '&' if '?' in url else '?'
     if suffix not in url:
         url = concatenator.join([url, suffix])
     size = browserSize or BROWSER.SIZE
     webBrowserID = browserID
     if browserID is None:
         browserID = self.__browserIDGenerator.next()
         webBrowserID = browserID
     elif type(browserID) is not int:
         webBrowserID = self.__browserIDGenerator.next()
     ctx = {
         'url': url,
         'title': title,
         'showActionBtn': showActionBtn,
         'showWaiting': showWaiting,
         'browserID': browserID,
         'size': size,
         'isAsync': isAsync,
         'showCloseBtn': showCloseBtn,
         'showWindow': useBrowserWindow,
         'alias': VIEW_ALIAS.BROWSER_WINDOW_MODAL
         if isModal else VIEW_ALIAS.BROWSER_WINDOW,
         'showCreateWaiting': showCreateWaiting,
         'handlers': handlers,
         'showBrowserCallback': showBrowserCallback,
         'isSolidBorder': isSolidBorder
     }
     texture = browserID not in self.__browsers and browserID not in self.__pendingBrowsers and self._BROWSER_TEXTURE
     app = g_appLoader.getApp()
     if not app:
         raise AssertionError('Application can not be None')
         browser = WebBrowser(webBrowserID,
                              app,
                              texture,
                              size,
                              url,
                              handlers=self.__filters)
         self.__browsers[browserID] = browser
         if self.__isCreatingBrowser():
             LOG_BROWSER('CTRL: Queueing a browser creation: ', browserID,
                         url)
             self.__pendingBrowsers[browserID] = ctx
         else:
             self.__createBrowser(ctx)
     elif browserID in self.__pendingBrowsers:
         LOG_BROWSER('CTRL: Re-queuing a browser creation, overriding: ',
                     browserID, url)
         self.__pendingBrowsers[browserID] = ctx
     elif browserID in self.__browsers:
         LOG_BROWSER('CTRL: Re-navigating an existing browser: ', browserID,
                     url)
         browser = self.__browsers[browserID]
         browser.navigate(url)
         browser.changeTitle(title)
     callback(browserID)
     return
Exemplo n.º 6
0
 def failedCreationCallback(url):
     LOG_BROWSER('CTRL: Failed a creation: ', browserID, url)
     self.__clearCallbacks(browserID, self.__browsers[browserID],
                           False)
     self.delBrowser(browserID)
Exemplo n.º 7
0
 def createBrowserTimeout():
     LOG_BROWSER('CTRL: Browser create timed out')
     createNextBrowser()
Exemplo n.º 8
0
    def __createBrowser(self, ctx):
        browserID = ctx['browserID']
        LOG_BROWSER('CTRL: Creating a browser: ', browserID, ctx['url'])
        self.__creatingBrowserID = browserID
        if not self.__browsers[browserID].create():
            LOG_BROWSER('CTRL: Failed the create step: ', browserID)
            self.delBrowser(browserID)
            self.__tryCreateNextPendingBrowser()
            return
        else:
            self.onBrowserAdded(browserID)

            def createBrowserTimeout():
                LOG_BROWSER('CTRL: Browser create timed out')
                createNextBrowser()

            timeoutid = BigWorld.callback(30.0, createBrowserTimeout)

            def createNextBrowser():
                LOG_BROWSER('CTRL: Triggering create of next browser from: ',
                            browserID)
                BigWorld.cancelCallback(timeoutid)
                creation = self.__browserCreationCallbacks.pop(browserID, None)
                if creation is not None:
                    self.__browsers[
                        browserID].onCanCreateNewBrowser -= creation
                BigWorld.callback(1.0, self.__tryCreateNextPendingBrowser)
                return

            def failedCreationCallback(url):
                LOG_BROWSER('CTRL: Failed a creation: ', browserID, url)
                self.__clearCallbacks(browserID, self.__browsers[browserID],
                                      False)
                self.delBrowser(browserID)

            def successfulCreationCallback(url, isLoaded, httpStatusCode=None):
                LOG_BROWSER('CTRL: Ready to show: ', browserID, isLoaded, url)
                self.__clearCallbacks(browserID, self.__browsers[browserID],
                                      False)
                if isLoaded:
                    self.__showBrowser(browserID, ctx)
                else:
                    LOG_WARNING('Browser request url was not loaded!', url)
                g_eventBus.handleEvent(
                    BrowserEvent(BrowserEvent.BROWSER_CREATED, ctx=ctx))
                self.__createDone(ctx)

            self.__browsers[
                browserID].onCanCreateNewBrowser += createNextBrowser
            self.__browserCreationCallbacks[browserID] = createNextBrowser
            self.__browsers[
                browserID].onFailedCreation += failedCreationCallback
            if ctx['isAsync']:
                self.__browsersCallbacks[browserID] = (
                    None, successfulCreationCallback, failedCreationCallback)
                self.__browsers[
                    browserID].onLoadEnd += successfulCreationCallback
            else:
                self.__browsersCallbacks[browserID] = (
                    successfulCreationCallback, None, failedCreationCallback)
                self.__browsers[
                    browserID].onReady += successfulCreationCallback
            return
Exemplo n.º 9
0
 def __createDone(self, ctx):
     LOG_BROWSER('CTRL: Finished creating a browser: ',
                 self.__creatingBrowserID)
     if ctx['showCreateWaiting']:
         Waiting.hide('browser/init')