/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to branchview/graphcell.py

  • Committer: Curtis Hovey
  • Date: 2011-08-12 20:25:28 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110812202528-4xf4a2t23urx50d2
Updated gst to gtk3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
import math
18
18
 
19
 
import gtk
20
 
import gobject
21
 
import pango
 
19
from gi.repository import Gtk
 
20
from gi.repository import GObject
 
21
from gi.repository import Pango
22
22
import cairo
23
23
 
24
24
 
25
 
class CellRendererGraph(gtk.GenericCellRenderer):
 
25
class CellRendererGraph(Gtk.GenericCellRenderer):
26
26
    """Cell renderer for directed graph.
27
27
 
28
28
    Properties:
30
30
      in_lines          (start, end, colour) tuple list to draw inward lines,
31
31
      out_lines         (start, end, colour) tuple list to draw outward lines.
32
32
    """
33
 
    
 
33
 
34
34
    columns_len = 0
35
35
 
36
36
    __gproperties__ = {
37
 
        "node":         ( gobject.TYPE_PYOBJECT, "node",
 
37
        "node":         ( GObject.TYPE_PYOBJECT, "node",
38
38
                          "revision node instruction",
39
 
                          gobject.PARAM_WRITABLE
 
39
                          GObject.PARAM_WRITABLE
40
40
                        ),
41
 
        "tags":         ( gobject.TYPE_PYOBJECT, "tags",
 
41
        "tags":         ( GObject.TYPE_PYOBJECT, "tags",
42
42
                          "list of tags associated with the node",
43
 
                          gobject.PARAM_WRITABLE
 
43
                          GObject.PARAM_WRITABLE
44
44
                        ),
45
 
        "in-lines":     ( gobject.TYPE_PYOBJECT, "in-lines",
 
45
        "in-lines":     ( GObject.TYPE_PYOBJECT, "in-lines",
46
46
                          "instructions to draw lines into the cell",
47
 
                          gobject.PARAM_WRITABLE
 
47
                          GObject.PARAM_WRITABLE
48
48
                        ),
49
 
        "out-lines":    ( gobject.TYPE_PYOBJECT, "out-lines",
 
49
        "out-lines":    ( GObject.TYPE_PYOBJECT, "out-lines",
50
50
                          "instructions to draw lines out of the cell",
51
 
                          gobject.PARAM_WRITABLE
 
51
                          GObject.PARAM_WRITABLE
52
52
                        ),
53
53
        }
54
 
    
 
54
 
55
55
    def do_set_property(self, property, value):
56
56
        """Set properties from GObject properties."""
57
57
        if property.name == "node":
78
78
            font_desc = widget.get_style().font_desc
79
79
            metrics = pango_ctx.get_metrics(font_desc)
80
80
 
81
 
            ascent = pango.PIXELS(metrics.get_ascent())
82
 
            descent = pango.PIXELS(metrics.get_descent())
 
81
            ascent = Pango.PIXELS(metrics.get_ascent())
 
82
            descent = Pango.PIXELS(metrics.get_descent())
83
83
 
84
84
            self._box_size = ascent + descent + 6
85
85
            return self._box_size
168
168
                cell_area.y + cell_area.height / 2,
169
169
                box_size / 4, 0, 2 * math.pi)
170
170
 
171
 
        if flags & gtk.CELL_RENDERER_SELECTED:
 
171
        if flags & Gtk.CELL_RENDERER_SELECTED:
172
172
            ctx.set_source_rgb(1.0, 1.0, 1.0)
173
173
            ctx.set_line_width(box_size / 4)
174
174
            ctx.stroke_preserve()
181
181
        ctx.fill()
182
182
 
183
183
        self.render_tags(ctx, widget.create_pango_context(), cell_area, box_size)
184
 
    
 
184
 
185
185
    def render_line(self, ctx, cell_area, box_size, mid, height, start, end, colour, flags):
186
186
        if start is None:
187
187
            ctx.set_line_cap(cairo.LINE_CAP_ROUND)
190
190
            ctx.line_to(x, mid + height / 3)
191
191
            ctx.move_to(x, mid + height / 6)
192
192
            ctx.line_to(x, mid + height / 6)
193
 
            
 
193
 
194
194
        elif end is None:
195
195
            ctx.set_line_cap(cairo.LINE_CAP_ROUND)
196
196
            x = cell_area.x + box_size * start + box_size / 2
203
203
            ctx.set_line_cap(cairo.LINE_CAP_BUTT)
204
204
            startx = cell_area.x + box_size * start + box_size / 2
205
205
            endx = cell_area.x + box_size * end + box_size / 2
206
 
            
 
206
 
207
207
            ctx.move_to(startx, mid - height / 2)
208
 
            
 
208
 
209
209
            if start - end == 0 :
210
210
                ctx.line_to(endx, mid + height / 2 + 1)
211
211
            else:
217
217
                             endx, mid + height / 5 ,
218
218
                             endx, mid + height / 2 + 1)
219
219
 
220
 
        if flags & gtk.CELL_RENDERER_SELECTED:
 
220
        if flags & Gtk.CELL_RENDERER_SELECTED:
221
221
            ctx.set_source_rgb(1.0, 1.0, 1.0)
222
222
            ctx.set_line_width(box_size / 5)
223
223
            ctx.stroke_preserve()
233
233
 
234
234
        (column, colour) = self.node
235
235
 
236
 
        font_desc = pango.FontDescription()
237
 
        font_desc.set_size(pango.SCALE * 7)
 
236
        font_desc = Pango.FontDescription()
 
237
        font_desc.set_size(Pango.SCALE * 7)
238
238
 
239
 
        tag_layout = pango.Layout(pango_ctx)
 
239
        tag_layout = Pango.Layout(pango_ctx)
240
240
        tag_layout.set_font_description(font_desc)
241
241
 
242
242
        # The width of the tag label stack