本文整理汇总了Python中gui.game_control.links.URLMarcos类的典型用法代码示例。如果您正苦于以下问题:Python URLMarcos类的具体用法?Python URLMarcos怎么用?Python URLMarcos使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了URLMarcos类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: InternalLinksHandler
class InternalLinksHandler(Controller):
def __init__(self, proxy):
super(InternalLinksHandler, self).__init__(proxy)
self.__urlMarcos = None
self._browserID = None
return
def init(self):
self.__urlMarcos = URLMarcos()
addListener = g_eventBus.addListener
for eventType, handlerName in _LISTENERS.iteritems():
handler = getattr(self, handlerName, None)
if not handler:
LOG_ERROR('Handler is not found', eventType, handlerName)
continue
if not callable(handler):
LOG_ERROR('Handler is invalid', eventType, handlerName, handler)
continue
addListener(eventType, handler)
return
def fini(self):
if self.__urlMarcos is not None:
self.__urlMarcos.clear()
self.__urlMarcos = None
self._browserID = None
removeListener = g_eventBus.removeListener
for eventType, handlerName in _LISTENERS.iteritems():
handler = getattr(self, handlerName, None)
if handler:
removeListener(eventType, handler)
super(InternalLinksHandler, self).fini()
return
@async
@process
def getURL(self, name, callback):
urlSettings = GUI_SETTINGS.lookup(name)
if urlSettings:
url = yield self.__urlMarcos.parse(str(urlSettings))
else:
url = yield lambda callback: callback('')
callback(url)
@process
def __openInternalBrowse(self, urlName, title = '', browserSize = None, showActionBtn = True, showCloseBtn = False):
parsedUrl = yield self.getURL(urlName)
if parsedUrl:
self._browserID = yield self._proxy.getController(gc_constants.CONTROLLER.BROWSER).load(parsedUrl, browserID=self._browserID, title=title, browserSize=browserSize, showActionBtn=showActionBtn, showCloseBtn=showCloseBtn)
def _handleClubHelp(self, event):
self.__openInternalBrowse(event.eventType, event.title, browserSize=gc_constants.BROWSER.CLUB_SIZE)
def _handleVideoHelp(self, event):
self.__openInternalBrowse(event.eventType, event.title, browserSize=gc_constants.BROWSER.VIDEO_SIZE, showActionBtn=False, showCloseBtn=True)
示例2: __init__
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
示例3: __init__
def __init__(self, proxy):
super(PromoController, self).__init__(proxy)
self.__currentVersionPromoUrl = None
self.__currentVersionBrowserID = None
self.__currentVersionBrowserShown = False
self.__promoShown = set()
self.__availablePromo = set()
self.__urlMacros = URLMarcos()
self._isPromoShown = False
示例4: init
def init(self):
self.__urlMarcos = URLMarcos()
addListener = g_eventBus.addListener
for eventType, handlerName in _LISTENERS.iteritems():
handler = getattr(self, handlerName, None)
if not handler:
LOG_ERROR('Handler is not found', eventType, handlerName)
continue
if not callable(handler):
LOG_ERROR('Handler is invalid', eventType, handlerName, handler)
continue
addListener(eventType, handler)
示例5: __init__
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
self.__pendingBrowsers = {}
self.__creatingBrowserID = None
self.__filters = _getGlobalFilters()
return
示例6: __init__
def __init__(self, proxy):
super(EncyclopediaController, self).__init__(proxy)
self.__activated = False
self.__recommendations = []
self.__eventManager = Event.EventManager()
self.__urlMacros = URLMarcos()
self.__isLobbyStarted = False
self.__hasNewRecommendations = False
if GUI_SETTINGS.lookup('encyclopedia'):
self.__baseUrl = GUI_SETTINGS.encyclopedia['url']
self.__isSuitableLanguage = GUI_SETTINGS.encyclopedia['enabled']
else:
self.__baseUrl = None
self.__isSuitableLanguage = False
self.onNewRecommendationReceived = Event.Event(self.__eventManager)
self.onStateChanged = Event.Event(self.__eventManager)
self.__isStateSynced = False
return
示例7: BrowserController
class BrowserController(Controller):
_BROWSER_TEXTURE = 'BrowserBg'
_ALT_BROWSER_TEXTURE = 'AltBrowserBg'
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
def fini(self):
self.__eventMgr.clear()
self.__eventMgr = None
self.__urlMacros.clear()
self.__urlMacros = None
self.__browserIDGenerator = None
super(BrowserController, self).fini()
return
def onAvatarBecomePlayer(self):
self.__stop()
def onDisconnected(self):
self.__stop()
@async
@process
def load(self, url = None, title = None, showActionBtn = True, showWaiting = True, browserID = None, isAsync = False, browserSize = None, isDefault = True, callback = None, showCloseBtn = False):
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
if browserID is None:
browserID = self.__browserIDGenerator.next()
if browserID not in self.__browsers:
texture = self._BROWSER_TEXTURE if isDefault else self._ALT_BROWSER_TEXTURE
app = g_appLoader.getApp()
if not app:
raise AssertionError('Application can not be None')
self.__browsers[browserID] = WebBrowser(browserID, app, texture, size, url)
self.onBrowserAdded(browserID)
ctx = {'url': url,
'title': title,
'showActionBtn': showActionBtn,
'showWaiting': showWaiting,
'browserID': browserID,
'size': size,
'isDefault': isDefault,
'isAsync': isAsync,
'showCloseBtn': showCloseBtn}
def browserCallback(*args):
self.__clearCallback(browserID)
self.__showBrowser(browserID, ctx)
def browserAsyncCallback(url, isLoaded):
self.__clearCallback(browserID)
if isLoaded:
self.__showBrowser(browserID, ctx)
else:
LOG_WARNING('Browser async request url was not loaded!', url)
self.__browsersCallbacks[browserID] = isAsync and (None, browserCallback)
self.__browsers[browserID].onLoadEnd += browserAsyncCallback
else:
self.__browsersCallbacks[browserID] = (browserCallback, None)
self.__browsers[browserID].onLoadStart += browserCallback
callback(browserID)
return
def getBrowser(self, browserID):
return self.__browsers.get(browserID)
def delBrowser(self, browserID):
if browserID in self.__browsers:
browser = self.__browsers.pop(browserID)
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
browser.destroy()
self.onBrowserDeleted(browserID)
return
def __stop(self):
while self.__browsers:
browserID, browser = self.__browsers.popitem()
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
browser.destroy()
#.........这里部分代码省略.........
示例8: BrowserController
class BrowserController(Controller):
_BROWSER_TEXTURE = 'BrowserBg'
_ALT_BROWSER_TEXTURE = 'AltBrowserBg'
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
self.__pendingBrowsers = {}
self.__creatingBrowserID = None
self.__filters = _getGlobalFilters()
return
def fini(self):
self.__filters = None
self.__eventMgr.clear()
self.__eventMgr = None
self.__urlMacros.clear()
self.__urlMacros = None
self.__browserIDGenerator = None
super(BrowserController, self).fini()
return
def onAvatarBecomePlayer(self):
self.__stop()
def onDisconnected(self):
self.__stop()
def addFilterHandler(self, handler):
""" Adds given @handler to the browser urls filter chain. Calls
it if there is a @tag in url onto opened browser page.
Handler should receive url and list of client-specific tags,
return bool as flag that routine have to stop
"""
self.__filters.add(handler)
def removeFilterHandler(self, handler):
""" Remove given @handler from filtering chain. Handler description
can be seen in addFilterhandler method doc-string
"""
self.__filters.discard(handler)
@async
@process
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):
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}
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():
self.__pendingBrowsers[browserID] = ctx
else:
self.__createBrowser(ctx)
elif browserID in self.__pendingBrowsers:
self.__pendingBrowsers[browserID] = ctx
elif browserID in self.__browsers:
self.__browsers[browserID].navigate(url)
callback(browserID)
return
def getBrowser(self, browserID):
return self.__browsers.get(browserID)
def delBrowser(self, browserID):
if browserID in self.__browsers:
browser = self.__browsers.pop(browserID)
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
#.........这里部分代码省略.........
示例9: ExternalLinksHandler
class ExternalLinksHandler(Controller):
def __init__(self, proxy):
super(ExternalLinksHandler, self).__init__(proxy)
self.__urlMarcos = None
return
def init(self):
self.__urlMarcos = URLMarcos()
addListener = g_eventBus.addListener
for eventType, handlerName in _LISTENERS.iteritems():
handler = getattr(self, handlerName, None)
if not handler:
LOG_ERROR('Handler is not found', eventType, handlerName)
continue
if not callable(handler):
LOG_ERROR('Handler is invalid', eventType, handlerName, handler)
continue
addListener(eventType, handler)
return
def fini(self):
if self.__urlMarcos is not None:
self.__urlMarcos.clear()
self.__urlMarcos = None
removeListener = g_eventBus.removeListener
for eventType, handlerName in _LISTENERS.iteritems():
handler = getattr(self, handlerName, None)
if handler:
removeListener(eventType, handler)
super(ExternalLinksHandler, self).fini()
return
def open(self, url):
if not url:
LOG_ERROR('URL is empty', url)
return
try:
BigWorld.wg_openWebBrowser(url)
except Exception:
LOG_ERROR('There is error while opening web browser at page:', url)
LOG_CURRENT_EXCEPTION()
@async
@process
def getURL(self, name, callback):
urlSettings = GUI_SETTINGS.lookup(name)
if urlSettings:
url = yield self.__urlMarcos.parse(str(urlSettings))
else:
url = yield lambda callback: callback('')
callback(url)
def _handleSpecifiedURL(self, event):
self.open(event.url)
@process
def __openParsedUrl(self, urlName):
parsedUrl = yield self.getURL(urlName)
self.open(parsedUrl)
def _handleOpenRegistrationURL(self, _):
self.__openParsedUrl('registrationURL')
def _handleOpenRecoveryPasswordURL(self, _):
self.__openParsedUrl('recoveryPswdURL')
def _handleOpenPaymentURL(self, _):
self.__openParsedUrl('paymentURL')
def _handleSecuritySettingsURL(self, _):
self.__openParsedUrl('securitySettingsURL')
def _handleSupportURL(self, _):
self.__openParsedUrl('supportURL')
def _handleMigrationURL(self):
self.__openParsedUrl('migrationURL')
def _handleFortDescription(self, _):
self.__openParsedUrl('fortDescription')
def _handleClanSearch(self, _):
self.__openParsedUrl('clanSearch')
def _handleClanCreate(self, _):
self.__openParsedUrl('clanCreate')
def _handleClubSettings(self, _):
self.__openParsedUrl('clubSettings')
def _handleInvitesManagementURL(self, _):
self.__openParsedUrl('invitesManagementURL')
def _handleGmSummaryURL(self, _):
self.__openParsedUrl('globalMapSummary')
def _handleGmPromoSummaryURL(self, _):
#.........这里部分代码省略.........
示例10: PromoController
class PromoController(Controller):
PROMO_AUTO_VIEWS_TEST_VALUE = 5
def __init__(self, proxy):
super(PromoController, self).__init__(proxy)
self.__currentVersionPromoUrl = None
self.__currentVersionBrowserID = None
self.__currentVersionBrowserShown = False
self.__promoShown = set()
self.__availablePromo = set()
self.__urlMacros = URLMarcos()
self._isPromoShown = False
return
def fini(self):
self._stop()
self.__urlMacros.clear()
self.__urlMacros = None
super(PromoController, self).fini()
return
def onLobbyInited(self, event):
self._updatePromo(self._getPromoEventNotifications())
self._getEventsFotificationController().onEventNotificationsChanged += self.__onEventNotification
self._getBrowserController().onBrowserDeleted += self.__onBrowserDeleted
self._processPromo(self._getEventNotifications())
def onAvatarBecomePlayer(self):
self._stop()
def onDisconnected(self):
self._stop()
self._isPromoShown = False
@process
def showPatchPromo(self, isAsync = False):
self.__currentVersionBrowserID = yield self.__showPromoBrowser(self.__currentVersionPromoUrl, i18n.makeString(MENU.PROMO_PATCH_TITLE, version=getClientVersion()), browserID=self.__currentVersionBrowserID, isAsync=isAsync)
def isPatchPromoAvailable(self):
return self.__currentVersionPromoUrl is not None
def _stop(self):
self.__currentVersionPromoUrl = None
self.__currentVersionBrowserID = None
self.__currentVersionBrowserShown = False
self._getBrowserController().onBrowserDeleted -= self.__onBrowserDeleted
self._getEventsFotificationController().onEventNotificationsChanged -= self.__onEventNotification
return
@process
def _processPromo(self, promo):
yield lambda callback: callback(True)
if self.isPatchPromoAvailable() and self.__currentVersionPromoUrl not in self.__promoShown and self.isPromoAutoViewsEnabled() and not self._isPromoShown:
LOG_DEBUG('Showing patchnote promo:', self.__currentVersionPromoUrl)
self.__promoShown.add(self.__currentVersionPromoUrl)
self.__savePromoShown()
self.__currentVersionBrowserShown = True
self._isPromoShown = True
self.showPatchPromo(isAsync=True)
return
actionsPromo = [ item for item in promo if item.eventType.startswith(gc_constants.PROMO.TEMPLATE.ACTION) ]
for actionPromo in actionsPromo:
promoUrl = yield self.__urlMacros.parse(actionPromo.data)
promoTitle = actionPromo.text
if promoUrl not in self.__promoShown and not self._isPromoShown:
LOG_DEBUG('Showing action promo:', promoUrl)
self.__promoShown.add(promoUrl)
self.__savePromoShown()
self._isPromoShown = True
yield self.__showPromoBrowser(promoUrl, promoTitle)
return
@process
def _updatePromo(self, promosData):
yield lambda callback: callback(True)
for item in filter(lambda item: item.eventType in (gc_constants.PROMO.TEMPLATE.PATCH, gc_constants.PROMO.TEMPLATE.ACTION), promosData):
promoUrl = yield self.__urlMacros.parse(item.data)
self.__availablePromo.add(promoUrl)
if item.eventType == gc_constants.PROMO.TEMPLATE.PATCH and self.__currentVersionPromoUrl is None:
self.__currentVersionPromoUrl = promoUrl
promoShownSource = AccountSettings.getFilter(PROMO)
self.__promoShown = {url for url in promoShownSource if url in self.__availablePromo}
self.__savePromoShown()
return
def _getEventNotifications(self):
return self._proxy.getController(gc_constants.CONTROLLER.EVENTS_NOTIFICATION).getEventsNotifications()
def _getPromoEventNotifications(self):
filterFunc = lambda item: item.eventType in (gc_constants.PROMO.TEMPLATE.PATCH, gc_constants.PROMO.TEMPLATE.ACTION)
return self._getEventsFotificationController().getEventsNotifications(filterFunc)
def _getBrowserController(self):
return self._proxy.getController(gc_constants.CONTROLLER.BROWSER)
def _getEventsFotificationController(self):
return self._proxy.getController(gc_constants.CONTROLLER.EVENTS_NOTIFICATION)
def __savePromoShown(self):
#.........这里部分代码省略.........
示例11: __init__
def __init__(self):
super(RssNewsFeed, self).__init__()
self.__requestCbID = None
self.__feed = []
self.__urlMacros = URLMarcos()
return
示例12: RssNewsFeed
class RssNewsFeed(RssNewsFeedMeta):
UPDATE_INTERVAL = 60
DESCRIPTION_MAX_LENGTH = 250
DESCRIPTION_TAIL = '...'
DESCRIPTION_CUT_LENGTH = DESCRIPTION_MAX_LENGTH - len(DESCRIPTION_TAIL)
SHOW_NEWS_COUNT = 3
def __init__(self):
super(RssNewsFeed, self).__init__()
self.__requestCbID = None
self.__feed = []
self.__urlMacros = URLMarcos()
return
def getFeed(self):
return self.__feed
def openBrowser(self, linkToOpen):
if linkToOpen:
openBrowser = game_control.g_instance.links.open
if GUI_SETTINGS.loginRssFeed.internalBrowser:
browser = game_control.g_instance.browser
if browser is not None:
openBrowser = browser.load
else:
LOG_ERROR('Attempting to open internal browser, but browseris not exist. External browser will be opened', str(linkToOpen))
LOG_DEBUG('Open browser', linkToOpen)
openBrowser(linkToOpen)
return
def _populate(self):
super(RssNewsFeed, self)._populate()
self.__updateCallback()
def _dispose(self):
self.__urlMacros.clear()
self.__urlMacros = None
self.__feed = []
self.__clearCallback()
super(RssNewsFeed, self)._dispose()
return
@process
def __requestFeed(self):
yield lambda callback: callback(True)
if GUI_SETTINGS.loginRssFeed.show:
requestUrl = yield self.__getRssUrl()
from helpers.RSSDownloader import g_downloader as g_rss
if g_rss is not None:
g_rss.download(self.__onRssFeedReceived, url=requestUrl)
LOG_DEBUG('Requesting login RSS news', requestUrl)
return
def __onRssFeedReceived(self, data):
if self.isDisposed():
return
else:
self.__feed = []
for entry in reversed(data.get('entries', [])):
data = self.__prepareData(entry)
if data is not None:
self.__feed.append(data)
LOG_DEBUG('RSS feed received, entries count', len(self.__feed))
self.as_updateFeedS(self.__feed[:self.SHOW_NEWS_COUNT])
return
def __clearCallback(self):
if self.__requestCbID is not None:
BigWorld.cancelCallback(self.__requestCbID)
self.__requestCbID = None
return
def __updateCallback(self):
self.__requestFeed()
self.__clearCallback()
self.__requestCbID = BigWorld.callback(self.UPDATE_INTERVAL, self.__updateCallback)
@async
@process
def __getRssUrl(self, callback):
if constants.IS_CHINA:
callback('http://wot.kongzhong.com/erji/login_ticker.xml')
url = yield self.__urlMacros.parse(str(GUI_SETTINGS.loginRssFeed.url))
callback(url)
def __prepareData(self, entryData):
description = entryData.get('description')
if description is not None:
try:
section = ResMgr.DataSection()
section.createSectionFromString(encodeUtf8(description))
_, section = findFirst(lambda (name, _): name == 'div', section.items())
description, _ = unicode_from_utf8(section.asString)
if len(description) > self.DESCRIPTION_MAX_LENGTH:
description = description[:self.DESCRIPTION_CUT_LENGTH] + self.DESCRIPTION_TAIL
except Exception:
LOG_ERROR('Invalid RSS entry description', entryData, description)
LOG_CURRENT_EXCEPTION()
return
#.........这里部分代码省略.........
示例13: EncyclopediaController
class EncyclopediaController(Controller):
"""
Manages queue of encyclopedia recommendations and activation state of encyclopedia feature
"""
def __init__(self, proxy):
super(EncyclopediaController, self).__init__(proxy)
self.__activated = False
self.__recommendations = []
self.__eventManager = Event.EventManager()
self.__urlMacros = URLMarcos()
self.__isLobbyStarted = False
self.__hasNewRecommendations = False
if GUI_SETTINGS.lookup('encyclopedia'):
self.__baseUrl = GUI_SETTINGS.encyclopedia['url']
self.__isSuitableLanguage = GUI_SETTINGS.encyclopedia['enabled']
else:
self.__baseUrl = None
self.__isSuitableLanguage = False
self.onNewRecommendationReceived = Event.Event(self.__eventManager)
self.onStateChanged = Event.Event(self.__eventManager)
self.__isStateSynced = False
return
def onAccountBecomePlayer(self):
g_settingsCache.onSyncCompleted += self.__updateRecommendations
def onConnected(self):
if GUI_SETTINGS.lookup('encyclopedia'):
self.__baseUrl = GUI_SETTINGS.encyclopedia['url']
self.__isSuitableLanguage = GUI_SETTINGS.encyclopedia['enabled']
def onLobbyStarted(self, _):
self.__isLobbyStarted = True
self.__updateRecommendations()
self.__updateActivationState()
def onAvatarBecomePlayer(self):
self.__isLobbyStarted = False
g_settingsCache.onSyncCompleted -= self.__updateRecommendations
def onDisconnected(self):
self.__isStateSynced = False
def fini(self):
self.__eventManager.clear()
super(EncyclopediaController, self).fini()
def isActivated(self):
return self.__activated
def hasNewRecommendations(self):
return self.__hasNewRecommendations
def getRecommendations(self):
return self.__recommendations
def addEncyclopediaRecommendation(self, recId):
if not self.__isLobbyStarted:
return
recId = int(recId)
if 0 <= recId > _MAX_RECOMMENDATION_ID:
LOG_ERROR('Recommendation ID is out of range', recId)
return
if self.__recommendations and self.__recommendations[0] == recId:
return
if recId in self.__recommendations:
self.__recommendations.remove(recId)
self.__recommendations.insert(0, recId)
self.__recommendations = self.__recommendations[:_RECOMMENDATIONS_COUNT]
_setEncyclopediaRecommendationsSections(self.__recommendations)
g_settingsCore.serverSettings.setHasNewEncyclopediaRecommendations()
self.onNewRecommendationReceived()
if self.isActivated():
pushI18nMessage(SYSTEM_MESSAGES.PRMP_NOTIFICATION_NEWENCYCLOPEDIARECOMMENDATION, priority=NotificationPriorityLevel.MEDIUM)
def moveEncyclopediaRecommendationToEnd(self, recId):
recId = int(recId)
if recId in self.__recommendations:
self.__recommendations.remove(recId)
self.__recommendations.append(recId)
_setEncyclopediaRecommendationsSections(self.__recommendations)
def resetHasNew(self):
self.__hasNewRecommendations = False
g_settingsCore.serverSettings.setHasNewEncyclopediaRecommendations(False)
@async
@process
def buildUrl(self, callback):
if self.__baseUrl is None:
LOG_ERROR('Requesting URL for encyclopedia when base URL is not specified')
yield lambda clb: clb(False)
else:
queryParams = {'id': self.getRecommendations()}
url = yield self.__urlMacros.parse(self.__baseUrl)
callback(addParamsToUrlQuery(url, queryParams))
return
def __updateRecommendations(self):
#.........这里部分代码省略.........
示例14: BrowserController
class BrowserController(Controller):
_BROWSER_TEXTURE = "BrowserBg"
_ALT_BROWSER_TEXTURE = "AltBrowserBg"
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
def fini(self):
self.__eventMgr.clear()
self.__eventMgr = None
self.__urlMacros.clear()
self.__urlMacros = None
self.__browserIDGenerator = None
super(BrowserController, self).fini()
return
def onAvatarBecomePlayer(self):
self.__stop()
def onDisconnected(self):
self.__stop()
@async
@process
def load(
self,
url=None,
title=None,
showActionBtn=True,
showWaiting=True,
browserID=None,
isAsync=False,
browserSize=None,
background=None,
isDefault=True,
callback=None,
showCloseBtn=False,
):
url = 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
background = background or BROWSER.BACKGROUND
if browserID is None:
browserID = self.__browserIDGenerator.next()
if browserID not in self.__browsers:
texture = self._BROWSER_TEXTURE if isDefault else self._ALT_BROWSER_TEXTURE
app = g_appLoader.getApp()
if not app:
raise AssertionError("Application can not be None")
self.__browsers[browserID] = WebBrowser(browserID, app, texture, size, url, backgroundUrl=background)
self.onBrowserAdded(browserID)
ctx = {
"url": url,
"title": title,
"showActionBtn": showActionBtn,
"showWaiting": showWaiting,
"browserID": browserID,
"size": size,
"isDefault": isDefault,
"isAsync": isAsync,
"showCloseBtn": showCloseBtn,
}
def browserCallback(*args):
self.__clearCallback(browserID)
self.__showBrowser(browserID, ctx)
self.__browsersCallbacks[browserID] = isAsync and (None, browserCallback)
self.__browsers[browserID].onLoadEnd += browserCallback
else:
self.__browsersCallbacks[browserID] = (browserCallback, None)
self.__browsers[browserID].onLoadStart += browserCallback
callback(browserID)
return
def getBrowser(self, browserID):
return self.__browsers.get(browserID)
def delBrowser(self, browserID):
if browserID in self.__browsers:
browser = self.__browsers.pop(browserID)
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
browser.destroy()
self.onBrowserDeleted(browserID)
return
#.........这里部分代码省略.........
示例15: BrowserController
class BrowserController(Controller, AppRef):
_BROWSER_TEXTURE = 'BrowserBg'
_ALT_BROWSER_TEXTURE = 'AltBrowserBg'
def __init__(self, proxy):
super(BrowserController, self).__init__(proxy)
self.__browsers = {}
self.__browsersCallbacks = {}
self.__browserIDGenerator = SequenceIDGenerator()
self.__eventMgr = Event.EventManager()
self.onBrowserAdded = Event.Event(self.__eventMgr)
self.onBrowserDeleted = Event.Event(self.__eventMgr)
self.__urlMacros = URLMarcos()
def fini(self):
self.__eventMgr.clear()
self.__eventMgr = None
self.__urlMacros.clear()
self.__urlMacros = None
self.__browserIDGenerator = None
super(BrowserController, self).fini()
return
def onBattleStarted(self):
self.__stop()
def onDisconnected(self):
self.__stop()
@async
@process
def load(self, url = None, title = None, showActionBtn = True, showWaiting = True, browserID = None, isAsync = False, browserSize = None, background = None, isDefault = True, callback = None):
url = 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
background = background or BROWSER.BACKGROUND
if browserID not in self.__browsers:
browserID = self.__browserIDGenerator.next()
texture = self._BROWSER_TEXTURE if isDefault else self._ALT_BROWSER_TEXTURE
self.__browsers[browserID] = WebBrowser(browserID, self.app, texture, size, url, backgroundUrl=background)
self.onBrowserAdded(browserID)
ctx = {'url': url,
'title': title,
'showActionBtn': showActionBtn,
'showWaiting': showWaiting,
'browserID': browserID,
'size': size,
'isDefault': isDefault,
'isAsync': isAsync}
def browserCallback(*args):
self.__clearCallback(browserID)
self.__showBrowser(browserID, ctx)
if isAsync:
self.__browsersCallbacks[browserID] = (None, browserCallback)
self.__browsers[browserID].onLoadEnd += browserCallback
else:
self.__browsersCallbacks[browserID] = (browserCallback, None)
self.__browsers[browserID].onLoadStart += browserCallback
callback(browserID)
return
def getBrowser(self, browserID):
return self.__browsers.get(browserID)
def delBrowser(self, browserID):
if browserID in self.__browsers:
browser = self.__browsers.pop(browserID)
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
browser.destroy()
self.onBrowserDeleted(browserID)
return
def __stop(self):
while self.__browsers:
browserID, browser = self.__browsers.popitem()
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
browser.onLoadStart -= loadStart
if loadEnd is not None:
browser.onLoadEnd -= loadEnd
browser.destroy()
return
def __clearCallback(self, browserID):
if browserID in self.__browsersCallbacks:
loadStart, loadEnd = self.__browsersCallbacks.pop(browserID, (None, None))
if loadStart is not None:
self.__browsers[browserID].onLoadStart -= loadStart
if loadEnd is not None:
self.__browsers[browserID].onLoadEnd -= loadEnd
#.........这里部分代码省略.........