commit 40db67ee07eb440f911958aa6b24185648d2462c
parent b74c25ce7ab78131cd4e21b0fda9fd9041ae35b8
Author: Colin Leroy <colin@colino.net>
Date: Tue, 9 Feb 2010 07:46:41 +0000
2010-02-09 [colin] 3.7.5cvs11
* configure.ac
Bump up GTK+ requirement to 2.10
* src/Makefile.am
* src/compose.c
* src/crash.c
* src/foldersel.c
* src/main.c
* src/mainwindow.c
* src/messageview.c
* src/messageview.h
* src/prefs_actions.c
* src/prefs_common.c
* src/prefs_common.h
* src/prefs_ext_prog.c
* src/prefs_filtering_action.c
* src/prefs_fonts.c
* src/prefs_image_viewer.c
* src/prefs_matcher.c
* src/prefs_msg_colors.c
* src/prefs_summaries.c
* src/prefs_template.c
* src/printing.c
* src/printing.h
* src/quote_fmt.c
* src/summaryview.c
* src/textview.c
* src/gtk/Makefile.am
* src/gtk/about.c
* src/gtk/gtkcmclist.c
* src/gtk/gtkcmctree.c
* src/gtk/gtkutils.c
* src/gtk/quicksearch.c
Remove all compile-time conditionals depending on
GTK+ < 2.10
* src/gedit-print.c
* src/gedit-print.h
* src/gtk/gtksourceprintjob.c
* src/gtk/gtksourceprintjob.h
Remove libgnomeprint-based printing system (and
command-line-based printing system) as GTK+ 2.10
ships with print support.
Diffstat:
37 files changed, 47 insertions(+), 4202 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,47 @@
+2010-02-09 [colin] 3.7.5cvs11
+
+ * configure.ac
+ Bump up GTK+ requirement to 2.10
+ * src/Makefile.am
+ * src/compose.c
+ * src/crash.c
+ * src/foldersel.c
+ * src/main.c
+ * src/mainwindow.c
+ * src/messageview.c
+ * src/messageview.h
+ * src/prefs_actions.c
+ * src/prefs_common.c
+ * src/prefs_common.h
+ * src/prefs_ext_prog.c
+ * src/prefs_filtering_action.c
+ * src/prefs_fonts.c
+ * src/prefs_image_viewer.c
+ * src/prefs_matcher.c
+ * src/prefs_msg_colors.c
+ * src/prefs_summaries.c
+ * src/prefs_template.c
+ * src/printing.c
+ * src/printing.h
+ * src/quote_fmt.c
+ * src/summaryview.c
+ * src/textview.c
+ * src/gtk/Makefile.am
+ * src/gtk/about.c
+ * src/gtk/gtkcmclist.c
+ * src/gtk/gtkcmctree.c
+ * src/gtk/gtkutils.c
+ * src/gtk/quicksearch.c
+ Remove all compile-time conditionals depending on
+ GTK+ < 2.10
+ * src/gedit-print.c
+ * src/gedit-print.h
+ * src/gtk/gtksourceprintjob.c
+ * src/gtk/gtksourceprintjob.h
+ Remove libgnomeprint-based printing system (and
+ command-line-based printing system) as GTK+ 2.10
+ ships with print support.
+
2010-02-08 [mir] 3.7.5cvs10
* src/compose.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -3951,3 +3951,4 @@
( cvs diff -u -r 1.382.2.541 -r 1.382.2.542 src/compose.c; cvs diff -u -r 1.50.2.58 -r 1.50.2.59 src/compose.h; cvs diff -u -r 1.36.2.182 -r 1.36.2.183 src/common/utils.c; cvs diff -u -r 1.20.2.73 -r 1.20.2.74 src/common/utils.h; cvs diff -u -r 1.1.2.64 -r 1.1.2.65 src/gtk/authors.h; ) > 3.7.5cvs8.patchset
( cvs diff -u -r 1.83.2.158 -r 1.83.2.159 src/mimeview.c; cvs diff -u -r 1.5.2.28 -r 1.5.2.29 src/gtk/description_window.c; ) > 3.7.5cvs9.patchset
( cvs diff -u -r 1.382.2.542 -r 1.382.2.543 src/compose.c; ) > 3.7.5cvs10.patchset
+( cvs diff -u -r 1.654.2.4023 -r 1.654.2.4024 configure.ac; cvs diff -u -r 1.155.2.95 -r 1.155.2.96 src/Makefile.am; cvs diff -u -r 1.382.2.543 -r 1.382.2.544 src/compose.c; cvs diff -u -r 1.23.2.33 -r 1.23.2.34 src/crash.c; cvs diff -u -r 1.26.2.44 -r 1.26.2.45 src/foldersel.c; cvs diff -u -r -1.1.2.15 -r -1.1.2.16 src/gedit-print.c; cvs diff -u -r -1.1.2.6 -r -1.1.2.7 src/gedit-print.h; cvs diff -u -r 1.115.2.223 -r 1.115.2.224 src/main.c; cvs diff -u -r 1.274.2.304 -r 1.274.2.305 src/mainwindow.c; cvs diff -u -r 1.94.2.208 -r 1.94.2.209 src/messageview.c; cvs diff -u -r 1.19.2.24 -r 1.19.2.25 src/messageview.h; cvs diff -u -r 1.60.2.70 -r 1.60.2.71 src/prefs_actions.c; cvs diff -u -r 1.204.2.193 -r 1.204.2.194 src/prefs_common.c; cvs diff -u -r 1.103.2.126 -r 1.103.2.127 src/prefs_common.h; cvs diff -u -r 1.3.2.24 -r 1.3.2.25 src/prefs_ext_prog.c; cvs diff -u -r 1.1.4.62 -r 1.1.4.63 src/prefs_filtering_action.c; cvs diff -u -r 1.4.2.25 -r 1.4.2.26 src/prefs_fonts.c; cvs diff -u -r 1.1.2.14 -r 1.1.2.15 src/prefs_image_viewer.c; cvs diff -u -r 1.43.2.82 -r 1.43.2.83 src/prefs_matcher.c; cvs diff -u -r 1.1.2.40 -r 1.1.2.41 src/prefs_msg_colors.c; cvs diff -u -r 1.1.2.63 -r 1.1.2.64 src/prefs_summaries.c; cvs diff -u -r 1.12.2.71 -r 1.12.2.72 src/prefs_template.c; cvs diff -u -r 1.1.2.28 -r 1.1.2.29 src/printing.c; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/printing.h; cvs diff -u -r 1.8.2.40 -r 1.8.2.41 src/quote_fmt.c; cvs diff -u -r 1.395.2.416 -r 1.395.2.417 src/summaryview.c; cvs diff -u -r 1.96.2.220 -r 1.96.2.221 src/textview.c; cvs diff -u -r 1.20.2.23 -r 1.20.2.24 src/gtk/Makefile.am; cvs diff -u -r 1.4.2.76 -r 1.4.2.77 src/gtk/about.c; cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/gtk/gtkcmclist.c; cvs diff -u -r 1.1.2.13 -r 1.1.2.14 src/gtk/gtkcmctree.c; cvs diff -u -r -1.1.2.13 -r -1.1.2.14 src/gtk/gtksourceprintjob.c; cvs diff -u -r -1.1.2.5 -r -1.1.2.6 src/gtk/gtksourceprintjob.h; cvs diff -u -r 1.5.2.88 -r 1.5.2.89 src/gtk/gtkutils.c; cvs diff -u -r 1.1.2.88 -r 1.1.2.89 src/gtk/quicksearch.c; ) > 3.7.5cvs11.patchset
diff --git a/configure.ac b/configure.ac
@@ -12,7 +12,7 @@ MINOR_VERSION=7
MICRO_VERSION=5
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=10
+EXTRA_VERSION=11
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
@@ -465,7 +465,7 @@ dnl ** GTK user interface **
dnl ************************
dnl Checks for GTK
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6)
+PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.10)
dnl --disable-deprecated switch for GTK2 purification
AC_ARG_ENABLE(deprecated, [ --disable-deprecated disable deprecated GTK functions. ],
@@ -996,34 +996,6 @@ AM_CONDITIONAL(CLAWS_LIBETPAN, test "x$libetpan_result" = "xyes")
dnl Printing support.
PKG_CHECK_MODULES(GTK210, gtk+-2.0 >= 2.10, ac_cv_have_gtk210=yes, ac_cv_have_gtk210=no)
-AC_MSG_CHECKING([whether to use libgnomeprint])
-AC_ARG_ENABLE(gnomeprint,
- [ --disable-gnomeprint disable libgnomeprint support],
- [ac_cv_enable_gnomeprint=$enableval], [ac_cv_enable_gnomeprint=auto])
-
-if test x$ac_cv_have_gtk210 = xyes; then
- ac_cv_enable_gnomeprint="no"
-fi
-
-if test x$ac_cv_enable_gnomeprint = xyes \
- -o \( x$ac_cv_enable_gnomeprint = xauto \
- -a x$ac_cv_have_gtk210 = xno \); then
- AC_MSG_RESULT(yes)
- PKG_CHECK_MODULES(GNOMEPRINT, libgnomeprint-2.2 libgnomeprintui-2.2,
- ac_cv_enable_gnomeprint=yes, ac_cv_enable_gnomeprint=no)
- if test x"$ac_cv_enable_gnomeprint" = xyes; then
- AC_DEFINE(USE_GNOMEPRINT, 1, Define if you want libgnomeprint support)
- else
- AC_MSG_RESULT(not found)
- AC_MSG_WARN([*** libgnomeprintui wasn't found ***])
- AC_MSG_WARN([*** using built-in printing support ***])
- fi
-else
- ac_cv_enable_gnomeprint=no
- AC_MSG_RESULT(no)
-fi
-AM_CONDITIONAL(CLAWS_GNOMEPRINT, test x"$ac_cv_enable_gnomeprint" = x"yes")
-
AC_MSG_CHECKING([whether to use valgrind])
AC_ARG_ENABLE(valgrind,
[ --disable-valgrind disable valgrind support for debugging],
@@ -1113,7 +1085,6 @@ echo "enchant : $ac_cv_enable_enchant"
echo "IMAP4 : $ac_cv_enable_libetpan"
echo "NNTP : $ac_cv_enable_libetpan"
echo "Crash dialog : $ac_cv_enable_crash_dialog"
-echo "Libgnomeprint : $ac_cv_enable_gnomeprint"
echo "GTK+ print support: $ac_cv_have_gtk210"
echo "LibSM : $ac_cv_enable_libsm"
echo "DBUS : $enable_dbus"
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -76,7 +76,6 @@ claws_mail_SOURCES = \
foldersel.c \
folderutils.c \
folderview.c \
- gedit-print.c \
grouplistdialog.c \
headerview.c \
html.c \
@@ -225,7 +224,6 @@ claws_mailinclude_HEADERS = \
foldersel.h \
folderutils.h \
folderview.h \
- gedit-print.h \
grouplistdialog.h \
headerview.h \
html.h \
@@ -523,7 +521,6 @@ claws_mail_LDADD = \
$(COMPFACE_LIBS) \
$(JPILOT_LIBS) \
$(PTHREAD_LIBS) \
- $(GNOMEPRINT_LIBS) \
$(SM_LIBS) \
$(LIBICONV) \
$(STARTUP_NOTIFICATION_LIBS) \
@@ -546,7 +543,6 @@ AM_CPPFLAGS = \
$(ENCHANT_CFLAGS) \
$(GTK_CFLAGS) \
$(GPGME_CFLAGS) \
- $(GNOMEPRINT_CFLAGS) \
$(LIBETPAN_CPPFLAGS) \
$(STARTUP_NOTIFICATION_CFLAGS) \
$(MAEMO_CFLAGS) \
diff --git a/src/compose.c b/src/compose.c
@@ -6500,13 +6500,9 @@ static void compose_create_header_entry(Compose *compose)
G_CALLBACK(compose_grab_focus_cb), compose);
/* Entry field with cleanup button */
-#if GTK_CHECK_VERSION(2, 8, 0)
button = gtk_button_new();
gtk_button_set_image(GTK_BUTTON(button),
gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU));
-#else
- button = gtk_button_new_with_label(_("Clear"));
-#endif
gtk_widget_show(button);
CLAWS_SET_TIP(button,
_("Delete entry contents"));
@@ -10647,16 +10643,6 @@ static void compose_insert_drag_received_cb (GtkWidget *widget,
gtk_drag_finish(drag_context, TRUE, FALSE, time);
return;
} else {
-#if GTK_CHECK_VERSION(2, 8, 0)
- /* do nothing, handled by GTK */
-#else
- gchar *tmpfile = get_tmp_file();
- str_write_to_file((const gchar *)data->data, tmpfile);
- compose_insert_file(compose, tmpfile);
- claws_unlink(tmpfile);
- g_free(tmpfile);
- gtk_drag_finish(drag_context, TRUE, FALSE, time);
-#endif
return;
}
gtk_drag_finish(drag_context, TRUE, FALSE, time);
diff --git a/src/crash.c b/src/crash.c
@@ -430,9 +430,6 @@ static const gchar *get_compiled_in_features(void)
#if HAVE_LIBETPAN
" libetpan"
#endif
-#if USE_GNOMEPRINT
- " libgnomeprint"
-#endif
#if HAVE_LIBSM
" libSM"
#endif
diff --git a/src/foldersel.c b/src/foldersel.c
@@ -261,10 +261,8 @@ static void foldersel_create(void)
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview),
prefs_common.use_stripes_everywhere);
-#if GTK_CHECK_VERSION(2,10,0)
gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(treeview),
prefs_common.enable_dotted_lines);
-#endif
gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview),
FOLDERSEL_FOLDERNAME);
diff --git a/src/gedit-print.c b/src/gedit-print.c
@@ -1,463 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gedit-print.c
- * This file is part of gedit
- *
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
- * Copyright (C) 2002 Paolo Maggi
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Modified by the gedit Team, 1998-2002. See the AUTHORS file for a
- * list of people on the gedit Team.
- * See the ChangeLog files for a list of changes.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef USE_GNOMEPRINT
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h> /* For strlen */
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <libgnomeprintui/gnome-print-dialog.h>
-#include <libgnomeprintui/gnome-print-job-preview.h>
-
-#include "gedit-print.h"
-#include "gtk/gtksourceprintjob.h"
-#include "mainwindow.h"
-#include "prefs_common.h"
-
-#ifdef DEBUG
-# define DEBUG_PRINT "DEBUG_PRINT: %s"
-# define gedit_debug(x, y) g_warning(x, y)
-#else
-# define gedit_debug(x, y) do {} while (FALSE);
-#endif
-
-enum
-{
- PREVIEW_NO,
- PREVIEW,
- PREVIEW_FROM_DIALOG
-};
-
-typedef struct _GeditPrintJobInfo GeditPrintJobInfo;
-
-struct _GeditPrintJobInfo
-{
- GtkTextBuffer *doc;
-
- GtkSourcePrintJob *pjob;
-
- gint preview;
-
- gint range_type;
-
- gint first_line_to_print;
- gint last_line_to_print;
-
- /* Popup dialog */
- GtkWidget *dialog;
- GtkWidget *label;
- GtkWidget *progressbar;
-
- GtkWindow *parent;
- gboolean done;
-};
-
-static GeditPrintJobInfo* gedit_print_job_info_new (GtkTextView *view);
-static void gedit_print_job_info_destroy (GeditPrintJobInfo *pji,
- gboolean save_config);
-static void gedit_print_real (GeditPrintJobInfo *pji,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkWindow *parent);
-static void gedit_print_preview_real (GeditPrintJobInfo *pji,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkWindow *parent);
-
-
-static void
-gedit_print_job_info_destroy (GeditPrintJobInfo *pji, gboolean save_config)
-{
- gedit_debug (DEBUG_PRINT, "");
-
- cm_return_if_fail (pji != NULL);
-
- if (pji->pjob != NULL)
- g_object_unref (pji->pjob);
-
- g_free (pji);
-}
-
-static GtkWidget *
-get_print_dialog (GeditPrintJobInfo *pji, GtkWindow *parent)
-{
- GtkWidget *dialog;
- gint selection_flag;
- gint lines;
- GnomePrintConfig *config;
-
- gedit_debug (DEBUG_PRINT, "");
-
- cm_return_val_if_fail (pji != NULL, NULL);
-
- if (!gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (pji->doc), NULL, NULL))
- selection_flag = GNOME_PRINT_RANGE_SELECTION_UNSENSITIVE;
- else
- selection_flag = GNOME_PRINT_RANGE_SELECTION;
-
- cm_return_val_if_fail(pji->pjob != NULL, NULL);
- config = gtk_source_print_job_get_config (pji->pjob);
-
- dialog = g_object_new (GNOME_TYPE_PRINT_DIALOG, "print_config", config, NULL);
-
- gnome_print_dialog_construct (GNOME_PRINT_DIALOG (dialog),
- _("Print"),
- GNOME_PRINT_DIALOG_RANGE | GNOME_PRINT_DIALOG_COPIES);
-
- lines = gtk_text_buffer_get_line_count (GTK_TEXT_BUFFER (pji->doc));
-
- gnome_print_dialog_construct_range_any ( GNOME_PRINT_DIALOG (dialog),
- (GNOME_PRINT_RANGE_ALL | selection_flag),
- NULL, NULL, NULL);
-
- gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
-
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
-
- return dialog;
-}
-
-static void
-gedit_print_dialog_response (GtkWidget *dialog, int response, GeditPrintJobInfo *pji)
-{
- GtkTextIter start, end;
-
- pji->range_type = gnome_print_dialog_get_range (GNOME_PRINT_DIALOG (dialog));
- gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (pji->doc), &start, &end);
-
- switch (pji->range_type)
- {
- case GNOME_PRINT_RANGE_ALL:
- break;
-
- case GNOME_PRINT_RANGE_SELECTION:
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (pji->doc),
- &start, &end);
- break;
-
- default:
- g_return_if_reached ();
- }
-
- switch (response)
- {
- case GNOME_PRINT_DIALOG_RESPONSE_PRINT:
- gedit_debug (DEBUG_PRINT, "Print button pressed.");
- pji->preview = PREVIEW_NO;
- gedit_print_real (pji, &start, &end,
- gtk_window_get_transient_for (GTK_WINDOW (dialog)));
- gtk_widget_destroy (dialog);
- break;
-
- case GNOME_PRINT_DIALOG_RESPONSE_PREVIEW:
- gedit_debug (DEBUG_PRINT, "Preview button pressed.");
- pji->preview = PREVIEW_FROM_DIALOG;
- gedit_print_preview_real (pji, &start, &end, GTK_WINDOW (dialog));
- break;
-
- default:
- gtk_widget_destroy (dialog);
- pji->done = TRUE;
- }
-}
-
-static void
-show_printing_dialog (GeditPrintJobInfo *pji, GtkWindow *parent)
-{
- GtkWidget *window;
- GtkWidget *frame;
- GtkWidget *hbox;
- GtkWidget *image;
- GtkWidget *vbox;
- GtkWidget *label;
- GtkWidget *progressbar;
-
- window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "gedit-print");
- gtk_window_set_modal (GTK_WINDOW (window), TRUE);
- gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
- gtk_window_set_destroy_with_parent (GTK_WINDOW (window), TRUE);
- gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER_ON_PARENT);
-
- gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
- gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
- gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
-
- gtk_window_set_transient_for (GTK_WINDOW (window), parent);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_container_add (GTK_CONTAINER (window), frame);
-
- hbox = gtk_hbox_new (FALSE, 12);
- gtk_container_add (GTK_CONTAINER (frame), hbox);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 12);
-
- image = gtk_image_new_from_stock ("gtk-print", GTK_ICON_SIZE_DIALOG);
- gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
-
- vbox = gtk_vbox_new (FALSE, 12);
- gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Preparing pages..."));
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- progressbar = gtk_progress_bar_new ();
- gtk_box_pack_start (GTK_BOX (vbox), progressbar, FALSE, FALSE, 0);
-
- pji->dialog = window;
- pji->label = label;
- pji->progressbar = progressbar;
-
- gtk_widget_show_all (pji->dialog);
-
- /* Update UI */
- while (gtk_events_pending ())
- gtk_main_iteration ();
-}
-
-static void
-page_cb (GtkSourcePrintJob *job, GeditPrintJobInfo *pji)
-{
- gchar *str;
- gint page_num = gtk_source_print_job_get_page (pji->pjob);
- gint total = gtk_source_print_job_get_page_count (pji->pjob);
-
- if (pji->preview != PREVIEW_NO)
- str = g_strdup_printf (_("Rendering page %d of %d..."), page_num, total);
- else
- str = g_strdup_printf (_("Printing page %d of %d..."), page_num, total);
-
- gtk_label_set_label (GTK_LABEL (pji->label), str);
- g_free (str);
-
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pji->progressbar),
- (total == 0) ? 0 : 1.0 * page_num / total);
-
- /* Update UI */
- while (gtk_events_pending ())
- gtk_main_iteration ();
-
-}
-
-static void
-preview_finished_cb (GtkSourcePrintJob *job, GeditPrintJobInfo *pji)
-{
- GnomePrintJob *gjob;
- GtkWidget *preview = NULL;
-
- gjob = gtk_source_print_job_get_print_job (job);
-
- preview = gnome_print_job_preview_new (gjob, _("Print preview"));
- if (pji->parent != NULL)
- {
- gtk_window_set_transient_for (GTK_WINDOW (preview), pji->parent);
- gtk_window_set_modal (GTK_WINDOW (preview), TRUE);
- }
-
- g_object_unref (gjob);
-
- gtk_widget_destroy (pji->dialog);
-
- if (pji->preview == PREVIEW)
- pji->done = TRUE;
- else
- {
- g_signal_handlers_disconnect_by_func (pji->pjob, (GCallback) page_cb, pji);
- g_signal_handlers_disconnect_by_func (pji->pjob, (GCallback) preview_finished_cb, pji);
- }
-
- gtk_widget_show (preview);
-}
-
-static void
-print_finished_cb (GtkSourcePrintJob *job, GeditPrintJobInfo *pji)
-{
- GnomePrintJob *gjob;
-
- gjob = gtk_source_print_job_get_print_job (job);
-
- gnome_print_job_print (gjob);
-
- g_object_unref (gjob);
-
- gtk_widget_destroy (pji->dialog);
-
- pji->done = TRUE;
-}
-
-void
-gedit_print (GtkTextView *view)
-{
- GeditPrintJobInfo *pji;
- GtkWidget *dialog;
- GtkWidget *parent;
-
- gedit_debug (DEBUG_PRINT, "");
-
- cm_return_if_fail (view != NULL);
-
- pji = gedit_print_job_info_new (view);
- pji->preview = PREVIEW_NO;
-
- parent = gtk_widget_get_toplevel (GTK_WIDGET (view));
- if (parent == NULL || !GTK_IS_WINDOW(parent))
- parent = mainwindow_get_mainwindow()->window;
-
- dialog = get_print_dialog (pji, GTK_WINDOW (parent));
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (gedit_print_dialog_response),
- pji);
-
- gtk_widget_show (dialog);
- while (pji->done != TRUE)
- gtk_main_iteration();
- gedit_print_job_info_destroy (pji, pji->preview ? FALSE:TRUE);
-
-}
-
-static void
-gedit_print_preview_real (GeditPrintJobInfo *pji,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkWindow *parent)
-{
- show_printing_dialog (pji, parent);
-
- pji->parent = parent;
-
- g_signal_connect (pji->pjob, "begin_page", (GCallback) page_cb, pji);
- g_signal_connect (pji->pjob, "finished", (GCallback) preview_finished_cb, pji);
-
- if (!gtk_source_print_job_print_range_async (pji->pjob, start, end))
- {
- /* FIXME */
- g_warning ("Async print failed");
- gtk_widget_destroy (pji->dialog);
- }
-}
-
-static void
-gedit_print_real (GeditPrintJobInfo *pji,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkWindow *parent)
-{
- show_printing_dialog (pji, parent);
-
- g_signal_connect (pji->pjob, "begin_page", (GCallback) page_cb, pji);
- g_signal_connect (pji->pjob, "finished", (GCallback) print_finished_cb, pji);
-
- if (!gtk_source_print_job_print_range_async (pji->pjob, start, end))
- {
- /* FIXME */
- g_warning ("Async print failed");
- gtk_widget_destroy (pji->dialog);
- }
-}
-
-static GeditPrintJobInfo *
-gedit_print_job_info_new (GtkTextView* view)
-{
- GtkSourcePrintJob *pjob;
- GnomePrintConfig *config;
- GeditPrintJobInfo *pji;
- PangoContext *pango_context;
- PangoFontDescription *font_desc;
- GtkTextBuffer *buffer;
-
- gedit_debug (DEBUG_PRINT, "");
-
- cm_return_val_if_fail (view != NULL, NULL);
-
- buffer = gtk_text_view_get_buffer (view);
- cm_return_val_if_fail (buffer != NULL, NULL);
-
- config = gnome_print_config_default ();
- cm_return_val_if_fail (config != NULL, NULL);
-
- gnome_print_config_set_int (config, GNOME_PRINT_KEY_NUM_COPIES, 1);
- gnome_print_config_set_boolean (config, GNOME_PRINT_KEY_COLLATE, FALSE);
-
- pjob = gtk_source_print_job_new_with_buffer (config, buffer);
- gnome_print_config_unref (config);
-
- gtk_source_print_job_set_highlight (pjob, TRUE);
- gtk_source_print_job_set_print_numbers (pjob, FALSE);
- gtk_source_print_job_set_wrap_mode (pjob, gtk_text_view_get_wrap_mode (view));
- gtk_source_print_job_set_tabs_width (pjob, 8);
-
- gtk_source_print_job_set_footer_format (pjob,
- _("Page %N of %Q"),
- NULL,
- prefs_common.date_format,
- TRUE);
-
- gtk_source_print_job_set_print_header (pjob, FALSE);
- gtk_source_print_job_set_print_footer (pjob, TRUE);
-
- pango_context = gtk_widget_get_pango_context (GTK_WIDGET (view));
- if (prefs_common.use_different_print_font)
- {
- font_desc = pango_font_description_from_string (prefs_common.printfont);
- }
- else
- {
- font_desc = pango_context_get_font_description (pango_context);
- }
-
- gtk_source_print_job_set_font_desc (pjob, font_desc);
- if (prefs_common.use_different_print_font)
- {
- pango_font_description_free (font_desc);
- }
-
- pji = g_new0 (GeditPrintJobInfo, 1);
-
- pji->pjob = pjob;
-
- pji->doc = buffer;
- pji->preview = PREVIEW_NO;
- pji->range_type = GNOME_PRINT_RANGE_ALL;
-
- return pji;
-}
-
-#endif
diff --git a/src/gedit-print.h b/src/gedit-print.h
@@ -1,41 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gedit-print.h
- * This file is part of gedit
- *
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Modified by the gedit Team, 1998-2001. See the AUTHORS file for a
- * list of people on the gedit Team.
- * See the ChangeLog files for a list of changes.
- */
-
-#ifndef __GEDIT_PRINT_H__
-#define __GEDIT_PRINT_H__
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef USE_GNOMEPRINT
-
-#include <gtk/gtk.h>
-
-void gedit_print (GtkTextView* view);
-
-#endif
-#endif /* __GEDIT_PRINT_H__ */
diff --git a/src/gtk/Makefile.am b/src/gtk/Makefile.am
@@ -20,7 +20,6 @@ libclawsgtk_la_SOURCES = \
gtkcmoptionmenu.c \
gtkshruler.c \
gtksctree.c \
- gtksourceprintjob.c \
gtkutils.c \
gtkvscrollbutton.c \
icon_legend.c \
@@ -52,7 +51,6 @@ clawsgtkinclude_HEADERS = \
gtkcmoptionmenu.h \
gtksctree.h \
gtkshruler.h \
- gtksourceprintjob.h \
gtkutils.h \
gtkvscrollbutton.h \
headers.h \
@@ -75,7 +73,6 @@ AM_CPPFLAGS = \
-I$(srcdir)/.. \
-I$(builddir)/.. \
$(GTK_CFLAGS) \
- $(GNOMEPRINT_CFLAGS) \
$(MAEMO_CFLAGS) \
$(ENCHANT_CFLAGS) \
-DPLUGINDIR=\"$(PLUGINDIR)\" \
@@ -85,7 +82,6 @@ libclawsgtk_la_LIBADD = \
../common/libclawscommon.la \
$(GTK_LIBS) \
$(ENCHANT_LIBS) \
- $(GNOMEPRINT_LIBS) \
$(MAEMO_LIBS)
BUILT_SOURCES=claws-marshal.c claws-marshal.h
diff --git a/src/gtk/about.c b/src/gtk/about.c
@@ -478,18 +478,6 @@ static GtkWidget *about_create_child_page_features(void)
gtk_text_buffer_insert(buffer, &iter,
(gchar *)Q_("libetpan|adds support for IMAP and NNTP servers\n"), -1);
-#if !GTK_CHECK_VERSION(2,10,0)
-#if USE_GNOMEPRINT
- gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
-#else
- gtk_text_buffer_insert_pixbuf(buffer, &iter, inactive_pixbuf);
-#endif
- gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" libgnomeprint "), -1,
- "bold", NULL);
- gtk_text_buffer_insert(buffer, &iter,
- (gchar *)Q_("libgnomeprint|adds support for a complete print dialog\n"), -1);
-#endif
-
#if HAVE_LIBSM
gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf);
#else
diff --git a/src/gtk/gtkcmclist.c b/src/gtk/gtkcmclist.c
@@ -36,10 +36,6 @@
#include <gdk/gdkkeysyms.h>
#include "utils.h"
-#if !GTK_CHECK_VERSION(2,10,0)
-#define gdk_atom_intern_static_string(str) gdk_atom_intern(str, FALSE)
-#endif
-
/* length of button_actions array */
#define MAX_BUTTON 5
diff --git a/src/gtk/gtkcmctree.c b/src/gtk/gtkcmctree.c
@@ -36,10 +36,6 @@
#include "claws-marshal.h"
#include "utils.h"
-#if !GTK_CHECK_VERSION(2,10,0)
-#define gdk_atom_intern_static_string(str) gdk_atom_intern(str, FALSE)
-#endif
-
#define PM_SIZE 8
#define TAB_SIZE (PM_SIZE + 6)
#define CELL_SPACING 1
diff --git a/src/gtk/gtksourceprintjob.c b/src/gtk/gtksourceprintjob.c
@@ -1,3243 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- */
-/*
- * gtksourceprintjob.c
- * This file is part of GtkSourceView
- *
- * Derived from gedit-print.c
- *
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
- * Copyright (C) 2002 Paolo Maggi
- * Copyright (C) 2003 Gustavo Giráldez
- * Copyright (C) 2004 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef USE_GNOMEPRINT
-
-#include <string.h>
-#include <time.h>
-
-#include "gtksourceprintjob.h"
-#include "image_viewer.h"
-#include "utils.h"
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <libgnomeprint/gnome-print-pango.h>
-
-#ifdef ENABLE_PROFILE
-#define PROFILE(x) x
-#else
-#define PROFILE(x)
-#endif
-
-#ifdef ENABLE_DEBUG
-#define DEBUG(x) x
-#else
-#define DEBUG(x)
-#endif
-
-
-#define DEFAULT_FONT_NAME "Monospace 10"
-#define DEFAULT_COLOR 0x000000ff
-
-#define CM(v) ((v) * 72.0 / 2.54)
-#define A4_WIDTH (210.0 * 72 / 25.4)
-#define A4_HEIGHT (297.0 * 72 / 25.4)
-
-#define NUMBERS_TEXT_SEPARATION CM(0.5)
-
-#define HEADER_FOOTER_SIZE 2.5
-#define SEPARATOR_SPACING 1.5
-#define SEPARATOR_LINE_WIDTH 1.0
-
-
-typedef struct _TextSegment TextSegment;
-typedef struct _Paragraph Paragraph;
-typedef struct _TextStyle TextStyle;
-
-/* a piece of text (within a paragraph) of the same style */
-struct _TextSegment
-{
- TextSegment *next;
- TextStyle *style;
- gchar *text;
- GdkPixbuf *image;
-};
-
-/* a printable line */
-struct _Paragraph
-{
- guint line_number;
- TextSegment *segment;
-};
-
-/* the style of a TextSegment */
-struct _TextStyle
-{
- PangoFontDescription *font_desc;
- GdkColor *foreground;
- GdkColor *background;
- gdouble scale;
- gboolean strikethrough;
- PangoUnderline underline;
-};
-
-
-struct _GtkSourcePrintJobPrivate
-{
- /* General job configuration */
- GnomePrintConfig *config;
- GtkTextBuffer *buffer;
- guint tabs_width;
- GtkWrapMode wrap_mode;
- gboolean highlight;
- PangoLanguage *language;
- PangoFontDescription *font;
- PangoFontDescription *numbers_font;
- guint print_numbers;
- gdouble margin_top;
- gdouble margin_bottom;
- gdouble margin_left;
- gdouble margin_right;
-
- /* Default header and footer configuration */
- gboolean print_header;
- gboolean print_footer;
- PangoFontDescription *header_footer_font;
- gchar *header_format_left;
- gchar *header_format_center;
- gchar *header_format_right;
- gboolean header_separator;
- gchar *footer_format_left;
- gchar *footer_format_center;
- gchar *footer_format_right;
- gboolean footer_separator;
-
- /* Job data */
- guint first_line_number;
- guint last_line_number;
- GSList *paragraphs;
-
- /* Job state */
- gboolean printing;
- guint idle_printing_tag;
- GnomePrintContext *print_ctxt;
- GnomePrintJob *print_job;
- PangoContext *pango_context;
- PangoTabArray *tab_array;
- gint page;
- gint page_count;
- gdouble available_height;
- GSList *current_paragraph;
- gint current_paragraph_line;
- guint printed_lines;
-
- /* Cached information - all this information is obtained from
- * other fields in the configuration */
- GHashTable *tag_styles;
-
- gdouble page_width;
- gdouble page_height;
- /* outer margins */
- gdouble doc_margin_top;
- gdouble doc_margin_left;
- gdouble doc_margin_right;
- gdouble doc_margin_bottom;
-
- gdouble header_height;
- gdouble footer_height;
- gdouble numbers_width;
-
- /* printable (for the document itself) size */
- gdouble text_width;
- gdouble text_height;
-};
-
-
-enum
-{
- PROP_0,
- PROP_CONFIG,
- PROP_BUFFER,
- PROP_TABS_WIDTH,
- PROP_WRAP_MODE,
- PROP_HIGHLIGHT,
- PROP_FONT,
- PROP_FONT_DESC,
- PROP_NUMBERS_FONT,
- PROP_NUMBERS_FONT_DESC,
- PROP_PRINT_NUMBERS,
- PROP_PRINT_HEADER,
- PROP_PRINT_FOOTER,
- PROP_HEADER_FOOTER_FONT,
- PROP_HEADER_FOOTER_FONT_DESC
-};
-
-enum
-{
- BEGIN_PAGE = 0,
- FINISHED,
- LAST_SIGNAL
-};
-
-static GObjectClass *parent_class = NULL;
-static guint print_job_signals [LAST_SIGNAL] = { 0 };
-
-static void gtk_source_print_job_class_init (GtkSourcePrintJobClass *klass);
-static void gtk_source_print_job_instance_init (GtkSourcePrintJob *job);
-static void gtk_source_print_job_finalize (GObject *object);
-static void gtk_source_print_job_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
-static void gtk_source_print_job_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_source_print_job_begin_page (GtkSourcePrintJob *job);
-
-static void default_print_header (GtkSourcePrintJob *job,
- gdouble x,
- gdouble y);
-static void default_print_footer (GtkSourcePrintJob *job,
- gdouble x,
- gdouble y);
-
-
-GType
-gtk_source_print_job_get_type (void)
-{
- static GType our_type = 0;
-
- if (our_type == 0)
- {
- static const GTypeInfo our_info = {
- sizeof (GtkSourcePrintJobClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_source_print_job_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GtkSourcePrintJob),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gtk_source_print_job_instance_init
- };
-
- our_type = g_type_register_static (G_TYPE_OBJECT,
- "GtkSourcePrintJob",
- &our_info,
- 0);
- }
-
- return our_type;
-}
-
-static void
-gtk_source_print_job_class_init (GtkSourcePrintJobClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
- parent_class = g_type_class_peek_parent (klass);
-
- object_class->finalize = gtk_source_print_job_finalize;
- object_class->get_property = gtk_source_print_job_get_property;
- object_class->set_property = gtk_source_print_job_set_property;
-
- klass->begin_page = gtk_source_print_job_begin_page;
- klass->finished = NULL;
-
- g_object_class_install_property (object_class,
- PROP_CONFIG,
- g_param_spec_object ("config",
- _("Configuration"),
- _("Configuration options for "
- "the print job"),
- GNOME_TYPE_PRINT_CONFIG,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_BUFFER,
- g_param_spec_object ("buffer",
- _("Source Buffer"),
- _("GtkTextBuffer object to print"),
- GTK_TYPE_TEXT_BUFFER,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_TABS_WIDTH,
- g_param_spec_uint ("tabs_width",
- _("Tabs Width"),
- _("Width in equivalent space "
- "characters of tabs"),
- 0, 100, 8,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_WRAP_MODE,
- g_param_spec_enum ("wrap_mode",
- _("Wrap Mode"),
- _("Word wrapping mode"),
- GTK_TYPE_WRAP_MODE,
- GTK_WRAP_NONE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HIGHLIGHT,
- g_param_spec_boolean ("highlight",
- _("Highlight"),
- _("Whether to print the "
- "document with highlighted "
- "syntax"),
- TRUE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_FONT,
- g_param_spec_string ("font",
- _("Font"),
- _("GnomeFont name to use for the "
- "document text (deprecated)"),
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_FONT_DESC,
- g_param_spec_boxed ("font_desc",
- _("Font Description"),
- _("Font to use for the document text "
- "(e.g. \"Monospace 10\")"),
- PANGO_TYPE_FONT_DESCRIPTION,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_NUMBERS_FONT,
- g_param_spec_string ("numbers_font",
- _("Numbers Font"),
- _("GnomeFont name to use for the "
- "line numbers (deprecated)"),
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_NUMBERS_FONT_DESC,
- g_param_spec_boxed ("numbers_font_desc",
- _("Numbers Font"),
- _("Font description to use for the "
- "line numbers"),
- PANGO_TYPE_FONT_DESCRIPTION,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_PRINT_NUMBERS,
- g_param_spec_uint ("print_numbers",
- _("Print Line Numbers"),
- _("Interval of printed line numbers "
- "(0 means no numbers)"),
- 0, 100, 1,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_PRINT_HEADER,
- g_param_spec_boolean ("print_header",
- _("Print Header"),
- _("Whether to print a header "
- "in each page"),
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_PRINT_FOOTER,
- g_param_spec_boolean ("print_footer",
- _("Print Footer"),
- _("Whether to print a footer "
- "in each page"),
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HEADER_FOOTER_FONT,
- g_param_spec_string ("header_footer_font",
- _("Header and Footer Font"),
- _("GnomeFont name to use for the header "
- "and footer (deprecated)"),
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HEADER_FOOTER_FONT_DESC,
- g_param_spec_boxed ("header_footer_font_desc",
- _("Header and Footer Font Description"),
- _("Font to use for headers and footers "
- "(e.g. \"Monospace 10\")"),
- PANGO_TYPE_FONT_DESCRIPTION,
- G_PARAM_READWRITE));
-
- print_job_signals [BEGIN_PAGE] =
- g_signal_new ("begin_page",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkSourcePrintJobClass, begin_page),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
- print_job_signals [FINISHED] =
- g_signal_new ("finished",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GtkSourcePrintJobClass, finished),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
-}
-
-static void
-gtk_source_print_job_instance_init (GtkSourcePrintJob *job)
-{
- GtkSourcePrintJobPrivate *priv;
-
- priv = g_new0 (GtkSourcePrintJobPrivate, 1);
- job->priv = priv;
-
- /* default job configuration */
- priv->config = NULL;
- priv->buffer = NULL;
-
- priv->tabs_width = 8;
- priv->wrap_mode = GTK_WRAP_NONE;
- priv->highlight = TRUE;
- priv->language = gtk_get_default_language ();
- priv->font = NULL;
- priv->numbers_font = NULL;
- priv->print_numbers = 1;
- priv->margin_top = 0.0;
- priv->margin_bottom = 0.0;
- priv->margin_left = 0.0;
- priv->margin_right = 0.0;
-
- priv->print_header = FALSE;
- priv->print_footer = FALSE;
- priv->header_footer_font = NULL;
- priv->header_format_left = NULL;
- priv->header_format_center = NULL;
- priv->header_format_right = NULL;
- priv->header_separator = FALSE;
- priv->footer_format_left = NULL;
- priv->footer_format_center = NULL;
- priv->footer_format_right = NULL;
- priv->footer_separator = FALSE;
-
- /* initial state */
- priv->printing = FALSE;
- priv->print_ctxt = NULL;
- priv->print_job = NULL;
- priv->page = 0;
- priv->page_count = 0;
-
- priv->first_line_number = 0;
- priv->paragraphs = NULL;
- priv->tag_styles = NULL;
-
- /* some default, sane values */
- priv->page_width = A4_WIDTH;
- priv->page_height = A4_HEIGHT;
- priv->doc_margin_top = CM (1);
- priv->doc_margin_left = CM (1);
- priv->doc_margin_right = CM (1);
- priv->doc_margin_bottom = CM (1);
-}
-
-static void
-free_paragraphs (GSList *paras)
-{
- while (paras != NULL)
- {
- Paragraph *para = paras->data;
- TextSegment *seg = para->segment;
- while (seg != NULL)
- {
- TextSegment *next = seg->next;
- g_free (seg->text);
- g_free (seg);
- seg = next;
- }
- g_free (para);
- paras = g_slist_delete_link (paras, paras);
- }
-}
-
-static void
-gtk_source_print_job_finalize (GObject *object)
-{
- GtkSourcePrintJob *job;
- GtkSourcePrintJobPrivate *priv;
-
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (object));
-
- job = GTK_SOURCE_PRINT_JOB (object);
- priv = job->priv;
-
- if (priv != NULL)
- {
- if (priv->config != NULL)
- gnome_print_config_unref (priv->config);
- if (priv->buffer != NULL)
- g_object_unref (priv->buffer);
- if (priv->font != NULL)
- pango_font_description_free (priv->font);
- if (priv->numbers_font != NULL)
- pango_font_description_free (priv->numbers_font);
- if (priv->header_footer_font != NULL)
- pango_font_description_free (priv->header_footer_font);
- g_free (priv->header_format_left);
- g_free (priv->header_format_right);
- g_free (priv->header_format_center);
- g_free (priv->footer_format_left);
- g_free (priv->footer_format_right);
- g_free (priv->footer_format_center);
-
- if (priv->print_ctxt != NULL)
- g_object_unref (priv->print_ctxt);
- if (priv->print_job != NULL)
- g_object_unref (priv->print_job);
- if (priv->pango_context != NULL)
- g_object_unref (priv->pango_context);
- if (priv->tab_array != NULL)
- pango_tab_array_free (priv->tab_array);
-
- if (priv->paragraphs != NULL)
- free_paragraphs (priv->paragraphs);
- if (priv->tag_styles != NULL)
- g_hash_table_destroy (priv->tag_styles);
-
- g_free (priv);
- job->priv = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gtk_source_print_job_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkSourcePrintJob *job = GTK_SOURCE_PRINT_JOB (object);
-
- switch (prop_id)
- {
- case PROP_CONFIG:
- g_value_set_object (value, job->priv->config);
- break;
-
- case PROP_BUFFER:
- g_value_set_object (value, job->priv->buffer);
- break;
-
- case PROP_TABS_WIDTH:
- g_value_set_uint (value, job->priv->tabs_width);
- break;
-
- case PROP_WRAP_MODE:
- g_value_set_enum (value, job->priv->wrap_mode);
- break;
-
- case PROP_HIGHLIGHT:
- g_value_set_boolean (value, job->priv->highlight);
- break;
-
- case PROP_FONT:
- g_value_take_string (value, gtk_source_print_job_get_font (job));
- break;
-
- case PROP_FONT_DESC:
- g_value_set_boxed (value, gtk_source_print_job_get_font_desc (job));
- break;
-
- case PROP_NUMBERS_FONT:
- g_value_take_string (value, gtk_source_print_job_get_numbers_font (job));
- break;
-
- case PROP_NUMBERS_FONT_DESC:
- g_value_set_boxed (value, gtk_source_print_job_get_numbers_font_desc (job));
- break;
-
- case PROP_PRINT_NUMBERS:
- g_value_set_uint (value, job->priv->print_numbers);
- break;
-
- case PROP_PRINT_HEADER:
- g_value_set_boolean (value, job->priv->print_header);
- break;
-
- case PROP_PRINT_FOOTER:
- g_value_set_boolean (value, job->priv->print_footer);
- break;
-
- case PROP_HEADER_FOOTER_FONT:
- g_value_take_string (value,
- gtk_source_print_job_get_header_footer_font (job));
- break;
-
- case PROP_HEADER_FOOTER_FONT_DESC:
- g_value_set_boxed (value,
- gtk_source_print_job_get_header_footer_font_desc (job));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_source_print_job_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkSourcePrintJob *job = GTK_SOURCE_PRINT_JOB (object);
-
- switch (prop_id)
- {
- case PROP_CONFIG:
- gtk_source_print_job_set_config (job, g_value_get_object (value));
- break;
-
- case PROP_BUFFER:
- gtk_source_print_job_set_buffer (job, g_value_get_object (value));
- break;
-
- case PROP_TABS_WIDTH:
- gtk_source_print_job_set_tabs_width (job, g_value_get_uint (value));
- break;
-
- case PROP_WRAP_MODE:
- gtk_source_print_job_set_wrap_mode (job, g_value_get_enum (value));
- break;
-
- case PROP_HIGHLIGHT:
- gtk_source_print_job_set_highlight (job, g_value_get_boolean (value));
- break;
-
- case PROP_FONT:
- gtk_source_print_job_set_font (job, g_value_get_string (value));
- break;
-
- case PROP_FONT_DESC:
- gtk_source_print_job_set_font_desc (job, g_value_get_boxed (value));
- break;
-
- case PROP_NUMBERS_FONT:
- gtk_source_print_job_set_numbers_font (job, g_value_get_string (value));
- break;
-
- case PROP_NUMBERS_FONT_DESC:
- gtk_source_print_job_set_numbers_font_desc (job, g_value_get_boxed (value));
- break;
-
- case PROP_PRINT_NUMBERS:
- gtk_source_print_job_set_print_numbers (job, g_value_get_uint (value));
- break;
-
- case PROP_PRINT_HEADER:
- gtk_source_print_job_set_print_header (job, g_value_get_boolean (value));
- break;
-
- case PROP_PRINT_FOOTER:
- gtk_source_print_job_set_print_footer (job, g_value_get_boolean (value));
- break;
-
- case PROP_HEADER_FOOTER_FONT:
- gtk_source_print_job_set_header_footer_font (job,
- g_value_get_string (value));
- break;
-
- case PROP_HEADER_FOOTER_FONT_DESC:
- gtk_source_print_job_set_header_footer_font_desc (job,
- g_value_get_boxed (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_source_print_job_begin_page (GtkSourcePrintJob *job)
-{
- cm_return_if_fail (job->priv->printing);
-
- if (job->priv->print_header && job->priv->header_height > 0)
- {
- gdouble x, y;
-
- x = job->priv->doc_margin_left + job->priv->margin_left;
- y = job->priv->page_height - job->priv->doc_margin_top - job->priv->margin_top;
- default_print_header (job, x, y);
- }
-
- if (job->priv->print_footer && job->priv->footer_height > 0)
- {
- gdouble x, y;
-
- x = job->priv->doc_margin_left + job->priv->margin_left;
- y = job->priv->doc_margin_bottom +
- job->priv->margin_bottom +
- job->priv->footer_height;
- default_print_footer (job, x, y);
- }
-}
-
-/* ---- gnome-print / Pango convenience functions */
-
-/* Gets the width of a layout in gnome-print coordinates */
-static gdouble
-get_layout_width (PangoLayout *layout)
-{
- gint layout_width;
-
- pango_layout_get_size (layout, &layout_width, NULL);
- return (gdouble) layout_width / PANGO_SCALE;
-}
-
-/* Gets the ascent/descent of a font in gnome-print coordinates */
-static void
-get_font_ascent_descent (GtkSourcePrintJob *job,
- PangoFontDescription *desc,
- gdouble *ascent,
- gdouble *descent)
-{
- PangoFontMetrics *metrics;
-
- metrics = pango_context_get_metrics (job->priv->pango_context,
- desc,
- job->priv->language);
-
- if (ascent)
- *ascent = (gdouble) pango_font_metrics_get_ascent (metrics) / PANGO_SCALE;
- if (descent)
- *descent = (gdouble) pango_font_metrics_get_descent (metrics) / PANGO_SCALE;
-
- pango_font_metrics_unref (metrics);
-}
-
-/* Draws the first line in a layout; we use this for one-line layouts
- * to get baseline alignment */
-static void
-show_first_layout_line (GnomePrintContext *print_ctxt,
- PangoLayout *layout)
-{
- PangoLayoutLine *line;
-
- line = pango_layout_get_lines (layout)->data;
- gnome_print_pango_layout_line (print_ctxt, line);
-}
-
-static PangoLayout *
-get_line_number_layout (GtkSourcePrintJob *job,
- guint line_number)
-{
- PangoLayout *layout;
- gchar *num_str;
-
- num_str = g_strdup_printf ("%d", line_number);
- layout = pango_layout_new (job->priv->pango_context);
- pango_layout_set_font_description (layout, job->priv->numbers_font);
- pango_layout_set_text (layout, num_str, -1);
- g_free (num_str);
-
- return layout;
-}
-
-/* ---- Configuration functions */
-
-static void
-ensure_print_config (GtkSourcePrintJob *job)
-{
- if (job->priv->config == NULL)
- job->priv->config = gnome_print_config_default ();
- if (job->priv->font == NULL)
- job->priv->font = pango_font_description_from_string (DEFAULT_FONT_NAME);
-}
-
-static gboolean
-update_page_size_and_margins (GtkSourcePrintJob *job)
-{
- PangoLayout *layout;
- gdouble ascent, descent;
-
- gnome_print_job_get_page_size_from_config (job->priv->config,
- &job->priv->page_width,
- &job->priv->page_height);
-
- gnome_print_config_get_length (job->priv->config, GNOME_PRINT_KEY_PAGE_MARGIN_TOP,
- &job->priv->doc_margin_top, NULL);
- gnome_print_config_get_length (job->priv->config, GNOME_PRINT_KEY_PAGE_MARGIN_BOTTOM,
- &job->priv->doc_margin_bottom, NULL);
- gnome_print_config_get_length (job->priv->config, GNOME_PRINT_KEY_PAGE_MARGIN_LEFT,
- &job->priv->doc_margin_left, NULL);
- gnome_print_config_get_length (job->priv->config, GNOME_PRINT_KEY_PAGE_MARGIN_RIGHT,
- &job->priv->doc_margin_right, NULL);
-
- /* set default fonts for numbers and header/footer */
- if (job->priv->numbers_font == NULL)
- job->priv->numbers_font = pango_font_description_copy (job->priv->font);
-
- if (job->priv->header_footer_font == NULL)
- job->priv->header_footer_font = pango_font_description_copy (job->priv->font);
-
- /* calculate numbers width */
- if (job->priv->print_numbers > 0)
- {
- layout = get_line_number_layout (job, job->priv->last_line_number);
- job->priv->numbers_width = get_layout_width (layout) + NUMBERS_TEXT_SEPARATION;
- g_object_unref (layout);
- }
- else
- job->priv->numbers_width = 0.0;
-
- get_font_ascent_descent (job, job->priv->header_footer_font, &ascent, &descent);
-
- /* calculate header/footer height */
- if (job->priv->print_header &&
- (job->priv->header_format_left != NULL ||
- job->priv->header_format_center != NULL ||
- job->priv->header_format_right != NULL))
- job->priv->header_height = HEADER_FOOTER_SIZE * (ascent + descent);
- else
- job->priv->header_height = 0.0;
-
- if (job->priv->print_footer &&
- (job->priv->footer_format_left != NULL ||
- job->priv->footer_format_center != NULL ||
- job->priv->footer_format_right != NULL))
- job->priv->footer_height = HEADER_FOOTER_SIZE * (ascent + descent);
- else
- job->priv->footer_height = 0.0;
-
- /* verify that the user provided margins are not too excesive
- * and that we still have room for the text */
- job->priv->text_width = (job->priv->page_width -
- job->priv->doc_margin_left - job->priv->doc_margin_right -
- job->priv->margin_left - job->priv->margin_right -
- job->priv->numbers_width);
-
- job->priv->text_height = (job->priv->page_height -
- job->priv->doc_margin_top - job->priv->doc_margin_bottom -
- job->priv->margin_top - job->priv->margin_bottom -
- job->priv->header_height - job->priv->footer_height);
-
- /* FIXME: put some saner values than 5cm - Gustavo */
- cm_return_val_if_fail (job->priv->text_width > CM(5.0), FALSE);
- cm_return_val_if_fail (job->priv->text_height > CM(5.0), FALSE);
-
- return TRUE;
-}
-
-/* We want a uniform tab width for the entire job without regard to style
- * See comments in gtksourceview.c:calculate_real_tab_width
- */
-static gint
-calculate_real_tab_width (GtkSourcePrintJob *job, guint tab_size, gchar c)
-{
- PangoLayout *layout;
- gchar *tab_string;
- gint tab_width = 0;
-
- if (tab_size == 0)
- return -1;
-
- tab_string = g_strnfill (tab_size, c);
- layout = pango_layout_new (job->priv->pango_context);
- pango_layout_set_text (layout, tab_string, -1);
- g_free (tab_string);
-
- pango_layout_get_size (layout, &tab_width, NULL);
- g_object_unref (G_OBJECT (layout));
-
- return tab_width;
-}
-
-static gboolean
-setup_pango_context (GtkSourcePrintJob *job)
-{
- PangoFontMap *font_map;
- gint real_tab_width;
-
- if (!job->priv->pango_context)
- {
- font_map = gnome_print_pango_get_default_font_map ();
- job->priv->pango_context = gnome_print_pango_create_context (font_map);
- }
-
- pango_context_set_language (job->priv->pango_context, job->priv->language);
- pango_context_set_font_description (job->priv->pango_context, job->priv->font);
-
- if (job->priv->tab_array)
- {
- pango_tab_array_free (job->priv->tab_array);
- job->priv->tab_array = NULL;
- }
-
- real_tab_width = calculate_real_tab_width (job, job->priv->tabs_width, ' ');
- if (real_tab_width > 0)
- {
- job->priv->tab_array = pango_tab_array_new (1, FALSE);
- pango_tab_array_set_tab (job->priv->tab_array, 0, PANGO_TAB_LEFT, real_tab_width);
- }
-
- return TRUE;
-}
-
-/* ----- Helper functions */
-
-static gchar *
-font_description_to_gnome_font_name (PangoFontDescription *desc)
-{
- GnomeFontFace *font_face;
- gchar *retval;
-
- /* Will always return some font */
- font_face = gnome_font_face_find_closest_from_pango_description (desc);
-
- retval = g_strdup_printf("%s %f",
- gnome_font_face_get_name (font_face),
- (double) pango_font_description_get_size (desc) / PANGO_SCALE);
- g_object_unref (font_face);
-
- return retval;
-}
-
-/*
- * The following routines are duplicated in gedit/gedit/gedit-prefs-manager.c
- */
-
-/* Do this ourselves since gnome_font_find_closest() doesn't call
- * gnome_font_face_find_closest() (probably a gnome-print bug)
- */
-static void
-face_and_size_from_full_name (const guchar *name,
- GnomeFontFace **face,
- gdouble *size)
-{
- char *copy;
- char *str_size;
-
- copy = g_strdup (name);
- str_size = strrchr (copy, ' ');
- if (str_size)
- {
- *str_size = 0;
- str_size ++;
- *size = atof (str_size);
- }
- else
- {
- *size = 12;
- }
-
- *face = gnome_font_face_find_closest (copy);
- g_free (copy);
-}
-
-static PangoFontDescription *
-font_description_from_gnome_font_name (const char *font_name)
-{
- GnomeFontFace *face;
- PangoFontDescription *desc;
- PangoStyle style;
- PangoWeight weight;
- gdouble size;
-
- face_and_size_from_full_name (font_name, &face, &size);
-
- /* Pango and GnomePrint have basically the same numeric weight values */
- weight = (PangoWeight) gnome_font_face_get_weight_code (face);
- style = gnome_font_face_is_italic (face) ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL;
-
- desc = pango_font_description_new ();
- pango_font_description_set_family (desc, gnome_font_face_get_family_name (face));
- pango_font_description_set_weight (desc, weight);
- pango_font_description_set_style (desc, style);
- pango_font_description_set_size (desc, size * PANGO_SCALE);
-
- g_object_unref (face);
-
- return desc;
-}
-
-/* ---- TextStyle functions */
-
-static TextStyle *
-text_style_new (GtkSourcePrintJob *job, GtkTextTag *tag)
-{
- TextStyle *style;
- gboolean bg_set, fg_set;
-
- cm_return_val_if_fail (tag != NULL && GTK_IS_TEXT_TAG (tag), NULL);
-
- style = g_new0 (TextStyle, 1);
-
- g_object_get (G_OBJECT (tag),
- "background_set", &bg_set,
- "foreground_set", &fg_set,
- "font_desc", &style->font_desc,
- "scale", &style->scale,
- "underline", &style->underline,
- "strikethrough", &style->strikethrough,
- NULL);
-
- if (fg_set)
- g_object_get (G_OBJECT (tag), "foreground_gdk", &style->foreground, NULL);
-
- if (bg_set)
- g_object_get (G_OBJECT (tag), "background_gdk", &style->background, NULL);
-
- return style;
-}
-
-static void
-text_style_free (TextStyle *style)
-{
- pango_font_description_free (style->font_desc);
- if (style->foreground)
- gdk_color_free (style->foreground);
- if (style->background)
- gdk_color_free (style->background);
- g_free (style);
-}
-
-static TextStyle *
-get_style (GtkSourcePrintJob *job, const GtkTextIter *iter)
-{
- GSList *tags, *t;
- GtkTextTag *tag = NULL;
- TextStyle *style = NULL;
-
- if (job->priv->tag_styles == NULL)
- {
- job->priv->tag_styles = g_hash_table_new_full (
- g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify) text_style_free);
- }
-
- /* get the tags at iter */
- tags = gtk_text_iter_get_tags (iter);
-
- /* now find the GtkSourceTag (if any) which applies at iter */
- /* FIXME: this makes the assumption that the style at a given
- * iter is only determined by one GtkSourceTag (the one with
- * highest priority). This is true for now, but could change
- * in the future - Gustavo */
- t = tags;
- while (t != NULL)
- {
- if (GTK_IS_TEXT_TAG (t->data))
- tag = t->data;
- t = g_slist_next (t);
- }
- g_slist_free (tags);
-
- /* now we lookup the tag style in the cache */
- if (tag != NULL)
- {
- style = g_hash_table_lookup (job->priv->tag_styles, tag);
- if (style == NULL)
- {
- /* create a style for the tag and cache it */
- style = text_style_new (job, tag);
- g_hash_table_insert (job->priv->tag_styles, tag, style);
- }
- }
-
- return style;
-}
-
-/* ----- Text fetching functions */
-
-static gboolean
-get_text_simple (GtkSourcePrintJob *job,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GtkTextIter iter;
-
- while (gtk_text_iter_compare (start, end) < 0)
- {
- Paragraph *para;
- TextSegment *seg;
-
- /* get a line of text */
- iter = *start;
- if (!gtk_text_iter_ends_line (&iter))
- gtk_text_iter_forward_to_line_end (&iter);
-
- if (gtk_text_iter_compare (&iter, end) > 0)
- iter = *end;
-
-
- seg = g_new0 (TextSegment, 1);
- seg->next = NULL; /* only one segment per line, since there's no style change */
- seg->style = NULL; /* use default style */
- /* FIXME: handle invisible text properly. This also
- * assumes the text has no embedded images and
- * stuff */
- seg->text = gtk_text_iter_get_slice (start, &iter);
-
- para = g_new0 (Paragraph, 1);
- para->segment = seg;
-
- /* add the line of text to the job */
- job->priv->paragraphs = g_slist_prepend (job->priv->paragraphs, para);
-
- gtk_text_iter_forward_line (&iter);
-
- /* advance to next line */
- *start = iter;
- }
- job->priv->paragraphs = g_slist_reverse (job->priv->paragraphs);
-
- return TRUE;
-}
-
-static gboolean
-get_text_with_style (GtkSourcePrintJob *job,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GtkTextIter limit, next_toggle;
- gboolean have_toggle;
- GdkPixbuf *image = NULL;
-
- /* make sure the region to print is highlighted */
- /*_gtk_source_buffer_highlight_region (job->priv->buffer, start, end, TRUE); */
-
- next_toggle = *start;
- have_toggle = gtk_text_iter_forward_to_tag_toggle (&next_toggle, NULL);
-
- /* FIXME: handle invisible text properly. This also assumes
- * the text has no embedded images and stuff */
- while (gtk_text_iter_compare (start, end) < 0)
- {
- TextStyle *style;
- TextSegment *seg;
- Paragraph *para;
-
- para = g_new0 (Paragraph, 1);
-
- /* get the style at the start of the line */
- style = get_style (job, start);
-
- /* get a line of text - limit points to the end of the line */
- limit = *start;
- if (!gtk_text_iter_ends_line (&limit))
- gtk_text_iter_forward_to_line_end (&limit);
-
- if (gtk_text_iter_compare (&limit, end) > 0)
- limit = *end;
-
- /* create the first segment for the line */
- para->segment = seg = g_new0 (TextSegment, 1);
- seg->style = style;
-
- /* while the next tag toggle is within the line, we check to see
- * if the style has changed at each tag toggle position, and if so,
- * create new segments */
- while (have_toggle && gtk_text_iter_compare (&next_toggle, &limit) < 0)
- {
- /* check style changes */
- style = get_style (job, &next_toggle);
- if (style != seg->style)
- {
- TextSegment *new_seg;
- /* style has changed, thus we need to
- * create a new segment */
- /* close the current segment */
- seg->text = gtk_text_iter_get_slice (start, &next_toggle);
- if ((image = gtk_text_iter_get_pixbuf(start)) != NULL)
- seg->image = image;
-
- *start = next_toggle;
-
- new_seg = g_new0 (TextSegment, 1);
- seg->next = new_seg;
- seg = new_seg;
- seg->style = style;
- }
-
- have_toggle = gtk_text_iter_forward_to_tag_toggle (&next_toggle, NULL);
- }
-
- /* close the line */
- seg->next = NULL;
- seg->text = gtk_text_iter_get_slice (start, &limit);
- if ((image = gtk_text_iter_get_pixbuf(start)) != NULL)
- seg->image = image;
-
- /* add the line of text to the job */
- job->priv->paragraphs = g_slist_prepend (job->priv->paragraphs, para);
-
- /* advance to next line */
- *start = limit;
- gtk_text_iter_forward_line (start);
-
- if (gtk_text_iter_compare (&next_toggle, start) < 0) {
- next_toggle = *start;
- have_toggle = gtk_text_iter_forward_to_tag_toggle (&next_toggle, NULL);
- }
- }
- job->priv->paragraphs = g_slist_reverse (job->priv->paragraphs);
-
- return TRUE;
-}
-
-static gboolean
-get_text_to_print (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end)
-{
- GtkTextIter _start, _end;
- gboolean retval;
-
- cm_return_val_if_fail (start != NULL && end != NULL, FALSE);
- cm_return_val_if_fail (job->priv->buffer != NULL, FALSE);
-
- _start = *start;
- _end = *end;
-
- /* erase any previous data */
- if (job->priv->paragraphs != NULL)
- {
- free_paragraphs (job->priv->paragraphs);
- job->priv->paragraphs = NULL;
- }
- if (job->priv->tag_styles != NULL)
- {
- g_hash_table_destroy (job->priv->tag_styles);
- job->priv->tag_styles = NULL;
- }
-
- /* provide ordered iters */
- gtk_text_iter_order (&_start, &_end);
-
- /* save the first and last line numbers for future reference */
- job->priv->first_line_number = gtk_text_iter_get_line (&_start) + 1;
- job->priv->last_line_number = gtk_text_iter_get_line (&_end) + 1;
-
- if (!job->priv->highlight)
- retval = get_text_simple (job, &_start, &_end);
- else
- retval = get_text_with_style (job, &_start, &_end);
-
- if (retval && job->priv->paragraphs == NULL)
- {
- Paragraph *para;
- TextSegment *seg;
-
- /* add an empty line to allow printing empty documents */
- seg = g_new0 (TextSegment, 1);
- seg->next = NULL;
- seg->style = NULL; /* use default style */
- seg->text = g_strdup ("");
-
- para = g_new0 (Paragraph, 1);
- para->segment = seg;
-
- job->priv->paragraphs = g_slist_prepend (job->priv->paragraphs, para);
- }
-
- return retval;
-}
-
-/* ----- Pagination functions */
-
-static void
-add_attribute_to_list (PangoAttribute *attr,
- PangoAttrList *list,
- guint index,
- gsize len)
-{
- attr->start_index = index;
- attr->end_index = index + len;
- pango_attr_list_insert (list, attr);
-}
-
-static void *
-create_layout_for_para (GtkSourcePrintJob *job,
- Paragraph *para,
- gboolean *is_image)
-{
- GString *text;
- PangoLayout *layout;
- PangoAttrList *attrs;
- TextSegment *seg;
- gint index;
- GdkPixbuf *image = NULL;
- text = g_string_new (NULL);
- attrs = pango_attr_list_new ();
-
- seg = para->segment;
- index = 0;
-
- while (seg != NULL)
- {
- gsize seg_len = strlen (seg->text);
- g_string_append (text, seg->text);
-
- if (seg->style)
- {
- PangoAttribute *attr;
-
- attr = pango_attr_font_desc_new (seg->style->font_desc);
- add_attribute_to_list (attr, attrs, index, seg_len);
-
- if (seg->style->scale != PANGO_SCALE_MEDIUM)
- {
- attr = pango_attr_scale_new (seg->style->scale);
- add_attribute_to_list (attr, attrs, index, seg_len);
- }
-
- if (seg->style->foreground)
- {
- attr = pango_attr_foreground_new (seg->style->foreground->red,
- seg->style->foreground->green,
- seg->style->foreground->blue);
- add_attribute_to_list (attr, attrs, index, seg_len);
- }
-
- if (seg->style->background)
- {
- attr = pango_attr_background_new (seg->style->background->red,
- seg->style->background->green,
- seg->style->background->blue);
- add_attribute_to_list (attr, attrs, index, seg_len);
- }
-
- if (seg->style->strikethrough)
- {
- attr = pango_attr_strikethrough_new (TRUE);
- add_attribute_to_list (attr, attrs, index, seg_len);
- }
-
- if (seg->style->underline != PANGO_UNDERLINE_NONE)
- {
- attr = pango_attr_underline_new (seg->style->underline);
- add_attribute_to_list (attr, attrs, index, seg_len);
- }
- }
-
- if (seg->image) {
- image = seg->image;
- }
-
- index += seg_len;
- seg = seg->next;
- }
-
- if (image != NULL) {
- *is_image = TRUE;
- return image;
- }
-
- layout = pango_layout_new (job->priv->pango_context);
-
- pango_layout_set_width (layout, job->priv->text_width * PANGO_SCALE);
-
- switch (job->priv->wrap_mode) {
- case GTK_WRAP_CHAR:
- pango_layout_set_wrap (layout, PANGO_WRAP_CHAR);
- break;
- case GTK_WRAP_WORD:
- pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
- break;
- case GTK_WRAP_WORD_CHAR:
- pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
- break;
- case GTK_WRAP_NONE:
- /* FIXME: hack
- * Ellipsize the paragraph when text wrapping is disabled.
- * Another possibility would be to set the width so the text
- * breaks into multiple lines, and paginate/render just the
- * first one.
- * See also Comment #23 by Owen on bug #143874.
- */
-
- /* orph says to comment this out and commit it.
- PANGO_ELLIPSIZE_END is not available in pango
- 1.4.1, at least, and he says this code is never
- used. */
- /*pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);*/
-
- break;
- }
-
- if (job->priv->tab_array)
- pango_layout_set_tabs (layout, job->priv->tab_array);
-
- pango_layout_set_text (layout, text->str, text->len);
- pango_layout_set_attributes (layout, attrs);
- *is_image = FALSE;
-
- /* FIXME: <horrible-hack>
- * For empty paragraphs, pango_layout_iter_get_baseline() returns 0,
- * so I check this condition and add a space character to force
- * the calculation of the baseline. I don't like that, but I
- * didn't find a better way to do it. Note that a paragraph is
- * considered empty either when it has no characters, or when
- * it only has tabs.
- * See comment #22 and #23 on bug #143874.
- */
- if (job->priv->print_numbers > 0)
- {
- PangoLayoutIter *iter;
- iter = pango_layout_get_iter (layout);
- if (pango_layout_iter_get_baseline (iter) == 0)
- {
- g_string_append_c (text, ' ');
- pango_layout_set_text (layout, text->str, text->len);
- }
- pango_layout_iter_free (iter);
- }
- /* FIXME: </horrible-hack> */
-
- g_string_free (text, TRUE);
- pango_attr_list_unref (attrs);
-
- return layout;
-}
-
-/* The break logic in this function needs to match that in print_paragraph */
-static void
-paginate_paragraph (GtkSourcePrintJob *job,
- Paragraph *para)
-{
- PangoLayout *layout;
- PangoLayoutIter *iter;
- PangoRectangle logical_rect;
- gdouble max;
- gdouble page_skip;
- GdkPixbuf *image;
- void *tmp;
- gboolean is_image = FALSE;
-
- tmp = create_layout_for_para (job, para, &is_image);
- if (!is_image) {
- layout = (PangoLayout *)tmp;
- image = NULL;
- } else {
- image = (GdkPixbuf *)tmp;
- layout = NULL;
- }
-
- if (image == NULL) {
- iter = pango_layout_get_iter (layout);
-
- max = 0;
- page_skip = 0;
-
- do
- {
- pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
- max = (gdouble) (logical_rect.y + logical_rect.height) / PANGO_SCALE;
-
- if (max - page_skip > job->priv->available_height)
- {
- /* "create" a new page */
- job->priv->page_count++;
- job->priv->available_height = job->priv->text_height;
- page_skip = (gdouble) logical_rect.y / PANGO_SCALE;
- }
-
- }
- while (pango_layout_iter_next_line (iter));
- job->priv->available_height -= max - page_skip;
- pango_layout_iter_free (iter);
- g_object_unref (layout);
- } else {
- gint max_height = job->priv->available_height;
- gint image_height = gdk_pixbuf_get_height(image);
- gint image_width = gdk_pixbuf_get_width(image);
- gint scaled_height = 0, scaled_width = 0;
- image_viewer_get_resized_size(image_width,
- image_height,
- job->priv->text_width,
- job->priv->text_height,
- &scaled_width, &scaled_height);
- if (scaled_height > max_height) {
- job->priv->page_count++;
- job->priv->available_height = job->priv->text_height - scaled_height;
- } else {
- job->priv->available_height -= scaled_height;
- }
- }
-
-}
-
-static gboolean
-paginate_text (GtkSourcePrintJob *job)
-{
- GSList *l;
- guint line_number;
-
- /* set these to zero so the first break_line creates a new page */
- job->priv->page_count = 0;
- job->priv->available_height = 0;
- line_number = job->priv->first_line_number;
- l = job->priv->paragraphs;
- while (l != NULL)
- {
- Paragraph *para = l->data;
-
- para->line_number = line_number;
- paginate_paragraph (job, para);
-
- line_number++;
- l = g_slist_next (l);
- }
-
- /* FIXME: do we have any error condition which can force us to
- * return %FALSE? - Gustavo */
- return TRUE;
-}
-
-/* ---- Printing functions */
-
-static void
-begin_page (GtkSourcePrintJob *job)
-{
- gnome_print_beginpage (job->priv->print_ctxt, NULL);
-
- g_signal_emit (job, print_job_signals [BEGIN_PAGE], 0);
-}
-
-static void
-end_page (GtkSourcePrintJob *job)
-{
- gnome_print_showpage (job->priv->print_ctxt);
-}
-
-static void
-print_line_number (GtkSourcePrintJob *job,
- guint line_number,
- gdouble x,
- gdouble y)
-{
- PangoLayout *layout;
-
- layout = get_line_number_layout (job, line_number);
-
- x = x + job->priv->numbers_width - get_layout_width (layout) - NUMBERS_TEXT_SEPARATION;
- gnome_print_moveto (job->priv->print_ctxt, x, y);
-
- show_first_layout_line (job->priv->print_ctxt, layout);
-
- g_object_unref (layout);
-}
-
-/* The break logic in this function needs to match that in paginate_paragraph
- *
- * @start_line is the first line in the paragraph to print
- * @y is updated to the position after the portion of the paragraph we printed
- * @baseline_out is set to the baseline of the first line of the paragraph
- * if we printed it. (And not set otherwise)
- *
- * Returns the first unprinted line in the paragraph (unprinted because it
- * flowed onto the next page) or -1 if the entire paragraph was printed.
- */
-static gint
-print_paragraph (GtkSourcePrintJob *job,
- Paragraph *para,
- gint start_line,
- gdouble x,
- gdouble *y,
- gdouble *baseline_out,
- gboolean force_fit)
-{
- PangoLayout *layout;
- PangoLayoutIter *iter;
- PangoRectangle logical_rect;
- int current_line;
- gdouble max;
- gdouble page_skip;
- gdouble baseline;
- int result = -1;
- GdkPixbuf *image;
- void *tmp;
- gboolean is_image;
-
- tmp = create_layout_for_para (job, para, &is_image);
- if (!is_image) {
- layout = (PangoLayout *)tmp;
- image = NULL;
- } else {
- image = (GdkPixbuf *)tmp;
- layout = NULL;
- }
-
- if (!is_image) {
- iter = pango_layout_get_iter (layout);
-
- /* Skip over lines already printed on previous page(s) */
- for (current_line = 0; current_line < start_line; current_line++)
- pango_layout_iter_next_line (iter);
-
- max = 0;
- page_skip = 0;
-
- do
- {
- pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
- max = (gdouble) (logical_rect.y + logical_rect.height) / PANGO_SCALE;
-
- if (current_line == start_line)
- page_skip = (gdouble) logical_rect.y / PANGO_SCALE;
-
- if (max - page_skip > job->priv->available_height)
- {
- result = current_line; /* Save position for next page */
- break;
- }
-
- baseline = (gdouble) pango_layout_iter_get_baseline (iter) / PANGO_SCALE;
- baseline = *y + page_skip - baseline; /* Adjust to global coordinates */
- if (current_line == 0)
- *baseline_out = baseline;
-
- gnome_print_moveto (job->priv->print_ctxt,
- x + (gdouble) logical_rect.x / PANGO_SCALE,
- baseline);
- gnome_print_pango_layout_line (job->priv->print_ctxt,
- pango_layout_iter_get_line (iter));
-
- current_line++;
- }
- while (pango_layout_iter_next_line (iter));
-
- job->priv->available_height -= max - page_skip;
- *y -= max - page_skip;
-
- pango_layout_iter_free (iter);
- g_object_unref (layout);
- } else {
- gint max_height = job->priv->available_height;
- gint image_height = gdk_pixbuf_get_height(image);
- gint image_width = gdk_pixbuf_get_width(image);
- gint scaled_height = 0, scaled_width = 0;
- GdkPixbuf *scaled_image = NULL;
- image_viewer_get_resized_size(image_width,
- image_height,
- job->priv->text_width,
- job->priv->text_height,
- &scaled_width, &scaled_height);
-
- if (scaled_height > max_height) {
- /* next page */
- return 0;
- } else {
- scaled_image = gdk_pixbuf_scale_simple
- (image, scaled_width, scaled_height,
- GDK_INTERP_BILINEAR);
-
- gnome_print_moveto(job->priv->print_ctxt,
- x, (gdouble)*y);
- gnome_print_gsave(job->priv->print_ctxt);
- gnome_print_translate(job->priv->print_ctxt,
- x, *y - scaled_height);
- gnome_print_scale(job->priv->print_ctxt,
- scaled_width,
- scaled_height);
-
- if (gdk_pixbuf_get_has_alpha(image))
- gnome_print_rgbaimage (job->priv->print_ctxt,
- gdk_pixbuf_get_pixels (scaled_image),
- gdk_pixbuf_get_width (scaled_image),
- gdk_pixbuf_get_height (scaled_image),
- gdk_pixbuf_get_rowstride (scaled_image));
- else
- gnome_print_rgbimage (job->priv->print_ctxt,
- gdk_pixbuf_get_pixels (scaled_image),
- gdk_pixbuf_get_width (scaled_image),
- gdk_pixbuf_get_height (scaled_image),
- gdk_pixbuf_get_rowstride (scaled_image));
- g_object_unref(scaled_image);
- gnome_print_grestore(job->priv->print_ctxt);
-
- job->priv->available_height -= scaled_height;
- *y -= scaled_height;
- return -1;
-
- }
- }
- return result;
-}
-
-static void
-print_page (GtkSourcePrintJob *job)
-{
- GSList *l;
- gdouble x, y;
- gint line;
- gboolean force_fit = TRUE;
-
- job->priv->page++;
-
-
- begin_page (job);
- job->priv->available_height = job->priv->text_height;
-
- y = job->priv->page_height -
- job->priv->doc_margin_top - job->priv->margin_top -
- job->priv->header_height;
- x = job->priv->doc_margin_left + job->priv->margin_left +
- job->priv->numbers_width;
- l = job->priv->current_paragraph;
- line = job->priv->current_paragraph_line;
-
- while (l != NULL)
- {
- Paragraph *para = l->data;
- gdouble baseline = 0;
- gint last_line = line;
-
- line = print_paragraph (job, para, line, x, &y, &baseline, force_fit);
-
- if (last_line == 0 && line != 0)
- {
- /* We printed the first line of a paragraph */
- if (job->priv->print_numbers > 0 &&
- ((para->line_number % job->priv->print_numbers) == 0))
- print_line_number (job,
- para->line_number,
- job->priv->doc_margin_left +
- job->priv->margin_left,
- baseline);
-
- job->priv->printed_lines++;
- }
-
- if (line >= 0)
- break; /* Didn't all fit on this page */
-
- l = l->next;
- line = 0;
- force_fit = FALSE;
- }
- end_page (job);
- job->priv->current_paragraph = l;
- job->priv->current_paragraph_line = line;
-}
-
-static void
-setup_for_print (GtkSourcePrintJob *job)
-{
- job->priv->current_paragraph = job->priv->paragraphs;
- job->priv->page = 0;
- job->priv->printed_lines = 0;
-
- if (job->priv->print_job != NULL)
- g_object_unref (job->priv->print_job);
- if (job->priv->print_ctxt != NULL)
- g_object_unref (job->priv->print_ctxt);
-
- job->priv->print_job = gnome_print_job_new (job->priv->config);
- job->priv->print_ctxt = gnome_print_job_get_context (job->priv->print_job);
-
- gnome_print_pango_update_context (job->priv->pango_context, job->priv->print_ctxt);
-}
-
-static void
-print_job (GtkSourcePrintJob *job)
-{
- while (job->priv->current_paragraph != NULL)
- print_page (job);
-
- gnome_print_job_close (job->priv->print_job);
-}
-
-static gboolean
-idle_printing_handler (GtkSourcePrintJob *job)
-{
- g_assert (job->priv->current_paragraph != NULL);
-
- print_page (job);
-
- if (job->priv->current_paragraph == NULL)
- {
- gnome_print_job_close (job->priv->print_job);
- job->priv->printing = FALSE;
- job->priv->idle_printing_tag = 0;
-
- g_signal_emit (job, print_job_signals [FINISHED], 0);
- /* after this the print job object is possibly
- * destroyed (common use case) */
-
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Public API ------------------- */
-
-/**
- * gtk_source_print_job_new:
- * @config: an optional #GnomePrintConfig object.
- *
- * Creates a new print job object, initially setting the print configuration.
- *
- * Return value: the new print job object.
- **/
-GtkSourcePrintJob *
-gtk_source_print_job_new (GnomePrintConfig *config)
-{
- GtkSourcePrintJob *job;
-
- cm_return_val_if_fail (config == NULL || GNOME_IS_PRINT_CONFIG (config), NULL);
-
- job = GTK_SOURCE_PRINT_JOB (g_object_new (GTK_TYPE_SOURCE_PRINT_JOB, NULL));
- if (config != NULL)
- gtk_source_print_job_set_config (job, config);
-
- return job;
-}
-
-/**
- * gtk_source_print_job_new_with_buffer:
- * @config: an optional #GnomePrintConfig.
- * @buffer: the #GtkTextBuffer to print (might be %NULL).
- *
- * Creates a new print job to print @buffer.
- *
- * Return value: a new print job object.
- **/
-GtkSourcePrintJob *
-gtk_source_print_job_new_with_buffer (GnomePrintConfig *config,
- GtkTextBuffer *buffer)
-{
- GtkSourcePrintJob *job;
-
- cm_return_val_if_fail (config == NULL || GNOME_IS_PRINT_CONFIG (config), NULL);
- cm_return_val_if_fail (buffer == NULL || GTK_IS_TEXT_BUFFER (buffer), NULL);
-
- job = gtk_source_print_job_new (config);
- if (buffer != NULL)
- gtk_source_print_job_set_buffer (job, buffer);
-
- return job;
-}
-
-/* --- print job basic configuration */
-
-/**
- * gtk_source_print_job_set_config:
- * @job: a #GtkSourcePrintJob.
- * @config: a #GnomePrintConfig object to get printing configuration from.
- *
- * Sets the print configuration for the job. If you don't set a
- * configuration object for the print job, when needed one will be
- * created with gnome_print_config_default().
- **/
-void
-gtk_source_print_job_set_config (GtkSourcePrintJob *job,
- GnomePrintConfig *config)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (GNOME_IS_PRINT_CONFIG (config));
- cm_return_if_fail (!job->priv->printing);
-
- if (config == job->priv->config)
- return;
-
- if (job->priv->config != NULL)
- gnome_print_config_unref (job->priv->config);
-
- job->priv->config = config;
- gnome_print_config_ref (config);
-
- g_object_notify (G_OBJECT (job), "config");
-}
-
-/**
- * gtk_source_print_job_get_config:
- * @job: a #GtkSourcePrintJob.
- *
- * Gets the current #GnomePrintConfig the print job will use. If not
- * previously set, this will create a default configuration and return
- * it. The returned object reference is owned by the print job.
- *
- * Return value: the #GnomePrintConfig for the print job.
- **/
-GnomePrintConfig *
-gtk_source_print_job_get_config (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- ensure_print_config (job);
-
- return job->priv->config;
-}
-
-/**
- * gtk_source_print_job_set_buffer:
- * @job: a #GtkSourcePrintJob.
- * @buffer: a #GtkTextBuffer.
- *
- * Sets the #GtkTextBuffer the print job will print. You need to
- * specify a buffer to print, either by the use of this function or by
- * creating the print job with gtk_source_print_job_new_with_buffer().
- **/
-void
-gtk_source_print_job_set_buffer (GtkSourcePrintJob *job,
- GtkTextBuffer *buffer)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
- cm_return_if_fail (!job->priv->printing);
-
- if (buffer == job->priv->buffer)
- return;
-
- if (job->priv->buffer != NULL)
- g_object_unref (job->priv->buffer);
-
- job->priv->buffer = buffer;
- g_object_ref (buffer);
-
- g_object_notify (G_OBJECT (job), "buffer");
-}
-
-/**
- * gtk_source_print_job_get_buffer:
- * @job: a #GtkSourcePrintJob.
- *
- * Gets the #GtkTextBuffer the print job would print. The returned
- * object reference (if non %NULL) is owned by the job object and
- * should not be unreferenced.
- *
- * Return value: the #GtkTextBuffer to print.
- **/
-GtkTextBuffer *
-gtk_source_print_job_get_buffer (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- return job->priv->buffer;
-}
-
-/* --- print job layout and style configuration */
-
-/**
- * gtk_source_print_job_set_tabs_width:
- * @job: a #GtkSourcePrintJob.
- * @tabs_width: the number of equivalent spaces for a tabulation.
- *
- * Sets the width (in equivalent spaces) of tabulations for the
- * printed text. The width in printing units will be calculated as
- * the width of a string containing @tabs_width spaces of the default
- * font. Tabulation stops are set for the full width of printed text.
- **/
-void
-gtk_source_print_job_set_tabs_width (GtkSourcePrintJob *job,
- guint tabs_width)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (tabs_width == job->priv->tabs_width)
- return;
-
- job->priv->tabs_width = tabs_width;
-
- g_object_notify (G_OBJECT (job), "tabs_width");
-}
-
-/**
- * gtk_source_print_job_get_tabs_width:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the configured width (in equivalent spaces) of
- * tabulations. The default value is 8.
- *
- * Return value: the width (in equivalent spaces) of a tabulation.
- **/
-guint
-gtk_source_print_job_get_tabs_width (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), 0);
-
- return job->priv->tabs_width;
-}
-
-/**
- * gtk_source_print_job_set_wrap_mode:
- * @job: a #GtkSourcePrintJob.
- * @wrap: the wrap mode.
- *
- * Sets the wrap mode for lines of text larger than the printable
- * width. See #GtkWrapMode for a definition of the possible values.
- **/
-void
-gtk_source_print_job_set_wrap_mode (GtkSourcePrintJob *job,
- GtkWrapMode wrap)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (wrap == job->priv->wrap_mode)
- return;
-
- job->priv->wrap_mode = wrap;
-
- g_object_notify (G_OBJECT (job), "wrap_mode");
-}
-
-/**
- * gtk_source_print_job_get_wrap_mode:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the wrapping style for text lines wider than the
- * printable width. The default is no wrapping.
- *
- * Return value: the current wrapping mode for the print job.
- **/
-GtkWrapMode
-gtk_source_print_job_get_wrap_mode (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), GTK_WRAP_NONE);
-
- return job->priv->wrap_mode;
-}
-
-/**
- * gtk_source_print_job_set_highlight:
- * @job: a #GtkSourcePrintJob.
- * @highlight: %TRUE if the printed text should be highlighted.
- *
- * Sets whether the printed text will be highlighted according to the
- * buffer rules. Both color and font style are applied.
- **/
-void
-gtk_source_print_job_set_highlight (GtkSourcePrintJob *job,
- gboolean highlight)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- highlight = (highlight != FALSE);
-
- if (highlight == job->priv->highlight)
- return;
-
- job->priv->highlight = highlight;
-
- g_object_notify (G_OBJECT (job), "highlight");
-}
-
-/**
- * gtk_source_print_job_get_highlight:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines if the job is configured to print the text highlighted
- * with colors and font styles. Note that highlighting will happen
- * only if the buffer to print has highlighting activated.
- *
- * Return value: %TRUE if the printed output will be highlighted.
- **/
-gboolean
-gtk_source_print_job_get_highlight (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), FALSE);
-
- return job->priv->highlight;
-}
-
-/**
- * gtk_source_print_job_set_font_desc:
- * @job: a #GtkSourcePrintJob.
- * @desc: the #PangoFontDescription for the default font
- *
- * Sets the default font for the printed text.
- **/
-void
-gtk_source_print_job_set_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (desc != NULL);
- cm_return_if_fail (!job->priv->printing);
-
- desc = pango_font_description_copy (desc);
- if (job->priv->font != NULL)
- pango_font_description_free (job->priv->font);
- job->priv->font = desc;
- g_object_freeze_notify (G_OBJECT (job));
- g_object_notify (G_OBJECT (job), "font");
- g_object_notify (G_OBJECT (job), "font_desc");
- g_object_thaw_notify (G_OBJECT (job));
-}
-
-/**
- * gtk_source_print_job_set_font:
- * @job: a #GtkSourcePrintJob.
- * @font_name: the name of the default font.
- *
- * Sets the default font for the printed text. @font_name should be a
- * <emphasis>full font name</emphasis> GnomePrint can understand
- * (e.g. "Monospace Regular 10.0").
- *
- * Note that @font_name is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_set_font_desc() instead.
- **/
-void
-gtk_source_print_job_set_font (GtkSourcePrintJob *job,
- const gchar *font_name)
-{
- PangoFontDescription *desc;
-
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (font_name != NULL);
- cm_return_if_fail (!job->priv->printing);
-
- desc = font_description_from_gnome_font_name (font_name);
- if (desc)
- {
- gtk_source_print_job_set_font_desc (job, desc);
- pango_font_description_free (desc);
- }
-}
-
-/**
- * gtk_source_print_job_get_font_desc:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the default font to be used for the printed text. The
- * returned string is of the form "Fontfamily Style Size",
- * for example "Monospace Regular 10.0". The returned value
- * should be freed when no longer needed.
- *
- * Return value: the current text font description. This value is
- * owned by the job and must not be modified or freed.
- **/
-PangoFontDescription *
-gtk_source_print_job_get_font_desc (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- ensure_print_config (job);
-
- return job->priv->font;
-}
-
-/**
- * gtk_source_print_job_get_font:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the default font to be used for the printed text. The
- * returned string is of the form "Fontfamily Style Size",
- * for example "Monospace Regular 10.0". The returned value
- * should be freed when no longer needed.
- *
- * Note that the result is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_get_font_desc() instead.
- *
- * Return value: a newly allocated string with the name of the current
- * text font.
- **/
-gchar *
-gtk_source_print_job_get_font (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- ensure_print_config (job);
-
- return font_description_to_gnome_font_name (job->priv->font);
-}
-
-/**
- * gtk_source_print_job_setup_from_view:
- * @job: a #GtkSourcePrintJob.
- * @view: a #GtkSourceView to get configuration from.
- *
- * Convenience function to set several configuration options at once,
- * so that the printed output matches @view. The options set are
- * buffer (if not set already), tabs width, highlighting, wrap mode
- * and default font.
- **/
-void
-gtk_source_print_job_setup_from_view (GtkSourcePrintJob *job,
- GtkTextView *view)
-{
- GtkTextBuffer *buffer = NULL;
- PangoContext *pango_context;
-
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- buffer = gtk_text_view_get_buffer (view);
-
- if (job->priv->buffer == NULL && buffer != NULL)
- gtk_source_print_job_set_buffer (job, buffer);
-
- /* gtk_source_print_job_set_tabs_width (job, gtk_source_view_get_tabs_width (view)); */
- gtk_source_print_job_set_highlight (job, TRUE);
- gtk_source_print_job_set_wrap_mode (job, gtk_text_view_get_wrap_mode (view));
-
- pango_context = gtk_widget_get_pango_context (GTK_WIDGET (view));
- gtk_source_print_job_set_font_desc (job,
- pango_context_get_font_description (pango_context));
-}
-
-/**
- * gtk_source_print_job_set_numbers_font_desc:
- * @job: a #GtkSourcePrintJob.
- * @desc: the #PangoFontDescription for the font for line numbers, or %NULL
- *
- * Sets the font for printing line numbers on the left margin. If
- * NULL is supplied, the default font (i.e. the one being used for the
- * text) will be used instead.
- **/
-void
-gtk_source_print_job_set_numbers_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (desc)
- desc = pango_font_description_copy (desc);
- if (job->priv->numbers_font != NULL)
- pango_font_description_free (job->priv->numbers_font);
- job->priv->numbers_font = desc;
- g_object_freeze_notify (G_OBJECT (job));
- g_object_notify (G_OBJECT (job), "numbers_font");
- g_object_notify (G_OBJECT (job), "numbers_font_desc");
- g_object_thaw_notify (G_OBJECT (job));
-}
-
-/**
- * gtk_source_print_job_set_numbers_font:
- * @job: a #GtkSourcePrintJob.
- * @font_name: the full name of the font for line numbers, or %NULL.
- *
- * Sets the font for printing line numbers on the left margin. If
- * %NULL is supplied, the default font (i.e. the one being used for the
- * text) will be used instead.
- *
- * Note that @font_name is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_set_numbers_font_desc() instead.
- **/
-void
-gtk_source_print_job_set_numbers_font (GtkSourcePrintJob *job,
- const gchar *font_name)
-{
- PangoFontDescription *desc;
-
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (font_name != NULL)
- {
- desc = font_description_from_gnome_font_name (font_name);
- if (desc)
- {
- gtk_source_print_job_set_numbers_font_desc (job, desc);
- pango_font_description_free (desc);
- }
- }
- else
- gtk_source_print_job_set_numbers_font (job, NULL);
-}
-
-/**
- * gtk_source_print_job_get_numbers_font_desc:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the font to be used for the line numbers. This function
- * might return %NULL if a specific font for numbers has not been set.
- *
- * Return value: the line numbers font description or %NULL. This value is
- * owned by the job and must not be modified or freed.
- **/
-PangoFontDescription *
-gtk_source_print_job_get_numbers_font_desc (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- return job->priv->numbers_font;
-}
-
-/**
- * gtk_source_print_job_get_numbers_font:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the font to be used for the line numbers. The returned
- * string is of the form "Fontfamily Style Size", for
- * example "Monospace Regular 10.0". The returned value
- * should be freed when no longer needed. This function might return
- * %NULL if a specific font for numbers has not been set.
- *
- * Note that the result is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_get_numbers_font_desc() instead.
- *
- * Return value: a newly allocated string with the name of the current
- * line numbers font, or %NULL.
- **/
-gchar *
-gtk_source_print_job_get_numbers_font (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- if (job->priv->numbers_font != NULL)
- return font_description_to_gnome_font_name (job->priv->numbers_font);
- else
- return NULL;
-}
-
-/**
- * gtk_source_print_job_set_print_numbers:
- * @job: a #GtkSourcePrintJob.
- * @interval: interval for printed line numbers.
- *
- * Sets the interval for printed line numbers. If @interval is 0 no
- * numbers will be printed. If greater than 0, a number will be
- * printed every @interval lines (i.e. 1 will print all line numbers).
- **/
-void
-gtk_source_print_job_set_print_numbers (GtkSourcePrintJob *job,
- guint interval)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (interval == job->priv->print_numbers)
- return;
-
- job->priv->print_numbers = interval;
-
- g_object_notify (G_OBJECT (job), "print_numbers");
-}
-
-/**
- * gtk_source_print_job_get_print_numbers:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the interval used for line number printing. If the
- * value is 0, no line numbers will be printed. The default value is
- * 1 (i.e. numbers printed in all lines).
- *
- * Return value: the interval of printed line numbers.
- **/
-guint
-gtk_source_print_job_get_print_numbers (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), 0);
-
- return job->priv->print_numbers;
-}
-
-/**
- * gtk_source_print_job_set_text_margins:
- * @job: a #GtkSourcePrintJob.
- * @top: the top user margin.
- * @bottom: the bottom user margin.
- * @left: the left user margin.
- * @right: the right user margin.
- *
- * Sets the four user margins for the print job. These margins are in
- * addition to the document margins provided in the #GnomePrintConfig
- * and will not be used for headers, footers or line numbers (those
- * are calculated separatedly). You can print in the space allocated
- * by these margins by connecting to the <link
- * linkend="GtkSourcePrintJob-begin-page">"begin_page"</link> signal. The
- * space is around the printed text, and inside the margins specified
- * in the #GnomePrintConfig.
- *
- * The margin numbers are given in device units. If any of the given
- * values is less than 0, that particular margin is not altered by
- * this function.
- **/
-void
-gtk_source_print_job_set_text_margins (GtkSourcePrintJob *job,
- gdouble top,
- gdouble bottom,
- gdouble left,
- gdouble right)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (top >= 0)
- job->priv->margin_top = top;
- if (bottom >= 0)
- job->priv->margin_bottom = bottom;
- if (left >= 0)
- job->priv->margin_left = left;
- if (right >= 0)
- job->priv->margin_right = right;
-}
-
-/**
- * gtk_source_print_job_get_text_margins:
- * @job: a #GtkSourcePrintJob.
- * @top: a pointer to a #gdouble to return the top margin.
- * @bottom: a pointer to a #gdouble to return the bottom margin.
- * @left: a pointer to a #gdouble to return the left margin.
- * @right: a pointer to a #gdouble to return the right margin.
- *
- * Determines the user set margins for the job. This function
- * retrieves the values previously set by
- * gtk_source_print_job_set_text_margins(). The default for all four
- * margins is 0. Any of the pointers can be %NULL if you want to
- * ignore that value.
- **/
-void
-gtk_source_print_job_get_text_margins (GtkSourcePrintJob *job,
- gdouble *top,
- gdouble *bottom,
- gdouble *left,
- gdouble *right)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
-
- if (top != NULL)
- *top = job->priv->margin_top;
- if (bottom != NULL)
- *bottom = job->priv->margin_bottom;
- if (left != NULL)
- *left = job->priv->margin_left;
- if (right != NULL)
- *right = job->priv->margin_right;
-}
-
-/* --- printing operations */
-
-static gboolean
-gtk_source_print_job_prepare (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end)
-{
- PROFILE (GTimer *timer);
-
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), FALSE);
- cm_return_val_if_fail (!job->priv->printing, FALSE);
- cm_return_val_if_fail (job->priv->buffer != NULL, FALSE);
- cm_return_val_if_fail (start != NULL && end != NULL, FALSE);
-
- /* make sure we have a sane configuration to start printing */
- ensure_print_config (job);
-
- PROFILE (timer = g_timer_new ());
-
- /* get the text to print */
- if (!get_text_to_print (job, start, end))
- return FALSE;
-
- PROFILE (g_message ("get_text_to_print: %.2f", g_timer_elapsed (timer, NULL)));
-
- if (!setup_pango_context (job))
- return FALSE;
-
- /* check margins */
- if (!update_page_size_and_margins (job))
- return FALSE;
-
- /* split the document in pages */
- if (!paginate_text (job))
- return FALSE;
-
- PROFILE ({
- g_message ("paginate_text: %.2f", g_timer_elapsed (timer, NULL));
- g_timer_destroy (timer);
- });
-
- return TRUE;
-}
-
-/**
- * gtk_source_print_job_print:
- * @job: a configured #GtkSourcePrintJob.
- *
- * Produces a #GnomePrintJob with the printed document. The whole
- * contents of the configured #GtkTextBuffer are printed. The
- * returned job is already closed and ready to be previewed (using
- * gnome_print_job_preview_new()) or printed directly. The caller of
- * this function owns a reference to the returned object, so @job can
- * be destroyed and the output will still be valid, or the document
- * can be printed again with different settings.
- *
- * Return value: a closed #GnomePrintJob with the printed document, or
- * %NULL if printing could not be completed.
- **/
-GnomePrintJob *
-gtk_source_print_job_print (GtkSourcePrintJob *job)
-{
- GtkTextIter start, end;
-
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
- cm_return_val_if_fail (!job->priv->printing, NULL);
- cm_return_val_if_fail (job->priv->buffer != NULL, NULL);
-
- gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (job->priv->buffer), &start, &end);
-
- return gtk_source_print_job_print_range (job, &start, &end);
-}
-
-/**
- * gtk_source_print_job_print_range:
- * @job: a configured #GtkSourcePrintJob.
- * @start: the start of the region of text to print.
- * @end: the end of the region of text to print.
- *
- * Similar to gtk_source_print_job_print(), except you can specify a
- * range of text to print. The passed #GtkTextIter values might be
- * out of order.
- *
- * Return value: a closed #GnomePrintJob with the text from @start to
- * @end printed, or %NULL if @job could not print.
- **/
-GnomePrintJob *
-gtk_source_print_job_print_range (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
- cm_return_val_if_fail (!job->priv->printing, NULL);
- cm_return_val_if_fail (job->priv->buffer != NULL, NULL);
- cm_return_val_if_fail (start != NULL && end != NULL, NULL);
- cm_return_val_if_fail (gtk_text_iter_get_buffer (start) ==
- GTK_TEXT_BUFFER (job->priv->buffer) &&
- gtk_text_iter_get_buffer (end) ==
- GTK_TEXT_BUFFER (job->priv->buffer), NULL);
-
- if (!gtk_source_print_job_prepare (job, start, end))
- return NULL;
-
- /* real work starts here */
- setup_for_print (job);
-
- job->priv->printing = TRUE;
- print_job (job);
- job->priv->printing = FALSE;
-
- g_object_ref (job->priv->print_job);
- return job->priv->print_job;
-}
-
-/* --- asynchronous printing */
-
-/**
- * gtk_source_print_job_print_range_async:
- * @job: a configured #GtkSourcePrintJob.
- * @start: the start of the region of text to print.
- * @end: the end of the region of text to print.
- *
- * Starts to print @job asynchronously. This function will ready the
- * @job for printing and install an idle handler that will render one
- * page at a time.
- *
- * This function will not return immediatly, as only page rendering is
- * done asynchronously. Text retrieval and paginating happens within
- * this function. Also, if highlighting is enabled, the whole buffer
- * needs to be highlighted first.
- *
- * To get notification when the job has finished, you must connect to
- * the <link
- * linkend="GtkSourcePrintJob-finished">"finished"</link>
- * signal. After this signal is emitted you can retrieve the
- * resulting #GnomePrintJob with gtk_source_print_job_get_print_job().
- * You may cancel the job with gtk_source_print_job_cancel().
- *
- * Return value: %TRUE if the print started.
- **/
-gboolean
-gtk_source_print_job_print_range_async (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end)
-{
- GSource *idle_source;
-
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), FALSE);
- cm_return_val_if_fail (!job->priv->printing, FALSE);
- cm_return_val_if_fail (job->priv->buffer != NULL, FALSE);
- cm_return_val_if_fail (start != NULL && end != NULL, FALSE);
- cm_return_val_if_fail (gtk_text_iter_get_buffer (start) ==
- GTK_TEXT_BUFFER (job->priv->buffer) &&
- gtk_text_iter_get_buffer (end) ==
- GTK_TEXT_BUFFER (job->priv->buffer), FALSE);
-
- if (!gtk_source_print_job_prepare (job, start, end))
- return FALSE;
-
- /* real work starts here */
- setup_for_print (job);
- if (job->priv->current_paragraph == NULL)
- return FALSE;
-
- /* setup the idle handler to print each page at a time */
- idle_source = g_idle_source_new ();
- g_source_set_priority (idle_source, GTK_SOURCE_PRINT_JOB_PRIORITY);
- g_source_set_closure (idle_source,
- g_cclosure_new_object ((GCallback) idle_printing_handler,
- G_OBJECT (job)));
- job->priv->idle_printing_tag = g_source_attach (idle_source, NULL);
- g_source_unref (idle_source);
-
- job->priv->printing = TRUE;
-
- return TRUE;
-}
-
-/**
- * gtk_source_print_job_cancel:
- * @job: a #GtkSourcePrintJob.
- *
- * Cancels an asynchronous printing operation. This will remove any
- * pending print idle handler and unref the current #GnomePrintJob.
- *
- * Note that if you got a reference to the job's #GnomePrintJob (using
- * gtk_source_print_job_get_print_job()) it will not be destroyed
- * (since you hold a reference to it), but it will not be closed
- * either. If you wish to show or print the partially printed
- * document you need to close it yourself.
- *
- * This function has no effect when called from a non-asynchronous
- * print operation.
- **/
-void
-gtk_source_print_job_cancel (GtkSourcePrintJob *job)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (job->priv->printing);
-
- if (job->priv->idle_printing_tag > 0)
- {
- g_source_remove (job->priv->idle_printing_tag);
- job->priv->current_paragraph = NULL;
- job->priv->idle_printing_tag = 0;
- job->priv->printing = FALSE;
- g_object_unref (job->priv->print_job);
- g_object_unref (job->priv->print_ctxt);
- job->priv->print_job = NULL;
- job->priv->print_ctxt = NULL;
- }
-}
-
-/**
- * gtk_source_print_job_get_print_job:
- * @job: a #GtkSourcePrintJob.
- *
- * Gets a reference to the #GnomePrintJob which the @job is printing
- * or has recently finished printing. You need to unref the returned
- * object.
- *
- * You may call this function in the middle of an asynchronous
- * printing operation, but the returned #GnomePrintJob will not be
- * closed until the last page is printed and the <link
- * linkend="GtkSourcePrintJob-finished">"finished"</link>
- * signal is emitted.
- *
- * Return value: a new reference to the @job's #GnomePrintJob, or
- * %NULL.
- **/
-GnomePrintJob *
-gtk_source_print_job_get_print_job (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- if (job->priv->print_job)
- g_object_ref (job->priv->print_job);
-
- return job->priv->print_job;
-}
-
-/* --- information for asynchronous ops and headers and footers callback */
-
-/**
- * gtk_source_print_job_get_page:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the currently printing page number. This function is
- * only valid while printing (either synchronously or asynchronously).
- *
- * Return value: the current page number.
- **/
-guint
-gtk_source_print_job_get_page (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), 0);
- cm_return_val_if_fail (job->priv->printing, 0);
-
- return job->priv->page;
-}
-
-/**
- * gtk_source_print_job_get_page_count:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the total number of pages the job will print. The
- * returned value is only meaninful after pagination has finished. In
- * practice, for synchronous printing this means when <link
- * linkend="GtkSourcePrintJob-begin-page">"begin_page"</link>
- * is emitted, or after gtk_source_print_job_print_range_async() has
- * returned.
- *
- * Return value: the number of pages of the printed job.
- **/
-guint
-gtk_source_print_job_get_page_count (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), 0);
-
- return job->priv->page_count;
-}
-
-/**
- * gtk_source_print_job_get_print_context:
- * @job: a printing #GtkSourcePrintJob.
- *
- * Determines the #GnomePrintContext of the current job. This
- * function is only valid while printing. Normally you would use this
- * function to print in the margins set by
- * gtk_source_print_job_set_margins() in a handler for the <link
- * linkend="GtkSourcePrintJob-begin-page">"begin_page"</link>
- * signal.
- *
- * Return value: the current #GnomePrintContext. The returned object
- * is owned by @job.
- **/
-GnomePrintContext *
-gtk_source_print_job_get_print_context (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
- cm_return_val_if_fail (job->priv->printing, NULL);
-
- return job->priv->print_ctxt;
-}
-
-/* ---- Header and footer (default implementation) */
-
-/* Most of this code taken from GLib's g_date_strftime() in gdate.c
- * GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald */
-
-static gchar *
-strdup_strftime (const gchar *format, const struct tm *tm)
-{
- gsize locale_format_len = 0;
- gchar *locale_format;
- gsize tmplen;
- gchar *tmpbuf;
- gsize tmpbufsize;
- gchar *convbuf;
- gsize convlen = 0;
- GError *error = NULL;
-
- cm_return_val_if_fail (format != NULL, NULL);
- cm_return_val_if_fail (tm != NULL, NULL);
-
- locale_format = g_locale_from_utf8 (format, -1, NULL, &locale_format_len, &error);
-
- if (error)
- {
- g_warning (G_STRLOC "Error converting format to locale encoding: %s",
- error->message);
- g_error_free (error);
-
- return NULL;
- }
-
- tmpbufsize = MAX (128, locale_format_len * 2);
- while (TRUE)
- {
- tmpbuf = g_malloc (tmpbufsize);
-
- /* Set the first byte to something other than '\0', to be able to
- * recognize whether strftime actually failed or just returned "".
- */
- tmpbuf[0] = '\1';
- tmplen = strftime (tmpbuf, tmpbufsize, locale_format, tm);
-
- if (tmplen == 0 && tmpbuf[0] != '\0')
- {
- g_free (tmpbuf);
- tmpbufsize *= 2;
-
- if (tmpbufsize > 65536)
- {
- g_warning (G_STRLOC "Maximum buffer size for strdup_strftime "
- "exceeded: giving up");
- g_free (locale_format);
- return NULL;
- }
- }
- else
- break;
- }
- g_free (locale_format);
-
- convbuf = g_locale_to_utf8 (tmpbuf, tmplen, NULL, &convlen, &error);
- g_free (tmpbuf);
-
- if (error)
- {
- g_warning (G_STRLOC "Error converting results of strftime to UTF-8: %s",
- error->message);
- g_error_free (error);
-
- return NULL;
- }
-
- return convbuf;
-}
-
-static gchar *
-evaluate_format_string (GtkSourcePrintJob *job, const gchar *format)
-{
- GString *eval;
- gchar *eval_str, *retval;
- const struct tm *tm;
- time_t now;
- gunichar ch;
- struct tm lt;
-
- /* get time */
- time (&now);
- tm = localtime_r(&now, <);
-
- /* analyze format string and replace the codes we know */
- eval = g_string_new_len (NULL, strlen (format));
- ch = g_utf8_get_char (format);
- while (ch != 0)
- {
- if (ch == '%')
- {
- format = g_utf8_next_char (format);
- ch = g_utf8_get_char (format);
- if (ch == 'N')
- g_string_append_printf (eval, "%d", job->priv->page);
- else if (ch == 'Q')
- g_string_append_printf (eval, "%d", job->priv->page_count);
- else
- {
- g_string_append_c (eval, '%');
- g_string_append_unichar (eval, ch);
- }
- }
- else
- g_string_append_unichar (eval, ch);
-
- format = g_utf8_next_char (format);
- ch = g_utf8_get_char (format);
- }
-
- eval_str = g_string_free (eval, FALSE);
- retval = strdup_strftime (eval_str, tm);
- g_free (eval_str);
-
- return retval;
-}
-
-static void
-print_header_footer_string (GtkSourcePrintJob *job,
- const gchar *format,
- gdouble x_align,
- gdouble x,
- gdouble y)
-{
- PangoLayout *layout;
- gchar *text;
- gdouble width;
- gdouble xx;
-
- width = job->priv->text_width + job->priv->numbers_width;
-
- text = evaluate_format_string (job, format);
- if (text != NULL)
- {
- layout = pango_layout_new (job->priv->pango_context);
- pango_layout_set_font_description (layout, job->priv->header_footer_font);
- pango_layout_set_text (layout, text, -1);
-
- xx = x + x_align * (width - get_layout_width (layout));
- gnome_print_moveto (job->priv->print_ctxt, xx, y);
- show_first_layout_line (job->priv->print_ctxt, layout);
-
- g_free (text);
- g_object_unref (layout);
- }
-}
-
-static void
-default_print_header (GtkSourcePrintJob *job,
- gdouble x,
- gdouble y)
-{
- gdouble width;
- gdouble yy;
- gdouble ascent, descent;
-
- width = job->priv->text_width + job->priv->numbers_width;
-
- get_font_ascent_descent (job, job->priv->header_footer_font, &ascent, &descent);
-
- yy = y - ascent;
-
- /* left format */
- if (job->priv->header_format_left != NULL)
- print_header_footer_string (job, job->priv->header_format_left, 0.0, x, yy);
-
- /* right format */
- if (job->priv->header_format_right != NULL)
- print_header_footer_string (job, job->priv->header_format_right, 1.0, x, yy);
-
- /* center format */
- if (job->priv->header_format_center != NULL)
- print_header_footer_string (job, job->priv->header_format_center, 0.5, x, yy);
-
- /* separator */
- if (job->priv->header_separator)
- {
- yy = y - (SEPARATOR_SPACING * (ascent + descent));
- gnome_print_setlinewidth (job->priv->print_ctxt, SEPARATOR_LINE_WIDTH);
- gnome_print_moveto (job->priv->print_ctxt, x, yy);
- gnome_print_lineto (job->priv->print_ctxt, x + width, yy);
- gnome_print_stroke (job->priv->print_ctxt);
- }
-}
-
-static void
-default_print_footer (GtkSourcePrintJob *job,
- gdouble x,
- gdouble y)
-{
- gdouble width;
- gdouble yy;
- gdouble ascent, descent;
-
- width = job->priv->text_width + job->priv->numbers_width;
-
- get_font_ascent_descent (job, job->priv->header_footer_font, &ascent, &descent);
-
- yy = y - job->priv->footer_height + descent;
-
- /* left format */
- if (job->priv->footer_format_left != NULL)
- print_header_footer_string (job, job->priv->footer_format_left, 0.0, x, yy);
-
- /* right format */
- if (job->priv->footer_format_right != NULL)
- print_header_footer_string (job, job->priv->footer_format_right, 1.0, x, yy);
-
- /* center format */
- if (job->priv->footer_format_center != NULL)
- print_header_footer_string (job, job->priv->footer_format_center, 0.5, x, yy);
-
- /* separator */
- if (job->priv->footer_separator)
- {
- yy = y - job->priv->footer_height +
- (SEPARATOR_SPACING * (ascent + descent));
- gnome_print_setlinewidth (job->priv->print_ctxt, SEPARATOR_LINE_WIDTH);
- gnome_print_moveto (job->priv->print_ctxt, x, yy);
- gnome_print_lineto (job->priv->print_ctxt, x + width, yy);
- gnome_print_stroke (job->priv->print_ctxt);
- }
-}
-
-/**
- * gtk_source_print_job_set_print_header:
- * @job: a #GtkSourcePrintJob.
- * @setting: %TRUE if you want the header to be printed.
- *
- * Sets whether you want to print a header in each page. The default
- * header consists of three pieces of text and an optional line
- * separator, configurable with
- * gtk_source_print_job_set_header_format().
- *
- * Note that by default the header format is unspecified, and if it's
- * empty it will not be printed, regardless of this setting.
- **/
-void
-gtk_source_print_job_set_print_header (GtkSourcePrintJob *job,
- gboolean setting)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- setting = (setting != FALSE);
-
- if (setting == job->priv->print_header)
- return;
-
- job->priv->print_header = setting;
-
- g_object_notify (G_OBJECT (job), "print_header");
-}
-
-/**
- * gtk_source_print_job_get_print_header:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines if a header is set to be printed for each page. A
- * header will be printed if this function returns %TRUE
- * <emphasis>and</emphasis> some format strings have been specified
- * with gtk_source_print_job_set_header_format().
- *
- * Return value: %TRUE if the header is set to be printed.
- **/
-gboolean
-gtk_source_print_job_get_print_header (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), FALSE);
-
- return job->priv->print_header;
-}
-
-/**
- * gtk_source_print_job_set_print_footer:
- * @job: a #GtkSourcePrintJob.
- * @setting: %TRUE if you want the footer to be printed.
- *
- * Sets whether you want to print a footer in each page. The default
- * footer consists of three pieces of text and an optional line
- * separator, configurable with
- * gtk_source_print_job_set_footer_format().
- *
- * Note that by default the footer format is unspecified, and if it's
- * empty it will not be printed, regardless of this setting.
- **/
-void
-gtk_source_print_job_set_print_footer (GtkSourcePrintJob *job,
- gboolean setting)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- setting = (setting != FALSE);
-
- if (setting == job->priv->print_footer)
- return;
-
- job->priv->print_footer = setting;
-
- g_object_notify (G_OBJECT (job), "print_footer");
-}
-
-/**
- * gtk_source_print_job_get_print_footer:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines if a footer is set to be printed for each page. A
- * footer will be printed if this function returns %TRUE
- * <emphasis>and</emphasis> some format strings have been specified
- * with gtk_source_print_job_set_footer_format().
- *
- * Return value: %TRUE if the footer is set to be printed.
- **/
-gboolean
-gtk_source_print_job_get_print_footer (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), FALSE);
-
- return job->priv->print_footer;
-}
-
-/**
- * gtk_source_print_job_set_header_footer_font_desc:
- * @job: a #GtkSourcePrintJob.
- * @desc: the #PangoFontDescription for the font to be used in headers and footers, or %NULL.
- *
- * Sets the font for printing headers and footers. If %NULL is
- * supplied, the default font (i.e. the one being used for the text)
- * will be used instead.
- **/
-void
-gtk_source_print_job_set_header_footer_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (desc)
- desc = pango_font_description_copy (desc);
- if (job->priv->header_footer_font != NULL)
- pango_font_description_free (job->priv->header_footer_font);
- job->priv->header_footer_font = desc;
- g_object_freeze_notify (G_OBJECT (job));
- g_object_notify (G_OBJECT (job), "header_footer_font");
- g_object_notify (G_OBJECT (job), "header_footer_font_desc");
- g_object_thaw_notify (G_OBJECT (job));
-}
-
-/**
- * gtk_source_print_job_set_header_footer_font:
- * @job: a #GtkSourcePrintJob.
- * @font_name: the full name of the font to be used in headers and footers, or %NULL.
- *
- * Sets the font for printing headers and footers. If %NULL is
- * supplied, the default font (i.e. the one being used for the text)
- * will be used instead.
- *
- * Note that @font_name is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_set_header_footer_font_desc() instead.
- **/
-void
-gtk_source_print_job_set_header_footer_font (GtkSourcePrintJob *job,
- const gchar *font_name)
-{
- PangoFontDescription *desc;
-
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- if (font_name != NULL)
- {
- desc = font_description_from_gnome_font_name (font_name);
- if (desc)
- {
- gtk_source_print_job_set_header_footer_font_desc (job, desc);
- pango_font_description_free (desc);
- }
- }
- else
- gtk_source_print_job_set_header_footer_font_desc (job, NULL);
-}
-
-/**
- * gtk_source_print_job_get_header_footer_font_desc:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the font to be used for the header and footer. This function
- * might return %NULL if a specific font has not been set.
- *
- * Return value: the header and footer font description or %NULL. This value is
- * owned by the job and must not be modified or freed.
- **/
-PangoFontDescription *
-gtk_source_print_job_get_header_footer_font_desc (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- return job->priv->header_footer_font;
-}
-
-/**
- * gtk_source_print_job_get_header_footer_font:
- * @job: a #GtkSourcePrintJob.
- *
- * Determines the font to be used for the header and footer. The
- * returned string is of the form "Fontfamily Style Size",
- * for example "Monospace Regular 10.0". The returned value
- * should be freed when no longer needed. This function might return
- * %NULL if a specific font has not been set.
- *
- * Note that the result is a #GnomeFont name not a Pango font
- * description string. This function is deprecated since #GnomeFont is
- * no longer used when implementing printing for GtkSourceView; you
- * should use gtk_source_print_job_get_header_footer_font_desc() instead.
- *
- * Return value: a newly allocated string with the name of the current
- * header and footer font, or %NULL.
- **/
-gchar *
-gtk_source_print_job_get_header_footer_font (GtkSourcePrintJob *job)
-{
- cm_return_val_if_fail (GTK_IS_SOURCE_PRINT_JOB (job), NULL);
-
- if (job->priv->header_footer_font != NULL)
- return font_description_to_gnome_font_name (job->priv->header_footer_font);
- else
- return NULL;
-}
-
-/**
- * gtk_source_print_job_set_header_format:
- * @job: a #GtkSourcePrintJob.
- * @left: a format string to print on the left of the header.
- * @center: a format string to print on the center of the header.
- * @right: a format string to print on the right of the header.
- * @separator: %TRUE if you want a separator line to be printed.
- *
- * Sets strftime like header format strings, to be printed on the
- * left, center and right of the top of each page. The strings may
- * include strftime(3) codes which will be expanded at print time.
- * All strftime() codes are accepted, with the addition of %N for the
- * page number and %Q for the page count.
- *
- * @separator specifies if a solid line should be drawn to separate
- * the header from the document text.
- *
- * If %NULL is given for any of the three arguments, that particular
- * string will not be printed. For the header to be printed, in
- * addition to specifying format strings, you need to enable header
- * printing with gtk_source_print_job_set_print_header().
- **/
-void
-gtk_source_print_job_set_header_format (GtkSourcePrintJob *job,
- const gchar *left,
- const gchar *center,
- const gchar *right,
- gboolean separator)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- /* FIXME: validate given strings? */
- g_free (job->priv->header_format_left);
- g_free (job->priv->header_format_center);
- g_free (job->priv->header_format_right);
- job->priv->header_format_left = g_strdup (left);
- job->priv->header_format_center = g_strdup (center);
- job->priv->header_format_right = g_strdup (right);
- job->priv->header_separator = separator;
-}
-
-/**
- * gtk_source_print_job_set_footer_format:
- * @job: a #GtkSourcePrintJob.
- * @left: a format string to print on the left of the footer.
- * @center: a format string to print on the center of the footer.
- * @right: a format string to print on the right of the footer.
- * @separator: %TRUE if you want a separator line to be printed.
- *
- * Like gtk_source_print_job_set_header_format(), but for the footer.
- **/
-void
-gtk_source_print_job_set_footer_format (GtkSourcePrintJob *job,
- const gchar *left,
- const gchar *center,
- const gchar *right,
- gboolean separator)
-{
- cm_return_if_fail (GTK_IS_SOURCE_PRINT_JOB (job));
- cm_return_if_fail (!job->priv->printing);
-
- /* FIXME: validate given strings? */
- g_free (job->priv->footer_format_left);
- g_free (job->priv->footer_format_center);
- g_free (job->priv->footer_format_right);
- job->priv->footer_format_left = g_strdup (left);
- job->priv->footer_format_center = g_strdup (center);
- job->priv->footer_format_right = g_strdup (right);
- job->priv->footer_separator = separator;
-}
-#endif
diff --git a/src/gtk/gtksourceprintjob.h b/src/gtk/gtksourceprintjob.h
@@ -1,168 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- */
-/*
- * gtksourceprintjob.h
- * This file is part of GtkSourceView
- *
- * Copyright (C) 2003 Gustavo Giráldez
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __GTK_SOURCE_PRINT_JOB_H__
-#define __GTK_SOURCE_PRINT_JOB_H__
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef USE_GNOMEPRINT
-
-#include <libgnomeprint/gnome-print-config.h>
-#include <libgnomeprint/gnome-print-job.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_SOURCE_PRINT_JOB (gtk_source_print_job_get_type ())
-#define GTK_SOURCE_PRINT_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJob))
-#define GTK_SOURCE_PRINT_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
-#define GTK_IS_SOURCE_PRINT_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SOURCE_PRINT_JOB))
-#define GTK_IS_SOURCE_PRINT_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SOURCE_PRINT_JOB))
-#define GTK_SOURCE_PRINT_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
-
-typedef struct _GtkSourcePrintJob GtkSourcePrintJob;
-typedef struct _GtkSourcePrintJobClass GtkSourcePrintJobClass;
-typedef struct _GtkSourcePrintJobPrivate GtkSourcePrintJobPrivate;
-
-struct _GtkSourcePrintJob
-{
- GObject parent_instance;
-
- GtkSourcePrintJobPrivate *priv;
-};
-
-struct _GtkSourcePrintJobClass
-{
- GObjectClass parent_class;
-
- void (* begin_page) (GtkSourcePrintJob *job);
- void (* finished) (GtkSourcePrintJob *job);
-};
-
-/* we want the idle handler to run before the view validation, but do
- * not interfere with ui updates */
-#define GTK_SOURCE_PRINT_JOB_PRIORITY ((GDK_PRIORITY_REDRAW + GTK_TEXT_VIEW_PRIORITY_VALIDATE) / 2)
-
-GType gtk_source_print_job_get_type (void) G_GNUC_CONST;
-
-/* constructor functions */
-GtkSourcePrintJob *gtk_source_print_job_new (GnomePrintConfig *config);
-GtkSourcePrintJob *gtk_source_print_job_new_with_buffer (GnomePrintConfig *config,
- GtkTextBuffer *buffer);
-/* print job basic configuration */
-void gtk_source_print_job_set_config (GtkSourcePrintJob *job,
- GnomePrintConfig *config);
-GnomePrintConfig *gtk_source_print_job_get_config (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_buffer (GtkSourcePrintJob *job,
- GtkTextBuffer *buffer);
-GtkTextBuffer *gtk_source_print_job_get_buffer (GtkSourcePrintJob *job);
-
-/* print job layout and style configuration */
-//void gtk_source_print_job_setup_from_view (GtkSourcePrintJob *job,
-// GtkSourceView *view);
-void gtk_source_print_job_set_tabs_width (GtkSourcePrintJob *job,
- guint tabs_width);
-guint gtk_source_print_job_get_tabs_width (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_wrap_mode (GtkSourcePrintJob *job,
- GtkWrapMode wrap);
-GtkWrapMode gtk_source_print_job_get_wrap_mode (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_highlight (GtkSourcePrintJob *job,
- gboolean highlight);
-gboolean gtk_source_print_job_get_highlight (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_font (GtkSourcePrintJob *job,
- const gchar *font_name);
-gchar *gtk_source_print_job_get_font (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_numbers_font (GtkSourcePrintJob *job,
- const gchar *font_name);
-gchar *gtk_source_print_job_get_numbers_font (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_print_numbers (GtkSourcePrintJob *job,
- guint interval);
-guint gtk_source_print_job_get_print_numbers (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_text_margins (GtkSourcePrintJob *job,
- gdouble top,
- gdouble bottom,
- gdouble left,
- gdouble right);
-void gtk_source_print_job_get_text_margins (GtkSourcePrintJob *job,
- gdouble *top,
- gdouble *bottom,
- gdouble *left,
- gdouble *right);
-
-/* New non-deprecated font-setting API */
-void gtk_source_print_job_set_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc);
-PangoFontDescription *gtk_source_print_job_get_font_desc (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_numbers_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc);
-PangoFontDescription *gtk_source_print_job_get_numbers_font_desc (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_header_footer_font_desc (GtkSourcePrintJob *job,
- PangoFontDescription *desc);
-PangoFontDescription *gtk_source_print_job_get_header_footer_font_desc (GtkSourcePrintJob *job);
-
-/* printing operations */
-GnomePrintJob *gtk_source_print_job_print (GtkSourcePrintJob *job);
-GnomePrintJob *gtk_source_print_job_print_range (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end);
-
-/* asynchronous printing */
-gboolean gtk_source_print_job_print_range_async (GtkSourcePrintJob *job,
- const GtkTextIter *start,
- const GtkTextIter *end);
-void gtk_source_print_job_cancel (GtkSourcePrintJob *job);
-GnomePrintJob *gtk_source_print_job_get_print_job (GtkSourcePrintJob *job);
-
-/* information for asynchronous ops and headers and footers callback */
-guint gtk_source_print_job_get_page (GtkSourcePrintJob *job);
-guint gtk_source_print_job_get_page_count (GtkSourcePrintJob *job);
-GnomePrintContext *gtk_source_print_job_get_print_context (GtkSourcePrintJob *job);
-
-
-/* header and footer */
-void gtk_source_print_job_set_print_header (GtkSourcePrintJob *job,
- gboolean setting);
-gboolean gtk_source_print_job_get_print_header (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_print_footer (GtkSourcePrintJob *job,
- gboolean setting);
-gboolean gtk_source_print_job_get_print_footer (GtkSourcePrintJob *job);
-void gtk_source_print_job_set_header_footer_font (GtkSourcePrintJob *job,
- const gchar *font_name);
-gchar *gtk_source_print_job_get_header_footer_font (GtkSourcePrintJob *job);
-/* format strings are strftime like */
-void gtk_source_print_job_set_header_format (GtkSourcePrintJob *job,
- const gchar *left,
- const gchar *center,
- const gchar *right,
- gboolean separator);
-void gtk_source_print_job_set_footer_format (GtkSourcePrintJob *job,
- const gchar *left,
- const gchar *center,
- const gchar *right,
- gboolean separator);
-
-G_END_DECLS
-
-#endif /* __GTK_SOURCE_PRINT_JOB_H__ */
-#endif
diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c
@@ -620,11 +620,7 @@ void gtkut_window_popup(GtkWidget *window)
gdk_window_move(window->window, new_x, new_y);
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(window), FALSE);
-#if GTK_CHECK_VERSION(2,8,0)
gtk_window_present_with_time(GTK_WINDOW(window), time(NULL));
-#else
- gtk_window_present(GTK_WINDOW(window));
-#endif
}
void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py)
@@ -1291,9 +1287,7 @@ GtkWidget *gtkut_sc_combobox_create(GtkWidget *eventbox, gboolean focus_on_click
if( eventbox != NULL )
gtk_container_add(GTK_CONTAINER(eventbox), combobox);
-#if GTK_CHECK_VERSION(2,6,0)
gtk_combo_box_set_focus_on_click(GTK_COMBO_BOX(combobox), focus_on_click);
-#endif
gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(combobox),
(GtkTreeViewRowSeparatorFunc)_combobox_separator_func, NULL, NULL);
diff --git a/src/gtk/quicksearch.c b/src/gtk/quicksearch.c
@@ -661,11 +661,7 @@ QuickSearch *quicksearch_new()
search_hbox = gtk_hbox_new(FALSE, 5);
-#if GTK_CHECK_VERSION(2, 8, 0)
clear_search = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
-#else
- clear_search = gtk_button_new_with_label(_(" Clear "));
-#endif
gtk_box_pack_start(GTK_BOX(search_hbox), clear_search,
FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(clear_search), "clicked",
@@ -674,11 +670,7 @@ QuickSearch *quicksearch_new()
_("Clear the current search"));
gtk_widget_show(clear_search);
-#if GTK_CHECK_VERSION(2, 8, 0)
search_condition_expression = gtk_button_new_from_stock(GTK_STOCK_EDIT);
-#else
- search_condition_expression = gtk_button_new_with_label(" ... ");
-#endif
gtk_box_pack_start(GTK_BOX(search_hbox), search_condition_expression,
FALSE, FALSE, 0);
g_signal_connect(G_OBJECT (search_condition_expression), "clicked",
@@ -688,11 +680,7 @@ QuickSearch *quicksearch_new()
_("Edit search criteria"));
gtk_widget_show(search_condition_expression);
-#if GTK_CHECK_VERSION(2, 8, 0)
search_description = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- search_description = gtk_button_new_with_label(_(" Extended Symbols... "));
-#endif
gtk_box_pack_start(GTK_BOX(search_hbox), search_description,
FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(search_description), "clicked",
@@ -746,18 +734,11 @@ void quicksearch_relayout(QuickSearch *quicksearch)
case NORMAL_LAYOUT:
case WIDE_LAYOUT:
case WIDE_MSGLIST_LAYOUT:
-#if GTK_CHECK_VERSION(2, 8, 0)
gtk_button_set_label(GTK_BUTTON(quicksearch->search_description), GTK_STOCK_INFO);
gtk_button_set_label(GTK_BUTTON(quicksearch->search_condition_expression), GTK_STOCK_EDIT);
gtk_button_set_label(GTK_BUTTON(quicksearch->clear_search), GTK_STOCK_CLEAR);
-#else
- gtk_button_set_label(GTK_BUTTON(quicksearch->search_description), _(" Extended Symbols... "));
- gtk_button_set_label(GTK_BUTTON(quicksearch->search_condition_expression), " ... ");
- gtk_button_set_label(GTK_BUTTON(quicksearch->clear_search), _(" Clear "));
-#endif
break;
case VERTICAL_LAYOUT:
-#if GTK_CHECK_VERSION(2, 8, 0)
gtk_button_set_label(GTK_BUTTON(quicksearch->search_description), "");
gtk_button_set_label(GTK_BUTTON(quicksearch->search_condition_expression), "");
gtk_button_set_label(GTK_BUTTON(quicksearch->clear_search), "");
@@ -768,11 +749,6 @@ void quicksearch_relayout(QuickSearch *quicksearch)
gtk_image_new_from_stock(GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON));
gtk_button_set_image(GTK_BUTTON(quicksearch->clear_search),
gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON));
-#else
- gtk_button_set_label(GTK_BUTTON(quicksearch->search_description), _("Info"));
- gtk_button_set_label(GTK_BUTTON(quicksearch->search_condition_expression), "...");
- gtk_button_set_label(GTK_BUTTON(quicksearch->clear_search), _("Clear"));
-#endif
break;
}
}
diff --git a/src/main.c b/src/main.c
@@ -904,12 +904,6 @@ static void main_dump_features_list(gboolean show_debug_only)
else
g_print(" libetpan %d.%d\n", LIBETPAN_VERSION_MAJOR, LIBETPAN_VERSION_MINOR);
#endif
-#if USE_GNOMEPRINT
- if (show_debug_only)
- debug_print(" gnomeprint\n");
- else
- g_print(" gnomeprint\n");
-#endif
#if HAVE_LIBSM
if (show_debug_only)
debug_print(" libsm\n");
diff --git a/src/mainwindow.c b/src/mainwindow.c
@@ -147,10 +147,8 @@ static void empty_trash_cb (GtkAction *action,
gpointer data);
static void save_as_cb (GtkAction *action,
gpointer data);
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
static void page_setup_cb (GtkAction *action,
gpointer data);
-#endif
static void print_cb (GtkAction *action,
gpointer data);
static void app_exit_cb (GtkAction *action,
@@ -494,9 +492,7 @@ static GtkActionEntry mainwin_entries[] =
{"File/SaveAs", NULL, N_("_Save as..."), "<control>S", NULL, G_CALLBACK(save_as_cb) },
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
{"File/PageSetup", NULL, N_("Page setup..."), NULL, NULL, G_CALLBACK(page_setup_cb) },
-#endif
{"File/Print", NULL, N_("_Print..."), "<control>P", NULL, G_CALLBACK(print_cb) },
/* {"File/---", NULL, "---" }, */
{"File/SynchroniseFolders", NULL, N_("Synchronise folders"), "<control><shift>S", NULL, G_CALLBACK(sync_cb) },
@@ -1624,9 +1620,7 @@ MainWindow *main_window_create()
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "EmptyTrashes", "File/EmptyTrashes", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator4", "File/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "SaveAs", "File/SaveAs", GTK_UI_MANAGER_MENUITEM)
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "PageSetup", "File/PageSetup", GTK_UI_MANAGER_MENUITEM)
-#endif
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Print", "File/Print", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator5", "File/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "OfflineMode", "File/OfflineMode", GTK_UI_MANAGER_MENUITEM)
@@ -4000,7 +3994,6 @@ static void print_cb(GtkAction *action, gpointer data)
summary_print(mainwin->summaryview);
}
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
static void page_setup_cb(GtkAction *action, gpointer data)
{
MainWindow *mainwin = (MainWindow *)data;
@@ -4010,7 +4003,6 @@ static void page_setup_cb(GtkAction *action, gpointer data)
printing_page_setup(win);
}
-#endif
static void app_exit_cb(GtkAction *action, gpointer data)
{
diff --git a/src/messageview.c b/src/messageview.c
@@ -58,7 +58,6 @@
#include "hooks.h"
#include "filtering.h"
#include "partial_download.h"
-#include "gedit-print.h"
#include "uri_opener.h"
#include "inc.h"
#include "log.h"
@@ -94,10 +93,8 @@ static void partial_recv_unmark_clicked (NoticeView *noticeview,
MsgInfo *msginfo);
static void save_as_cb (GtkAction *action,
gpointer data);
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
static void page_setup_cb (GtkAction *action,
gpointer data);
-#endif
static void print_cb (GtkAction *action,
gpointer data);
static void close_cb (GtkAction *action,
@@ -193,9 +190,7 @@ static GtkActionEntry msgview_entries[] =
/* File menu */
{"File/SaveAs", NULL, N_("_Save as..."), "<control>S", NULL, G_CALLBACK(save_as_cb) },
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
{"File/PageSetup", NULL, N_("Page setup..."), NULL, NULL, G_CALLBACK(page_setup_cb) },
-#endif
{"File/Print", NULL, N_("_Print..."), "<control>P", NULL, G_CALLBACK(print_cb) },
{"File/---", NULL, "---", NULL, NULL, NULL },
{"File/Close", NULL, N_("_Close"), "<control>W", NULL, G_CALLBACK(close_cb) },
@@ -454,9 +449,7 @@ static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window)
/* File menu */
MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/File", "SaveAs", "File/SaveAs", GTK_UI_MANAGER_MENUITEM)
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/File", "PageSetup", "File/PageSetup", GTK_UI_MANAGER_MENUITEM)
-#endif
MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/File", "Print", "File/Print", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/File", "Separator1", "File/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/File", "Close", "File/Close", GTK_UI_MANAGER_MENUITEM)
@@ -2008,12 +2001,9 @@ static void save_as_cb(GtkAction *action, gpointer data)
messageview_save_as(messageview);
}
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gint partnum)
{
-#if !defined(USE_GNOMEPRINT) && GTK_CHECK_VERSION(2,10,0)
MainWindow *mainwin;
-#endif
if (!mimeview
|| !mimeview->textview
|| !mimeview->textview->text)
@@ -2040,15 +2030,11 @@ static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gin
gtk_text_buffer_get_iter_at_offset(buffer, &end, sel_end);
gtk_text_buffer_select_range(buffer, &start, &end);
}
-#if defined(USE_GNOMEPRINT)
- gedit_print(GTK_TEXT_VIEW(mimeview->textview->text));
-#else
/* TODO: Get the real parent window, not the main window */
mainwin = mainwindow_get_mainwindow();
printing_print(GTK_TEXT_VIEW(mimeview->textview->text),
mainwin ? GTK_WINDOW(mainwin->window) : NULL,
sel_start, sel_end);
-#endif
}
}
@@ -2080,51 +2066,26 @@ void messageview_print(MsgInfo *msginfo, gboolean all_headers,
}
messageview_destroy(tmpview);
}
-#endif
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
static void page_setup_cb(GtkAction *action, gpointer data)
{
MessageView *messageview = (MessageView *)data;
printing_page_setup(messageview ?
GTK_WINDOW(messageview->window) : NULL);
}
-#endif
static void print_cb(GtkAction *action, gpointer data)
{
MessageView *messageview = (MessageView *)data;
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- gchar *cmdline = NULL;
- gchar *p;
-#else
gint sel_start = -1, sel_end = -1, partnum = 0;
-#endif
if (!messageview->msginfo) return;
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- cmdline = input_dialog(_("Print"),
- _("Enter the print command-line:\n"
- "('%s' will be replaced with file name)"),
- prefs_common.print_cmd);
- if (!cmdline) return;
- if (!(p = strchr(cmdline, '%')) || *(p + 1) != 's' ||
- strchr(p + 2, '%')) {
- alertpanel_error(_("Print command-line is invalid:\n'%s'"),
- cmdline);
- g_free(cmdline);
- return;
- }
- procmsg_print_message(messageview->msginfo, cmdline);
- g_free(cmdline);
-#else
partnum = mimeview_get_selected_part_num(messageview->mimeview);
textview_get_selection_offsets(messageview->mimeview->textview,
&sel_start, &sel_end);
messageview_print(messageview->msginfo, messageview->all_headers,
sel_start, sel_end, partnum);
-#endif
}
static void close_cb(GtkAction *action, gpointer data)
diff --git a/src/messageview.h b/src/messageview.h
@@ -118,13 +118,11 @@ gchar *messageview_get_selection (MessageView *msgview);
void messageview_set_menu_sensitive (MessageView *msgview);
void messageview_learn (MessageView *msgview,
gboolean is_spam);
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
void messageview_print (MsgInfo *msginfo,
gboolean all_headers,
gint sel_start,
gint sel_end,
gint partnum);
-#endif
void messageview_list_urls (MessageView *msgview);
void messageview_show_partial_display (MessageView *msgview,
MsgInfo *msginfo,
diff --git a/src/prefs_actions.c b/src/prefs_actions.c
@@ -349,11 +349,7 @@ static void prefs_actions_create(MainWindow *mainwin)
CLAWS_SET_TIP(clear_btn,
_("Clear all the input fields in the dialog"));
-#if GTK_CHECK_VERSION(2, 8, 0)
info_btn = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- info_btn = gtk_button_new_with_label(_("Info..."));
-#endif
gtk_widget_show(info_btn);
gtk_box_pack_end(GTK_BOX(reg_hbox), info_btn, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(info_btn), "clicked",
diff --git a/src/prefs_common.c b/src/prefs_common.c
@@ -818,8 +818,6 @@ static PrefParam param[] = {
#ifndef G_OS_WIN32
{"uri_open_command", DEFAULT_BROWSER_CMD,
&SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
- {"print_command", "lpr %s",
- &SPECIFIC_PREFS.print_cmd, P_STRING, NULL, NULL, NULL},
#endif
{"ext_editor_command", DEFAULT_EDITOR_CMD,
&SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
diff --git a/src/prefs_common.h b/src/prefs_common.h
@@ -363,7 +363,6 @@ struct _PrefsCommon
/* Other */
#ifndef G_OS_WIN32
gchar *uri_cmd;
- gchar *print_cmd;
#endif
gchar *ext_editor_cmd;
gboolean cmds_use_system_default;
diff --git a/src/prefs_ext_prog.c b/src/prefs_ext_prog.c
@@ -53,8 +53,6 @@ typedef struct _ExtProgPage
GtkWidget *uri_combo;
GtkWidget *uri_entry;
- GtkWidget *printcmd_label;
- GtkWidget *printcmd_entry;
#endif
GtkWidget *exteditor_label;
GtkWidget *exteditor_combo;
@@ -78,8 +76,6 @@ static void prefs_ext_prog_create_widget(PrefsPage *_page, GtkWindow *window,
GtkWidget *uri_label;
GtkWidget *uri_combo;
GtkWidget *uri_entry;
- GtkWidget *printcmd_label;
- GtkWidget *printcmd_entry;
#endif
GtkWidget *exteditor_label;
GtkWidget *exteditor_combo;
@@ -233,28 +229,6 @@ static void prefs_ext_prog_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_common.mime_textviewer ? prefs_common.mime_textviewer : "");
#ifndef G_OS_WIN32
- printcmd_label = gtk_label_new (_("Print command"));
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- gtk_widget_show(printcmd_label);
-#endif
- i++;
- gtk_table_attach(GTK_TABLE (table2), printcmd_label, 0, 1, i, i+1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (0), 0, 2);
- gtk_label_set_justify(GTK_LABEL (printcmd_label), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment(GTK_MISC (printcmd_label), 1, 0.5);
-
- printcmd_entry = gtk_entry_new ();
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- gtk_widget_show(printcmd_entry);
-#endif
- gtk_table_attach(GTK_TABLE (table2), printcmd_entry, 1, 2, i, i+1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (0), 0, 0);
- gtk_entry_set_text(GTK_ENTRY(printcmd_entry), prefs_common.print_cmd ? prefs_common.print_cmd : "");
-#endif
-
-#ifndef G_OS_WIN32
SET_TOGGLE_SENSITIVITY_REVERSE (cmds_use_system_default_checkbtn, uri_label);
SET_TOGGLE_SENSITIVITY_REVERSE (cmds_use_system_default_checkbtn, uri_combo);
#endif
@@ -267,7 +241,6 @@ static void prefs_ext_prog_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_ext_prog->window = GTK_WIDGET(window);
#ifndef G_OS_WIN32
prefs_ext_prog->uri_entry = uri_entry;
- prefs_ext_prog->printcmd_entry = printcmd_entry;
#endif
prefs_ext_prog->exteditor_entry = exteditor_entry;
prefs_ext_prog->astextviewer_entry = astextviewer_entry;
@@ -282,8 +255,6 @@ static void prefs_ext_prog_save(PrefsPage *_page)
#ifndef G_OS_WIN32
prefs_common.uri_cmd = gtk_editable_get_chars
(GTK_EDITABLE(ext_prog->uri_entry), 0, -1);
- prefs_common.print_cmd = gtk_editable_get_chars
- (GTK_EDITABLE(ext_prog->printcmd_entry), 0, -1);
#endif
prefs_common.ext_editor_cmd = gtk_editable_get_chars
(GTK_EDITABLE(ext_prog->exteditor_entry), 0, -1);
diff --git a/src/prefs_filtering_action.c b/src/prefs_filtering_action.c
@@ -542,11 +542,7 @@ static void prefs_filtering_action_create(void)
G_CALLBACK(prefs_filtering_action_select_addressbook),
NULL);
-#if GTK_CHECK_VERSION(2, 8, 0)
exec_btn = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- exec_btn = gtk_button_new_with_label (_("Info..."));
-#endif
gtk_box_pack_start (GTK_BOX (hbox1), exec_btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (exec_btn), "clicked",
G_CALLBACK(prefs_filtering_action_exec_info),
diff --git a/src/prefs_fonts.c b/src/prefs_fonts.c
@@ -47,10 +47,8 @@ typedef struct _FontsPage
GtkWidget *entry_folderview_boldfont;
GtkWidget *entry_messageviewfont;
GtkWidget *derive_from_normalfont_checkbutton;
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
GtkWidget *print_checkbutton;
GtkWidget *entry_messageprintfont;
-#endif
} FontsPage;
static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
@@ -64,10 +62,8 @@ static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
GtkWidget *entry_folderview_boldfont;
GtkWidget *entry_messageviewfont;
GtkWidget *tmplabel;
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
GtkWidget *entry_messageprintfont;
GtkWidget *print_checkbutton;
-#endif
GtkWidget *derive_from_normalfont_checkbutton;
GtkWidget *vbox;
gint row = 0;
@@ -179,7 +175,6 @@ static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
SET_TOGGLE_SENSITIVITY_REVERSE (derive_from_normalfont_checkbutton, entry_folderview_boldfont);
row++;
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
/* print check button */
print_checkbutton = gtk_check_button_new_with_label(_("Use different font for printing"));
gtk_widget_show(print_checkbutton);
@@ -211,7 +206,6 @@ static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
(GtkAttachOptions) (0), 0, 0);
SET_TOGGLE_SENSITIVITY (print_checkbutton, entry_messageprintfont);
row++;
-#endif
prefs_fonts->window = GTK_WIDGET(window);
prefs_fonts->entry_folderview_smallfont = entry_folderview_smallfont;
@@ -219,10 +213,8 @@ static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_fonts->entry_folderview_boldfont = entry_folderview_boldfont;
prefs_fonts->entry_messageviewfont = entry_messageviewfont;
prefs_fonts->derive_from_normalfont_checkbutton = derive_from_normalfont_checkbutton;
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
prefs_fonts->entry_messageprintfont = entry_messageprintfont;
prefs_fonts->print_checkbutton = print_checkbutton;
-#endif
prefs_fonts->page.widget = table;
}
@@ -250,13 +242,11 @@ static void prefs_fonts_save(PrefsPage *_page)
prefs_common.derive_from_normal_font = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(fonts->derive_from_normalfont_checkbutton));
-#if defined(USE_GNOMEPRINT) || GTK_CHECK_VERSION(2,10,0)
g_free(prefs_common.printfont);
prefs_common.printfont = g_strdup(gtk_font_button_get_font_name
(GTK_FONT_BUTTON(fonts->entry_messageprintfont)));
prefs_common.use_different_print_font = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(fonts->print_checkbutton));
-#endif
main_window_reflect_prefs_all();
}
diff --git a/src/prefs_image_viewer.c b/src/prefs_image_viewer.c
@@ -87,9 +87,7 @@ static void imageviewer_create_widget_func(PrefsPage * _page,
(GtkAttachOptions) (0), 0, 0);
print_imgs = gtk_check_button_new_with_label(_("Print images"));
-#if !defined(USE_GNOMEPRINT) && GTK_CHECK_VERSION(2,10,0)
gtk_widget_show(print_imgs);
-#endif
gtk_table_attach(GTK_TABLE(table), print_imgs, 0, 1, 3, 4,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
diff --git a/src/prefs_matcher.c b/src/prefs_matcher.c
@@ -711,11 +711,7 @@ static void prefs_matcher_create(void)
GTK_FILL, GTK_SHRINK, 4, 0);
/* test info button */
-#if GTK_CHECK_VERSION(2, 8, 0)
test_btn = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- test_btn = gtk_button_new_with_label(_("Info..."));
-#endif
gtk_box_pack_start(GTK_BOX(lower_hbox), test_btn, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT (test_btn), "clicked",
G_CALLBACK(prefs_matcher_test_info),
diff --git a/src/prefs_msg_colors.c b/src/prefs_msg_colors.c
@@ -158,9 +158,7 @@ static void prefs_msg_colors_create_widget(PrefsPage *_page, GtkWindow *window,
vbox_quotefg = gtk_vbox_new(FALSE, VBOX_BORDER);
gtk_widget_show (vbox_quotefg);
vbox_quotebg = gtk_vbox_new(FALSE, VBOX_BORDER);
-#if GTK_CHECK_VERSION(2, 8, 0)
gtk_widget_show (vbox_quotebg);
-#endif
vbox3 = gtkut_get_options_frame(vbox2, &frame_quote, _("Quote"));
SET_TOGGLE_SENSITIVITY(checkbtn_enable_colors, frame_quote);
diff --git a/src/prefs_summaries.c b/src/prefs_summaries.c
@@ -528,11 +528,7 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
gtk_widget_set_size_request(entry_datefmt, 200, -1);
gtk_box_pack_start (GTK_BOX (hbox2), entry_datefmt, FALSE, FALSE, 0);
-#if GTK_CHECK_VERSION(2, 8, 0)
button_datefmt = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- button_datefmt = gtk_button_new_with_label ("Info...");
-#endif
gtk_widget_show (button_datefmt);
gtk_box_pack_start (GTK_BOX (hbox2), button_datefmt, FALSE, FALSE, 0);
diff --git a/src/prefs_template.c b/src/prefs_template.c
@@ -328,11 +328,7 @@ static void prefs_template_window_create(void)
CLAWS_SET_TIP(clear_btn,
_("Clear all the input fields in the dialog"));
-#if GTK_CHECK_VERSION(2, 8, 0)
desc_btn = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- desc_btn = gtk_button_new_with_label(_(" Symbols... "));
-#endif
gtk_widget_show(desc_btn);
gtk_box_pack_end(GTK_BOX(hbox2), desc_btn, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(desc_btn), "clicked",
diff --git a/src/printing.c b/src/printing.c
@@ -26,8 +26,6 @@
#include "printing.h"
#include "image_viewer.h"
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
-
#include "gtkutils.h"
#include "toolbar.h"
#include "prefs_common.h"
@@ -1463,4 +1461,3 @@ static void printing_preview_update_zoom_sensitivity(PreviewData *preview_data)
gtk_widget_set_sensitive(preview_data->zoom_out, TRUE);
}
-#endif /* GTK+ >= 2.10.0 */
diff --git a/src/printing.h b/src/printing.h
@@ -26,8 +26,6 @@
# include "config.h"
#endif
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
-
typedef struct _PrintData PrintData;
typedef struct _PrintRenderer {
@@ -50,6 +48,4 @@ GtkPrintSettings *printing_get_settings(void);
GtkPageSetup *printing_get_page_setup(void);
void printing_store_settings(GtkPrintSettings *new_settings);
-#endif /* GTK+ >= 2.10.0 */
-
#endif /* __PRINTING_H__ */
diff --git a/src/quote_fmt.c b/src/quote_fmt.c
@@ -519,12 +519,7 @@ void quotefmt_add_info_button(GtkWindow *parent_window, GtkWidget *parent_box)
gtk_box_pack_start (GTK_BOX (parent_box), hbox_formatdesc, FALSE, FALSE,
VBOX_BORDER);
-#if GTK_CHECK_VERSION(2, 8, 0)
btn_formatdesc = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
- btn_formatdesc =
- gtk_button_new_with_label (_("Description of symbols..."));
-#endif
gtk_widget_show (btn_formatdesc);
gtk_box_pack_start (GTK_BOX (hbox_formatdesc), btn_formatdesc, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(btn_formatdesc), "clicked",
diff --git a/src/summaryview.c b/src/summaryview.c
@@ -71,7 +71,6 @@
#include "partial_download.h"
#include "tags.h"
#include "timing.h"
-#include "gedit-print.h"
#include "log.h"
#include "edittags.h"
#include "manual.h"
@@ -4676,12 +4675,6 @@ void summary_save_as(SummaryView *summaryview)
void summary_print(SummaryView *summaryview)
{
GtkCMCList *clist = GTK_CMCLIST(summaryview->ctree);
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
- MsgInfo *msginfo;
- gchar *cmdline = NULL;
- gchar *p;
-#endif
GList *cur;
gchar *msg = g_strdup_printf(_("You are about to print %d "
"messages, one by one. Do you "
@@ -4696,30 +4689,6 @@ void summary_print(SummaryView *summaryview)
g_free(msg);
if (clist->selection == NULL) return;
-#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
- cmdline = input_dialog(_("Print"),
- _("Enter the print command-line:\n"
- "('%s' will be replaced with file name)"),
- prefs_common.print_cmd);
- if (!cmdline) return;
- if (!(p = strchr(cmdline, '%')) || *(p + 1) != 's' ||
- strchr(p + 2, '%')) {
- alertpanel_error(_("Print command-line is invalid:\n'%s'"),
- cmdline);
- g_free(cmdline);
- return;
- }
- for (cur = clist->selection;
- cur != NULL && cur->data != NULL;
- cur = cur->next) {
- msginfo = gtk_cmctree_node_get_row_data
- (ctree, GTK_CMCTREE_NODE(cur->data));
- if (msginfo)
- procmsg_print_message(msginfo, cmdline);
- }
-
- g_free(cmdline);
-#else
for (cur = clist->selection;
cur != NULL && cur->data != NULL;
cur = cur->next) {
@@ -4737,7 +4706,6 @@ void summary_print(SummaryView *summaryview)
messageview_print(msginfo, summaryview->messageview->all_headers,
sel_start, sel_end, partnum);
}
-#endif
}
gboolean summary_execute(SummaryView *summaryview)
diff --git a/src/textview.c b/src/textview.c
@@ -452,16 +452,10 @@ static void textview_create_tags(GtkTextView *text, TextView *textview)
"foreground-gdk", "e_colors[2],
NULL);
}
-#if GTK_CHECK_VERSION(2, 8, 0)
gtk_text_buffer_create_tag(buffer, "tags",
"foreground-gdk", &black,
"paragraph-background-gdk", &yellow,
NULL);
-#else
- gtk_text_buffer_create_tag(buffer, "tags",
- "foreground-gdk", &emphasis_color,
- NULL);
-#endif
gtk_text_buffer_create_tag(buffer, "emphasis",
"foreground-gdk", &emphasis_color,
NULL);
@@ -501,19 +495,11 @@ void textview_init(TextView *textview)
textview_create_tags(GTK_TEXT_VIEW(textview->text), textview);
}
-#if GTK_CHECK_VERSION(2, 8, 0)
#define CHANGE_TAG_COLOR(tagname, colorfg, colorbg) { \
tag = gtk_text_tag_table_lookup(tags, tagname); \
if (tag) \
g_object_set(G_OBJECT(tag), "foreground-gdk", colorfg, "paragraph-background-gdk", colorbg, NULL); \
}
-#else
- #define CHANGE_TAG_COLOR(tagname, colorfg, colorbg) { \
- tag = gtk_text_tag_table_lookup(tags, tagname); \
- if (tag) \
- g_object_set(G_OBJECT(tag), "foreground-gdk", colorfg, NULL); \
- }
-#endif
static void textview_update_message_colors(TextView *textview)
{