guint param_id,
const GValue *value,
GParamSpec *pspec);
-static void gtk_cell_renderer_toggle_init (GtkCellRendererToggle *celltext);
-static void gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class);
static void gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
GtkWidget *widget,
GdkRectangle *cell_area,
PROP_ACTIVATABLE,
PROP_ACTIVE,
PROP_RADIO,
- PROP_INCONSISTENT
+ PROP_INCONSISTENT,
+ PROP_INDICATOR_SIZE
};
#define TOGGLE_WIDTH 12
typedef struct _GtkCellRendererTogglePrivate GtkCellRendererTogglePrivate;
struct _GtkCellRendererTogglePrivate
{
+ gint indicator_size;
+
guint inconsistent : 1;
};
-GType
-gtk_cell_renderer_toggle_get_type (void)
-{
- static GType cell_toggle_type = 0;
-
- if (!cell_toggle_type)
- {
- static const GTypeInfo cell_toggle_info =
- {
- sizeof (GtkCellRendererToggleClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_cell_renderer_toggle_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GtkCellRendererToggle),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gtk_cell_renderer_toggle_init,
- };
-
- cell_toggle_type =
- g_type_register_static (GTK_TYPE_CELL_RENDERER, "GtkCellRendererToggle",
- &cell_toggle_info, 0);
- }
-
- return cell_toggle_type;
-}
+G_DEFINE_TYPE (GtkCellRendererToggle, gtk_cell_renderer_toggle, GTK_TYPE_CELL_RENDERER)
static void
gtk_cell_renderer_toggle_init (GtkCellRendererToggle *celltoggle)
{
+ GtkCellRendererTogglePrivate *priv;
+
+ priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (celltoggle);
+
celltoggle->activatable = TRUE;
celltoggle->active = FALSE;
celltoggle->radio = FALSE;
+
GTK_CELL_RENDERER (celltoggle)->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
GTK_CELL_RENDERER (celltoggle)->xpad = 2;
GTK_CELL_RENDERER (celltoggle)->ypad = 2;
+
+ priv->indicator_size = 12;
+ priv->inconsistent = FALSE;
}
static void
FALSE,
GTK_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_INDICATOR_SIZE,
+ g_param_spec_int ("indicator-size",
+ P_("Indicator size"),
+ P_("Size of check or radio indicator"),
+ 0,
+ G_MAXINT,
+ TOGGLE_WIDTH,
+ GTK_PARAM_READWRITE));
+
/**
* GtkCellRendererToggle::toggled:
* The ::toggled signal is emitted when the cell is toggled.
**/
toggle_cell_signals[TOGGLED] =
- g_signal_new ("toggled",
+ g_signal_new (I_("toggled"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkCellRendererToggleClass, toggled),
case PROP_RADIO:
g_value_set_boolean (value, celltoggle->radio);
break;
+ case PROP_INDICATOR_SIZE:
+ g_value_set_int (value, priv->indicator_size);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
GtkCellRendererTogglePrivate *priv;
priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (object);
-
+
switch (param_id)
{
case PROP_ACTIVE:
celltoggle->active = g_value_get_boolean (value);
- g_object_notify (G_OBJECT(object), "active");
break;
case PROP_INCONSISTENT:
priv->inconsistent = g_value_get_boolean (value);
- g_object_notify (G_OBJECT (object), "inconsistent");
break;
case PROP_ACTIVATABLE:
celltoggle->activatable = g_value_get_boolean (value);
- g_object_notify (G_OBJECT(object), "activatable");
break;
case PROP_RADIO:
celltoggle->radio = g_value_get_boolean (value);
- g_object_notify (G_OBJECT(object), "radio");
+ break;
+ case PROP_INDICATOR_SIZE:
+ priv->indicator_size = g_value_get_int (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
/**
* gtk_cell_renderer_toggle_new:
- *
+ *
* Creates a new #GtkCellRendererToggle. Adjust rendering
* parameters using object properties. Object properties can be set
* globally (with g_object_set()). Also, with #GtkTreeViewColumn, you
* can bind the "active" property on the cell renderer to a boolean value
* in the model, thus causing the check button to reflect the state of
* the model.
- *
+ *
* Return value: the new cell renderer
**/
GtkCellRenderer *
{
gint calc_width;
gint calc_height;
+ GtkCellRendererTogglePrivate *priv;
+
+ priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell);
- calc_width = (gint) cell->xpad * 2 + TOGGLE_WIDTH;
- calc_height = (gint) cell->ypad * 2 + TOGGLE_WIDTH;
+ calc_width = (gint) cell->xpad * 2 + priv->indicator_size;
+ calc_height = (gint) cell->ypad * 2 + priv->indicator_size;
if (width)
*width = calc_width;