package Cell_Renderer_List is new Glib.Glist.Generic_List (Gtk_Cell_Renderer);
package Cell_Renderer_Mode_Properties is new Glib.Generic_Properties.Generic_Internal_Discrete_Property (Gtk_Cell_Renderer_Mode);
type Gtk_Cell_Renderer_Record is new Glib.Object.GObject_Record with private;
type Gtk_Cell_Renderer is access all Gtk_Cell_Renderer_Record'Class;
type Gtk_Cell_Renderer_Mode is (Cell_Renderer_Mode_Inert, Cell_Renderer_Mode_Activatable, Cell_Renderer_Mode_Editable);
type Property_Cell_Renderer_Mode is new Cell_Renderer_Mode_Properties.Property;
Cell_Renderer_Selected : constant Gtk_Cell_Renderer_State;
Cell_Renderer_Prelit : constant Gtk_Cell_Renderer_State;
Cell_Renderer_Insensitive : constant Gtk_Cell_Renderer_State;
Cell_Renderer_Sorted : constant Gtk_Cell_Renderer_State;
Cell_Renderer_Focused : constant Gtk_Cell_Renderer_State;
Signal_Editing_Canceled : constant Glib.Signal_Name := "editing-canceled";
Signal_Editing_Started : constant Glib.Signal_Name := "editing-started";
Cell_Background_Property : constant Glib.Properties.Property_String;
Editing_Property : constant Glib.Properties.Property_Boolean;
Height_Property : constant Glib.Properties.Property_Int;
Is_Expanded_Property : constant Glib.Properties.Property_Boolean;
Is_Expander_Property : constant Glib.Properties.Property_Boolean;
Mode_Property : constant Property_Cell_Renderer_Mode;
Sensitive_Property : constant Glib.Properties.Property_Boolean;
Visible_Property : constant Glib.Properties.Property_Boolean;
Width_Property : constant Glib.Properties.Property_Int;
Xalign_Property : constant Glib.Properties.Property_Float;
Xpad_Property : constant Glib.Properties.Property_Uint;
Yalign_Property : constant Glib.Properties.Property_Float;
Ypad_Property : constant Glib.Properties.Property_Uint;
function Convert
( | R | : Gtk_Cell_Renderer) return System.Address; |
function Convert
( | R | : System.Address) return Gtk_Cell_Renderer; |
function Get_Type return GType;
procedure Get_Size
( | Cell | : access Gtk_Cell_Renderer_Record; |
Widget | : access Gtk.Widget.Gtk_Widget_Record'Class; | |
Cell_Area | : out Gdk.Rectangle.Gdk_Rectangle; | |
X_Offset | : out Gint; | |
Y_Offset | : out Gint; | |
Width | : out Gint; | |
Height | : out Gint); |
procedure Render
( | Cell | : access Gtk_Cell_Renderer_Record; |
Window | : Gdk.Window.Gdk_Window; | |
Widget | : access Gtk.Widget.Gtk_Widget_Record'Class; | |
Background_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Cell_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Expose_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Flags | : Gtk_Cell_Renderer_State); |
function Activate
( | Cell | : access Gtk_Cell_Renderer_Record; |
Event | : Gdk.Event.Gdk_Event; | |
Widget | : access Gtk.Widget.Gtk_Widget_Record'Class; | |
Path | : UTF8_String; | |
Background_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Cell_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Flags | : Gtk_Cell_Renderer_State) return Boolean; |
function Start_Editing
( | Cell | : access Gtk_Cell_Renderer_Record; |
Event | : Gdk.Event.Gdk_Event; | |
Widget | : access Gtk.Widget.Gtk_Widget_Record'Class; | |
Path | : UTF8_String; | |
Background_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Cell_Area | : Gdk.Rectangle.Gdk_Rectangle; | |
Flags | : Gtk_Cell_Renderer_State) return Gtk.Cell_Editable.Gtk_Cell_Editable; |
procedure Set_Fixed_Size
( | Cell | : access Gtk_Cell_Renderer_Record; |
Width | : Gint; | |
Height | : Gint); |
procedure Get_Fixed_Size
( | Cell | : access Gtk_Cell_Renderer_Record; |
Width | : out Gint; | |
Height | : out Gint); |
The Gtk_Cell_Renderer is a base class of a set of objects used for rendering a cell to a Gdk_Drawable. These objects are used primarily by the Gtk_Tree_View widget, though they aren't tied to them in any specific way.
It is worth noting that Gtk_Cell_Renderer is not a Gtk_Widget and cannot be treated as such.
The primary use of a Gtk_Cell_Renderer is for drawing a certain graphical elements on a Gdk_Drawable. Typically, one cell renderer is used to draw many cells on the screen. To this extent, it isn't expected that Cell_Renderer keep any permanent state around. Instead, any state is set just prior to use using GObjects property system. Then, the cell is measured using Get_Size(). Finally, the cell is rendered in the correct location using Render().
There are a number of rules that must be followed when writing a new Gtk_Cell_Renderer. First and formost, it's important that a certain set of properties will always yield a cell renderer of the same size, barring GtkStyle change. The Gtk_Cell_Renderer also has a number of generic properties that are expected to be honored by all children.
Beyond merely rendering a cell, cell renderers can optionally provide active user interface elements. A cell renderer can be activatable like Gtk_Cell_Renderer_Toggle, which toggles when it gets activated by a mouse click, or it can be editable like Gtk_Cell_Renderer_Text, which allows the user to edit the text using a Gtk_Entry. To make a cell renderer activatable or editable, you have to implement the activate or start_editing virtual functions, respectively.
Binding from C File version 2.14