32
32
PROP_PROPERTY_NAME,
37
37
typedef struct CheesePrefsBalanceScalePrivate
40
40
gchar *property_name;
42
42
gboolean has_been_synchronized; /* Make sure we don't synchronize if client
43
* sets webcam on construction. */
43
* sets camera on construction. */
44
44
} CheesePrefsBalanceScalePrivate;
46
46
#define CHEESE_PREFS_BALANCE_SCALE_GET_PRIVATE(o) \
77
77
CheesePrefsBalanceScalePrivate *priv = CHEESE_PREFS_BALANCE_SCALE_GET_PRIVATE (self);
78
78
gdouble value = gtk_range_get_value (scale);
80
cheese_webcam_set_balance_property (priv->webcam, priv->property_name, value);
80
cheese_camera_set_balance_property (priv->camera, priv->property_name, value);
82
82
g_object_set (CHEESE_PREFS_WIDGET (self)->gconf, priv->gconf_key, value, NULL);
94
94
GtkAdjustment *adj;
95
95
gdouble min, max, def;
96
96
gdouble stored_value;
98
99
g_object_get (prefs_widget, "widget", &scale, NULL);
100
cheese_webcam_get_balance_property_range (priv->webcam,
101
priv->property_name, &min, &max, &def);
101
/* Disconnect to prevent a whole bunch of changed notifications */
102
g_signal_handlers_disconnect_by_func (scale, cheese_prefs_balance_scale_value_changed, prefs_widget);
104
can_balance = cheese_camera_get_balance_property_range (priv->camera,
105
priv->property_name, &min, &max, &def);
103
107
adj = GTK_ADJUSTMENT (gtk_adjustment_new (def, min, max, (max - min) / STEPS, 0.0, 0.0));
104
108
gtk_range_set_adjustment (GTK_RANGE (scale), adj);
106
110
gtk_scale_add_mark (GTK_SCALE (scale), def, GTK_POS_BOTTOM, NULL);
108
g_object_get (CHEESE_PREFS_WIDGET (self)->gconf, priv->gconf_key, &stored_value, NULL);
110
gtk_range_set_value (GTK_RANGE (scale), stored_value);
112
/* Disconnect to prevent a whole bunch of changed notifications */
113
g_signal_handlers_disconnect_by_func (scale, cheese_prefs_balance_scale_value_changed, prefs_widget);
112
gtk_widget_set_sensitive (scale, can_balance);
116
g_object_get (CHEESE_PREFS_WIDGET (self)->gconf, priv->gconf_key, &stored_value, NULL);
117
gtk_range_set_value (GTK_RANGE (scale), stored_value);
115
120
g_signal_connect (G_OBJECT (scale), "value-changed",
116
121
G_CALLBACK (cheese_prefs_balance_scale_value_changed),
132
137
case PROP_GCONF_KEY:
133
138
priv->gconf_key = g_value_dup_string (value);
136
priv->webcam = CHEESE_WEBCAM (g_value_get_object (value));
141
priv->camera = CHEESE_CAMERA (g_value_get_object (value));
137
142
if (priv->has_been_synchronized)
138
143
cheese_prefs_balance_scale_synchronize (CHEESE_PREFS_WIDGET (object));
159
164
case PROP_GCONF_KEY:
160
165
g_value_set_string (value, priv->gconf_key);
163
g_value_set_object (value, priv->webcam);
168
g_value_set_object (value, priv->camera);
166
171
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
198
203
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
200
205
g_object_class_install_property (object_class,
202
g_param_spec_object ("webcam",
207
g_param_spec_object ("camera",
206
211
G_PARAM_READWRITE));
209
214
CheesePrefsBalanceScale *
210
215
cheese_prefs_balance_scale_new (GtkWidget *scale,
211
CheeseWebcam *webcam,
216
CheeseCamera *camera,
212
217
const gchar *property,
213
218
const gchar *gconf_key)