def getRecordAttributeAtColumn(self, rowIndex=None, columnIndex=None, recName=None, columnName=None): """Get the attribute of the record at the specified column index. This determines what will be displayed in the cell""" value = None if columnName != None and recName != None: if not self.data[recName].has_key(columnName): return '' cell = self.data[recName][columnName] else: cell = self.getCellRecord(rowIndex, columnIndex) columnName = self.getColumnName(columnIndex) if cell == None: cell='' # Set the value based on the data record field coltype = self.columntypes[columnName] if Formula.isFormula(cell) == True: value = self.doFormula(cell) return value if not type(cell) is DictType: if coltype == 'text' or coltype == 'Text': value = cell elif coltype == 'number': value = str(cell) else: value = 'other' if value==None: value='' return value
def getRecordAttributeAtColumn(self, rowIndex=None, columnIndex=None, recName=None, columnName=None): """Get the attribute of the record at the specified column index. This determines what will be displayed in the cell""" value = None if columnName != None and recName != None: if not self.data[recName].has_key(columnName): return '' cell = self.data[recName][columnName] else: cell = self.getCellRecord(rowIndex, columnIndex) columnName = self.getColumnName(columnIndex) if cell == None: cell = '' # Set the value based on the data record field coltype = self.columntypes[columnName] if Formula.isFormula(cell) == True: value = self.doFormula(cell) return value if not type(cell) is DictType: if coltype == 'text' or coltype == 'Text': value = cell elif coltype == 'number': value = str(cell) else: value = 'other' if value == None: value = '' return value
def copyFormula(self, cellval, row, col, offset=1, dim='y'): """Copy a formula down or across, using the provided offset""" import re frmla = Formula.getFormula(cellval) #print 'formula', frmla newcells=[] cells, ops = Formula.readExpression(frmla) for c in cells: print c if type(c) is not ListType: nc = c else: recname = c[0] colname = c[1] nc = list(self.getRecAtRow(recname, colname, offset, dim=dim)) newcells.append(nc) newformula = Formula.doExpression(newcells, ops, getvalues=False) return newformula
def copyFormula(self, cellval, row, col, offset=1, dim='y'): """Copy a formula down or across, using the provided offset""" import re frmla = Formula.getFormula(cellval) #print 'formula', frmla newcells = [] cells, ops = Formula.readExpression(frmla) for c in cells: print c if type(c) is not ListType: nc = c else: recname = c[0] colname = c[1] nc = list(self.getRecAtRow(recname, colname, offset, dim=dim)) newcells.append(nc) newformula = Formula.doExpression(newcells, ops, getvalues=False) return newformula
def getRecordAttributeAtColumn(self, rowIndex=None, columnIndex=None, recName=None, columnName=None): """Get the attribute of the record at the specified column index. This determines what will be displayed in the cell""" value = None # Holds the value we are going to return if columnName != None and recName != None: if not self.data[recName].has_key(columnName): return '' cell = self.data[recName][columnName] else: cell = self.getCellRecord(rowIndex, columnIndex) columnName = self.getColumnName(columnIndex) if cell == None: return '' # Set the value based on the data record field coltype = self.columntypes[columnName] if Formula.isFormula( cell) == True: #change this to e.g. cell.isFormula() ? value = self.doFormula(cell) return value #if not type(cell) is DictType: if coltype == 'text' or coltype == 'Text': value = cell elif coltype == 'number': value = str(cell) elif coltype == 'File': value = cell['text'] elif coltype == 'Table': value = str(len(cell.keys())) + ' sheets' elif coltype == 'Ekin': value = self.ekin_show_length(cell) else: value = '' if value == None: value = '' return value
def getRecordAttributeAtColumn(self, rowIndex=None, columnIndex=None, recName=None, columnName=None): """Get the attribute of the record at the specified column index. This determines what will be displayed in the cell""" value = None if columnName is not None and recName is not None: if columnName not in self.data[recName]: return '' cell = self.data[recName][columnName] else: cell = self.getCellRecord(rowIndex, columnIndex) columnName = self.getColumnName(columnIndex) if cell is None: cell = '' # Set the value based on the data record field try: coltype = self.columntypes[columnName] except KeyError: coltype = 'text' if Formula.isFormula(cell): value = self.doFormula(cell) return value # if not type(cell) == dict: if not isinstance(cell, dict): if coltype == 'text' or coltype == 'Text': value = cell elif coltype == 'number': value = str(cell) else: value = 'other' if value is None: value = '' return value
def handle_double_click(self, event): """Do double click stuff. Selected row/cols will already have been set with single click binding""" row = self.get_row_clicked(event) col = self.get_col_clicked(event) absrow = self.get_AbsoluteRow(row) if col == None: return model = self.getModel() cellvalue = model.getCellRecord(absrow, col) coltype = model.getColumnType(col) colname = model.getColumnName(col) protein = model.getRecName(absrow) def do_peatcommand(fieldtype): functions = self.peatactions[fieldtype] kys = functions.keys() default = kys[0] func = getattr(self.parentapp, functions[default]) if fieldtype == 'Ekintype': ekinmode = self.ekin_actions[coltype] func(protein=protein, field_name=colname, mode=ekinmode) else: func(protein=protein, field_name=colname) return if Formula.isFormula(cellvalue): self.formula_Dialog(row, col, cellvalue) elif coltype in self.model.ekintypes: do_peatcommand('Ekintype') elif coltype.lower() == 'text': self.draw_cellentry(row, col) elif self.peatactions.has_key(coltype): do_peatcommand(coltype) else: raise Exception('Unknown field') return
def doFormula(self, cellformula): """Evaluate the formula for a cell and return the result""" value = Formula.doFormula(cellformula, self.data) return value
def doFormula(self, cellformula): """Evaluate the formula for a cell and return the result""" value = Formula.doFormula(cellformula, self.data)