def set_default_app(self, app_path): """Set default email client to application at ``app_path``""" d = {'path': app_path} d['name'] = appname(app_path) d['bundleid'] = bundleid(app_path) self.wf.settings['default_app'] = d # wf.settings.save() log.debug('Set default app to : %r', d)
def get_system_default_handler(): """Return app info for system default mailto handler""" url = CFURLCreateWithString(None, 'mailto:[email protected]', None) app = {} ok, info, nsurl = LSGetApplicationForURL(url, kLSRolesAll, None, None) app['path'] = nsurl_to_path(nsurl) app['name'] = appname(app['path']) app['bundleid'] = bundleid(app['path']) log.debug('System default mailto handler : {}'.format(app)) return app
def get_email_handlers(): """Find all apps that can handle mailto URLs""" url = CFURLCreateWithString(None, 'mailto:[email protected]', None) apps = {} nsurls = LSCopyApplicationURLsForURL(url, kLSRolesAll) paths = set([nsurl_to_path(nsurl) for nsurl in nsurls]) for path in paths: app = {'path': path} app['name'] = appname(path) app['bundleid'] = bundleid(path) apps[app['bundleid']] = app log.debug('mailto handler : {} // {}'.format( app['bundleid'], app['path'])) apps = sorted(apps.values(), key=lambda d: d['name']) log.debug('{} email clients found'.format(len(apps))) return apps