sugar-toolkit-gtk3/tests/simulator/kiu.py

69 lines
2.0 KiB
Python
Executable File

#!/usr/bin/python
from sugar.simulator import Bot
from sugar.simulator import ShareActivityAction
from sugar.canvas.IconColor import IconColor
import os, random, gobject
class KiuBot(Bot):
def __init__(self):
Bot.__init__(self, 'kiu', IconColor('#5E4505,#0F8A0F'))
self._olpc_chat_service = None
self._web_activity_service = None
self._activity_switch_timeout = None
self._curact = None
action = ShareActivityAction('OLPC channel',
'_GroupChatActivity_Sugar_redhat_com._udp',
self.__share_olpc_chat_cb)
self.add_action(action, 10)
action = ShareActivityAction('All About Giraffes',
'_BrowserActivity_Sugar_redhat_com._udp',
self.__share_web_activity_cb)
self.add_action(action, 20)
curdir = os.path.abspath(os.path.dirname(__file__))
self._icon_file = os.path.join(curdir, 'kiu.jpg')
def __activity_switch_cb(self):
self._activity_switch_timeout = None
which = random.randint(1, 2)
if which == 1:
actid = self._olpc_chat_activity.get_id()
elif which == 2:
actid = self._web_activity.get_id()
else:
raise RuntimeError("WTF? unexpected value")
if actid != self._curact:
print "KIU: now setting current activity to %s" % actid
self._owner.set_current_activity(actid)
self._schedule_activity_switch_timeout()
self._curact = actid
return False
def _schedule_activity_switch_timeout(self):
if self._activity_switch_timeout:
return
interval = random.randint(10000, 20000)
self._activity_switch_timeout = gobject.timeout_add(interval,
self.__activity_switch_cb)
def __share_olpc_chat_cb(self, sim_activity, service):
self._olpc_chat_service = service
self._olpc_chat_activity = sim_activity
self._schedule_activity_switch_timeout()
def __share_web_activity_cb(self, sim_activity, service):
self._web_activity_service = service
self._web_activity = sim_activity
self._schedule_activity_switch_timeout()
def main():
bot = KiuBot()
bot.start()
if __name__ == "__main__":
main()