예제 #1
0
    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"])
예제 #2
0
    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"])
예제 #3
0
 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)