def addBuddy(self, handle, buddy):
     """Add a new buddy to internal structures
     
     Note: this is called in the GObject thread!
     """
     try:
         current = self._buddies.get(handle)
         if current is False:
             self.removeBuddy(handle)
             return  # we left before we got our metadata
         text = textsprite.TextSprite(
             text=buddy.props.nick,
             color=(255, 255, 255),
             size=11,
         )
         self._buddies[handle] = (buddy, text)
         for group in self.groups:
             group.add(text)
         #log.info( '''Created text for buddy: %s (%s)''', buddy.props.nick, handle )
         # send event to trigger a rendering/processing cycle...
         eventwrap.post(eventwrap.Event(
             pygame.USEREVENT,
             code=1,
         ))
         #log.debug( 'Sent user event' )
     except Exception, err:
         log.error("""Failure setting up buddy %s: %s""", buddy,
                   get_traceback(err))
 def shared_cb(*args, **kwargs):
     logging.info('shared: %s, %s', args, kwargs)
     try:
         mesh.activity_shared(self)
     except Exception, err:
         logging.error('Failure signaling activity sharing'
                       'to mesh module: %s', util.get_traceback(err))
Exemple #3
0
 def shared_cb(*args, **kwargs):
     logging.info('shared: %s, %s', args, kwargs)
     try:
         mesh.activity_shared(self)
     except Exception, err:
         logging.error('Failure signaling activity sharing'
                       'to mesh module: %s', util.get_traceback(err))
Exemple #4
0
def _get_presence_service():
    """Attempt to retrieve the presence service (check for offline condition)

    The presence service, when offline, has no preferred connection type,
    so we check that before returning the object...
    """
    log.debug("""About to import sugar3.presence.presenceservice""")
    try:
        log.debug('About to retrieve presence service instance')
        pservice = sugar3.presence.presenceservice.get_instance()
        try:
            log.debug('  Retrieved presence service instance: %s', pservice)
            name, path = pservice.get_preferred_connection()
            log.debug('  Name = %s  Path = %s', name, path)
        except (TypeError, ValueError) as err:
            log.warn(
                'Working in offline mode, cannot retrieve buddy information for %s: %s',
                handle, err)
            raise OfflineError(
                """Unable to retrieve buddy information, currently offline""")
        else:
            return pservice
    except Exception as err:
        log.error("""Failure in _get_presence_service: %s""",
                  get_traceback(err))
    def _start(self, fn):
        """The method that actually runs in the background thread"""
        log.info('Staring the mainloop')
        import olpcgames
        olpcgames.widget = olpcgames.WIDGET = self
        try:
            import sugar3.activity.activity
            import os
        except ImportError as err:
            log.info("""Running outside Sugar""")
        else:
            try:
                os.chdir(sugar3.activity.activity.get_bundle_path())
            except KeyError as err:
                pass

        try:
            try:
                try:
                    log.info('''Running mainloop: %s''', fn)
                    fn()
                except Exception as err:
                    log.error(
                        """Uncaught top-level exception: %s""",
                        util.get_traceback(err),
                    )
                    raise
                else:
                    log.info("Mainloop exited")
            finally:
                log.debug("Clearing any pending events")
                from olpcgames import eventwrap
                eventwrap.clear()
        finally:
            pass
 def shared_cb(self, *args, **kwargs):
     log.info('Shared CB: %s, %s', args, kwargs)
     try:
         mesh.activity_shared(self)
     except Exception, err:
         log.error(
             """Failure signaling activity sharing to mesh module: %s""",
             util.get_traceback(err))
Exemple #7
0
 def __call__(self):
     """Perform the actual callback in the Pygame event loop"""
     try:
         self.callable(*self.args, **self.named)
     except Exception as err:
         log.error("""Failure in callback %s( *%s, **%s ): %s\n%s""",
                   getattr(self.callable, '__name__',
                           self.callable), self.args, self.named,
                   util.get_traceback(err), self.callContext)
Exemple #8
0
 def __call__( self ):
     """Perform the actual callback in the Pygame event loop"""
     try:
         self.callable( *self.args, **self.named )
     except Exception, err:
         log.error(
             """Failure in callback %s( *%s, **%s ): %s\n%s""",
             getattr(self.callable, '__name__',self.callable), 
             self.args, self.named,
             util.get_traceback( err ),
             self.callContext
         )
Exemple #9
0
    def __init__(self, callable, args, named, callContext=None):
        """Perform callback in Pygame loop with args and named

        callContext is used to provide more information when there is
        a failure in the callback (for debugging purposes)
        """
        self.callable = callable
        self.args = args
        self.named = named
        if callContext is None:
            callContext = util.get_traceback(None)
        self.callContext = callContext
Exemple #10
0
 def __init__( self, callable, args, named, callContext=None ):
     """Perform callback in Pygame loop with args and named
     
     callContext is used to provide more information when there is 
     a failure in the callback (for debugging purposes)
     """
     self.callable = callable
     self.args = args 
     self.named = named 
     if callContext is None:
         callContext = util.get_traceback( None )
     self.callContext = callContext
 def shared_cb(*args, **kwargs):
     log.info('shared: %s, %s', args, kwargs)
     try:
         mesh.activity_shared(self)
     except Exception as err:
         log.error(
             """Failure signaling activity sharing to mesh module: %s""",
             util.get_traceback(err))
     else:
         log.info('mesh activity shared message sent, trying to grab focus')
     try:
         self._pgc.grab_focus()
     except Exception as err:
         log.warn('Focus failed: %s', err)
     else:
         log.info('asserting focus')
         assert self._pgc.is_focus(), """Did not successfully set pygame canvas focus"""
     log.info('callback finished')
Exemple #12
0
        pservice = sugar.presence.presenceservice.get_instance()
        try:
            log.debug('  Retrieved presence service instance: %s', pservice)
            name, path = pservice.get_preferred_connection()
            log.debug('  Name = %s  Path = %s', name, path)
        except (TypeError, ValueError), err:
            log.warn(
                'Working in offline mode, cannot retrieve buddy information for %s: %s',
                handle, err)
            raise OfflineError(
                """Unable to retrieve buddy information, currently offline""")
        else:
            return pservice
    except Exception, err:
        log.error("""Failure in _get_presence_service: %s""",
                  get_traceback(err))


def instance(idx=0):
    return pygametubes[idx]


class PygameTube(ExportedGObject):
    '''The object whose instance is shared across D-bus

    Call instance() to get the instance of this object for your activity service.
    Its 'tube' property contains the underlying D-bus Connection.
    '''
    def __init__(self, tube, is_initiator, tube_id):
        super(PygameTube, self).__init__(tube, DBUS_PATH)
        log.info('PygameTube init')
Exemple #13
0
            log.info( """Running outside Sugar""" )
        else:
            try:
                os.chdir(sugar.activity.activity.get_bundle_path())
            except KeyError, err:
                pass
        
        try:
            try:
                try:
                    log.info( '''Running mainloop: %s''', fn )
                    fn()
                except Exception, err:
                    log.error(
                        """Uncaught top-level exception: %s""",
                        util.get_traceback( err ),
                    )
                    raise
                else:
                    log.info( "Mainloop exited" )
            finally:
                log.debug( "Clearing any pending events" )
                from olpcgames import eventwrap
                eventwrap.clear()
        finally:
            log.info( 'Main function finished, calling main_quit' )
            gtk.main_quit()

    source_object_id = None
    def view_source(self):
        """Implement the 'view source' key by saving 
Exemple #14
0
 def __init__(self, callable, callContext=None):
     """Initialize the callback to process results"""
     self.callable = callable
     if callContext is None:
         callContext = util.get_traceback(None)
     self.callContext = callContext
Exemple #15
0
    """
    log.debug( """About to import sugar.presence.presenceservice""" )
    try:
        log.debug( 'About to retrieve presence service instance' )
        pservice = sugar.presence.presenceservice.get_instance()
        try:
            log.debug( '  Retrieved presence service instance: %s', pservice )
            name, path = pservice.get_preferred_connection()
            log.debug( '  Name = %s  Path = %s', name, path )
        except (TypeError,ValueError), err:
            log.warn('Working in offline mode, cannot retrieve buddy information for %s: %s', handle, err )
            raise OfflineError( """Unable to retrieve buddy information, currently offline""" )
        else:
            return pservice
    except Exception, err:
        log.error( """Failure in _get_presence_service: %s""", get_traceback( err ))

def instance(idx=0):
    return pygametubes[idx]


class PygameTube(ExportedGObject):
    '''The object whose instance is shared across D-bus

    Call instance() to get the instance of this object for your activity service.
    Its 'tube' property contains the underlying D-bus Connection.
    '''
    def __init__(self, tube, is_initiator, tube_id):
        super(PygameTube, self).__init__(tube, DBUS_PATH)
        log.info( 'PygameTube init' )
        self.tube = tube
Exemple #16
0
            log.info("""Running outside Sugar""")
        else:
            try:
                os.chdir(sugar.activity.activity.get_bundle_path())
            except KeyError, err:
                pass

        try:
            try:
                try:
                    log.info('''Running mainloop: %s''', fn)
                    fn()
                except Exception, err:
                    log.error(
                        """Uncaught top-level exception: %s""",
                        util.get_traceback(err),
                    )
                    raise
                else:
                    log.info("Mainloop exited")
            finally:
                log.debug("Clearing any pending events")
                from olpcgames import eventwrap
                eventwrap.clear()
        finally:
            log.info('Main function finished, calling main_quit')
            gtk.main_quit()

    source_object_id = None

    def view_source(self):
Exemple #17
0
 def __init__( self, callable, callContext = None):
     """Initialize the callback to process results"""
     self.callable = callable
     if callContext is None:
         callContext = util.get_traceback( None )
     self.callContext = callContext