def handle_change(self, change):
     """ Handle changes from atom ContainerLists """
     Entry = self.entry_factory
     op = change['operation']
     if op in 'append':
         self.add(len(change['value']), Entry(*change['item']))
     elif op == 'insert':
         self.add(change['index'], Entry(*change['item']))
     elif op == 'extend':
         points = [Entry(*p) for p in change['items']]
         self.addAll([bridge.encode(c) for c in points])
     elif op == '__setitem__':
         self.set(change['index'], Entry(*change['newitem']))
     elif op == 'pop':
         self.remove(change['index'])
     else:
         raise NotImplementedError(
             "Unsupported change operation {}".format(op))
 def refresh_data(self, data):
     Entry = self.entry_factory
     data = [Entry(*d) for d in data]
     self.clear()
     #: Must manually encode these the bridge currently doesnt try as it's slower
     self.addAll([bridge.encode(c) for c in data])
 def refresh_data_set(self):
     self.chart_data = BarData(
         [bridge.encode(c.data_set) for c in self.data_sets()])
     super(AndroidBarChart, self).refresh_data_set()