[Xfce4-commits] <ristretto:master> Re-enable the style combo in the xfce set-wallpaper dialog
Stephan Arts
noreply at xfce.org
Wed Sep 14 10:00:01 CEST 2011
Updating branch refs/heads/master
to c378abf122b580e658f98109e5a90a16ec6b6692 (commit)
from 20d2e742ef8dda6236c851258b815116b67842f9 (commit)
commit c378abf122b580e658f98109e5a90a16ec6b6692
Author: Stephan Arts <stephan at xfce.org>
Date: Wed Sep 14 09:28:46 2011 +0200
Re-enable the style combo in the xfce set-wallpaper dialog
Apply several fixes to enable the style-combo
src/monitor_chooser.c | 50 +++++++++++++++++-
src/monitor_chooser.h | 19 ++++++-
src/xfce_wallpaper_manager.c | 123 +++++++++++++++++++++++++++++++-----------
3 files changed, 158 insertions(+), 34 deletions(-)
diff --git a/src/monitor_chooser.c b/src/monitor_chooser.c
index c1be5ba..c83c9f5 100644
--- a/src/monitor_chooser.c
+++ b/src/monitor_chooser.c
@@ -28,6 +28,7 @@ typedef struct {
gint width;
gint height;
GdkPixbuf *pixbuf;
+ RsttoMonitorStyle style;
} Monitor;
struct _RsttoMonitorChooserPriv
@@ -71,6 +72,15 @@ paint_monitor ( cairo_t *cr,
Monitor *monitor,
gboolean active);
+enum
+{
+ RSTTO_MONITOR_CHOOSER_SIGNAL_CHANGED = 0,
+ RSTTO_MONITOR_CHOOSER_SIGNAL_COUNT
+};
+
+static gint
+rstto_monitor_chooser_signals[RSTTO_MONITOR_CHOOSER_SIGNAL_COUNT];
+
GType
rstto_monitor_chooser_get_type (void)
{
@@ -131,6 +141,17 @@ rstto_monitor_chooser_class_init(RsttoMonitorChooserClass *chooser_class)
widget_class->size_allocate = rstto_monitor_chooser_size_allocate;
object_class->finalize = rstto_monitor_chooser_finalize;
+
+ rstto_monitor_chooser_signals[RSTTO_MONITOR_CHOOSER_SIGNAL_CHANGED] = g_signal_new("changed",
+ G_TYPE_FROM_CLASS(chooser_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0,
+ NULL);
}
static void
@@ -480,7 +501,9 @@ rstto_monitor_chooser_set_pixbuf (
}
static void
-cb_rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
+cb_rstto_button_press_event (
+ GtkWidget *widget,
+ GdkEventButton *event )
{
RsttoMonitorChooser *chooser = RSTTO_MONITOR_CHOOSER(widget);
gint row_width = 0;
@@ -520,9 +543,34 @@ cb_rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
chooser->priv->selected = id+1;
}
+ g_signal_emit (G_OBJECT (chooser), rstto_monitor_chooser_signals[RSTTO_MONITOR_CHOOSER_SIGNAL_CHANGED], 0, NULL);
+
rstto_monitor_chooser_paint (widget);
}
}
}
}
+
+gint
+rstto_monitor_chooser_get_selected (
+ RsttoMonitorChooser *chooser )
+{
+ return chooser->priv->selected;
+}
+
+gboolean
+rstto_monitor_chooser_set_style (
+ RsttoMonitorChooser *chooser,
+ gint monitor_id,
+ RsttoMonitorStyle style )
+{
+ Monitor *monitor = g_slist_nth_data (chooser->priv->monitors, monitor_id);
+ g_return_val_if_fail (monitor != NULL, FALSE);
+ if ( NULL != monitor )
+ {
+ monitor->style = style;
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/src/monitor_chooser.h b/src/monitor_chooser.h
index 385b7e2..2f0006e 100644
--- a/src/monitor_chooser.h
+++ b/src/monitor_chooser.h
@@ -21,6 +21,16 @@
G_BEGIN_DECLS
+typedef enum
+{
+ MONITOR_STYLE_AUTOMATIC = 0,
+ MONITOR_STYLE_CENTERED,
+ MONITOR_STYLE_TILED,
+ MONITOR_STYLE_STRETCHED,
+ MONITOR_STYLE_SCALED,
+ MONITOR_STYLE_ZOOMED
+} RsttoMonitorStyle;
+
#define RSTTO_TYPE_MONITOR_CHOOSER rstto_monitor_chooser_get_type()
#define RSTTO_MONITOR_CHOOSER(obj)( \
@@ -76,7 +86,14 @@ rstto_monitor_chooser_set_pixbuf (
GError **);
gint
-rstto_monitor_chooser_get_selected ( RsttoMonitorChooser * );
+rstto_monitor_chooser_get_selected (
+ RsttoMonitorChooser *);
+
+gboolean
+rstto_monitor_chooser_set_style (
+ RsttoMonitorChooser *chooser,
+ gint monitor_id,
+ RsttoMonitorStyle style );
G_END_DECLS
diff --git a/src/xfce_wallpaper_manager.c b/src/xfce_wallpaper_manager.c
index 214b0ac..b5b7e08 100644
--- a/src/xfce_wallpaper_manager.c
+++ b/src/xfce_wallpaper_manager.c
@@ -50,6 +50,15 @@ rstto_xfce_wallpaper_manager_dispose (GObject *object);
static void
rstto_xfce_wallpaper_manager_finalize (GObject *object);
+static void
+cb_style_combo_changed (
+ GtkComboBox *style_combo,
+ RsttoXfceWallpaperManager *manager);
+static void
+cb_monitor_chooser_changed (
+ RsttoMonitorChooser *monitor_chooser,
+ RsttoXfceWallpaperManager *manager);
+
static GObjectClass *parent_class = NULL;
static RsttoWallpaperManager *xfce_wallpaper_manager_object;
@@ -64,6 +73,11 @@ struct _RsttoXfceWallpaperManagerPriv
gint brightness;
RsttoColor *color1;
RsttoColor *color2;
+
+ GFile *file;
+
+ GtkWidget *monitor_chooser;
+ GtkWidget *style_combo;
};
@@ -85,13 +99,11 @@ rstto_xfce_wallpaper_manager_configure_dialog_run (RsttoWallpaperManager *self,
GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Set as wallpaper"), NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
GtkWidget *vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
GtkWidget *style_label = gtk_label_new( _("Style:"));
- GtkWidget *style_combo = gtk_combo_box_new_text();
GtkWidget *monitor_label = gtk_label_new( _("Monitor:"));
- GtkWidget *monitor_combo = gtk_combo_box_new_text();
GtkWidget *brightness_label = gtk_label_new( _("Brightness:"));
GtkWidget *saturation_label = gtk_label_new( _("Saturation:"));
GtkObject *brightness_adjustment = gtk_adjustment_new (0.0, -128.0, 127.0, 1.0, 10.0, 0.0);
- GtkObject *saturation_adjustment = gtk_adjustment_new (1.0, 0.0, 10.0, 0.1, 0.5, 0);
+ GtkObject *saturation_adjustment = gtk_adjustment_new (1.0, -10.0, 10.0, 0.1, 0.5, 0.0);
GtkWidget *brightness_slider = gtk_hscale_new (GTK_ADJUSTMENT (brightness_adjustment));
GtkWidget *saturation_slider = gtk_hscale_new (GTK_ADJUSTMENT (saturation_adjustment));
GdkPixbuf *image_pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(),
@@ -99,31 +111,38 @@ rstto_xfce_wallpaper_manager_configure_dialog_run (RsttoWallpaperManager *self,
128,
0,
NULL);
- GtkWidget *prop_table = gtk_table_new (1, 2, FALSE);
- GtkWidget *image_prop_table = gtk_table_new (2, 2, FALSE);
- GtkWidget *monitor_chooser = rstto_monitor_chooser_new ();
+ GtkWidget *image_prop_table = gtk_table_new (3, 2, FALSE);
+
+ manager->priv->monitor_chooser = rstto_monitor_chooser_new ();
+ manager->priv->style_combo = gtk_combo_box_text_new();
+ manager->priv->file = file;
+
+ gtk_table_set_row_spacing (GTK_TABLE(image_prop_table), 1, 4);
for (i = 0; i < n_monitors; ++i)
{
gdk_screen_get_monitor_geometry (screen, i, &monitor_geometry);
- rstto_monitor_chooser_add (RSTTO_MONITOR_CHOOSER(monitor_chooser), monitor_geometry.width, monitor_geometry.height);
- rstto_monitor_chooser_set_pixbuf (
- RSTTO_MONITOR_CHOOSER(monitor_chooser),
- i,
- gdk_pixbuf_new_from_file_at_size(
- g_file_get_path(file),
- 500,
- 500,
- NULL),
- NULL);
+ rstto_monitor_chooser_add (
+ RSTTO_MONITOR_CHOOSER (manager->priv->monitor_chooser),
+ monitor_geometry.width,
+ monitor_geometry.height);
}
-
-
- gtk_box_pack_start (GTK_BOX (vbox), monitor_chooser, FALSE, FALSE, 0);
- gtk_table_attach (GTK_TABLE (prop_table), style_label, 0, 1, 0, 1, 0, 0, 0, 0);
- gtk_table_attach (GTK_TABLE (prop_table), style_combo, 1, 2, 0, 1, 0, 0, 0, 0);
-
-
+ rstto_monitor_chooser_set_pixbuf (
+ RSTTO_MONITOR_CHOOSER(manager->priv->monitor_chooser),
+ 0,
+ gdk_pixbuf_new_from_file_at_size(
+ g_file_get_path(file),
+ 500,
+ 500,
+ NULL),
+ NULL);
+ rstto_monitor_chooser_add (
+ RSTTO_MONITOR_CHOOSER (manager->priv->monitor_chooser),
+ monitor_geometry.width,
+ monitor_geometry.height);
+
+
+ gtk_box_pack_start (GTK_BOX (vbox), manager->priv->monitor_chooser, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), image_prop_table, FALSE, FALSE, 0);
gtk_scale_set_value_pos (GTK_SCALE (brightness_slider), GTK_POS_RIGHT);
@@ -134,27 +153,33 @@ rstto_xfce_wallpaper_manager_configure_dialog_run (RsttoWallpaperManager *self,
gtk_table_attach (GTK_TABLE (image_prop_table), brightness_slider, 1, 2, 0, 1, GTK_EXPAND|GTK_FILL, 0, 0, 0);
gtk_table_attach (GTK_TABLE (image_prop_table), saturation_label, 0, 1, 1, 2, 0, 0, 0, 0);
gtk_table_attach (GTK_TABLE (image_prop_table), saturation_slider, 1, 2, 1, 2, GTK_EXPAND|GTK_FILL, 0, 0, 0);
+ gtk_table_attach (GTK_TABLE (image_prop_table), style_label, 0, 1, 2, 3, 0, 0, 0, 0);
+ gtk_table_attach (GTK_TABLE (image_prop_table), manager->priv->style_combo, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, 0, 0, 0);
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Auto"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Centered"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Tiled"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Stretched"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Scaled"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (style_combo), _("Zoomed"));
- gtk_combo_box_set_active (GTK_COMBO_BOX (style_combo), 4);
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Auto"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Centered"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Tiled"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Stretched"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Scaled"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (manager->priv->style_combo), _("Zoomed"));
+ gtk_combo_box_set_active (GTK_COMBO_BOX (manager->priv->style_combo), 4);
manager->priv->screen = gdk_screen_get_number (screen);
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+
+ g_signal_connect (G_OBJECT(manager->priv->monitor_chooser), "changed", G_CALLBACK (cb_monitor_chooser_changed), manager);
+ g_signal_connect (G_OBJECT(manager->priv->style_combo), "changed", G_CALLBACK (cb_style_combo_changed), manager);
+
gtk_widget_show_all (vbox);
response = gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_hide (dialog);
if (response == GTK_RESPONSE_OK)
{
- manager->priv->style = gtk_combo_box_get_active (GTK_COMBO_BOX (style_combo));
+ manager->priv->style = gtk_combo_box_get_active (GTK_COMBO_BOX (manager->priv->style_combo));
manager->priv->saturation = gtk_adjustment_get_value (GTK_ADJUSTMENT (saturation_adjustment));
manager->priv->brightness = (gint)gtk_adjustment_get_value (GTK_ADJUSTMENT (brightness_adjustment));
- manager->priv->monitor = gtk_combo_box_get_active (GTK_COMBO_BOX(monitor_combo));
+ manager->priv->monitor = rstto_monitor_chooser_get_selected(RSTTO_MONITOR_CHOOSER(manager->priv->monitor_chooser));
}
gtk_widget_destroy (dialog);
@@ -371,3 +396,37 @@ rstto_xfce_wallpaper_manager_new (void)
return xfce_wallpaper_manager_object;
}
+
+static void
+cb_style_combo_changed (
+ GtkComboBox *style_combo,
+ RsttoXfceWallpaperManager *manager)
+{
+ RsttoMonitorStyle style = gtk_combo_box_get_active (style_combo);
+ gint monitor_id = rstto_monitor_chooser_get_selected (RSTTO_MONITOR_CHOOSER(manager->priv->monitor_chooser));
+
+ rstto_monitor_chooser_set_style (
+ RSTTO_MONITOR_CHOOSER(manager->priv->monitor_chooser),
+ monitor_id,
+ style);
+
+}
+
+static void
+cb_monitor_chooser_changed (
+ RsttoMonitorChooser *monitor_chooser,
+ RsttoXfceWallpaperManager *manager)
+{
+ rstto_monitor_chooser_set_pixbuf (monitor_chooser, manager->priv->monitor, NULL, NULL);
+ manager->priv->monitor = rstto_monitor_chooser_get_selected (monitor_chooser);
+
+ rstto_monitor_chooser_set_pixbuf (
+ RSTTO_MONITOR_CHOOSER(manager->priv->monitor_chooser),
+ manager->priv->monitor,
+ gdk_pixbuf_new_from_file_at_size(
+ g_file_get_path(manager->priv->file),
+ 500,
+ 500,
+ NULL),
+ NULL);
+}
More information about the Xfce4-commits
mailing list