static void
athena_desktop_background_constructed (GObject *obj)
{
        AthenaDesktopBackground *self;
        GtkWidget *widget;

        self = ATHENA_DESKTOP_BACKGROUND (obj);

        if (G_OBJECT_CLASS (athena_desktop_background_parent_class)->constructed != NULL) {
                G_OBJECT_CLASS (athena_desktop_background_parent_class)->constructed (obj);
        }

        widget = self->details->widget;

        g_assert (widget != NULL);

 	g_signal_connect_object (widget, "destroy",
                                 G_CALLBACK (on_widget_destroyed), self, 0);
	g_signal_connect_object (widget, "realize",
				 G_CALLBACK (widget_realize_cb), self, 0);
	g_signal_connect_object (widget, "unrealize",
				 G_CALLBACK (widget_unrealize_cb), self, 0);

        gnome_bg_load_from_preferences (self->details->bg,
                                        gnome_background_preferences);

        /* Let's receive batch change events instead of every single one */
        g_signal_connect (gnome_background_preferences,
                          "change-event",
                          G_CALLBACK (background_settings_change_event_cb),
                          self);

	queue_background_change (self);
}
static gboolean
background_change_event_idle_cb (AthenaDesktopBackground *self)
{
	gnome_bg_load_from_preferences (self->details->bg,
					gnome_background_preferences);

	g_object_unref (self);

	return FALSE;
}
Ejemplo n.º 3
0
static gboolean
background_settings_change_event_cb (GSettings *settings,
                                     gpointer   keys,
                                     gint       n_keys,
                                     GSManager   *manager)
{
        gnome_bg_load_from_preferences (manager->priv->bg,
                                        manager->priv->settings);

        return FALSE;
}
Ejemplo n.º 4
0
/**
 * gs_screenshot_image_get_desktop_pixbuf:
 **/
static GdkPixbuf *
gs_screenshot_image_get_desktop_pixbuf (GsScreenshotImage *ssimg)
{
	GsScreenshotImagePrivate *priv;
	_cleanup_object_unref_ GnomeBG *bg = NULL;
	_cleanup_object_unref_ GnomeDesktopThumbnailFactory *factory = NULL;
	_cleanup_object_unref_ GSettings *settings = NULL;

	priv = gs_screenshot_image_get_instance_private (ssimg);

	factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
	bg = gnome_bg_new ();
	settings = g_settings_new ("org.gnome.desktop.background");
	gnome_bg_load_from_preferences (bg, settings);
	return gnome_bg_create_thumbnail (bg, factory,
					  gdk_screen_get_default (),
					  priv->width, priv->height);
}
main (int argc, char *argv[])
{
    GOptionContext *context = NULL;
    GError         *error = NULL;

    GdkScreen *screen;
    GdkRectangle rect;
    GnomeBG *bg;
    GSettings *settings;
    GdkPixbuf *pixbuf;

    gdk_init (&argc, &argv);

    context = g_option_context_new ("- refresh wallpaper cache");
    g_option_context_add_main_entries (context, entries, NULL);
    if (!g_option_context_parse (context, &argc, &argv, &error)) {
        g_printerr ("option parsing failed: %s\n", error->message);
        g_option_context_free(context);
        g_error_free (error);
        return (1);
    }
    if (context)
        g_option_context_free (context);

    /* cache only the first monitor */
    screen = gdk_screen_get_default ();
    gdk_screen_get_monitor_geometry (screen, 0, &rect);

    bg = gnome_bg_new ();
    settings = g_settings_new ("org.cinnamon.desktop.background");
    gnome_bg_load_from_preferences (bg, settings);

    pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, rect.width, rect.height);
    gnome_bg_draw (bg, pixbuf, screen, FALSE);

    g_object_unref (settings);

    return (0);
}
Ejemplo n.º 6
0
static void
gs_manager_init (GSManager *manager)
{
        manager->priv = GS_MANAGER_GET_PRIVATE (manager);

        manager->priv->fade = gs_fade_new ();
        manager->priv->grab = gs_grab_new ();

        manager->priv->settings = get_system_settings ();
        manager->priv->bg = gnome_bg_new ();

        g_signal_connect (manager->priv->bg,
                          "changed",
                          G_CALLBACK (on_bg_changed),
                          manager);
        g_signal_connect (manager->priv->settings,
                          "change-event",
                          G_CALLBACK (background_settings_change_event_cb),
                          manager);

        gnome_bg_load_from_preferences (manager->priv->bg,
                                        manager->priv->settings);
}