diff options
author | Brian Tarricone <brian@tarricone.org> | 2008-08-31 04:17:00 +0000 |
---|---|---|
committer | Brian Tarricone <brian@tarricone.org> | 2008-08-31 04:17:00 +0000 |
commit | 4c2f8252e80f55275b836d59d83cda96551d6459 (patch) | |
tree | eefed4802cf4297853c1cd53d9d934013d8fb810 /src | |
parent | bca9443bdb542a5054e785280c429d59f0f0045f (diff) | |
download | xfdesktop-4c2f8252e80f55275b836d59d83cda96551d6459.tar.gz |
add properties to Xfce{Backdrop,Desktop} for all setters/getters
idea here is i can use the xfconf binding functions rather than doing
all this stuff manually
(Old svn revision: 27623)
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 38 | ||||
-rw-r--r-- | src/xfce-backdrop.c | 190 | ||||
-rw-r--r-- | src/xfce-desktop-settings.c | 16 | ||||
-rw-r--r-- | src/xfce-desktop.c | 177 | ||||
-rw-r--r-- | src/xfce-desktop.h | 4 |
5 files changed, 397 insertions, 28 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 43506aec..f31ede13 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,6 +10,8 @@ xfdesktop_SOURCES = \ xfce-backdrop.h \ xfce-desktop.c \ xfce-desktop.h \ + xfce-desktop-enum-types.c \ + xfce-desktop-enum-types.h \ xfce-desktop-settings.c \ xfce-desktop-settings.h \ xfdesktop-marshal.c \ @@ -114,7 +116,12 @@ if MAINTAINER_MODE BUILT_SOURCES = \ xfdesktop-marshal.c \ - xfdesktop-marshal.h + xfdesktop-marshal.h \ + stamp-xfce-desktop-enum-types.h \ + xfce-desktop-enum-types.c \ + xfce-desktop-enum-types.h + +DISTCLEANFILES = $(BUILT_SOURCES) xfdesktop-marshal.h: stamp-xfdesktop-marshal.h @true @@ -125,13 +132,40 @@ xfdesktop-marshal.c: xfdesktop-marshal.list Makefile echo '#include "xfdesktop-marshal.h"' > xfdesktop-marshal.c glib-genmarshal --prefix=xfdesktop_marshal xfdesktop-marshal.list --body >> xfdesktop-marshal.c +enum_headers = \ + xfce-backdrop.h \ + xfce-desktop.h + +xfce-desktop-enum-types.h: stamp-xfce-desktop-enum-types.h + @true +stamp-xfce-desktop-enum-types.h: $(enum_headers) Makefile + ( cd $(srcdir) && glib-mkenums \ + --fhead "#ifndef __XFCE_DESKTOP_ENUM_TYPES_H__\n#define __XFCE_DESKTOP_ENUM_TYPES_H__\nG_BEGIN_DECLS\n" \ + --fprod "/* enumerations from \"@filename@\" */\n" \ + --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define XFCE_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ + --ftail "G_END_DECLS\n\n#endif /* !__XFCE_DESKTOP_ENUM_TYPES_H__ */" \ + $(enum_headers) ) >> xgen-xdeth \ + && ( cmp -s xgen-xdeth xfce-desktop-enum-types.h || cp xgen-xdeth xfce-desktop-enum-types.h ) \ + && rm -f xgen-xdeth \ + && echo timestamp > $(@F) +xfce-desktop-enum-types.c: $(libthunar_vfs_headers) Makefile + ( cd $(srcdir) && glib-mkenums \ + --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include \"xfce-desktop.h\"\n#include \"xfce-backdrop.h\"" \ + --fprod "\n/* enumerations from \"@filename@\" */" \ + --vhead "GType\n@enum_name@_get_type (void)\n{\n\tstatic GType type = 0;\n\tif (type == 0) {\n\tstatic const G@Type@Value values[] = {"\ + --vprod "\t{ @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ + --vtail "\t{ 0, NULL, NULL }\n\t};\n\ttype = g_@type@_register_static (\"@EnumName@\", values);\n }\n\treturn type;\n}\n" \ + $(enum_headers) ) >> xgen-xdetc \ + && cp xgen-xdetc xfce-desktop-enum-types.c \ + && rm -f xgen-xdetc + if ENABLE_FILE_ICONS BUILT_SOURCES += \ xfdesktop-dbus-bindings-filemanager.h \ xfdesktop-dbus-bindings-trash.h -DISTCLEANFILES = \ +DISTCLEANFILES += \ xfdesktop-dbus-bindings-filemanager.h \ xfdesktop-dbus-bindings-trash.h 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 */ diff --git a/src/xfce-desktop-settings.c b/src/xfce-desktop-settings.c index 9231efc1..4175f140 100644 --- a/src/xfce-desktop-settings.c +++ b/src/xfce-desktop-settings.c @@ -251,10 +251,10 @@ xfce_desktop_settings_load_initial(XfceDesktop *desktop, "/desktop-icons/font-size", DEFAULT_ICON_FONT_SIZE)); - xfce_desktop_set_icon_use_system_font_size(desktop, - !xfconf_channel_get_bool(channel, - "/desktop-icons/use-custom-font-size", - FALSE)); + xfce_desktop_set_use_icon_font_size(desktop, + xfconf_channel_get_bool(channel, + "/desktop-icons/use-custom-font-size", + FALSE)); xfce_desktop_set_icon_size(desktop, xfconf_channel_get_uint(channel, @@ -373,10 +373,10 @@ xfce_desktop_settings_changed(XfconfChannel *channel, : DEFAULT_ICON_SIZE); return; } else if(!strcmp(property, "/desktop-icons/use-custom-font-size")) { - xfce_desktop_set_icon_use_system_font_size(desktop, - G_VALUE_TYPE(value) - ? !g_value_get_boolean(value) - : FALSE); + xfce_desktop_set_use_icon_font_size(desktop, + G_VALUE_TYPE(value) + ? g_value_get_boolean(value) + : FALSE); return; } else if(!strcmp(property, "/desktop-icons/font-size")) { xfce_desktop_set_icon_font_size(desktop, G_VALUE_TYPE(value) diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c index 121dfd2a..0fcf4e67 100644 --- a/src/xfce-desktop.c +++ b/src/xfce-desktop.c @@ -80,6 +80,7 @@ #include "xfdesktop-common.h" #include "xfce-desktop.h" +#include "xfce-desktop-enum-types.h" #ifdef ENABLE_FILE_ICONS #define SETTING_SHOW_FILESYSTEM "/desktop-icons/file-icons/show-filesystem" @@ -104,7 +105,7 @@ struct _XfceDesktopPriv #ifdef ENABLE_DESKTOP_ICONS XfceDesktopIconStyle icons_style; - gboolean icons_use_system_font; + gboolean icons_font_size_set; guint icons_font_size; guint icons_size; GtkWidget *icon_view; @@ -119,10 +120,32 @@ enum N_SIGNALS }; +enum +{ + PROP_0 = 0, + PROP_XINERAMA_STRETCH, +#ifdef ENABLE_DESKTOP_ICONS + PROP_ICON_STYLE, + PROP_ICON_SIZE, + PROP_ICON_FONT_SIZE, + PROP_ICON_FONT_SIZE_SET, +#endif +}; + static void xfce_desktop_class_init(XfceDesktopClass *klass); + static void xfce_desktop_init(XfceDesktop *desktop); static void xfce_desktop_finalize(GObject *object); +static void xfce_desktop_set_property(GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void xfce_desktop_get_property(GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + static void xfce_desktop_realize(GtkWidget *widget); static void xfce_desktop_unrealize(GtkWidget *widget); static gboolean xfce_desktop_button_press_event(GtkWidget *widget, @@ -299,7 +322,7 @@ xfce_desktop_setup_icon_view(XfceDesktop *desktop) desktop->priv->icon_view = xfdesktop_icon_view_new(manager); xfdesktop_icon_view_set_font_size(XFDESKTOP_ICON_VIEW(desktop->priv->icon_view), - (desktop->priv->icons_use_system_font + (!desktop->priv->icons_font_size_set || !desktop->priv->icons_font_size) ? desktop->priv->system_font_size : desktop->priv->icons_font_size); @@ -577,6 +600,8 @@ xfce_desktop_class_init(XfceDesktopClass *klass) g_type_class_add_private(klass, sizeof(XfceDesktopPriv)); gobject_class->finalize = xfce_desktop_finalize; + gobject_class->set_property = xfce_desktop_set_property; + gobject_class->get_property = xfce_desktop_get_property; widget_class->realize = xfce_desktop_realize; widget_class->unrealize = xfce_desktop_unrealize; @@ -604,6 +629,55 @@ xfce_desktop_class_init(XfceDesktopClass *klass) g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GTK_TYPE_MENU_SHELL); + +#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_XINERAMA_STRETCH, + g_param_spec_boolean("xinerama-stretch", + "xinerama stretch", + "xinerama stretch", + FALSE, + XFDESKTOP_PARAM_FLAGS)); + +#ifdef ENABLE_DESKTOP_ICONS + g_object_class_install_property(gobject_class, PROP_ICON_STYLE, + g_param_spec_enum("icon-style", + "icon style", + "icon style", + XFCE_TYPE_DESKTOP_ICON_STYLE, +#ifdef ENABLE_FILE_ICONS + XFCE_DESKTOP_ICON_STYLE_FILES, +#else + XFCE_DESKTOP_ICON_STLYE_WINDOWS, +#endif + XFDESKTOP_PARAM_FLAGS)); + + g_object_class_install_property(gobject_class, PROP_ICON_SIZE, + g_param_spec_uint("icon-size", + "icon size", + "icon size", + 8, 192, 36, + XFDESKTOP_PARAM_FLAGS)); + + g_object_class_install_property(gobject_class, PROP_ICON_FONT_SIZE, + g_param_spec_uint("icon-font-size", + "icon font size", + "icon font size", + 4, 144, 12, + XFDESKTOP_PARAM_FLAGS)); + + g_object_class_install_property(gobject_class, PROP_ICON_FONT_SIZE_SET, + g_param_spec_boolean("icon-font-size-set", + "icon font size set", + "icon font size set", + FALSE, + XFDESKTOP_PARAM_FLAGS)); +#endif +#undef XFDESKTOP_PARAM_FLAGS } static void @@ -612,9 +686,6 @@ xfce_desktop_init(XfceDesktop *desktop) desktop->priv = G_TYPE_INSTANCE_GET_PRIVATE(desktop, XFCE_TYPE_DESKTOP, XfceDesktopPriv); GTK_WINDOW(desktop)->type = GTK_WINDOW_TOPLEVEL; -#ifdef ENABLE_DESKTOP_ICONS - desktop->priv->icons_use_system_font = TRUE; -#endif gtk_window_set_type_hint(GTK_WINDOW(desktop), GDK_WINDOW_TYPE_HINT_DESKTOP); gtk_window_set_accept_focus(GTK_WINDOW(desktop), FALSE); @@ -631,6 +702,85 @@ xfce_desktop_finalize(GObject *object) } static void +xfce_desktop_set_property(GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + XfceDesktop *desktop = XFCE_DESKTOP(object); + + switch(property_id) { + case PROP_XINERAMA_STRETCH: + xfce_desktop_set_xinerama_stretch(desktop, + g_value_get_boolean(value)); + break; + +#ifdef ENABLE_DESKTOP_ICONS + case PROP_ICON_STYLE: + xfce_desktop_set_icon_style(desktop, + g_value_get_enum(value)); + break; + + case PROP_ICON_SIZE: + xfce_desktop_set_icon_size(desktop, + g_value_get_uint(value)); + break; + + case PROP_ICON_FONT_SIZE: + xfce_desktop_set_icon_font_size(desktop, + g_value_get_uint(value)); + break; + + case PROP_ICON_FONT_SIZE_SET: + xfce_desktop_set_use_icon_font_size(desktop, + g_value_get_boolean(value)); + break; + +#endif + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +xfce_desktop_get_property(GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + XfceDesktop *desktop = XFCE_DESKTOP(object); + + switch(property_id) { + case PROP_XINERAMA_STRETCH: + g_value_set_boolean(value, desktop->priv->xinerama_stretch); + break; + +#ifdef ENABLE_DESKTOP_ICONS + case PROP_ICON_STYLE: + g_value_set_enum(value, desktop->priv->icons_style); + break; + + case PROP_ICON_SIZE: + g_value_set_uint(value, desktop->priv->icons_size); + break; + + case PROP_ICON_FONT_SIZE: + g_value_set_uint(value, desktop->priv->icons_font_size); + break; + + case PROP_ICON_FONT_SIZE_SET: + g_value_set_boolean(value, desktop->priv->icons_font_size_set); + break; + +#endif + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void xfce_desktop_realize(GtkWidget *widget) { XfceDesktop *desktop = XFCE_DESKTOP(widget); @@ -989,30 +1139,27 @@ xfce_desktop_set_icon_font_size(XfceDesktop *desktop, desktop->priv->icons_font_size = font_size_points; - if(desktop->priv->icons_use_system_font) - return; - - if(desktop->priv->icon_view) { + if(desktop->priv->icons_font_size_set && desktop->priv->icon_view) { xfdesktop_icon_view_set_font_size(XFDESKTOP_ICON_VIEW(desktop->priv->icon_view), - font_size_points); + font_size_points); } #endif } void -xfce_desktop_set_icon_use_system_font_size(XfceDesktop *desktop, - gboolean use_system) +xfce_desktop_set_use_icon_font_size(XfceDesktop *desktop, + gboolean use_icon_font_size) { g_return_if_fail(XFCE_IS_DESKTOP(desktop)); #ifdef ENABLE_DESKTOP_ICONS - if(use_system == desktop->priv->icons_use_system_font) + if(use_icon_font_size == desktop->priv->icons_font_size_set) return; - desktop->priv->icons_use_system_font = use_system; + desktop->priv->icons_font_size_set = use_icon_font_size; if(desktop->priv->icon_view) { - if(use_system) { + if(!use_icon_font_size) { xfce_desktop_ensure_system_font_size(desktop); xfdesktop_icon_view_set_font_size(XFDESKTOP_ICON_VIEW(desktop->priv->icon_view), desktop->priv->system_font_size); diff --git a/src/xfce-desktop.h b/src/xfce-desktop.h index 59149581..8400da79 100644 --- a/src/xfce-desktop.h +++ b/src/xfce-desktop.h @@ -90,8 +90,8 @@ XfceDesktopIconStyle xfce_desktop_get_icon_style(XfceDesktop *desktop); void xfce_desktop_set_icon_size(XfceDesktop *desktop, guint icon_size); -void xfce_desktop_set_icon_use_system_font_size(XfceDesktop *desktop, - gboolean use_system); +void xfce_desktop_set_use_icon_font_size(XfceDesktop *desktop, + gboolean use_system); void xfce_desktop_set_icon_font_size(XfceDesktop *desktop, guint font_size_points); |