From 72b00e402742240df6220c50188850f210b3cb17 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Sat, 24 Mar 2007 18:17:38 +0000 Subject: [PATCH] Add preferences support for printing the date format immediately below the date (GtkPrint only), and for setting the font used by the check printing code (GnomePrint and GtkPrint). The fonts actually used by GnomePrint seem very limited compared to those used by GtkPrint, but the font size specification always seems to be honored. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15753 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome-utils/glade/preferences.glade | 166 ++++++++++++++++++++++++ src/gnome/dialog-print-check.c | 35 +++-- 2 files changed, 191 insertions(+), 10 deletions(-) diff --git a/src/gnome-utils/glade/preferences.glade b/src/gnome-utils/glade/preferences.glade index 191395d7f3..44bb0d1fae 100644 --- a/src/gnome-utils/glade/preferences.glade +++ b/src/gnome-utils/glade/preferences.glade @@ -2236,6 +2236,172 @@ + + + True + 10 + 4 + False + 0 + 12 + + + + True + <b>Checks</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 4 + 0 + 1 + fill + + + + + + + True + True + True + True + False + False + True + + + 1 + 4 + 2 + 3 + fill + + + + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + Default _Font: + True + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + gconf/dialogs/print_checks/default_font + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 0 + 1 + 2 + 3 + fill + fill + + + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + Below the actual date, print the format of that date in 8 point type. + True + Print _Date Format + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + + 0 + 4 + 1 + 2 + fill + fill + + + + + False + True + + + + + + True + Printing + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + 6 diff --git a/src/gnome/dialog-print-check.c b/src/gnome/dialog-print-check.c index fc07e08950..b6fc67bd2b 100644 --- a/src/gnome/dialog-print-check.c +++ b/src/gnome/dialog-print-check.c @@ -67,7 +67,8 @@ #define KEY_CUSTOM_TRANSLATION "custom_translation" #define KEY_CUSTOM_ROTATION "custom_rotation" #define KEY_CUSTOM_UNITS "custom_units" -#define KEY_SHOW_DATE_FMT "show_date_format" +#define KEY_PRINT_DATE_FMT "print_date_format" +#define KEY_DEFAULT_FONT "default_font" #define DEFAULT_FONT "sans 12" @@ -248,7 +249,7 @@ struct _print_check_dialog { GtkWidget * date_format; - gchar *format_string; + gchar *default_font; check_format_t *selected_format; }; @@ -929,7 +930,6 @@ format_read_general_info(const gchar * file, && (error->code == G_KEY_FILE_ERROR_KEY_NOT_FOUND))) g_warning("Check file %s, group %s, key %s, error: %s", file, KF_GROUP_TOP, KF_KEY_FONT, error->message); - format->font = g_strdup(DEFAULT_FONT); g_clear_error(&error); } @@ -1135,6 +1135,7 @@ gnc_ui_print_check_dialog_create(GncPluginPageRegister *plugin_page, GtkWindow *window; GtkListStore *store; GtkTreeIter iter; + gchar *font; pcd = g_new0(PrintCheckDialog, 1); pcd->plugin_page = plugin_page; @@ -1181,6 +1182,10 @@ gnc_ui_print_check_dialog_create(GncPluginPageRegister *plugin_page, pcd->date_format = gnc_date_format_new_without_label(); gtk_table_attach_defaults(GTK_TABLE(table), pcd->date_format, 1, 3, 2, 7); + /* Default font (set in preferences) */ + font = gnc_gconf_get_string(GCONF_SECTION, KEY_DEFAULT_FONT, NULL); + pcd->default_font = font ? font : g_strdup(DEFAULT_FONT); + /* Update the combo boxes bases on the available check formats */ store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN); read_formats(pcd, store); @@ -1211,7 +1216,7 @@ gnc_ui_print_check_dialog_create(GncPluginPageRegister *plugin_page, /** Draw a grid pattern on the page to be printed. This grid is helpful when * figuring out the offsets for where to print various items on the page. */ static void -draw_grid(GncPrintContext * context, gint width, gint height) +draw_grid(GncPrintContext * context, gint width, gint height, const gchar *font) { const double dash_pattern[2] = { 1.0, 5.0 }; #if USE_GTKPRINT @@ -1225,7 +1230,7 @@ draw_grid(GncPrintContext * context, gint width, gint height) #if USE_GTKPRINT /* Initialize for printing text */ layout = gtk_print_context_create_pango_layout(context); - desc = pango_font_description_from_string("sans 12"); + desc = pango_font_description_from_string(font); pango_layout_set_font_description(layout, desc); pango_font_description_free(desc); pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); @@ -1508,7 +1513,7 @@ draw_date_format(GncPrintContext * context, const gchar *date_format, GString *cdn_fmt; thislocale = setlocale(LC_ALL, NULL); - if (!gnc_gconf_get_bool(GCONF_SECTION, KEY_SHOW_DATE_FMT, NULL)) + if (!gnc_gconf_get_bool(GCONF_SECTION, KEY_PRINT_DATE_FMT, NULL)) return; date_desc = pango_font_description_copy_static(default_desc); @@ -1589,7 +1594,10 @@ draw_page_items(GncPrintContext * context, g_return_if_fail(trans); amount = gnc_numeric_abs(xaccSplitGetAmount(pcd->split)); - default_desc = pango_font_description_from_string(format->font); + if (format->font) + default_desc = pango_font_description_from_string(format->font); + else + default_desc = pango_font_description_from_string(pcd->default_font); /* Now put the actual data onto the page. */ for (elem = format->items; elem; elem = g_slist_next(elem)) { @@ -1712,7 +1720,8 @@ draw_page_format(GncPrintContext * context, if (format->show_grid) { draw_grid(context, gtk_print_context_get_width(context), - gtk_print_context_get_height(context)); + gtk_print_context_get_height(context), + pcd->default_font); } /* Translate all subsequent check items if requested. */ @@ -1761,7 +1770,7 @@ draw_page_format(PrintSession * ps, check_format_t * format, gpointer user_data) /* The grid is useful when determining check layouts */ if (format->show_grid) { - draw_grid(ps->context, width, height); + draw_grid(ps->context, width, height, pcd->default_font); } /* Translate all subsequent check items if requested. */ @@ -1815,7 +1824,7 @@ draw_page_custom(GncPrintContext * context, gint page_nr, gpointer user_data) /* This was valid when the check printing dialog was instantiated. */ g_return_if_fail(trans); - desc = pango_font_description_from_string("sans 12"); + desc = pango_font_description_from_string(pcd->default_font); multip = pcd_get_custom_multip(pcd); degrees = gtk_spin_button_get_value(pcd->check_rotation); @@ -1945,9 +1954,14 @@ static void gnc_ui_print_check_dialog_ok_cb(PrintCheckDialog * pcd) { PrintSession *ps; + GnomeFont *oldfont; check_format_t *format; ps = gnc_print_session_create(TRUE); + oldfont = ps->default_font; + ps->default_font = gnome_font_find_closest_from_full_name(pcd->default_font); + gnome_print_setfont(ps->context, ps->default_font); + g_object_unref(oldfont); format = pcd->selected_format; if (format) { @@ -2068,5 +2082,6 @@ gnc_ui_print_check_response_cb(GtkDialog * dialog, gtk_widget_destroy(pcd->dialog); g_object_unref(pcd->xml); + g_free(pcd->default_font); g_free(pcd); }