41 lines
1.6 KiB
Python
41 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)
|