diff options
-rw-r--r-- | lvc/widgets/gtk/tableviewcells.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/lvc/widgets/gtk/tableviewcells.py b/lvc/widgets/gtk/tableviewcells.py index 6511970..6b61016 100644 --- a/lvc/widgets/gtk/tableviewcells.py +++ b/lvc/widgets/gtk/tableviewcells.py @@ -39,6 +39,7 @@ import drawing import wrappermap from .base import make_gdk_color + class CellRenderer(object): """Simple Cell Renderer https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -84,6 +85,7 @@ class CellRenderer(object): def set_font_scale(self, scale_factor): self._renderer.props.scale = scale_factor + class ImageCellRenderer(object): """Cell Renderer for images https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -94,15 +96,17 @@ class ImageCellRenderer(object): def setup_attributes(self, column, attr_map): column.add_attribute(self._renderer, 'pixbuf', attr_map['image']) + class GTKCheckboxCellRenderer(gtk.CellRendererToggle): def do_activate(self, event, treeview, path, background_area, cell_area, - flags): + flags): iter = treeview.get_model().get_iter(path) self.set_active(not self.get_active()) wrappermap.wrapper(self).emit('clicked', iter) gobject.type_register(GTKCheckboxCellRenderer) + class CheckboxCellRenderer(signals.SignalEmitter): """Cell Renderer for booleans https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -119,6 +123,7 @@ class CheckboxCellRenderer(signals.SignalEmitter): def setup_attributes(self, column, attr_map): column.add_attribute(self._renderer, 'active', attr_map['value']) + class GTKCustomCellRenderer(gtk.GenericCellRenderer): """Handles the GTK hide of CustomCellRenderer https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -144,8 +149,8 @@ class GTKCustomCellRenderer(gtk.GenericCellRenderer): y_offset += int(round(self.props.yalign * extra_height)) return x_offset, y_offset, width, height - def on_render(self, window, widget, background_area, cell_area, expose_area, - flags): + def on_render(self, window, widget, background_area, + cell_area, expose_area, flags): widget_wrapper = wrappermap.wrapper(widget) cell_wrapper = wrappermap.wrapper(self) @@ -163,17 +168,20 @@ class GTKCustomCellRenderer(gtk.GenericCellRenderer): xpad = self.props.xpad ypad = self.props.ypad area = gtk.gdk.Rectangle(cell_area.x + xpad, cell_area.y + ypad, - cell_area.width - xpad * 2, cell_area.height - ypad * 2) + cell_area.width - xpad * 2, + cell_area.height - ypad * 2) context = drawing.DrawingContext(window, area, expose_area) if (selected and not widget_wrapper.draws_selection and widget_wrapper.use_custom_style): # Draw the base color as our background. This erases the gradient # that GTK draws for selected items. window.draw_rectangle(widget.style.base_gc[state], True, - background_area.x, background_area.y, - background_area.width, background_area.height) + background_area.x, background_area.y, + background_area.width, + background_area.height) context.style = drawing.DrawingStyle(widget_wrapper, - use_base_color=True, state=state) + use_base_color=True, + state=state) widget_wrapper.layout_manager.update_cairo_context(context.context) hotspot_tracker = widget_wrapper.hotspot_tracker if (hotspot_tracker and hotspot_tracker.hit and @@ -192,17 +200,18 @@ class GTKCustomCellRenderer(gtk.GenericCellRenderer): # here. widget_wrapper.layout_manager.reset() cell_wrapper.render(context, widget_wrapper.layout_manager, selected, - hotspot, hover) + hotspot, hover) def on_activate(self, event, widget, path, background_area, cell_area, - flags): + flags): pass def on_start_editing(self, event, widget, path, background_area, - cell_area, flags): + cell_area, flags): pass gobject.type_register(GTKCustomCellRenderer) + class CustomCellRenderer(object): """Customizable Cell Renderer https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -216,7 +225,7 @@ class CustomCellRenderer(object): def setup_attributes(self, column, attr_map): column.set_cell_data_func(self._renderer, self.cell_data_func, - attr_map) + attr_map) def cell_data_func(self, column, cell, model, iter, attr_map): cell.column = column @@ -230,6 +239,7 @@ class CustomCellRenderer(object): def hotspot_test(self, style, layout, x, y, width, height): return None + class InfoListRenderer(CustomCellRenderer): """Custom Renderer for InfoListModels https://develop.participatoryculture.org/index.php/WidgetAPITableView""" @@ -240,10 +250,11 @@ class InfoListRenderer(CustomCellRenderer): cell.column = column cell.path = model.get_path(iter) + class InfoListRendererText(CellRenderer): """Renderer for InfoListModels that only display text https://develop.participatoryculture.org/index.php/WidgetAPITableView""" def setup_attributes(self, column, attr_map): infolist.gtk.setup_text_cell_data_func(column, self._renderer, - self.get_value) + self.get_value) |