### ----------------------------------------------------
### -- Gnome::Gtk3
### -- Licenses: Artistic-2.0
### -- Authors: Marcel Timmerman
### -- File: lib/Gnome/Gtk3/TreeViewColumn.rakumod
### ----------------------------------------------------
### -- Chunk 2 of 2
 I<cell_area>, or C<Any>
=item Int $width; (out) (optional): location to return width needed to render a cell, or C<Any>
=item Int $height; (out) (optional): location to return height needed to render a cell, or C<Any>

=end pod

sub gtk_tree_view_column_cell_get_size ( N-GObject $tree_column, N-GObject $cell_area, int32 $x_offset, int32 $y_offset, int32 $width, int32 $height )
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:1:gtk_tree_view_column_cell_is_visible:
=begin pod
=head2 [[gtk_] tree_view_column_] cell_is_visible

Returns C<1> if any of the cells packed into this tree column are visible. For this to be meaningful, you must first initialize the cells with C<gtk_tree_view_column_cell_set_cell_data()>

  method gtk_tree_view_column_cell_is_visible ( --> Int  )

=end pod

sub gtk_tree_view_column_cell_is_visible ( N-GObject $tree_column )
  returns int32
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:0:gtk_tree_view_column_focus_cell:
=begin pod
=head2 [[gtk_] tree_view_column_] focus_cell

Sets the current keyboard focus to be at I<cell>, if the column contains 2 or more editable and activatable cells.

  method gtk_tree_view_column_focus_cell ( Gnome::Gtk3::CellRenderer $cell )

=item Gnome::Gtk3::CellRenderer $cell; A cell renderer

=end pod

sub gtk_tree_view_column_focus_cell ( N-GObject $tree_column, N-GObject $cell )
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:0:gtk_tree_view_column_cell_get_position:
=begin pod
=head2 [[gtk_] tree_view_column_] cell_get_position

Obtains the horizontal position and size of a cell in a column. If the cell is not found in the column, I<start_pos> and I<width> are not changed and C<0> is returned.

Returns: C<1> if I<$cell> belongs to this tree column.

  method gtk_tree_view_column_cell_get_position (
    Gnome::Gtk3::CellRenderer $cell_renderer, Int $x_offset, Int $width
    --> Int
  )

=item Gnome::Gtk3::CellRenderer $cell_renderer; a cell renderer
=item Int $x_offset; (out) (allow-none): return location for the horizontal position of I<cell> within I<tree_column>, may be C<Any>
=item Int $width; (out) (allow-none): return location for the width of I<cell>, may be C<Any>

=end pod

sub gtk_tree_view_column_cell_get_position ( N-GObject $tree_column, N-GObject $cell_renderer, int32 $x_offset, int32 $width )
  returns int32
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:0:gtk_tree_view_column_queue_resize:
=begin pod
=head2 [[gtk_] tree_view_column_] queue_resize

Flags the column, and the cell renderers added to this column, to have their sizes renegotiated.

  method gtk_tree_view_column_queue_resize ( )


=end pod

sub gtk_tree_view_column_queue_resize ( N-GObject $tree_column )
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:0:gtk_tree_view_column_get_tree_view:
=begin pod
=head2 [[gtk_] tree_view_column_] get_tree_view

Returns the B<Gnome::Gtk3::TreeView> wherein I<tree_column> has been inserted. If I<column> is currently not inserted in any tree view, C<Any> is returned.

  method gtk_tree_view_column_get_tree_view ( --> N-GObject  )

=end pod

sub gtk_tree_view_column_get_tree_view ( N-GObject $tree_column )
  returns N-GObject
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
#TM:0:gtk_tree_view_column_get_button:
=begin pod
=head2 [[gtk_] tree_view_column_] get_button

Returns the button used in the treeview column header

  method gtk_tree_view_column_get_button ( --> N-GObject  )

=end pod

sub gtk_tree_view_column_get_button ( N-GObject $tree_column )
  returns N-GObject
  is native(&gtk-lib)
  { * }

#-------------------------------------------------------------------------------
=begin pod
=head1 Signals

There are two ways to connect to a signal. The first option you have is to use C<register-signal()> from B<Gnome::GObject::Object>. The second option is to use C<g_signal_connect_object()> directly from B<Gnome::GObject::Signal>.

=head2 First method

The positional arguments of the signal handler are all obligatory as well as their types. The named attributes C<:$widget> and user data are optional.

  # handler method
  method mouse-event ( N-GdkEvent $event, :$widget ) { ... }

  # connect a signal on window object
  my Gnome::Gtk3::Window $w .= new( ... );
  $w.register-signal( self, 'mouse-event', 'button-press-event');

=head2 Second method

  my Gnome::Gtk3::Window $w .= new( ... );
  my Callable $handler = sub (
    N-GObject $native, N-GdkEvent $event, OpaquePointer $data
  ) {
    ...
  }

  $w.connect-object( 'button-press-event', $handler);

Also here, the types of positional arguments in the signal handler are important. This is because both methods C<register-signal()> and C<g_signal_connect_object()> are using the signatures of the handler routines to setup the native call interface.

=head2 Supported signals


=comment #TS:0:clicked:
=head3 clicked

  method handler (
    Int :$_handler_id,
    Gnome::GObject::Object :_widget($treeviewcolumn),
    *%user-options
  );

=item $treeviewcolumn;

=end pod


#-------------------------------------------------------------------------------
=begin pod
=head1 Properties

An example of using a string type property of a B<Gnome::Gtk3::Label> object. This is just showing how to set/read a property, not that it is the best way to do it. This is because a) The class initialization often provides some options to set some of the properties and b) the classes provide many methods to modify just those properties. In the case below one can use B<new(:label('my text label'))> or B<gtk_label_set_text('my text label')>.

  my Gnome::Gtk3::Label $label .= new;
  my Gnome::GObject::Value $gv .= new(:init(G_TYPE_STRING));
  $label.g-object-get-property( 'label', $gv);
  $gv.g-value-set-string('my text label');

=head2 Supported properties

=comment #TP:1:visible:
=head3 Visible

Whether to display the column
Default value: True


The B<Gnome::GObject::Value> type of property I<visible> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:resizable:
=head3 Resizable

Column is user-resizable
Default value: False


The B<Gnome::GObject::Value> type of property I<resizable> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:x-offset:
=head3 X position



The B<Gnome::GObject::Value> type of property I<x-offset> is C<G_TYPE_INT>.

=comment #TP:0:width:
=head3 Width



The B<Gnome::GObject::Value> type of property I<width> is C<G_TYPE_INT>.

=comment #TP:0:spacing:
=head3 Spacing



The B<Gnome::GObject::Value> type of property I<spacing> is C<G_TYPE_INT>.

=comment #TP:0:sizing:
=head3 Sizing

Resize mode of the column
Default value: False


The B<Gnome::GObject::Value> type of property I<sizing> is C<G_TYPE_ENUM>.

=comment #TP:0:fixed-width:
=head3 Fixed Width



The B<Gnome::GObject::Value> type of property I<fixed-width> is C<G_TYPE_INT>.

=comment #TP:0:min-width:
=head3 Minimum Width



The B<Gnome::GObject::Value> type of property I<min-width> is C<G_TYPE_INT>.

=comment #TP:0:max-width:
=head3 Maximum Width



The B<Gnome::GObject::Value> type of property I<max-width> is C<G_TYPE_INT>.

=comment #TP:0:title:
=head3 Title

Title to appear in column header
Default value:


The B<Gnome::GObject::Value> type of property I<title> is C<G_TYPE_STRING>.

=comment #TP:0:expand:
=head3 Expand

Column gets share of extra width allocated to the widget
Default value: False


The B<Gnome::GObject::Value> type of property I<expand> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:clickable:
=head3 Clickable

Whether the header can be clicked
Default value: False


The B<Gnome::GObject::Value> type of property I<clickable> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:widget:
=head3 Widget

Widget to put in column header button instead of column title
Widget type: GTK_TYPE_WIDGET


The B<Gnome::GObject::Value> type of property I<widget> is C<G_TYPE_OBJECT>.

=comment #TP:0:alignment:
=head3 Alignment



The B<Gnome::GObject::Value> type of property I<alignment> is C<G_TYPE_FLOAT>.

=comment #TP:0:reorderable:
=head3 Reorderable

Whether the column can be reordered around the headers
Default value: False


The B<Gnome::GObject::Value> type of property I<reorderable> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:sort-indicator:
=head3 Sort indicator

Whether to show a sort indicator
Default value: False


The B<Gnome::GObject::Value> type of property I<sort-indicator> is C<G_TYPE_BOOLEAN>.

=comment #TP:0:sort-order:
=head3 Sort order

Sort direction the sort indicator should indicate
Default value: False


The B<Gnome::GObject::Value> type of property I<sort-order> is C<G_TYPE_ENUM>.

=comment #TP:0:sort-column-id:
=head3 Sort column ID


Logical sort column ID this column sorts on when selected for sorting. Setting the sort column ID makes the column header
clickable. Set to -1 to make the column unsortable.

The B<Gnome::GObject::Value> type of property I<sort-column-id> is C<G_TYPE_INT>.

=comment #TP:0:cell-area:
=head3 Cell Area


The B<Gnome::Gtk3::CellArea> used to layout cell renderers for this column.
If no area is specified when creating the tree view column with C<gtk_tree_view_column_new_with_area()>
a horizontally oriented B<Gnome::Gtk3::CellAreaBox> will be used.Widget type: GTK_TYPE_CELL_AREA

The B<Gnome::GObject::Value> type of property I<cell-area> is C<G_TYPE_OBJECT>.
=end pod


