mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
libgimpwidgets: GimpUnitComboBox and GimpZoomModel...
...are now FINAL TYPEs.
This commit is contained in:
parent
37d94f3fd6
commit
bced3c5e04
4 changed files with 39 additions and 83 deletions
|
@ -39,6 +39,12 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
struct _GimpUnitComboBox
|
||||||
|
{
|
||||||
|
GtkComboBox parent_instance;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static void gimp_unit_combo_box_popup_shown (GimpUnitComboBox *widget);
|
static void gimp_unit_combo_box_popup_shown (GimpUnitComboBox *widget);
|
||||||
static void gimp_unit_combo_box_constructed (GObject *object);
|
static void gimp_unit_combo_box_constructed (GObject *object);
|
||||||
|
|
||||||
|
|
|
@ -30,21 +30,7 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
||||||
#define GIMP_TYPE_UNIT_COMBO_BOX (gimp_unit_combo_box_get_type ())
|
#define GIMP_TYPE_UNIT_COMBO_BOX (gimp_unit_combo_box_get_type ())
|
||||||
G_DECLARE_DERIVABLE_TYPE (GimpUnitComboBox, gimp_unit_combo_box, GIMP, UNIT_COMBO_BOX, GtkComboBox)
|
G_DECLARE_FINAL_TYPE (GimpUnitComboBox, gimp_unit_combo_box, GIMP, UNIT_COMBO_BOX, GtkComboBox)
|
||||||
struct _GimpUnitComboBoxClass
|
|
||||||
{
|
|
||||||
GtkComboBoxClass parent_class;
|
|
||||||
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*_gimp_reserved1) (void);
|
|
||||||
void (*_gimp_reserved2) (void);
|
|
||||||
void (*_gimp_reserved3) (void);
|
|
||||||
void (*_gimp_reserved4) (void);
|
|
||||||
void (*_gimp_reserved5) (void);
|
|
||||||
void (*_gimp_reserved6) (void);
|
|
||||||
void (*_gimp_reserved7) (void);
|
|
||||||
void (*_gimp_reserved8) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GtkWidget * gimp_unit_combo_box_new (void);
|
GtkWidget * gimp_unit_combo_box_new (void);
|
||||||
|
|
|
@ -63,12 +63,14 @@ enum
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GimpZoomModelPrivate
|
struct _GimpZoomModel
|
||||||
{
|
{
|
||||||
|
GObject parent_instance;
|
||||||
|
|
||||||
gdouble value;
|
gdouble value;
|
||||||
gdouble minimum;
|
gdouble minimum;
|
||||||
gdouble maximum;
|
gdouble maximum;
|
||||||
} GimpZoomModelPrivate;
|
};
|
||||||
|
|
||||||
|
|
||||||
static void gimp_zoom_model_set_property (GObject *object,
|
static void gimp_zoom_model_set_property (GObject *object,
|
||||||
|
@ -84,7 +86,7 @@ static void gimp_zoom_model_get_property (GObject *object,
|
||||||
static guint zoom_model_signals[LAST_SIGNAL] = { 0, };
|
static guint zoom_model_signals[LAST_SIGNAL] = { 0, };
|
||||||
static GParamSpec *object_props[N_PROPS] = { NULL, };
|
static GParamSpec *object_props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (GimpZoomModel, gimp_zoom_model, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (GimpZoomModel, gimp_zoom_model, G_TYPE_OBJECT)
|
||||||
|
|
||||||
#define parent_class gimp_zoom_model_parent_class
|
#define parent_class gimp_zoom_model_parent_class
|
||||||
|
|
||||||
|
@ -106,8 +108,7 @@ gimp_zoom_model_class_init (GimpZoomModelClass *klass)
|
||||||
g_signal_new ("zoomed",
|
g_signal_new ("zoomed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (GimpZoomModelClass,
|
0,
|
||||||
zoomed),
|
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
_gimp_widgets_marshal_VOID__DOUBLE_DOUBLE,
|
_gimp_widgets_marshal_VOID__DOUBLE_DOUBLE,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
|
@ -177,13 +178,9 @@ gimp_zoom_model_class_init (GimpZoomModelClass *klass)
|
||||||
static void
|
static void
|
||||||
gimp_zoom_model_init (GimpZoomModel *model)
|
gimp_zoom_model_init (GimpZoomModel *model)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv;
|
model->value = 1.0;
|
||||||
|
model->minimum = ZOOM_MIN;
|
||||||
priv = gimp_zoom_model_get_instance_private (model);
|
model->maximum = ZOOM_MAX;
|
||||||
|
|
||||||
priv->value = 1.0;
|
|
||||||
priv->minimum = ZOOM_MIN;
|
|
||||||
priv->maximum = ZOOM_MAX;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -192,17 +189,16 @@ gimp_zoom_model_set_property (GObject *object,
|
||||||
const GValue *value,
|
const GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
|
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
gdouble previous_value;
|
||||||
gdouble previous_value;
|
|
||||||
|
|
||||||
previous_value = priv->value;
|
previous_value = model->value;
|
||||||
g_object_freeze_notify (object);
|
g_object_freeze_notify (object);
|
||||||
|
|
||||||
switch (property_id)
|
switch (property_id)
|
||||||
{
|
{
|
||||||
case PROP_VALUE:
|
case PROP_VALUE:
|
||||||
priv->value = g_value_get_double (value);
|
model->value = g_value_get_double (value);
|
||||||
|
|
||||||
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
|
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
|
||||||
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
|
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
|
||||||
|
@ -210,11 +206,11 @@ gimp_zoom_model_set_property (GObject *object,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_MINIMUM:
|
case PROP_MINIMUM:
|
||||||
priv->minimum = MIN (g_value_get_double (value), priv->maximum);
|
model->minimum = MIN (g_value_get_double (value), model->maximum);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_MAXIMUM:
|
case PROP_MAXIMUM:
|
||||||
priv->maximum = MAX (g_value_get_double (value), priv->minimum);
|
model->maximum = MAX (g_value_get_double (value), model->minimum);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -222,9 +218,9 @@ gimp_zoom_model_set_property (GObject *object,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->value > priv->maximum || priv->value < priv->minimum)
|
if (model->value > model->maximum || model->value < model->minimum)
|
||||||
{
|
{
|
||||||
priv->value = CLAMP (priv->value, priv->minimum, priv->maximum);
|
model->value = CLAMP (model->value, model->minimum, model->maximum);
|
||||||
|
|
||||||
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
|
g_object_notify_by_pspec (object, object_props[PROP_VALUE]);
|
||||||
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
|
g_object_notify_by_pspec (object, object_props[PROP_FRACTION]);
|
||||||
|
@ -233,10 +229,10 @@ gimp_zoom_model_set_property (GObject *object,
|
||||||
|
|
||||||
g_object_thaw_notify (object);
|
g_object_thaw_notify (object);
|
||||||
|
|
||||||
if (priv->value != previous_value)
|
if (model->value != previous_value)
|
||||||
{
|
{
|
||||||
g_signal_emit (object, zoom_model_signals[ZOOMED],
|
g_signal_emit (object, zoom_model_signals[ZOOMED],
|
||||||
0, previous_value, priv->value);
|
0, previous_value, model->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,22 +242,21 @@ gimp_zoom_model_get_property (GObject *object,
|
||||||
GValue *value,
|
GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
|
GimpZoomModel *model = GIMP_ZOOM_MODEL (object);
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
gchar *tmp;
|
||||||
gchar *tmp;
|
|
||||||
|
|
||||||
switch (property_id)
|
switch (property_id)
|
||||||
{
|
{
|
||||||
case PROP_VALUE:
|
case PROP_VALUE:
|
||||||
g_value_set_double (value, priv->value);
|
g_value_set_double (value, model->value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_MINIMUM:
|
case PROP_MINIMUM:
|
||||||
g_value_set_double (value, priv->minimum);
|
g_value_set_double (value, model->minimum);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_MAXIMUM:
|
case PROP_MAXIMUM:
|
||||||
g_value_set_double (value, priv->maximum);
|
g_value_set_double (value, model->maximum);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_FRACTION:
|
case PROP_FRACTION:
|
||||||
|
@ -279,8 +274,8 @@ gimp_zoom_model_get_property (GObject *object,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_PERCENTAGE:
|
case PROP_PERCENTAGE:
|
||||||
tmp = g_strdup_printf (priv->value >= 0.15 ? "%.0f%%" : "%.2f%%",
|
tmp = g_strdup_printf (model->value >= 0.15 ? "%.0f%%" : "%.2f%%",
|
||||||
priv->value * 100.0);
|
model->value * 100.0);
|
||||||
g_value_set_string (value, tmp);
|
g_value_set_string (value, tmp);
|
||||||
g_free (tmp);
|
g_free (tmp);
|
||||||
break;
|
break;
|
||||||
|
@ -294,18 +289,14 @@ gimp_zoom_model_get_property (GObject *object,
|
||||||
static void
|
static void
|
||||||
gimp_zoom_model_zoom_in (GimpZoomModel *model)
|
gimp_zoom_model_zoom_in (GimpZoomModel *model)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
if (model->value < model->maximum)
|
||||||
|
|
||||||
if (priv->value < priv->maximum)
|
|
||||||
gimp_zoom_model_zoom (model, GIMP_ZOOM_IN, 0.0);
|
gimp_zoom_model_zoom (model, GIMP_ZOOM_IN, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_zoom_model_zoom_out (GimpZoomModel *model)
|
gimp_zoom_model_zoom_out (GimpZoomModel *model)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
if (model->value > model->minimum)
|
||||||
|
|
||||||
if (priv->value > priv->minimum)
|
|
||||||
gimp_zoom_model_zoom (model, GIMP_ZOOM_OUT, 0.0);
|
gimp_zoom_model_zoom (model, GIMP_ZOOM_OUT, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,13 +383,9 @@ gimp_zoom_model_zoom (GimpZoomModel *model,
|
||||||
gdouble
|
gdouble
|
||||||
gimp_zoom_model_get_factor (GimpZoomModel *model)
|
gimp_zoom_model_get_factor (GimpZoomModel *model)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_ZOOM_MODEL (model), 1.0);
|
g_return_val_if_fail (GIMP_IS_ZOOM_MODEL (model), 1.0);
|
||||||
|
|
||||||
priv = gimp_zoom_model_get_instance_private (model);
|
return model->value;
|
||||||
|
|
||||||
return priv->value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -519,9 +506,7 @@ zoom_in_button_callback (GimpZoomModel *model,
|
||||||
gdouble new,
|
gdouble new,
|
||||||
GtkWidget *button)
|
GtkWidget *button)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
gtk_widget_set_sensitive (button, model->value != model->maximum);
|
||||||
|
|
||||||
gtk_widget_set_sensitive (button, priv->value != priv->maximum);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -530,9 +515,7 @@ zoom_out_button_callback (GimpZoomModel *model,
|
||||||
gdouble new,
|
gdouble new,
|
||||||
GtkWidget *button)
|
GtkWidget *button)
|
||||||
{
|
{
|
||||||
GimpZoomModelPrivate *priv = gimp_zoom_model_get_instance_private (model);
|
gtk_widget_set_sensitive (button, model->value != model->minimum);
|
||||||
|
|
||||||
gtk_widget_set_sensitive (button, priv->value != priv->minimum);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -30,26 +30,7 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
||||||
#define GIMP_TYPE_ZOOM_MODEL (gimp_zoom_model_get_type ())
|
#define GIMP_TYPE_ZOOM_MODEL (gimp_zoom_model_get_type ())
|
||||||
G_DECLARE_DERIVABLE_TYPE (GimpZoomModel, gimp_zoom_model, GIMP, ZOOM_MODEL, GtkGrid)
|
G_DECLARE_FINAL_TYPE (GimpZoomModel, gimp_zoom_model, GIMP, ZOOM_MODEL, GObject)
|
||||||
|
|
||||||
struct _GimpZoomModelClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
void (* zoomed) (GimpZoomModel *model,
|
|
||||||
gdouble old_factor,
|
|
||||||
gdouble new_factor);
|
|
||||||
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (* _gimp_reserved1) (void);
|
|
||||||
void (* _gimp_reserved2) (void);
|
|
||||||
void (* _gimp_reserved3) (void);
|
|
||||||
void (* _gimp_reserved4) (void);
|
|
||||||
void (* _gimp_reserved5) (void);
|
|
||||||
void (* _gimp_reserved6) (void);
|
|
||||||
void (* _gimp_reserved7) (void);
|
|
||||||
void (* _gimp_reserved8) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
GimpZoomModel * gimp_zoom_model_new (void);
|
GimpZoomModel * gimp_zoom_model_new (void);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue