[gthumb/ext: 16/20] [image_print] allow the user to chooser the caption font
- From: Paolo Bacchilega <paobac src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gthumb/ext: 16/20] [image_print] allow the user to chooser the caption font
- Date: Wed, 25 Nov 2009 17:14:10 +0000 (UTC)
commit 20a63b0546a67e2a0c20d9a3375f056de5dc482d
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Nov 24 18:45:27 2009 +0100
[image_print] allow the user to chooser the caption font
.../image_print/data/gthumb_image_print.schemas.in | 13 +++
extensions/image_print/data/ui/print-layout.ui | 3 +-
extensions/image_print/gth-image-print-job.c | 110 +++++++------------
extensions/image_print/preferences.h | 1 +
4 files changed, 57 insertions(+), 70 deletions(-)
---
diff --git a/extensions/image_print/data/gthumb_image_print.schemas.in b/extensions/image_print/data/gthumb_image_print.schemas.in
index a9027a8..72abea0 100644
--- a/extensions/image_print/data/gthumb_image_print.schemas.in
+++ b/extensions/image_print/data/gthumb_image_print.schemas.in
@@ -14,5 +14,18 @@
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/gthumb/ext/image_print/font_name</key>
+ <applyto>/apps/gthumb/ext/image_print/font_name</applyto>
+ <owner>gthumb</owner>
+ <type>string</type>
+ <default>[sans serif] [normal] [10]</default>
+ <locale name="C">
+ <short></short>
+ <long>
+ </long>
+ </locale>
+ </schema>
+
</schemalist>
</gconfschemafile>
diff --git a/extensions/image_print/data/ui/print-layout.ui b/extensions/image_print/data/ui/print-layout.ui
index 0385a06..cc2e3d3 100644
--- a/extensions/image_print/data/ui/print-layout.ui
+++ b/extensions/image_print/data/ui/print-layout.ui
@@ -183,10 +183,11 @@
</packing>
</child>
<child>
- <object class="GtkFontButton" id="fontbutton1">
+ <object class="GtkFontButton" id="caption_fontbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <property name="title" translatable="yes">Select Caption Font</property>
</object>
<packing>
<property name="position">1</property>
diff --git a/extensions/image_print/gth-image-print-job.c b/extensions/image_print/gth-image-print-job.c
index a36f9b0..dafff29 100644
--- a/extensions/image_print/gth-image-print-job.c
+++ b/extensions/image_print/gth-image-print-job.c
@@ -75,6 +75,7 @@ struct _GthImagePrintJobPrivate {
int image_height;
GtkPageSetup *page_setup;
char *caption_attributes;
+ char *font_name;
/* layout info */
@@ -105,6 +106,7 @@ gth_image_print_job_finalize (GObject *base)
g_free (self->priv->images);
_g_object_unref (self->priv->page_setup);
g_free (self->priv->caption_attributes);
+ g_free (self->priv->font_name);
G_OBJECT_CLASS (parent_class)->finalize (base);
}
@@ -132,6 +134,7 @@ gth_image_print_job_init (GthImagePrintJob *self)
self->priv->page_setup = NULL;
self->priv->current_page = 0;
self->priv->caption_attributes = eel_gconf_get_string (PREF_IMAGE_PRINT_CAPTION, "");
+ self->priv->font_name = eel_gconf_get_string (PREF_IMAGE_PRINT_FONT_NAME, "sans 10");
self->priv->selected = NULL;
self->priv->requested_images_per_page = 1;
self->priv->unit = GTK_UNIT_PIXEL;
@@ -364,19 +367,29 @@ gth_image_print_job_update_image_layout (GthImagePrintJob *self,
}
-static PangoLayout *
-gth_image_print_job_create_pango_layout (GthImagePrintJob *self)
+static void
+gth_image_print_job_set_font_options (GthImagePrintJob *self,
+ PangoLayout *pango_layout)
{
- PangoLayout *pango_layout;
PangoFontDescription *font_desc;
- pango_layout = gtk_widget_create_pango_layout (GTK_WIDGET (self->priv->browser), NULL);
pango_layout_set_wrap (pango_layout, PANGO_WRAP_WORD_CHAR);
- pango_layout_set_alignment (pango_layout, PANGO_ALIGN_CENTER);
- font_desc = pango_font_description_from_string ("[sans serif] [normal] [10]"); /* FIXME: allow the user to select a font */
- pango_layout_set_font_description (pango_layout, font_desc);
+ pango_layout_set_justify (pango_layout, FALSE);
+ pango_layout_set_alignment (pango_layout, PANGO_ALIGN_LEFT);
+ font_desc = pango_font_description_from_string (self->priv->font_name);
+ pango_layout_set_font_description (pango_layout, font_desc);
pango_font_description_free (font_desc);
+}
+
+
+static PangoLayout *
+gth_image_print_job_create_pango_layout (GthImagePrintJob *self)
+{
+ PangoLayout *pango_layout;
+
+ pango_layout = gtk_widget_create_pango_layout (GTK_WIDGET (self->priv->browser), NULL);
+ gth_image_print_job_set_font_options (self, pango_layout);
return pango_layout;
}
@@ -437,12 +450,9 @@ gth_image_print_job_paint (GthImagePrintJob *self,
int page,
gboolean preview)
{
- PangoFontDescription *font_desc;
- int i;
-
- font_desc = pango_font_description_from_string ("[sans serif] [normal] [10]");
- pango_layout_set_font_description (pango_layout, font_desc);
+ int i;
+ gth_image_print_job_set_font_options (self, pango_layout);
for (i = 0; i < self->priv->n_images; i++) {
GthImageInfo *image_info = self->priv->images[i];
GdkPixbuf *fullsize_pixbuf;
@@ -540,8 +550,6 @@ gth_image_print_job_paint (GthImagePrintJob *self,
if (image_info->print_comment) {
cairo_save (cr);
- pango_layout_set_wrap (pango_layout, PANGO_WRAP_WORD_CHAR);
- pango_layout_set_alignment (pango_layout, PANGO_ALIGN_CENTER);
pango_layout_set_width (pango_layout, image_info->comment.width * (preview ? PREVIEW_SCALE_FACTOR : 1.0) * PANGO_SCALE);
pango_layout_set_text (pango_layout, image_info->comment_text, -1);
@@ -571,61 +579,6 @@ gth_image_print_job_paint (GthImagePrintJob *self,
g_object_unref (fullsize_pixbuf);
}
-
- pango_font_description_free (font_desc);
-
-#if 0
- cairo_t *cr;
- PangoLayout *layout;
- int y;
- PangoRectangle rect;
-
-
- cr = gtk_print_context_get_cairo_context (context);
- cairo_set_source_rgb (cr, 0, 0, 0);
- cairo_rectangle (cr,
- 0, 0,
- gtk_print_context_get_width (context),
- gtk_print_context_get_height (context));
- cairo_stroke (cr);
-
- layout = gtk_print_context_create_pango_layout (context);
- pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
- pango_layout_set_width (layout, 100 * PANGO_SCALE);
-
- /**/
-
- y = 20;
-
- pango_layout_set_text (layout, "Hello World! Printing is easy", -1);
- cairo_move_to (cr, 30, y);
- pango_cairo_layout_path (cr, layout);
-
- cairo_set_source_rgb (cr, 0.93, 1.0, 0.47);
- cairo_set_line_width (cr, 0.5);
- cairo_stroke_preserve (cr);
-
- cairo_set_source_rgb (cr, 0, 0.0, 1.0);
- cairo_fill (cr);
-
- pango_layout_get_extents (layout, NULL, &rect);
- y = y + (rect.height / PANGO_SCALE);
-
- /**/
-
- pango_layout_set_text (layout, "Hello World! Printing is easy 222", -1);
- cairo_move_to (cr, 30, y);
- pango_cairo_layout_path (cr, layout);
-
- cairo_set_source_rgb (cr, 0.93, 1.0, 0.47);
- cairo_set_line_width (cr, 0.5);
- cairo_stroke_preserve (cr);
-
- cairo_set_source_rgb (cr, 0, 0.0, 1.0);
- cairo_fill (cr);
-
- g_object_unref (layout);
-#endif
}
@@ -1052,6 +1005,20 @@ unit_combobox_changed_cb (GtkComboBox *combo_box,
static void
+caption_fontbutton_font_set_cb (GtkFontButton *font_button,
+ gpointer user_data)
+{
+ GthImagePrintJob *self = user_data;
+
+ g_free (self->priv->font_name);
+ self->priv->font_name = g_strdup (gtk_font_button_get_font_name (font_button));
+ eel_gconf_set_string (PREF_IMAGE_PRINT_FONT_NAME, self->priv->font_name);
+
+ gth_image_print_job_update_preview (self);
+}
+
+
+static void
rotation_combobox_changed_cb (GtkComboBox *combo_box,
gpointer user_data)
{
@@ -1204,6 +1171,7 @@ operation_create_custom_widget_cb (GtkPrintOperation *operation,
gth_metadata_chooser_set_selection (GTH_METADATA_CHOOSER (self->priv->caption_chooser), self->priv->caption_attributes);
gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), self->priv->unit);
+ gtk_font_button_set_font_name (GTK_FONT_BUTTON (GET_WIDGET ("caption_fontbutton")), self->priv->font_name);
g_signal_connect (GET_WIDGET ("preview_drawingarea"),
"expose_event",
@@ -1241,6 +1209,10 @@ operation_create_custom_widget_cb (GtkPrintOperation *operation,
"changed",
G_CALLBACK (unit_combobox_changed_cb),
self);
+ g_signal_connect (GET_WIDGET ("caption_fontbutton"),
+ "font-set",
+ G_CALLBACK (caption_fontbutton_font_set_cb),
+ self);
self->priv->rotation_combobox_changed_event =
g_signal_connect (GET_WIDGET ("rotation_combobox"),
diff --git a/extensions/image_print/preferences.h b/extensions/image_print/preferences.h
index 0b4d600..5e50da8 100644
--- a/extensions/image_print/preferences.h
+++ b/extensions/image_print/preferences.h
@@ -28,6 +28,7 @@
G_BEGIN_DECLS
#define PREF_IMAGE_PRINT_CAPTION "/apps/gthumb/ext/image_print/caption"
+#define PREF_IMAGE_PRINT_FONT_NAME "/apps/gthumb/ext/image_print/font_name"
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]