Newer
Older
if ( xfpm_brightness_has_hw (button->priv->brightness) )
{
GdkPixbuf *pix;
max_level = xfpm_brightness_get_max_level (button->priv->brightness);
/* determine minimum value for slider */
min_level = xfconf_channel_get_int (button->priv->channel,
PROPERTIES_PREFIX BRIGHTNESS_SLIDER_MIN_LEVEL,
-1);
if (min_level == -1)
{
/* Some laptops (and mostly newer ones with intel graphics) can turn off the
* backlight completely. If the user is not careful and sets the brightness
* very low using the slider, he might not be able to see the screen contents
* anymore. Brightness keys do not work on every laptop, so it's better to use
* a safe default minimum level that the user can change via the settings
* editor if desired.
*/
min_level = (max_level > 100) ? SAFE_SLIDER_MIN_LEVEL : 0;
xfconf_channel_set_int (button->priv->channel,
PROPERTIES_PREFIX BRIGHTNESS_SLIDER_MIN_LEVEL,
min_level);
}
mi = scale_menu_item_new_with_range (min_level, max_level, 1);
/* attempt to load and display the brightness icon */
pix = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
XFPM_DISPLAY_BRIGHTNESS_ICON,
32,
GTK_ICON_LOOKUP_GENERIC_FALLBACK,
NULL);
if (pix)
{
img = gtk_image_new_from_pixbuf (pix);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), img);
}
scale_menu_item_set_description_label (SCALE_MENU_ITEM(mi), _("<b>Display brightness</b>"));
/* range slider */
button->priv->range = scale_menu_item_get_scale (SCALE_MENU_ITEM (mi));
/* update the slider to the current brightness level */
xfpm_brightness_get_level (button->priv->brightness, ¤t_level);
gtk_range_set_value (GTK_RANGE(button->priv->range), current_level);
g_signal_connect_swapped (mi, "value-changed", G_CALLBACK (range_value_changed_cb), button);
g_signal_connect (mi, "scroll-event", G_CALLBACK (range_scroll_cb), button);
g_signal_connect (menu, "show", G_CALLBACK (range_show_cb), button);
gtk_widget_show_all (mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
/* Presentation mode checkbox */
mi = gtk_check_menu_item_new_with_mnemonic (_("Presentation _mode"));
gtk_widget_set_sensitive (mi, TRUE);
gtk_widget_show (mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
xfconf_g_property_bind(button->priv->channel,
PROPERTIES_PREFIX PRESENTATION_MODE,
G_TYPE_BOOLEAN, G_OBJECT(mi), "active");
/* Power manager settings */
mi = gtk_menu_item_new_with_mnemonic (_("_Power manager settings..."));
gtk_widget_show(mi);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(xfpm_preferences), NULL);
gtk_menu_popup (GTK_MENU (menu),
NULL,
NULL,
#ifdef XFCE_PLUGIN
xfce_panel_plugin_position_menu,
#else
NULL,
#endif
button->priv->plugin,
0,
gtk_get_current_event_time ());