def on_client_vars(self, data): log.debug("on_clientvars: %s" % data) vars = data["collab_client_vars"] text = vars["initialAttributedText"]["text"] csd = dict(old_len=len(text), new_len=len(text), ops=vars["initialAttributedText"]["attribs"], char_bank="") apool = vars["apool"] for i, params in apool['numToAttrib'].iteritems(): if params[0] == 'author' and params[1] == data['userId']: user_id = i break else: apool['numToAttrib'][str(int(i)+1)] = ['author', data["userId"]] user_id = str(int(i)+1) self.authors.set_user_id(user_id, data['userId'], color=data['userColor']) self.text = Text(text=text, cursors=self.cursors, attribs=Attributes(pool=apool), authors=self.authors) csd = pack(csd) self.text.update(csd) self.text.set_revision(int(vars["rev"])) for author, d in vars["historicalAuthorData"].iteritems(): name = d['name'] if 'name' in d.keys() else author self.authors.add(author, name=name, color=d['colorId'], padIDs=d['padIDs']) self.authors.set_color_palette(data["colorPalette"])
def on_clientvars(self, data): vars = data["collab_client_vars"] text = vars["initialAttributedText"]["text"] csd = dict(old_len=len(text), new_len=len(text), ops=vars["initialAttributedText"]["attribs"], char_bank="") apool = vars["apool"] self.text = Text(text=text, cursors=self.cursors, attribs=Attributes(pool=apool), authors=self.authors) csd = pack(csd) print "first changeset:", csd self.text.update(csd) self.rev = vars["rev"] print vars["historicalAuthorData"] for author, d in vars["historicalAuthorData"].iteritems(): self.authors.add(author, name=d['name'], color=d['colorId'], padIDs=d['padIDs']) self.authors.set_color_palette(data["colorPalette"])
def patch_text(self, old, new): cs = pack(old.diff(new)) if cs: self.epad.namespace.send_user_changes(old.get_revision(), old.get_apool(), cs)