Mercurial > hg > forks > geeqie
changeset 2334:e38178f556f6
Image overlay configurable font
User configurable option to set the font of the Image Overlay text
author | Colin Clark <cclark@mcb.net> |
---|---|
date | Wed, 18 May 2016 12:13:12 +0100 |
parents | 45f39f959bf9 |
children | aa2e9d37193b |
files | src/image-overlay.c src/options.c src/options.h src/preferences.c src/rcfile.c |
diffstat | 5 files changed, 45 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/image-overlay.c Mon May 16 11:45:51 2016 +0100 +++ b/src/image-overlay.c Wed May 18 12:13:12 2016 +0100 @@ -100,6 +100,14 @@ set_image_overlay_template_string(template_string, DEFAULT_OVERLAY_INFO); } +void set_image_overlay_font_string(gchar **font_string, const gchar *value) +{ + g_assert(font_string); + + g_free(*font_string); + *font_string = g_strdup(value); +} + static OverlayStateData *image_get_osd_data(ImageWindow *imd) { OverlayStateData *osd; @@ -493,6 +501,7 @@ const HistMap *histmap = NULL; ImageWindow *imd = osd->imd; FileData *fd = image_get_fd(imd); + PangoFontDescription *font_desc; if (!fd) return NULL; @@ -653,7 +662,10 @@ } } + font_desc = pango_font_description_from_string(options->image_overlay.font); layout = gtk_widget_create_pango_layout(imd->pr, NULL); + pango_layout_set_font_description(layout, font_desc); + pango_layout_set_markup(layout, text, -1); g_free(text);
--- a/src/options.c Mon May 16 11:45:51 2016 +0100 +++ b/src/options.c Wed May 18 12:13:12 2016 +0100 @@ -88,6 +88,7 @@ options->image_overlay.template_string = NULL; options->image_overlay.x = 10; options->image_overlay.y = -10; + options->image_overlay.font = NULL; options->lazy_image_sync = FALSE; options->mousewheel_scrolls = FALSE;
--- a/src/options.h Mon May 16 11:45:51 2016 +0100 +++ b/src/options.h Wed May 18 12:13:12 2016 +0100 @@ -138,6 +138,7 @@ gchar *template_string; gint x; gint y; + gchar *font; } image_overlay; /* properties dialog */
--- a/src/preferences.c Mon May 16 11:45:51 2016 +0100 +++ b/src/preferences.c Wed May 18 12:13:12 2016 +0100 @@ -284,7 +284,9 @@ if (c_options->image_overlay.template_string) set_image_overlay_template_string(&options->image_overlay.template_string, c_options->image_overlay.template_string); - + if (c_options->image_overlay.font) + set_image_overlay_font_string(&options->image_overlay.font, + c_options->image_overlay.font); options->update_on_time_change = c_options->update_on_time_change; options->image.exif_rotate_enable = c_options->image.exif_rotate_enable; options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable; @@ -1015,6 +1017,27 @@ help_window_show("overlay"); } +static void image_overlay_set_font_cb(GtkWidget *widget, gpointer data) +{ + GenericDialog *dialog; + char *font; + PangoFontDescription *font_desc; + + dialog = gtk_font_chooser_dialog_new("Image Overlay Font", gtk_widget_get_toplevel(widget)); + gtk_font_chooser_set_font(dialog, options->image_overlay.font); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) + { + font_desc = gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(dialog)); + font = pango_font_description_to_string(font_desc); + g_free(c_options->image_overlay.font); + c_options->image_overlay.font = g_strdup(font); + g_free(font); + } + + gtk_widget_destroy(dialog); +} + static void accel_store_populate(void) { LayoutWindow *lw; @@ -1451,6 +1474,11 @@ hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_BUTTON_GAP); + button = pref_button_new(NULL, GTK_STOCK_SELECT_FONT, _("Font"), FALSE, + G_CALLBACK(image_overlay_set_font_cb), notebook); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, NULL, 0); + gtk_widget_show(button); + button = pref_button_new(NULL, NULL, _("Defaults"), FALSE, G_CALLBACK(image_overlay_default_template_cb), image_overlay_template_view); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
--- a/src/rcfile.c Mon May 16 11:45:51 2016 +0100 +++ b/src/rcfile.c Wed May 18 12:13:12 2016 +0100 @@ -354,6 +354,7 @@ WRITE_NL(); WRITE_INT(*options, image_overlay.x); WRITE_NL(); WRITE_INT(*options, image_overlay.y); + WRITE_NL(); WRITE_CHAR(*options, image_overlay.font); /* Slideshow Options */ WRITE_NL(); WRITE_INT_UNIT(*options, slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION); @@ -615,6 +616,7 @@ if (READ_CHAR(*options, image_overlay.template_string)) continue; if (READ_INT(*options, image_overlay.x)) continue; if (READ_INT(*options, image_overlay.y)) continue; + if (READ_CHAR(*options, image_overlay.font)) continue; /* Slideshow options */ if (READ_INT_UNIT(*options, slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION)) continue;