summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2006-06-10 23:19:28 +0000
committerChristian Persch <chpe@src.gnome.org>2006-06-10 23:19:28 +0000
commitb1dc970ca5a6cf9d491aa9dd696e164728d37386 (patch)
tree88709c81ba6c21310e9445e6c3c319582bcbeb91
parent1a27a1951d3728c5d7cfdf80ca982e359bbf97d3 (diff)
downloadyelp-b1dc970ca5a6cf9d491aa9dd696e164728d37386.tar.gz
Don't use mozilla's internal string API, and drop support for gecko 1.7
2006-06-11 Christian Persch <chpe@cvs.gnome.org> * configure.in: * src/Makefile.am: * src/Yelper.cpp: * src/Yelper.h: * src/yelp-gecko-services.cpp: * src/yelp-gecko-services.h: * src/yelp-gecko-utils.cpp: * src/yelp-gecko-utils.h: * src/yelp-html.cpp: * src/yelp-html.h: * src/yelp-window.c: (window_find_again): Don't use mozilla's internal string API, and drop support for gecko 1.7 and non-toolkit geckos. Bug #343950. * m4/gecko.m4: Updated from Epiphany.
-rw-r--r--ChangeLog19
-rw-r--r--configure.in13
-rw-r--r--m4/gecko.m496
-rw-r--r--src/Makefile.am8
-rw-r--r--src/Yelper.cpp297
-rw-r--r--src/Yelper.h22
-rw-r--r--src/yelp-gecko-services.cpp240
-rw-r--r--src/yelp-gecko-services.h13
-rw-r--r--src/yelp-gecko-utils.cpp20
-rw-r--r--src/yelp-gecko-utils.h1
-rw-r--r--src/yelp-html.cpp14
-rw-r--r--src/yelp-html.h3
-rw-r--r--src/yelp-window.c6
13 files changed, 366 insertions, 386 deletions
diff --git a/ChangeLog b/ChangeLog
index 6c0aca51..35b52cb6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2006-06-11 Christian Persch <chpe@cvs.gnome.org>
+
+ * configure.in:
+ * src/Makefile.am:
+ * src/Yelper.cpp:
+ * src/Yelper.h:
+ * src/yelp-gecko-services.cpp:
+ * src/yelp-gecko-services.h:
+ * src/yelp-gecko-utils.cpp:
+ * src/yelp-gecko-utils.h:
+ * src/yelp-html.cpp:
+ * src/yelp-html.h:
+ * src/yelp-window.c: (window_find_again):
+ Don't use mozilla's internal string API, and drop support for gecko 1.7
+ and non-toolkit geckos. Bug #343950.
+
+ * m4/gecko.m4:
+ Updated from Epiphany.
+
2006-06-10 Don Scorgie <dscorgie@cvs.gnome.org>
* data/ui/yelp-search-ui.xml:
diff --git a/configure.in b/configure.in
index 7f1efc80..b31bed7b 100644
--- a/configure.in
+++ b/configure.in
@@ -223,22 +223,13 @@ AC_SUBST([MOZILLA_PREFIX])
AC_SUBST([MOZILLA_EXTRA_LIBS])
case "$MOZILLA" in
-mozilla) gecko_min_version=1.7 ;;
-seamonkey) gecko_min_version=1.0 ;;
-*firefox) gecko_min_version=1.0 ;;
-*thunderbird) gecko_min_version=1.0 ;;
xulrunner) gecko_min_version=1.8 ;;
+*firefox) gecko_min_version=1.5 ;;
+*) AC_MSG_ERROR([$gecko_cv_gecko is not supported])
esac
PKG_CHECK_MODULES([MOZILLA_COMPONENT],[${gecko_cv_gecko}-xpcom >= $gecko_min_version $gecko_cv_extra_pkg_dependencies])
-if test "$gecko_cv_gecko_flavour" = "toolkit"; then
- AC_DEFINE([TYPEAHEADFIND],[1],[Define if we have toolkit's typeaheadfind])
-fi
-
-dnl Needed since gecko 1.8b2
-AC_DEFINE([MOZILLA_INTERNAL_API],[1],[Define to have access to internal Mozilla APIs])
-
dnl ====================================
dnl = zlib for help converters
dnl ====================================
diff --git a/m4/gecko.m4 b/m4/gecko.m4
index 56c8b634..9363c5ef 100644
--- a/m4/gecko.m4
+++ b/m4/gecko.m4
@@ -35,11 +35,18 @@
# VARIABLE_PREFIX:
# VARIABLE_INCLUDE_ROOT:
# VARIABLE_VERSION: The version of the gecko that was found
-# VARIABLE_VERSION_MAJOR:
-# VARIABLE_VERSION_MINOR:
+# VARIABLE_VERSION:
+# VARIABLE_VERSION_INT:
AC_DEFUN([GECKO_INIT],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+
+AC_PROG_AWK
+
+# ************************
+# Check which gecko to use
+# ************************
AC_MSG_CHECKING([which gecko to use])
@@ -229,62 +236,86 @@ AM_CONDITIONAL([HAVE_GECKO_DEBUG],[test "$gecko_cv_have_debug" = "yes"])
if test "$gecko_cv_have_gecko" = "yes"; then
-AC_MSG_CHECKING([for gecko version])
-
-# We cannot in grep in mozilla-config.h directly, since in some setups
-# (mult-arch for instance) it includes another file with the real
-# definitions.
-
AC_LANG_PUSH([C++])
_SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT"
-AC_EGREP_CPP([\"1\.9],
- [#include <mozilla-config.h>
- MOZILLA_VERSION],
- [gecko_cv_gecko_version_major=1 gecko_cv_gecko_version_minor=9],
- [AC_EGREP_CPP([\"1\.8],
- [#include <mozilla-config.h>
- MOZILLA_VERSION],
- [gecko_cv_gecko_version_major=1 gecko_cv_gecko_version_minor=8],
- [gecko_cv_gecko_version_major=1 gecko_cv_gecko_version_minor=7])
+AC_CACHE_CHECK([for gecko version],
+ [gecko_cv_gecko_version],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[
+#include <mozilla-config.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+]],[[
+FILE *stream;
+const char *version = "";
+
+if (!setlocale (LC_ALL, "C")) return 127;
+
+stream = fopen ("conftest.data", "w");
+if (!stream) return 126;
+
+#ifdef MOZILLA_1_8_BRANCH
+version = "1.8.1";
+#else
+if (strncmp (MOZILLA_VERSION, "1.9", strlen ("1.9")) == 0) {
+ version = "1.9";
+} else if (strncmp (MOZILLA_VERSION, "1.8", strlen ("1.8")) == 0) {
+ version = "1.8";
+} else {
+ version = "1.7";
+}
+#endif
+fprintf (stream, "%s\n", version);
+if (fclose (stream) != 0) return 125;
+
+return EXIT_SUCCESS;
+]])],
+ [gecko_cv_gecko_version="$(cat conftest.data)"],
+ [AC_MSG_FAILURE([could not determine gecko version])],
+ [gecko_cv_gecko_version="1.7"])
])
CPPFLAGS="$_SAVE_CPPFLAGS"
AC_LANG_POP([C++])
-gecko_cv_gecko_version="$gecko_cv_gecko_version_major.$gecko_cv_gecko_version_minor"
+gecko_cv_gecko_version_int="$(echo "$gecko_cv_gecko_version" | $AWK -F\. '{print [$]1 * 1000000 + [$]2 * 1000 + [$]3}')"
-AC_MSG_RESULT([$gecko_cv_gecko_version])
-
-if test "$gecko_cv_gecko_version_major" != "1" -o "$gecko_cv_gecko_version_minor" -lt "7" -o "$gecko_cv_gecko_version_minor" -gt "9"; then
+if test "$gecko_cv_gecko_version_int" -lt "1007000" -o "$gecko_cv_gecko_version_int" -gt "1009000"; then
AC_MSG_ERROR([Gecko version $gecko_cv_gecko_version is not supported!])
fi
-if test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "7"; then
+if test "$gecko_cv_gecko_version_int" -ge "1007000"; then
AC_DEFINE([HAVE_GECKO_1_7],[1],[Define if we have gecko 1.7])
gecko_cv_have_gecko_1_7=yes
fi
-if test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "8"; then
+if test "$gecko_cv_gecko_version_int" -ge "1008000"; then
AC_DEFINE([HAVE_GECKO_1_8],[1],[Define if we have gecko 1.8])
gecko_cv_have_gecko_1_8=yes
fi
-if test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "9"; then
+if test "$gecko_cv_gecko_version_int" -ge "1008001"; then
+ AC_DEFINE([HAVE_GECKO_1_8_1],[1],[Define if we have gecko 1.8.1])
+ gecko_cv_have_gecko_1_8_1=yes
+fi
+if test "$gecko_cv_gecko_version_int" -ge "1009000"; then
AC_DEFINE([HAVE_GECKO_1_9],[1],[Define if we have gecko 1.9])
gecko_cv_have_gecko_1_9=yes
fi
fi # if gecko_cv_have_gecko
-AM_CONDITIONAL([HAVE_GECKO_1_7],[test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "7"])
-AM_CONDITIONAL([HAVE_GECKO_1_8],[test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "8"])
-AM_CONDITIONAL([HAVE_GECKO_1_9],[test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "9"])
+AM_CONDITIONAL([HAVE_GECKO_1_7],[test "$gecko_cv_gecko_version_int" -ge "1007000"])
+AM_CONDITIONAL([HAVE_GECKO_1_8],[test "$gecko_cv_gecko_version_int" -ge "1008000"])
+AM_CONDITIONAL([HAVE_GECKO_1_8_1],[test "$gecko_cv_gecko_version_int" -ge "1008001"])
+AM_CONDITIONAL([HAVE_GECKO_1_9],[test "$gecko_cv_gecko_version_int" -ge "1009000"])
$1[]_VERSION=$gecko_cv_gecko_version
-$1[]_VERSION_MAJOR=$gecko_cv_gecko_version_major
-$1[]_VERSION_MINOR=$gecko_cv_gecko_version_minor
+$1[]_VERSION_INT=$gecko_cv_gecko_version_int
# **************************************************
# Packages that we need to check for with pkg-config
@@ -293,7 +324,7 @@ $1[]_VERSION_MINOR=$gecko_cv_gecko_version_minor
gecko_cv_extra_libs=
gecko_cv_extra_pkg_dependencies=
-if test "$gecko_cv_gecko_version_major" = "1" -a "$gecko_cv_gecko_version_minor" -ge "9"; then
+if test "$gecko_cv_gecko_version_int" -ge "1009000"; then
gecko_cv_extra_libs="-lxul"
else
gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed"
@@ -322,9 +353,11 @@ AC_LANG_PUSH([C++])
_SAVE_CPPFLAGS="$CPPFLAGS"
_SAVE_CXXFLAGS="$CXXFLAGS"
_SAVE_LDFLAGS="$LDFLAGS"
+_SAVE_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS -I$_GECKO_INCLUDE_ROOT $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-xpcom)"
CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xpcom)"
-LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom) -Wl,--rpath=$_GECKO_HOME"
+LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME"
+LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom)"
_GECKO_DISPATCH_INCLUDEDIRS="$2"
@@ -343,6 +376,7 @@ m4_indir([$1],m4_shiftn(2,$@))
CPPFLAGS="$_SAVE_CPPFLAGS"
CXXFLAGS="$_SAVE_CXXFLAGS"
LDFLAGS="$_SAVE_LDFLAGS"
+LIBS="$_SAVE_LIBS"
AC_LANG_POP([C++])
diff --git a/src/Makefile.am b/src/Makefile.am
index 781163f6..7a3c7be4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,7 +19,8 @@ yelp_SOURCES = \
yelp-utils.c yelp-utils.h \
yelp-window.c yelp-window.h \
yelp-xslt-pager.c yelp-xslt-pager.h \
- yelp-marshal-main.c yelp-main.c \
+ yelp-marshal.c yelp-marshal.h \
+ yelp-main.c \
yelp-print.c yelp-print.h \
yelp-gecko-services.h yelp-gecko-services.cpp
@@ -74,8 +75,8 @@ mozilla_include_subdirs = \
yelp_CPPFLAGS = \
-I$(top_srcdir) \
+ -I$(top_builddir)/src \
$(addprefix -I$(MOZILLA_INCLUDE_ROOT)/,$(mozilla_include_subdirs)) \
- -include $(MOZILLA_INCLUDE_ROOT)/mozilla-config.h \
$(YELP_DEFINES) \
$(AM_CPPFLAGS)
@@ -134,7 +135,8 @@ test_pager_SOURCES = \
yelp-toc-pager.c yelp-toc-pager.h \
yelp-utils.c yelp-utils.h \
yelp-xslt-pager.c yelp-xslt-pager.h \
- yelp-marshal-main.c test-pager.c
+ yelp-marshal.c yelp-marshal.h \
+ test-pager.c
test_pager_CPPFLAGS = \
$(YELP_DEFINES) \
diff --git a/src/Yelper.cpp b/src/Yelper.cpp
index e18f1c92..73d58a0e 100644
--- a/src/Yelper.cpp
+++ b/src/Yelper.cpp
@@ -20,42 +20,39 @@
*/
#include <mozilla-config.h>
-
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-#include "Yelper.h"
+#include <stdlib.h>
+#include <unistd.h>
-#undef MOZILLA_INTERNAL_API
-#include "nsEmbedString.h"
-#define MOZILLA_INTERNAL_API 1
+#include <nsStringAPI.h>
-#include <nsIWebBrowserSetup.h>
-#include <nsIClipboardCommands.h>
+#include <gtkmozembed.h>
+#include <gtkmozembed_internal.h>
+#include <nsComponentManagerUtils.h>
#include <nsICommandManager.h>
-#include <nsIInterfaceRequestorUtils.h>
-#include <nsIPrefService.h>
-#include <nsIServiceManager.h>
+#include <nsIDocShell.h>
#include <nsIDOMDocument.h>
-#include <nsIDOMMouseEvent.h>
-#include <nsIDOMNSEvent.h>
#include <nsIDOMEventTarget.h>
-#include <nsIDOMNode.h>
#include <nsIDOMHTMLAnchorElement.h>
+#include <nsIDOMMouseEvent.h>
+#include <nsIDOMNode.h>
+#include <nsIDOMNSEvent.h>
+#include <nsIDOMWindow.h>
+#include <nsIInterfaceRequestorUtils.h>
+#include <nsIPrefService.h>
+#include <nsIPrintSettings.h>
+#include <nsITypeAheadFind.h>
+#include <nsIWebBrowser.h>
#include <nsIWebBrowserPrint.h>
+#include <nsIWebBrowserSetup.h>
+#include <nsServiceManagerUtils.h>
-#ifdef TYPEAHEADFIND
-#include <nsIDocShell.h>
-#define NS_TYPEAHEADFIND_CONTRACTID "@mozilla.org/typeaheadfind;1"
-#endif /* TYPEAHEADFIND */
-
-#include <stdlib.h>
-#include <unistd.h>
+#include "yelp-gecko-services.h"
-#include <gtkmozembed_internal.h>
+#include "Yelper.h"
-#include <yelp-gecko-services.h>
+#define NS_TYPEAHEADFIND_CONTRACTID "@mozilla.org/typeaheadfind;1"
#ifdef GNOME_ENABLE_DEBUG
#define d(x) x
@@ -98,7 +95,6 @@ Yelper::Init ()
rv = mDOMWindow->GetDocument (getter_AddRefs (domDocument));
NS_ENSURE_SUCCESS (rv, rv);
-#ifdef TYPEAHEADFIND
mFinder = do_CreateInstance (NS_TYPEAHEADFIND_CONTRACTID, &rv);
NS_ENSURE_SUCCESS (rv, rv);
@@ -109,10 +105,6 @@ Yelper::Init ()
NS_ENSURE_SUCCESS (rv, rv);
mFinder->SetFocusLinks (PR_TRUE);
-#else
- mFinder = do_GetInterface (mWebBrowser, &rv);
- NS_ENSURE_SUCCESS (rv, rv);
-#endif /* TYPEAHEADFIND */
mInitialised = PR_TRUE;
@@ -148,20 +140,10 @@ Yelper::SetFindProperties (const char *aSearchString,
{
if (!mInitialised) return;
-#ifdef TYPEAHEADFIND
mFinder->SetCaseSensitive (aCaseSensitive);
/* aWrap not supported for typeaheadfind
* search string is set in ::Find for typeaheadfind
*/
-#else
- nsEmbedString uSearchString;
- NS_CStringToUTF16 (nsEmbedCString (aSearchString ? aSearchString : ""),
- NS_CSTRING_ENCODING_UTF8, uSearchString);
-
- mFinder->SetSearchString (uSearchString.get ());
- mFinder->SetMatchCase (aCaseSensitive);
- mFinder->SetWrapFind (aWrap);
-#endif /* TYPEAHEADFIND */
}
PRBool
@@ -169,9 +151,8 @@ Yelper::Find (const char *aSearchString)
{
if (!mInitialised) return PR_FALSE;
-#ifdef TYPEAHEADFIND
- nsEmbedString uSearchString;
- NS_CStringToUTF16 (nsEmbedCString (aSearchString ? aSearchString : ""),
+ nsString uSearchString;
+ NS_CStringToUTF16 (nsCString (aSearchString ? aSearchString : ""),
NS_CSTRING_ENCODING_UTF8, uSearchString);
nsresult rv;
@@ -179,20 +160,6 @@ Yelper::Find (const char *aSearchString)
rv = mFinder->Find (uSearchString, PR_FALSE /* links only? */, &found);
return NS_SUCCEEDED (rv) && (found == nsITypeAheadFind::FIND_FOUND || found == nsITypeAheadFind::FIND_WRAPPED);
-#else
- nsEmbedString uSearchString;
- NS_CStringToUTF16 (nsEmbedCString (aSearchString ? aSearchString : ""),
- NS_CSTRING_ENCODING_UTF8, uSearchString);
-
- mFinder->SetSearchString (uSearchString.get ());
- mFinder->SetFindBackwards (PR_FALSE);
-
- nsresult rv;
- PRBool didFind = PR_FALSE;
- rv = mFinder->FindNext (&didFind);
-
- return NS_SUCCEEDED (rv) && didFind;
-#endif /* TYPEAHEADFIND */
}
PRBool
@@ -200,7 +167,6 @@ Yelper::FindAgain (PRBool aForward)
{
if (!mInitialised) return PR_FALSE;
-#ifdef TYPEAHEADFIND
nsresult rv;
PRUint16 found = nsITypeAheadFind::FIND_NOTFOUND;
if (aForward) {
@@ -211,15 +177,6 @@ Yelper::FindAgain (PRBool aForward)
}
return NS_SUCCEEDED (rv) && (found == nsITypeAheadFind::FIND_FOUND || found == nsITypeAheadFind::FIND_WRAPPED);
-#else
- mFinder->SetFindBackwards (!aForward);
-
- nsresult rv;
- PRBool didFind = PR_FALSE;
- rv = mFinder->FindNext (&didFind);
-
- return NS_SUCCEEDED (rv) && didFind;
-#endif /* TYPEAHEADFIND */
}
void
@@ -248,11 +205,11 @@ Yelper::ProcessMouseEvent (void* aEvent)
nsCOMPtr <nsIDOMHTMLAnchorElement> anchor (do_QueryInterface (originalTarget));
if (!anchor) return;
- nsEmbedString href;
+ nsString href;
rv = anchor->GetHref (href);
if (NS_FAILED (rv) || !href.Length ()) return;
- nsEmbedCString cHref;
+ nsCString cHref;
NS_UTF16ToCString (href, NS_CSTRING_ENCODING_UTF8, cHref);
if (!cHref.Length ()) return;
@@ -272,7 +229,7 @@ Yelper::Print (YelpPrintInfo *print_info, PRBool preview, int *prev_pages)
rv = print->GetGlobalPrintSettings (getter_AddRefs (settings));
NS_ENSURE_SUCCESS (rv, rv);
- SetPrintSettings (print_info, settings);
+ PrintListener::SetPrintSettings (print_info, settings);
nsCOMPtr<PrintListener> listener = new PrintListener (print_info, print);
@@ -296,8 +253,6 @@ Yelper::PrintPreviewNavigate (int page_no)
return print->PrintPreviewNavigate (0, page_no);
}
-
-
nsresult
Yelper::PrintPreviewEnd ()
{
@@ -308,203 +263,3 @@ Yelper::PrintPreviewEnd ()
return print->ExitPrintPreview ();
}
-
-void
-Yelper::SetPrintSettings (YelpPrintInfo *settings, nsIPrintSettings * target)
-{
- char *base;
- const char *temp_dir;
- int fd;
- const GnomePrintUnit *unit, *inch, *mm;
- double value;
- nsEmbedString tmp;
-
- const static PRUnichar pName[] = { 'P', 'o', 's', 't', 'S', 'c', 'r', 'i', 'p', 't', '/', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\0' };
- target->SetPrinterName(nsEmbedString(pName).get());
-
- const static int frame_types[] = {
- nsIPrintSettings::kFramesAsIs,
- nsIPrintSettings::kSelectedFrame,
- nsIPrintSettings::kEachFrameSep
- };
-
- switch (settings->range)
- {
- case GNOME_PRINT_RANGE_CURRENT:
- case GNOME_PRINT_RANGE_SELECTION_UNSENSITIVE:
- case GNOME_PRINT_RANGE_ALL:
- target->SetPrintRange (nsIPrintSettings::kRangeAllPages);
- break;
- case GNOME_PRINT_RANGE_RANGE:
- target->SetPrintRange (nsIPrintSettings::kRangeSpecifiedPageRange);
- target->SetStartPageRange (settings->from_page);
- target->SetEndPageRange (settings->to_page);
- break;
- case GNOME_PRINT_RANGE_SELECTION:
- target->SetPrintRange (nsIPrintSettings::kRangeSelection);
- break;
- }
-
- mm = gnome_print_unit_get_by_abbreviation ((const guchar *) "mm");
- inch = gnome_print_unit_get_by_abbreviation ((const guchar *) "in");
- g_assert (mm != NULL && inch != NULL);
-
- /* top margin */
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_TOP,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, inch))
- {
- target->SetMarginTop (value);
- }
-
- /* bottom margin */
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_BOTTOM,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, inch))
- {
- target->SetMarginBottom (value);
- }
-
- /* left margin */
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_LEFT,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, inch))
- {
- target->SetMarginLeft (value);
- }
-
- /* right margin */
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_RIGHT,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, inch))
- {
- target->SetMarginRight (value);
- }
-
-
-
- NS_CStringToUTF16 (nsEmbedCString(settings->header_left_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetHeaderStrLeft (tmp.get());
-
- NS_CStringToUTF16 (nsEmbedCString(settings->header_center_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetHeaderStrCenter (tmp.get());
-
- NS_CStringToUTF16 (nsEmbedCString(settings->header_right_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetHeaderStrRight (tmp.get());
-
- NS_CStringToUTF16 (nsEmbedCString(settings->footer_left_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetFooterStrLeft (tmp.get());
-
- NS_CStringToUTF16 (nsEmbedCString(settings->footer_center_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetFooterStrCenter(tmp.get());
-
- NS_CStringToUTF16 (nsEmbedCString(settings->footer_right_string),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetFooterStrRight(tmp.get());
-
-
-
- temp_dir = g_get_tmp_dir ();
- base = g_build_filename (temp_dir, "printXXXXXX", NULL);
- fd = g_mkstemp (base);
- close(fd);
- settings->tempfile = g_strdup (base);
-
- g_free (base);
-
-
- NS_CStringToUTF16 (nsEmbedCString(settings->tempfile),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetPrintToFile (PR_TRUE);
- target->SetToFileName (tmp.get());
-
-
- /* paper size */
- target->SetPaperSize (nsIPrintSettings::kPaperSizeDefined);
- target->SetPaperSizeUnit (nsIPrintSettings::kPaperSizeMillimeters);
-
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAPER_WIDTH,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, mm))
- {
- target->SetPaperWidth (value);
- }
-
- if (gnome_print_config_get_length (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAPER_HEIGHT,
- &value, &unit)
- && gnome_print_convert_distance (&value, unit, mm))
- {
- target->SetPaperHeight (value);
- }
-
- /* Mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=307404
- * means that we cannot actually use any paper sizes except mozilla's
- * builtin list, and we must refer to them *by name*!
- */
-#ifndef HAVE_GECKO_1_9
- /* Gnome-Print names some papers differently than what moz understands */
- static const struct
- {
- const char *gppaper;
- const char *mozpaper;
- }
- paper_table [] =
- {
- { "USLetter", "Letter" },
- { "USLegal", "Legal" }
- };
-#endif /* !HAVE_GECKO_1_9 */
-
- /* paper name */
- char *string = (char *) gnome_print_config_get (settings->config,
- (const guchar *) GNOME_PRINT_KEY_PAPER_SIZE);
- const char *paper = string;
-
-#ifndef HAVE_GECKO_1_9
- for (PRUint32 i = 0; i < G_N_ELEMENTS (paper_table); i++)
- {
- if (string != NULL &&
- g_ascii_strcasecmp (paper_table[i].gppaper, string) == 0)
- {
- paper = paper_table[i].mozpaper;
- break;
- }
- }
-#endif /* !HAVE_GECKO_1_9 */
-
- NS_CStringToUTF16 (nsEmbedCString(paper),
- NS_CSTRING_ENCODING_UTF8, tmp);
- target->SetPaperName (tmp.get());
- g_free (string);
-
- /* paper orientation */
- string = (char *) gnome_print_config_get (settings->config,
- (const guchar *) GNOME_PRINT_KEY_ORIENTATION);
- if (string == NULL) string = g_strdup ("R0");
-
- if (strncmp (string, "R90", 3) == 0 || strncmp (string, "R270", 4) == 0)
- {
- target->SetOrientation (nsIPrintSettings::kLandscapeOrientation);
- }
- else
- {
- target->SetOrientation (nsIPrintSettings::kPortraitOrientation);
- }
- g_free (string);
-
- target->SetPrintInColor (TRUE);
- target->SetPrintFrameType (frame_types[settings->frame_type]);
-
-
-}
diff --git a/src/Yelper.h b/src/Yelper.h
index c7b5d48a..b52a367c 100644
--- a/src/Yelper.h
+++ b/src/Yelper.h
@@ -23,17 +23,13 @@
#define __YELPER_H__
#include <gtkmozembed.h>
-
#include <nsCOMPtr.h>
-#include <nsIWebBrowser.h>
-#include <nsIDOMWindow.h>
-#ifdef TYPEAHEADFIND
-#include <nsITypeAheadFind.h>
-#else
-#include <nsIWebBrowserFind.h>
-#endif
-#include <nsIPrintSettings.h>
-#include <yelp-print.h>
+
+#include "yelp-print.h"
+
+class nsIDOMWindow;
+class nsITypeAheadFind;
+class nsIWebBrowser;
class Yelper
{
@@ -65,13 +61,7 @@ private:
GtkMozEmbed *mEmbed;
nsCOMPtr<nsIWebBrowser> mWebBrowser;
nsCOMPtr<nsIDOMWindow> mDOMWindow;
-#ifdef TYPEAHEADFIND
nsCOMPtr<nsITypeAheadFind> mFinder;
-#else
- nsCOMPtr<nsIWebBrowserFind> mFinder;
-#endif
-
- void SetPrintSettings (YelpPrintInfo *settings, nsIPrintSettings *target);
};
#endif /* !__YELPER_H__ */
diff --git a/src/yelp-gecko-services.cpp b/src/yelp-gecko-services.cpp
index a56c3a3f..7a37dde5 100644
--- a/src/yelp-gecko-services.cpp
+++ b/src/yelp-gecko-services.cpp
@@ -21,24 +21,23 @@
*/
#include <mozilla-config.h>
+#include "config.h"
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+#include <stdlib.h>
+#include <unistd.h>
-#include "nsError.h"
-#undef MOZILLA_INTERNAL_API
-#include <nsEmbedString.h>
-#define MOZILLA_INTERNAL_API 1
+#include <nsStringAPI.h>
-#include "yelp-gecko-services.h"
-
-#include <nsIPrintSettings.h>
#include <nsCOMPtr.h>
+#include <nsIComponentManager.h>
#include <nsIComponentRegistrar.h>
-#include <nsIInterfaceRequestorUtils.h>
#include <nsIGenericFactory.h>
#include <nsILocalFile.h>
+#include <nsIPrintSettings.h>
+#include <nsServiceManagerUtils.h>
+#include <nsXPCOM.h>
+
+#include "yelp-gecko-services.h"
/* Implementation file */
NS_IMPL_ISUPPORTS3(GPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener, nsIPrintProgressParams)
@@ -193,6 +192,208 @@ NS_IMETHODIMP PrintListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIR
return NS_ERROR_NOT_IMPLEMENTED;
}
+/* static functions */
+
+/* static */void
+PrintListener::SetPrintSettings (YelpPrintInfo *settings,
+ nsIPrintSettings * target)
+{
+ char *base;
+ const char *temp_dir;
+ int fd;
+ const GnomePrintUnit *unit, *inch, *mm;
+ double value;
+ nsString tmp;
+
+ target->SetPrinterName(NS_LITERAL_STRING("PostScript/default").get());
+
+ const static int frame_types[] = {
+ nsIPrintSettings::kFramesAsIs,
+ nsIPrintSettings::kSelectedFrame,
+ nsIPrintSettings::kEachFrameSep
+ };
+
+ switch (settings->range)
+ {
+ case GNOME_PRINT_RANGE_CURRENT:
+ case GNOME_PRINT_RANGE_SELECTION_UNSENSITIVE:
+ case GNOME_PRINT_RANGE_ALL:
+ target->SetPrintRange (nsIPrintSettings::kRangeAllPages);
+ break;
+ case GNOME_PRINT_RANGE_RANGE:
+ target->SetPrintRange (nsIPrintSettings::kRangeSpecifiedPageRange);
+ target->SetStartPageRange (settings->from_page);
+ target->SetEndPageRange (settings->to_page);
+ break;
+ case GNOME_PRINT_RANGE_SELECTION:
+ target->SetPrintRange (nsIPrintSettings::kRangeSelection);
+ break;
+ }
+
+ mm = gnome_print_unit_get_by_abbreviation ((const guchar *) "mm");
+ inch = gnome_print_unit_get_by_abbreviation ((const guchar *) "in");
+ g_assert (mm != NULL && inch != NULL);
+
+ /* top margin */
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_TOP,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, inch))
+ {
+ target->SetMarginTop (value);
+ }
+
+ /* bottom margin */
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_BOTTOM,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, inch))
+ {
+ target->SetMarginBottom (value);
+ }
+
+ /* left margin */
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_LEFT,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, inch))
+ {
+ target->SetMarginLeft (value);
+ }
+
+ /* right margin */
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAGE_MARGIN_RIGHT,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, inch))
+ {
+ target->SetMarginRight (value);
+ }
+
+
+
+ NS_CStringToUTF16 (nsDependentCString(settings->header_left_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetHeaderStrLeft (tmp.get());
+
+ NS_CStringToUTF16 (nsDependentCString(settings->header_center_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetHeaderStrCenter (tmp.get());
+
+ NS_CStringToUTF16 (nsDependentCString(settings->header_right_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetHeaderStrRight (tmp.get());
+
+ NS_CStringToUTF16 (nsDependentCString(settings->footer_left_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetFooterStrLeft (tmp.get());
+
+ NS_CStringToUTF16 (nsDependentCString(settings->footer_center_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetFooterStrCenter(tmp.get());
+
+ NS_CStringToUTF16 (nsDependentCString(settings->footer_right_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetFooterStrRight(tmp.get());
+
+
+
+ temp_dir = g_get_tmp_dir ();
+ base = g_build_filename (temp_dir, "printXXXXXX", NULL);
+ fd = g_mkstemp (base);
+ close(fd);
+ settings->tempfile = g_strdup (base);
+
+ g_free (base);
+
+
+ NS_CStringToUTF16 (nsDependentCString(settings->tempfile),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetPrintToFile (PR_TRUE);
+ target->SetToFileName (tmp.get());
+
+
+ /* paper size */
+ target->SetPaperSize (nsIPrintSettings::kPaperSizeDefined);
+ target->SetPaperSizeUnit (nsIPrintSettings::kPaperSizeMillimeters);
+
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAPER_WIDTH,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, mm))
+ {
+ target->SetPaperWidth (value);
+ }
+
+ if (gnome_print_config_get_length (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAPER_HEIGHT,
+ &value, &unit)
+ && gnome_print_convert_distance (&value, unit, mm))
+ {
+ target->SetPaperHeight (value);
+ }
+
+ /* Mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=307404
+ * means that we cannot actually use any paper sizes except mozilla's
+ * builtin list, and we must refer to them *by name*!
+ */
+#ifndef HAVE_GECKO_1_9
+ /* Gnome-Print names some papers differently than what moz understands */
+ static const struct
+ {
+ const char *gppaper;
+ const char *mozpaper;
+ }
+ paper_table [] =
+ {
+ { "USLetter", "Letter" },
+ { "USLegal", "Legal" }
+ };
+#endif /* !HAVE_GECKO_1_9 */
+
+ /* paper name */
+ char *string = (char *) gnome_print_config_get (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_PAPER_SIZE);
+ const char *paper = string;
+
+#ifndef HAVE_GECKO_1_9
+ for (PRUint32 i = 0; i < G_N_ELEMENTS (paper_table); i++)
+ {
+ if (string != NULL &&
+ g_ascii_strcasecmp (paper_table[i].gppaper, string) == 0)
+ {
+ paper = paper_table[i].mozpaper;
+ break;
+ }
+ }
+#endif /* !HAVE_GECKO_1_9 */
+
+ NS_CStringToUTF16 (nsDependentCString(paper),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ target->SetPaperName (tmp.get());
+ g_free (string);
+
+ /* paper orientation */
+ string = (char *) gnome_print_config_get (settings->config,
+ (const guchar *) GNOME_PRINT_KEY_ORIENTATION);
+ if (string == NULL) string = g_strdup ("R0");
+
+ if (strncmp (string, "R90", 3) == 0 || strncmp (string, "R270", 4) == 0)
+ {
+ target->SetOrientation (nsIPrintSettings::kLandscapeOrientation);
+ }
+ else
+ {
+ target->SetOrientation (nsIPrintSettings::kPortraitOrientation);
+ }
+ g_free (string);
+
+ target->SetPrintInColor (TRUE);
+ target->SetPrintFrameType (frame_types[settings->frame_type]);
+}
+
+/* component registration */
+
NS_GENERIC_FACTORY_CONSTRUCTOR(GPrintingPromptService)
static const nsModuleComponentInfo sAppComps[] = {
@@ -209,15 +410,15 @@ static const nsModuleComponentInfo sAppComps[] = {
void
yelp_register_printing ()
{
- gboolean ret = TRUE;
nsresult rv;
- nsresult result;
-
nsCOMPtr<nsIComponentRegistrar> cr;
-
- result = NS_GetComponentRegistrar(getter_AddRefs(cr));
+ rv = NS_GetComponentRegistrar(getter_AddRefs(cr));
+ NS_ENSURE_SUCCESS (rv, );
+
nsCOMPtr<nsIComponentManager> cm;
- NS_GetComponentManager (getter_AddRefs (cm));
+ rv = NS_GetComponentManager (getter_AddRefs (cm));
+ NS_ENSURE_SUCCESS (rv, );
+
nsCOMPtr<nsIGenericFactory> componentFactory;
rv = NS_NewGenericFactory(getter_AddRefs(componentFactory),
&(sAppComps[0]));
@@ -225,8 +426,7 @@ yelp_register_printing ()
if (NS_FAILED(rv) || !componentFactory)
{
g_warning ("Failed to make a factory for %s\n", sAppComps[0].mDescription);
-
- ret = FALSE;
+ return;
}
rv = cr->RegisterFactory(sAppComps[0].mCID,
@@ -236,8 +436,6 @@ yelp_register_printing ()
if (NS_FAILED(rv))
{
g_warning ("Failed to register %s\n", sAppComps[0].mDescription);
-
- ret = FALSE;
}
}
diff --git a/src/yelp-gecko-services.h b/src/yelp-gecko-services.h
index 66262fe1..a3aa348a 100644
--- a/src/yelp-gecko-services.h
+++ b/src/yelp-gecko-services.h
@@ -22,8 +22,9 @@
#define __YELP_GECKO_SERVICES_H
#include <nsIPrintingPromptService.h>
-#include <nsIWebProgressListener.h>
#include <nsIPrintProgressParams.h>
+#include <nsIWebProgressListener.h>
+
#include "yelp-print.h"
#define G_PRINTINGPROMPTSERVICE_CID \
@@ -64,17 +65,15 @@ public:
virtual ~PrintListener ();
NS_DECL_ISUPPORTS
- NS_DECL_NSIWEBPROGRESSLISTENER
+ NS_DECL_NSIWEBPROGRESSLISTENER
- protected:
+ static void SetPrintSettings (YelpPrintInfo *settings, nsIPrintSettings *target);
+
+protected:
YelpPrintInfo *info;
nsIWebBrowserPrint *print;
gboolean cancel_happened;
gboolean called_finish;
};
-
-
-
-
#endif
diff --git a/src/yelp-gecko-utils.cpp b/src/yelp-gecko-utils.cpp
index 4f37d4bc..0e999285 100644
--- a/src/yelp-gecko-utils.cpp
+++ b/src/yelp-gecko-utils.cpp
@@ -21,24 +21,27 @@
*/
#include "mozilla-config.h"
-
#include "config.h"
+#include <stdlib.h>
+
+#include <nsStringAPI.h>
+
+#include <gtkmozembed.h>
+#include <gtkmozembed_internal.h>
#include <nsCOMPtr.h>
-#include <nsIInterfaceRequestorUtils.h>
-#include <nsIServiceManager.h>
#include <nsIPrefService.h>
-#include <stdlib.h>
+#include <nsIServiceManager.h>
+#include <nsServiceManagerUtils.h>
-#include "yelp-gecko-utils.h"
#include "yelp-gecko-services.h"
+#include "yelp-gecko-utils.h"
+
static nsIPrefBranch* gPrefBranch;
static const char *font_languages[] = {
- "x-western"
-#ifdef HAVE_GECKO_1_8
- ,
+ "x-western",
"ar",
"el",
"he",
@@ -64,7 +67,6 @@ static const char *font_languages[] = {
"zh-CN",
"zh-HK",
"zh-TW"
-#endif /* HAVE_GECKO_1_8 */
};
static gboolean
diff --git a/src/yelp-gecko-utils.h b/src/yelp-gecko-utils.h
index ba2bf6b0..e49b4066 100644
--- a/src/yelp-gecko-utils.h
+++ b/src/yelp-gecko-utils.h
@@ -23,7 +23,6 @@
#ifndef __YELP_GECKO_UTILS_H__
#define __YELP_GECKO_UTILS_H__
-#include <gtkmozembed.h>
#include "yelp-settings.h"
G_BEGIN_DECLS
diff --git a/src/yelp-html.cpp b/src/yelp-html.cpp
index de655131..4ff49f02 100644
--- a/src/yelp-html.cpp
+++ b/src/yelp-html.cpp
@@ -22,20 +22,18 @@
*/
#include <mozilla-config.h>
-
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-#include "yelp-html.h"
-#include "yelp-marshal.h"
+#include <libgnome/gnome-init.h>
+
+#include "yelp-gecko-services.h"
#include "yelp-gecko-utils.h"
+#include "yelp-marshal.h"
#include "yelp-settings.h"
-#include "yelp-gecko-services.h"
#include "Yelper.h"
-#include <libgnome/gnome-init.h>
+#include "yelp-html.h"
#ifdef GNOME_ENABLE_DEBUG
#define d(x) x
@@ -211,6 +209,8 @@ html_class_init (YelpHtmlClass *klass)
moz_embed_class->open_uri = html_open_uri;
klass->font_handler = 0;
+ klass->color_handler = 0;
+ klass->a11y_handler = 0;
signals[URI_SELECTED] =
g_signal_new ("uri_selected",
diff --git a/src/yelp-html.h b/src/yelp-html.h
index d2d75302..23d90711 100644
--- a/src/yelp-html.h
+++ b/src/yelp-html.h
@@ -23,9 +23,6 @@
#ifndef __YELP_HTML_H__
#define __YELP_HTML_H__
-#include <gtk/gtkobject.h>
-#include <gtk/gtktypeutils.h>
-#include <gtk/gtkmarshal.h>
#include <gtkmozembed.h>
#include "yelp-print.h"
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 799bbf2f..427802c0 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -2964,12 +2964,6 @@ window_find_again (YelpWindow *window, gboolean forward)
{
YelpWindowPriv *priv = window->priv;
-#ifndef TYPEAHEADFIND
- window_find_save_settings (window);
-
- yelp_html_set_find_props (priv->html_view, priv->find_string, FALSE, FALSE);
-#endif /* TYPEAHEADFIND */
-
return yelp_html_find_again (priv->html_view, forward);
}