summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--configure.in52
-rw-r--r--m4/gecko.m4735
-rw-r--r--src/Makefile.am51
-rw-r--r--src/Yelper.cpp335
-rw-r--r--src/Yelper.h69
-rw-r--r--src/yelp-gecko-services.cpp464
-rw-r--r--src/yelp-gecko-services.h80
-rw-r--r--src/yelp-gecko-utils.cpp271
-rw-r--r--src/yelp-gecko-utils.h41
-rw-r--r--src/yelp-html.c (renamed from src/yelp-html.cpp)337
-rw-r--r--src/yelp-html.h19
-rw-r--r--src/yelp-info-parser.c10
-rw-r--r--src/yelp-io-channel.c7
-rw-r--r--src/yelp-main.c15
-rw-r--r--src/yelp-search-parser.c10
-rw-r--r--src/yelp-window.c180
-rw-r--r--stylesheets/db2html.xsl.in24
-rw-r--r--stylesheets/mal2html.xsl.in4
-rw-r--r--stylesheets/toc2html.xsl.in4
20 files changed, 297 insertions, 2413 deletions
diff --git a/Makefile.am b/Makefile.am
index f79bc3bf..9ccead58 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,5 @@
SUBDIRS = src stylesheets po data tests
-ACLOCAL_AMFLAGS = -I m4
-
@INTLTOOL_DESKTOP_RULE@
desktopdir = $(datadir)/applications
diff --git a/configure.in b/configure.in
index 41e026dc..b0e718b3 100644
--- a/configure.in
+++ b/configure.in
@@ -4,7 +4,6 @@ GNOME_COMMON_INIT
AC_CONFIG_SRCDIR([src/yelp-main.c])
AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.9 dist-bzip2 no-dist-gzip])
AM_MAINTAINER_MODE
@@ -18,7 +17,6 @@ AM_GCONF_SOURCE_2
AC_PROG_LN_S
AC_PROG_CC
-AC_PROG_CXX
AM_PROG_CC_STDC
AC_ISC_POSIX
AC_HEADER_STDC
@@ -29,21 +27,9 @@ AM_PROG_CC_C_O
GNOME_DEBUG_CHECK
GNOME_COMPILE_WARNINGS([maximum])
-GNOME_CXX_WARNINGS
MORE_WARN_FLAGS=
DEPRECATION_FLAGS=
-if test "x$GCC" = "xyes"; then
- MOZILLA_WARN_CXXFLAGS="-Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
-fi
-
-if test "x$enable_maintainer_mode" = "xyes"; then
- AC_DEFINE([MAINTAINER_MODE],[1],[Define to enable 'maintainer-only' behaviour])
-# DEPRECATION_FLAGS="-DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGCONF_DISABLE_DEPRECATED -DGNOME_VFS_DISABLE_DEPRECATED -DBONOBO_UI_DISABLE_DEPRECATED -DBONOBO_DISABLE_DEPRECATED -DLIBGLADE_DISABLE_DEPRECATED -DPANGO_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGNOME_DISABLE_DEPRECATED"
- if test "x$GCC" = "xyes"; then
- MOZILLA_WARN_CXXFLAGS="-Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth $MOZILLA_WARN_CXXFLAGS"
- fi
-fi
if test "x$enable_debug" = "xyes"; then
AC_DEFINE([YELP_DEBUG],[1],[Enable Yelp debugging])
@@ -224,35 +210,13 @@ dnl <= Check for bzip2 > 1.0.0
dnl =>
AC_SUBST(BZ_LIBS)
-
# *****
-# Gecko
+# Webkit
# *****
-
-GECKO_INIT([MOZILLA])
-GECKO_DEFINES
-
-AC_SUBST([MOZILLA])
-AC_SUBST([MOZILLA_FLAVOUR])
-AC_SUBST([MOZILLA_INCLUDE_ROOT])
-AC_SUBST([MOZILLA_HOME])
-AC_SUBST([MOZILLA_PREFIX])
-AC_SUBST([MOZILLA_EXTRA_LIBS])
-AC_SUBST([MOZILLA_GLUE_LIBS])
-
-case "$MOZILLA" in
-xulrunner) gecko_min_version=1.8 ;;
-libxul*) gecko_min_version=1.9 ;;
-*firefox) gecko_min_version=1.5 ;;
-*) AC_MSG_ERROR([$gecko_cv_gecko is not supported])
-esac
-
-if test "$MOZILLA" = "libxul-embedding" -o "$MOZILLA" = "libxul"; then
- PKG_CHECK_MODULES([MOZILLA_COMPONENT],[$MOZILLA $gecko_cv_extra_pkg_dependencies])
- MOZILLA_COMPONENT_CFLAGS="$MOZILLA_COMPONENT_CFLAGS `$PKG_CONFIG --cflags ${gecko_cv_gecko}` `$PKG_CONFIG --define-variable=includetype=unstable --cflags ${gecko_cv_gecko}`"
-else
- PKG_CHECK_MODULES([MOZILLA_COMPONENT],[${gecko_cv_gecko}-xpcom >= $gecko_min_version $gecko_cv_extra_pkg_dependencies])
-fi
+ PKG_CHECK_MODULES(YELP_WEBKIT, "webkit-1.0")
+ AC_SUBST(YELP_WEBKIT_CFLAGS)
+ AC_SUBST(YELP_WEBKIT_LIBS)
+ AC_DEFINE(WEBKIT_BACKEND, 1, [Webkit Backend])
# *****
# SMClient
@@ -283,13 +247,12 @@ AM_CONDITIONAL([WITH_SMCLIENT_WIN32],[test "$with_smclient" = "win32"])
AM_CONDITIONAL([WITH_SMCLIENT_QUARTZ],[test "$with_smclient" = "quartz"])
# Set flags
-
AM_CPPFLAGS="$AM_CPPFLAGS $DEPRECATION_FLAGS"
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS $MORE_WARN_FLAGS"
-AM_CXXFLAGS="$AM_CXXFLAGS $WARN_CXXFLAGS $MOZILLA_WARN_CXXFLAGS"
+
+
AC_SUBST([AM_CPPFLAGS])
AC_SUBST([AM_CFLAGS])
-AC_SUBST([AM_CXXFLAGS])
AC_SUBST([AM_LDFLAGS])
AC_CONFIG_FILES([
@@ -320,7 +283,6 @@ yelp-$VERSION:
Debug enabled: ${enable_debug}
Search backend: ${search_backend}
- Mozilla version: ${MOZILLA}
Using SMClient: ${with_smclient}
"
diff --git a/m4/gecko.m4 b/m4/gecko.m4
deleted file mode 100644
index 84c47fb4..00000000
--- a/m4/gecko.m4
+++ /dev/null
@@ -1,735 +0,0 @@
-# Copyright © 2000-2004 Marco Pesenti Gritti
-# Copyright © 2003, 2004, 2005, 2006 Christian Persch
-#
-# 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 2 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, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-# GECKO_INIT(VARIABLE,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-#
-# Checks for gecko, and aborts if it's not found
-#
-# Checks for -fshort-wchar compiler variable, and adds it to
-# AM_CXXFLAGS if found
-#
-# Checks whether RTTI is enabled, and adds -fno-rtti to
-# AM_CXXFLAGS otherwise
-#
-# Checks whether the gecko build is a debug build, and adds
-# debug flags to AM_CXXFLAGS if it is.
-#
-# Expanded variables:
-# VARIABLE: Which gecko was found (e.g. "xulrunnner", "seamonkey", ...)
-# VARIABLE_FLAVOUR: The flavour of the gecko that was found
-# VARIABLE_HOME:
-# VARIABLE_NSPR: set if nspr is provided by gecko flags
-# VARIABLE_PREFIX:
-# VARIABLE_INCLUDE_ROOT:
-# VARIABLE_VERSION: The version of the gecko that was found
-# 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])
-
-AC_ARG_WITH([gecko],
- AS_HELP_STRING([--with-gecko@<:@=mozilla|firefox|seamonkey|xulrunner|libxul-embedding|libxul@:>@],
- [Which gecko engine to use (autodetected by default)]))
-
-# Backward compat
-AC_ARG_WITH([mozilla],[],[with_gecko=$withval],[])
-
-gecko_cv_gecko=$with_gecko
-
-# Autodetect gecko
-_geckos="xulrunner firefox mozilla-firefox seamonkey mozilla libxul-embedding libxul"
-if test -z "$gecko_cv_gecko"; then
- for lizard in $_geckos; do
- if $PKG_CONFIG --exists $lizard-xpcom; then
- gecko_cv_gecko=$lizard
- break;
- elif $PKG_CONFIG --exists $lizard; then
- gecko_cv_gecko=$lizard
- break;
- elif $PKG_CONFIG --exists $lizard-unstable; then
- gecko_cv_gecko=$lizard
- break;
- fi
- done
-fi
-
-AC_MSG_RESULT([$gecko_cv_gecko])
-
-if test "x$gecko_cv_gecko" = "x"; then
- ifelse([$3],,[AC_MSG_ERROR([No gecko found; you may need to adjust PKG_CONFIG_PATH or install a mozilla/firefox/xulrunner -devel package])],[$3])
- gecko_cv_have_gecko=no
-elif ! ( echo "$_geckos" | egrep "(^| )$gecko_cv_gecko(\$| )" > /dev/null); then
- AC_MSG_ERROR([Unknown gecko "$gecko_cv_gecko" specified])
-else
- ifelse([$2],,[],[$2])
- gecko_cv_have_gecko=yes
-fi
-
-AC_MSG_CHECKING([manual gecko home set])
-
-AC_ARG_WITH([gecko-home],
- AS_HELP_STRING([--with-gecko-home@<:@=[path]@:>@],
- [Manually set MOZILLA_FIVE_HOME]))
-
-gecko_cv_gecko_home=$with_gecko_home
-
-# ****************
-# Define variables
-# ****************
-
-if test "$gecko_cv_have_gecko" = "yes"; then
-
-case "$gecko_cv_gecko" in
-mozilla) gecko_cv_gecko_flavour=mozilla ;;
-seamonkey) gecko_cv_gecko_flavour=mozilla ;;
-*firefox) gecko_cv_gecko_flavour=toolkit ;;
-xulrunner) gecko_cv_gecko_flavour=toolkit ;;
-libxul*) gecko_cv_gecko_flavour=toolkit ;;
-esac
-
-if $PKG_CONFIG --exists ${gecko_cv_gecko}-xpcom; then
- _GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}-xpcom`"
- _GECKO_CFLAGS="-I$_GECKO_INCLUDE_ROOT"
- _GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
- _GECKO_HOME="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
- _GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}-xpcom`"
- _GECKO_NSPR=no # XXX asac: this is currently a blind guess and should be a AC test
-else
- _GECKO_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir ${gecko_cv_gecko}`/unstable"
- _GECKO_CFLAGS="`$PKG_CONFIG --cflags ${gecko_cv_gecko}` `$PKG_CONFIG --cflags ${gecko_cv_gecko}-unstable`"
- _GECKO_LIBDIR="`$PKG_CONFIG --variable=sdkdir ${gecko_cv_gecko}`/bin"
- _GECKO_HOME=$with_gecko_home
- _GECKO_PREFIX="`$PKG_CONFIG --variable=prefix ${gecko_cv_gecko}`"
- _GECKO_NSPR=no # XXX asac: this is currently a blind guess and should be a AC test
-fi
-fi # if gecko_cv_have_gecko
-
-if test "$gecko_cv_gecko_flavour" = "toolkit"; then
- AC_DEFINE([HAVE_MOZILLA_TOOLKIT],[1],[Define if mozilla is of the toolkit flavour])
-fi
-
-$1[]=$gecko_cv_gecko
-$1[]_FLAVOUR=$gecko_cv_gecko_flavour
-$1[]_INCLUDE_ROOT=$_GECKO_INCLUDE_ROOT
-$1[]_CFLAGS=$_GECKO_CFLAGS
-$1[]_LIBDIR=$_GECKO_LIBDIR
-$1[]_HOME=$_GECKO_HOME
-$1[]_PREFIX=$_GECKO_PREFIX
-$1[]_NSPR=$_GECKO_NSPR
-
-# **************************************************************
-# This is really gcc-only
-# Do this test using CXX only since some versions of gcc
-# 2.95-2.97 have a signed wchar_t in c++ only and some versions
-# only have short-wchar support for c++.
-# **************************************************************
-
-_GECKO_EXTRA_CPPFLAGS=
-_GECKO_EXTRA_CFLAGS=
-_GECKO_EXTRA_CXXFLAGS=
-_GECKO_EXTRA_LDFLAGS=
-
-if test "$gecko_cv_have_gecko" = "yes"; then
-
-AC_LANG_PUSH([C++])
-
-_SAVE_CXXFLAGS=$CXXFLAGS
-CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS -fshort-wchar"
-
-AC_CACHE_CHECK([for compiler -fshort-wchar option],
- gecko_cv_have_usable_wchar_option,
- [AC_RUN_IFELSE([AC_LANG_SOURCE(
- [[#include <stddef.h>
- int main () {
- return (sizeof(wchar_t) != 2) || (wchar_t)-1 < (wchar_t) 0 ;
- } ]])],
- [gecko_cv_have_usable_wchar_option="yes"],
- [gecko_cv_have_usable_wchar_option="no"],
- [gecko_cv_have_usable_wchar_option="maybe (cross-compiling)"])])
-
-CXXFLAGS="$_SAVE_CXXFLAGS"
-
-AC_LANG_POP([C++])
-
-if test "$gecko_cv_have_usable_wchar_option" = "yes"; then
- _GECKO_EXTRA_CXXFLAGS="-fshort-wchar"
- AM_CXXFLAGS="$AM_CXXFLAGS -fshort-wchar"
-fi
-
-fi # if gecko_cv_have_gecko
-
-# **************
-# Check for RTTI
-# **************
-
-if test "$gecko_cv_have_gecko" = "yes"; then
-
-AC_MSG_CHECKING([whether to enable C++ RTTI])
-AC_ARG_ENABLE([cpp-rtti],
- AS_HELP_STRING([--enable-cpp-rtti],[Enable C++ RTTI]),
- [],[enable_cpp_rtti=no])
-AC_MSG_RESULT([$enable_cpp_rtti])
-
-if test "$enable_cpp_rtti" = "no"; then
- _GECKO_EXTRA_CXXFLAGS="-fno-rtti $_GECKO_EXTRA_CXXFLAGS"
- AM_CXXFLAGS="-fno-rtti $AM_CXXFLAGS"
-fi
-
-fi # if gecko_cv_have_gecko
-
-# *************
-# Various tests
-# *************
-
-if test "$gecko_cv_have_gecko" = "yes"; then
-
-AC_LANG_PUSH([C++])
-
-_SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS"
-
-AC_MSG_CHECKING([[whether we have a gtk 2 gecko build]])
-AC_RUN_IFELSE(
- [AC_LANG_SOURCE(
- [[#include <mozilla-config.h>
- #include <string.h>
- #include <stdlib.h>
- int main(void) {
- if (strcmp (MOZ_DEFAULT_TOOLKIT, "gtk2") == 0 ||
- strcmp (MOZ_DEFAULT_TOOLKIT, "cairo-gtk2") == 0)
- return EXIT_SUCCESS;
-
- return EXIT_FAILURE;
- } ]]
- )],
- [result=yes],
- [AC_MSG_ERROR([[This program needs a gtk 2 gecko build]])],
- [result=maybe])
-AC_MSG_RESULT([$result])
-
-AC_MSG_CHECKING([[whether we have a gecko debug build]])
-AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#include <mozilla-config.h>
- #if !defined(MOZ_REFLOW_PERF) || !defined(MOZ_REFLOW_PERF_DSP)
- #error No
- #endif]]
- )],
- [gecko_cv_have_debug=yes],
- [gecko_cv_have_debug=no])
-AC_MSG_RESULT([$gecko_cv_have_debug])
-
-AC_MSG_CHECKING([[whether we have a xpcom glue]])
-AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[
- #ifndef XPCOM_GLUE
- #error "no xpcom glue found"
- #endif]]
- )],
- [gecko_cv_have_xpcom_glue=yes],
- [gecko_cv_have_xpcom_glue=no])
-AC_MSG_RESULT([$gecko_cv_have_xpcom_glue])
-
-CPPFLAGS="$_SAVE_CPPFLAGS"
-
-AC_LANG_POP([C++])
-
-if test "$gecko_cv_have_debug" = "yes"; then
- _GECKO_EXTRA_CXXFLAGS="$_GECKO_EXTRA_CXXFLAGS -DDEBUG -D_DEBUG"
- AM_CXXFLAGS="-DDEBUG -D_DEBUG $AM_CXXFLAGS"
-
- AC_DEFINE([HAVE_GECKO_DEBUG],[1],[Define if gecko is a debug build])
-fi
-
-if test "$gecko_cv_have_xpcom_glue" = "yes"; then
- AC_DEFINE([HAVE_GECKO_XPCOM_GLUE],[1],[Define if xpcom glue is used])
-fi
-
-fi # if gecko_cv_have_gecko
-
-# ***********************
-# Check for gecko version
-# ***********************
-
-if test "$gecko_cv_have_gecko" = "yes"; then
-
-AC_LANG_PUSH([C++])
-
-_SAVE_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $_GECKO_CFLAGS"
-
-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_int="$(echo "$gecko_cv_gecko_version" | $AWK -F . '{print [$]1 * 1000000 + [$]2 * 1000 + [$]3}')"
-
-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_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_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_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
-
-if test "${gecko_cv_gecko}" = "libxul-embedding" -o "${gecko_cv_gecko}" = "libxul"; then
- PKG_CHECK_EXISTS([${gecko_cv_gecko} >= 1.9.1],[gecko_cv_have_gecko_1_9_1=yes gecko_cv_gecko_version="1.9.1" gecko_cv_gecko_version_int=1009001],[gecko_cv_have_gecko_1_9_1=no])
-else
- gecko_cv_have_gecko_1_9_1=no
-fi
-
-if test "$gecko_cv_have_gecko_1_9_1" = "yes"; then
- AC_DEFINE([HAVE_GECKO_1_9_1],[1],[Define if we have gecko 1.9.1])
-fi
-
-fi # if gecko_cv_have_gecko
-
-$1[]_VERSION=$gecko_cv_gecko_version
-$1[]_VERSION_INT=$gecko_cv_gecko_version_int
-
-# **************************************************
-# Packages that we need to check for with pkg-config
-# **************************************************
-
-gecko_cv_extra_libs=
-gecko_cv_glue_libs=
-gecko_cv_extra_pkg_dependencies=
-
-if test "$gecko_cv_gecko_version_int" -ge "1009000"; then
- if ! test "$gecko_cv_have_xpcom_glue" = "yes"; then
- gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul"
- else
- gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue"
- fi
-else
- gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed"
-fi
-
-$1[]_EXTRA_PKG_DEPENDENCIES="$gecko_cv_extra_pkg_dependencies"
-$1[]_EXTRA_LIBS="$gecko_cv_extra_libs"
-$1[]_GLUE_LIBS="$gecko_cv_glue_libs"
-
-])
-
-# GECKO_DEFINES
-#
-# Defines the AM_CONDITIONALS for GECKO_INIT. This is a separate call
-# so that you may call GECKO_INIT conditionally; but note that you must
-# call GECKO_DEFINES _unconditionally_ !
-
-AC_DEFUN([GECKO_DEFINES],
-[
-# Ensure we have an integer variable to compare with
-if test -z "$gecko_cv_gecko_version_int"; then
- gecko_cv_gecko_version_int=0
-fi
-AM_CONDITIONAL([HAVE_MOZILLA_TOOLKIT],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_flavour" = "toolkit"])
-AM_CONDITIONAL([HAVE_GECKO_DEBUG],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_have_debug" = "yes"])
-AM_CONDITIONAL([HAVE_GECKO_1_7],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1007000"])
-AM_CONDITIONAL([HAVE_GECKO_1_8],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1008000"])
-AM_CONDITIONAL([HAVE_GECKO_1_8_1],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1008001"])
-AM_CONDITIONAL([HAVE_GECKO_1_9],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_gecko_version_int" -ge "1009000"])
-AM_CONDITIONAL([HAVE_GECKO_1_9_1],[test "$gecko_cv_have_gecko" = "yes" -a "$gecko_cv_have_gecko_1_9_1" = "yes"])
-AM_CONDITIONAL([HAVE_GECKO_HOME],[test "x$_GECKO_HOME" != "x"])
-AM_CONDITIONAL([HAVE_GECKO_DEBUG],[test "$gecko_cv_have_debug" = "yes"])
-AM_CONDITIONAL([HAVE_GECKO_XPCOM_GLUE],[test "$gecko_cv_have_xpcom_glue" = "yes"])
-])
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# _GECKO_DISPATCH(MACRO, INCLUDEDIRS, ...)
-
-m4_define([_GECKO_DISPATCH],
-[
-
-if test "$gecko_cv_have_gecko" != "yes"; then
- AC_MSG_FAILURE([Gecko not present; can't run this test!])
-fi
-
-AC_LANG_PUSH([C++])
-
-_SAVE_CPPFLAGS="$CPPFLAGS"
-_SAVE_CXXFLAGS="$CXXFLAGS"
-_SAVE_LDFLAGS="$LDFLAGS"
-_SAVE_LIBS="$LIBS"
-if test "${gecko_cv_gecko}" = "libxul-embedding" -o "${gecko_cv_gecko}" = "libxul"; then
- CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-unstable)"
- CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-unstable)"
- LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}) -ldl"
-else
- CPPFLAGS="$CPPFLAGS $_GECKO_EXTRA_CPPFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-I ${gecko_cv_gecko}-xpcom)"
- CXXFLAGS="$CXXFLAGS $_GECKO_EXTRA_CXXFLAGS $_GECKO_CFLAGS $($PKG_CONFIG --cflags-only-other ${gecko_cv_gecko}-xpcom)"
- LIBS="$LIBS $($PKG_CONFIG --libs ${gecko_cv_gecko}-xpcom)"
-fi
-if test -n "$_GECKO_HOME"; then
- LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS -Wl,--rpath=$_GECKO_HOME"
-else
- LDFLAGS="$LDFLAGS $_GECKO_EXTRA_LDFLAGS"
-fi
-
-_GECKO_DISPATCH_INCLUDEDIRS="$2"
-
-# Sigh Gentoo has a rubbish header layout
-# http://bugs.gentoo.org/show_bug.cgi?id=100804
-# Mind you, it's useful to be able to test against uninstalled mozilla builds...
-_GECKO_DISPATCH_INCLUDEDIRS="$_GECKO_DISPATCH_INCLUDEDIRS dom necko pref"
-
-# Now add them to CPPFLAGS - asac: well ... not anymore since 1.9 -> test whether they exist before adding.
-for i in $_GECKO_DISPATCH_INCLUDEDIRS; do
- if test -d "$_GECKO_INCLUDE_ROOT/$i"; then
- CPPFLAGS="$CPPFLAGS -I$_GECKO_INCLUDE_ROOT/$i"
- fi
-done
-
-m4_indir([$1],m4_shiftn(2,$@))
-
-CPPFLAGS="$_SAVE_CPPFLAGS"
-CXXFLAGS="$_SAVE_CXXFLAGS"
-LDFLAGS="$_SAVE_LDFLAGS"
-LIBS="$_SAVE_LIBS"
-
-AC_LANG_POP([C++])
-
-])# _GECKO_DISPATCH
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# GECKO_CHECK_HEADERS(INCLUDEDIRS, HEADERS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [INCLUDES])
-
-AC_DEFUN([GECKO_CHECK_HEADERS],[_GECKO_DISPATCH([AC_CHECK_HEADERS],$@)])
-
-# GECKO_COMPILE_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-
-AC_DEFUN([GECKO_COMPILE_IFELSE],[_GECKO_DISPATCH([AC_COMPILE_IFELSE],$@)])
-
-# GECKO_RUN_IFELSE(INCLUDEDIRS, PROGRAM, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-
-AC_DEFUN([GECKO_RUN_IFELSE],[_GECKO_DISPATCH([AC_RUN_IFELSE],$@)])
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# GECKO_XPCOM_PROGRAM([PROLOGUE], [BODY])
-#
-# Produce a template C++ program which starts XPCOM up and shuts it down after
-# the BODY part has run. In BODY, the the following variables are predeclared:
-#
-# nsresult rv
-# int status = 1 (EXIT_FAILURE)
-#
-# The program's exit status will be |status|; set it to 0 (or EXIT_SUCCESS)
-# to indicate success and to a value between 1 (EXIT_FAILURE) and 120 to
-# indicate failure.
-#
-# To jump out of the BODY and exit the test program, you can use |break|.
-
-AC_DEFUN([GECKO_XPCOM_PROGRAM],
-[AC_LANG_PROGRAM([[
-#include <mozilla-config.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef XPCOM_GLUE
-#include <nsXPCOMGlue.h>
-#else
-#include <nsXPCOM.h>
-#endif // XPCOM_GLUE
-
-#include <nsCOMPtr.h>
-#include <nsILocalFile.h>
-#include <nsIServiceManager.h>
-#if defined(HAVE_GECKO_1_8) || defined(HAVE_GECKO_1_9)
-#include <nsStringAPI.h>
-#else
-#include <nsString.h>
-#endif
-]]
-[$1],
-[[
-
-nsresult rv;
-#ifdef XPCOM_GLUE
- static const GREVersionRange greVersion = {
- "1.8", PR_TRUE,
- "1.9.*", PR_TRUE
- };
- char xpcomLocation[4096];
- rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096);
- if (NS_FAILED(rv)) {
- exit(123);
- }
-
- // Startup the XPCOM Glue that links us up with XPCOM.
- XPCOMGlueStartup(xpcomLocation);
- if (NS_FAILED(rv)) {
- exit(124);
- }
-#endif // XPCOM_GLUE
-
-// redirect unwanted mozilla debug output to the bit bucket
-freopen ("/dev/null", "w", stdout);
-
-nsCOMPtr<nsILocalFile> directory = nsnull;
-#ifndef XPCOM_GLUE
-rv = NS_NewNativeLocalFile (NS_LITERAL_CSTRING("$_GECKO_HOME"), PR_FALSE,
- getter_AddRefs (directory));
-if (NS_FAILED (rv) || !directory) {
- exit (126);
-}
-#endif
-
-rv = NS_InitXPCOM2 (nsnull, directory, nsnull);
-if (NS_FAILED (rv)) {
- exit (125);
-}
-
-int status = EXIT_FAILURE;
-
-// now put in the BODY, scoped with do...while(0) to ensure we don't hold a
-// COMptr after XPCOM shutdown and so we can jump out with a simple |break|.
-do {
-]]
-m4_shiftn(1,$@)
-[[
-} while (0);
-
-NS_ShutdownXPCOM (nsnull);
-exit (status);
-]])
-]) # GECKO_XPCOM_PROGRAM
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# GECKO_XPCOM_PROGRAM_CHECK([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [ACTION-IF-CROSS-COMPILING])
-#
-# Checks whether we can build and run any XPCOM test programs at all
-
-AC_DEFUN([GECKO_XPCOM_PROGRAM_CHECK],
-[AC_REQUIRE([GECKO_INIT])dnl
-
-AC_CACHE_CHECK([whether we can compile and run XPCOM programs],
-[gecko_cv_xpcom_program_check],
-[
-gecko_cv_xpcom_program_check=no
-
-GECKO_RUN_IFELSE([],
- [GECKO_XPCOM_PROGRAM([],[[status = EXIT_SUCCESS;]])],
- [gecko_cv_xpcom_program_check=yes],
- [gecko_cv_xpcom_program_check=no],
- [gecko_cv_xpcom_program_check=maybe])
-])
-
-if test "$gecko_cv_xpcom_program_check" = "yes"; then
- ifelse([$2],,[:],[$2])
-else
- ifelse([$3],,[AC_MSG_FAILURE([Cannot compile and run XPCOM programs])],
- [$3])
-fi
-
-]) # GECKO_XPCOM_PROGRAM_CHECK
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# GECKO_CHECK_CONTRACTID(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Checks wheter CONTRACTID is a registered contract ID
-
-AC_DEFUN([GECKO_CHECK_CONTRACTID],
-[AC_REQUIRE([GECKO_INIT])dnl
-
-AS_VAR_PUSHDEF([gecko_cv_have_CID],[gecko_cv_have_$1])
-
-AC_CACHE_CHECK([for the $1 XPCOM component],
-gecko_cv_have_CID,
-[
-AS_VAR_SET(gecko_cv_have_CID,[no])
-
-GECKO_RUN_IFELSE([],
-[GECKO_XPCOM_PROGRAM([[
-#include <nsIComponentRegistrar.h>
-]],[[
-status = 99;
-nsCOMPtr<nsIComponentRegistrar> registrar;
-rv = NS_GetComponentRegistrar (getter_AddRefs (registrar));
-if (NS_FAILED (rv)) break;
-
-status = 98;
-PRBool isRegistered = PR_FALSE;
-rv = registrar->IsContractIDRegistered ("$1", &isRegistered);
-if (NS_FAILED (rv)) break;
-
-status = isRegistered ? EXIT_SUCCESS : 97;
-]])
-],
-[AS_VAR_SET(gecko_cv_have_CID,[yes])],
-[AS_VAR_SET(gecko_cv_have_CID,[no])],
-[AS_VAR_SET(gecko_cv_have_CID,[maybe])])
-
-])
-
-if test AS_VAR_GET(gecko_cv_have_CID) = "yes"; then
- ifelse([$2],,[:],[$2])
-else
- ifelse([$3],,[AC_MSG_ERROR([dnl
-Contract ID "$1" is not registered, but $PACKAGE_NAME depends on it.])],
- [$3])
-fi
-
-AS_VAR_POPDEF([gecko_cv_have_CID])
-
-]) # GECKO_CHECK_CONTRACTID
-
-# GECKO_CHECK_CONTRACTIDS(CONTRACTID, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Checks wheter CONTRACTIDs are registered contract IDs.
-# If ACTION-IF-NOT-FOUND is given, it is executed when one of the contract IDs
-# is not found and the missing contract ID is in the |as_contractid| variable.
-
-AC_DEFUN([GECKO_CHECK_CONTRACTIDS],
-[AC_REQUIRE([GECKO_INIT])dnl
-
-result=yes
-as_contractid=
-for as_contractid in $1
-do
- GECKO_CHECK_CONTRACTID([$as_contractid],[],[result=no; break;])
-done
-
-if test "$result" = "yes"; then
- ifelse([$2],,[:],[$2])
-else
- ifelse([$3],,[AC_MSG_ERROR([dnl
-Contract ID "$as_contractid" is not registered, but $PACKAGE_NAME depends on it.])],
- [$3])
-fi
-
-]) # GECKO_CHECK_CONTRACTIDS
-
-# ***************************************************************************
-# ***************************************************************************
-# ***************************************************************************
-
-# GECKO_XPIDL([ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-#
-# Checks for xpidl program and include directory
-#
-# Variables set:
-# XPIDL: the xpidl program
-# XPIDL_IDLDIR: the xpidl include directory
-
-AC_DEFUN([GECKO_XPIDL],
-[AC_REQUIRE([GECKO_INIT])dnl
-
-if test ${gecko_cv_gecko} = "libxul-embedding" -o ${gecko_cv_gecko} = "libxul"; then
- _GECKO_LIBDIR="`$PKG_CONFIG pkg-config --variable=sdkdir ${gecko_cv_gecko}`/bin"
-else
- _GECKO_LIBDIR="`$PKG_CONFIG --variable=libdir ${gecko_cv_gecko}-xpcom`"
-fi
-
-AC_PATH_PROG([XPIDL],[xpidl],[no],[$_GECKO_LIBDIR:$PATH])
-
-if test ${gecko_cv_gecko} = "libxul-embedding" -o ${gecko_cv_gecko} = "libxul"; then
-XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}`"
-else
-XPIDL_IDLDIR="`$PKG_CONFIG --variable=idldir ${gecko_cv_gecko}-xpcom`"
-if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then
- XPIDL_IDLDIR="`echo $_GECKO_LIBDIR | sed -e s!lib!share/idl!`"
-fi
-# Some distributions (Gentoo) have it in unusual places
-if test -z "$XPIDL_IDLDIR" -o ! -f "$XPIDL_IDLDIR/nsISupports.idl"; then
- XPIDL_IDLDIR="$_GECKO_INCLUDE_ROOT/idl"
-fi
-
-if test "$XPIDL" != "no" -a -n "$XPIDL_IDLDIR" -a -f "$XPIDL_IDLDIR/nsISupports.idl"; then
- ifelse([$1],,[:],[$1])
-else
- ifelse([$2],,[AC_MSG_FAILURE([XPIDL program or include directory not found])],[$2])
-fi
-
-])
diff --git a/src/Makefile.am b/src/Makefile.am
index 4d7cb708..39575fb9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,23 +1,19 @@
bin_PROGRAMS = yelp
yelp_SOURCES = \
- Yelper.cpp Yelper.h \
yelp-base.c yelp-base.h \
yelp-bookmarks.c yelp-bookmarks.h \
yelp-debug.c yelp-debug.h \
yelp-error.c yelp-error.h \
- yelp-gecko-utils.cpp yelp-gecko-utils.h \
- yelp-html.cpp yelp-html.h \
+ yelp-html.c yelp-html.h \
yelp-io-channel.c yelp-io-channel.h \
yelp-settings.c yelp-settings.h \
yelp-utils.c yelp-utils.h \
yelp-window.c yelp-window.h \
yelp-marshal.c yelp-marshal.h \
yelp-main.c \
- yelp-print.c yelp-print.h \
yelp-page.c yelp-page.h \
yelp-transform.c yelp-transform.h \
- yelp-gecko-services.h yelp-gecko-services.cpp \
yelp-document.h yelp-document.c \
yelp-toc.h yelp-toc.c \
yelp-docbook.h yelp-docbook.c \
@@ -31,6 +27,7 @@ yelp_SOURCES = \
yelp-search.c yelp-search.h \
yelp-search-parser.c yelp-search-parser.h
+
YELP_DEFINES = \
-DG_LOG_DOMAIN=\"Yelp\" \
-DPREFIX=\""$(prefix)"\" \
@@ -41,47 +38,19 @@ YELP_DEFINES = \
-DSERVERDIR=\"$(libexecdir)\" \
-DBINDIR=\""$(bindir)"\" \
-DSHAREDIR=\""$(pkgdatadir)"\" \
- -DMOZILLA_HOME=\""$(MOZILLA_HOME)\"" \
-DGDU_ICON_PATH=\"$(GDU_ICON_PATH)\"
-mozilla_include_subdirs = \
- . \
- commandhandler \
- content \
- docshell \
- dom \
- fastfind \
- find \
- gtkembedmoz \
- gfx \
- layout \
- necko \
- pref \
- string \
- uriloader \
- webbrwsr \
- webshell \
- widget
-
yelp_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir)/src \
$(YELP_DEFINES) \
$(AM_CPPFLAGS)
-yelp_CPPFLAGS += $(MOZILLA_COMPONENT_CFLAGS)
-yelp_CPPFLAGS += $(addprefix -I$(MOZILLA_INCLUDE_ROOT)/,$(mozilla_include_subdirs))
-
yelp_CFLAGS = \
$(YELP_CFLAGS) \
$(YELP_SEARCH_CFLAGS) \
- $(AM_CFLAGS)
-
-yelp_CXXFLAGS = \
- $(YELP_CFLAGS) \
- $(YELP_SEARCH_CFLAGS) \
- $(MOZILLA_COMPONENT_CFLAGS) \
- $(AM_CXXFLAGS)
+ $(AM_CFLAGS) \
+ $(YELP_WEBKIT_CFLAGS)
yelp_LDADD = \
$(YELP_LIBS) \
@@ -90,17 +59,11 @@ yelp_LDADD = \
$(Z_LIBS) \
$(BZ_LIBS) \
$(LZMADEC_LIBS) \
- $(X_LIBS) \
- $(MOZILLA_COMPONENT_LIBS) \
- $(MOZILLA_EXTRA_LIBS) \
- $(MOZILLA_GLUE_LIBS)
+ $(YELP_WEBKIT_LIBS) \
+ $(X_LIBS)
yelp_LDFLAGS = $(AM_LDFLAGS)
-if !HAVE_GECKO_XPCOM_GLUE
-yelp_LDFLAGS += -R$(MOZILLA_HOME)
-endif
-
if WITH_SMCLIENT
yelp_SOURCES += \
eggdesktopfile.c \
@@ -220,7 +183,7 @@ CLEANFILES = xgen-ymh xgen-ymc
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
-EXTRA_DIST = yelp-marshal.list yelp-infos.xml
+EXTRA_DIST = yelp-marshal.list yelp-infos.xml yelp-print.c yelp-print.h
install-exec-hook:
rm -f $(DESTDIR)$(bindir)/gnome-help && \
diff --git a/src/Yelper.cpp b/src/Yelper.cpp
deleted file mode 100644
index c05db149..00000000
--- a/src/Yelper.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Copyright (C) 2000-2004 Marco Pesenti Gritti
- * Copyright (C) 2003-2006 Christian Persch
- *
- * 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 2, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Id$
- */
-
-#include <mozilla-config.h>
-#include <config.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <nsStringAPI.h>
-
-#include <gtkmozembed.h>
-#include <gtkmozembed_internal.h>
-#include <nsComponentManagerUtils.h>
-#include <nsICommandManager.h>
-#include <nsIDocShell.h>
-#include <nsIDOMDocument.h>
-#include <nsIDOMEventTarget.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 <nsISelectionController.h>
-#include <nsITypeAheadFind.h>
-#include <nsIWebBrowser.h>
-#include <nsIWebBrowserPrint.h>
-#include <nsIWebBrowserSetup.h>
-#include <nsServiceManagerUtils.h>
-
-#ifndef HAVE_GECKO_1_9
-#include <nsIDocShell.h>
-#include <nsIDocShellTreeItem.h>
-#include <nsISelectionDisplay.h>
-#include <nsISimpleEnumerator.h>
-#include <nsITypeAheadFind.h>
-#endif /* !HAVE_GECKO_1_9 */
-
-#include "yelp-debug.h"
-#include "yelp-gecko-services.h"
-
-#include "Yelper.h"
-
-#define NS_TYPEAHEADFIND_CONTRACTID "@mozilla.org/typeaheadfind;1"
-
-Yelper::Yelper (GtkMozEmbed *aEmbed)
-: mInitialised(PR_FALSE)
-, mSelectionAttention(PR_FALSE)
-, mEmbed(aEmbed)
-{
- debug_print (DB_DEBUG, "Yelper ctor [%p]\n", this);
-}
-
-Yelper::~Yelper ()
-{
- debug_print (DB_DEBUG, "Yelper dtor [%p]\n", this);
-}
-
-nsresult
-Yelper::Init ()
-{
- if (mInitialised) return NS_OK;
-
- nsresult rv = NS_ERROR_FAILURE;
- gtk_moz_embed_get_nsIWebBrowser (mEmbed,
- getter_AddRefs (mWebBrowser));
- NS_ENSURE_TRUE (mWebBrowser, rv);
-
- nsCOMPtr<nsIWebBrowserSetup> setup (do_QueryInterface (mWebBrowser, &rv));
- NS_ENSURE_SUCCESS (rv, rv);
-
- setup->SetProperty (nsIWebBrowserSetup::SETUP_USE_GLOBAL_HISTORY, PR_FALSE);
-
- rv = mWebBrowser->GetContentDOMWindow (getter_AddRefs (mDOMWindow));
- NS_ENSURE_SUCCESS (rv, rv);
-
- /* This will instantiate an about:blank doc if necessary */
- nsCOMPtr<nsIDOMDocument> domDocument;
- rv = mDOMWindow->GetDocument (getter_AddRefs (domDocument));
- NS_ENSURE_SUCCESS (rv, rv);
-
- mFinder = do_CreateInstance (NS_TYPEAHEADFIND_CONTRACTID, &rv);
- NS_ENSURE_SUCCESS (rv, rv);
-
- nsCOMPtr<nsIDocShell> docShell (do_GetInterface (mWebBrowser, &rv));
- NS_ENSURE_SUCCESS (rv, rv);
-
- rv = mFinder->Init (docShell);
- NS_ENSURE_SUCCESS (rv, rv);
-
-#ifdef HAVE_GECKO_1_9
-// mFinder->SetSelectionModeAndRepaint (nsISelectionController::SELECTION_ON);
-#else
- mFinder->SetFocusLinks (PR_TRUE);
-#endif
-
- mInitialised = PR_TRUE;
-
- return NS_OK;
-}
-
-void
-Yelper::Destroy ()
-{
- mEmbed = nsnull;
- mWebBrowser = nsnull;
- mDOMWindow = nsnull;
- mFinder = nsnull;
-
- mInitialised = PR_FALSE;
-}
-
-void
-Yelper::DoCommand (const char *aCommand)
-{
- if (!mInitialised) return;
-
- nsCOMPtr<nsICommandManager> cmdManager (do_GetInterface (mWebBrowser));
- if (!cmdManager) return;
-
- cmdManager->DoCommand (aCommand, nsnull, nsnull);
-}
-
-void
-Yelper::SetFindProperties (const char *aSearchString,
- PRBool aCaseSensitive,
- PRBool aWrap)
-{
- if (!mInitialised) return;
-
- mFinder->SetCaseSensitive (aCaseSensitive);
- /* aWrap not supported for typeaheadfind
- * search string is set in ::Find for typeaheadfind
- */
-}
-
-PRBool
-Yelper::Find (const char *aSearchString)
-{
- NS_ENSURE_TRUE (aSearchString, PR_FALSE);
-
- if (!mInitialised) return PR_FALSE;
-
- SetSelectionAttention (PR_TRUE);
-
- nsresult rv;
- PRUint16 found = nsITypeAheadFind::FIND_NOTFOUND;
- rv = mFinder->Find (NS_ConvertUTF8toUTF16 (aSearchString),
- PR_FALSE /* links only? */,
- &found);
-
- return NS_SUCCEEDED (rv) && (found == nsITypeAheadFind::FIND_FOUND || found == nsITypeAheadFind::FIND_WRAPPED);
-}
-
-PRBool
-Yelper::FindAgain (PRBool aForward)
-{
- if (!mInitialised) return PR_FALSE;
-
- SetSelectionAttention (PR_TRUE);
-
- nsresult rv;
- PRUint16 found = nsITypeAheadFind::FIND_NOTFOUND;
-#ifdef HAVE_GECKO_1_9
- rv = mFinder->FindAgain (!aForward,
- PR_FALSE /* links only? */,
- &found);
-#else
- if (aForward) {
- rv = mFinder->FindNext (&found);
- }
- else {
- rv = mFinder->FindPrevious (&found);
- }
-#endif /* HAVE_GECKO_1_9 */
-
- return NS_SUCCEEDED (rv) && (found == nsITypeAheadFind::FIND_FOUND || found == nsITypeAheadFind::FIND_WRAPPED);
-}
-
-void
-Yelper::SetSelectionAttention (PRBool aAttention)
-{
-#if 0
- if (aAttention == mSelectionAttention) return;
-
- mSelectionAttention = aAttention;
-
- NS_ENSURE_TRUE (mFinder, );
-
- PRInt16 display;
- if (aAttention) {
- display = nsISelectionController::SELECTION_ATTENTION;
- }
- else {
- display = nsISelectionController::SELECTION_ON;
- }
-
-#ifdef HAVE_GECKO_1_9
- mFinder->SetSelectionModeAndRepaint (display);
-#else
- nsresult rv;
- nsCOMPtr<nsIDocShell> shell (do_GetInterface (mWebBrowser, &rv));
- /* It's okay for this to fail, if the tab is closing, or if
- * we weren't attached to any tab yet
- */
- if (NS_FAILED (rv) || !shell) return;
-
- nsCOMPtr<nsISimpleEnumerator> enumerator;
- rv = shell->GetDocShellEnumerator (nsIDocShellTreeItem::typeContent,
- nsIDocShell::ENUMERATE_FORWARDS,
- getter_AddRefs (enumerator));
- NS_ENSURE_SUCCESS (rv, );
-
- PRBool hasMore = PR_FALSE;
- while (NS_SUCCEEDED (enumerator->HasMoreElements (&hasMore)) && hasMore) {
- nsCOMPtr<nsISupports> element;
- enumerator->GetNext (getter_AddRefs (element));
- if (!element) continue;
-
- nsCOMPtr<nsISelectionDisplay> sd (do_GetInterface (element));
- if (!sd) continue;
-
- nsCOMPtr<nsISelectionController> controller (do_QueryInterface (sd));
- if (!controller) continue;
-
- controller->SetDisplaySelection (display);
- }
-#endif /* HAVE_GECKO_1_9 */
-#endif /* 0 */
-}
-
-void
-Yelper::ProcessMouseEvent (void* aEvent)
-{
- g_return_if_fail (aEvent != NULL);
-
- nsIDOMEvent *domEvent = static_cast<nsIDOMEvent*>(aEvent);
- nsCOMPtr<nsIDOMMouseEvent> event (do_QueryInterface (domEvent));
- if (!event) return;
-
- PRUint16 button = 2;
- event->GetButton (&button);
-
- /* Mozilla uses 2 as its right mouse button code */
- if (button != 2) return;
-
- nsCOMPtr<nsIDOMNSEvent> nsEvent (do_QueryInterface (event));
- if (!nsEvent) return;
-
- nsresult rv;
- nsCOMPtr<nsIDOMEventTarget> originalTarget;
- rv = nsEvent->GetOriginalTarget (getter_AddRefs (originalTarget));
- if (NS_FAILED (rv) || !originalTarget) return;
-
- nsCOMPtr <nsIDOMHTMLAnchorElement> anchor (do_QueryInterface (originalTarget));
- if (!anchor) return;
-
- nsString href;
- rv = anchor->GetHref (href);
- if (NS_FAILED (rv) || !href.Length ()) return;
-
- g_signal_emit_by_name (mEmbed, "popupmenu_requested",
- NS_ConvertUTF16toUTF8 (href).get());
-}
-
-nsresult
-Yelper::Print (YelpPrintInfo *print_info, PRBool preview, int *prev_pages)
-{
- nsresult rv;
-
- nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface (mWebBrowser, &rv));
- NS_ENSURE_SUCCESS (rv, rv);
-
- nsCOMPtr<nsIPrintSettings> settings;
-
- rv = print->GetGlobalPrintSettings (getter_AddRefs (settings));
- NS_ENSURE_SUCCESS (rv, rv);
-
- rv = PrintListener::SetPrintSettings (print_info, preview, settings);
-
- NS_ENSURE_SUCCESS (rv, rv);
-
- nsCOMPtr<PrintListener> listener = new PrintListener (print_info, print);
-
- if (!preview)
- rv = print->Print (settings, listener);
- else {
- rv = print->PrintPreview (settings, mDOMWindow, nsnull);
- rv |= print->GetPrintPreviewNumPages (prev_pages);
- }
- return rv;
-
-}
-
-nsresult
-Yelper::PrintPreviewNavigate (int page_no)
-{
- nsresult rv;
- nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface (mWebBrowser, &rv));
- NS_ENSURE_SUCCESS (rv, rv);
-
- return print->PrintPreviewNavigate (0, page_no);
-}
-
-nsresult
-Yelper::PrintPreviewEnd ()
-{
- nsresult rv;
- nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface (mWebBrowser, &rv));
- NS_ENSURE_SUCCESS (rv, rv);
-
- return print->ExitPrintPreview ();
-
-}
diff --git a/src/Yelper.h b/src/Yelper.h
deleted file mode 100644
index 50c86e13..00000000
--- a/src/Yelper.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2000-2004 Marco Pesenti Gritti
- * Copyright (C) 2003-2005 Christian Persch
- *
- * 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 2, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Id$
- */
-
-#ifndef __YELPER_H__
-#define __YELPER_H__
-
-#include <gtkmozembed.h>
-#include <nsCOMPtr.h>
-
-#include "yelp-print.h"
-
-class nsIDOMWindow;
-class nsITypeAheadFind;
-class nsIWebBrowser;
-
-class Yelper
-{
-public:
- Yelper (GtkMozEmbed *aEmbed);
- ~Yelper ();
-
- nsresult Init ();
- void Destroy ();
-
- void DoCommand (const char *aCommand);
-
- void SetFindProperties (const char *aSearchString,
- PRBool aCaseSensitive,
- PRBool aWrap);
- PRBool Find (const char *aSearchString);
- PRBool FindAgain (PRBool aForward);
- void SetSelectionAttention (PRBool aSelectionAttention);
-
- void ProcessMouseEvent (void *aEvent);
-
- nsresult Print (YelpPrintInfo *print_info, PRBool preview,
- int *prev_pages);
- nsresult PrintPreviewNavigate (int page_no);
- nsresult PrintPreviewEnd ();
-
-private:
- PRPackedBool mInitialised;
- PRPackedBool mSelectionAttention;
-
- GtkMozEmbed *mEmbed;
- nsCOMPtr<nsIWebBrowser> mWebBrowser;
- nsCOMPtr<nsIDOMWindow> mDOMWindow;
- nsCOMPtr<nsITypeAheadFind> mFinder;
-};
-
-#endif /* !__YELPER_H__ */
diff --git a/src/yelp-gecko-services.cpp b/src/yelp-gecko-services.cpp
deleted file mode 100644
index 1ee3a229..00000000
--- a/src/yelp-gecko-services.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Copyright (C) 2002 Philip Langdale
- * Copyright (C) 2003-2004 Christian Persch
- * Copyright (C) 2005 Juerg Billeter
- * Copyright (C) 2005 Don Scorgie <Don@Scorgie.org>
- *
- * 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 2, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
-
-#include <mozilla-config.h>
-#include <config.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <nsStringAPI.h>
-
-#include <nsCOMPtr.h>
-#include <nsIComponentManager.h>
-#include <nsComponentManagerUtils.h>
-#include <nsIComponentRegistrar.h>
-#include <nsIGenericFactory.h>
-#include <nsILocalFile.h>
-#include <nsIPrintSettings.h>
-#include <nsServiceManagerUtils.h>
-
-#ifdef XPCOM_GLUE
-#include <nsXPCOMGlue.h>
-#else
-#include <nsXPCOM.h>
-#endif
-
-#include "yelp-gecko-services.h"
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS3(GPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener, nsIPrintProgressParams)
-
- GPrintingPromptService::GPrintingPromptService()
-{
- mPrintInfo = NULL;
-}
-
-GPrintingPromptService::~GPrintingPromptService()
-{
- if (mPrintInfo != NULL)
- {
- yelp_print_info_free (mPrintInfo);
- }
-}
-
-/* void showPrintDialog (in nsIDOMWindow parent, in nsIWebBrowserPrint webBrowserPrint, in nsIPrintSettings printSettings); */
-NS_IMETHODIMP GPrintingPromptService::ShowPrintDialog(nsIDOMWindow *parent, nsIWebBrowserPrint *webBrowserPrint, nsIPrintSettings *printSettings)
-{
- return NS_OK;
-
-}
-
-/* void showProgress (in nsIDOMWindow parent, in nsIWebBrowserPrint webBrowserPrint, in nsIPrintSettings printSettings, in nsIObserver openDialogObserver, in boolean isForPrinting, out nsIWebProgressListener webProgressListener, out nsIPrintProgressParams printProgressParams, out boolean notifyOnOpen); */
-NS_IMETHODIMP GPrintingPromptService::ShowProgress(nsIDOMWindow *parent, nsIWebBrowserPrint *webBrowserPrint, nsIPrintSettings *printSettings, nsIObserver *openDialogObserver, PRBool isForPrinting, nsIWebProgressListener **webProgressListener, nsIPrintProgressParams **printProgressParams, PRBool *notifyOnOpen)
-{
- return NS_OK;
-}
-
-/* void showPageSetup (in nsIDOMWindow parent, in nsIPrintSettings printSettings, in nsIObserver printObserver); */
-NS_IMETHODIMP GPrintingPromptService::ShowPageSetup(nsIDOMWindow *parent, nsIPrintSettings *printSettings,
- nsIObserver *printObserver)
-{
- return NS_OK;
-}
-
-/* void showPrinterProperties (in nsIDOMWindow parent, in wstring printerName, in nsIPrintSettings printSettings); */
-NS_IMETHODIMP GPrintingPromptService::ShowPrinterProperties(nsIDOMWindow *parent, const PRUnichar *printerName, nsIPrintSettings *printSettings)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-
-/* void onStateChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aStateFlags, in nsresult aStatus); */
-NS_IMETHODIMP GPrintingPromptService::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 aStateFlags, nsresult aStatus)
-{
- return NS_OK;
-}
-
-/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */
-NS_IMETHODIMP GPrintingPromptService::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress)
-{
- return NS_OK;
-}
-
-/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location); */
-NS_IMETHODIMP GPrintingPromptService::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */
-NS_IMETHODIMP GPrintingPromptService::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const PRUnichar *aMessage)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */
-NS_IMETHODIMP GPrintingPromptService::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 state)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute wstring docTitle; */
-NS_IMETHODIMP GPrintingPromptService::GetDocTitle(PRUnichar * *aDocTitle)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP GPrintingPromptService::SetDocTitle(const PRUnichar * aDocTitle)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* attribute wstring docURL; */
-NS_IMETHODIMP GPrintingPromptService::GetDocURL(PRUnichar * *aDocURL)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-NS_IMETHODIMP GPrintingPromptService::SetDocURL(const PRUnichar * aDocURL)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMPL_ISUPPORTS1(PrintListener, nsIWebProgressListener)
-
- PrintListener::PrintListener (YelpPrintInfo *in, nsIWebBrowserPrint *p)
-{
- info = in;
- print = p;
- cancel_happened = FALSE;
- /*NULL*/
-
-}
-
-PrintListener::~PrintListener ()
-{
- /*NULL*/
-}
-
-/* void onStateChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aStateFlags, in nsresult aStatus); */
-NS_IMETHODIMP PrintListener::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 aStateFlags, nsresult aStatus)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */
-NS_IMETHODIMP PrintListener::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress)
-{
- yelp_print_update_progress (info,
- (1.0 * aCurTotalProgress) / (aMaxTotalProgress * 1.0));
-
- if (info->cancelled && !cancel_happened) {
- /* This doesn't seem to actually cancel anything.
- * therefore, the best course of action is to ignore it
- * until we've finished printing to the file
- * and then free it - Mozilla bug #253926
- */
- print->Cancel();
- cancel_happened = TRUE;
- }
- if (aCurTotalProgress == 100 && aMaxTotalProgress == 100) /* 100% finished */
- yelp_print_moz_finished (info);
- return NS_OK;
-}
-
-/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location); */
-NS_IMETHODIMP PrintListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */
-NS_IMETHODIMP PrintListener::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const PRUnichar *aMessage)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */
-NS_IMETHODIMP PrintListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 state)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* static functions */
-
-/* static */nsresult
-PrintListener::SetPrintSettings (YelpPrintInfo *settings,
- PRBool preview,
- nsIPrintSettings * target)
-{
- nsString tmp;
-
- /* This is a bastard mix of old Yelp stuff, old epiphany stuff
- * and new epiphany stuff. It does work though.
- */
- /* Initialisation */
- target->SetIsInitializedFromPrinter (PR_FALSE);
- target->SetIsInitializedFromPrefs (PR_FALSE);
- target->SetPrintSilent (PR_FALSE);
- target->SetShowPrintProgress (PR_TRUE);
- target->SetNumCopies (1);
-
- /* We always print PS to a file and then hand that off to gtk-print */
- target->SetPrinterName (NS_LITERAL_STRING ("PostScript/default").get());
- target->SetPrintToFile (PR_FALSE);
-
- /* This is the time between printing each page, in ms.
- * It 'gives the user more time to press cancel' !
- * We don't want any of this nonsense, so set this to a low value,
- * just enough to update the print dialogue.
- */
- target->SetPrintPageDelay (50);
-
- if (!preview) {
- gchar *base;
- const gchar *temp_dir;
- gint fd;
- GtkPageSet pageSet;
- GtkPrintPages printPages;
-
- target->SetPrintToFile (PR_TRUE);
-
- 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());
-
- pageSet = gtk_print_settings_get_page_set (settings->config);
- target->SetPrintOptions (nsIPrintSettings::kPrintEvenPages,
- pageSet != GTK_PAGE_SET_ODD);
- target->SetPrintOptions (nsIPrintSettings::kPrintEvenPages,
- pageSet != GTK_PAGE_SET_EVEN);
-
- target->SetPrintReversed (gtk_print_settings_get_reverse (settings->config));
-
- printPages = gtk_print_settings_get_print_pages (settings->config);
- switch (printPages) {
- case GTK_PRINT_PAGES_RANGES: {
- int numRanges = 0;
- GtkPageRange *pageRanges = gtk_print_settings_get_page_ranges (settings->config, &numRanges);
- if (numRanges > 0) {
- /* FIXME: We can only support one range,
- * For now, ignore more ranges */
- target->SetPrintRange (nsIPrintSettings::kRangeSpecifiedPageRange);
- target->SetStartPageRange (pageRanges[0].start+1);
- target->SetEndPageRange (pageRanges[0].end+1);
-
- g_free (pageRanges);
- }
- break;
- }
- case GTK_PRINT_PAGES_CURRENT:
- /* not supported, fall through */
- case GTK_PRINT_PAGES_ALL:
- target->SetPrintRange (nsIPrintSettings::kRangeAllPages);
- break;
- /* FIXME: we need some custom ranges here, "Selection" and
- * "Focused Frame" */
- }
- } else {
- target->SetPrintOptions (nsIPrintSettings::kPrintEvenPages, PR_TRUE);
- target->SetPrintOptions (nsIPrintSettings::kPrintEvenPages, PR_TRUE);
- target->SetPrintReversed (PR_FALSE);
- target->SetPrintRange (nsIPrintSettings::kRangeAllPages);
- }
-
- switch (gtk_print_settings_get_orientation (settings->config)) {
- case GTK_PAGE_ORIENTATION_PORTRAIT:
- case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT: /* not supported */
- target->SetOrientation (nsIPrintSettings::kPortraitOrientation);
- break;
- case GTK_PAGE_ORIENTATION_LANDSCAPE:
- case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE: /* not supported */
- target->SetOrientation (nsIPrintSettings::kLandscapeOrientation);
- break;
- }
-
- target->SetPrintInColor (gtk_print_settings_get_use_color (settings->config));
-
- target->SetPaperSizeUnit(nsIPrintSettings::kPaperSizeMillimeters);
-
- GtkPaperSize *paperSize = gtk_page_setup_get_paper_size (settings->setup);
- if (!paperSize) {
- g_warning ("Paper size not set. Aborting!\n");
- return NS_ERROR_FAILURE;
- }
-
- target->SetPaperSizeType (nsIPrintSettings::kPaperSizeDefined);
- target->SetPaperWidth (gtk_paper_size_get_width (paperSize, GTK_UNIT_MM));
- target->SetPaperHeight (gtk_paper_size_get_height (paperSize, GTK_UNIT_MM));
-
-#ifdef HAVE_GECKO_1_9
- target->SetPaperName (NS_ConvertUTF8toUTF16 (gtk_paper_size_get_name (paperSize)).get ());
-#else
- {
- /* 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*!
- */
- static const struct {
- const char gtkPaperName[13];
- const char mozPaperName[10];
- } paperTable [] = {
- { GTK_PAPER_NAME_A5, "A5" },
- { GTK_PAPER_NAME_A4, "A4" },
- { GTK_PAPER_NAME_A3, "A3" },
- { GTK_PAPER_NAME_LETTER, "Letter" },
- { GTK_PAPER_NAME_LEGAL, "Legal" },
- { GTK_PAPER_NAME_EXECUTIVE, "Executive" },
- };
-
- const char *paperName = gtk_paper_size_get_name (paperSize);
-
- PRUint32 i;
- for (i = 0; i < G_N_ELEMENTS (paperTable); i++) {
- if (g_ascii_strcasecmp (paperTable[i].gtkPaperName, paperName) == 0) {
- paperName = paperTable[i].mozPaperName;
- break;
- }
- }
- if (i == G_N_ELEMENTS (paperTable)) {
- /* Not in table, fall back to A4 */
- g_warning ("Unknown paper name '%s', falling back to A4",
- gtk_paper_size_get_name (paperSize));
- paperName = paperTable[1].mozPaperName;
- }
-
- target->SetPaperName (NS_ConvertUTF8toUTF16 (paperName).get ());
- }
-#endif /* !HAVE_GECKO_1_9 */
-
- /* Sucky mozilla wants margins in inch! */
- target->SetMarginTop (gtk_page_setup_get_top_margin (settings->setup, GTK_UNIT_INCH));
- target->SetMarginBottom (gtk_page_setup_get_bottom_margin (settings->setup, GTK_UNIT_INCH));
- target->SetMarginLeft (gtk_page_setup_get_left_margin (settings->setup, GTK_UNIT_INCH));
- target->SetMarginRight (gtk_page_setup_get_right_margin (settings->setup, GTK_UNIT_INCH));
-
-
- 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());
-
- /* FIXME I think this is the right default, but this prevents the user
- * from cancelling the print immediately, see the stupid comment in
- * nsPrintEngine:
- * "DO NOT allow the print job to be cancelled if it is Print FrameAsIs
- * because it is only printing one page."
- * We work around this by just not sending the job to the printer then.
- */
- target->SetPrintFrameType(nsIPrintSettings::kFramesAsIs); /* FIXME setting */
- target->SetPrintFrameTypeUsage (nsIPrintSettings::kUseSettingWhenPossible);
-
- target->SetScaling (gtk_print_settings_get_scale (settings->config) / 100.0);
-
- /* FIXME: What do these do? Need to learn to fix them properly
- * For now, leave at Epiphany type defaults
- */
-
- target->SetShrinkToFit (PR_FALSE); /* FIXME setting */
-
- target->SetPrintBGColors (PR_FALSE); /* FIXME setting */
- target->SetPrintBGImages (PR_FALSE); /* FIXME setting */
-
- /* target->SetPlexName (LITERAL ("default")); */
- /* target->SetColorspace (LITERAL ("default")); */
- /* target->SetResolutionName (LITERAL ("default")); */
- /* target->SetDownloadFonts (PR_TRUE); */
-
- return NS_OK;
-
-};
-
-/* component registration */
-
-NS_GENERIC_FACTORY_CONSTRUCTOR(GPrintingPromptService)
-
-static const nsModuleComponentInfo sAppComps[] = {
- {
- G_PRINTINGPROMPTSERVICE_CLASSNAME,
- G_PRINTINGPROMPTSERVICE_CID,
- G_PRINTINGPROMPTSERVICE_CONTRACTID,
- GPrintingPromptServiceConstructor
- },
-};
-
-void
-yelp_register_printing ()
-{
- nsresult rv;
- nsCOMPtr<nsIComponentRegistrar> cr;
- rv = NS_GetComponentRegistrar(getter_AddRefs(cr));
- NS_ENSURE_SUCCESS (rv, );
-
- nsCOMPtr<nsIComponentManager> cm;
- rv = NS_GetComponentManager (getter_AddRefs (cm));
- NS_ENSURE_SUCCESS (rv, );
-
- nsCOMPtr<nsIGenericFactory> componentFactory;
- componentFactory = do_CreateInstance ("@mozilla.org/generic-factory;1", &rv);
-
- if (NS_FAILED(rv) || !componentFactory)
- {
- g_warning ("Failed to make a factory for %s\n", sAppComps[0].mDescription);
- return;
- }
-
- componentFactory->SetComponentInfo(&(sAppComps[0]));
-
- rv = cr->RegisterFactory(sAppComps[0].mCID,
- sAppComps[0].mDescription,
- sAppComps[0].mContractID,
- componentFactory);
- if (NS_FAILED(rv))
- {
- g_warning ("Failed to register %s\n", sAppComps[0].mDescription);
- }
-
-}
diff --git a/src/yelp-gecko-services.h b/src/yelp-gecko-services.h
deleted file mode 100644
index c9a8dca6..00000000
--- a/src/yelp-gecko-services.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2000 Marco Pesenti Gritti
- * Copyright (C) 2005 Don Scorgie <Don@Scorgie.org>
- *
- * 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 2, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef __YELP_GECKO_SERVICES_H
-#define __YELP_GECKO_SERVICES_H
-
-#include <nsIPrintingPromptService.h>
-#include <nsIPrintProgressParams.h>
-#include <nsIWebProgressListener.h>
-
-#include "yelp-print.h"
-
-#define G_PRINTINGPROMPTSERVICE_CID \
- { /* dbf438d3-5f62-4978-a700-6fc39447477c */ \
- 0xdbf438d3, 0x5f62, 0x4978, \
- { 0xa7, 0x00, 0x6f, 0xc3, 0x94, 0x47, 0x47, 0x7c } }
-
-#define G_PRINTINGPROMPTSERVICE_CLASSNAME "Yelps Printing Prompt Service"
-#define G_PRINTINGPROMPTSERVICE_CONTRACTID "@mozilla.org/embedcomp/printingprompt-service;1"
-
-void yelp_register_printing ();
-
-/* Overwriting PrintPromptService makes the default mozilla print dialog
- * not appear. We already have our print dialog shown
- */
-class GPrintingPromptService : public nsIPrintingPromptService, nsIWebProgressListener, nsIPrintProgressParams
-{
-public:
- NS_DECL_ISUPPORTS
- NS_DECL_NSIPRINTINGPROMPTSERVICE
- NS_DECL_NSIWEBPROGRESSLISTENER
- NS_DECL_NSIPRINTPROGRESSPARAMS
-
- GPrintingPromptService();
- virtual ~GPrintingPromptService();
-
-protected:
- YelpPrintInfo *mPrintInfo;
-};
-
-/* The PrintListener allows us to update the progress bars.
- * Its not much help, but better than nothing
- */
-class PrintListener : public nsIWebProgressListener
-{
-public:
- PrintListener (YelpPrintInfo *in, nsIWebBrowserPrint *p);
- virtual ~PrintListener ();
-
- NS_DECL_ISUPPORTS
- NS_DECL_NSIWEBPROGRESSLISTENER
-
- static nsresult SetPrintSettings (YelpPrintInfo *settings, PRBool preview,
- 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
deleted file mode 100644
index 42bba2e3..00000000
--- a/src/yelp-gecko-utils.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2004 Marco Pesenti Gritti
- *
- * 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 2 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Marco Pesenti Gritti <marco@gnome.org>
- */
-
-#include "mozilla-config.h"
-#include "config.h"
-
-#include <stdlib.h>
-
-#include <nsStringAPI.h>
-
-#ifdef HAVE_GECKO_1_9
-#include <gtkmozembed_glue.cpp>
-#endif
-
-#include <gtkmozembed.h>
-#include <gtkmozembed_internal.h>
-#include <nsCOMPtr.h>
-#include <nsIPrefService.h>
-#include <nsIServiceManager.h>
-#include <nsServiceManagerUtils.h>
-
-#include "yelp-gecko-services.h"
-
-#include "yelp-gecko-utils.h"
-
-static nsIPrefBranch* gPrefBranch;
-
-static const char *font_languages[] = {
- "x-western",
- "ar",
- "el",
- "he",
- "ja",
- "ko",
- "th",
- "tr",
- "x-armn",
- "x-baltic",
- "x-beng",
- "x-cans",
- "x-central-euro",
- "x-cyrillic",
- "x-devanagari",
- "x-ethi",
- "x-geor",
- "x-gujr",
- "x-guru",
- "x-khmr",
- "x-mlym",
- "x-tamil",
- "x-unicode",
- "zh-CN",
- "zh-HK",
- "zh-TW"
-};
-
-static gboolean
-yelp_util_split_font_string (const gchar *font_name, gchar **name, gint *size)
-{
- PangoFontDescription *desc;
- PangoFontMask mask = (PangoFontMask) (PANGO_FONT_MASK_FAMILY | PANGO_FONT_MASK_SIZE);
- gboolean retval = FALSE;
-
- if (!font_name) return FALSE;
-
- desc = pango_font_description_from_string (font_name);
- if (!desc) return FALSE;
-
- if ((pango_font_description_get_set_fields (desc) & mask) == mask) {
- *size = PANGO_PIXELS (pango_font_description_get_size (desc));
- *name = g_strdup (pango_font_description_get_family (desc));
- retval = TRUE;
- }
-
- pango_font_description_free (desc);
-
- return retval;
-}
-
-static gboolean
-gecko_prefs_set_bool (const gchar *key, gboolean value)
-{
- NS_ENSURE_TRUE (gPrefBranch, FALSE);
-
- return NS_SUCCEEDED(gPrefBranch->SetBoolPref (key, value));
-}
-
-static gboolean
-gecko_prefs_set_string (const gchar *key, const gchar *value)
-{
- NS_ENSURE_TRUE (gPrefBranch, FALSE);
-
- return NS_SUCCEEDED(gPrefBranch->SetCharPref (key, value));
-}
-
-static gboolean
-gecko_prefs_set_int (const gchar *key, gint value)
-{
- NS_ENSURE_TRUE (gPrefBranch, FALSE);
-
- return NS_SUCCEEDED(gPrefBranch->SetIntPref (key, value));
-}
-
-extern "C" void
-yelp_gecko_set_caret (gboolean value)
-{
- gecko_prefs_set_bool ("accessibility.browsewithcaret", value);
-}
-
-extern "C" void
-yelp_gecko_set_color (YelpColorType type, const gchar *color)
-{
- gecko_prefs_set_bool ("browser.display.use_system_colors", FALSE);
- switch (type) {
- case YELP_COLOR_FG:
- gecko_prefs_set_string ("browser.display.foreground_color",
- color);
- break;
- case YELP_COLOR_BG:
- gecko_prefs_set_string ("browser.display.background_color",
- color);
- break;
- case YELP_COLOR_ANCHOR:
- gecko_prefs_set_string ("browser.anchor_color",
- color);
- break;
- default:
- break;
- }
-}
-
-extern "C" void
-yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname)
-{
- char *name = NULL;
- char pref[128];
- int size = 0;
- guint i;
-
- if (!yelp_util_split_font_string (fontname, &name, &size)) {
- g_free (name);
- return;
- }
-
- gecko_prefs_set_string ("font.size.unit", "pt");
-
- switch (font_type) {
- case YELP_FONT_VARIABLE:
- for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) {
- g_snprintf (pref, sizeof (pref),
- "font.name.variable.%s",
- font_languages[i]);
- gecko_prefs_set_string (pref, name);
-
- g_snprintf (pref, sizeof (pref),
- "font.size.variable.%s",
- font_languages[i]);
- gecko_prefs_set_int (pref, size);
-
- g_snprintf (pref, sizeof (pref),
- "font.minimum-size.%s",
- font_languages[i]);
- gecko_prefs_set_int (pref, 8);
- }
- break;
- case YELP_FONT_FIXED:
- for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) {
- g_snprintf (pref, sizeof (pref),
- "font.name.fixed.%s",
- font_languages[i]);
- gecko_prefs_set_string (pref, name);
-
- g_snprintf (pref, sizeof (pref),
- "font.size.fixed.%s",
- font_languages[i]);
- gecko_prefs_set_int (pref, size);
- }
-
- break;
- default:
- break;
- }
-
- g_free (name);
-}
-
-extern "C" gboolean
-yelp_gecko_init (void)
-{
-#ifdef HAVE_GECKO_1_9
- NS_LogInit ();
-#endif
-
- nsresult rv;
-#ifdef XPCOM_GLUE
- static const GREVersionRange greVersion = {
- "1.9a", PR_TRUE,
- "2", PR_TRUE
- };
- char xpcomLocation[PATH_MAX];
- rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, sizeof (xpcomLocation));
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- // Startup the XPCOM Glue that links us up with XPCOM.
- rv = XPCOMGlueStartup(xpcomLocation);
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- rv = GTKEmbedGlueStartup();
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- rv = GTKEmbedGlueStartupInternal();
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- char *lastSlash = strrchr(xpcomLocation, '/');
- if (lastSlash)
- *lastSlash = '\0';
-
- gtk_moz_embed_set_path(xpcomLocation);
-
-#else
-#ifdef HAVE_GECKO_1_9
- gtk_moz_embed_set_path (MOZILLA_HOME);
-#else
- gtk_moz_embed_set_comp_path (MOZILLA_HOME);
-#endif
-#endif // XPCOM_GLUE
-
- gtk_moz_embed_push_startup ();
-
- yelp_register_printing ();
-
- nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv));
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- rv = CallQueryInterface (prefService, &gPrefBranch);
- NS_ENSURE_SUCCESS (rv, FALSE);
-
- return TRUE;
-}
-
-extern "C" void
-yelp_gecko_shutdown (void)
-{
- NS_IF_RELEASE (gPrefBranch);
- gPrefBranch = nsnull;
-
- gtk_moz_embed_pop_startup ();
-
-#ifdef HAVE_GECKO_1_9
- NS_LogTerm ();
-#endif
-}
diff --git a/src/yelp-gecko-utils.h b/src/yelp-gecko-utils.h
deleted file mode 100644
index e49b4066..00000000
--- a/src/yelp-gecko-utils.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2004 Marco Pesenti Gritti
- *
- * 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 2 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Marco Pesenti Gritti <marco@gnome.org>
- */
-
-#ifndef __YELP_GECKO_UTILS_H__
-#define __YELP_GECKO_UTILS_H__
-
-#include "yelp-settings.h"
-
-G_BEGIN_DECLS
-
-void yelp_gecko_set_caret (gboolean value);
-void yelp_gecko_set_color (YelpColorType type,
- const gchar *color);
-void yelp_gecko_set_font (YelpFontType font_type,
- const gchar *fontname);
-gboolean yelp_gecko_init (void);
-void yelp_gecko_shutdown (void);
-
-G_END_DECLS
-
-#endif /* __YELP_GECKO_UTILS_H__ */
-
diff --git a/src/yelp-html.cpp b/src/yelp-html.c
index aa9371da..fae92748 100644
--- a/src/yelp-html.cpp
+++ b/src/yelp-html.c
@@ -21,17 +21,15 @@
* Author: Marco Pesenti Gritti <marco@gnome.org>
*/
-#include <mozilla-config.h>
#include <config.h>
-
-#include <string.h>
-
-#include "yelp-gecko-services.h"
-#include "yelp-gecko-utils.h"
#include "yelp-marshal.h"
#include "yelp-settings.h"
-#include "Yelper.h"
+#include <string.h>
+#include <webkit/webkitwebframe.h>
+#include <webkit/webkitnetworkrequest.h>
+#include <webkit/webkitwebview.h>
+#include <webkit/webkitwebsettings.h>
#include "yelp-html.h"
#include "yelp-debug.h"
@@ -40,16 +38,19 @@
#define YELP_HTML_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_HTML, YelpHtmlPriv))
struct _YelpHtmlPriv {
- Yelper *yelper;
+ GString *content;
+ gchar *mime;
+ gchar *find_string;
+ gboolean initialised;
gchar *base_uri;
gchar *anchor;
gboolean frames_enabled;
guint timeout;
};
-static void html_set_fonts (void);
-static void html_set_colors (void);
-static void html_set_a11y (void);
+static void html_set_fonts (YelpHtml *html);
+static void html_set_colors (YelpHtml *html);
+static void html_set_a11y (YelpHtml *html);
enum {
URI_SELECTED,
@@ -63,56 +64,58 @@ static guint signals[LAST_SIGNAL] = { 0 };
static GObjectClass *parent_class = NULL;
-static void
-html_title (GtkMozEmbed *embed)
-{
- YelpHtml *html = YELP_HTML (embed);
- char *new_title;
+static gboolean
+html_open_uri (WebKitWebView* view,
+ WebKitWebFrame* web_frame,
+ WebKitNetworkRequest* req,
+ WebKitWebNavigationAction* action,
+ WebKitWebPolicyDecision* decision,
+ gpointer data)
+{
+ const gchar *uri = webkit_network_request_get_uri (req);
+ WebKitNavigationResponse resp = WEBKIT_NAVIGATION_RESPONSE_IGNORE;
+ YelpHtml *html = YELP_HTML (view);
+ gboolean block_load;
+ gchar *real_uri;
- new_title = gtk_moz_embed_get_title (embed);
+ debug_print (DB_FUNCTION, "entering\n");
+ debug_print (DB_ARG, " uri = \"%s\"\n", uri);
- if (new_title && *new_title != '\0')
- {
- g_signal_emit (html, signals[TITLE_CHANGED], 0, new_title);
- g_free (new_title);
+ /* Only emit our signals on clicks */
+ if (webkit_web_navigation_action_get_reason (action) != WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
+ webkit_web_policy_decision_use (decision);
+ return TRUE;
}
-}
-static gint
-html_dom_mouse_down (GtkMozEmbed *embed, gpointer dom_event)
-{
- YelpHtml *html = YELP_HTML (embed);
-
- html->priv->yelper->ProcessMouseEvent (dom_event);
+ real_uri = g_strdup (uri);
- return FALSE;
-}
+ /* If we got an URI with an anchor, that means we got to a
+ * reference; we want to get what comes after #, and replace what
+ * is after ? in the base URI we have
+ */
+ if (g_str_has_prefix (uri, html->priv->base_uri)) {
+ gint length = strlen (html->priv->base_uri);
-static gint
-html_open_uri (GtkMozEmbed *embed, const gchar *uri)
-{
- YelpHtml *html = YELP_HTML (embed);
- gboolean block_load = FALSE;
+ if (uri[length] == '#') {
+ gchar *question_mark = g_strrstr (real_uri, "?");
+ gchar *tmp = real_uri;
- g_return_val_if_fail (uri != NULL, FALSE);
+ *question_mark = '\0';
+ real_uri = g_strdup_printf ("%s?%s", tmp, uri + length + 1);
- debug_print (DB_FUNCTION, "entering\n");
- debug_print (DB_ARG, " uri = \"%s\"\n", uri);
-
- if (g_str_equal (html->priv->base_uri, uri)) {
- /* As of xulrunner 1.6.2, open_uri is called in response
- to the base URI we pass in.
- */
- return FALSE;
+ g_free (tmp);
+ }
}
if (!html->priv->frames_enabled) {
- g_signal_emit (html, signals[URI_SELECTED], 0, uri, FALSE);
- block_load = TRUE;
+ g_signal_emit (html, signals[URI_SELECTED], 0, real_uri, FALSE);
} else {
- g_signal_emit (html, signals[FRAME_SELECTED], 0, uri, FALSE, &block_load);
+ g_signal_emit (html, signals[FRAME_SELECTED], 0, real_uri, FALSE, &block_load);
}
- return block_load;
+
+ g_free (real_uri);
+ webkit_web_policy_decision_ignore (decision);
+ return TRUE;
}
#ifdef HAVE_GECKO_1_9
@@ -156,23 +159,6 @@ html_realize (GtkWidget *widget)
GTK_WIDGET_CLASS (parent_class)->realize (widget);
- nsresult rv;
- rv = html->priv->yelper->Init ();
-
- if (NS_FAILED (rv)) {
- g_warning ("Yelper initialization failed for %p\n", (void*) html);
- }
-
-#ifdef HAVE_GECKO_1_9
- if (!gail_get_root_restored) {
- gail_get_root_restored = TRUE;
- if (atk_class && gail_get_root) {
- gtk_widget_get_accessible (widget);
- atk_class->get_root = gail_get_root;
- }
- }
-#endif
-
}
static void
@@ -186,30 +172,35 @@ html_init (YelpHtml *html)
priv->base_uri = NULL;
priv->anchor = NULL;
priv->timeout = 0;
+ priv->content = NULL;
+ priv->mime = NULL;
+ priv->initialised = FALSE;
- priv->yelper = new Yelper (GTK_MOZ_EMBED (html));
klass = YELP_HTML_GET_CLASS (html);
if (!klass->font_handler) {
klass->font_handler =
yelp_settings_notify_add (YELP_SETTINGS_INFO_FONTS,
(GHookFunc) html_set_fonts,
- NULL);
- html_set_fonts ();
+ html);
+ html_set_fonts (html);
}
if (!klass->color_handler) {
klass->color_handler =
yelp_settings_notify_add (YELP_SETTINGS_INFO_COLOR,
(GHookFunc) html_set_colors,
- NULL);
- html_set_colors ();
+ html);
+ html_set_colors (html);
}
if (!klass->a11y_handler) {
klass->a11y_handler =
yelp_settings_notify_add (YELP_SETTINGS_INFO_A11Y,
(GHookFunc) html_set_a11y,
- NULL);
- html_set_a11y ();
+ html);
+ html_set_a11y (html);
}
+
+ g_signal_connect (html, "navigation-policy-decision-requested",
+ G_CALLBACK (html_open_uri), NULL);
}
static void
@@ -217,8 +208,6 @@ html_dispose (GObject *object)
{
YelpHtml *html = YELP_HTML (object);
- html->priv->yelper->Destroy ();
-
parent_class->dispose (object);
}
@@ -228,13 +217,14 @@ html_finalize (GObject *object)
YelpHtml *html = YELP_HTML (object);
YelpHtmlPriv *priv = html->priv;
- delete priv->yelper;
if (priv->timeout)
g_source_remove (priv->timeout);
g_free (priv->base_uri);
g_free (priv->anchor);
+ g_signal_handlers_disconnect_by_func (html, html_open_uri, NULL);
+
parent_class->finalize (object);
}
@@ -243,7 +233,7 @@ html_class_init (YelpHtmlClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkMozEmbedClass *moz_embed_class = GTK_MOZ_EMBED_CLASS (klass);
+ WebKitWebViewClass* wc_class = WEBKIT_WEB_VIEW_CLASS (klass);
parent_class = (GObjectClass *) g_type_class_peek_parent (klass);
@@ -252,9 +242,6 @@ html_class_init (YelpHtmlClass *klass)
widget_class->realize = html_realize;
- moz_embed_class->title = html_title;
- moz_embed_class->dom_mouse_down = html_dom_mouse_down;
- moz_embed_class->open_uri = html_open_uri;
klass->font_handler = 0;
klass->color_handler = 0;
@@ -282,16 +269,6 @@ html_class_init (YelpHtmlClass *klass)
G_TYPE_BOOLEAN,
2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
- signals[TITLE_CHANGED] =
- g_signal_new ("title_changed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (YelpHtmlClass,
- title_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1, G_TYPE_STRING);
signals[POPUPMENU_REQUESTED] =
g_signal_new ("popupmenu_requested",
@@ -325,7 +302,7 @@ yelp_html_get_type (void)
(GInstanceInitFunc) html_init,
};
- type = g_type_register_static (GTK_TYPE_MOZ_EMBED,
+ type = g_type_register_static (WEBKIT_TYPE_WEB_VIEW,
"YelpHtml",
&info, (GTypeFlags) 0);
}
@@ -358,7 +335,10 @@ yelp_html_set_base_uri (YelpHtml *html, const gchar *uri)
if (priv->base_uri)
g_free (priv->base_uri);
- priv->base_uri = g_strdup (uri);
+ if (uri[0] == '/')
+ priv->base_uri = g_strdup_printf ("file://%s", uri);
+ else
+ priv->base_uri = g_strdup (uri);
}
void
@@ -367,22 +347,29 @@ yelp_html_open_stream (YelpHtml *html, const gchar *mime)
debug_print (DB_FUNCTION, "entering\n");
html->priv->frames_enabled = FALSE;
- gtk_moz_embed_open_stream (GTK_MOZ_EMBED (html),
- html->priv->base_uri,
- mime);
+ if (html->priv->content)
+ g_string_free (html->priv->content, TRUE);
+ html->priv->content = NULL;
+ g_free (html->priv->mime);
+ html->priv->mime = g_strdup(mime);
}
void
yelp_html_write (YelpHtml *html, const gchar *data, gint len)
{
- if (len == -1) len = strlen (data);
+ gchar *tmp = NULL;
+
+ if (len == -1) len = strlen (data);
debug_print (DB_FUNCTION, "entering\n");
debug_print (DB_ARG, " data = %i bytes\n", strlen (data));
debug_print (DB_ARG, " len = %i\n", len);
- gtk_moz_embed_append_data (GTK_MOZ_EMBED (html),
- data, len);
+ if (html->priv->content) {
+ g_string_append_len (html->priv->content, data, len);
+ } else {
+ html->priv->content = g_string_new_len (data, len);
+ }
}
void
@@ -410,47 +397,51 @@ yelp_html_printf (YelpHtml *html, char *format, ...)
g_free (string);
}
-/* Fire "children_changed::add" event to refresh "UI-Grab" window of GOK,
- * this event is not fired when using gtk_moz_embed_xxx_stream,
- * see Mozilla bug #293670. Done in a timeout to allow mozilla to
- * actually draw to the screen */
-
-static gboolean
-timeout_update_gok (YelpHtml *html)
-{
- g_signal_emit_by_name (gtk_widget_get_accessible (GTK_WIDGET (html)),
- "children_changed::add", -1, NULL, NULL);
- html->priv->timeout = 0;
- return FALSE;
-}
void
yelp_html_close (YelpHtml *html)
{
debug_print (DB_FUNCTION, "entering\n");
- gtk_moz_embed_close_stream (GTK_MOZ_EMBED (html));
-#ifdef HAVE_GECKO_1_9
- html_reset_accessible_parent (GTK_WIDGET (html));
-#else
- html->priv->timeout = g_timeout_add_seconds (2,
- (GSourceFunc) timeout_update_gok,
- html);
-#endif
+ if (!html->priv->initialised) {
+ html->priv->initialised = TRUE;
+ html_set_fonts (html);
+ html_set_colors (html);
+ html_set_a11y (html);
+ webkit_web_view_set_maintains_back_forward_list (WEBKIT_WEB_VIEW (html), FALSE);
+ }
+
+ webkit_web_view_load_string (WEBKIT_WEB_VIEW (html),
+ html->priv->content->str,
+ html->priv->mime,
+ NULL,
+ html->priv->base_uri);
+ g_string_free (html->priv->content, TRUE);
+ html->priv->content = NULL;
+ g_free (html->priv->mime);
+ html->priv->mime = NULL;
}
gboolean
yelp_html_find (YelpHtml *html,
const gchar *find_string)
{
- return html->priv->yelper->Find (find_string);
+ if (html->priv->find_string)
+ g_free(html->priv->find_string);
+ html->priv->find_string = g_strdup (find_string);
+ return webkit_web_view_search_text (WEBKIT_WEB_VIEW (html),
+ find_string, FALSE,
+ TRUE, TRUE);
}
gboolean
yelp_html_find_again (YelpHtml *html,
gboolean forward)
{
- return html->priv->yelper->FindAgain ((PRBool) forward);
+ return webkit_web_view_search_text (WEBKIT_WEB_VIEW (html),
+ html->priv->find_string,
+ FALSE,
+ forward, TRUE);
}
void
@@ -459,7 +450,7 @@ yelp_html_set_find_props (YelpHtml *html,
gboolean match_case,
gboolean wrap)
{
- html->priv->yelper->SetFindProperties (str, (PRBool) match_case, (PRBool) wrap);
+ /* Empty */
}
void
@@ -479,79 +470,117 @@ yelp_html_jump_to_anchor (YelpHtml *html,
void
yelp_html_copy_selection (YelpHtml *html)
{
- html->priv->yelper->DoCommand ("cmd_copy");
+ webkit_web_view_copy_clipboard (WEBKIT_WEB_VIEW (html));
}
void
yelp_html_select_all (YelpHtml *html)
{
- html->priv->yelper->DoCommand ("cmd_selectAll");
+ webkit_web_view_select_all (WEBKIT_WEB_VIEW (html));
}
void
-yelp_html_print (YelpHtml *html, YelpPrintInfo *info, gboolean preview, gint *npages)
+yelp_html_print (YelpHtml *html)
{
- html->priv->yelper->Print (info, preview, npages);
-}
-
-void
-yelp_html_preview_navigate (YelpHtml *html, gint page_no)
-{
- html->priv->yelper->PrintPreviewNavigate (page_no);
-}
-
-void
-yelp_html_preview_end (YelpHtml *html)
-{
- html->priv->yelper->PrintPreviewEnd ();
+ webkit_web_view_execute_script (WEBKIT_WEB_VIEW (html), "print();");
}
static void
-html_set_fonts (void)
+html_set_fonts (YelpHtml *html)
{
gchar *font;
+ WebKitWebSettings *settings;
+ GValue *name, *size;
+ gchar *str_name;
+ gint i_size;
+ gchar *tmp;
+
+ settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (html));
font = yelp_settings_get_font (YELP_FONT_VARIABLE);
- yelp_gecko_set_font (YELP_FONT_VARIABLE, font);
+
+ /* We have to separate the string into name and size and then
+ * assign to the 2 gvalues */
+ tmp = g_strrstr (font, " ");
+ if (!tmp) {
+ g_warning ("Cannot decode font pattern %s", font);
+ g_free (font);
+ return;
+ }
+
+ name = g_new0 (GValue, 1);
+ size = g_new0 (GValue, 1);
+
+ name = g_value_init (name, G_TYPE_STRING);
+ size = g_value_init (size, G_TYPE_INT);
+
+ str_name = g_strndup (font, tmp - font);
+
+ i_size = g_strtod (tmp, NULL);
+
+ g_value_set_string (name, str_name);
+ g_value_set_int (size, i_size);
+
+ g_object_set_property (G_OBJECT (settings), "default-font-family",
+ name);
+ g_object_set_property (G_OBJECT (settings), "default-font-size",
+ size);
+
g_free (font);
font = yelp_settings_get_font (YELP_FONT_FIXED);
- yelp_gecko_set_font (YELP_FONT_FIXED, font);
+
+ tmp = g_strrstr (font, " ");
+ if (!tmp) {
+ g_warning ("Cannot decode monospace font pattern %s", font);
+ g_free (font);
+ return;
+ }
+
+ name = g_value_reset (name);
+ size = g_value_reset (size);
+
+ str_name = g_strndup (font, tmp - font);
+
+ i_size = g_strtod (tmp, NULL);
+
+ g_value_set_string (name, str_name);
+ g_value_set_int (size, i_size);
+
+
+ g_object_set_property (G_OBJECT (settings), "monospace-font-family",
+ name);
+ g_object_set_property (G_OBJECT (settings), "default-monospace-font-size",
+ size);
+
g_free (font);
}
static void
-html_set_colors (void)
+html_set_colors (YelpHtml *html)
{
- const gchar *color;
-
- color = yelp_settings_get_color (YELP_COLOR_FG);
- yelp_gecko_set_color (YELP_COLOR_FG, color);
+ /* TODO: No Webkit equivalent ... */
+ /* See https://bugs.webkit.org/show_bug.cgi?id=19486 */
- color = yelp_settings_get_color (YELP_COLOR_BG);
- yelp_gecko_set_color (YELP_COLOR_BG, color);
-
- color = yelp_settings_get_color (YELP_COLOR_ANCHOR);
- yelp_gecko_set_color (YELP_COLOR_ANCHOR, color);
}
static void
-html_set_a11y (void)
+html_set_a11y (YelpHtml *html)
{
gboolean caret;
caret = yelp_settings_get_caret ();
- yelp_gecko_set_caret (caret);
+ /* TODO Webkit version */
}
gboolean
yelp_html_initialize (void)
{
- return yelp_gecko_init ();
+ return TRUE;
}
void
yelp_html_shutdown (void)
{
- yelp_gecko_shutdown ();
+ /* Empty */
}
diff --git a/src/yelp-html.h b/src/yelp-html.h
index 5994eb79..82235991 100644
--- a/src/yelp-html.h
+++ b/src/yelp-html.h
@@ -23,9 +23,8 @@
#ifndef __YELP_HTML_H__
#define __YELP_HTML_H__
-#include <gtkmozembed.h>
-
-#include "yelp-print.h"
+#include <config.h>
+#include <webkit/webkit.h>
G_BEGIN_DECLS
@@ -41,14 +40,12 @@ typedef struct _YelpHtmlClass YelpHtmlClass;
typedef struct _YelpHtmlPriv YelpHtmlPriv;
struct _YelpHtml {
- GtkMozEmbed parent;
-
+ WebKitWebView parent;
YelpHtmlPriv *priv;
};
struct _YelpHtmlClass {
- GtkMozEmbedClass parent_class;
-
+ WebKitWebViewClass parent;
guint font_handler;
guint color_handler;
guint a11y_handler;
@@ -103,13 +100,7 @@ void yelp_html_copy_selection (YelpHtml *html);
void yelp_html_select_all (YelpHtml *html);
-void yelp_html_print (YelpHtml *html,
- YelpPrintInfo *info,
- gboolean preview,
- gint *npages);
-void yelp_html_preview_end (YelpHtml *html);
-void yelp_html_preview_navigate (YelpHtml *html,
- gint page_no);
+void yelp_html_print (YelpHtml *html);
gboolean yelp_html_initialize (void);
void yelp_html_shutdown (void);
diff --git a/src/yelp-info-parser.c b/src/yelp-info-parser.c
index c8494127..276d878c 100644
--- a/src/yelp-info-parser.c
+++ b/src/yelp-info-parser.c
@@ -1029,7 +1029,7 @@ yelp_info_parse_menu (GtkTreeStore *tree, xmlNodePtr *node,
ref1 = xmlNewTextChild (mholder, NULL, BAD_CAST "a",
BAD_CAST tmp);
g_free (tmp);
- tmp = g_strconcat ("#", xref, NULL);
+ tmp = g_strconcat ("?", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
g_free (tmp);
} else { /* Indexy type menu - we gotta do a little work to fix the
@@ -1047,7 +1047,7 @@ yelp_info_parse_menu (GtkTreeStore *tree, xmlNodePtr *node,
ref1 = xmlNewTextChild (mholder, NULL, BAD_CAST "a",
BAD_CAST title);
- tmp = g_strconcat ("#", xref, NULL);
+ tmp = g_strconcat ("?", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
g_free (tmp);
xmlNewTextChild (mholder, NULL, BAD_CAST "spacing",
@@ -1056,7 +1056,7 @@ yelp_info_parse_menu (GtkTreeStore *tree, xmlNodePtr *node,
ref1 = xmlNewTextChild (mholder, NULL, BAD_CAST "a",
BAD_CAST tmp);
g_free (tmp);
- tmp = g_strconcat ("#", xref, NULL);
+ tmp = g_strconcat ("?", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
g_free (tmp);
@@ -1214,7 +1214,7 @@ info_process_text_notes (xmlNodePtr *node, gchar *content, GtkTreeStore *tree)
link = g_strstrip (link);
length = strlen (link) - 1;
link[length] = '\0';
- href = g_strconcat ("#", link, NULL);
+ href = g_strconcat ("?", link, NULL);
link[length] = 'a';
g_free (link);
@@ -1249,7 +1249,7 @@ info_process_text_notes (xmlNodePtr *node, gchar *content, GtkTreeStore *tree)
frag = g_strndup (url, tmp1 - url);
g_strstrip (frag);
gtk_tree_model_foreach (GTK_TREE_MODEL (tree), resolve_frag_id, &frag);
- href = g_strconcat ("#", frag, NULL);
+ href = g_strconcat ("?", frag, NULL);
g_free (frag);
}
for (ulink = urls; *ulink != NULL; ulink++) {
diff --git a/src/yelp-io-channel.c b/src/yelp-io-channel.c
index 5ccb2fbf..b41a205f 100644
--- a/src/yelp-io-channel.c
+++ b/src/yelp-io-channel.c
@@ -24,13 +24,6 @@
#include <config.h>
#endif
-#ifdef HAVE_GECKO_1_9
-/* This is needed to stop gecko's version of libz
- * interfering and making gzopen et. al. crazy defines.
- */
-#define MOZZCONF_H
-#endif
-
#include <stdio.h>
#include <glib.h>
diff --git a/src/yelp-main.c b/src/yelp-main.c
index 41e70510..c88f26f4 100644
--- a/src/yelp-main.c
+++ b/src/yelp-main.c
@@ -30,6 +30,7 @@
#include <dbus/dbus-glib-bindings.h>
#include <string.h>
#include <stdlib.h>
+#include <libxslt/xslt.h>
#ifdef WITH_SMCLIENT
#include "eggsmclient.h"
@@ -343,6 +344,7 @@ main (int argc, char **argv)
bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain(GETTEXT_PACKAGE);
+ xsltInit ();
local_id = (gchar *) g_getenv ("DESKTOP_STARTUP_ID");
@@ -393,7 +395,7 @@ main (int argc, char **argv)
}
if (!yelp_html_initialize ()) {
- g_printerr ("Could not initialize gecko!\n");
+ g_printerr ("Could not initialize HTML component\n");
exit (1);
}
@@ -414,16 +416,7 @@ main (int argc, char **argv)
if (private || !main_is_running ()) {
const gchar *env;
- /* workaround for bug #329461 */
- env = g_getenv ("MOZ_ENABLE_PANGO");
-
- if (env == NULL ||
- *env == '\0' ||
- g_str_equal(env, "0"))
- {
- g_setenv ("MOZ_DISABLE_PANGO", "1", TRUE);
- }
-
+ xsltInit ();
if (session_started) {
main_restore_session ();
} else {
diff --git a/src/yelp-search-parser.c b/src/yelp-search-parser.c
index 9be5c43f..8844b44e 100644
--- a/src/yelp-search-parser.c
+++ b/src/yelp-search-parser.c
@@ -840,9 +840,9 @@ string_append (gchar *current, gchar *new, gchar *suffix)
gchar *ret;
if (suffix) {
- ret = g_strconcat (current, ":", new, suffix, NULL);
+ ret = g_strconcat (current, "\n", new, suffix, NULL);
} else {
- ret = g_strconcat (current, ":", new, NULL);
+ ret = g_strconcat (current, "\n", new, NULL);
}
g_free (current);
return ret;
@@ -910,7 +910,7 @@ build_lists (gchar *search_terms, gchar ***terms, gint **dups,
suffixes = NULL;
}
- search_terms = g_strdelimit (search_terms, ":", ' ');
+/* search_terms = g_strdelimit (search_terms, ":", ' '); */
list_copy = g_strsplit (g_utf8_casefold (g_strstrip (
search_terms), -1),
" ", -1);
@@ -981,11 +981,11 @@ build_lists (gchar *search_terms, gchar ***terms, gint **dups,
}
}
g_strfreev (list_copy);
- *terms = g_strsplit (term_str, ":", -1);
+ *terms = g_strsplit (term_str, "\n", -1);
n_terms = g_strv_length (*terms);
(*dups) = g_new0 (gint, n_terms);
(*stops) = g_new0 (gboolean, n_terms);
- list_copy = g_strsplit (dup_str, ":", -1);
+ list_copy = g_strsplit (dup_str, "\n", -1);
if (n_terms == 0)
goto done;
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 67bfc09d..67b640cb 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -42,7 +42,6 @@
#include "yelp-db-print.h"
#include "yelp-mallard.h"
#include "yelp-window.h"
-#include "yelp-print.h"
#include "yelp-debug.h"
@@ -76,12 +75,6 @@ typedef struct {
gchar *frag_title;
} YelpHistoryEntry;
-typedef struct {
- YelpPage *page;
- YelpWindow *window;
-
-} YelpLoadData;
-
static void window_init (YelpWindow *window);
static void window_class_init (YelpWindowClass *klass);
@@ -126,11 +119,9 @@ static gboolean html_frame_selected_cb (YelpHtml *html,
gboolean handled,
gpointer user_data);
static void html_title_changed_cb (YelpHtml *html,
+ gpointer webframe,
gchar *title,
gpointer user_data);
-static void html_popupmenu_requested_cb (YelpHtml *html,
- gchar *uri,
- gpointer user_data);
static gboolean window_key_event_cb (GtkWidget *widget,
GdkEventKey *event,
YelpWindow *window);
@@ -220,8 +211,8 @@ static void window_find_previous_cb (GtkAction *action,
YelpWindow *window);
static gboolean tree_model_iter_following (GtkTreeModel *model,
GtkTreeIter *iter);
-static gboolean window_write_html (YelpLoadData *data);
-static void window_write_print_html (YelpHtml *html,
+static void window_write_html (YelpWindow *window,
+ YelpHtml *html,
YelpPage *page);
enum {
@@ -244,6 +235,8 @@ struct _YelpWindowPriv {
YelpHtml *html_view;
GtkWidget *side_sw;
GtkWidget *search_action;
+ GtkWidget *html_sw;
+
/* Find in Page */
GtkToolItem *find_prev;
@@ -905,23 +898,17 @@ page_request_cb (YelpDocument *document,
YelpWindow *window)
{
YelpError *error;
- YelpLoadData *data = NULL;
switch (signal) {
case YELP_DOCUMENT_SIGNAL_PAGE:
window_set_sections (window, yelp_document_get_sections (document));
- data = g_new0 (YelpLoadData, 1);
- data->window = window;
- data->page = (YelpPage *) func_data;
-
- window_write_html (data);
+ window_write_html (window, NULL, (YelpPage *) func_data);
window->priv->current_request = -1;
yelp_page_free ((YelpPage *) func_data);
gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)),
NULL);
- g_free (data);
break;
case YELP_DOCUMENT_SIGNAL_TITLE:
/* We don't need to actually handle title signals as gecko
@@ -1075,7 +1062,7 @@ yelp_window_load (YelpWindow *window, const gchar *uri)
doc = yelp_info_new (real_uri);
break;
case YELP_RRN_TYPE_DOC:
- priv->base_uri = g_filename_to_uri (real_uri, NULL, NULL);
+ priv->base_uri = g_strdup(real_uri);
doc = yelp_docbook_new (real_uri);
break;
case YELP_RRN_TYPE_SEARCH:
@@ -1441,7 +1428,15 @@ window_populate (YelpWindow *window)
gtk_paned_add1 (GTK_PANED (priv->pane), priv->side_sw);
priv->html_pane = gtk_vbox_new (FALSE, 0);
-
+ /* Webkit don't like showing scrollbars, so we have to add our
+ own */
+ priv->html_sw = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->html_sw),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->html_sw),
+ GTK_SHADOW_IN);
+
priv->find_bar = gtk_toolbar_new ();
gtk_toolbar_set_style (GTK_TOOLBAR (priv->find_bar), GTK_TOOLBAR_BOTH_HORIZ);
gtk_toolbar_set_icon_size (GTK_TOOLBAR (priv->find_bar), GTK_ICON_SIZE_MENU);
@@ -1463,21 +1458,20 @@ window_populate (YelpWindow *window)
"title_changed",
G_CALLBACK (html_title_changed_cb),
window);
- g_signal_connect (priv->html_view,
- "popupmenu_requested",
- G_CALLBACK (html_popupmenu_requested_cb),
- window);
/* Connect to look for /'s */
g_signal_connect (window,
"key-press-event",
G_CALLBACK (window_key_event_cb),
window);
+ gtk_container_add (GTK_CONTAINER (priv->html_sw),
+ GTK_WIDGET (priv->html_view));
gtk_box_pack_end (GTK_BOX (priv->html_pane),
- GTK_WIDGET (priv->html_view),
+ GTK_WIDGET (priv->html_sw),
TRUE, TRUE, 0);
-
+ gtk_widget_show (priv->html_sw);
gtk_paned_add2 (GTK_PANED (priv->pane),
priv->html_pane);
+
gtk_box_pack_start (GTK_BOX (priv->main_box),
priv->pane,
TRUE, TRUE, 0);
@@ -1852,21 +1846,14 @@ html_uri_selected_cb (YelpHtml *html,
gboolean handled,
gpointer user_data)
{
- gchar *new_uri = uri;
YelpWindow *window = YELP_WINDOW (user_data);
debug_print (DB_FUNCTION, "entering\n");
debug_print (DB_ARG, " uri = \"%s\"\n", uri);
- if (g_str_has_prefix (uri, "xref:"))
- new_uri = g_strconcat (window->priv->base_uri, "#", uri + 5, NULL);
-
if (!handled) {
- yelp_window_load (window, new_uri);
+ yelp_window_load (window, uri);
}
-
- if (new_uri != uri)
- g_free (new_uri);
}
static gboolean
@@ -1894,41 +1881,17 @@ html_frame_selected_cb (YelpHtml *html, gchar *uri, gboolean handled,
return TRUE;
}
-static void
-html_title_changed_cb (YelpHtml *html,
- gchar *title,
- gpointer user_data)
-{
- gtk_window_set_title (GTK_WINDOW (user_data), title);
-}
-static void
-html_popupmenu_requested_cb (YelpHtml *html,
- gchar *uri,
- gpointer user_data)
+static void html_title_changed_cb (YelpHtml *html,
+ gpointer webframe,
+ gchar *title,
+ gpointer user_data)
{
- YelpWindow *window = YELP_WINDOW (user_data);
-
- gtk_ui_manager_remove_ui (window->priv->ui_manager,
- window->priv->merge_id);
-
-
- if (g_str_has_prefix(uri, "mailto:")) {
- gtk_ui_manager_add_ui (window->priv->ui_manager,
- window->priv->merge_id,
- "/ui/main_popup",
- "CpMail",
- "CopyMail",
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
- }
- g_free (window->priv->uri);
- window->priv->uri = g_strdup (uri);
- gtk_menu_popup (GTK_MENU (window->priv->popup),
- NULL, NULL, NULL, NULL, 3, gtk_get_current_event_time());
+ gtk_window_set_title (GTK_WINDOW (user_data), title);
}
+
/** GtkTreeView Callbacks *****************************************************/
static void
@@ -1949,7 +1912,7 @@ tree_selection_changed_cb (GtkTreeSelection *selection,
gtk_tree_model_get (model, &iter,
YELP_DOCUMENT_COLUMN_ID, &id,
-1);
- uri = g_strdup_printf ("%s#%s", priv->base_uri, id);
+ uri = g_strdup_printf ("%s?%s", priv->base_uri, id);
yelp_window_load (window, uri);
g_free (uri);
}
@@ -2056,11 +2019,9 @@ window_print_signal (YelpDocument *document,
switch (signal) {
case YELP_DOCUMENT_SIGNAL_PAGE:
- window_write_print_html (print->html, (YelpPage *) func_data);
-
+ window_write_html (print->window, print->html, (YelpPage *) func_data);
yelp_page_free ((YelpPage *) func_data);
-
- yelp_print_run (print->window, print->html, print->gtk_win, print->vbox);
+ yelp_html_print (print->html);
break;
case YELP_DOCUMENT_SIGNAL_TITLE:
g_free (func_data);
@@ -2166,18 +2127,18 @@ window_print_page_cb (GtkAction *action, YelpWindow *window)
GFileInputStream *stream;
gsize n;
gchar buffer[BUFFER_SIZE];
-
- file = g_file_new_for_uri (priv->uri);
- stream = g_file_read (file, NULL, NULL);
-
+
+ file = g_file_new_for_uri (priv->uri);
+ stream = g_file_read (file, NULL, NULL);
+
if (stream == NULL) {
/*GError *error = NULL;
- g_set_error (&error, YELP_ERROR, YELP_ERROR_IO,
- _("The file ‘%s’ could not be read. This file might "
- "be missing, or you might not have permissions to "
- "read it."),
- uri);
- window_error (window, error, TRUE);*/
+ g_set_error (&error, YELP_ERROR, YELP_ERROR_IO,
+ _("The file ‘%s’ could not be read. This file might "
+ "be missing, or you might not have permissions to "
+ "read it."),
+ uri);
+ window_error (window, error, TRUE);*/
/* TODO: Proper errors */
if (file)
@@ -2205,19 +2166,19 @@ window_print_page_cb (GtkAction *action, YelpWindow *window)
}
while ((g_input_stream_read_all
- ((GInputStream *)stream, buffer, BUFFER_SIZE, &n, NULL, NULL))) {
+ ((GInputStream *)stream, buffer, BUFFER_SIZE, &n, NULL, NULL))) {
yelp_html_write (html, buffer, n);
}
- if (file)
- g_object_unref (file);
- if (stream)
- g_object_unref (stream);
+ yelp_html_print (html);
+ if (file)
+ g_object_unref (file);
+ if (stream)
+ g_object_unref (stream);
+
yelp_html_close (html);
-
- yelp_print_run (window, html, gtk_win, vbox);
-
+
}
}
@@ -2861,51 +2822,28 @@ tree_model_iter_following (GtkTreeModel *model,
return FALSE;
}
-static gboolean
-window_write_html (YelpLoadData *data)
+static void
+window_write_html (YelpWindow *window, YelpHtml *html, YelpPage *page)
{
gchar *uri = NULL;
gsize read;
- YelpHtml *html = data->window->priv->html_view;
gchar contents[BUFFER_SIZE];
+
+ if (!html)
+ html = window->priv->html_view;
/* Use a silly fake URI to stop gecko doing silly things */
- if (data->window->priv->current_frag) {
- /* FIXME: more of this terrible slash hack */
- gchar *slash, *jump_id;
- slash = strchr (data->window->priv->current_frag, '/');
- if (slash)
- jump_id = slash + 1;
- else
- jump_id = data->window->priv->current_frag;
- uri = g_strdup_printf ("%s#%s", data->window->priv->base_uri, jump_id);
- }
+ if (window->priv->current_frag)
+ uri = g_strdup_printf ("%s?%s", window->priv->base_uri,
+ window->priv->current_frag);
else
- uri = g_strdup (data->window->priv->base_uri);
-
+ uri = g_strdup (window->priv->base_uri);
+
yelp_html_set_base_uri (html, uri);
g_free (uri);
yelp_html_open_stream (html, "application/xhtml+xml");
do {
- yelp_page_read (data->page, contents, BUFFER_SIZE, &read, NULL);
- yelp_html_write (html, contents, read);
- } while (read == BUFFER_SIZE);
- yelp_html_close (html);
- return FALSE;
-}
-
-static void
-window_write_print_html (YelpHtml *html, YelpPage * page)
-{
- gsize read;
- gchar contents[BUFFER_SIZE];
-
- /* Use a silly fake URI to stop gecko doing silly things */
- yelp_html_set_base_uri (html, "file:///foobar");
- yelp_html_open_stream (html, "application/xhtml+xml");
-
- do {
yelp_page_read (page, contents, BUFFER_SIZE, &read, NULL);
yelp_html_write (html, contents, read);
} while (read == BUFFER_SIZE);
diff --git a/stylesheets/db2html.xsl.in b/stylesheets/db2html.xsl.in
index b68f153a..02e597cc 100644
--- a/stylesheets/db2html.xsl.in
+++ b/stylesheets/db2html.xsl.in
@@ -68,7 +68,17 @@ FIXME: yelp:cache no longer works
<!-- == db.xref.target == -->
<xsl:template name="db.xref.target">
<xsl:param name="linkend"/>
- <xsl:value-of select="concat('xref:', $linkend)"/>
+ <xsl:param name="depth_in_chunk">
+ <xsl:call-template name="db.chunk.depth-in-chunk"/>
+ </xsl:param>
+ <xsl:choose>
+ <xsl:when test="$depth_in_chunk != 0">
+ <xsl:value-of select="concat('#', $linkend)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('?', $linkend)"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<!-- == db2html.css.custom == -->
@@ -78,11 +88,13 @@ FIXME: yelp:cache no longer works
<!-- == db2html.division.head.extra == -->
<xsl:template name="db2html.division.head.extra">
- <script type="text/javascript">
- <xsl:attribute name="src">
- <xsl:value-of select="concat('file://', $yelp.javascript)"/>
- </xsl:attribute>
- </script>
+ <xsl:if test="string($yelp.javascript) != ''">
+ <script type="text/javascript">
+ <xsl:attribute name="src">
+ <xsl:value-of select="concat('file://', $yelp.javascript)"/>
+ </xsl:attribute>
+ </script>
+ </xsl:if>
</xsl:template>
</xsl:stylesheet>
diff --git a/stylesheets/mal2html.xsl.in b/stylesheets/mal2html.xsl.in
index 9a55fccc..37560a71 100644
--- a/stylesheets/mal2html.xsl.in
+++ b/stylesheets/mal2html.xsl.in
@@ -44,10 +44,10 @@
<xsl:when test="contains($xref, '#')">
<xsl:variable name="pageid" select="substring-before($xref, '#')"/>
<xsl:variable name="sectionid" select="substring-after($xref, '#')"/>
- <xsl:value-of select="concat('xref:', $pageid, '/', $sectionid)"/>
+ <xsl:value-of select="concat('#', $pageid, '/', $sectionid)"/>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="concat('xref:', $xref)"/>
+ <xsl:value-of select="concat('#', $xref)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/stylesheets/toc2html.xsl.in b/stylesheets/toc2html.xsl.in
index f630e62f..129cf6e9 100644
--- a/stylesheets/toc2html.xsl.in
+++ b/stylesheets/toc2html.xsl.in
@@ -58,7 +58,7 @@
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 204px;
padding-top: 0.2em;
padding-bottom: 0.2em;
- -moz-border-radius: 6px;
+ -webkit-border-radius: 6px;
border: solid 1px </xsl:text>
<xsl:value-of select="$theme.color.blue_border"/><xsl:text>;
background-color: </xsl:text>
@@ -112,7 +112,7 @@
padding: 1em;
background-color: </xsl:text><xsl:value-of select="$theme.color.background"/><xsl:text>;
color: </xsl:text><xsl:value-of select="$theme.color.text"/><xsl:text>;
- -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
}
ul { margin-left: 0em; padding-left: 0em; }
li[class~="toclist"] {