def set_holes(self, holes): if self.marker: self.marker.setHoles( [bridge.encode(LatLng(*p)) for hole in holes for p in hole]) else: for hole in holes: self.options.addHole([bridge.encode(LatLng(*p)) for p in hole])
def refresh_points(self, points): coordinates = [LatLng(*p) for p in points] self.clear() # Must manually encode these the bridge currently # doesnt try as it's slower self.addAll([bridge.encode(c) for c in coordinates])
def refresh_views(self, change=None): """Set the views that the adapter will cycle through.""" adapter = self.adapter # Set initial ListItem state item_mapping = self.item_mapping for i, item in enumerate(self.list_items): item_mapping[i] = item item.recycle_view(i) if adapter: adapter.clearRecycleViews() adapter.setRecycleViews( [encode(li.get_view()) for li in self.list_items])
def init_layout(self): super().init_layout() d = self.declaration w = self.widget # Add pages adapter = self.adapter adapter.addFragments([encode(c.fragment) for c in self.pages]) # Set adapter w.setAdapter(adapter) w.addOnPageChangeListener(w.getId()) w.onPageSelected.connect(self.on_page_selected) if d.current_index: self.set_current_index(d.current_index)
async def handle_event(self, result_id: int, ptr: int, method: str, args: list): """When we get an 'event' type from the bridge handle it by invoking the handler and if needed sending back the result. """ obj = None result = None try: obj, handler = get_handler(ptr, method) if method == "set_exception": # Remote call failed obj.set_exception(BridgeException(args)) elif iscoroutinefunction(handler): result = await handler(*(v for t, v in args)) else: result = handler(*(v for t, v in args)) except BridgeReferenceError as e: #: Log the event, don't blow up here event = (result_id, ptr, method, args) print(f"Error processing event: {event} - {e}") self.error_occurred(e) # type: ignore # self.show_error(msg) except Exception as e: #: Log the event, blow up in user's face self.error_occurred(e) # type: ignore err = traceback.format_exc() event = (result_id, ptr, method, args) msg = f"Error processing event: {event} - {err}" print(msg) self.show_error(msg) raise finally: if result_id: if hasattr(obj, "__nativeclass__"): sig, ret_type = getattr(obj.__class__, method).__returns__ else: sig = result.__class__.__name__ self.send_event( Command.RESULT, #: method result_id, (sig, encode(result)), #: args now=True, )
def handle_change(self, change): """ Handle changes from atom ContainerLists """ op = change['operation'] if op in 'append': self.add(len(change['value']), LatLng(*change['item'])) elif op == 'insert': self.add(change['index'], LatLng(*change['item'])) elif op == 'extend': points = [LatLng(*p) for p in change['items']] self.addAll([bridge.encode(c) for c in points]) elif op == '__setitem__': self.set(change['index'], LatLng(*change['newitem'])) elif op == 'pop': self.remove(change['index']) else: raise NotImplementedError( "Unsupported change operation {}".format(op))