app.replace("#fiddle", str(img), event['client']) msg = 'SWEET!!!' for i in range(8): app.set_text("h2", msg[:i], event['client']) await asyncio.sleep(1) async def clicked(event): logging.info("CLICKED!") async def buttonclicked(event): if ('id' in event['event_object']['target']): logging.info("BUTTON " + event['event_object']['target']['id'] + " CLICKED!") else: logging.info("BUTTON " + event['event_object']['target']['innerText'] + " CLICKED!") app.unregister('click', buttonclicked, selector='#' + event['event_object']['target']['id'], client=event['client']) logging.basicConfig(format="%(asctime)s [%(levelname)s] - %(funcName)s: %(message)s", level=logging.INFO) app = Sofi(singleclient=True) app.register('init', oninit) app.register('load', onload) # app.start() app.start()
}) app.dispatch({ "command": "unity.subscribe", "name": "keyboard", "data": "up,left,down,right,space,backspace,return,enter" }) async def onkeyboard(event): global current_slide print(event) if event['key'] in ['space', 'return', 'enter', 'right', 'down']: current_slide = min(current_slide + 1, len(ordered_slides) - 1) elif event['key'] in ['up', 'left', 'backspace']: current_slide = max(current_slide - 1, 0) displayslide() app = Sofi() app.register('init', oninit) app.register('unity.keyboard', onkeyboard) stream = tweepy.Stream(auth=twitter.auth, listener=TwitterListener()) stream.filter(track=["python"], async=True) app.start(desktop=False)
# Tue Jun 07 23:05:55 +0000 2016 dateformat = "%a %b %d %H:%M:%S %z %Y" @asyncio.coroutine def main(event): print("MAIN") v = View() c = Container() tweets = api.home_timeline() for tweet in tweets: p = Panel(heading=True, style="max-height:150px;min-height:150px;") p.setheading(tweet.user.screen_name + "<div class='pull-right'>" + tweet.created_at.strftime("%b %d %Y %H:%M:%S") + "</div>") p.addelement(Paragraph(tweet.text)) col = Column('md', 4) col.addelement(p) c.addelement(col) v.addelement(c) app.load(str(v)) app = Sofi() app.register('init', main) app.start()
class App(object): def __init__(self, **kwargs): self.vidhub = kwargs.get('vidhub') self.app = Sofi() self.app.loaded = False self.app_registered = False self.app.register('init', self.oninit) self.app.register('load', self.onload) self.app.register('close', self.onclose) config.bind(vidhubs=self.on_config_vidhubs) def start(self): self.app.start() def on_config_vidhubs(self, instance, value, **kwargs): if not self.app.loaded: return need_refresh = False for device_id, vidhub in value.items(): if device_id in self.device_dropdown_items: continue dritem = DropdownItem( str(vidhub.device_name), cl='device-select', attrs={'data-device-id': str(device_id)}, ) self.device_dropdown_items[device_id] = dritem self.device_dropdown.addelement(dritem) vidhub.bind(device_name=self.on_vidhub_device_name) need_refresh = True if need_refresh: self.app.replace( '#{}'.format(self.device_dropdown.ident), ''.join([str(dr) for dr in self.device_dropdown._children]), ) if self.app_registered: self.app.unregister('click', self.on_device_select_click, selector='.device-select') self.app.register('click', self.on_device_select_click, selector='.device-select') def on_vidhub_device_name(self, instance, value, **kwargs): dritem = self.device_dropdown_items[instance.device_id] selector = ".device-select[data-device-id={}]".format( instance.device_id) self.app.replace(selector, '<a href="#">{}</a>'.format(value)) async def oninit(self, e): v = self.view = View() nav = Navbar(brand='Vidhub Control') dr = self.device_dropdown = Dropdown('Select Device', ident='device_dropdown') self.device_dropdown_items = {} dr.addelement( DropdownItem('None', cl='device-select', attrs={'data-device-id': 'NONE'})) for device_id, vidhub in config.vidhubs.items(): dritem = DropdownItem( str(vidhub.device_name), cl='device-select', attrs={'data-device-id': str(device_id)}, ) self.device_dropdown_items[device_id] = dritem vidhub.bind(device_name=self.on_vidhub_device_name) dr.addelement(dritem) nav.adddropdown(dr) v.addelement(nav) self.vidhub_view = VidHubView(vidhub=self.vidhub, app=self.app) v.addelement(self.vidhub_view.widget) self.app.load(str(v)) self.app.loaded = True async def onload(self, e): self.app.register('click', self.on_device_select_click, selector='.device-select') self.app.register('click', self.on_click, selector='button') self.app_registered = True async def on_device_select_click(self, e): self.app.unregister('click', self.on_click, selector='button') device_id = e['event_object']['currentTarget']['data-device-id'] if device_id == 'NONE': self.vidhub = None self.vidhub_view.vidhub = None return if device_id not in config.vidhubs: for key in config.vidhubs.keys(): if str(key) == device_id: device_id = key break self.vidhub = config.vidhubs[device_id].backend await self.vidhub.connect() logger.info('switching to vidhub {!r}'.format(self.vidhub)) self.vidhub_view.vidhub = self.vidhub self.app.register('click', self.on_click, selector='button') async def on_click(self, e): await self.vidhub_view.on_click(e) async def onclose(self, *args): await config.stop()
# Setup the debug and application queues as properties of the trace_lines functions trace_lines.debugq = debugq trace_lines.applicationq = applicationq # Enable debugging by setting the callback sys.settrace(trace_calls) # Execute the function we want to debug with its parameters fn(*args) if __name__ == '__main__': # Create a sofi-based application app = Sofi() # Register the initialization handler that will send the base HTML to the browser app.register('init', main) # Register a load event that will kick off our debugger app.register('load', load) # Initialize the debug and application queues for passing messages debugq = multiprocessing.Queue() applicationq = multiprocessing.Queue() # Create the debug process debugprocess = multiprocessing.Process(target=debug, args=(applicationq, debugq, sample, (2, 3))) # Start the application UI event server app.start()
app.replace("#fiddle", str(img), event['client']) msg = 'SWEET!!!' for i in range(8): app.text("h2", msg[:i], event['client']) await asyncio.sleep(1) async def clicked(event): logging.info("CLICKED!") async def buttonclicked(event): if ('id' in event['event_object']['target']): logging.info("BUTTON " + event['event_object']['target']['id'] + " CLICKED!") else: logging.info("BUTTON " + event['event_object']['target']['innerText'] + " CLICKED!") app.unregister('click', buttonclicked, selector='#' + event['event_object']['target']['id'], client=event['client']) logging.basicConfig(format="%(asctime)s [%(levelname)s] - %(funcName)s: %(message)s", level=logging.INFO) app = Sofi(singleclient=True) app.register('init', oninit) app.register('load', onload) # app.register('click', clicked) app.start() # app.start(browser=False)