Remove all bonobo-conf stuff.
2001-07-26 Richard Hestilow <hestilow@ximian.com> * applier.c: Remove all bonobo-conf stuff. * preferences.[ch]: New functions preferences_new_from_bonobo_pbag and preferences_new_from_bonobo_db.
This commit is contained in:
parent
cf7a5fe568
commit
dae9cccc0e
7 changed files with 207 additions and 246 deletions
|
@ -47,10 +47,10 @@
|
|||
|
||||
#define PDEBUG(pix) (g_print ("file %s: line %d (%s): Setting pixbuf to %i %i\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, gdk_pixbuf_get_width (pix), gdk_pixbuf_get_height (pix)))
|
||||
|
||||
static GtkWidget *preview_widget;
|
||||
static gboolean gdk_pixbuf_xlib_inited = FALSE;
|
||||
|
||||
typedef struct _Renderer Renderer;
|
||||
typedef struct _ApplierPreferences ApplierPreferences;
|
||||
|
||||
enum {
|
||||
ARG_0,
|
||||
|
@ -59,9 +59,8 @@ enum {
|
|||
struct _ApplierPrivate
|
||||
{
|
||||
GtkWidget *preview_widget;
|
||||
|
||||
ApplierPreferences *root_prefs;
|
||||
ApplierPreferences *preview_prefs;
|
||||
Preferences *root_prefs;
|
||||
Preferences *preview_prefs;
|
||||
|
||||
GdkPixbuf *wallpaper_pixbuf;
|
||||
gchar *wallpaper_filename;
|
||||
|
@ -78,7 +77,7 @@ struct _Renderer
|
|||
gboolean is_set;
|
||||
|
||||
Applier *applier;
|
||||
ApplierPreferences *prefs;
|
||||
Preferences *prefs;
|
||||
|
||||
gint x; /* Geometry relative to pixmap */
|
||||
gint y;
|
||||
|
@ -106,34 +105,6 @@ struct _Renderer
|
|||
Pixmap pixmap;
|
||||
};
|
||||
|
||||
typedef enum _orientation_t {
|
||||
ORIENTATION_SOLID, ORIENTATION_HORIZ, ORIENTATION_VERT
|
||||
} orientation_t;
|
||||
|
||||
typedef enum _wallpaper_type_t {
|
||||
WPTYPE_TILED, WPTYPE_CENTERED, WPTYPE_SCALED_ASPECT,
|
||||
WPTYPE_SCALED, WPTYPE_EMBOSSED
|
||||
} wallpaper_type_t;
|
||||
|
||||
|
||||
struct _ApplierPreferences
|
||||
{
|
||||
int ref_count;
|
||||
|
||||
gboolean gradient_enabled;
|
||||
gboolean wallpaper_enabled;
|
||||
orientation_t orientation;
|
||||
wallpaper_type_t wallpaper_type;
|
||||
|
||||
GdkColor *color1;
|
||||
GdkColor *color2;
|
||||
|
||||
gchar *wallpaper_filename;
|
||||
|
||||
gboolean adjust_opacity;
|
||||
gint opacity;
|
||||
};
|
||||
|
||||
static GtkObjectClass *parent_class;
|
||||
|
||||
static void applier_init (Applier *prefs);
|
||||
|
@ -147,8 +118,8 @@ static void applier_get_arg (GtkObject *object,
|
|||
guint arg_id);
|
||||
|
||||
static void run_render_pipeline (Renderer *renderer,
|
||||
ApplierPreferences *old_prefs,
|
||||
ApplierPreferences *new_prefs,
|
||||
Preferences *old_prefs,
|
||||
Preferences *new_prefs,
|
||||
GdkPixbuf *wallpaper_pixbuf);
|
||||
static void draw_disabled_message (GtkWidget *widget);
|
||||
|
||||
|
@ -156,7 +127,7 @@ static Renderer *renderer_new (Applier *applier, gboolean is_root);
|
|||
static void renderer_destroy (Renderer *renderer);
|
||||
|
||||
static void renderer_set_prefs (Renderer *renderer,
|
||||
ApplierPreferences *prefs);
|
||||
Preferences *prefs);
|
||||
static void renderer_set_wallpaper (Renderer *renderer,
|
||||
GdkPixbuf *wallpaper_pixbuf);
|
||||
|
||||
|
@ -187,23 +158,15 @@ static void tile_composite (GdkPixbuf *dest, GdkPixbuf *src,
|
|||
gint alpha_value);
|
||||
|
||||
static gboolean render_gradient_p (Renderer *renderer,
|
||||
ApplierPreferences *prefs);
|
||||
static gboolean render_small_pixmap_p (ApplierPreferences *prefs);
|
||||
Preferences *prefs);
|
||||
static gboolean render_small_pixmap_p (Preferences *prefs);
|
||||
|
||||
static Pixmap make_root_pixmap (gint width, gint height);
|
||||
static void set_root_pixmap (Pixmap pixmap);
|
||||
|
||||
static gboolean is_nautilus_running (void);
|
||||
|
||||
/* preferences stuff -- easier than making an object */
|
||||
static ApplierPreferences* applier_preferences_pb_new (Bonobo_PropertyBag pb, CORBA_Environment *ev);
|
||||
static ApplierPreferences* applier_preferences_db_new (Bonobo_ConfigDatabase db, CORBA_Environment *ev);
|
||||
static void applier_preferences_ref (ApplierPreferences *prefs);
|
||||
static void applier_preferences_unref (ApplierPreferences *prefs);
|
||||
static void applier_preferences_free (ApplierPreferences *prefs);
|
||||
|
||||
static GdkColor* bonobo_color_to_gdk (Bonobo_Config_Color *color);
|
||||
static void output_compat_prefs (ApplierPreferences *prefs);
|
||||
static void output_compat_prefs (Preferences *prefs);
|
||||
|
||||
guint
|
||||
applier_get_type (void)
|
||||
|
@ -325,9 +288,9 @@ applier_destroy (GtkObject *object)
|
|||
renderer_destroy (applier->private->root_renderer);
|
||||
|
||||
if (applier->private->root_prefs != NULL)
|
||||
applier_preferences_unref (applier->private->root_prefs);
|
||||
gtk_object_unref (GTK_OBJECT (applier->private->root_prefs));
|
||||
if (applier->private->preview_prefs != NULL)
|
||||
applier_preferences_unref (applier->private->preview_prefs);
|
||||
gtk_object_unref (GTK_OBJECT (applier->private->preview_prefs));
|
||||
|
||||
if (applier->private->wallpaper_pixbuf != NULL)
|
||||
gdk_pixbuf_unref (applier->private->wallpaper_pixbuf);
|
||||
|
@ -340,9 +303,10 @@ applier_destroy (GtkObject *object)
|
|||
}
|
||||
|
||||
void
|
||||
applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatabase db, CORBA_Environment *ev, gboolean do_root, gboolean do_preview)
|
||||
applier_apply_prefs (Applier *applier, Preferences *prefs,
|
||||
gboolean do_root, gboolean do_preview)
|
||||
{
|
||||
ApplierPreferences *prefs;
|
||||
Preferences *new_prefs;
|
||||
|
||||
g_return_if_fail (applier != NULL);
|
||||
g_return_if_fail (IS_APPLIER (applier));
|
||||
|
@ -351,10 +315,12 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
|||
set_root_pixmap (-1);
|
||||
}
|
||||
|
||||
if (pb != CORBA_OBJECT_NIL)
|
||||
prefs = applier_preferences_pb_new (pb, ev);
|
||||
else
|
||||
prefs = applier_preferences_db_new (db, ev);
|
||||
if (!prefs->enabled) {
|
||||
draw_disabled_message (applier_class_get_preview_widget ());
|
||||
return;
|
||||
}
|
||||
|
||||
new_prefs = PREFERENCES (preferences_clone (prefs));
|
||||
|
||||
if (((prefs->wallpaper_filename ||
|
||||
applier->private->wallpaper_filename) &&
|
||||
|
@ -387,11 +353,11 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
|||
if (!applier->private->wallpaper_pixbuf) {
|
||||
g_warning (_("Could not load pixbuf \"%s\"; disabling wallpaper."),
|
||||
prefs->wallpaper_filename);
|
||||
prefs->wallpaper_enabled = FALSE;
|
||||
new_prefs->wallpaper_enabled = FALSE;
|
||||
}
|
||||
}
|
||||
else if (applier->private->wallpaper_pixbuf == NULL) {
|
||||
prefs->wallpaper_enabled = FALSE;
|
||||
new_prefs->wallpaper_enabled = FALSE;
|
||||
}
|
||||
|
||||
if (do_preview) {
|
||||
|
@ -401,14 +367,15 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
|||
|
||||
run_render_pipeline (applier->private->preview_renderer,
|
||||
applier->private->preview_prefs,
|
||||
prefs,
|
||||
new_prefs,
|
||||
applier->private->wallpaper_pixbuf);
|
||||
|
||||
if (applier->private->preview_prefs != NULL)
|
||||
applier_preferences_unref (applier->private->preview_prefs);
|
||||
gtk_object_unref (GTK_OBJECT
|
||||
(applier->private->preview_prefs));
|
||||
|
||||
applier->private->preview_prefs = prefs;
|
||||
applier_preferences_ref (prefs);
|
||||
applier->private->preview_prefs = new_prefs;
|
||||
gtk_object_ref (GTK_OBJECT (new_prefs));
|
||||
|
||||
if (applier->private->preview_widget != NULL)
|
||||
gtk_widget_queue_draw (applier->private->preview_widget);
|
||||
|
@ -423,22 +390,24 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
|||
if (!applier->private->nautilus_running)
|
||||
run_render_pipeline (applier->private->root_renderer,
|
||||
applier->private->root_prefs,
|
||||
prefs,
|
||||
new_prefs,
|
||||
applier->private->wallpaper_pixbuf);
|
||||
|
||||
output_compat_prefs (prefs);
|
||||
|
||||
if (applier->private->root_prefs != NULL)
|
||||
applier_preferences_unref (applier->private->root_prefs);
|
||||
applier->private->root_prefs = prefs;
|
||||
applier_preferences_ref (prefs);
|
||||
gtk_object_unref (GTK_OBJECT
|
||||
(applier->private->root_prefs));
|
||||
|
||||
applier->private->root_prefs = new_prefs;
|
||||
gtk_object_ref (GTK_OBJECT (new_prefs));
|
||||
}
|
||||
|
||||
applier_preferences_unref (prefs);
|
||||
gtk_object_unref (GTK_OBJECT (new_prefs));
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
applier_get_preview_widget (Applier *applier)
|
||||
applier_class_get_preview_widget (void)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GdkPixmap *pixmap;
|
||||
|
@ -449,7 +418,7 @@ applier_get_preview_widget (Applier *applier)
|
|||
gchar *filename;
|
||||
GdkGC *gc;
|
||||
|
||||
if (applier->private->preview_widget != NULL) return applier->private->preview_widget;
|
||||
if (preview_widget != NULL) return preview_widget;
|
||||
|
||||
filename = gnome_pixmap_file ("monitor.png");
|
||||
visual = gdk_window_get_visual (GDK_ROOT_PARENT ());
|
||||
|
@ -508,27 +477,15 @@ applier_get_preview_widget (Applier *applier)
|
|||
mask = NULL;
|
||||
}
|
||||
|
||||
applier->private->preview_widget = gtk_pixmap_new (pixmap, mask);
|
||||
gtk_widget_show (applier->private->preview_widget);
|
||||
preview_widget = gtk_pixmap_new (pixmap, mask);
|
||||
gtk_widget_show (preview_widget);
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
g_free (filename);
|
||||
|
||||
gtk_widget_pop_visual ();
|
||||
gtk_widget_pop_colormap ();
|
||||
|
||||
return applier->private->preview_widget;
|
||||
}
|
||||
|
||||
void
|
||||
applier_destroy_preview_widget (Applier *applier)
|
||||
{
|
||||
if (applier->private->preview_widget == NULL)
|
||||
return;
|
||||
|
||||
if (GTK_IS_WIDGET (applier->private->preview_widget))
|
||||
gtk_widget_destroy (applier->private->preview_widget);
|
||||
|
||||
applier->private->preview_widget = NULL;
|
||||
return preview_widget;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -578,8 +535,8 @@ draw_disabled_message (GtkWidget *widget)
|
|||
|
||||
static void
|
||||
run_render_pipeline (Renderer *renderer,
|
||||
ApplierPreferences *old_prefs,
|
||||
ApplierPreferences *new_prefs,
|
||||
Preferences *old_prefs,
|
||||
Preferences *new_prefs,
|
||||
GdkPixbuf *wallpaper_pixbuf)
|
||||
{
|
||||
gboolean bg_formed = FALSE;
|
||||
|
@ -693,17 +650,17 @@ renderer_destroy (Renderer *renderer)
|
|||
}
|
||||
|
||||
static void
|
||||
renderer_set_prefs (Renderer *renderer, ApplierPreferences *prefs)
|
||||
renderer_set_prefs (Renderer *renderer, Preferences *prefs)
|
||||
{
|
||||
g_return_if_fail (renderer != NULL);
|
||||
|
||||
if (renderer->prefs)
|
||||
applier_preferences_unref (renderer->prefs);
|
||||
gtk_object_unref (GTK_OBJECT (renderer->prefs));
|
||||
|
||||
renderer->prefs = prefs;
|
||||
|
||||
if (prefs)
|
||||
applier_preferences_ref (prefs);
|
||||
gtk_object_ref (GTK_OBJECT (prefs));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -884,10 +841,9 @@ renderer_render_wallpaper (Renderer *renderer)
|
|||
(renderer->wallpaper_pixbuf,
|
||||
renderer->pixbuf,
|
||||
renderer->wx, renderer->wy,
|
||||
MIN (renderer->wwidth, renderer->width),
|
||||
MIN (renderer->wheight, renderer->height),
|
||||
renderer->wx - renderer->srcx,
|
||||
renderer->wy - renderer->srcy,
|
||||
renderer->wwidth,
|
||||
renderer->wheight,
|
||||
renderer->wx, renderer->wy,
|
||||
scalex, scaley,
|
||||
GDK_INTERP_BILINEAR);
|
||||
} else {
|
||||
|
@ -1254,7 +1210,7 @@ render_tiled_image (Pixmap pixmap, GC xgc, GdkPixbuf *pixbuf,
|
|||
/* Return TRUE if the gradient should be rendered, false otherwise */
|
||||
|
||||
static gboolean
|
||||
render_gradient_p (Renderer *renderer, ApplierPreferences *prefs)
|
||||
render_gradient_p (Renderer *renderer, Preferences *prefs)
|
||||
{
|
||||
return prefs->gradient_enabled &&
|
||||
!(prefs->wallpaper_enabled &&
|
||||
|
@ -1268,7 +1224,7 @@ render_gradient_p (Renderer *renderer, ApplierPreferences *prefs)
|
|||
/* Return TRUE if we can optimize the rendering by using a small thin pixmap */
|
||||
|
||||
static gboolean
|
||||
render_small_pixmap_p (ApplierPreferences *prefs)
|
||||
render_small_pixmap_p (Preferences *prefs)
|
||||
{
|
||||
return prefs->gradient_enabled && !prefs->wallpaper_enabled;
|
||||
}
|
||||
|
@ -1421,126 +1377,9 @@ is_nautilus_running (void)
|
|||
return running;
|
||||
}
|
||||
|
||||
static gulong
|
||||
pb_get_value_ulong (Bonobo_PropertyBag bag, const gchar *prop)
|
||||
{
|
||||
BonoboArg *arg;
|
||||
gulong val;
|
||||
|
||||
arg = bonobo_property_bag_client_get_value_any (bag, prop, NULL);
|
||||
val = BONOBO_ARG_GET_GENERAL (arg, TC_ulong, CORBA_unsigned_long, NULL);
|
||||
bonobo_arg_release (arg);
|
||||
return val;
|
||||
}
|
||||
|
||||
#define PB_GET_VALUE(v) (bonobo_property_bag_client_get_value_any (pb, (v), NULL))
|
||||
|
||||
/* Probably has CORBA memory leaks */
|
||||
static ApplierPreferences*
|
||||
applier_preferences_pb_new (Bonobo_PropertyBag pb, CORBA_Environment *ev)
|
||||
{
|
||||
ApplierPreferences *prefs = g_new0 (ApplierPreferences, 1);
|
||||
|
||||
prefs->orientation = pb_get_value_ulong (pb, "orientation");
|
||||
if (prefs->orientation != ORIENTATION_SOLID)
|
||||
prefs->gradient_enabled = TRUE;
|
||||
|
||||
prefs->wallpaper_type = pb_get_value_ulong (pb, "wallpaper_type");
|
||||
prefs->wallpaper_filename = g_strdup (*((CORBA_char **)(PB_GET_VALUE ("wallpaper_filename"))->_value));
|
||||
if (prefs->wallpaper_filename && strcmp (prefs->wallpaper_filename, "") != 0)
|
||||
prefs->wallpaper_enabled = TRUE;
|
||||
|
||||
prefs->color1 = bonobo_color_to_gdk ((Bonobo_Config_Color *)(PB_GET_VALUE ("color1"))->_value);
|
||||
prefs->color2 = bonobo_color_to_gdk ((Bonobo_Config_Color *)(PB_GET_VALUE ("color2"))->_value);
|
||||
|
||||
prefs->opacity = BONOBO_ARG_GET_LONG (PB_GET_VALUE ("opacity"));
|
||||
if (prefs->opacity != 100)
|
||||
prefs->adjust_opacity = FALSE;
|
||||
|
||||
prefs->ref_count = 1;
|
||||
|
||||
return prefs;
|
||||
}
|
||||
|
||||
#define DB_GET_VALUE(v) (bonobo_config_get_value (db, (v), NULL, NULL))
|
||||
|
||||
static ApplierPreferences*
|
||||
applier_preferences_db_new (Bonobo_ConfigDatabase db, CORBA_Environment *ev)
|
||||
{
|
||||
ApplierPreferences *prefs = g_new0 (ApplierPreferences, 1);
|
||||
|
||||
prefs->orientation = bonobo_config_get_ulong (db, "/main/orientation", NULL);
|
||||
if (prefs->orientation != ORIENTATION_SOLID)
|
||||
prefs->gradient_enabled = TRUE;
|
||||
|
||||
prefs->wallpaper_type = bonobo_config_get_ulong (db, "/main/wallpaper_type", NULL);
|
||||
prefs->wallpaper_filename = g_strdup (*((CORBA_char **)(DB_GET_VALUE ("/main/wallpaper_filename"))->_value));
|
||||
if (prefs->wallpaper_filename && strcmp (prefs->wallpaper_filename, "") != 0)
|
||||
prefs->wallpaper_enabled = TRUE;
|
||||
|
||||
prefs->color1 = bonobo_color_to_gdk ((Bonobo_Config_Color *)(DB_GET_VALUE ("/main/color1"))->_value);
|
||||
prefs->color2 = bonobo_color_to_gdk ((Bonobo_Config_Color *)(DB_GET_VALUE ("/main/color2"))->_value);
|
||||
|
||||
prefs->opacity = BONOBO_ARG_GET_LONG (DB_GET_VALUE ("/main/opacity"));
|
||||
if (prefs->opacity != 100)
|
||||
prefs->adjust_opacity = FALSE;
|
||||
|
||||
prefs->ref_count = 1;
|
||||
|
||||
return prefs;
|
||||
}
|
||||
|
||||
static void
|
||||
applier_preferences_ref (ApplierPreferences *prefs)
|
||||
{
|
||||
g_return_if_fail (prefs != NULL);
|
||||
|
||||
prefs->ref_count++;
|
||||
}
|
||||
|
||||
static void
|
||||
applier_preferences_unref (ApplierPreferences *prefs)
|
||||
{
|
||||
g_return_if_fail (prefs != NULL);
|
||||
|
||||
prefs->ref_count--;
|
||||
if (prefs->ref_count < 1)
|
||||
applier_preferences_free (prefs);
|
||||
}
|
||||
|
||||
static void
|
||||
applier_preferences_free (ApplierPreferences *prefs)
|
||||
{
|
||||
g_return_if_fail (prefs != NULL);
|
||||
|
||||
if (prefs->wallpaper_filename)
|
||||
g_free (prefs->wallpaper_filename);
|
||||
|
||||
if (prefs->color1)
|
||||
g_free (prefs->color1);
|
||||
if (prefs->color2)
|
||||
g_free (prefs->color2);
|
||||
|
||||
g_free (prefs);
|
||||
}
|
||||
|
||||
static GdkColor*
|
||||
bonobo_color_to_gdk (Bonobo_Config_Color *color)
|
||||
{
|
||||
GdkColor *ret;
|
||||
|
||||
g_return_val_if_fail (color != NULL, NULL);
|
||||
|
||||
ret = g_new0 (GdkColor, 1);
|
||||
ret->red = color->r * 65535;
|
||||
ret->green = color->g * 65535;
|
||||
ret->blue = color->b * 65535;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
output_compat_prefs (ApplierPreferences *prefs)
|
||||
output_compat_prefs (Preferences *prefs)
|
||||
{
|
||||
gchar *color;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue