summaryrefslogtreecommitdiff
path: root/src/xfce-backdrop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xfce-backdrop.c')
-rw-r--r--src/xfce-backdrop.c190
1 files changed, 189 insertions, 1 deletions
diff --git a/src/xfce-backdrop.c b/src/xfce-backdrop.c
index 9148ab54..8c190331 100644
--- a/src/xfce-backdrop.c
+++ b/src/xfce-backdrop.c
@@ -36,14 +36,24 @@
#include <gdk-pixbuf/gdk-pixdata.h>
#include "xfce-backdrop.h"
+#include "xfce-desktop-enum-types.h"
#ifndef abs
#define abs(x) ( (x) < 0 ? -(x) : (x) )
#endif
static void xfce_backdrop_class_init(XfceBackdropClass *klass);
+
static void xfce_backdrop_init(XfceBackdrop *backdrop);
static void xfce_backdrop_finalize(GObject *object);
+static void xfce_backdrop_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void xfce_backdrop_get_property(GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
struct _XfceBackdropPriv
{
@@ -62,11 +72,25 @@ struct _XfceBackdropPriv
gdouble saturation;
};
-enum {
+enum
+{
BACKDROP_CHANGED,
LAST_SIGNAL,
};
+enum
+{
+ PROP_0 = 0,
+ PROP_COLOR_STYLE,
+ PROP_COLOR1,
+ PROP_COLOR2,
+ PROP_SHOW_IMAGE,
+ PROP_IMAGE_STYLE,
+ PROP_IMAGE_FILENAME,
+ PROP_BRIGHTNESS,
+ PROP_SATURATION,
+};
+
static guint backdrop_signals[LAST_SIGNAL] = { 0, };
/* helper functions */
@@ -211,11 +235,79 @@ xfce_backdrop_class_init(XfceBackdropClass *klass)
g_type_class_add_private(klass, sizeof(XfceBackdropPriv));
gobject_class->finalize = xfce_backdrop_finalize;
+ gobject_class->set_property = xfce_backdrop_set_property;
+ gobject_class->get_property = xfce_backdrop_get_property;
backdrop_signals[BACKDROP_CHANGED] = g_signal_new("changed",
G_OBJECT_CLASS_TYPE(gobject_class), G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(XfceBackdropClass, changed), NULL, NULL,
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+#define XFDESKTOP_PARAM_FLAGS (G_PARAM_READWRITE \
+ | G_PARAM_CONSTRUCT \
+ | G_PARAM_STATIC_NAME \
+ | G_PARAM_STATIC_NICK \
+ | G_PARAM_STATIC_BLURB)
+
+ g_object_class_install_property(gobject_class, PROP_COLOR_STYLE,
+ g_param_spec_enum("color-style",
+ "color style",
+ "color style",
+ XFCE_TYPE_BACKDROP_COLOR_STYLE,
+ XFCE_BACKDROP_COLOR_SOLID,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_COLOR1,
+ g_param_spec_boxed("first-color",
+ "first color",
+ "first color",
+ GDK_TYPE_COLOR,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_COLOR2,
+ g_param_spec_boxed("second-color",
+ "second color",
+ "second color",
+ GDK_TYPE_COLOR,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_SHOW_IMAGE,
+ g_param_spec_boolean("show-image",
+ "show image",
+ "show image",
+ TRUE,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_IMAGE_STYLE,
+ g_param_spec_enum("image-style",
+ "image style",
+ "image style",
+ XFCE_TYPE_BACKDROP_IMAGE_STYLE,
+ XFCE_BACKDROP_IMAGE_AUTO,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_IMAGE_FILENAME,
+ g_param_spec_string("image-filename",
+ "image filename",
+ "image filename",
+ DEFAULT_BACKDROP,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_BRIGHTNESS,
+ g_param_spec_int("brightness",
+ "brightness",
+ "brightness",
+ -128, 127, 0,
+ XFDESKTOP_PARAM_FLAGS));
+
+ g_object_class_install_property(gobject_class, PROP_SATURATION,
+ g_param_spec_double("saturation",
+ "saturation",
+ "saturation",
+ -10.0, 10.0, 1.0,
+ XFDESKTOP_PARAM_FLAGS));
+
+#undef XFDESKTOP_PARAM_FLAGS
}
static void
@@ -239,6 +331,102 @@ xfce_backdrop_finalize(GObject *object)
G_OBJECT_CLASS(xfce_backdrop_parent_class)->finalize(object);
}
+static void
+xfce_backdrop_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ XfceBackdrop *backdrop = XFCE_BACKDROP(object);
+
+ switch(property_id) {
+ case PROP_COLOR_STYLE:
+ xfce_backdrop_set_color_style(backdrop, g_value_get_enum(value));
+ break;
+
+ case PROP_COLOR1:
+ xfce_backdrop_set_first_color(backdrop, g_value_get_boxed(value));
+ break;
+
+ case PROP_COLOR2:
+ xfce_backdrop_set_second_color(backdrop, g_value_get_boxed(value));
+ break;
+
+ case PROP_SHOW_IMAGE:
+ xfce_backdrop_set_show_image(backdrop, g_value_get_boolean(value));
+ break;
+ case PROP_IMAGE_STYLE:
+ xfce_backdrop_set_image_style(backdrop, g_value_get_enum(value));
+ break;
+
+ case PROP_IMAGE_FILENAME:
+ xfce_backdrop_set_image_filename(backdrop,
+ g_value_get_string(value));
+ break;
+
+ case PROP_BRIGHTNESS:
+ xfce_backdrop_set_brightness(backdrop, g_value_get_int(value));
+ break;
+
+ case PROP_SATURATION:
+ xfce_backdrop_set_saturation(backdrop, g_value_get_double(value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+xfce_backdrop_get_property(GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ XfceBackdrop *backdrop = XFCE_BACKDROP(object);
+
+ switch(property_id) {
+ case PROP_COLOR_STYLE:
+ g_value_set_enum(value, xfce_backdrop_get_color_style(backdrop));
+ break;
+
+ case PROP_COLOR1:
+ g_value_set_boxed(value, &backdrop->priv->color1);
+ break;
+
+ case PROP_COLOR2:
+ g_value_set_boxed(value, &backdrop->priv->color2);
+ break;
+
+ case PROP_SHOW_IMAGE:
+ g_value_set_boolean(value, xfce_backdrop_get_show_image(backdrop));
+ break;
+
+ case PROP_IMAGE_STYLE:
+ g_value_set_enum(value, xfce_backdrop_get_image_style(backdrop));
+ break;
+
+ case PROP_IMAGE_FILENAME:
+ g_value_set_string(value,
+ xfce_backdrop_get_image_filename(backdrop));
+ break;
+
+ case PROP_BRIGHTNESS:
+ g_value_set_int(value, xfce_backdrop_get_brightness(backdrop));
+ break;
+
+ case PROP_SATURATION:
+ g_value_set_double(value, xfce_backdrop_get_saturation(backdrop));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
+ }
+}
+
+
/* public api */