Toc Gallery Index Tree Gtk.Cell_View

Hierarchy

Interfaces

Description

A Gtk_Cell_View displays a single row of a Gtk_Tree_Model, using cell renderers just like Gtk_Tree_View. Gtk_Cell_View doesn't support some of the more complex features of Gtk_Tree_View, like cell editing and drag and drop.

Types

  • type Gtk_Cell_View is access all Gtk_Cell_View_Record'Class;
  • type Gtk_Cell_View_Record is new Gtk.Widget.Gtk_Widget_Record with null record;

Subprograms

  • procedure Gtk_New (View : out Gtk_Cell_View);
    procedure Initialize (View : access Gtk_Cell_View_Record'Class);
    Creates or initializes a new Gtk_Cell_View
  • procedure Gtk_New_With_Text (View : out Gtk_Cell_View; Text : String);
    procedure Initialize_With_Text (View : access Gtk_Cell_View_Record'Class; Text : String);
    Creates a new Gtk_Cell_View widget, adds a Gtk_Cell_Renderer_Text to it, and makes it show Text.
  • procedure Gtk_New_With_Markup (View : out Gtk_Cell_View; Markup : String);
    procedure Initialize_With_Markup (View : access Gtk_Cell_View_Record'Class; Markup : String);
    Creates a new Gtk_Cell_View widget, adds a Gtk_Cell_Renderer_Text to it, and makes its show Markup. The text can be marked up with the Pango text markup language.
  • procedure Gtk_New_With_Pixbuf (View : out Gtk_Cell_View; Pixbuf : Gdk.Pixbuf.Gdk_Pixbuf);
    procedure Initialize_With_Pixbuf (View : access Gtk_Cell_View_Record'Class; Pixbuf : Gdk.Pixbuf.Gdk_Pixbuf);
    Creates a new Gtk_Cell_View widget, adds a Gtk_Cell_Renderer_Pixbuf to it, and makes its show Pixbuf.
  • function Get_Type return Glib.GType;
    Returns the internal value used for Gtk_Cell_View
  • procedure Set_Displayed_Row (Cell_View : access Gtk_Cell_View_Record; Path : Gtk.Tree_Model.Gtk_Tree_Path);
    Sets the row of the model that is currently displayed by the Gtk_Cell_View. If the path is unset, then the contents of the cellview "stick" at their last value; this is not normally a desired result, but may be a needed intermediate state if say, the model for the Gtk_Cell_View becomes temporarily empty.
  • function Get_Displayed_Row (Cell_View : access Gtk_Cell_View_Record) return Gtk.Tree_Model.Gtk_Tree_Path;
    Returns a Gtk_Tree_Path referring to the currently displayed row. If no row is currently displayed, null is returned.
  • function Get_Size_Of_Row (Cell_View : access Gtk_Cell_View_Record; Path : Gtk.Tree_Model.Gtk_Tree_Path) return Gtk.Widget.Gtk_Requisition;
    Return the size needed by Cell_View to display the model row pointed to by Path.
  • procedure Set_Background_Color (Cell_View : access Gtk_Cell_View_Record; Color : Gdk.Color.Gdk_Color);
    Sets the background color of View.
  • procedure Set_Model (Cell_View : access Gtk_Cell_View_Record; Model : Gtk.Tree_Model.Gtk_Tree_Model);
    Sets the model for Cell_View. If Cell_View already has a model set, it will remove it before setting the new model. If Model is null, then it will unset the old model.
  • function Get_Cell_Renderers (Cell_View : access Gtk_Cell_View_Record) return Gtk.Cell_Renderer.Cell_Renderer_List.Glist;
    Returns the cell renderers which have been added to Cell_View. Return value: a list of cell renderers. The list must be freed by the caller.
  • Interfaces

    This class implements several interfaces. See Glib.Types
  • function "+" (View : access Gtk_Cell_View_Record'Class) return Gtk.Cell_Layout.Gtk_Cell_Layout renames Implements_Cell_Layout.To_Interface;
    function "-" (Layout : Gtk.Cell_Layout.Gtk_Cell_Layout) return Gtk_Cell_View renames Implements_Cell_Layout.To_Object;
    Converts to and from the Gtk_Cell_Layout interface

Properties

  • Background_Gdk_Property
    Boxed
    Background color as a GdkColor
  • Background_Property
    String`
    Background color as a string

Testgtk source code

This code is part of testgtk, a demo application packaged with GtkAda. Testgtk demonstrates the various widgets of GtkAda
----------------------------------------------------------------------- -- GtkAda - Ada95 binding for the Gimp Toolkit -- -- -- -- Copyright (C) 2006 AdaCore -- -- -- -- This library is free software; you can redistribute it and/or -- -- modify it under the terms of the GNU General Public -- -- License as published by the Free Software Foundation; either -- -- version 2 of the License, or (at your option) any later version. -- -- -- -- This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- -- General Public License for more details. -- -- -- -- You should have received a copy of the GNU General Public -- -- License along with this library; if not, write to the -- -- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- with Glib; use Glib; with Glib.Properties; use Glib.Properties; with Gtk.Button; use Gtk.Button; with Gtk.Box; use Gtk.Box; with Gtk.Frame; use Gtk.Frame; with Gtk.Cell_Renderer; use Gtk.Cell_Renderer; with Gtk.Cell_Renderer_Text; use Gtk.Cell_Renderer_Text; with Gtk.Cell_View; use Gtk.Cell_View; with Gtk.Cell_Layout; use Gtk.Cell_Layout; with Gtk.List_Store; use Gtk.List_Store; with Gtk.Tree_Model; use Gtk.Tree_Model; with Gtk.Widget; use Gtk.Widget; with Gtkada.Handlers; use Gtkada.Handlers; package body Create_Cell_View is Column_0 : constant := 0; Column_1 : constant := 1; -- The columns in the model Path : Gtk_Tree_Path; procedure Move_To_Previous (View : access Gtk_Widget_Record'Class); procedure Move_To_Next (View : access Gtk_Widget_Record'Class); -- Display the previous or next function in the cell view procedure Compute_Column_3 (Cell_Layout : Gtk_Cell_Layout; Cell : access Gtk.Cell_Renderer.Gtk_Cell_Renderer_Record'Class; Model : access Gtk.Tree_Model.Gtk_Tree_Model_Record'Class; Iter : Gtk.Tree_Model.Gtk_Tree_Iter); -- Compute dynamically what to display in the third column of the view, -- based on the contents of the model. In this example, this is a -- concatenation of the two model columns ---------- -- Help -- ---------- function Help return String is begin return "A @bGtk_Cell_View@B provides a view of a single row of a tree" & " model." & ASCII.LF & "In this example, the first two columns displayed come straight from" & " the model, where they are stored as a string and an integer. The" & " third column is computed dynamically, and doesn't exist in the" & " model itself."; end Help; ---------------------- -- Move_To_Previous -- ---------------------- procedure Move_To_Previous (View : access Gtk_Widget_Record'Class) is begin if Prev (Path) then Set_Displayed_Row (Gtk_Cell_View (View), Path); end if; end Move_To_Previous; ------------------ -- Move_To_Next -- ------------------ procedure Move_To_Next (View : access Gtk_Widget_Record'Class) is begin Next (Path); Set_Displayed_Row (Gtk_Cell_View (View), Path); end Move_To_Next; ---------------------- -- Compute_Column_3 -- ---------------------- procedure Compute_Column_3 (Cell_Layout : Gtk_Cell_Layout; Cell : access Gtk.Cell_Renderer.Gtk_Cell_Renderer_Record'Class; Model : access Gtk.Tree_Model.Gtk_Tree_Model_Record'Class; Iter : Gtk.Tree_Model.Gtk_Tree_Iter) is pragma Unreferenced (Cell_Layout); begin Set_Property (Cell, Gtk.Cell_Renderer_Text.Text_Property, "--" & Get_String (Model, Iter, 0) & "--" & Gint'Image (Get_Int (Model, Iter, 1)) & "--"); end Compute_Column_3; --------- -- Run -- --------- procedure Run (Frame : access Gtk.Frame.Gtk_Frame_Record'Class) is Box, Hbox : Gtk_Box; Prev, Next : Gtk_Button; Model : Gtk_List_Store; Iter : Gtk_Tree_Iter; View : Gtk_Cell_View; Render : Gtk_Cell_Renderer_Text; begin Set_Label (Frame, "Cell View"); Gtk_New_Vbox (Box, Homogeneous => False); Add (Frame, Box); Gtk_New_Hbox (Hbox, Homogeneous => True); Pack_Start (Box, Hbox, Expand => False); Gtk_New (Prev, "Previous row"); Pack_Start (Hbox, Prev, Expand => False); Gtk_New (Next, "Next row"); Pack_Start (Hbox, Next, Expand => False); -- Create a model. This is a set of rows, each with two columns in this -- specific case. Gtk_New (Model, (Column_0 => GType_String, Column_1 => GType_Int)); Append (Model, Iter); Set (Model, Iter, Column_0, "row 1"); Set (Model, Iter, Column_1, 1); Append (Model, Iter); Set (Model, Iter, Column_0, "row 2"); Set (Model, Iter, Column_1, 2); Append (Model, Iter); Set (Model, Iter, Column_0, "row 3"); Set (Model, Iter, Column_1, 3); -- Create the cell view. We need to specify the renderer that will show -- the columns of the model. Note that we do not have to display all -- the columns. -- Adding renderers is done through the Gtk_Cell_Layout interface, not -- directly through Gtk_Cell_View. Gtk_New (View); Pack_Start (Box, View, Expand => True, Fill => False); Set_Model (View, Gtk_Tree_Model (Model)); Gtk_New (Render); Pack_Start (+View, Render, Expand => True); Add_Attribute (+View, Render, "text", Column_0); Gtk_New (Render); Pack_Start (+View, Render, Expand => True); Add_Attribute (+View, Render, "text", Column_1); -- The third column in the view is computed dynamically from the others -- in the model, and doesn't have to exist in the model itself. Gtk_New (Render); Pack_Start (+View, Render, Expand => True); Set_Cell_Data_Func (+View, Render, Compute_Column_3'Access); Path := Gtk_New_First; Set_Displayed_Row (View, Path); Widget_Callback.Object_Connect (Prev, "clicked", Move_To_Previous'Access, View); Widget_Callback.Object_Connect (Next, "clicked", Move_To_Next'Access, View); Show_All (Frame); end Run; end Create_Cell_View;

Alphabetical Index