def get_content(self, column_data, row_values, col_values): """ return the content formated as defined in the constructor or in the column object """ value = self.value if value == None or value == False: return "" #should we trunc the text if self.truncate_length != None: value = c2c_helper.ellipsis(value, self.truncate_length, ellipsis="[...]") ps = ParagraphStyle('standard_text') ps.fontName = self.get_font(column_data) ps.fontSize = self.get_font_size(column_data) ps.alignment = self.get_align_code(column_data) #should we indent the content if self.indent != None: ps.leftIndent = self.indent * 2 * mm elif type(column_data) == TextColData and column_data.indent != None: ps.leftIndent = column_data.indent * 2 * mm p = Paragraph(c2c_helper.encode_entities(value), ps) return p
def _add_Y_items(self): """ add Y items labels to the chart (Text and styles). Add also light grid for their lines """ X_pos = 0 Y_pos = 3 #draw the items titles with the right indentation for i in self.data.items_order: item = self.data.items[i] ps = ParagraphStyle('indent') ps.fontName = self.DEFAULT_FONT ps.fontSize = self.DEFAULT_FONT_SIZE ps.leftIndent = item.indent * self.INDENT_SPACE p = Paragraph(self._encode_entities(item.label), ps) self.table[Y_pos + item.Y_pos][X_pos] = p #draw the inner grid for this lines start_X = X_pos end_X = -1 start_Y = Y_pos + item.Y_pos end_Y = Y_pos + item.Y_pos + item.line_number self.styles.append(('LINEABOVE', (start_X, end_Y), (end_X, end_Y), 0.2, "#bbbbbb")) self.styles.append(('LINEAFTER', (start_X, start_Y), (end_X, end_Y), 0.2, "#bbbbbb")) #line that separate the Y items and the datas self.styles.append(('LINEAFTER', (X_pos, Y_pos-2), (X_pos, -1), 1, colors.black))