42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
|
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
||
|
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||
|
from otp.web.SettingsMgrBase import SettingsMgrBase
|
||
|
|
||
|
class SettingsMgr(DistributedObjectGlobal, SettingsMgrBase):
|
||
|
notify = directNotify.newCategory('SettingsMgr')
|
||
|
|
||
|
def announceGenerate(self):
|
||
|
DistributedObjectGlobal.announceGenerate(self)
|
||
|
SettingsMgrBase.announceGenerate(self)
|
||
|
if not self.cr.isLive():
|
||
|
self._sracs = None
|
||
|
if self.cr.isConnected():
|
||
|
self._scheduleChangedSettingRequest()
|
||
|
self._crConnectEvent = self.cr.getConnectedEvent()
|
||
|
self.accept(self._crConnectEvent, self._handleConnected)
|
||
|
return
|
||
|
|
||
|
def _handleConnected(self):
|
||
|
self._scheduleChangedSettingRequest()
|
||
|
|
||
|
def _scheduleChangedSettingRequest(self):
|
||
|
if self._sracs:
|
||
|
self._sracs.destroy()
|
||
|
self._sracs = FrameDelayedCall('requestAllChangedSettings', self.sendRequestAllChangedSettings)
|
||
|
|
||
|
def delete(self):
|
||
|
self.ignore(self._crConnectEvent)
|
||
|
if self._sracs:
|
||
|
self._sracs.destroy()
|
||
|
SettingsMgrBase.delete(self)
|
||
|
DistributedObjectGlobal.delete(self)
|
||
|
|
||
|
def sendRequestAllChangedSettings(self):
|
||
|
self.sendUpdate('requestAllChangedSettings', [])
|
||
|
|
||
|
def settingChange(self, settingName, valueStr):
|
||
|
if valueStr == self._getCurrentValueRepr(settingName):
|
||
|
return
|
||
|
self.notify.info('got setting change: %s -> %s' % (settingName, valueStr))
|
||
|
self._changeSetting(settingName, valueStr)
|