summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/.cvsignore5
-rw-r--r--test/Makefile.am22
-rw-r--r--test/test-nautilus-font-picker.c55
-rw-r--r--test/test-nautilus-font.c77
-rw-r--r--test/test-nautilus-image.c766
-rw-r--r--test/test-nautilus-label.c677
6 files changed, 1366 insertions, 236 deletions
diff --git a/test/.cvsignore b/test/.cvsignore
index d0e86c6d2..d3cfac69f 100644
--- a/test/.cvsignore
+++ b/test/.cvsignore
@@ -4,10 +4,13 @@
*.lo
Makefile
Makefile.in
+test-nautilus-font
+test-nautilus-font-picker
test-nautilus-image
-test-nautilus-graphic
+test-nautilus-label
test-nautilus-mime-actions
test-nautilus-mime-actions-set
test-nautilus-password-dialog
test-nautilus-preferences
test-nautilus-widgets
+font_test.png
diff --git a/test/Makefile.am b/test/Makefile.am
index a7700ad61..9ae10a6f0 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -12,6 +12,7 @@ INCLUDES =\
$(XML_CFLAGS) \
-DVERSION="\"$(VERSION)\"" \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -DNAUTILUS_DATADIR=\""$(datadir)/nautilus"\" \
$(NULL)
LDADD =\
@@ -26,7 +27,10 @@ LDADD =\
$(NULL)
noinst_PROGRAMS =\
+ test-nautilus-font \
+ test-nautilus-font-picker \
test-nautilus-image \
+ test-nautilus-label \
test-nautilus-mime-actions \
test-nautilus-mime-actions-set \
test-nautilus-password-dialog \
@@ -34,18 +38,12 @@ noinst_PROGRAMS =\
test-nautilus-widgets \
$(NULL)
+test_nautilus_font_SOURCES = test-nautilus-font.c
+test_nautilus_font_picker_SOURCES = test-nautilus-font-picker.c
+test_nautilus_image_SOURCES = test-nautilus-image.c
+test_nautilus_label_SOURCES = test-nautilus-label.c
test_nautilus_mime_actions_SOURCES = test-nautilus-mime-actions.c
-
test_nautilus_mime_actions_set_SOURCES = test-nautilus-mime-actions-set.c
-
-test_nautilus_widgets_SOURCES = test-nautilus-widgets.c
-
-test_nautilus_preferences_SOURCES = test-nautilus-preferences.c
-
-test_nautilus_image_SOURCES = test-nautilus-image.c
-
test_nautilus_password_dialog_SOURCES = test-nautilus-password-dialog.c
-
-EXTRA_DIST = \
- test-nautilus-mime-actions.c \
- $(NULL)
+test_nautilus_preferences_SOURCES = test-nautilus-preferences.c
+test_nautilus_widgets_SOURCES = test-nautilus-widgets.c
diff --git a/test/test-nautilus-font-picker.c b/test/test-nautilus-font-picker.c
new file mode 100644
index 000000000..cd1331912
--- /dev/null
+++ b/test/test-nautilus-font-picker.c
@@ -0,0 +1,55 @@
+
+#include <config.h>
+
+#include <libnautilus-extensions/nautilus-font-picker.h>
+
+#include <gtk/gtk.h>
+
+static void
+font_picker_changed_callback (GtkWidget *font_picker, gpointer user_data)
+{
+ char *family;
+ char *weight;
+ char *slant;
+ char *set_width;
+
+ g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
+
+ family = nautilus_font_picker_get_selected_family (NAUTILUS_FONT_PICKER (font_picker));
+ weight = nautilus_font_picker_get_selected_weight (NAUTILUS_FONT_PICKER (font_picker));
+ slant = nautilus_font_picker_get_selected_slant (NAUTILUS_FONT_PICKER (font_picker));
+ set_width = nautilus_font_picker_get_selected_set_width (NAUTILUS_FONT_PICKER (font_picker));
+
+ g_print ("%s (%s,%s,%s,%s)\n", __FUNCTION__, family, weight, slant, set_width);
+
+ g_free (family);
+ g_free (weight);
+ g_free (slant);
+ g_free (set_width);
+}
+
+int
+main (int argc, char * argv[])
+{
+ GtkWidget *window;
+ GtkWidget *font_picker;
+
+ gnome_init ("foo", "bar", argc, argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ font_picker = nautilus_font_picker_new ();
+
+ gtk_container_add (GTK_CONTAINER (window), font_picker);
+
+ gtk_signal_connect (GTK_OBJECT (font_picker),
+ "selected_font_changed",
+ GTK_SIGNAL_FUNC (font_picker_changed_callback),
+ (gpointer) NULL);
+
+ gtk_widget_show (font_picker);
+ gtk_widget_show (window);
+ gtk_main ();
+
+ return 0;
+}
diff --git a/test/test-nautilus-font.c b/test/test-nautilus-font.c
new file mode 100644
index 000000000..5a212b084
--- /dev/null
+++ b/test/test-nautilus-font.c
@@ -0,0 +1,77 @@
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <libnautilus-extensions/nautilus-background.h>
+#include <libnautilus-extensions/nautilus-file-utilities.h>
+#include <libnautilus-extensions/nautilus-font-factory.h>
+#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-gdk-extensions.h>
+#include <libnautilus-extensions/nautilus-gtk-extensions.h>
+#include <libnautilus-extensions/nautilus-gdk-pixbuf-extensions.h>
+#include <libnautilus-extensions/nautilus-icon-factory.h>
+#include <libnautilus-extensions/nautilus-string-list.h>
+#include <libnautilus-extensions/nautilus-string-picker.h>
+#include <libnautilus-extensions/nautilus-font-picker.h>
+#include <libnautilus-extensions/nautilus-text-caption.h>
+
+#include <libnautilus-extensions/nautilus-scalable-font.h>
+#include <libnautilus-extensions/nautilus-label.h>
+#include <libnautilus-extensions/nautilus-image.h>
+
+int
+main (int argc, char* argv[])
+{
+ GdkPixbuf *pixbuf;
+ guint text_width;
+ guint text_height;
+ ArtIRect area;
+ NautilusScalableFont *font;
+
+ const char *text = "Something";
+ const guint font_width = 64;
+ const guint font_height = 64;
+
+ gtk_init (&argc, &argv);
+ gdk_rgb_init ();
+
+ font = NAUTILUS_SCALABLE_FONT (nautilus_scalable_font_new ("Nimbus Sans L", NULL, NULL, NULL));
+ g_assert (font != NULL);
+
+ nautilus_scalable_font_measure_text (font,
+ font_width,
+ font_height,
+ text,
+ &text_width,
+ &text_height);
+
+ g_print ("size of '%s' = (%d,%d)\n", text, text_width, text_height);
+
+ pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 512, 256);
+ g_assert (pixbuf != NULL);
+
+ area.x0 = 0;
+ area.y0 = 0;
+
+ area.x1 = 512;
+ area.y1 = 256;
+
+ nautilus_scalable_font_draw_text (font,
+ pixbuf,
+ &area,
+ font_width,
+ font_height,
+ text,
+ NAUTILUS_RGB_COLOR_RED,
+ 255);
+
+ g_assert (pixbuf != NULL);
+
+ nautilus_gdk_pixbuf_save_to_file (pixbuf, "font_test.png");
+
+ g_print ("saving test png file to font_test.png\n");
+
+ gdk_pixbuf_unref (pixbuf);
+
+ return 0;
+}
diff --git a/test/test-nautilus-image.c b/test/test-nautilus-image.c
index 9773dec90..b45cb7510 100644
--- a/test/test-nautilus-image.c
+++ b/test/test-nautilus-image.c
@@ -2,356 +2,676 @@
#include <config.h>
#include <gtk/gtk.h>
-#include <libnautilus-extensions/nautilus-image.h>
-#include <libnautilus-extensions/nautilus-icon-factory.h>
+#include <libnautilus-extensions/nautilus-background.h>
#include <libnautilus-extensions/nautilus-file-utilities.h>
#include <libnautilus-extensions/nautilus-font-factory.h>
+#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-gdk-extensions.h>
+#include <libnautilus-extensions/nautilus-gtk-extensions.h>
+#include <libnautilus-extensions/nautilus-icon-factory.h>
+#include <libnautilus-extensions/nautilus-string-list.h>
+#include <libnautilus-extensions/nautilus-string-picker.h>
+#include <libnautilus-extensions/nautilus-font-picker.h>
+#include <libnautilus-extensions/nautilus-text-caption.h>
+#include <libnautilus-extensions/nautilus-string.h>
+#include <libgnomevfs/gnome-vfs-init.h>
+
+#include <libnautilus-extensions/nautilus-scalable-font.h>
+#include <libnautilus-extensions/nautilus-label.h>
+#include <libnautilus-extensions/nautilus-image.h>
-static GdkPixbuf*
-create_background (void)
+static void
+red_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- GdkPixbuf *background;
-
- background = gdk_pixbuf_new_from_file ("/gnome/share/nautilus/backgrounds/pale_coins.png");
+ NautilusLabel *label;
+ guint32 color;
- g_assert (background != NULL);
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- return background;
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK ((guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
}
-static GdkPixbuf*
-create_pixbuf (const char *name)
+static void
+green_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- char *icon_path;
- GdkPixbuf *pixbuf = NULL;
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- g_assert (name != NULL);
+ label = NAUTILUS_LABEL (client_data);
- icon_path = nautilus_pixmap_file (name);
- g_assert (icon_path != NULL);
+ color = nautilus_label_get_text_color (label);
- pixbuf = gdk_pixbuf_new_from_file (icon_path);
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
- g_assert (pixbuf != NULL);
+static void
+blue_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- g_free (icon_path);
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
- return pixbuf;
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
}
-static GtkWidget*
-create_image (const char *name, GdkPixbuf *background)
+static void
+alpha_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- GtkWidget *image;
- GdkPixbuf *pixbuf;
+ NautilusLabel *label;
- g_assert (background != NULL);
-
- image = nautilus_image_new ();
- g_assert (image != NULL);
-
- nautilus_image_set_background_type (NAUTILUS_IMAGE (image), NAUTILUS_IMAGE_BACKGROUND_PIXBUF);
- nautilus_image_set_background_pixbuf (NAUTILUS_IMAGE (image), background);
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- if (name != NULL)
- {
- pixbuf = create_pixbuf (name);
- g_assert (pixbuf != NULL);
-
- nautilus_image_set_pixbuf (NAUTILUS_IMAGE (image), pixbuf);
-
- gdk_pixbuf_unref (pixbuf);
- }
+ label = NAUTILUS_LABEL (client_data);
- return image;
+ nautilus_label_set_text_alpha (NAUTILUS_LABEL (label), (guchar) adjustment->value);
}
static void
-alpha_scale_value_changed (GtkAdjustment *adjustment, gpointer client_data)
+red_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- GList *image_list;
+ NautilusLabel *label;
+ guint32 color;
g_return_if_fail (adjustment != NULL);
g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- image_list = (GList *) client_data;
-
- while (image_list)
- {
- g_assert (image_list->data != NULL);
- g_assert (NAUTILUS_IS_IMAGE (image_list->data));
-
- nautilus_image_set_overall_alpha (NAUTILUS_IMAGE (image_list->data), (guchar) adjustment->value);
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
- image_list = image_list->next;
- }
+ color = NAUTILUS_RGBA_COLOR_PACK ((guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
}
static void
-red_color_value_changed (GtkAdjustment *adjustment, gpointer client_data)
+green_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- GList *image_list;
+ NautilusLabel *label;
+ guint32 color;
g_return_if_fail (adjustment != NULL);
g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- image_list = (GList *) client_data;
-
- while (image_list)
- {
- NautilusImage *image;
- guint32 color;
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
- g_assert (image_list->data != NULL);
- g_assert (NAUTILUS_IS_IMAGE (image_list->data));
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
- image = NAUTILUS_IMAGE (image_list->data);
+static void
+blue_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
- color = nautilus_image_get_background_color (image);
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- color = NAUTILUS_RGBA_COLOR_PACK ((guchar) adjustment->value,
- NAUTILUS_RGBA_COLOR_GET_G (color),
- NAUTILUS_RGBA_COLOR_GET_B (color),
- NAUTILUS_RGBA_COLOR_GET_A (color));
-
- nautilus_image_set_background_color (image, color);
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
- image_list = image_list->next;
- }
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
}
static void
-green_color_value_changed (GtkAdjustment *adjustment, gpointer client_data)
+alpha_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
{
- GList *image_list;
+ NautilusLabel *label;
g_return_if_fail (adjustment != NULL);
g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- image_list = (GList *) client_data;
-
- while (image_list)
- {
- NautilusImage *image;
- guint32 color;
+ label = NAUTILUS_LABEL (client_data);
- g_assert (image_list->data != NULL);
- g_assert (NAUTILUS_IS_IMAGE (image_list->data));
+ nautilus_label_set_text_alpha (NAUTILUS_LABEL (label), (guchar) adjustment->value);
+}
- image = NAUTILUS_IMAGE (image_list->data);
+static void
+font_size_changed_callback (NautilusStringPicker *string_picker, gpointer client_data)
+{
+ char *string;
+ int size;
- color = nautilus_image_get_background_color (image);
+ g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
- (guchar) adjustment->value,
- NAUTILUS_RGBA_COLOR_GET_B (color),
- NAUTILUS_RGBA_COLOR_GET_A (color));
-
- nautilus_image_set_background_color (image, color);
+ string = nautilus_string_picker_get_selected_string (string_picker);
- image_list = image_list->next;
+ if (nautilus_eat_str_to_int (string, &size)) {
+ nautilus_label_set_font_size (NAUTILUS_LABEL (client_data), (guint) size);
}
+
+ g_free (string);
}
static void
-blue_color_value_changed (GtkAdjustment *adjustment, gpointer client_data)
+font_changed_callback (NautilusFontPicker *font_picker, gpointer client_data)
{
- GList *image_list;
-
- g_return_if_fail (adjustment != NULL);
- g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
- g_return_if_fail (client_data != NULL);
+ NautilusScalableFont *font;
+ char *family;
+ char *weight;
+ char *slant;
+ char *set_width;
- image_list = (GList *) client_data;
+ g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- while (image_list)
- {
- NautilusImage *image;
- guint32 color;
+ family = nautilus_font_picker_get_selected_family (NAUTILUS_FONT_PICKER (font_picker));
+ weight = nautilus_font_picker_get_selected_weight (NAUTILUS_FONT_PICKER (font_picker));
+ slant = nautilus_font_picker_get_selected_slant (NAUTILUS_FONT_PICKER (font_picker));
+ set_width = nautilus_font_picker_get_selected_set_width (NAUTILUS_FONT_PICKER (font_picker));
- g_assert (image_list->data != NULL);
- g_assert (NAUTILUS_IS_IMAGE (image_list->data));
+ g_print ("%s (%s,%s,%s,%s)\n", __FUNCTION__, family, weight, slant, set_width);
- image = NAUTILUS_IMAGE (image_list->data);
+ font = NAUTILUS_SCALABLE_FONT (nautilus_scalable_font_new (family, weight, slant, set_width));
+ g_assert (font != NULL);
- color = nautilus_image_get_background_color (image);
+ nautilus_label_set_font (NAUTILUS_LABEL (client_data), font);
- color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
- NAUTILUS_RGBA_COLOR_GET_G (color),
- (guchar) adjustment->value,
- NAUTILUS_RGBA_COLOR_GET_A (color));
-
- nautilus_image_set_background_color (image, color);
+ g_free (family);
+ g_free (weight);
+ g_free (slant);
+ g_free (set_width);
- image_list = image_list->next;
- }
+ gtk_object_unref (GTK_OBJECT (font));
}
static void
-toggle_background_type_callback (GtkWidget *widget, gpointer client_data)
+text_caption_changed_callback (NautilusTextCaption *text_caption, gpointer client_data)
{
- NautilusImage *image;
+ NautilusLabel *label;
+ char *text;
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_BUTTON (widget));
- g_return_if_fail (client_data != NULL);
- g_return_if_fail (NAUTILUS_IS_IMAGE (client_data));
+ g_return_if_fail (NAUTILUS_IS_TEXT_CAPTION (text_caption));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- image = NAUTILUS_IMAGE (client_data);
+ text = nautilus_text_caption_get_text (text_caption);
- if (nautilus_image_get_background_type (image) == NAUTILUS_IMAGE_BACKGROUND_PIXBUF)
- {
- nautilus_image_set_background_type (image, NAUTILUS_IMAGE_BACKGROUND_SOLID);
- }
- else
- {
- nautilus_image_set_background_type (image, NAUTILUS_IMAGE_BACKGROUND_PIXBUF);
- }
+ label = NAUTILUS_LABEL (client_data);
+
+ nautilus_label_set_text (NAUTILUS_LABEL (label), text);
+
+ g_free (text);
}
static GtkWidget*
-create_color_scale (guint num_colors, GtkSignalFunc callback, gpointer callback_data)
+create_value_scale (guint min,
+ guint max,
+ guint value,
+ const char *color_spec,
+ GtkSignalFunc callback,
+ gpointer callback_data)
{
GtkAdjustment *adjustment;
GtkWidget *scale;
- g_assert (num_colors > 0);
+ g_assert (max > min);
g_assert (callback > 0);
-
- adjustment = (GtkAdjustment *) gtk_adjustment_new (num_colors,
- 0,
- num_colors,
+
+ adjustment = (GtkAdjustment *) gtk_adjustment_new (value,
+ min,
+ max,
1,
- num_colors / 10,
+ (max - min) / 10,
0);
scale = gtk_hscale_new (adjustment);
- gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", callback, callback_data);
+ if (color_spec != NULL) {
+ nautilus_gtk_widget_set_background_color (scale, color_spec);
+ }
- gtk_widget_set_usize (scale, 150, 0);
+ gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+ gtk_widget_set_usize (scale, 150, 0);
+
+ gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", callback, callback_data);
+
return scale;
}
-int
-main (int argc, char* argv[])
+static GtkWidget*
+create_value_scale_caption (const gchar *title,
+ guint min,
+ guint max,
+ guint value,
+ const char *color_spec,
+ GtkSignalFunc callback,
+ gpointer callback_data)
{
- GtkWidget *window;
- GtkWidget *main_box;
- GtkWidget *image_box;
- GtkWidget *tool_box;
- GtkWidget *toggle_background_type;
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *scale;
- GtkWidget *alpha_scale;
+ scale = create_value_scale (min, max, value, color_spec, callback, callback_data);
+ hbox = gtk_hbox_new (FALSE, 0);
+ label = gtk_label_new (title);
+
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 4);
+ gtk_box_pack_end (GTK_BOX (hbox), scale, FALSE, FALSE, 4);
- GtkWidget *red_scale;
- GtkWidget *green_scale;
- GtkWidget *blue_scale;
+ gtk_widget_show (label);
+ gtk_widget_show (scale);
- GdkPixbuf *background;
+ return hbox;
+}
- GtkWidget *image1;
- GtkWidget *image2;
- GtkWidget *image3;
+static GtkWidget*
+create_color_picker_frame (const char *title,
+ GtkSignalFunc red_callback,
+ GtkSignalFunc green_callback,
+ GtkSignalFunc blue_callback,
+ GtkSignalFunc alpha_callback,
+ gpointer callback_data,
+ guint32 current_color)
+{
+ GtkWidget *red_scale;
+ GtkWidget *green_scale;
+ GtkWidget *blue_scale;
+ GtkWidget *alpha_scale;
+ GtkWidget *frame;
+ GtkWidget *vbox;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (red_callback != NULL, NULL);
+ g_return_val_if_fail (green_callback != NULL, NULL);
+ g_return_val_if_fail (blue_callback != NULL, NULL);
+ g_return_val_if_fail (alpha_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
+
+ red_scale = create_value_scale_caption ("Red",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "red",
+ red_callback,
+ callback_data);
+
+ green_scale = create_value_scale_caption ("Green",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "green",
+ green_callback,
+ callback_data);
+
+ blue_scale = create_value_scale_caption ("Blue",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "blue",
+ blue_callback,
+ callback_data);
+
+ alpha_scale = create_value_scale_caption ("Alpha",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ NULL,
+ alpha_callback,
+ callback_data);
- GtkWidget *background_image;
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
- GList *image_list = NULL;
+ gtk_box_pack_start (GTK_BOX (vbox), red_scale, TRUE, TRUE, 2);
+ gtk_box_pack_start (GTK_BOX (vbox), green_scale, TRUE, TRUE, 1);
+ gtk_box_pack_start (GTK_BOX (vbox), blue_scale, TRUE, TRUE, 1);
+ gtk_box_pack_end (GTK_BOX (vbox), alpha_scale, TRUE, TRUE, 2);
- const char *file_name1 = "eazel-services-logo.png";
- const char *file_name2 = "eazel-services-logo-tile.png";
- const char *file_name3 = "eazel-services-logo-tile.png";
+ gtk_widget_show_all (vbox);
- gtk_init (&argc, &argv);
- gdk_rgb_init ();
+ return frame;
+}
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title (GTK_WINDOW (window), "Image Test");
- gtk_container_set_border_width (GTK_CONTAINER (window), 10);
+static GtkWidget*
+create_font_picker_frame (const char *title,
+ GtkSignalFunc changed_callback,
+ GtkSignalFunc size_changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *hbox;
+ GtkWidget *font_picker;
+ GtkWidget *font_size_picker;
+ NautilusStringList *font_size_list;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (changed_callback != NULL, NULL);
+ g_return_val_if_fail (size_changed_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
- main_box = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), main_box);
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
+
+ gtk_container_add (GTK_CONTAINER (frame), hbox);
+
+ font_size_picker = nautilus_string_picker_new ();
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_size_picker), FALSE);
+ nautilus_caption_set_title_label (NAUTILUS_CAPTION (font_size_picker), _("Size"));
+
+ gtk_signal_connect (GTK_OBJECT (font_size_picker), "changed", size_changed_callback, callback_data);
+
+ font_size_list = nautilus_string_list_new_from_tokens ("5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,"
+ "30,40,50,60,70,80,90,100,110,120,130,140,"
+ "200,400,800", ",");
+
+ nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_size_picker), font_size_list);
+ nautilus_string_list_free (font_size_list);
+
+ font_picker = nautilus_font_picker_new ();
+ gtk_signal_connect (GTK_OBJECT (font_picker), "selected_font_changed", changed_callback, callback_data);
+
+ gtk_box_pack_start (GTK_BOX (hbox), font_picker, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (hbox), font_size_picker, FALSE, FALSE, 5);
+
+ gtk_widget_show_all (hbox);
+
+ return frame;
+}
+
+static GtkWidget*
+create_text_caption_frame (const char *title,
+ GtkSignalFunc changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *text_caption;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (changed_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
+
+ text_caption = nautilus_text_caption_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (text_caption), 6);
+
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (text_caption), FALSE);
+ nautilus_caption_set_title_label (NAUTILUS_CAPTION (text_caption), title);
+
+ gtk_signal_connect (GTK_OBJECT (text_caption), "changed", changed_callback, callback_data);
+
+ gtk_container_add (GTK_CONTAINER (frame), text_caption);
+
+ gtk_widget_show (text_caption);
+
+ return frame;
+}
+
+static void
+widget_set_background_image (GtkWidget *widget, const char *image_name)
+{
+ NautilusBackground *background;
+ char *background_uri;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (image_name != NULL);
+
+ background = nautilus_get_widget_background (widget);
+
+ background_uri = g_strdup_printf ("file://%s/backgrounds/%s", NAUTILUS_DATADIR, image_name);
+
+ nautilus_background_reset (background);
+ nautilus_background_set_image_uri (background, background_uri);
+
+ g_free (background_uri);
+}
+
+static void
+widget_set_background_color (GtkWidget *widget, const char *color)
+{
+ NautilusBackground *background;
- background = create_background ();
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (color != NULL);
- image1 = create_image (file_name1, background);
- image2 = create_image (file_name2, background);
- image3 = create_image (file_name3, background);
- background_image = create_image (NULL, background);
+ background = nautilus_get_widget_background (widget);
+
+ nautilus_background_reset (background);
+ nautilus_background_set_color (background, color);
+}
- image_list = g_list_append (image_list, image1);
- image_list = g_list_append (image_list, image2);
- image_list = g_list_append (image_list, image3);
- image_list = g_list_append (image_list, background_image);
+static void
+widget_set_background_reset (GtkWidget *widget)
+{
+ NautilusBackground *background;
- nautilus_image_set_placement_type (NAUTILUS_IMAGE (image2), NAUTILUS_IMAGE_PLACEMENT_TILE);
- nautilus_image_set_placement_type (NAUTILUS_IMAGE (image3), NAUTILUS_IMAGE_PLACEMENT_TILE);
+ g_return_if_fail (GTK_IS_WIDGET (widget));
- {
- GdkFont *font;
+ background = nautilus_get_widget_background (widget);
- font = nautilus_font_factory_get_font_by_family ("helvetica", 20);
+ nautilus_background_reset (background);
+}
- nautilus_image_set_label_text (NAUTILUS_IMAGE (image3), "Welcome Back, Arlo!");
- nautilus_image_set_label_font (NAUTILUS_IMAGE (image3), font);
+static void
+background_changed_callback (NautilusStringPicker *string_picker, gpointer client_data)
+{
+ char *string;
+
+ g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
- gdk_font_unref (font);
+ string = nautilus_string_picker_get_selected_string (string_picker);
- nautilus_image_set_extra_width (NAUTILUS_IMAGE (image3), 8);
- nautilus_image_set_right_offset (NAUTILUS_IMAGE (image3), 8);
- nautilus_image_set_top_offset (NAUTILUS_IMAGE (image3), 3);
+ if (nautilus_str_has_prefix (string, "Image - ")) {
+ widget_set_background_image (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Image - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Gradient - ")) {
+ widget_set_background_color (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Gradient - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Solid - ")) {
+ widget_set_background_color (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Solid - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Reset")) {
+ widget_set_background_reset (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)));
}
+
+ g_free (string);
+}
+
+static GtkWidget*
+create_background_frame (const char *title,
+ GtkSignalFunc background_changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *vbox;
+ GtkWidget *background_picker;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (background_changed_callback != NULL, NULL);
- image_box = gtk_hbox_new (FALSE, 0);
- tool_box = gtk_hbox_new (FALSE, 0);
+ vbox = gtk_vbox_new (FALSE, 0);
+ frame = gtk_frame_new (title);
- gtk_box_pack_start (GTK_BOX (main_box), image_box, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (main_box), background_image, TRUE, TRUE, 0);
- gtk_box_pack_end (GTK_BOX (main_box), tool_box, FALSE, FALSE, 10);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_box_pack_start (GTK_BOX (image_box), image1, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (image_box), image2, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (image_box), image3, FALSE, FALSE, 0);
+ background_picker = nautilus_string_picker_new ();
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - pale_coins.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - bubbles.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - irish_spring.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - white_ribs.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Gradient - rgb:bbbb/bbbb/eeee-rgb:ffff/ffff/ffff:h");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Gradient - rgb:bbbb/bbbb/eeee-rgb:ffff/ffff/ffff");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Solid - rgb:bbbb/bbbb/eeee");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Reset");
- alpha_scale = create_color_scale (255, alpha_scale_value_changed, image_list);
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (background_picker), FALSE);
+
+ gtk_signal_connect (GTK_OBJECT (background_picker), "changed", background_changed_callback, callback_data);
+
+ gtk_box_pack_start (GTK_BOX (vbox), background_picker, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (vbox);
+
+ return frame;
+}
- toggle_background_type = gtk_button_new_with_label ("Toggle Background Type");
- red_scale = create_color_scale (255, red_color_value_changed, image_list);
- green_scale = create_color_scale (255, green_color_value_changed, image_list);
- blue_scale = create_color_scale (255, blue_color_value_changed, image_list);
+int
+main (int argc, char* argv[])
+{
+ GtkWidget *window;
+ GtkWidget *main_box;
+ GtkWidget *bottom_box;
+ GtkWidget *tool_box1;
+ GtkWidget *tool_box2;
+ GtkWidget *tool_box3;
+ GtkWidget *color_tool_box;
+ GtkWidget *label;
+ GtkWidget *label_color_picker_frame;
+ GtkWidget *background_color_picker_frame;
+ GtkWidget *font_picker_frame;
+ GtkWidget *text_caption_frame;
+ GtkWidget *background_frame;
+
+ gtk_init (&argc, &argv);
+ gdk_rgb_init ();
+ gnome_vfs_init ();
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (window), "Label Test");
+ gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
+ gtk_container_set_border_width (GTK_CONTAINER (window), 10);
+
+ main_box = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), main_box);
+
+ label = nautilus_label_new ();
+
+ bottom_box = gtk_vbox_new (FALSE, 4);
+
+ tool_box1 = gtk_hbox_new (FALSE, 0);
+ tool_box2 = gtk_hbox_new (FALSE, 0);
+ tool_box3 = gtk_hbox_new (FALSE, 0);
+
+ color_tool_box = gtk_hbox_new (FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (bottom_box), tool_box1, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (bottom_box), tool_box2, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (bottom_box), tool_box3, TRUE, TRUE, 10);
+
+ nautilus_label_set_text (NAUTILUS_LABEL (label), "Label that doesn't suck\nFoo\nBar");
+
+ gtk_box_pack_start (GTK_BOX (main_box), label, TRUE, TRUE, 10);
+ gtk_box_pack_end (GTK_BOX (main_box), bottom_box, TRUE, TRUE, 10);
+
+ widget_set_background_image (nautilus_gtk_widget_find_windowed_ancestor (label), "pale_coins.png");
- gtk_box_pack_start (GTK_BOX (tool_box), alpha_scale, FALSE, FALSE, 5);
- gtk_box_pack_start (GTK_BOX (tool_box), toggle_background_type, FALSE, FALSE, 5);
- gtk_box_pack_start (GTK_BOX (tool_box), red_scale, FALSE, FALSE, 5);
- gtk_box_pack_start (GTK_BOX (tool_box), green_scale, FALSE, FALSE, 5);
- gtk_box_pack_start (GTK_BOX (tool_box), blue_scale, FALSE, FALSE, 5);
-
- gtk_signal_connect (GTK_OBJECT (toggle_background_type),
- "clicked",
- GTK_SIGNAL_FUNC (toggle_background_type_callback),
- (gpointer) image1);
-
- gtk_signal_connect (GTK_OBJECT (toggle_background_type),
- "clicked",
- GTK_SIGNAL_FUNC (toggle_background_type_callback),
- (gpointer) image2);
- gtk_signal_connect (GTK_OBJECT (toggle_background_type),
- "clicked",
- GTK_SIGNAL_FUNC (toggle_background_type_callback),
- (gpointer) image3);
-
- gtk_signal_connect (GTK_OBJECT (toggle_background_type),
- "clicked",
- GTK_SIGNAL_FUNC (toggle_background_type_callback),
- (gpointer) background_image);
+ label_color_picker_frame = create_color_picker_frame ("Label Color",
+ red_label_color_value_changed_callback,
+ green_label_color_value_changed_callback,
+ blue_label_color_value_changed_callback,
+ alpha_label_color_value_changed_callback,
+ label,
+ nautilus_label_get_text_color (NAUTILUS_LABEL (label)));
+
+ background_color_picker_frame = create_color_picker_frame ("Background Color",
+ red_background_color_value_changed_callback,
+ green_background_color_value_changed_callback,
+ blue_background_color_value_changed_callback,
+ alpha_background_color_value_changed_callback,
+ label,
+ nautilus_label_get_text_color (NAUTILUS_LABEL (label)));
+
+ font_picker_frame = create_font_picker_frame ("Font",
+ font_changed_callback,
+ font_size_changed_callback,
+ label);
+
+ text_caption_frame = create_text_caption_frame ("Text",
+ text_caption_changed_callback,
+ label);
+
+ background_frame = create_background_frame ("Background",
+ background_changed_callback,
+ label);
+
+ gtk_box_pack_start (GTK_BOX (color_tool_box), label_color_picker_frame, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (color_tool_box), background_frame, FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX (color_tool_box), background_color_picker_frame, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (tool_box1), color_tool_box, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (tool_box2), font_picker_frame, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (tool_box3), text_caption_frame, TRUE, TRUE, 0);
gtk_widget_show_all (window);
gtk_main ();
+
+ gnome_vfs_shutdown ();
return 0;
}
diff --git a/test/test-nautilus-label.c b/test/test-nautilus-label.c
new file mode 100644
index 000000000..b45cb7510
--- /dev/null
+++ b/test/test-nautilus-label.c
@@ -0,0 +1,677 @@
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <libnautilus-extensions/nautilus-background.h>
+#include <libnautilus-extensions/nautilus-file-utilities.h>
+#include <libnautilus-extensions/nautilus-font-factory.h>
+#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-gdk-extensions.h>
+#include <libnautilus-extensions/nautilus-gtk-extensions.h>
+#include <libnautilus-extensions/nautilus-icon-factory.h>
+#include <libnautilus-extensions/nautilus-string-list.h>
+#include <libnautilus-extensions/nautilus-string-picker.h>
+#include <libnautilus-extensions/nautilus-font-picker.h>
+#include <libnautilus-extensions/nautilus-text-caption.h>
+#include <libnautilus-extensions/nautilus-string.h>
+#include <libgnomevfs/gnome-vfs-init.h>
+
+#include <libnautilus-extensions/nautilus-scalable-font.h>
+#include <libnautilus-extensions/nautilus-label.h>
+#include <libnautilus-extensions/nautilus-image.h>
+
+static void
+red_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK ((guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+green_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+blue_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+alpha_label_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ nautilus_label_set_text_alpha (NAUTILUS_LABEL (label), (guchar) adjustment->value);
+}
+
+static void
+red_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK ((guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+green_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_B (color),
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+blue_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+ guint32 color;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ color = nautilus_label_get_text_color (label);
+
+ color = NAUTILUS_RGBA_COLOR_PACK (NAUTILUS_RGBA_COLOR_GET_R (color),
+ NAUTILUS_RGBA_COLOR_GET_G (color),
+ (guchar) adjustment->value,
+ NAUTILUS_RGBA_COLOR_GET_A (color));
+
+ nautilus_label_set_text_color (label, color);
+}
+
+static void
+alpha_background_color_value_changed_callback (GtkAdjustment *adjustment, gpointer client_data)
+{
+ NautilusLabel *label;
+
+ g_return_if_fail (adjustment != NULL);
+ g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+ g_return_if_fail (client_data != NULL);
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ label = NAUTILUS_LABEL (client_data);
+
+ nautilus_label_set_text_alpha (NAUTILUS_LABEL (label), (guchar) adjustment->value);
+}
+
+static void
+font_size_changed_callback (NautilusStringPicker *string_picker, gpointer client_data)
+{
+ char *string;
+ int size;
+
+ g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ string = nautilus_string_picker_get_selected_string (string_picker);
+
+ if (nautilus_eat_str_to_int (string, &size)) {
+ nautilus_label_set_font_size (NAUTILUS_LABEL (client_data), (guint) size);
+ }
+
+ g_free (string);
+}
+
+static void
+font_changed_callback (NautilusFontPicker *font_picker, gpointer client_data)
+{
+ NautilusScalableFont *font;
+ char *family;
+ char *weight;
+ char *slant;
+ char *set_width;
+
+ g_return_if_fail (NAUTILUS_IS_FONT_PICKER (font_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ family = nautilus_font_picker_get_selected_family (NAUTILUS_FONT_PICKER (font_picker));
+ weight = nautilus_font_picker_get_selected_weight (NAUTILUS_FONT_PICKER (font_picker));
+ slant = nautilus_font_picker_get_selected_slant (NAUTILUS_FONT_PICKER (font_picker));
+ set_width = nautilus_font_picker_get_selected_set_width (NAUTILUS_FONT_PICKER (font_picker));
+
+ g_print ("%s (%s,%s,%s,%s)\n", __FUNCTION__, family, weight, slant, set_width);
+
+ font = NAUTILUS_SCALABLE_FONT (nautilus_scalable_font_new (family, weight, slant, set_width));
+ g_assert (font != NULL);
+
+ nautilus_label_set_font (NAUTILUS_LABEL (client_data), font);
+
+ g_free (family);
+ g_free (weight);
+ g_free (slant);
+ g_free (set_width);
+
+ gtk_object_unref (GTK_OBJECT (font));
+}
+
+static void
+text_caption_changed_callback (NautilusTextCaption *text_caption, gpointer client_data)
+{
+ NautilusLabel *label;
+ char *text;
+
+ g_return_if_fail (NAUTILUS_IS_TEXT_CAPTION (text_caption));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ text = nautilus_text_caption_get_text (text_caption);
+
+ label = NAUTILUS_LABEL (client_data);
+
+ nautilus_label_set_text (NAUTILUS_LABEL (label), text);
+
+ g_free (text);
+}
+
+static GtkWidget*
+create_value_scale (guint min,
+ guint max,
+ guint value,
+ const char *color_spec,
+ GtkSignalFunc callback,
+ gpointer callback_data)
+{
+ GtkAdjustment *adjustment;
+ GtkWidget *scale;
+
+ g_assert (max > min);
+ g_assert (callback > 0);
+
+ adjustment = (GtkAdjustment *) gtk_adjustment_new (value,
+ min,
+ max,
+ 1,
+ (max - min) / 10,
+ 0);
+
+ scale = gtk_hscale_new (adjustment);
+
+ if (color_spec != NULL) {
+ nautilus_gtk_widget_set_background_color (scale, color_spec);
+ }
+
+ gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+
+ gtk_widget_set_usize (scale, 150, 0);
+
+ gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", callback, callback_data);
+
+ return scale;
+}
+
+static GtkWidget*
+create_value_scale_caption (const gchar *title,
+ guint min,
+ guint max,
+ guint value,
+ const char *color_spec,
+ GtkSignalFunc callback,
+ gpointer callback_data)
+{
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *scale;
+
+ scale = create_value_scale (min, max, value, color_spec, callback, callback_data);
+ hbox = gtk_hbox_new (FALSE, 0);
+ label = gtk_label_new (title);
+
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 4);
+ gtk_box_pack_end (GTK_BOX (hbox), scale, FALSE, FALSE, 4);
+
+ gtk_widget_show (label);
+ gtk_widget_show (scale);
+
+ return hbox;
+}
+
+static GtkWidget*
+create_color_picker_frame (const char *title,
+ GtkSignalFunc red_callback,
+ GtkSignalFunc green_callback,
+ GtkSignalFunc blue_callback,
+ GtkSignalFunc alpha_callback,
+ gpointer callback_data,
+ guint32 current_color)
+{
+ GtkWidget *red_scale;
+ GtkWidget *green_scale;
+ GtkWidget *blue_scale;
+ GtkWidget *alpha_scale;
+ GtkWidget *frame;
+ GtkWidget *vbox;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (red_callback != NULL, NULL);
+ g_return_val_if_fail (green_callback != NULL, NULL);
+ g_return_val_if_fail (blue_callback != NULL, NULL);
+ g_return_val_if_fail (alpha_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
+
+ red_scale = create_value_scale_caption ("Red",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "red",
+ red_callback,
+ callback_data);
+
+ green_scale = create_value_scale_caption ("Green",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "green",
+ green_callback,
+ callback_data);
+
+ blue_scale = create_value_scale_caption ("Blue",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ "blue",
+ blue_callback,
+ callback_data);
+
+ alpha_scale = create_value_scale_caption ("Alpha",
+ 0,
+ 255,
+ NAUTILUS_RGBA_COLOR_GET_R (current_color),
+ NULL,
+ alpha_callback,
+ callback_data);
+
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
+
+ gtk_box_pack_start (GTK_BOX (vbox), red_scale, TRUE, TRUE, 2);
+ gtk_box_pack_start (GTK_BOX (vbox), green_scale, TRUE, TRUE, 1);
+ gtk_box_pack_start (GTK_BOX (vbox), blue_scale, TRUE, TRUE, 1);
+ gtk_box_pack_end (GTK_BOX (vbox), alpha_scale, TRUE, TRUE, 2);
+
+ gtk_widget_show_all (vbox);
+
+ return frame;
+}
+
+static GtkWidget*
+create_font_picker_frame (const char *title,
+ GtkSignalFunc changed_callback,
+ GtkSignalFunc size_changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *hbox;
+ GtkWidget *font_picker;
+ GtkWidget *font_size_picker;
+ NautilusStringList *font_size_list;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (changed_callback != NULL, NULL);
+ g_return_val_if_fail (size_changed_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
+
+ gtk_container_add (GTK_CONTAINER (frame), hbox);
+
+ font_size_picker = nautilus_string_picker_new ();
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (font_size_picker), FALSE);
+ nautilus_caption_set_title_label (NAUTILUS_CAPTION (font_size_picker), _("Size"));
+
+ gtk_signal_connect (GTK_OBJECT (font_size_picker), "changed", size_changed_callback, callback_data);
+
+ font_size_list = nautilus_string_list_new_from_tokens ("5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,"
+ "30,40,50,60,70,80,90,100,110,120,130,140,"
+ "200,400,800", ",");
+
+ nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (font_size_picker), font_size_list);
+ nautilus_string_list_free (font_size_list);
+
+ font_picker = nautilus_font_picker_new ();
+ gtk_signal_connect (GTK_OBJECT (font_picker), "selected_font_changed", changed_callback, callback_data);
+
+ gtk_box_pack_start (GTK_BOX (hbox), font_picker, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (hbox), font_size_picker, FALSE, FALSE, 5);
+
+ gtk_widget_show_all (hbox);
+
+ return frame;
+}
+
+static GtkWidget*
+create_text_caption_frame (const char *title,
+ GtkSignalFunc changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *text_caption;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (changed_callback != NULL, NULL);
+
+ frame = gtk_frame_new (title);
+
+ text_caption = nautilus_text_caption_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (text_caption), 6);
+
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (text_caption), FALSE);
+ nautilus_caption_set_title_label (NAUTILUS_CAPTION (text_caption), title);
+
+ gtk_signal_connect (GTK_OBJECT (text_caption), "changed", changed_callback, callback_data);
+
+ gtk_container_add (GTK_CONTAINER (frame), text_caption);
+
+ gtk_widget_show (text_caption);
+
+ return frame;
+}
+
+static void
+widget_set_background_image (GtkWidget *widget, const char *image_name)
+{
+ NautilusBackground *background;
+ char *background_uri;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (image_name != NULL);
+
+ background = nautilus_get_widget_background (widget);
+
+ background_uri = g_strdup_printf ("file://%s/backgrounds/%s", NAUTILUS_DATADIR, image_name);
+
+ nautilus_background_reset (background);
+ nautilus_background_set_image_uri (background, background_uri);
+
+ g_free (background_uri);
+}
+
+static void
+widget_set_background_color (GtkWidget *widget, const char *color)
+{
+ NautilusBackground *background;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (color != NULL);
+
+ background = nautilus_get_widget_background (widget);
+
+ nautilus_background_reset (background);
+ nautilus_background_set_color (background, color);
+}
+
+static void
+widget_set_background_reset (GtkWidget *widget)
+{
+ NautilusBackground *background;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
+ background = nautilus_get_widget_background (widget);
+
+ nautilus_background_reset (background);
+}
+
+static void
+background_changed_callback (NautilusStringPicker *string_picker, gpointer client_data)
+{
+ char *string;
+
+ g_return_if_fail (NAUTILUS_IS_STRING_PICKER (string_picker));
+ g_return_if_fail (NAUTILUS_IS_LABEL (client_data));
+
+ string = nautilus_string_picker_get_selected_string (string_picker);
+
+ if (nautilus_str_has_prefix (string, "Image - ")) {
+ widget_set_background_image (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Image - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Gradient - ")) {
+ widget_set_background_color (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Gradient - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Solid - ")) {
+ widget_set_background_color (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)),
+ string + strlen ("Solid - "));
+ }
+ else if (nautilus_str_has_prefix (string, "Reset")) {
+ widget_set_background_reset (nautilus_gtk_widget_find_windowed_ancestor (GTK_WIDGET (client_data)));
+ }
+
+ g_free (string);
+}
+
+static GtkWidget*
+create_background_frame (const char *title,
+ GtkSignalFunc background_changed_callback,
+ gpointer callback_data)
+{
+ GtkWidget *frame;
+ GtkWidget *vbox;
+ GtkWidget *background_picker;
+
+ g_return_val_if_fail (title != NULL, NULL);
+ g_return_val_if_fail (background_changed_callback != NULL, NULL);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ frame = gtk_frame_new (title);
+
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
+
+ background_picker = nautilus_string_picker_new ();
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - pale_coins.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - bubbles.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - irish_spring.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Image - white_ribs.png");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Gradient - rgb:bbbb/bbbb/eeee-rgb:ffff/ffff/ffff:h");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Gradient - rgb:bbbb/bbbb/eeee-rgb:ffff/ffff/ffff");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Solid - rgb:bbbb/bbbb/eeee");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "-----------------------");
+ nautilus_string_picker_insert_string (NAUTILUS_STRING_PICKER (background_picker), "Reset");
+
+ nautilus_caption_set_show_title (NAUTILUS_CAPTION (background_picker), FALSE);
+
+ gtk_signal_connect (GTK_OBJECT (background_picker), "changed", background_changed_callback, callback_data);
+
+ gtk_box_pack_start (GTK_BOX (vbox), background_picker, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (vbox);
+
+ return frame;
+}
+
+int
+main (int argc, char* argv[])
+{
+ GtkWidget *window;
+ GtkWidget *main_box;
+ GtkWidget *bottom_box;
+ GtkWidget *tool_box1;
+ GtkWidget *tool_box2;
+ GtkWidget *tool_box3;
+ GtkWidget *color_tool_box;
+ GtkWidget *label;
+ GtkWidget *label_color_picker_frame;
+ GtkWidget *background_color_picker_frame;
+ GtkWidget *font_picker_frame;
+ GtkWidget *text_caption_frame;
+ GtkWidget *background_frame;
+
+ gtk_init (&argc, &argv);
+ gdk_rgb_init ();
+ gnome_vfs_init ();
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (window), "Label Test");
+ gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
+ gtk_container_set_border_width (GTK_CONTAINER (window), 10);
+
+ main_box = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), main_box);
+
+ label = nautilus_label_new ();
+
+ bottom_box = gtk_vbox_new (FALSE, 4);
+
+ tool_box1 = gtk_hbox_new (FALSE, 0);
+ tool_box2 = gtk_hbox_new (FALSE, 0);
+ tool_box3 = gtk_hbox_new (FALSE, 0);
+
+ color_tool_box = gtk_hbox_new (FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (bottom_box), tool_box1, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (bottom_box), tool_box2, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (bottom_box), tool_box3, TRUE, TRUE, 10);
+
+ nautilus_label_set_text (NAUTILUS_LABEL (label), "Label that doesn't suck\nFoo\nBar");
+
+ gtk_box_pack_start (GTK_BOX (main_box), label, TRUE, TRUE, 10);
+ gtk_box_pack_end (GTK_BOX (main_box), bottom_box, TRUE, TRUE, 10);
+
+ widget_set_background_image (nautilus_gtk_widget_find_windowed_ancestor (label), "pale_coins.png");
+
+ label_color_picker_frame = create_color_picker_frame ("Label Color",
+ red_label_color_value_changed_callback,
+ green_label_color_value_changed_callback,
+ blue_label_color_value_changed_callback,
+ alpha_label_color_value_changed_callback,
+ label,
+ nautilus_label_get_text_color (NAUTILUS_LABEL (label)));
+
+ background_color_picker_frame = create_color_picker_frame ("Background Color",
+ red_background_color_value_changed_callback,
+ green_background_color_value_changed_callback,
+ blue_background_color_value_changed_callback,
+ alpha_background_color_value_changed_callback,
+ label,
+ nautilus_label_get_text_color (NAUTILUS_LABEL (label)));
+
+ font_picker_frame = create_font_picker_frame ("Font",
+ font_changed_callback,
+ font_size_changed_callback,
+ label);
+
+ text_caption_frame = create_text_caption_frame ("Text",
+ text_caption_changed_callback,
+ label);
+
+ background_frame = create_background_frame ("Background",
+ background_changed_callback,
+ label);
+
+ gtk_box_pack_start (GTK_BOX (color_tool_box), label_color_picker_frame, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (color_tool_box), background_frame, FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX (color_tool_box), background_color_picker_frame, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (tool_box1), color_tool_box, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (tool_box2), font_picker_frame, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (tool_box3), text_caption_frame, TRUE, TRUE, 0);
+
+ gtk_widget_show_all (window);
+
+ gtk_main ();
+
+ gnome_vfs_shutdown ();
+
+ return 0;
+}