Add support for adjusting wallpaper brightness
2000-12-17 Bradford Hovinen <hovinen@helixcode.com> * capplets/new-background-properties/applier.c (renderer_render_wallpaper): Add support for adjusting wallpaper brightness * capplets/new-background-properties/main.c (ok_cb): (cancel_cb): Disconnect ok, cancel handler signals before destroying preferences widget (setup_capplet_widget): Set signal handler ids for ok, cancel signals * capplets/new-background-properties/prefs-widget.c (prefs_widget_init): Connect signals for adjusting brightness (adjust_brightness_toggled_cb): (brightness_adjust_changed_cb): (set_brightness_controls_sensitive): Implement * capplets/new-background-properties/preferences.h (struct _Preferences): Add adjust_brightness, brightness_value * capplets/new-background-properties/preferences.c (preferences_load): (preferences_save): (preferences_read_xml): (preferences_write_xml): Support adjust_brightness, brightness_value * capplets/new-background-properties/prefs-widget.c (wallpaper_entry_changed_cb): Don't fail if prefs is NULL, just return * capplets/new-background-properties/main.c (ok_cb): (cancel_cb): Properly destroy the preferences widget * capplets/new-background-properties/prefs-widget.c (prefs_widget_destroy): Implement
This commit is contained in:
parent
394501074b
commit
480213cab5
8 changed files with 382 additions and 14 deletions
34
ChangeLog
34
ChangeLog
|
@ -1,5 +1,39 @@
|
||||||
2000-12-17 Bradford Hovinen <hovinen@helixcode.com>
|
2000-12-17 Bradford Hovinen <hovinen@helixcode.com>
|
||||||
|
|
||||||
|
* capplets/new-background-properties/applier.c
|
||||||
|
(renderer_render_wallpaper): Add support for adjusting wallpaper
|
||||||
|
brightness
|
||||||
|
|
||||||
|
* capplets/new-background-properties/main.c (ok_cb):
|
||||||
|
(cancel_cb): Disconnect ok, cancel handler signals before
|
||||||
|
destroying preferences widget
|
||||||
|
(setup_capplet_widget): Set signal handler ids for ok, cancel
|
||||||
|
signals
|
||||||
|
|
||||||
|
* capplets/new-background-properties/prefs-widget.c
|
||||||
|
(prefs_widget_init): Connect signals for adjusting brightness
|
||||||
|
(adjust_brightness_toggled_cb):
|
||||||
|
(brightness_adjust_changed_cb):
|
||||||
|
(set_brightness_controls_sensitive): Implement
|
||||||
|
|
||||||
|
* capplets/new-background-properties/preferences.h (struct
|
||||||
|
_Preferences): Add adjust_brightness, brightness_value
|
||||||
|
|
||||||
|
* capplets/new-background-properties/preferences.c (preferences_load):
|
||||||
|
(preferences_save):
|
||||||
|
(preferences_read_xml):
|
||||||
|
(preferences_write_xml): Support adjust_brightness, brightness_value
|
||||||
|
|
||||||
|
* capplets/new-background-properties/prefs-widget.c
|
||||||
|
(wallpaper_entry_changed_cb): Don't fail if prefs is NULL, just
|
||||||
|
return
|
||||||
|
|
||||||
|
* capplets/new-background-properties/main.c (ok_cb):
|
||||||
|
(cancel_cb): Properly destroy the preferences widget
|
||||||
|
|
||||||
|
* capplets/new-background-properties/prefs-widget.c
|
||||||
|
(prefs_widget_destroy): Implement
|
||||||
|
|
||||||
* capplets/new-background-properties/preferences.c
|
* capplets/new-background-properties/preferences.c
|
||||||
(preferences_changed): Increased delay before autoapply
|
(preferences_changed): Increased delay before autoapply
|
||||||
(preferences_load):
|
(preferences_load):
|
||||||
|
|
|
@ -537,6 +537,8 @@ run_render_pipeline (Renderer *renderer,
|
||||||
old_prefs->orientation != new_prefs->orientation ||
|
old_prefs->orientation != new_prefs->orientation ||
|
||||||
!gdk_color_equal (old_prefs->color1, new_prefs->color1) ||
|
!gdk_color_equal (old_prefs->color1, new_prefs->color1) ||
|
||||||
!gdk_color_equal (old_prefs->color2, new_prefs->color2) ||
|
!gdk_color_equal (old_prefs->color2, new_prefs->color2) ||
|
||||||
|
old_prefs->adjust_brightness != new_prefs->adjust_brightness ||
|
||||||
|
old_prefs->brightness_value != new_prefs->brightness_value ||
|
||||||
((wallpaper_pixbuf != NULL ||
|
((wallpaper_pixbuf != NULL ||
|
||||||
old_prefs->wallpaper_type != new_prefs->wallpaper_type) &&
|
old_prefs->wallpaper_type != new_prefs->wallpaper_type) &&
|
||||||
render_gradient_p (renderer, new_prefs)))
|
render_gradient_p (renderer, new_prefs)))
|
||||||
|
@ -703,6 +705,7 @@ static void
|
||||||
renderer_render_wallpaper (Renderer *renderer)
|
renderer_render_wallpaper (Renderer *renderer)
|
||||||
{
|
{
|
||||||
gint root_width, root_height;
|
gint root_width, root_height;
|
||||||
|
gdouble scalex, scaley;
|
||||||
|
|
||||||
g_return_if_fail (renderer != NULL);
|
g_return_if_fail (renderer != NULL);
|
||||||
g_return_if_fail (!render_gradient_p (renderer, renderer->prefs) ||
|
g_return_if_fail (!render_gradient_p (renderer, renderer->prefs) ||
|
||||||
|
@ -722,12 +725,49 @@ renderer_render_wallpaper (Renderer *renderer)
|
||||||
&renderer->wwidth, &renderer->wheight,
|
&renderer->wwidth, &renderer->wheight,
|
||||||
&renderer->srcx, &renderer->srcy);
|
&renderer->srcx, &renderer->srcy);
|
||||||
|
|
||||||
if (renderer->wwidth != renderer->pwidth ||
|
if (renderer->prefs->adjust_brightness) {
|
||||||
renderer->wheight != renderer->pheight)
|
guint alpha_value;
|
||||||
|
guint32 color;
|
||||||
|
|
||||||
|
alpha_value = ABS (renderer->prefs->brightness_value);
|
||||||
|
alpha_value = 256 - alpha_value * alpha_value / 256;
|
||||||
|
alpha_value = CLAMP (alpha_value, 0, 255);
|
||||||
|
color = (renderer->prefs->brightness_value < 0) ?
|
||||||
|
0 : (guint32) -1;
|
||||||
|
|
||||||
|
if (render_gradient_p (renderer, renderer->prefs)) {
|
||||||
|
scalex = (gdouble) renderer->wwidth /
|
||||||
|
(gdouble) renderer->pwidth;
|
||||||
|
scaley = (gdouble) renderer->wheight /
|
||||||
|
(gdouble) renderer->pheight;
|
||||||
|
|
||||||
|
gdk_pixbuf_composite_color
|
||||||
|
(renderer->wallpaper_pixbuf,
|
||||||
|
renderer->pixbuf,
|
||||||
|
renderer->wx, renderer->wy,
|
||||||
|
renderer->wwidth, renderer->wheight,
|
||||||
|
renderer->wx, renderer->wy,
|
||||||
|
scalex, scaley,
|
||||||
|
GDK_INTERP_BILINEAR,
|
||||||
|
alpha_value, 0, 0, 65536,
|
||||||
|
color, color);
|
||||||
|
} else {
|
||||||
|
if (renderer->pixbuf != NULL)
|
||||||
|
gdk_pixbuf_unref (renderer->pixbuf);
|
||||||
|
|
||||||
|
renderer->pixbuf =
|
||||||
|
gdk_pixbuf_composite_color_simple
|
||||||
|
(renderer->wallpaper_pixbuf,
|
||||||
|
renderer->wwidth, renderer->wheight,
|
||||||
|
GDK_INTERP_BILINEAR,
|
||||||
|
alpha_value, 65536,
|
||||||
|
color, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (renderer->wwidth != renderer->pwidth ||
|
||||||
|
renderer->wheight != renderer->pheight)
|
||||||
{
|
{
|
||||||
if (render_gradient_p (renderer, renderer->prefs)) {
|
if (render_gradient_p (renderer, renderer->prefs)) {
|
||||||
gdouble scalex, scaley;
|
|
||||||
|
|
||||||
scalex = (gdouble) renderer->wwidth /
|
scalex = (gdouble) renderer->wwidth /
|
||||||
(gdouble) renderer->pwidth;
|
(gdouble) renderer->pwidth;
|
||||||
scaley = (gdouble) renderer->wheight /
|
scaley = (gdouble) renderer->wheight /
|
||||||
|
@ -737,7 +777,8 @@ renderer_render_wallpaper (Renderer *renderer)
|
||||||
(renderer->wallpaper_pixbuf,
|
(renderer->wallpaper_pixbuf,
|
||||||
renderer->pixbuf,
|
renderer->pixbuf,
|
||||||
renderer->wx, renderer->wy,
|
renderer->wx, renderer->wy,
|
||||||
renderer->wwidth, renderer->wheight,
|
renderer->wwidth,
|
||||||
|
renderer->wheight,
|
||||||
renderer->wx, renderer->wy,
|
renderer->wx, renderer->wy,
|
||||||
scalex, scaley,
|
scalex, scaley,
|
||||||
GDK_INTERP_BILINEAR);
|
GDK_INTERP_BILINEAR);
|
||||||
|
@ -748,7 +789,8 @@ renderer_render_wallpaper (Renderer *renderer)
|
||||||
renderer->pixbuf =
|
renderer->pixbuf =
|
||||||
gdk_pixbuf_scale_simple
|
gdk_pixbuf_scale_simple
|
||||||
(renderer->wallpaper_pixbuf,
|
(renderer->wallpaper_pixbuf,
|
||||||
renderer->wwidth, renderer->wheight,
|
renderer->wwidth,
|
||||||
|
renderer->wheight,
|
||||||
GDK_INTERP_BILINEAR);
|
GDK_INTERP_BILINEAR);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<class>GtkTable</class>
|
<class>GtkTable</class>
|
||||||
<name>prefs_widget</name>
|
<name>prefs_widget</name>
|
||||||
<border_width>5</border_width>
|
<border_width>5</border_width>
|
||||||
<rows>4</rows>
|
<rows>5</rows>
|
||||||
<columns>2</columns>
|
<columns>2</columns>
|
||||||
<homogeneous>False</homogeneous>
|
<homogeneous>False</homogeneous>
|
||||||
<row_spacing>5</row_spacing>
|
<row_spacing>5</row_spacing>
|
||||||
|
@ -361,6 +361,7 @@
|
||||||
<widget>
|
<widget>
|
||||||
<class>GnomeFileEntry</class>
|
<class>GnomeFileEntry</class>
|
||||||
<name>wallpaper_entry</name>
|
<name>wallpaper_entry</name>
|
||||||
|
<history_id>gnomecc_background_wallpaper_filename</history_id>
|
||||||
<max_saved>10</max_saved>
|
<max_saved>10</max_saved>
|
||||||
<directory>False</directory>
|
<directory>False</directory>
|
||||||
<modal>False</modal>
|
<modal>False</modal>
|
||||||
|
@ -549,6 +550,140 @@
|
||||||
<yfill>False</yfill>
|
<yfill>False</yfill>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkTable</class>
|
||||||
|
<name>table3</name>
|
||||||
|
<rows>2</rows>
|
||||||
|
<columns>3</columns>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<row_spacing>5</row_spacing>
|
||||||
|
<column_spacing>5</column_spacing>
|
||||||
|
<child>
|
||||||
|
<left_attach>0</left_attach>
|
||||||
|
<right_attach>2</right_attach>
|
||||||
|
<top_attach>4</top_attach>
|
||||||
|
<bottom_attach>5</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>False</xexpand>
|
||||||
|
<yexpand>True</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>True</yfill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkCheckButton</class>
|
||||||
|
<name>adjust_brightness_toggle</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<signal>
|
||||||
|
<name>toggled</name>
|
||||||
|
<handler>adjust_brightness_toggled_cb</handler>
|
||||||
|
<last_modification_time>Sun, 17 Dec 2000 23:15:19 GMT</last_modification_time>
|
||||||
|
</signal>
|
||||||
|
<label>Adjust background's brightness</label>
|
||||||
|
<active>False</active>
|
||||||
|
<draw_indicator>True</draw_indicator>
|
||||||
|
<child>
|
||||||
|
<left_attach>0</left_attach>
|
||||||
|
<right_attach>3</right_attach>
|
||||||
|
<top_attach>0</top_attach>
|
||||||
|
<bottom_attach>1</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>True</xexpand>
|
||||||
|
<yexpand>False</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>False</yfill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>brightness_low_label</name>
|
||||||
|
<label>Dimmer</label>
|
||||||
|
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>1</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<left_attach>0</left_attach>
|
||||||
|
<right_attach>1</right_attach>
|
||||||
|
<top_attach>1</top_attach>
|
||||||
|
<bottom_attach>2</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>False</xexpand>
|
||||||
|
<yexpand>False</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>False</yfill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>brightness_high_label</name>
|
||||||
|
<label>Brighter</label>
|
||||||
|
<justify>GTK_JUSTIFY_LEFT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<left_attach>2</left_attach>
|
||||||
|
<right_attach>3</right_attach>
|
||||||
|
<top_attach>1</top_attach>
|
||||||
|
<bottom_attach>2</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>False</xexpand>
|
||||||
|
<yexpand>False</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>False</yfill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHScale</class>
|
||||||
|
<name>brightness_adjust</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<draw_value>False</draw_value>
|
||||||
|
<value_pos>GTK_POS_TOP</value_pos>
|
||||||
|
<digits>1</digits>
|
||||||
|
<policy>GTK_UPDATE_CONTINUOUS</policy>
|
||||||
|
<value>0</value>
|
||||||
|
<lower>-255</lower>
|
||||||
|
<upper>255</upper>
|
||||||
|
<step>0</step>
|
||||||
|
<page>0</page>
|
||||||
|
<page_size>0</page_size>
|
||||||
|
<child>
|
||||||
|
<left_attach>1</left_attach>
|
||||||
|
<right_attach>2</right_attach>
|
||||||
|
<top_attach>1</top_attach>
|
||||||
|
<bottom_attach>2</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>False</xexpand>
|
||||||
|
<yexpand>False</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>True</yfill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,6 @@ gchar *s = N_("Scaled (keep aspect)");
|
||||||
gchar *s = N_("Scaled");
|
gchar *s = N_("Scaled");
|
||||||
gchar *s = N_("Disable background selection");
|
gchar *s = N_("Disable background selection");
|
||||||
gchar *s = N_("Apply changes automatically");
|
gchar *s = N_("Apply changes automatically");
|
||||||
|
gchar *s = N_("Adjust background's brightness");
|
||||||
|
gchar *s = N_("Dimmer");
|
||||||
|
gchar *s = N_("Brighter");
|
||||||
|
|
|
@ -42,11 +42,17 @@ static Preferences *prefs;
|
||||||
static Preferences *old_prefs;
|
static Preferences *old_prefs;
|
||||||
static PrefsWidget *prefs_widget;
|
static PrefsWidget *prefs_widget;
|
||||||
|
|
||||||
|
static guint ok_handler_id;
|
||||||
|
static guint cancel_handler_id;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ok_cb (GtkWidget *widget)
|
ok_cb (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
preferences_save (prefs);
|
preferences_save (prefs);
|
||||||
preferences_apply_now (prefs);
|
preferences_apply_now (prefs);
|
||||||
|
gtk_signal_disconnect (GTK_OBJECT (prefs_widget), ok_handler_id);
|
||||||
|
gtk_signal_disconnect (GTK_OBJECT (prefs_widget), cancel_handler_id);
|
||||||
|
gtk_object_destroy (GTK_OBJECT (prefs_widget));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -54,6 +60,9 @@ cancel_cb (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
preferences_save (old_prefs);
|
preferences_save (old_prefs);
|
||||||
preferences_apply_now (old_prefs);
|
preferences_apply_now (old_prefs);
|
||||||
|
gtk_signal_disconnect (GTK_OBJECT (prefs_widget), ok_handler_id);
|
||||||
|
gtk_signal_disconnect (GTK_OBJECT (prefs_widget), cancel_handler_id);
|
||||||
|
gtk_object_destroy (GTK_OBJECT (prefs_widget));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -63,10 +72,12 @@ setup_capplet_widget (void)
|
||||||
|
|
||||||
prefs_widget = PREFS_WIDGET (prefs_widget_new (prefs));
|
prefs_widget = PREFS_WIDGET (prefs_widget_new (prefs));
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (prefs_widget), "ok",
|
ok_handler_id =
|
||||||
GTK_SIGNAL_FUNC (ok_cb), NULL);
|
gtk_signal_connect (GTK_OBJECT (prefs_widget), "ok",
|
||||||
gtk_signal_connect (GTK_OBJECT (prefs_widget), "cancel",
|
GTK_SIGNAL_FUNC (ok_cb), NULL);
|
||||||
GTK_SIGNAL_FUNC (cancel_cb), NULL);
|
cancel_handler_id =
|
||||||
|
gtk_signal_connect (GTK_OBJECT (prefs_widget), "cancel",
|
||||||
|
GTK_SIGNAL_FUNC (cancel_cb), NULL);
|
||||||
|
|
||||||
gtk_widget_show_all (GTK_WIDGET (prefs_widget));
|
gtk_widget_show_all (GTK_WIDGET (prefs_widget));
|
||||||
|
|
||||||
|
|
|
@ -140,6 +140,10 @@ preferences_clone (Preferences *prefs)
|
||||||
new_prefs->wallpaper_sel_path =
|
new_prefs->wallpaper_sel_path =
|
||||||
g_strdup (prefs->wallpaper_sel_path);;
|
g_strdup (prefs->wallpaper_sel_path);;
|
||||||
|
|
||||||
|
new_prefs->auto_apply = prefs->auto_apply;
|
||||||
|
new_prefs->adjust_brightness = prefs->adjust_brightness;
|
||||||
|
new_prefs->brightness_value = prefs->brightness_value;
|
||||||
|
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,6 +235,17 @@ preferences_load (Preferences *prefs)
|
||||||
} else {
|
} else {
|
||||||
prefs->wallpaper_enabled = TRUE;
|
prefs->wallpaper_enabled = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string = gnome_config_get_string
|
||||||
|
("/Background/Default/adjustBrightness=true");
|
||||||
|
if (!g_strcasecmp (string, "true"))
|
||||||
|
prefs->adjust_brightness = TRUE;
|
||||||
|
else if (g_strcasecmp (string, "false"))
|
||||||
|
prefs->adjust_brightness = FALSE;
|
||||||
|
g_free (string);
|
||||||
|
|
||||||
|
prefs->brightness_value =
|
||||||
|
gnome_config_get_int ("/Background/Default/brightnessValue=0");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -271,6 +286,11 @@ preferences_save (Preferences *prefs)
|
||||||
gnome_config_set_string ("/Background/Default/autoApply",
|
gnome_config_set_string ("/Background/Default/autoApply",
|
||||||
prefs->auto_apply ? "True" : "False");
|
prefs->auto_apply ? "True" : "False");
|
||||||
|
|
||||||
|
gnome_config_set_string ("/Background/Default/adjustBrightness",
|
||||||
|
prefs->adjust_brightness ? "True" : "False");
|
||||||
|
gnome_config_set_int ("/Background/Default/brightnessValue",
|
||||||
|
prefs->brightness_value);
|
||||||
|
|
||||||
gnome_config_sync ();
|
gnome_config_sync ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +304,7 @@ preferences_changed (Preferences *prefs)
|
||||||
|
|
||||||
if (prefs->auto_apply)
|
if (prefs->auto_apply)
|
||||||
prefs->timeout_id =
|
prefs->timeout_id =
|
||||||
gtk_timeout_add (5000, (GtkFunction) apply_timeout_cb,
|
gtk_timeout_add (2000, (GtkFunction) apply_timeout_cb,
|
||||||
prefs);
|
prefs);
|
||||||
|
|
||||||
applier_apply_prefs (applier, prefs, FALSE, TRUE);
|
applier_apply_prefs (applier, prefs, FALSE, TRUE);
|
||||||
|
@ -384,6 +404,10 @@ preferences_read_xml (xmlDocPtr xml_doc)
|
||||||
g_strdup (xmlNodeGetContent (node));
|
g_strdup (xmlNodeGetContent (node));
|
||||||
else if (!strcmp (node->name, "auto-apply"))
|
else if (!strcmp (node->name, "auto-apply"))
|
||||||
prefs->auto_apply = TRUE;
|
prefs->auto_apply = TRUE;
|
||||||
|
else if (!strcmp (node->name, "adjust-brightness"))
|
||||||
|
prefs->auto_apply = TRUE;
|
||||||
|
else if (!strcmp (node->name, "brightness-value"))
|
||||||
|
prefs->brightness_value = xml_read_int (node, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return prefs;
|
return prefs;
|
||||||
|
@ -436,6 +460,11 @@ preferences_write_xml (Preferences *prefs)
|
||||||
if (prefs->auto_apply)
|
if (prefs->auto_apply)
|
||||||
xmlNewChild (node, NULL, "auto-apply", NULL);
|
xmlNewChild (node, NULL, "auto-apply", NULL);
|
||||||
|
|
||||||
|
if (prefs->adjust_brightness)
|
||||||
|
xmlNewChild (node, NULL, "adjust-brightness", NULL);
|
||||||
|
xmlAddChild (node, xml_write_int ("brightness-value", NULL,
|
||||||
|
prefs->brightness_value));
|
||||||
|
|
||||||
xmlDocSetRootElement (doc, node);
|
xmlDocSetRootElement (doc, node);
|
||||||
|
|
||||||
return doc;
|
return doc;
|
||||||
|
|
|
@ -63,6 +63,9 @@ struct _Preferences
|
||||||
|
|
||||||
gchar *wallpaper_filename;
|
gchar *wallpaper_filename;
|
||||||
gchar *wallpaper_sel_path;
|
gchar *wallpaper_sel_path;
|
||||||
|
|
||||||
|
gboolean adjust_brightness;
|
||||||
|
gint brightness_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _PreferencesClass
|
struct _PreferencesClass
|
||||||
|
|
|
@ -48,6 +48,7 @@ static void prefs_widget_set_arg (GtkObject *object,
|
||||||
static void prefs_widget_get_arg (GtkObject *object,
|
static void prefs_widget_get_arg (GtkObject *object,
|
||||||
GtkArg *arg,
|
GtkArg *arg,
|
||||||
guint arg_id);
|
guint arg_id);
|
||||||
|
static void prefs_widget_destroy (GtkObject *object);
|
||||||
|
|
||||||
static void read_preferences (PrefsWidget *prefs_widget,
|
static void read_preferences (PrefsWidget *prefs_widget,
|
||||||
Preferences *prefs);
|
Preferences *prefs);
|
||||||
|
@ -87,6 +88,10 @@ static void disable_toggled_cb (GtkToggleButton *tb,
|
||||||
PrefsWidget *prefs_widget);
|
PrefsWidget *prefs_widget);
|
||||||
static void auto_apply_toggled_cb (GtkToggleButton *tb,
|
static void auto_apply_toggled_cb (GtkToggleButton *tb,
|
||||||
PrefsWidget *prefs_widget);
|
PrefsWidget *prefs_widget);
|
||||||
|
static void adjust_brightness_toggled_cb (GtkToggleButton *tb,
|
||||||
|
PrefsWidget *prefs_widget);
|
||||||
|
static void brightness_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||||
|
PrefsWidget *prefs_widget);
|
||||||
|
|
||||||
static void set_gradient_controls_sensitive (PrefsWidget *prefs_widget,
|
static void set_gradient_controls_sensitive (PrefsWidget *prefs_widget,
|
||||||
gboolean s);
|
gboolean s);
|
||||||
|
@ -94,6 +99,8 @@ static void set_wallpaper_controls_sensitive (PrefsWidget *prefs_widget,
|
||||||
gboolean s);
|
gboolean s);
|
||||||
static void set_background_controls_sensitive (PrefsWidget *prefs_widget,
|
static void set_background_controls_sensitive (PrefsWidget *prefs_widget,
|
||||||
gboolean s);
|
gboolean s);
|
||||||
|
static void set_brightness_controls_sensitive (PrefsWidget *prefs_widget,
|
||||||
|
gboolean s);
|
||||||
|
|
||||||
guint
|
guint
|
||||||
prefs_widget_get_type (void)
|
prefs_widget_get_type (void)
|
||||||
|
@ -123,6 +130,7 @@ static void
|
||||||
prefs_widget_init (PrefsWidget *prefs_widget)
|
prefs_widget_init (PrefsWidget *prefs_widget)
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
GtkAdjustment *adjustment;
|
||||||
|
|
||||||
prefs_widget->dialog_data =
|
prefs_widget->dialog_data =
|
||||||
glade_xml_new (GLADE_DATADIR "/background-properties.glade",
|
glade_xml_new (GLADE_DATADIR "/background-properties.glade",
|
||||||
|
@ -189,6 +197,20 @@ prefs_widget_init (PrefsWidget *prefs_widget)
|
||||||
"auto_apply_toggled_cb",
|
"auto_apply_toggled_cb",
|
||||||
auto_apply_toggled_cb,
|
auto_apply_toggled_cb,
|
||||||
prefs_widget);
|
prefs_widget);
|
||||||
|
glade_xml_signal_connect_data (prefs_widget->dialog_data,
|
||||||
|
"adjust_brightness_toggled_cb",
|
||||||
|
adjust_brightness_toggled_cb,
|
||||||
|
prefs_widget);
|
||||||
|
|
||||||
|
adjustment = gtk_range_get_adjustment
|
||||||
|
(GTK_RANGE (WID ("brightness_adjust")));
|
||||||
|
gtk_signal_connect (GTK_OBJECT (adjustment), "value-changed",
|
||||||
|
GTK_SIGNAL_FUNC (brightness_adjust_changed_cb),
|
||||||
|
prefs_widget);
|
||||||
|
|
||||||
|
gnome_entry_load_history
|
||||||
|
(GNOME_ENTRY (gnome_file_entry_gnome_entry
|
||||||
|
(GNOME_FILE_ENTRY (WID ("wallpaper_entry")))));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -202,6 +224,7 @@ prefs_widget_class_init (PrefsWidgetClass *class)
|
||||||
ARG_PREFERENCES);
|
ARG_PREFERENCES);
|
||||||
|
|
||||||
object_class = GTK_OBJECT_CLASS (class);
|
object_class = GTK_OBJECT_CLASS (class);
|
||||||
|
object_class->destroy = prefs_widget_destroy;
|
||||||
object_class->set_arg = prefs_widget_set_arg;
|
object_class->set_arg = prefs_widget_set_arg;
|
||||||
object_class->get_arg = prefs_widget_get_arg;
|
object_class->get_arg = prefs_widget_get_arg;
|
||||||
|
|
||||||
|
@ -260,6 +283,23 @@ prefs_widget_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
prefs_widget_destroy (GtkObject *object)
|
||||||
|
{
|
||||||
|
PrefsWidget *prefs_widget;
|
||||||
|
|
||||||
|
g_return_if_fail (object != NULL);
|
||||||
|
g_return_if_fail (IS_PREFS_WIDGET (object));
|
||||||
|
|
||||||
|
prefs_widget = PREFS_WIDGET (object);
|
||||||
|
|
||||||
|
gnome_entry_save_history
|
||||||
|
(GNOME_ENTRY (gnome_file_entry_gnome_entry
|
||||||
|
(GNOME_FILE_ENTRY (WID ("wallpaper_entry")))));
|
||||||
|
|
||||||
|
GTK_OBJECT_CLASS (parent_class)->destroy (object);
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
prefs_widget_new (Preferences *prefs)
|
prefs_widget_new (Preferences *prefs)
|
||||||
{
|
{
|
||||||
|
@ -285,6 +325,7 @@ static void
|
||||||
read_preferences (PrefsWidget *prefs_widget, Preferences *prefs)
|
read_preferences (PrefsWidget *prefs_widget, Preferences *prefs)
|
||||||
{
|
{
|
||||||
GtkWidget *widget, *entry;
|
GtkWidget *widget, *entry;
|
||||||
|
GtkAdjustment *adjustment;
|
||||||
|
|
||||||
g_return_if_fail (prefs_widget != NULL);
|
g_return_if_fail (prefs_widget != NULL);
|
||||||
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
||||||
|
@ -389,6 +430,31 @@ read_preferences (PrefsWidget *prefs_widget, Preferences *prefs)
|
||||||
(WID ("auto_apply")),
|
(WID ("auto_apply")),
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
|
if (prefs->adjust_brightness)
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
|
||||||
|
(WID ("auto_apply")),
|
||||||
|
TRUE);
|
||||||
|
else
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
|
||||||
|
(WID ("auto_apply")),
|
||||||
|
FALSE);
|
||||||
|
|
||||||
|
if (prefs->adjust_brightness) {
|
||||||
|
gtk_toggle_button_set_active
|
||||||
|
(GTK_TOGGLE_BUTTON (WID ("adjust_brightness_toggle")),
|
||||||
|
TRUE);
|
||||||
|
set_brightness_controls_sensitive (prefs_widget, TRUE);
|
||||||
|
} else {
|
||||||
|
gtk_toggle_button_set_active
|
||||||
|
(GTK_TOGGLE_BUTTON (WID ("adjust_brightness_toggle")),
|
||||||
|
FALSE);
|
||||||
|
set_brightness_controls_sensitive (prefs_widget, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
adjustment = gtk_range_get_adjustment
|
||||||
|
(GTK_RANGE (WID ("brightness_adjust")));
|
||||||
|
gtk_adjustment_set_value (adjustment, prefs->brightness_value);
|
||||||
|
|
||||||
preferences_apply_preview (prefs);
|
preferences_apply_preview (prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,8 +573,10 @@ wallpaper_entry_changed_cb (GtkEntry *e, PrefsWidget *prefs_widget)
|
||||||
{
|
{
|
||||||
g_return_if_fail (prefs_widget != NULL);
|
g_return_if_fail (prefs_widget != NULL);
|
||||||
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
||||||
g_return_if_fail (prefs_widget->prefs != NULL);
|
g_return_if_fail (prefs_widget->prefs == NULL ||
|
||||||
g_return_if_fail (IS_PREFERENCES (prefs_widget->prefs));
|
IS_PREFERENCES (prefs_widget->prefs));
|
||||||
|
|
||||||
|
if (prefs_widget->prefs == NULL) return;
|
||||||
|
|
||||||
if (prefs_widget->prefs->wallpaper_filename)
|
if (prefs_widget->prefs->wallpaper_filename)
|
||||||
g_free (prefs_widget->prefs->wallpaper_filename);
|
g_free (prefs_widget->prefs->wallpaper_filename);
|
||||||
|
@ -640,6 +708,41 @@ auto_apply_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
||||||
capplet_widget_state_changed (CAPPLET_WIDGET (prefs_widget), TRUE);
|
capplet_widget_state_changed (CAPPLET_WIDGET (prefs_widget), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
adjust_brightness_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
||||||
|
{
|
||||||
|
g_return_if_fail (prefs_widget != NULL);
|
||||||
|
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
||||||
|
g_return_if_fail (prefs_widget->prefs != NULL);
|
||||||
|
g_return_if_fail (IS_PREFERENCES (prefs_widget->prefs));
|
||||||
|
|
||||||
|
if (gtk_toggle_button_get_active (tb)) {
|
||||||
|
prefs_widget->prefs->adjust_brightness = TRUE;
|
||||||
|
set_brightness_controls_sensitive (prefs_widget, TRUE);
|
||||||
|
} else {
|
||||||
|
prefs_widget->prefs->adjust_brightness = FALSE;
|
||||||
|
set_brightness_controls_sensitive (prefs_widget, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
preferences_changed (prefs_widget->prefs);
|
||||||
|
capplet_widget_state_changed (CAPPLET_WIDGET (prefs_widget), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
brightness_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||||
|
PrefsWidget *prefs_widget)
|
||||||
|
{
|
||||||
|
g_return_if_fail (prefs_widget != NULL);
|
||||||
|
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
||||||
|
g_return_if_fail (prefs_widget->prefs != NULL);
|
||||||
|
g_return_if_fail (IS_PREFERENCES (prefs_widget->prefs));
|
||||||
|
|
||||||
|
prefs_widget->prefs->brightness_value = adjustment->value;
|
||||||
|
|
||||||
|
preferences_changed (prefs_widget->prefs);
|
||||||
|
capplet_widget_state_changed (CAPPLET_WIDGET (prefs_widget), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_gradient_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
set_gradient_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
||||||
{
|
{
|
||||||
|
@ -665,3 +768,11 @@ set_background_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
||||||
gtk_widget_set_sensitive (WID ("wallpaper_frame"), s);
|
gtk_widget_set_sensitive (WID ("wallpaper_frame"), s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_brightness_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
||||||
|
{
|
||||||
|
gtk_widget_set_sensitive (WID ("brightness_low_label"), s);
|
||||||
|
gtk_widget_set_sensitive (WID ("brightness_adjust"), s);
|
||||||
|
gtk_widget_set_sensitive (WID ("brightness_high_label"), s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue