self.emit("status_changed", int(path), "-1")
-class CellRendererCombo2(gtk.GenericCellRenderer):
- __gproperties__ = {
- "text": (gobject.TYPE_STRING, "text",
- "Text", "", gobject.PARAM_READWRITE),
- }
-
- __gsignals__ = {
- 'status_changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT, gobject.TYPE_STRING)),
- }
-
- def __init__(self):
- #self.__gobject_init__()
- #gtk.GenericCellRenderer.__init__(self, *args, **kwargs)
- gtk.GenericCellRenderer.__init__(self)
- #self.__gobject_init__()
- self.status = -1
- self.xpad = 2
- self.ypad = 2
- self.mode = gtk.CELL_RENDERER_MODE_ACTIVATABLE
- self.xpad = -2
- self.ypad = -2
- self.xalign = 0.5
- self.yalign = 0.5
- self.active = 0
- self.widget = None
- self.last_cell = None
- self.text = "(none)"
- self.connect('editing-started', self.on_clicked)
-
- def do_set_property(self, property, value):
- #print property, value
- setattr(self, property.name, value)
-
- def do_get_property(self, property):
- return getattr(self, property.name)
-
- def get_layout(self, widget):
- '''Gets the Pango layout used in the cell in a TreeView widget.'''
-
- layout = pango.Layout(widget.get_pango_context())
- layout.set_width(-1) # Do not wrap text.
-
- layout.set_text(self.text)
-
- return layout
-
- def on_get_size(self, widget, cell_area = None):
- xpad = 2
- ypad = 2
-
- xalign = 0
- yalign = 0.5
-
- layout = self.get_layout(widget)
- width, height = layout.get_pixel_size()
-
- x_offset = xpad
- y_offset = ypad
-
- if cell_area:
-
- x_offset = xalign * (cell_area.width - width)
- x_offset = max(x_offset, xpad)
- x_offset = int(round(x_offset, 0))
-
- y_offset = yalign * (cell_area.height - height)
- y_offset = max(y_offset, ypad)
- y_offset = int(round(y_offset, 0))
-
- width = width + (xpad * 2)
- height = height + (ypad * 2)
-
- return x_offset, y_offset, width, height
-
- @gtk_toolbox.log_exception(_moduleLogger)
- def on_clicked(self, widget, data):
- print widget, data
-
- def clicked(self, widget, data1 = None):
- return
- x, y = widget.get_pointer()
- widget.realize()
-
- #path = widget.get_path_at_pos(x, y)
-
- path = widget.get_cursor()[0]
-
- if path is not None:
- irow = path[0] #path[0][0]-1
- rect = widget.get_cell_area(irow, widget.get_column(0)) #FixME 0 is hardcoded
- if x < rect.x+rect.width:
- self.emit("status_changed", irow, self.status)
- else:
- return
-
- #workarround -1 means last item, because bug in treeview?!
- #print "not in list"
- rect = widget.get_visible_rect() #widget.get_cell_area(-1, widget.get_column(0))
- #print rect.x, rect.y, rect.width, rect.height, x, y
- irow = -1
- rect = widget.get_cell_area(0, widget.get_column(0)) #FixME 0 is hardcoded
- if x < rect.x+rect.width:
- self.emit("status_changed", irow, "-1")
-
- def on_render(self, window, widget, background_area, cell_area, expose_area, flags ):
- if (self.widget == None):
- self.widget = widget
- self.widget.connect("cursor-changed", self.clicked) #button-press-event
-
- self.last_cell = cell_area
-
- x = int(cell_area.x+(cell_area.width-2)/2-(cell_area.height-2)/2)
- y = int(cell_area.y+1)
- height = int(cell_area.height-2)
- width = int(height)
-
- widget.style.paint_layout(window, gtk.STATE_NORMAL, True, cell_area, widget, "cellradio", x, y, self.get_layout(widget))
-
- #widget.show_all()
-
- def on_start_editing(self, event, widget, path, background_area, cell_area, flags):
- print "on_start_editing", path
- return None
-
- def on_activate(self, event, widget, path, background_area, cell_area, flags):
- print "activate", path
- return False
-
-
-gobject.type_register(CellRendererCombo2)
gobject.type_register(TripleToggleCellRenderer)