Example #1
0
class Column(MkArray, HasSignals):
    def __init__(self, worksheet, ind):
        self.data = worksheet.data.columns[ind]
        self.worksheet = worksheet
        MkArray.__init__(self, worksheet.data.columns, worksheet.data.columns.data, ind)
        self.dependencies = set()

    def reload(self, ind):
        MkArray.__init__(self, self.worksheet.data.columns, self.worksheet.data.columns.data, ind)
        self.data = self.worksheet.data.columns[ind]

    def set_name(self, name):
        self.data.name = name.encode('utf-8')
    def get_name(self):
        return self.data.name.decode('utf-8')
    name = property(get_name, set_name)

    def do_set_expr(self, state, expr, setstate=True):
        # find dependencies and error-check expression
        self.worksheet.record = set()
        try:
            data = asarray(self.worksheet.evaluate(expr))
        except Exception, ar:
            print >>sys.stderr, '*****************', ar
            raise StopAction, False
        newdep = self.worksheet.record
        self.worksheet.record = None

        # set dependencies
        for column in newdep - self.dependencies:
            column.connect('data-changed', self.calculate)
        for column in self.dependencies - newdep:
            column.disconnect('data-changed', self.calculate)
        self.dependencies = newdep

        # action state
        if setstate:
            state['old'], state['new'] = self.expr, expr
            if self.expr == '':
                state['olddata'] = self[:]

        self.data.expr = expr.encode('utf-8')
        if expr != '':
            # set data without triggering a action
            MkArray.__setitem__(self, slice(None), data)
        self.worksheet.emit('data-changed')
        self.emit('data-changed')
        return True
Example #2
0
 def __setitem__(self, key, value):
     prev = self[key]
     MkArray.__setitem__(self, key, value)
     self.worksheet.emit('data-changed')
     self.emit('data-changed')
     return [key, value, prev]
Example #3
0
 def undo_set_expr(self, state):
     self.do_set_expr(None, state['old'], setstate=False)
     if 'olddata' in state:
         MkArray.__setitem__(self, slice(None), state['olddata'])
Example #4
0
 def reload(self, ind):
     MkArray.__init__(self, self.worksheet.data.columns, self.worksheet.data.columns.data, ind)
     self.data = self.worksheet.data.columns[ind]
Example #5
0
 def __init__(self, worksheet, ind):
     self.data = worksheet.data.columns[ind]
     self.worksheet = worksheet
     MkArray.__init__(self, worksheet.data.columns, worksheet.data.columns.data, ind)
     self.dependencies = set()
 def __setitem__(self, key, value):
     prev = self[key]
     MkArray.__setitem__(self, key, value)
     self.worksheet.emit('data-changed')
     self.emit('data-changed')
     return [key, value, prev]
 def undo_set_expr(self, state):
     self.do_set_expr(None, state['old'], setstate=False)
     if 'olddata' in state:
         MkArray.__setitem__(self, slice(None), state['olddata'])
 def reload(self, ind):
     MkArray.__init__(self, self.worksheet.data.columns, self.worksheet.data.columns.data, ind)
     self.data = self.worksheet.data.columns[ind]
 def __init__(self, worksheet, ind):
     self.data = worksheet.data.columns[ind]
     self.worksheet = worksheet
     MkArray.__init__(self, worksheet.data.columns, worksheet.data.columns.data, ind)
     self.dependencies = set()