Accept applier as argument; retrieve property bag from applier
2001-07-26 Bradford Hovinen <hovinen@ximian.com> * background-properties-capplet.c (property_change_cb): Accept applier as argument; retrieve property bag from applier (realize_cb): Retrieve applier from widget (setup_dialog): Store property bag in applier * applier.c (renderer_new): Store applier inside renderer; accept applier as function parameter * background-properties-capplet.c (create_dialog): Store the applier inside the widget * applier.c (struct _ApplierPrivate ): Define preview_widget here rather than globally (applier_get_preview_widget): Make this a method of the applier class
This commit is contained in:
parent
677cf6d0a4
commit
6dbe99f68a
4 changed files with 59 additions and 28 deletions
|
@ -1,3 +1,20 @@
|
||||||
|
2001-07-26 Bradford Hovinen <hovinen@ximian.com>
|
||||||
|
|
||||||
|
* background-properties-capplet.c (property_change_cb): Accept
|
||||||
|
applier as argument; retrieve property bag from applier
|
||||||
|
(realize_cb): Retrieve applier from widget
|
||||||
|
(setup_dialog): Store property bag in applier
|
||||||
|
|
||||||
|
* applier.c (renderer_new): Store applier inside renderer; accept
|
||||||
|
applier as function parameter
|
||||||
|
|
||||||
|
* background-properties-capplet.c (create_dialog): Store the
|
||||||
|
applier inside the widget
|
||||||
|
|
||||||
|
* applier.c (struct _ApplierPrivate ): Define preview_widget here
|
||||||
|
rather than globally
|
||||||
|
(applier_get_preview_widget): Make this a method of the applier class
|
||||||
|
|
||||||
2001-07-25 Chema Celorio <chema@celorio.com>
|
2001-07-25 Chema Celorio <chema@celorio.com>
|
||||||
|
|
||||||
* Makefile.am ($(oaffile)): remove the oaffile_IN_RULE macro and copy
|
* Makefile.am ($(oaffile)): remove the oaffile_IN_RULE macro and copy
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
|
|
||||||
#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)))
|
#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 = NULL;
|
|
||||||
static gboolean gdk_pixbuf_xlib_inited = FALSE;
|
static gboolean gdk_pixbuf_xlib_inited = FALSE;
|
||||||
|
|
||||||
typedef struct _Renderer Renderer;
|
typedef struct _Renderer Renderer;
|
||||||
|
@ -59,6 +58,8 @@ enum {
|
||||||
|
|
||||||
struct _ApplierPrivate
|
struct _ApplierPrivate
|
||||||
{
|
{
|
||||||
|
GtkWidget *preview_widget;
|
||||||
|
|
||||||
ApplierPreferences *root_prefs;
|
ApplierPreferences *root_prefs;
|
||||||
ApplierPreferences *preview_prefs;
|
ApplierPreferences *preview_prefs;
|
||||||
|
|
||||||
|
@ -76,6 +77,7 @@ struct _Renderer
|
||||||
gboolean is_root;
|
gboolean is_root;
|
||||||
gboolean is_set;
|
gboolean is_set;
|
||||||
|
|
||||||
|
Applier *applier;
|
||||||
ApplierPreferences *prefs;
|
ApplierPreferences *prefs;
|
||||||
|
|
||||||
gint x; /* Geometry relative to pixmap */
|
gint x; /* Geometry relative to pixmap */
|
||||||
|
@ -150,7 +152,7 @@ static void run_render_pipeline (Renderer *renderer,
|
||||||
GdkPixbuf *wallpaper_pixbuf);
|
GdkPixbuf *wallpaper_pixbuf);
|
||||||
static void draw_disabled_message (GtkWidget *widget);
|
static void draw_disabled_message (GtkWidget *widget);
|
||||||
|
|
||||||
static Renderer *renderer_new (gboolean is_root);
|
static Renderer *renderer_new (Applier *applier, gboolean is_root);
|
||||||
static void renderer_destroy (Renderer *renderer);
|
static void renderer_destroy (Renderer *renderer);
|
||||||
|
|
||||||
static void renderer_set_prefs (Renderer *renderer,
|
static void renderer_set_prefs (Renderer *renderer,
|
||||||
|
@ -395,7 +397,7 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
||||||
if (do_preview) {
|
if (do_preview) {
|
||||||
if (applier->private->preview_renderer == NULL)
|
if (applier->private->preview_renderer == NULL)
|
||||||
applier->private->preview_renderer =
|
applier->private->preview_renderer =
|
||||||
renderer_new (FALSE);
|
renderer_new (applier, FALSE);
|
||||||
|
|
||||||
run_render_pipeline (applier->private->preview_renderer,
|
run_render_pipeline (applier->private->preview_renderer,
|
||||||
applier->private->preview_prefs,
|
applier->private->preview_prefs,
|
||||||
|
@ -408,15 +410,15 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
||||||
applier->private->preview_prefs = prefs;
|
applier->private->preview_prefs = prefs;
|
||||||
applier_preferences_ref (prefs);
|
applier_preferences_ref (prefs);
|
||||||
|
|
||||||
if (preview_widget != NULL)
|
if (applier->private->preview_widget != NULL)
|
||||||
gtk_widget_queue_draw (preview_widget);
|
gtk_widget_queue_draw (applier->private->preview_widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_root) {
|
if (do_root) {
|
||||||
nice (20);
|
nice (20);
|
||||||
|
|
||||||
if (applier->private->root_renderer == NULL)
|
if (applier->private->root_renderer == NULL)
|
||||||
applier->private->root_renderer = renderer_new (TRUE);
|
applier->private->root_renderer = renderer_new (applier, TRUE);
|
||||||
|
|
||||||
if (!applier->private->nautilus_running)
|
if (!applier->private->nautilus_running)
|
||||||
run_render_pipeline (applier->private->root_renderer,
|
run_render_pipeline (applier->private->root_renderer,
|
||||||
|
@ -436,7 +438,7 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
applier_class_get_preview_widget (void)
|
applier_get_preview_widget (Applier *applier)
|
||||||
{
|
{
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
GdkPixmap *pixmap;
|
GdkPixmap *pixmap;
|
||||||
|
@ -447,7 +449,7 @@ applier_class_get_preview_widget (void)
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
GdkGC *gc;
|
GdkGC *gc;
|
||||||
|
|
||||||
if (preview_widget != NULL) return preview_widget;
|
if (applier->private->preview_widget != NULL) return applier->private->preview_widget;
|
||||||
|
|
||||||
filename = gnome_pixmap_file ("monitor.png");
|
filename = gnome_pixmap_file ("monitor.png");
|
||||||
visual = gdk_window_get_visual (GDK_ROOT_PARENT ());
|
visual = gdk_window_get_visual (GDK_ROOT_PARENT ());
|
||||||
|
@ -506,25 +508,27 @@ applier_class_get_preview_widget (void)
|
||||||
mask = NULL;
|
mask = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
preview_widget = gtk_pixmap_new (pixmap, mask);
|
applier->private->preview_widget = gtk_pixmap_new (pixmap, mask);
|
||||||
gtk_widget_show (preview_widget);
|
gtk_widget_show (applier->private->preview_widget);
|
||||||
gdk_pixbuf_unref (pixbuf);
|
gdk_pixbuf_unref (pixbuf);
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
|
|
||||||
gtk_widget_pop_visual ();
|
gtk_widget_pop_visual ();
|
||||||
gtk_widget_pop_colormap ();
|
gtk_widget_pop_colormap ();
|
||||||
|
|
||||||
return preview_widget;
|
return applier->private->preview_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
applier_class_destroy_preview_widget (void)
|
applier_destroy_preview_widget (Applier *applier)
|
||||||
{
|
{
|
||||||
if (!preview_widget)
|
if (applier->private->preview_widget == NULL)
|
||||||
return;
|
return;
|
||||||
if (GTK_IS_WIDGET (preview_widget))
|
|
||||||
gtk_widget_destroy (preview_widget);
|
if (GTK_IS_WIDGET (applier->private->preview_widget))
|
||||||
preview_widget = NULL;
|
gtk_widget_destroy (applier->private->preview_widget);
|
||||||
|
|
||||||
|
applier->private->preview_widget = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -634,7 +638,7 @@ run_render_pipeline (Renderer *renderer,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Renderer *
|
static Renderer *
|
||||||
renderer_new (gboolean is_root)
|
renderer_new (Applier *applier, gboolean is_root)
|
||||||
{
|
{
|
||||||
Renderer *renderer;
|
Renderer *renderer;
|
||||||
|
|
||||||
|
@ -649,16 +653,17 @@ renderer_new (gboolean is_root)
|
||||||
renderer->pixmap = 0;
|
renderer->pixmap = 0;
|
||||||
renderer->is_set = FALSE;
|
renderer->is_set = FALSE;
|
||||||
} else {
|
} else {
|
||||||
if (!GTK_WIDGET_REALIZED (preview_widget))
|
if (!GTK_WIDGET_REALIZED (applier->private->preview_widget))
|
||||||
gtk_widget_realize (preview_widget);
|
gtk_widget_realize (applier->private->preview_widget);
|
||||||
|
|
||||||
|
renderer->applier = applier;
|
||||||
renderer->x = MONITOR_CONTENTS_X;
|
renderer->x = MONITOR_CONTENTS_X;
|
||||||
renderer->y = MONITOR_CONTENTS_Y;
|
renderer->y = MONITOR_CONTENTS_Y;
|
||||||
renderer->width = MONITOR_CONTENTS_WIDTH;
|
renderer->width = MONITOR_CONTENTS_WIDTH;
|
||||||
renderer->height = MONITOR_CONTENTS_HEIGHT;
|
renderer->height = MONITOR_CONTENTS_HEIGHT;
|
||||||
renderer->pixmap =
|
renderer->pixmap =
|
||||||
GDK_WINDOW_XWINDOW (GTK_PIXMAP
|
GDK_WINDOW_XWINDOW (GTK_PIXMAP
|
||||||
(preview_widget)->pixmap);
|
(applier->private->preview_widget)->pixmap);
|
||||||
renderer->is_set = TRUE;
|
renderer->is_set = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1017,7 +1022,7 @@ renderer_render_to_screen (Renderer *renderer)
|
||||||
gdk_window_clear (GDK_ROOT_PARENT ());
|
gdk_window_clear (GDK_ROOT_PARENT ());
|
||||||
} else {
|
} else {
|
||||||
gdk_color_alloc (gdk_window_get_colormap
|
gdk_color_alloc (gdk_window_get_colormap
|
||||||
(preview_widget->window),
|
(renderer->applier->private->preview_widget->window),
|
||||||
renderer->prefs->color1);
|
renderer->prefs->color1);
|
||||||
gdk_gc_set_foreground (gc, renderer->prefs->color1);
|
gdk_gc_set_foreground (gc, renderer->prefs->color1);
|
||||||
XFillRectangle (GDK_DISPLAY (), renderer->pixmap, xgc,
|
XFillRectangle (GDK_DISPLAY (), renderer->pixmap, xgc,
|
||||||
|
|
|
@ -63,7 +63,7 @@ void applier_apply_prefs (Applier *applier,
|
||||||
gboolean do_root,
|
gboolean do_root,
|
||||||
gboolean do_preview);
|
gboolean do_preview);
|
||||||
|
|
||||||
GtkWidget *applier_class_get_preview_widget (void);
|
GtkWidget *applier_get_preview_widget (Applier *applier);
|
||||||
void applier_class_destroy_preview_widget (void);
|
void applier_destroy_preview_widget (Applier *applier);
|
||||||
|
|
||||||
#endif /* __APPLIER_H */
|
#endif /* __APPLIER_H */
|
||||||
|
|
|
@ -184,17 +184,22 @@ property_change_cb (BonoboListener *listener,
|
||||||
char *event_name,
|
char *event_name,
|
||||||
CORBA_any *any,
|
CORBA_any *any,
|
||||||
CORBA_Environment *ev,
|
CORBA_Environment *ev,
|
||||||
Bonobo_PropertyBag pb)
|
Applier *applier)
|
||||||
{
|
{
|
||||||
|
Bonobo_PropertyBag pb;
|
||||||
|
|
||||||
|
pb = gtk_object_get_data (GTK_OBJECT (applier), "property-bag");
|
||||||
applier_apply_prefs (applier, pb, CORBA_OBJECT_NIL, ev, FALSE, TRUE);
|
applier_apply_prefs (applier, pb, CORBA_OBJECT_NIL, ev, FALSE, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
realize_cb (GtkWidget *widget, Bonobo_PropertyBag bag)
|
realize_cb (GtkWidget *widget, Applier *applier)
|
||||||
{
|
{
|
||||||
CORBA_Environment ev;
|
CORBA_Environment ev;
|
||||||
|
Bonobo_PropertyBag bag;
|
||||||
|
|
||||||
CORBA_exception_init (&ev);
|
CORBA_exception_init (&ev);
|
||||||
|
bag = gtk_object_get_data (GTK_OBJECT (applier), "property-bag");
|
||||||
applier_apply_prefs (applier, bag, CORBA_OBJECT_NIL, &ev, FALSE, TRUE);
|
applier_apply_prefs (applier, bag, CORBA_OBJECT_NIL, &ev, FALSE, TRUE);
|
||||||
CORBA_exception_free (&ev);
|
CORBA_exception_free (&ev);
|
||||||
}
|
}
|
||||||
|
@ -212,6 +217,7 @@ setup_dialog (GtkWidget *widget, Bonobo_PropertyBag bag)
|
||||||
{
|
{
|
||||||
BonoboPEditor *ed;
|
BonoboPEditor *ed;
|
||||||
GladeXML *dialog;
|
GladeXML *dialog;
|
||||||
|
Applier *applier;
|
||||||
|
|
||||||
dialog = gtk_object_get_data (GTK_OBJECT (widget), "glade-data");
|
dialog = gtk_object_get_data (GTK_OBJECT (widget), "glade-data");
|
||||||
ed = BONOBO_PEDITOR (bonobo_peditor_option_menu_construct (WID ("color_option")));
|
ed = BONOBO_PEDITOR (bonobo_peditor_option_menu_construct (WID ("color_option")));
|
||||||
|
@ -228,10 +234,12 @@ setup_dialog (GtkWidget *widget, Bonobo_PropertyBag bag)
|
||||||
gtk_widget_hide (WID ("opacity_spin"));
|
gtk_widget_hide (WID ("opacity_spin"));
|
||||||
gtk_widget_hide (WID ("opacity_label"));
|
gtk_widget_hide (WID ("opacity_label"));
|
||||||
|
|
||||||
|
applier = gtk_object_get_data (GTK_OBJECT (widget), "applier");
|
||||||
|
gtk_object_set_data (GTK_OBJECT (applier), "property-bag", bag);
|
||||||
bonobo_event_source_client_add_listener (bag, (BonoboListenerCallbackFn) property_change_cb,
|
bonobo_event_source_client_add_listener (bag, (BonoboListenerCallbackFn) property_change_cb,
|
||||||
NULL, NULL, bag);
|
NULL, NULL, applier);
|
||||||
|
|
||||||
gtk_signal_connect_after (GTK_OBJECT (applier_class_get_preview_widget ()), "realize", realize_cb, bag);
|
gtk_signal_connect_after (GTK_OBJECT (applier_get_preview_widget (applier)), "realize", realize_cb, applier);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
|
@ -246,11 +254,12 @@ create_dialog (void)
|
||||||
gtk_object_set_data (GTK_OBJECT (widget), "glade-data", dialog);
|
gtk_object_set_data (GTK_OBJECT (widget), "glade-data", dialog);
|
||||||
|
|
||||||
applier = APPLIER (applier_new ());
|
applier = APPLIER (applier_new ());
|
||||||
|
gtk_object_set_data (GTK_OBJECT (widget), "applier", applier);
|
||||||
|
|
||||||
/* Minor GUI addition */
|
/* Minor GUI addition */
|
||||||
holder = WID ("preview_holder");
|
holder = WID ("preview_holder");
|
||||||
gtk_box_pack_start (GTK_BOX (holder),
|
gtk_box_pack_start (GTK_BOX (holder),
|
||||||
applier_class_get_preview_widget (),
|
applier_get_preview_widget (applier),
|
||||||
TRUE, TRUE, 0);
|
TRUE, TRUE, 0);
|
||||||
gtk_widget_show_all (holder);
|
gtk_widget_show_all (holder);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue