/*
* Copyright (c) 2003-2009 by the gtk2-perl team (see the file AUTHORS)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library 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.
*
* $Id$
*/
#include "gtk2perl.h"
MODULE = Gtk2::Style PACKAGE = Gtk2::Style PREFIX = gtk_style_
BOOT:
/* theme engines can provide subclasses on GtkStyle which may have
* any name they like, and will not be registered with the gperl
* bindings type subsystem. any time a user has the theme set to
* anything other than the default, one of these unregistered
* styles comes through. set this to keep gperl_get_object from
* spewing harmless and unavoidable warnings all over stderr. */
gperl_object_set_no_warn_unreg_subclass (GTK_TYPE_STYLE, TRUE);
SV *
black (style)
GtkStyle * style
ALIAS:
Gtk2::Style::white = 1
Gtk2::Style::font_desc = 2
Gtk2::Style::xthickness = 3
Gtk2::Style::ythickness = 4
Gtk2::Style::black_gc = 5
Gtk2::Style::white_gc = 6
CODE:
switch (ix) {
case 0: RETVAL = newSVGdkColor (&(style->black)); break;
case 1: RETVAL = newSVGdkColor (&(style->white)); break;
case 2: RETVAL = newSVPangoFontDescription_copy (style->font_desc); break;
case 3: RETVAL = newSViv (style->xthickness); break;
case 4: RETVAL = newSViv (style->ythickness); break;
case 5: RETVAL = newSVGdkGC (style->black_gc); break;
case 6: RETVAL = newSVGdkGC (style->white_gc); break;
default:
RETVAL = NULL;
g_assert_not_reached ();
}
OUTPUT:
RETVAL
GdkColor *
fg (style, state)
GtkStyle * style
GtkStateType state
ALIAS:
Gtk2::Style::bg = 1
Gtk2::Style::light = 2
Gtk2::Style::dark = 3
Gtk2::Style::mid = 4
Gtk2::Style::text = 5
Gtk2::Style::base = 6
Gtk2::Style::text_aa = 7
CODE:
switch (ix) {
case 0: RETVAL = &(style->fg[state]); break;
case 1: RETVAL = &(style->bg[state]); break;
case 2: RETVAL = &(style->light[state]); break;
case 3: RETVAL = &(style->dark[state]); break;
case 4: RETVAL = &(style->mid[state]); break;
case 5: RETVAL = &(style->text[state]); break;
case 6: RETVAL = &(style->base[state]); break;
case 7: RETVAL = &(style->text_aa[state]); break;
default:
RETVAL = NULL;
g_assert_not_reached ();
}
OUTPUT:
RETVAL
# legitimate reference, not a copy
GdkGC *
fg_gc (style, state)
GtkStyle * style
GtkStateType state
ALIAS:
Gtk2::Style::bg_gc = 1
Gtk2::Style::light_gc = 2
Gtk2::Style::dark_gc = 3
Gtk2::Style::mid_gc = 4
Gtk2::Style::text_gc = 5
Gtk2::Style::base_gc = 6
Gtk2::Style::text_aa_gc = 7
CODE:
switch (ix) {
case 0: RETVAL = style->fg_gc[state]; break;
case 1: RETVAL = style->bg_gc[state]; break;
case 2: RETVAL = style->light_gc[state]; break;
case 3: RETVAL = style->dark_gc[state]; break;
case 4: RETVAL = style->mid_gc[state]; break;
case 5: RETVAL = style->text_gc[state]; break;
case 6: RETVAL = style->base_gc[state]; break;
case 7: RETVAL = style->text_aa_gc[state]; break;
default:
RETVAL = NULL;
g_assert_not_reached ();
}
OUTPUT:
RETVAL
# legitimate reference, not a copy
GdkPixmap *
bg_pixmap (style, state, pixmap=NULL)
GtkStyle * style
GtkStateType state
GdkPixmap_ornull * pixmap
CODE:
RETVAL = style->bg_pixmap[state];
if (items > 2 && style->bg_pixmap[state] != pixmap) {
if (style->bg_pixmap[state])
g_object_unref (style->bg_pixmap[state]);
style->bg_pixmap[state] = pixmap;
if (pixmap)
g_object_ref (pixmap);
}
OUTPUT:
RETVAL
## GtkStyle* gtk_style_new (void)
GtkStyle_noinc*
gtk_style_new (class)
C_ARGS:
/* void */
## GtkStyle* gtk_style_copy (GtkStyle *style)
GtkStyle_noinc*
gtk_style_copy (style)
GtkStyle *style
gboolean
gtk_style_attached (style)
GtkStyle *style
CODE:
RETVAL = GTK_STYLE_ATTACHED (style);
OUTPUT:
RETVAL
## GtkStyle* gtk_style_attach (GtkStyle *style, GdkWindow *window)
GtkStyle *
gtk_style_attach (style, window)
GtkStyle *style
GdkWindow *window
CLEANUP:
if (RETVAL != style)
/* claim ownership of new object */
g_object_unref (RETVAL);
## void gtk_style_detach (GtkStyle *style)
void
gtk_style_detach (style)
GtkStyle *style
# deprecated
## GtkStyle* gtk_style_ref (GtkStyle *style)
## void gtk_style_unref (GtkStyle *style)
## void gtk_style_set_background (GtkStyle *style, GdkWindow *window, GtkStateType state_type)
void
gtk_style_set_background (style, window, state_type)
GtkStyle *style
GdkWindow *window
GtkStateType state_type
## void gtk_style_apply_default_background (GtkStyle *style, GdkWindow *window, gboolean set_bg, GtkStateType state_type, GdkRectangle *area, gint x, gint y, gint width, gint height)
void
gtk_style_apply_default_background (style, window, set_bg, state_type, area, x, y, width, height)
GtkStyle *style
GdkWindow *window
gboolean set_bg
GtkStateType state_type
GdkRectangle_ornull *area
gint x
gint y
gint width
gint height
## GtkIconSet* gtk_style_lookup_icon_set (GtkStyle *style, const gchar *stock_id)
GtkIconSet*
gtk_style_lookup_icon_set (style, stock_id)
GtkStyle *style
const gchar *stock_id
## GdkPixbuf* gtk_style_render_icon (GtkStyle *style, const GtkIconSource *source, GtkTextDirection direction, GtkStateType state, GtkIconSize size, GtkWidget *widget, const gchar *detail)
GdkPixbuf_noinc*
gtk_style_render_icon (style, source, direction, state, size, widget, detail=NULL)
GtkStyle *style
GtkIconSource *source
GtkTextDirection direction
GtkStateType state
GtkIconSize size
GtkWidget_ornull *widget
const gchar_ornull *detail
MODULE = Gtk2::Style PACKAGE = Gtk2::Style PREFIX = gtk_
## void gtk_paint_flat_box (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_flat_box (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_hline (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x1, gint x2, gint y)
void
gtk_paint_hline (style, window, state_type, area, widget, detail, x1, x2, y)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x1
gint x2
gint y
## void gtk_paint_vline (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint y1_, gint y2_, gint x)
void
gtk_paint_vline (style, window, state_type, area, widget, detail, y1_, y2_, x)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint y1_
gint y2_
gint x
## void gtk_paint_shadow (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_shadow (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_polygon (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, GdkPoint *points, gint npoints, gboolean fill)
=for apidoc
=for arg x1 (gint) x coordinate of the first vertex
=for arg y1 (gint) y coordinate of the first vertex
=for arg ... pairs of x and y coordinates
=cut
void
gtk_paint_polygon (style, window, state_type, shadow_type, area, widget, detail, fill, x1, y1, ...)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gboolean fill
PREINIT:
GdkPoint *points;
gint npoints, i;
CODE:
#define first 8
npoints = (items - first) / 2;
points = g_new (GdkPoint, npoints);
for (i = 0 ; i < npoints ; i++) {
points[i].x = SvIV (ST (first + 2*i));
points[i].y = SvIV (ST (first + 2*i + 1));
}
gtk_paint_polygon (style, window, state_type, shadow_type,
area, widget, detail, points, npoints, fill);
g_free (points);
#undef first
## void gtk_paint_arrow (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, GtkArrowType arrow_type, gboolean fill, gint x, gint y, gint width, gint height)
void
gtk_paint_arrow (style, window, state_type, shadow_type, area, widget, detail, arrow_type, fill, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
GtkArrowType arrow_type
gboolean fill
gint x
gint y
gint width
gint height
## void gtk_paint_diamond (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_diamond (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_box (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_box (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_check (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_check (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_option (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_option (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_tab (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_tab (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_shadow_gap (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side, gint gap_x, gint gap_width)
void
gtk_paint_shadow_gap (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height, gap_side, gap_x, gap_width)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
gchar_ornull *detail
gint x
gint y
gint width
gint height
GtkPositionType gap_side
gint gap_x
gint gap_width
## void gtk_paint_box_gap (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side, gint gap_x, gint gap_width)
void
gtk_paint_box_gap (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height, gap_side, gap_x, gap_width)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
gchar_ornull *detail
gint x
gint y
gint width
gint height
GtkPositionType gap_side
gint gap_x
gint gap_width
## void gtk_paint_extension (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side)
void
gtk_paint_extension (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height, gap_side)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
gchar_ornull *detail
gint x
gint y
gint width
gint height
GtkPositionType gap_side
## void gtk_paint_focus (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height)
void
gtk_paint_focus (style, window, state_type, area, widget, detail, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
## void gtk_paint_slider (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height, GtkOrientation orientation)
void
gtk_paint_slider (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height, orientation)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
gint width
gint height
GtkOrientation orientation
## void gtk_paint_handle (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, gint width, gint height, GtkOrientation orientation)
void
gtk_paint_handle (style, window, state_type, shadow_type, area, widget, detail, x, y, width, height, orientation)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GtkShadowType shadow_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar *detail
gint x
gint y
gint width
gint height
GtkOrientation orientation
## void gtk_paint_expander (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, GtkExpanderStyle expander_style)
void
gtk_paint_expander (style, window, state_type, area, widget, detail, x, y, expander_style)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GdkRectangle_ornull *area
GtkWidget *widget
const gchar_ornull *detail
gint x
gint y
GtkExpanderStyle expander_style
## void gtk_paint_layout (GtkStyle *style, GdkWindow *window, GtkStateType state_type, gboolean use_text, GdkRectangle *area, GtkWidget *widget, const gchar *detail, gint x, gint y, PangoLayout *layout)
void
gtk_paint_layout (style, window, state_type, use_text, area, widget, detail, x, y, layout)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
gboolean use_text
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
gint x
gint y
PangoLayout *layout
## void gtk_paint_resize_grip (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, const gchar *detail, GdkWindowEdge edge, gint x, gint y, gint width, gint height)
void
gtk_paint_resize_grip (style, window, state_type, area, widget, detail, edge, x, y, width, height)
GtkStyle *style
GdkDrawable *window
GtkStateType state_type
GdkRectangle_ornull *area
GtkWidget_ornull *widget
const gchar_ornull *detail
GdkWindowEdge edge
gint x
gint y
gint width
gint height
#if GTK_CHECK_VERSION (2, 20, 0)
void gtk_paint_spinner (GtkStyle *style, GdkWindow *window, GtkStateType state_type, const GdkRectangle_ornull *area, GtkWidget_ornull *widget, const gchar_ornull *detail, guint step, gint x, gint y, gint width, gint height);
#endif /* 2.20 */
MODULE = Gtk2::Style PACKAGE = Gtk2 PREFIX = gtk_
#if GTK_CHECK_VERSION (2, 4, 0)
=for object Gtk2::Style
=cut
void
gtk_draw_insertion_cursor (class, widget, drawable, area, location, is_primary, direction, draw_arrow)
GtkWidget *widget
GdkDrawable *drawable
GdkRectangle *area
GdkRectangle *location
gboolean is_primary
GtkTextDirection direction
gboolean draw_arrow
C_ARGS:
widget, drawable, area, location, is_primary, direction, draw_arrow
#endif
MODULE = Gtk2::Style PACKAGE = Gtk2::Style PREFIX = gtk_style_
#if GTK_CHECK_VERSION (2, 10, 0)
GdkColor_copy *
gtk_style_lookup_color (GtkStyle *style, const gchar *color_name)
PREINIT:
GdkColor color;
CODE:
if (!gtk_style_lookup_color (style, color_name, &color))
XSRETURN_UNDEF;
RETVAL = &color;
OUTPUT:
RETVAL
#endif
#if GTK_CHECK_VERSION (2, 16, 0)
=for apidoc
=for signature list = $style->get (widget_package, ...)
=for signature list = $style->get_style_property (widget_package, ...)
=for arg widget_package (string) widget package name (ex: 'Gtk2::TreeView')
=for arg ... (list) list of property names
Fetch and return the values for the style properties named in I<...> for a
widget of type I<widget_package>. I<get> is an alias for
I<get_style_property>.
my $size = $style->get_style_property ("expander-size");
B<Note>: The I<get> method shadows I<Glib::Object::get> (see
L<Glib::Object/get and set>). This shouldn't be a problem since
I<Gtk2::Style> defines no properties (as of gtk+ 2.16). If you have a
class that's derived from Gtk2::Style and adds a property or if a new
version of gtk+ adds a property to I<Gtk2::Style> then the property
can be accessed with I<get_property>.
=cut
void
gtk_style_get (style, widget_package, ...)
GtkStyle *style
const char *widget_package
ALIAS:
get_style_property = 1
PREINIT:
int i;
GType widget_type;
gpointer class;
CODE:
/* Use CODE: instead of PPCODE: so we can handle the stack ourselves in
* order to avoid that xsubs called by gtk_style_get_style_property
* overwrite what we put on the stack. */
PERL_UNUSED_VAR (ix);
widget_type = gperl_type_from_package (widget_package);
if (widget_type == 0)
croak ("package %s is not registered with GPerl", widget_package);
if (! g_type_is_a (widget_type, GTK_TYPE_WIDGET))
croak ("%s is not a subclass of Gtk2::Widget", widget_package);
class = g_type_class_ref (widget_type);
if (class == NULL)
croak ("can't find type class for type %s", widget_package);
for (i = 2 ; i < items ; i++) {
GValue value = {0, };
gchar *name = SvGChar (ST (i));
GParamSpec *pspec =
gtk_widget_class_find_style_property (class, name);
if (pspec) {
g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
gtk_style_get_style_property (style, widget_type, name, &value);
ST (i - 2) = sv_2mortal (gperl_sv_from_value (&value));
g_value_unset (&value);
}
else {
g_type_class_unref (class);
croak ("type %s does not support style property '%s'",
widget_package, name);
}
}
g_type_class_unref (class);
XSRETURN (items - 2);
#endif