summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2010-05-21 17:59:51 -0500
committerShaun McCance <shaunm@gnome.org>2010-05-21 17:59:51 -0500
commit5c74d7b352d11c021dddb6c9f55d3a377ec82b14 (patch)
treea8ebd266f071b88be5d222ea0933a47703a4b6b6
parentbad5a499c6a7660c0cd60cfcb97e7be3c5d4b243 (diff)
parent55da84092d431ba44f17cba8a96aaac54ce02273 (diff)
downloadyelp-5c74d7b352d11c021dddb6c9f55d3a377ec82b14.tar.gz
Merge branch 'master' into db5
-rw-r--r--.gitignore46
-rw-r--r--Makefile.am5
-rw-r--r--NEWS135
-rwxr-xr-xautogen.sh5
-rw-r--r--configure.ac232
-rw-r--r--configure.in298
-rw-r--r--data/Makefile.am16
-rw-r--r--data/icons/hicolor/16x16/status/Makefile.am1
-rw-r--r--data/icons/hicolor/16x16/status/bookmark.pngbin0 -> 576 bytes
-rw-r--r--data/org.gnome.yelp.gschema.xml27
-rw-r--r--data/ui/Makefile.am5
-rw-r--r--data/ui/yelp-bookmarks-add.ui105
-rw-r--r--data/ui/yelp-bookmarks.ui160
-rw-r--r--data/ui/yelp-open-location.ui100
-rw-r--r--data/ui/yelp-preferences.ui222
-rw-r--r--data/ui/yelp-search-ui.xml9
-rw-r--r--data/ui/yelp-ui.xml81
-rw-r--r--docs/libyelp/Makefile.am8
-rw-r--r--libyelp/Makefile.am36
-rw-r--r--libyelp/yelp-bz2-decompressor.c173
-rw-r--r--libyelp/yelp-bz2-decompressor.h53
-rw-r--r--libyelp/yelp-docbook-document.c17
-rw-r--r--libyelp/yelp-document.c37
-rw-r--r--libyelp/yelp-info-document.c486
-rw-r--r--libyelp/yelp-info-document.h52
-rw-r--r--libyelp/yelp-info-parser.c (renamed from src/yelp-info-parser.c)126
-rw-r--r--libyelp/yelp-info-parser.h (renamed from src/yelp-info-parser.h)10
-rw-r--r--libyelp/yelp-io-channel.c224
-rw-r--r--libyelp/yelp-io-channel.h31
-rw-r--r--libyelp/yelp-location-entry.c139
-rw-r--r--libyelp/yelp-location-entry.h12
-rw-r--r--libyelp/yelp-lzma-decompressor.c182
-rw-r--r--libyelp/yelp-lzma-decompressor.h52
-rw-r--r--libyelp/yelp-magic-decompressor.c161
-rw-r--r--libyelp/yelp-magic-decompressor.h52
-rw-r--r--libyelp/yelp-settings.c38
-rw-r--r--libyelp/yelp-settings.h3
-rw-r--r--libyelp/yelp-simple-document.c46
-rw-r--r--libyelp/yelp-uri.c69
-rw-r--r--libyelp/yelp-view.c837
-rw-r--r--libyelp/yelp-view.h27
-rw-r--r--po/LINGUAS1
-rw-r--r--po/POTFILES.in26
-rw-r--r--po/POTFILES.skip6
-rw-r--r--po/bn_IN.po16
-rw-r--r--po/ca@valencia.po2126
-rw-r--r--po/crh.po1850
-rw-r--r--po/de.po999
-rw-r--r--po/es.po1213
-rw-r--r--po/gl.po1220
-rw-r--r--po/id.po1637
-rw-r--r--po/kn.po318
-rw-r--r--po/nb.po734
-rw-r--r--po/oc.po202
-rw-r--r--po/or.po858
-rw-r--r--po/sl.po3040
-rw-r--r--po/ug.po1977
-rw-r--r--src/Makefile.am75
-rw-r--r--src/eggdesktopfile.c1477
-rw-r--r--src/eggsmclient-osx.c235
-rw-r--r--src/eggsmclient-private.h53
-rw-r--r--src/eggsmclient-win32.c353
-rw-r--r--src/eggsmclient-xsmp.c1405
-rw-r--r--src/eggsmclient.c610
-rw-r--r--src/eggsmclient.h123
-rw-r--r--src/gtkentryaction.c357
-rw-r--r--src/gtkentryaction.h67
-rw-r--r--src/yelp-application.c380
-rw-r--r--src/yelp-application.h45
-rw-r--r--src/yelp-base.c321
-rw-r--r--src/yelp-base.h67
-rw-r--r--src/yelp-bookmarks.c1154
-rw-r--r--src/yelp-bookmarks.h38
-rw-r--r--src/yelp-error.c149
-rw-r--r--src/yelp-error.h54
-rw-r--r--src/yelp-html.c587
-rw-r--r--src/yelp-html.h109
-rw-r--r--src/yelp-info.c436
-rw-r--r--src/yelp-info.h53
-rw-r--r--src/yelp-infos.xml15
-rw-r--r--src/yelp-main.c437
-rw-r--r--src/yelp-marshal.list6
-rw-r--r--src/yelp-toc.c2
-rw-r--r--src/yelp-window.c1392
-rw-r--r--src/yelp-window.h14
-rw-r--r--stylesheets/Makefile.am9
-rw-r--r--stylesheets/info2html.xsl127
-rw-r--r--stylesheets/info2html.xsl.in167
-rw-r--r--stylesheets/yelp-common.xsl.in2
-rw-r--r--tests/Makefile.am21
-rw-r--r--tests/test-bz2.c (renamed from tests/test-io-channel.c)34
-rw-r--r--tests/test-lzma.c60
-rw-r--r--tests/test-magic.c60
-rw-r--r--tests/test-transform.c4
-rw-r--r--tests/test-uri.c4
95 files changed, 15185 insertions, 15858 deletions
diff --git a/.gitignore b/.gitignore
index 5fedf2b7..57de0c46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@
Makefile
Makefile.in
+/INSTALL
/aclocal.m4
/autom4te.cache/
/compile
@@ -25,7 +26,36 @@ Makefile.in
/config.status
/config.sub
/configure
+/data/gsettings_schema_validate_stamp
+/data/info.xml
+/data/man.xml
+/data/toc.xml
/depcomp
+/docs/libyelp/html-build.stamp
+/docs/libyelp/html.stamp
+/docs/libyelp/html/
+/docs/libyelp/libyelp-decl-list.txt
+/docs/libyelp/libyelp-decl.txt
+/docs/libyelp/libyelp-overrides.txt
+/docs/libyelp/libyelp-sections.txt
+/docs/libyelp/libyelp-undeclared.txt
+/docs/libyelp/libyelp-undocumented.txt
+/docs/libyelp/libyelp-unused.txt
+/docs/libyelp/libyelp.args
+/docs/libyelp/libyelp.hierarchy
+/docs/libyelp/libyelp.interfaces
+/docs/libyelp/libyelp.prerequisites
+/docs/libyelp/libyelp.signals
+/docs/libyelp/libyelp.types
+/docs/libyelp/scan-build.stamp
+/docs/libyelp/sgml-build.stamp
+/docs/libyelp/sgml.stamp
+/docs/libyelp/tmpl-build.stamp
+/docs/libyelp/tmpl.stamp
+/docs/libyelp/tmpl/
+/docs/libyelp/version.xml
+/docs/libyelp/xml/
+/gtk-doc.make
/install-sh
/intltool-extract.in
/intltool-merge.in
@@ -43,17 +73,27 @@ Makefile.in
/po/*.gmo
/po/.intltool-merge-cache
/po/Makefile.in.in
+/po/missing
/po/POTFILES
/po/stamp-it
-/src/stamp-yelp-marshal.h
+/po/yelp.pot
/src/yelp
/src/yelp-dbus.h
-/src/yelp-marshal.c
-/src/yelp-marshal.h
/stamp-h1
/stylesheets/db-title.xsl
/stylesheets/db2html.xsl
+/stylesheets/info2html.xsl
/stylesheets/mal2html.xsl
/stylesheets/toc2html.xsl
/stylesheets/yelp-common.xsl
+/tests/test-bz2
+/tests/test-io-channel
+/tests/test-location-entry
+/tests/test-lzma
+/tests/test-magic
+/tests/test-settings
+/tests/test-transform
+/tests/test-uri
/tests/test-view
+/yelp.desktop
+/yelp.desktop.in
diff --git a/Makefile.am b/Makefile.am
index 877fc979..45ca0bc7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-SUBDIRS = libyelp src stylesheets po data tests
+SUBDIRS = libyelp src stylesheets po data tests docs
@INTLTOOL_DESKTOP_RULE@
@@ -27,5 +27,4 @@ DISTCLEANFILES = \
CLEANFILES = $(desktop_DATA)
-DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --enable-gtk-doc
-
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
diff --git a/NEWS b/NEWS
index ed8ee61a..c509d425 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,138 @@
+Changes in 2.31.2:
+------------------
+* Location entry completions are sorted by icon and title.
+* All pages have an icon, help-contents by default.
+* Location entries now pulse when page is loading.
+* Added bookmarks with page icons, stored per-document.
+* Added previous and next menu items for linear documents.
+* Refreshed error pages, look like Yelp note boxes.
+* Window geometry is stored per-document.
+* Added info documents, with slightly nicer formatting.
+* Updated translations:
+ de (Mario Blättermann)
+ es (Jorge González)
+ gl (Fran Diéguez)
+ nb (Kjartan Maraas)
+ ug (Gheyret Kenji)
+
+Changes in 2.31.1:
+------------------
+* Completely revamped document-focused interface
+* New mode to show extra information for editors
+* PackageKit install: links (experimental)
+* Use GSettings for settings storage
+* Temporarily missing features:
+ - man and info pages
+ - bookmarks
+ - full-text search
+ - printing
+ - list of installed help
+* Updated translations:
+ bn_IN (Runa Bhattacharjee)
+ ca@valencia (Carles Ferrando)
+ crh (Reşat SABIQ)
+ id (Andika Triwidada)
+ kn (Shankar Prasad)
+ nl (Wouter Bolsterlee)
+ oc (Yannig Marchegay)
+ or (Manoj Kumar Giri)
+ sl (Matej Urbančič)
+ ug (Gheyret Kenji)
+
+Changes in 2.30.0:
+------------------
+* Updated translations:
+ bn (Jamil Ahmed)
+ eu (Inaki Larranaga Murgoitio)
+ lt (Gintautas Miliauskas)
+ pl (Piotr Drąg)
+ ru (Leonid Kanter)
+ sv (Daniel Nylander)
+ vi (Clytie)
+
+Changes in 2.29.5:
+------------------
+* Clean up GLib and GTK+ includes (Javier Jardón)
+* Updated translations:
+ gl (Fran Diéguez)
+
+Changes in 2.29.4:
+------------------
+* Updated translations:
+ th (Theppitak Karoonboonyanan)
+
+Changes in 2.29.3:
+------------------
+* Fixed issues with xulrunner 1.9.2
+
+Changes in 2.29.2:
+------------------
+* Adapted to changes in gnome-doc-utils XSLT
+
+Changes in 2.29.1:
+------------------
+* Fixed admonition graphics
+* Upped gnome-doc-utils version for fancy new Mallard features
+* Use accessor functions instead direct access (Javier Jardón)
+* Updated translations:
+ ca (Jordi Serratosa)
+ he (Yaron Sharabani)
+
+Changes in 2.28.1:
+------------------
+* Use g_timeout_add_seconds to reduce wakeups, bug #581260 (Javier Jardón)
+* Removed debug output, bug #585829 (Vincent Untz)
+* Updated translations:
+ en@shaw (Thomas Thurman)
+ lv (Peteris Krisjanis)
+ nn (Åsmund Skjæveland)
+ ru (Leonid Kanter)
+
+Changes in 2.28.0:
+------------------
+* Updated translations:
+ as (Amitakhya Phukan)
+ ca@valencia (Carles Ferrando)
+ da (Ask H. Larsen)
+ el (Kostas Papadimas)
+ en_GB (Philip Withnall)
+ hi (Rajesh Ranjan)
+ hu (Gabor Kelemen)
+ ja (Takayuki KUSANO)
+ kn (Shankar Prasad)
+ nb (Kjartan Maraas)
+ or (Manoj Kumar Giri)
+ pt_BR (Fábio Nogueira)
+ ro (Lucian Adrian Grijincu)
+ sl (Matej Urbančič)
+ te (krishnababu k)
+ uk (Maxim V. Dziumanenko)
+
+Changes in 2.27.5:
+------------------
+* Fixed broken history navigation for Mallard documents (Shaun McCance)
+* Make sure link title roles are preserved in cache (Shaun McCance)
+* Fixed jumping to anchors in Mallard documents (Shaun McCance)
+* Updated translations:
+ bn (Jamil Ahmed)
+ bn_IN (Runa Bhattacharjee)
+ cs (Petr Kovar)
+ eu (Inaki Larranaga Murgoitio)
+ gu (Sweta Kothari)
+ ml (Ani)
+ mr (Sandeep Shedmake)
+ nb (Kjartan Maraas)
+ pa (A S Alam)
+ pl (Tomasz Dominikowski)
+ pt (Duarte Loreto)
+ pt_BR (Og B. Maciel)
+ sr (Miloš Popović)
+ sr@latin (Miloš Popović)
+ ta (ifelix)
+ te (krishnababu k)
+ tr (Baris Cicek)
+ zh_CN (Aron Xu)
+
Changes in 2.27.4:
------------------
* Make ghelp URIs work for Mallard documents (Shaun McCance)
diff --git a/autogen.sh b/autogen.sh
index 0cc89c3e..7b831d67 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -6,16 +6,13 @@ test -z "$srcdir" && srcdir=.
PKG_NAME=Yelp
-REQUIRED_AUTOMAKE_VERSION=1.9
-export REQUIRED_AUTOMAKE_VERSION
-
if ! test -f $srcdir/src/yelp.c; then
echo "**Error**: Directory '$srcdir' does not look like the yelp source directory"
exit 1
fi
which gnome-autogen.sh || {
- echo "You need to install gnome-common from Gnome CVS"
+ echo "You need to install gnome-common package"
exit 1
}
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 00000000..a5ecb1f8
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,232 @@
+AC_PREREQ([2.63])
+AC_INIT([Yelp],[2.31.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=yelp],[yelp])
+
+AC_CONFIG_SRCDIR([src/yelp.c])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_INIT_AUTOMAKE([1.11 dist-bzip2 no-dist-gzip])
+AM_MAINTAINER_MODE([enable])
+
+AM_SILENT_RULES([yes])
+
+# Check for programs
+AC_PROG_CC
+AC_PROG_CC_C_O
+AC_PROG_LN_S
+
+# Initialize libtool
+LT_PREREQ([2.2.6])
+LT_INIT
+
+AC_PATH_PROGS(SED, gsed sed)
+
+AM_PATH_GLIB_2_0
+GLIB_GSETTINGS
+
+# Library dependecies
+PKG_CHECK_MODULES(YELP,
+[
+ gio-2.0 >= 2.25.3
+ gio-unix-2.0
+ gtk+-unix-print-2.0
+ gtk+-2.0 >= 2.16.0
+ libxml-2.0 >= 2.6.5
+ libxslt >= 1.1.4
+ libexslt >= 0.8.1
+ dbus-glib-1
+ webkit-1.0 >= 1.1.15
+ yelp-xsl
+])
+AC_SUBST([YELP_CFLAGS])
+AC_SUBST([YELP_LIBS])
+
+
+GNOME_DEBUG_CHECK
+GNOME_COMPILE_WARNINGS([maximum])
+GNOME_MAINTAINER_MODE_DEFINES
+
+MORE_WARN_FLAGS=
+
+if test "x$enable_debug" = "xyes"; then
+ AC_DEFINE([YELP_DEBUG],[1],[Enable Yelp debugging])
+ AM_CFLAGS="$AM_CFLAGS -pedantic -ansi"
+fi
+
+dnl NOTE : it appears that some systems do not like it when you use line
+dnl continuation charactes to split CFLAGS into readable chunks
+if test "x$GCC" = "xyes"; then
+ AM_CFLAGS="$AM_CFLAGS -Wall -Wno-uninitialized -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare"
+fi
+
+# i18n stuff
+IT_PROG_INTLTOOL([0.41.0])
+
+GETTEXT_PACKAGE=yelp
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
+ [The gettext translation domain])
+
+AM_GLIB_GNU_GETTEXT
+AM_GLIB_DEFINE_LOCALEDIR([GNOMELOCALEDIR])
+
+LIBLZMA_REQUIRED=4.9
+AC_ARG_ENABLE(lzma,
+ AS_HELP_STRING([--enable-lzma],[Enable lzma decoder support [[default=yes]]]),
+ [enable_lzma=$enableval],
+ [enable_lzma="auto"])
+if test x"$enable_lzma" = "xauto"; then
+ PKG_CHECK_MODULES(YELP_LZMA,
+ liblzma >= $LIBLZMA_REQUIRED,
+ enable_lzma=yes,
+ enable_lzma=no)
+elif test x"$enable_lzma" = "xyes"; then
+ PKG_CHECK_MODULES(YELP_LZMA, liblzma >= $LIBLZMA_REQUIRED)
+fi
+if test x"$enable_lzma" = "xyes"; then
+ YELP_CFLAGS="$YELP_LZMA_CFLAGS $YELP_CFLAGS";
+ YELP_LIBS="$YELP_LZMA_LIBS $YELP_LIBS";
+ AC_DEFINE(ENABLE_LZMA, 1, [Enable lzma decoder support])
+fi
+AM_CONDITIONAL([ENABLE_LZMA],[test x"$enable_lzma" != "xno"])
+
+AC_ARG_ENABLE(bz2,
+ AS_HELP_STRING([--enable-bz2],[Enable bz2 decoder support [[default=yes]]]),
+ [enable_bz2=$enableval],
+ [enable_bz2="auto"])
+if test x"$enable_bz2" = "xauto"; then
+ AC_CHECK_LIB(bz2,
+ BZ2_bzread,
+ enable_bz2=yes,
+ enable_bz2=no)
+elif test x"$enable_bz2" = "xyes"; then
+ AC_CHECK_LIB(bz2, BZ2_bzread)
+fi
+if test x"$enable_bz2" = "xyes"; then
+ YELP_LIBS="-lbz2 $YELP_LIBS";
+ AC_DEFINE(ENABLE_BZ2, 1, [Enable bz2 decoder support])
+fi
+AM_CONDITIONAL([ENABLE_BZ2],[test x"$enable_bz2" != "xno"])
+
+AC_SUBST([YELP_CFLAGS])
+AC_SUBST([YELP_LIBS])
+
+DATADIR=`(
+ case $prefix in
+ NONE) prefix=$ac_default_prefix ;;
+ *) ;;
+ esac
+ eval echo $(eval echo $datadir)/yelp
+)`
+AC_SUBST([DATADIR])
+
+
+XSL_PATH="`$PKG_CONFIG --variable=xsltdir yelp-xsl`"
+XSL_DB_TITLE="$XSLT_PATH""/docbook/common/db-title.xsl"
+AC_SUBST(XSL_DB_TITLE)
+
+XSL_DB2XHTML="`$PKG_CONFIG --variable=db2xhtml yelp-xsl`"
+AC_SUBST(XSL_DB2XHTML)
+
+XSL_MAL2XHTML="`$PKG_CONFIG --variable=mal2xhtml yelp-xsl`"
+AC_SUBST(XSL_MAL2XHTML)
+
+XSL_THEME_COLORS="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-colors.xsl"
+AC_SUBST(XSL_THEME_COLORS)
+XSL_THEME_ICONS="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-icons.xsl"
+AC_SUBST(XSL_THEME_ICONS)
+XSL_THEME_HTML="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-html.xsl"
+AC_SUBST(XSL_THEME_HTML)
+
+XSL_GETTEXT="`$PKG_CONFIG --variable=gettext yelp-xsl`"
+AC_SUBST(XSL_GETTEXT)
+
+YELP_ICON_PATH="`$PKG_CONFIG --variable=icondir yelp-xsl`"
+AC_SUBST(YELP_ICON_PATH)
+
+GLIB_GENMARSHAL="`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`"
+AC_SUBST(GLIB_GENMARSHAL)
+
+#
+# If Pango included the shared library dependencies from X11 in
+# the pkg-config output, then we use that (to avoid duplicates).
+# but if they were omitted to avoid binary compatibility problems
+# then we need to repeat the checks.
+#
+if $PKG_CONFIG --exists pangoxft ; then
+ PANGO_PACKAGES="pangox pangoxft"
+else
+ PANGO_PACKAGES="pangox"
+fi
+
+x_libs="`$PKG_CONFIG --libs $PANGO_PACKAGES`"
+case x_libs in
+ *-lX11*) pango_omitted_x_deps=no ;;
+ *) pango_omitted_x_deps=yes ;;
+esac
+
+if test $pango_omitted_x_deps = yes ; then
+ AC_PATH_XTRA
+
+ if test x$no_x = xyes ; then
+ AC_MSG_ERROR([X development libraries not found])
+ else
+ X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
+ fi
+fi
+
+AC_SUBST(X_LIBS)
+
+
+# Set flags
+AM_CPPFLAGS="$AM_CPPFLAGS $DEPRECATION_FLAGS"
+AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS $MORE_WARN_FLAGS"
+
+
+AC_SUBST([AM_CPPFLAGS])
+AC_SUBST([AM_CFLAGS])
+AC_SUBST([AM_LDFLAGS])
+
+GTK_DOC_CHECK([1.13],[--flavour no-tmpl])
+
+AC_CONFIG_FILES([
+Makefile
+docs/Makefile
+docs/libyelp/Makefile
+docs/libyelp/version.xml
+libyelp/Makefile
+src/Makefile
+stylesheets/Makefile
+stylesheets/db2html.xsl
+stylesheets/db-title.xsl
+stylesheets/info2html.xsl
+stylesheets/mal2html.xsl
+stylesheets/toc2html.xsl
+stylesheets/yelp-common.xsl
+data/Makefile
+data/icons/Makefile
+data/icons/hicolor/Makefile
+data/icons/hicolor/16x16/Makefile
+data/icons/hicolor/16x16/status/Makefile
+po/Makefile.in
+tests/Makefile
+yelp.desktop.in
+])
+
+AC_OUTPUT
+
+dnl ==========================================================================
+echo "
+yelp-$VERSION:
+
+ prefix: ${prefix}
+ source code location: ${srcdir}
+ compiler: ${CC}
+
+ Documentation: ${enable_gtk_doc}
+ Debug enabled: ${enable_debug}
+ Search backend: ${search_backend}
+ Enable BZ2: ${enable_bz2}
+ Enable LZMA: ${enable_lzma}
+
+"
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 9393e438..00000000
--- a/configure.in
+++ /dev/null
@@ -1,298 +0,0 @@
-AC_INIT([Yelp],[2.27.4],[http://bugzilla.gnome.org/enter_bug.cgi?product=yelp],[yelp])
-
-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
-
-
-AC_PROG_LN_S
-AC_PROG_CC
-AM_PROG_CC_STDC
-AC_ISC_POSIX
-AC_HEADER_STDC
-AM_PROG_LIBTOOL
-AM_PATH_GLIB_2_0
-AM_PROG_CC_C_O
-
-IT_PROG_INTLTOOL([0.35.0])
-
-GTK_DOC_CHECK(1.9)
-
-GNOME_DEBUG_CHECK
-GNOME_COMPILE_WARNINGS([maximum])
-GNOME_MAINTAINER_MODE_DEFINES
-
-MORE_WARN_FLAGS=
-DEPRECATION_FLAGS=
-
-if test "x$enable_debug" = "xyes"; then
- AC_DEFINE([YELP_DEBUG],[1],[Enable Yelp debugging])
- AM_CFLAGS="$AM_CFLAGS -pedantic -ansi"
-fi
-
-dnl NOTE : it appears that some systems do not like it when you use line
-dnl continuation charactes to split CFLAGS into readable chunks
-if test "x$GCC" = "xyes"; then
- AM_CFLAGS="$AM_CFLAGS -Wall -Wno-uninitialized -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare"
-fi
-
-GETTEXT_PACKAGE=yelp
-AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
- [The gettext translation domain])
-
-AM_GLIB_GNU_GETTEXT
-
-AM_GLIB_DEFINE_LOCALEDIR([GNOMELOCALEDIR])
-
-PKG_CHECK_MODULES(YELP,
-[
- gio-2.0
- gio-unix-2.0
- gtk+-unix-print-2.0
- gtk+-2.0 >= 2.16.0
- libxml-2.0 >= 2.6.5
- libxslt >= 1.1.4
- libexslt >= 0.8.1
- libstartup-notification-1.0 >= 0.8
- dbus-glib-1
- rarian >= 0.7.0
- unique-1.0
- webkit-1.0 >= 1.1.15
- yelp-xsl
-])
-
-DATADIR=`(
- case $prefix in
- NONE) prefix=$ac_default_prefix ;;
- *) ;;
- esac
- eval echo $(eval echo $datadir)/yelp
-)`
-AC_SUBST([DATADIR])
-
-AC_SUBST([YELP_CFLAGS])
-AC_SUBST([YELP_LIBS])
-
-AC_PATH_PROGS(SED, gsed sed)
-
-XSL_PATH="`$PKG_CONFIG --variable=xsltdir yelp-xsl`"
-XSL_DB_TITLE="$XSLT_PATH""/docbook/common/db-title.xsl"
-AC_SUBST(XSL_DB_TITLE)
-
-XSL_DB2XHTML="`$PKG_CONFIG --variable=db2xhtml yelp-xsl`"
-AC_SUBST(XSL_DB2XHTML)
-
-XSL_MAL2XHTML="`$PKG_CONFIG --variable=mal2xhtml yelp-xsl`"
-AC_SUBST(XSL_MAL2XHTML)
-
-XSL_GETTEXT="`$PKG_CONFIG --variable=gettext yelp-xsl`"
-AC_SUBST(XSL_GETTEXT)
-
-YELP_ICON_PATH="`$PKG_CONFIG --variable=icondir yelp-xsl`"
-AC_SUBST(YELP_ICON_PATH)
-
-GLIB_GENMARSHAL="`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`"
-AC_SUBST(GLIB_GENMARSHAL)
-
-#
-# If Pango included the shared library dependencies from X11 in
-# the pkg-config output, then we use that (to avoid duplicates).
-# but if they were omitted to avoid binary compatibility problems
-# then we need to repeat the checks.
-#
-if $PKG_CONFIG --exists pangoxft ; then
- PANGO_PACKAGES="pangox pangoxft"
-else
- PANGO_PACKAGES="pangox"
-fi
-
-x_libs="`$PKG_CONFIG --libs $PANGO_PACKAGES`"
-case x_libs in
- *-lX11*) pango_omitted_x_deps=no ;;
- *) pango_omitted_x_deps=yes ;;
-esac
-
-if test $pango_omitted_x_deps = yes ; then
- AC_PATH_XTRA
-
- if test x$no_x = xyes ; then
- AC_MSG_ERROR([X development libraries not found])
- else
- X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
- fi
-fi
-
-AC_SUBST(X_LIBS)
-
-
-dnl ******
-dnl beagle
-dnl ******
-
-BEAGLE_MODULES=
-if $PKG_CONFIG --exists libbeagle-1.0; then
- BEAGLE_MODULES="libbeagle-1.0 >= 0.3.0"
-else
- BEAGLE_MODULES="libbeagle-0.0 >= 0.2.4"
-fi
-
-AC_ARG_WITH([search],
- [AC_HELP_STRING([--with-search=basic|beagle|auto],
- [turn on search support [default=auto]])], ,
- with_search=auto)
-
-if test "x$with_search" = "xauto"; then
- PKG_CHECK_MODULES(YELP_SEARCH, $BEAGLE_MODULES, have_beagle=yes, have_beagle=no)
-fi
-
-AM_CONDITIONAL(ENABLE_BEAGLE, test x"$with_search" = xbeagle)
-
-if test "x$with_search" = "xbeagle"; then
- PKG_CHECK_MODULES(YELP_SEARCH, $BEAGLE_MODULES)
-fi
-
-
-case "x$with_search" in
- "xbasic")
- search_backend="basic"
- ;;
- "xbeagle")
- search_backend="beagle"
- AC_DEFINE(ENABLE_BEAGLE, 1, [Define if you want the power of Beagle])
- ;;
- "xauto")
- search_backend="auto - basic"
- if test x$have_beagle = xyes; then
- AC_DEFINE(ENABLE_BEAGLE, 1)
- search_backend="auto - beagle"
- fi
- ;;
- *)
- AC_MSG_ERROR([Unknown search type selected - Please use --with-search=auto|basic|beagle])
- ;;
-esac
-
-AC_SUBST([YELP_SEARCH_CFLAGS])
-AC_SUBST([YELP_SEARCH_LIBS])
-
-
-dnl ====================================
-dnl = zlib for help converters
-dnl ====================================
-AC_CHECK_LIB(z, gzopen, [Z_LIBS=-lz
-AC_SUBST(Z_LIBS)], AC_MSG_ERROR([*** zlib is required]))
-
-dnl ====================================
-dnl = lzmadec for help converters
-dnl ====================================
-LZMADEC_LIBS=
-AC_CHECK_LIB(lzmadec, lzmadec_open, [LZMADEC_LIBS=-llzmadec
- AC_DEFINE(HAVE_LIBLZMADEC, 1, [Compile with liblzmadec support])])
-AC_SUBST(LZMADEC_LIBS)
-
-dnl ====================================
-dnl = Bzip2, for the help converters
-dnl ====================================
-BZ_LIBS=
-AC_CHECK_LIB(bz2, bzread, [AC_DEFINE(HAVE_LIBBZ2, 1, [Compile with libbz2 suppot])
- BZ_LIBS="-lbz2"])
-dnl <= Check for bzip2 > 1.0.0
- AC_CHECK_LIB(bz2, BZ2_bzread, [AC_DEFINE(HAVE_LIBBZ2, 1, [Compile with libbz2 support])
- BZ_LIBS="-lbz2"
- dnl <= define the wrapper-functions to get the Bzip2 stuff working .. =>
- AC_DEFINE(bzread,BZ2_bzread, [Needed to get Bzip2 working])
- AC_DEFINE(bzopen,BZ2_bzopen, [Needed to get Bzip2 working])
- AC_DEFINE(bzdopen,BZ2_bzdopen, [Needed to get Bzip2 working])
- AC_DEFINE(bzwrite,BZ2_bzwrite, [Needed to get Bzip2 working])
- AC_DEFINE(bzerror,BZ2_bzerror, [Needed to get Bzip2 working])
- AC_DEFINE(bzclose,BZ2_bzclose, [Needed to get Bzip2 working])
- AC_DEFINE(bzflush,BZ2_bzflush, [Needed to get Bzip2 working])
- AC_DEFINE(bzCompress,BZ2_bzCompress, [Needed to get Bzip2 working])
- AC_DEFINE(bzCompressInit,BZ2_bzCompressInit, [Needed to get Bzip2 working])
- AC_DEFINE(bzDecompress,BZ2_bzDecompress, [Needed to get Bzip2 working])
- AC_DEFINE(bzDecompressInit,BZ2_bzDecompressInit, [Needed to get Bzip2 working])
- ])
- dnl =>
-AC_SUBST(BZ_LIBS)
-
-# *****
-# SMClient
-# *****
-
-GDK_TARGET="$($PKG_CONFIG --variable target gdk-2.0)"
-
-SMCLIENT_PKGS=
-AC_MSG_CHECKING([which smclient backend to use])
-AC_ARG_WITH([smclient],
- [AS_HELP_STRING([--with-smclient],[which smclient backend to use (xsmp/win32/quartz)])],
- [],
- [case "$GDK_TARGET" in
- x11) with_smclient=xsmp SMCLIENT_PKGS="sm" ;;
- win32|quartz) with_smclient=$GDK_TARGET ;;
- *) with_smclient=no ;;
- esac])
-AC_MSG_RESULT([$with_smclient])
-
-if test "$with_smclient" != "no"; then
- PKG_CHECK_MODULES([SMCLIENT],[$SMCLIENT_PKGS])
- AC_DEFINE([WITH_SMCLIENT],[1],[Define if smclient is enabled])
-fi
-
-AM_CONDITIONAL([WITH_SMCLIENT],[test "$with_smclient" != "no"])
-AM_CONDITIONAL([WITH_SMCLIENT_XSMP],[test "$with_smclient" = "xsmp"])
-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"
-
-
-AC_SUBST([AM_CPPFLAGS])
-AC_SUBST([AM_CFLAGS])
-AC_SUBST([AM_LDFLAGS])
-
-AC_CONFIG_FILES([
-Makefile
-docs/Makefile
-docs/libyelp/Makefile
-docs/libyelp/version.xml
-libyelp/Makefile
-src/Makefile
-stylesheets/Makefile
-stylesheets/db2html.xsl
-stylesheets/db-title.xsl
-stylesheets/mal2html.xsl
-stylesheets/toc2html.xsl
-stylesheets/yelp-common.xsl
-data/Makefile
-data/icons/Makefile
-data/icons/hicolor/Makefile
-data/icons/hicolor/16x16/Makefile
-data/icons/hicolor/16x16/status/Makefile
-data/ui/Makefile
-po/Makefile.in
-tests/Makefile
-yelp.desktop.in
-])
-
-AC_OUTPUT
-
-dnl ==========================================================================
-echo "
-yelp-$VERSION:
-
- prefix: ${prefix}
- source code location: ${srcdir}
- compiler: ${CC}
-
- Documentation: ${enable_gtk_doc}
- Debug enabled: ${enable_debug}
- Search backend: ${search_backend}
- Using SMClient: ${with_smclient}
-
-"
diff --git a/data/Makefile.am b/data/Makefile.am
index 0459f73a..adab8627 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,8 +1,18 @@
-SUBDIRS = icons ui
+SUBDIRS = icons
+
+#This has to be defined, because GSETTINGS_CHECK_RULE adds to it
+MOSTLYCLEANFILES =
@INTLTOOL_XML_RULE@
@INTLTOOL_SCHEMAS_RULE@
+gsettingsschema_DATA = org.gnome.yelp.gschema.xml
+@GSETTINGS_CHECK_RULE@
+if GSETTINGS_SCHEMAS_INSTALL
+install-data-hook:
+ $(GLIB_COMPILE_SCHEMAS) $(DESTDIR)$(gsettingsschemadir)
+endif
+
tocdir = $(datadir)/yelp
toc_DATA = man.xml toc.xml scrollkeeper.xml info.xml
@@ -20,7 +30,7 @@ EXTRA_DIST = \
toc.xml toc.xml.in \
info.xml info.xml.in \
scrollkeeper.xml default.css \
- yelp.js
+ $(gsettingsschema_DATA) \
+ $(js_DATA)
CLEANFILES = toc.xml man.xml info.xml
-
diff --git a/data/icons/hicolor/16x16/status/Makefile.am b/data/icons/hicolor/16x16/status/Makefile.am
index 8c0f341d..1b40ddd7 100644
--- a/data/icons/hicolor/16x16/status/Makefile.am
+++ b/data/icons/hicolor/16x16/status/Makefile.am
@@ -1,6 +1,7 @@
icondir = $(datadir)/yelp/icons/hicolor/16x16/status
icon_DATA = \
+ bookmark.png \
yelp-page-task.png \
yelp-page-tip.png \
yelp-page-ui.png \
diff --git a/data/icons/hicolor/16x16/status/bookmark.png b/data/icons/hicolor/16x16/status/bookmark.png
new file mode 100644
index 00000000..627f7ade
--- /dev/null
+++ b/data/icons/hicolor/16x16/status/bookmark.png
Binary files differ
diff --git a/data/org.gnome.yelp.gschema.xml b/data/org.gnome.yelp.gschema.xml
new file mode 100644
index 00000000..250c12a3
--- /dev/null
+++ b/data/org.gnome.yelp.gschema.xml
@@ -0,0 +1,27 @@
+<schemalist>
+<schema id="org.gnome.yelp" path="/org/gnome/yelp/">
+ <key name="show-cursor" type="b">
+ <default>false</default>
+ </key>
+ <key name="font-adjustment" type="i">
+ <default>0</default>
+ <!--
+ I'm supposed to be able to do this, but gschema-compile doesn't allow it.
+ https://bugzilla.gnome.org/show_bug.cgi?id=616432
+ https://bugzilla.gnome.org/show_bug.cgi?id=616102
+ <range>
+ <min>-3</min>
+ <max>10</max>
+ </range>
+ -->
+ </key>
+</schema>
+<schema id="org.gnome.yelp.documents">
+ <key name="geometry" type="(ii)">
+ <default>(520,580)</default>
+ </key>
+ <key name="bookmarks" type="a(sss)">
+ <default>[]</default>
+ </key>
+</schema>
+</schemalist>
diff --git a/data/ui/Makefile.am b/data/ui/Makefile.am
deleted file mode 100644
index aebda110..00000000
--- a/data/ui/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-uidir = $(datadir)/yelp/ui
-
-ui_DATA = yelp-bookmarks.ui yelp-bookmarks-add.ui yelp-open-location.ui yelp-preferences.ui yelp-ui.xml yelp-search-ui.xml
-
-EXTRA_DIST = $(ui_DATA)
diff --git a/data/ui/yelp-bookmarks-add.ui b/data/ui/yelp-bookmarks-add.ui
deleted file mode 100644
index 862c87f1..00000000
--- a/data/ui/yelp-bookmarks-add.ui
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkDialog" id="add_bookmark_dialog">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Add Bookmark</property>
- <property name="resizable">False</property>
- <property name="type_hint">dialog</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox9">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkAlignment" id="alignment14">
- <property name="visible">True</property>
- <property name="yalign">0</property>
- <child>
- <object class="GtkHBox" id="hbox90">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="label1230">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Title:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">bookmark_title_entry</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="bookmark_title_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="activates_default">True</property>
- <property name="width_chars">30</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area9">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="cancelbutton1">
- <property name="label">gtk-cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="okbutton1">
- <property name="label">gtk-add</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-6">cancelbutton1</action-widget>
- <action-widget response="-5">okbutton1</action-widget>
- </action-widgets>
- </object>
-</interface>
diff --git a/data/ui/yelp-bookmarks.ui b/data/ui/yelp-bookmarks.ui
deleted file mode 100644
index 9710fb8b..00000000
--- a/data/ui/yelp-bookmarks.ui
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkDialog" id="bookmarks_dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Bookmarks</property>
- <property name="default_width">300</property>
- <property name="default_height">300</property>
- <property name="type_hint">dialog</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox8">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkTable" id="table1">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">6</property>
- <property name="row_spacing">6</property>
- <child>
- <object class="GtkLabel" id="label1231">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Bookmarks:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">bookmarks_view</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkVButtonBox" id="vbuttonbox1">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">start</property>
- <child>
- <object class="GtkButton" id="open_button">
- <property name="label">gtk-open</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="rename_button">
- <property name="label" translatable="yes">Re_name</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="remove_button">
- <property name="label">gtk-remove</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="bookmarks_view">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area8">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="button1">
- <property name="label">gtk-close</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-7">button1</action-widget>
- </action-widgets>
- </object>
-</interface>
diff --git a/data/ui/yelp-open-location.ui b/data/ui/yelp-open-location.ui
deleted file mode 100644
index 69e2157f..00000000
--- a/data/ui/yelp-open-location.ui
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkDialog" id="location_dialog">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Open Location</property>
- <property name="resizable">False</property>
- <property name="destroy_with_parent">True</property>
- <property name="type_hint">dialog</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox6">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkHBox" id="hbox89">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="location_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Location:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">location_entry</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="location_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="activates_default">True</property>
- <property name="width_chars">30</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area6">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="cancel_button">
- <property name="label">gtk-cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="open_button">
- <property name="label">gtk-open</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-6">cancel_button</action-widget>
- <action-widget response="-5">open_button</action-widget>
- </action-widgets>
- </object>
-</interface>
diff --git a/data/ui/yelp-preferences.ui b/data/ui/yelp-preferences.ui
deleted file mode 100644
index e8111266..00000000
--- a/data/ui/yelp-preferences.ui
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkDialog" id="prefs_dialog">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Preferences</property>
- <property name="destroy_with_parent">True</property>
- <property name="type_hint">dialog</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox7">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkVBox" id="vbox133">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <property name="spacing">18</property>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label1226">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Fonts</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment11">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkCheckButton" id="use_system_fonts">
- <property name="label" translatable="yes">_Use system fonts</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment12">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkTable" id="font_table">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <object class="GtkLabel" id="label1227">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Variable width:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">variable_font</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label1228">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Fixed width:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">fixed_font</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkFontButton" id="variable_font">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkFontButton" id="fixed_font">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox134">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label1229">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Accessibility</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment13">
- <property name="visible">True</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkCheckButton" id="use_caret">
- <property name="label" translatable="yes">_Browse with caret</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area7">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="closebutton1">
- <property name="label">gtk-close</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-7">closebutton1</action-widget>
- </action-widgets>
- </object>
-</interface>
diff --git a/data/ui/yelp-search-ui.xml b/data/ui/yelp-search-ui.xml
deleted file mode 100644
index c2c2cd5b..00000000
--- a/data/ui/yelp-search-ui.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ui>
- <toolbar name="tools">
- <placeholder>
- <separator/>
- <toolitem action="Search"/>
- </placeholder>
- </toolbar>
-</ui>
diff --git a/data/ui/yelp-ui.xml b/data/ui/yelp-ui.xml
deleted file mode 100644
index afaeb19a..00000000
--- a/data/ui/yelp-ui.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ui>
- <menubar>
- <menu action="PageMenu">
- <menuitem action="NewWindow"/>
- <menuitem action="CloseWindow"/>
- </menu>
- <menu action="ViewMenu">
- <menuitem action="LargerText"/>
- <menuitem action="SmallerText"/>
- <separator/>
- <menuitem action="ShowTextCursor"/>
- </menu>
- <menu action="GoMenu">
- <menuitem action="GoBack"/>
- <menuitem action="GoForward"/>
- </menu>
- </menubar>
- <accelerator action="OpenLocation"/>
-<!--
- <menubar>
- <menu action="FileMenu">
- <menuitem action="NewWindow"/>
- <separator/>
- <menuitem action="AboutDocument"/>
- <separator/>
- <menuitem action="PrintPage"/>
- <menuitem action="PrintDocument"/>
- <separator/>
- </menu>
- <menu action="EditMenu">
- <menuitem action="Copy"/>
- <menuitem action="SelectAll"/>
- <separator/>
- <menuitem action="Find"/>
- <menuitem action="FindNext"/>
- <menuitem action="FindPrev"/>
- <separator/>
- <menuitem action="Preferences"/>
- </menu>
- <menu action="GoMenu">
- <menuitem action="GoBack"/>
- <menuitem action="GoForward"/>
- <menuitem action="GoHome"/>
- <separator/>
- <menuitem action="GoPrevious"/>
- <menuitem action="GoNext"/>
- <menuitem action="GoContents"/>
- </menu>
- <menu action="BookmarksMenu">
- <menuitem action="AddBookmark"/>
- <menuitem action="EditBookmarks"/>
- <separator/>
- <placeholder name="BookmarksTOC"/>
- <separator/>
- <placeholder name="BookmarksDOC"/>
- </menu>
- <menu action="HelpMenu">
- <menuitem action="Contents"/>
- <menuitem action="About"/>
- </menu>
- </menubar>
- <toolbar name="tools">
- <toolitem action="GoForward" name="GoFor"/>
- <separator/>
- <toolitem action="GoHome"/>
- <placeholder/>
- </toolbar>
- <popup name="main_popup">
- <menuitem action="OpenLink"/>
- <menuitem action="OpenLinkNewWindow"/>
- <separator/>
- <menuitem action="CopyLocation"/>
- </popup>
- <popup name="mail_popup">
- <menuitem name="CpMail" action="CopyMail"/>
- </popup>
- <accelerator action="Reload"/>
- <accelerator action="TextCursor"/>
--->
-</ui>
diff --git a/docs/libyelp/Makefile.am b/docs/libyelp/Makefile.am
index 9a8d530c..945dbfcb 100644
--- a/docs/libyelp/Makefile.am
+++ b/docs/libyelp/Makefile.am
@@ -14,8 +14,8 @@ GTKDOC_CFLAGS = \
$(YELP_CFLAGS) \
-I$(top_srcdir)/libyelp
-GTKDOC_LIBS = \
- $(YELP_LIBS) \
+GTKDOC_LIBS = \
+ $(YELP_LIBS) \
$(top_builddir)/libyelp/libyelp.la
HFILE_GLOB = $(top_srcdir)/libyelp/*.h
@@ -26,11 +26,11 @@ MKDB_OPTIONS = --output-format=xml --sgml-mode --name-space=yelp --ignore-files=
content_files = version.xml
-extra_viles = version.xml.in
+extra_files = version.xml.in
include $(top_srcdir)/gtk-doc.make
-EXTRA_DIST += version.xm.in
+EXTRA_DIST += version.xml.in
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
diff --git a/libyelp/Makefile.am b/libyelp/Makefile.am
index 85d2a40b..df7fc23f 100644
--- a/libyelp/Makefile.am
+++ b/libyelp/Makefile.am
@@ -5,8 +5,10 @@ libyelp_la_SOURCES = \
yelp-error.c \
yelp-docbook-document.c \
yelp-document.c \
- yelp-io-channel.c \
+ yelp-info-document.c \
+ yelp-info-parser.c \
yelp-location-entry.c \
+ yelp-magic-decompressor.c \
yelp-mallard-document.c \
yelp-marshal.c \
yelp-settings.c \
@@ -16,6 +18,27 @@ libyelp_la_SOURCES = \
yelp-types.c \
yelp-view.c
+EXTRA_DIST = \
+ yelp-bz2-decompressor.h \
+ yelp-debug.h \
+ yelp-error.h \
+ yelp-info-parser.h \
+ yelp-lzma-decompressor.h \
+ yelp-magic-decompressor.h \
+ yelp-marshal.list
+
+if ENABLE_LZMA
+libyelp_la_SOURCES += yelp-lzma-decompressor.c
+else
+EXTRA_DIST += yelp-lzma-decompressor.c
+endif
+
+if ENABLE_BZ2
+libyelp_la_SOURCES += yelp-bz2-decompressor.c
+else
+EXTRA_DIST += yelp-bz2-decompressor.c
+endif
+
libyelp_la_CFLAGS = \
$(YELP_CFLAGS) \
-DDATADIR=\""$(datadir)"\" \
@@ -27,6 +50,7 @@ libyelp_la_LIBADD = \
libyelp_headers = \
yelp-docbook-document.h \
yelp-document.h \
+ yelp-info-document.h \
yelp-location-entry.h \
yelp-mallard-document.h \
yelp-settings.h \
@@ -48,19 +72,17 @@ BUILT_SOURCES = \
yelp-types.c \
yelp-types.h
-EXTRA_DIST = yelp-marshal.list
-
yelp-marshal.h: stamp-yelp-marshal.h
@true
stamp-yelp-marshal.h: yelp-marshal.list
- @GLIB_GENMARSHAL@ --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --header > xgen-ymh \
+ $(AM_V_GEN) glib-genmarshal --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --header > xgen-ymh \
&& (cmp -s xgen-ymh yelp-marshal.h || cp xgen-ymh yelp-marshal.h) \
&& rm -f xgen-ymh xgen-ymh~ \
&& echo timestamp > $(@F)
yelp-marshal.c: yelp-marshal.list
- @GLIB_GENMARSHAL@ --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --body > xgen-ymc \
+ $(AM_V_GEN) glib-genmarshal --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --body > xgen-ymc \
&& cp xgen-ymc yelp-marshal.c \
&& rm -f xgen-ymc xgen-ymc~
@@ -69,7 +91,7 @@ yelp-marshal-main.c: yelp-marshal.c
CLEANFILES = $(BUILT_SOURCES)
yelp-types.h: $(libyelp_headers)
- (cd $(srcdir) && glib-mkenums \
+ $(AM_V_GEN) (cd $(srcdir) && glib-mkenums \
--fhead "#ifndef __LIBYELP_TYPES_H__\n" \
--fhead "#define __LIBYELP_TYPES_H__\n\n" \
--fhead "#include <glib-object.h>\n\n" \
@@ -82,7 +104,7 @@ yelp-types.h: $(libyelp_headers)
$(libyelp_headers)) > $@
yelp-types.c: $(libyelp_headers)
- (cd $(srcdir) && glib-mkenums \
+ $(AM_V_GEN) (cd $(srcdir) && glib-mkenums \
--fhead "#include <glib-object.h>\n" \
--fhead "#include \"yelp-types.h\"\n\n" \
--fprod "\n/* enumerations from \"@filename@\" */" \
diff --git a/libyelp/yelp-bz2-decompressor.c b/libyelp/yelp-bz2-decompressor.c
new file mode 100644
index 00000000..98802cee
--- /dev/null
+++ b/libyelp/yelp-bz2-decompressor.c
@@ -0,0 +1,173 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <string.h>
+
+#include <glib/gi18n.h>
+
+#include "yelp-bz2-decompressor.h"
+
+static void yelp_bz2_decompressor_iface_init (GConverterIface *iface);
+
+struct _YelpBz2Decompressor
+{
+ GObject parent_instance;
+
+ bz_stream bzstream;
+};
+
+G_DEFINE_TYPE_WITH_CODE (YelpBz2Decompressor, yelp_bz2_decompressor, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_CONVERTER,
+ yelp_bz2_decompressor_iface_init))
+
+static void
+yelp_bz2_decompressor_finalize (GObject *object)
+{
+ YelpBz2Decompressor *decompressor;
+
+ decompressor = YELP_BZ2_DECOMPRESSOR (object);
+
+ BZ2_bzDecompressEnd (&decompressor->bzstream);
+
+ G_OBJECT_CLASS (yelp_bz2_decompressor_parent_class)->finalize (object);
+}
+
+static void
+yelp_bz2_decompressor_init (YelpBz2Decompressor *decompressor)
+{
+}
+
+static void
+yelp_bz2_decompressor_constructed (GObject *object)
+{
+ YelpBz2Decompressor *decompressor;
+ int res;
+
+ decompressor = YELP_BZ2_DECOMPRESSOR (object);
+
+ res = BZ2_bzDecompressInit (&decompressor->bzstream, 0, FALSE);
+
+ if (res == BZ_MEM_ERROR )
+ g_error ("YelpBz2Decompressor: Not enough memory for bzip2 use");
+
+ if (res != BZ_OK)
+ g_error ("YelpBz2Decompressor: Unexpected bzip2 error");
+}
+
+static void
+yelp_bz2_decompressor_class_init (YelpBz2DecompressorClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->finalize = yelp_bz2_decompressor_finalize;
+ gobject_class->constructed = yelp_bz2_decompressor_constructed;
+}
+
+YelpBz2Decompressor *
+yelp_bz2_decompressor_new (void)
+{
+ YelpBz2Decompressor *decompressor;
+
+ decompressor = g_object_new (YELP_TYPE_BZ2_DECOMPRESSOR, NULL);
+
+ return decompressor;
+}
+
+static void
+yelp_bz2_decompressor_reset (GConverter *converter)
+{
+ YelpBz2Decompressor *decompressor = YELP_BZ2_DECOMPRESSOR (converter);
+ int res;
+
+ /* libbzip2 doesn't have a reset function. Ending and reiniting
+ * might do the trick. But this is untested. If reset matters
+ * to you, test this.
+ */
+ BZ2_bzDecompressEnd (&decompressor->bzstream);
+ res = BZ2_bzDecompressInit (&decompressor->bzstream, 0, FALSE);
+
+ if (res == BZ_MEM_ERROR )
+ g_error ("YelpBz2Decompressor: Not enough memory for bzip2 use");
+
+ if (res != BZ_OK)
+ g_error ("YelpBz2Decompressor: Unexpected bzip2 error");
+}
+
+static GConverterResult
+yelp_bz2_decompressor_convert (GConverter *converter,
+ const void *inbuf,
+ gsize inbuf_size,
+ void *outbuf,
+ gsize outbuf_size,
+ GConverterFlags flags,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error)
+{
+ YelpBz2Decompressor *decompressor;
+ gsize header_size;
+ int res;
+
+ decompressor = YELP_BZ2_DECOMPRESSOR (converter);
+
+ decompressor->bzstream.next_in = (void *)inbuf;
+ decompressor->bzstream.avail_in = inbuf_size;
+
+ decompressor->bzstream.next_out = outbuf;
+ decompressor->bzstream.avail_out = outbuf_size;
+
+ res = BZ2_bzDecompress (&decompressor->bzstream);
+
+ if (res == BZ_DATA_ERROR || res == BZ_DATA_ERROR_MAGIC) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA,
+ _("Invalid compressed data"));
+ return G_CONVERTER_ERROR;
+ }
+
+ if (res == BZ_MEM_ERROR) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Not enough memory"));
+ return G_CONVERTER_ERROR;
+ }
+
+ if (res == BZ_OK || res == BZ_STREAM_END) {
+ *bytes_read = inbuf_size - decompressor->bzstream.avail_in;
+ *bytes_written = outbuf_size - decompressor->bzstream.avail_out;
+
+ if (res == BZ_STREAM_END)
+ return G_CONVERTER_FINISHED;
+ return G_CONVERTER_CONVERTED;
+ }
+
+ g_assert_not_reached ();
+}
+
+static void
+yelp_bz2_decompressor_iface_init (GConverterIface *iface)
+{
+ iface->convert = yelp_bz2_decompressor_convert;
+ iface->reset = yelp_bz2_decompressor_reset;
+}
diff --git a/libyelp/yelp-bz2-decompressor.h b/libyelp/yelp-bz2-decompressor.h
new file mode 100644
index 00000000..e067f26e
--- /dev/null
+++ b/libyelp/yelp-bz2-decompressor.h
@@ -0,0 +1,53 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#ifndef __YELP_BZ2_DECOMPRESSOR_H__
+#define __YELP_BZ2_DECOMPRESSOR_H__
+
+#include <gio/gio.h>
+#include <bzlib.h>
+
+G_BEGIN_DECLS
+
+#define YELP_TYPE_BZ2_DECOMPRESSOR (yelp_bz2_decompressor_get_type ())
+#define YELP_BZ2_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_BZ2_DECOMPRESSOR, YelpBz2Decompressor))
+#define YELP_BZ2_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), YELP_TYPE_BZ2_DECOMPRESSOR, YelpBz2DecompressorClass))
+#define YELP_IS_BZ2_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_BZ2_DECOMPRESSOR))
+#define YELP_IS_BZ2_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_BZ2_DECOMPRESSOR))
+#define YELP_BZ2_DECOMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_BZ2_DECOMPRESSOR, YelpBz2DecompressorClass))
+
+typedef struct _YelpBz2Decompressor YelpBz2Decompressor;
+typedef struct _YelpBz2DecompressorClass YelpBz2DecompressorClass;
+
+struct _YelpBz2DecompressorClass
+{
+ GObjectClass parent_class;
+};
+
+GType yelp_bz2_decompressor_get_type (void);
+
+YelpBz2Decompressor *yelp_bz2_decompressor_new (void);
+
+G_END_DECLS
+
+#endif /* __YELP_BZ2_DECOMPRESSOR_H__ */
diff --git a/libyelp/yelp-docbook-document.c b/libyelp/yelp-docbook-document.c
index 3849f534..7463033a 100644
--- a/libyelp/yelp-docbook-document.c
+++ b/libyelp/yelp-docbook-document.c
@@ -152,9 +152,15 @@ yelp_docbook_document_dispose (GObject *object)
{
YelpDocbookDocumentPrivate *priv = GET_PRIV (object);
- g_object_unref (priv->uri);
+ if (priv->uri) {
+ g_object_unref (priv->uri);
+ priv->uri = NULL;
+ }
- g_object_unref (priv->sections);
+ if (priv->sections) {
+ g_object_unref (priv->sections);
+ priv->sections = NULL;
+ }
G_OBJECT_CLASS (yelp_docbook_document_parent_class)->dispose (object);
}
@@ -766,8 +772,8 @@ transform_finished (YelpTransform *transform,
is finalized. Otherwise, we could crash when YelpTransform frees
its libxslt resources.
*/
- g_object_weak_ref (transform,
- transform_finalized,
+ g_object_weak_ref ((GObject *) transform,
+ (GWeakNotify) transform_finalized,
docbook);
docuri = yelp_uri_get_document_uri (priv->uri);
@@ -807,10 +813,9 @@ transform_finalized (YelpDocbookDocument *docbook,
{
YelpDocbookDocumentPrivate *priv = GET_PRIV (docbook);
- debug_print (DB_FUNCTION, "entering\n");
+ debug_print (DB_FUNCTION, "entering\n");
if (priv->xmldoc)
xmlFreeDoc (priv->xmldoc);
priv->xmldoc = NULL;
-
}
diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c
index d30e4027..45017775 100644
--- a/libyelp/yelp-document.c
+++ b/libyelp/yelp-document.c
@@ -30,6 +30,7 @@
#include "yelp-debug.h"
#include "yelp-document.h"
#include "yelp-error.h"
+#include "yelp-info-document.h"
#include "yelp-docbook-document.h"
#include "yelp-mallard-document.h"
#include "yelp-simple-document.h"
@@ -119,7 +120,7 @@ static void request_cancel (GCancellable *cancellab
static gboolean request_idle_contents (Request *request);
static gboolean request_idle_info (Request *request);
static gboolean request_idle_error (Request *request);
-static void request_try_free (Request *request);
+static gboolean request_try_free (Request *request);
static void request_free (Request *request);
static const gchar * str_ref (const gchar *str);
@@ -135,6 +136,7 @@ yelp_document_get_for_uri (YelpUri *uri)
{
static GHashTable *documents = NULL;
gchar *docuri;
+ gchar *page_id, *tmp;
YelpDocument *document = NULL;
if (documents == NULL)
@@ -147,6 +149,24 @@ yelp_document_get_for_uri (YelpUri *uri)
if (docuri == NULL)
return NULL;
+ switch (yelp_uri_get_document_type (uri)) {
+ case YELP_URI_DOCUMENT_TYPE_TEXT:
+ case YELP_URI_DOCUMENT_TYPE_HTML:
+ case YELP_URI_DOCUMENT_TYPE_XHTML:
+ /* We use YelpSimpleDocument for these, which is a single-file
+ * responder. But the document URI may be set to the directory
+ * holding the file, to allow a directory of HTML files to act
+ * as a single document. So we cache these by a fuller URI.
+ */
+ page_id = yelp_uri_get_page_id (uri);
+ tmp = g_strconcat (docuri, "/", page_id, NULL);
+ g_free (page_id);
+ g_free (docuri);
+ docuri = tmp;
+ break;
+ default:
+ break;
+ }
document = g_hash_table_lookup (documents, docuri);
if (document != NULL) {
@@ -170,7 +190,7 @@ yelp_document_get_for_uri (YelpUri *uri)
/* FIXME */
break;
case YELP_URI_DOCUMENT_TYPE_INFO:
- /* FIXME */
+ document = yelp_info_document_new (uri);
break;
case YELP_URI_DOCUMENT_TYPE_TOC:
/* FIXME */
@@ -338,7 +358,7 @@ yelp_document_set_page_id (YelpDocument *document,
hash_replace (document->priv->page_ids, id, g_strdup (page_id));
- if (id != NULL && !g_str_equal (id, page_id)) {
+ if (id == NULL || !g_str_equal (id, page_id)) {
GSList *reqs, *cur;
reqs = hash_lookup (document->priv->reqs_by_page_id, id);
for (cur = reqs; cur != NULL; cur = cur->next) {
@@ -595,6 +615,9 @@ yelp_document_get_page_icon (YelpDocument *document,
}
g_mutex_unlock (document->priv->mutex);
+ if (ret == NULL)
+ ret = g_strdup ("help-contents");
+
return ret;
}
@@ -813,7 +836,7 @@ yelp_document_signal (YelpDocument *document,
break;
case YELP_DOCUMENT_SIGNAL_ERROR:
request->idle_funcs++;
- request->error = yelp_error_copy (error);
+ request->error = yelp_error_copy ((GError *) error);
g_idle_add ((GSourceFunc) request_idle_error, request);
break;
default:
@@ -839,7 +862,7 @@ yelp_document_error_pending (YelpDocument *document,
if (priv->reqs_pending) {
for (cur = priv->reqs_pending; cur; cur = cur->next) {
request = cur->data;
- request->error = yelp_error_copy (error);
+ request->error = yelp_error_copy ((GError *) error);
request->idle_funcs++;
g_idle_add ((GSourceFunc) request_idle_error, request);
}
@@ -1078,7 +1101,7 @@ request_idle_error (Request *request)
return FALSE;
}
-static void
+static gboolean
request_try_free (Request *request)
{
if (!g_cancellable_is_cancelled (request->cancellable))
@@ -1088,6 +1111,8 @@ request_try_free (Request *request)
request_free (request);
else
g_idle_add ((GSourceFunc) request_try_free, request);
+
+ return FALSE;
}
static void
diff --git a/libyelp/yelp-info-document.c b/libyelp/yelp-info-document.c
new file mode 100644
index 00000000..5fb609d8
--- /dev/null
+++ b/libyelp/yelp-info-document.c
@@ -0,0 +1,486 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2007 Don Scorgie <dscorgie@svn.gnome.org>
+ * Copyright (C) 2010 Shaun McCance <shaunm@gnome.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 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: Don Scorgie <dscorgie@svn.gnome.org>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <libxml/tree.h>
+
+#include "yelp-error.h"
+#include "yelp-info-document.h"
+#include "yelp-info-parser.h"
+#include "yelp-transform.h"
+#include "yelp-debug.h"
+#include "yelp-settings.h"
+
+#define STYLESHEET DATADIR"/yelp/xslt/info2html.xsl"
+
+typedef enum {
+ INFO_STATE_BLANK, /* Brand new, run transform as needed */
+ INFO_STATE_PARSING, /* Parsing/transforming document, please wait */
+ INFO_STATE_PARSED, /* All done, if we ain't got it, it ain't here */
+ INFO_STATE_STOP /* Stop everything now, object to be disposed */
+} InfoState;
+
+typedef struct _YelpInfoDocumentPrivate YelpInfoDocumentPrivate;
+struct _YelpInfoDocumentPrivate {
+ YelpUri *uri;
+ InfoState state;
+
+ GMutex *mutex;
+ GThread *thread;
+
+ xmlDocPtr xmldoc;
+ GtkTreeModel *sections;
+
+ gboolean process_running;
+ gboolean transform_running;
+
+ YelpTransform *transform;
+ guint chunk_ready;
+ guint finished;
+ guint error;
+
+ gchar *root_id;
+ gchar *visit_prev_id;
+};
+
+
+static void yelp_info_document_class_init (YelpInfoDocumentClass *klass);
+static void yelp_info_document_init (YelpInfoDocument *info);
+static void yelp_info_document_dispose (GObject *object);
+static void yelp_info_document_finalize (GObject *object);
+
+/* YelpDocument */
+static gboolean info_request_page (YelpDocument *document,
+ const gchar *page_id,
+ GCancellable *cancellable,
+ YelpDocumentCallback callback,
+ gpointer user_data);
+
+/* YelpTransform */
+static void transform_chunk_ready (YelpTransform *transform,
+ gchar *chunk_id,
+ YelpInfoDocument *info);
+static void transform_finished (YelpTransform *transform,
+ YelpInfoDocument *info);
+static void transform_error (YelpTransform *transform,
+ YelpInfoDocument *info);
+static void transform_finalized (YelpInfoDocument *info,
+ gpointer transform);
+
+static void info_document_process (YelpInfoDocument *info);
+static gboolean info_sections_visit (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ YelpInfoDocument *info);
+static void info_document_disconnect (YelpInfoDocument *info);
+
+
+G_DEFINE_TYPE (YelpInfoDocument, yelp_info_document, YELP_TYPE_DOCUMENT);
+#define GET_PRIV(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_INFO_DOCUMENT, YelpInfoDocumentPrivate))
+
+static void
+yelp_info_document_class_init (YelpInfoDocumentClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ YelpDocumentClass *document_class = YELP_DOCUMENT_CLASS (klass);
+
+ object_class->dispose = yelp_info_document_dispose;
+ object_class->finalize = yelp_info_document_finalize;
+
+ document_class->request_page = info_request_page;
+
+ g_type_class_add_private (klass, sizeof (YelpInfoDocumentPrivate));
+}
+
+static void
+yelp_info_document_init (YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+
+ priv->state = INFO_STATE_BLANK;
+ priv->xmldoc = NULL;
+ priv->mutex = g_mutex_new ();
+}
+
+static void
+yelp_info_document_dispose (GObject *object)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (object);
+
+ if (priv->uri) {
+ g_object_unref (priv->uri);
+ priv->uri = NULL;
+ }
+
+ if (priv->sections) {
+ g_object_unref (priv->sections);
+ priv->sections = NULL;
+ }
+
+ if (priv->transform) {
+ g_object_unref (priv->transform);
+ priv->transform = NULL;
+ }
+
+ G_OBJECT_CLASS (yelp_info_document_parent_class)->dispose (object);
+}
+
+static void
+yelp_info_document_finalize (GObject *object)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (object);
+
+ if (priv->xmldoc)
+ xmlFreeDoc (priv->xmldoc);
+
+ g_free (priv->root_id);
+ g_free (priv->visit_prev_id);
+
+ g_mutex_free (priv->mutex);
+
+ G_OBJECT_CLASS (yelp_info_document_parent_class)->finalize (object);
+}
+
+/******************************************************************************/
+
+YelpDocument *
+yelp_info_document_new (YelpUri *uri)
+{
+ YelpInfoDocument *info;
+ YelpInfoDocumentPrivate *priv;
+
+ g_return_val_if_fail (uri != NULL, NULL);
+
+ info = (YelpInfoDocument *) g_object_new (YELP_TYPE_INFO_DOCUMENT, NULL);
+ priv = GET_PRIV (info);
+
+ priv->uri = g_object_ref (uri);
+
+ return (YelpDocument *) info;
+}
+
+
+/******************************************************************************/
+/** YelpDocument **************************************************************/
+
+static gboolean
+info_request_page (YelpDocument *document,
+ const gchar *page_id,
+ GCancellable *cancellable,
+ YelpDocumentCallback callback,
+ gpointer user_data)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (document);
+ gchar *docuri;
+ GError *error;
+ gboolean handled;
+
+ if (page_id == NULL)
+ page_id = priv->root_id;
+
+ handled =
+ YELP_DOCUMENT_CLASS (yelp_info_document_parent_class)->request_page (document,
+ page_id,
+ cancellable,
+ callback,
+ user_data);
+ if (handled) {
+ return;
+ }
+
+ g_mutex_lock (priv->mutex);
+
+ switch (priv->state) {
+ case INFO_STATE_BLANK:
+ priv->state = INFO_STATE_PARSING;
+ priv->process_running = TRUE;
+ g_object_ref (document);
+ priv->thread = g_thread_create ((GThreadFunc) info_document_process,
+ document, FALSE, NULL);
+ break;
+ case INFO_STATE_PARSING:
+ break;
+ case INFO_STATE_PARSED:
+ case INFO_STATE_STOP:
+ docuri = yelp_uri_get_document_uri (priv->uri);
+ error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND,
+ _("The page ‘%s’ was not found in the document ‘%s’."),
+ page_id, docuri);
+ g_free (docuri);
+ yelp_document_signal (document, page_id,
+ YELP_DOCUMENT_SIGNAL_ERROR,
+ error);
+ g_error_free (error);
+ break;
+ }
+
+ g_mutex_unlock (priv->mutex);
+}
+
+
+/******************************************************************************/
+/** YelpTransform *************************************************************/
+
+static void
+transform_chunk_ready (YelpTransform *transform,
+ gchar *chunk_id,
+ YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ gchar *content;
+
+ g_assert (transform == priv->transform);
+
+ if (priv->state == INFO_STATE_STOP) {
+ info_document_disconnect (info);
+ return;
+ }
+
+ content = yelp_transform_take_chunk (transform, chunk_id);
+ yelp_document_give_contents (YELP_DOCUMENT (info),
+ chunk_id,
+ content,
+ "application/xhtml+xml");
+
+ yelp_document_signal (YELP_DOCUMENT (info),
+ chunk_id,
+ YELP_DOCUMENT_SIGNAL_INFO,
+ NULL);
+ yelp_document_signal (YELP_DOCUMENT (info),
+ chunk_id,
+ YELP_DOCUMENT_SIGNAL_CONTENTS,
+ NULL);
+}
+
+static void
+transform_finished (YelpTransform *transform,
+ YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ gchar *docuri;
+ GError *error;
+
+ g_assert (transform == priv->transform);
+
+ if (priv->state == INFO_STATE_STOP) {
+ info_document_disconnect (info);
+ return;
+ }
+
+ info_document_disconnect (info);
+ priv->state = INFO_STATE_PARSED;
+
+ /* We want to free priv->xmldoc, but we can't free it before transform
+ is finalized. Otherwise, we could crash when YelpTransform frees
+ its libxslt resources.
+ */
+ g_object_weak_ref ((GObject *) transform,
+ (GWeakNotify) transform_finalized,
+ info);
+
+ docuri = yelp_uri_get_document_uri (priv->uri);
+ error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND,
+ _("The requested page was not found in the document ‘%s’."),
+ docuri);
+ g_free (docuri);
+ yelp_document_error_pending ((YelpDocument *) info, error);
+ g_error_free (error);
+}
+
+static void
+transform_error (YelpTransform *transform,
+ YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ GError *error;
+
+ g_assert (transform == priv->transform);
+
+ if (priv->state == INFO_STATE_STOP) {
+ info_document_disconnect (info);
+ return;
+ }
+
+ error = yelp_transform_get_error (transform);
+ yelp_document_error_pending ((YelpDocument *) info, error);
+ g_error_free (error);
+
+ info_document_disconnect (info);
+}
+
+static void
+transform_finalized (YelpInfoDocument *info,
+ gpointer transform)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+
+ if (priv->xmldoc)
+ xmlFreeDoc (priv->xmldoc);
+ priv->xmldoc = NULL;
+}
+
+
+
+/******************************************************************************/
+/** Threaded ******************************************************************/
+
+static void
+info_document_process (YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ GFile *file = NULL;
+ gchar *filepath = NULL;
+ GError *error;
+ gint params_i = 0;
+ gchar **params = NULL;
+
+ file = yelp_uri_get_file (priv->uri);
+ if (file == NULL) {
+ error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND,
+ _("The file does not exist."));
+ yelp_document_error_pending ((YelpDocument *) info, error);
+ g_error_free (error);
+ goto done;
+ }
+
+ filepath = g_file_get_path (file);
+ g_object_unref (file);
+ if (!g_file_test (filepath, G_FILE_TEST_IS_REGULAR)) {
+ error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND,
+ _("The file ‘%s’ does not exist."),
+ filepath);
+ yelp_document_error_pending ((YelpDocument *) info, error);
+ g_error_free (error);
+ goto done;
+ }
+
+ priv->sections = (GtkTreeModel *) yelp_info_parser_parse_file (filepath);
+ gtk_tree_model_foreach (priv->sections,
+ (GtkTreeModelForeachFunc) info_sections_visit,
+ info);
+ priv->xmldoc = yelp_info_parser_parse_tree ((GtkTreeStore *) priv->sections);
+
+ if (priv->xmldoc == NULL) {
+ error = g_error_new (YELP_ERROR, YELP_ERROR_PROCESSING,
+ _("The file ‘%s’ could not be parsed because it is"
+ " not a well-formed info page."),
+ filepath);
+ yelp_document_error_pending ((YelpDocument *) info, error);
+ goto done;
+ }
+
+ g_mutex_lock (priv->mutex);
+ if (priv->state == INFO_STATE_STOP) {
+ g_mutex_unlock (priv->mutex);
+ goto done;
+ }
+
+ priv->transform = yelp_transform_new (STYLESHEET);
+ priv->chunk_ready =
+ g_signal_connect (priv->transform, "chunk-ready",
+ (GCallback) transform_chunk_ready,
+ info);
+ priv->finished =
+ g_signal_connect (priv->transform, "finished",
+ (GCallback) transform_finished,
+ info);
+ priv->error =
+ g_signal_connect (priv->transform, "error",
+ (GCallback) transform_error,
+ info);
+
+ params = yelp_settings_get_all_params (yelp_settings_get_default (), 0, &params_i);
+
+ priv->transform_running = TRUE;
+ yelp_transform_start (priv->transform,
+ priv->xmldoc,
+ NULL,
+ (const gchar * const *) params);
+ g_strfreev (params);
+ g_mutex_unlock (priv->mutex);
+
+ done:
+ g_free (filepath);
+ priv->process_running = FALSE;
+ g_object_unref (info);
+}
+
+static gboolean
+info_sections_visit (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ gchar *page_id, *title;
+
+ gtk_tree_model_get (model, iter,
+ INFO_PARSER_COLUMN_PAGE_NO, &page_id,
+ INFO_PARSER_COLUMN_PAGE_NAME, &title,
+ -1);
+ yelp_document_set_page_id ((YelpDocument *) info, page_id, page_id);
+ yelp_document_set_page_title ((YelpDocument *) info, page_id, title);
+
+ if (priv->root_id == NULL) {
+ priv->root_id = g_strdup (page_id);
+ yelp_document_set_page_id ((YelpDocument *) info, NULL, page_id);
+ }
+ yelp_document_set_root_id ((YelpDocument *) info, page_id, priv->root_id);
+
+ if (priv->visit_prev_id != NULL) {
+ yelp_document_set_prev_id ((YelpDocument *) info, page_id, priv->visit_prev_id);
+ yelp_document_set_next_id ((YelpDocument *) info, priv->visit_prev_id, page_id);
+ g_free (priv->visit_prev_id);
+ }
+ priv->visit_prev_id = page_id;
+ g_free (title);
+ return FALSE;
+}
+
+static void
+info_document_disconnect (YelpInfoDocument *info)
+{
+ YelpInfoDocumentPrivate *priv = GET_PRIV (info);
+ if (priv->chunk_ready) {
+ g_signal_handler_disconnect (priv->transform, priv->chunk_ready);
+ priv->chunk_ready = 0;
+ }
+ if (priv->finished) {
+ g_signal_handler_disconnect (priv->transform, priv->finished);
+ priv->finished = 0;
+ }
+ if (priv->error) {
+ g_signal_handler_disconnect (priv->transform, priv->error);
+ priv->error = 0;
+ }
+ yelp_transform_cancel (priv->transform);
+ g_object_unref (priv->transform);
+ priv->transform = NULL;
+ priv->transform_running = FALSE;
+}
diff --git a/libyelp/yelp-info-document.h b/libyelp/yelp-info-document.h
new file mode 100644
index 00000000..40139446
--- /dev/null
+++ b/libyelp/yelp-info-document.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2007 Don Scorgie <dscorgie@svn.gnome.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 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: Don Scorgie <dscorgie@svn.gnome.org>
+ */
+
+#ifndef __YELP_INFO_DOCUMENT_H__
+#define __YELP_INFO_DOCUMENT_H__
+
+#include <glib-object.h>
+
+#include "yelp-document.h"
+
+#define YELP_TYPE_INFO_DOCUMENT (yelp_info_document_get_type ())
+#define YELP_INFO_DOCUMENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_INFO_DOCUMENT, YelpInfoDocument))
+#define YELP_INFO_DOCUMENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_INFO_DOCUMENT, YelpInfoDocumentClass))
+#define YELP_IS_INFO_DOCUMENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_INFO_DOCUMENT))
+#define YELP_IS_INFO_DOCUMENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_INFO_DOCUMENT))
+#define YELP_INFO_DOCUMENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_INFO_DOCUMENT, YelpInfoDocumentClass))
+
+typedef struct _YelpInfoDocument YelpInfoDocument;
+typedef struct _YelpInfoDocumentClass YelpInfoDocumentClass;
+typedef struct _YelpInfoPriv YelpInfoPriv;
+
+struct _YelpInfoDocument {
+ YelpDocument parent;
+};
+
+struct _YelpInfoDocumentClass {
+ YelpDocumentClass parent_class;
+};
+
+GType yelp_info_document_get_type (void);
+YelpDocument * yelp_info_document_new (YelpUri *uri);
+
+#endif /* __YELP_INFO_DOCUMENT_H__ */
diff --git a/src/yelp-info-parser.c b/libyelp/yelp-info-parser.c
index 276d878c..cbca0e47 100644
--- a/src/yelp-info-parser.c
+++ b/libyelp/yelp-info-parser.c
@@ -1,5 +1,6 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
- * Copyright (C) 2005 Davyd Madeley <davyd@madeley.id.au>
+ * Copyright (C) 2005 Davyd Madeley <davyd@madeley.id.au>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -27,9 +28,8 @@
#include <gtk/gtk.h>
#include <string.h>
-#include "yelp-io-channel.h"
#include "yelp-info-parser.h"
-#include "yelp-utils.h"
+#include "yelp-magic-decompressor.h"
#include "yelp-debug.h"
@@ -186,15 +186,6 @@ enum
PAGE_OTHER
};
-enum
-{
- COLUMN_PAGE_NO,
- COLUMN_PAGE_NAME,
- COLUMN_PAGE_CONTENT,
-
- N_COLUMNS
-};
-
static int
page_type (char *page)
{
@@ -213,32 +204,42 @@ page_type (char *page)
static char
*open_info_file (char *file)
{
- GIOChannel *channel = NULL;
- int i;
- gsize len;
- char *str;
- GError *error = NULL;
- GIOStatus result = G_IO_STATUS_NORMAL;
-
- debug_print (DB_DEBUG, "!! Opening %s...\n", file);
-
- channel = yelp_io_channel_new_file (file, &error);
- if (!channel) {
- return NULL;
- }
- result = g_io_channel_read_to_end (channel, &str, &len, &error);
- if (result != G_IO_STATUS_NORMAL) {
- return NULL;
- }
- g_io_channel_shutdown (channel, FALSE, NULL);
- g_io_channel_unref (channel);
-
- /* C/glib * cannot really handle \0 in strings, convert. */
- for (i = 0; i < (len - 1); i++)
- if (str[i] == INFO_TAG_OPEN[0] && str[i+1] == INFO_TAG_OPEN[1])
- str[i] = INFO_C_TAG_OPEN[0];
-
- return str;
+ GFile *gfile;
+ GConverter *converter;
+ GFileInputStream *file_stream;
+ GInputStream *stream;
+ gchar buf[1024];
+ gssize bytes;
+ GString *string;
+ gchar *str;
+ int i;
+
+ gfile = g_file_new_for_path (file);
+ file_stream = g_file_read (gfile, NULL, NULL);
+ converter = (GConverter *) yelp_magic_decompressor_new ();
+ stream = g_converter_input_stream_new ((GInputStream *) file_stream, converter);
+ string = g_string_new (NULL);
+
+ while ((bytes = g_input_stream_read (stream, buf, 1024, NULL, NULL)) > 0)
+ g_string_append_len (string, buf, bytes);
+
+ g_object_unref (stream);
+ /*
+ g_object_unref (converter);
+ g_object_unref (file_stream);
+ g_object_unref (file);
+ */
+
+ str = string->str;
+
+ /* C/glib * cannot really handle \0 in strings, convert. */
+ for (i = 0; i < (string->len - 1); i++)
+ if (str[i] == INFO_TAG_OPEN[0] && str[i+1] == INFO_TAG_OPEN[1])
+ str[i] = INFO_C_TAG_OPEN[0];
+
+ g_string_free (string, FALSE);
+
+ return str;
}
static gchar *
@@ -566,7 +567,7 @@ process_page (GtkTreeStore *tree, GHashTable *nodes2offsets,
}
/* by this point our parent and older sibling should be processed */
- if (!up || !g_ascii_strcasecmp (up, "(dir)") || !strcmp (up, "Top"))
+ if (!up || !g_ascii_strcasecmp (up, "(dir)"))
{
debug_print (DB_DEBUG, "\t> no parent\n");
if (!prev || !g_ascii_strcasecmp (prev, "(dir)"))
@@ -628,9 +629,9 @@ process_page (GtkTreeStore *tree, GHashTable *nodes2offsets,
tmp = g_strdup (node);
tmp = g_strdelimit (tmp, " ", '_');
gtk_tree_store_set (tree, iter,
- COLUMN_PAGE_NO, tmp,
- COLUMN_PAGE_NAME, node,
- COLUMN_PAGE_CONTENT, parts[2],
+ INFO_PARSER_COLUMN_PAGE_NO, tmp,
+ INFO_PARSER_COLUMN_PAGE_NAME, node,
+ INFO_PARSER_COLUMN_PAGE_CONTENT, parts[2],
-1);
g_free (tmp);
@@ -788,7 +789,7 @@ GtkTreeStore
* rather then consolidating these into one dictionary, we'll just
* chain our lookups */
processed_table = g_malloc0 (pages * sizeof (int));
- tree = gtk_tree_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING,
+ tree = gtk_tree_store_new (INFO_PARSER_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING);
nodes2iters = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
(GDestroyNotify) gtk_tree_iter_free);
@@ -816,7 +817,7 @@ GtkTreeStore
static void
parse_tree_level (GtkTreeStore *tree, xmlNodePtr *node, GtkTreeIter iter)
{
- GtkTreeIter children;
+ GtkTreeIter children, parent;
xmlNodePtr newnode;
char *page_no = NULL;
@@ -828,9 +829,9 @@ parse_tree_level (GtkTreeStore *tree, xmlNodePtr *node, GtkTreeIter iter)
do
{
gtk_tree_model_get (GTK_TREE_MODEL (tree), &iter,
- COLUMN_PAGE_NO, &page_no,
- COLUMN_PAGE_NAME, &page_name,
- COLUMN_PAGE_CONTENT, &page_content,
+ INFO_PARSER_COLUMN_PAGE_NO, &page_no,
+ INFO_PARSER_COLUMN_PAGE_NAME, &page_name,
+ INFO_PARSER_COLUMN_PAGE_CONTENT, &page_content,
-1);
debug_print (DB_DEBUG, "Got Section: %s\n", page_name);
if (strstr (page_content, "*Note") ||
@@ -856,6 +857,15 @@ parse_tree_level (GtkTreeStore *tree, xmlNodePtr *node, GtkTreeIter iter)
g_free (page_content);
page_content = NULL;
+ if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (tree), &parent, &iter)) {
+ gchar *parent_id;
+ gtk_tree_model_get (GTK_TREE_MODEL (tree), &parent,
+ INFO_PARSER_COLUMN_PAGE_NO, &parent_id,
+ -1);
+ xmlNewProp (newnode, BAD_CAST "up", BAD_CAST parent_id);
+ g_free (parent_id);
+ }
+
xmlNewProp (newnode, BAD_CAST "id",
BAD_CAST page_no);
xmlNewProp (newnode, BAD_CAST "name",
@@ -914,8 +924,8 @@ resolve_frag_id (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
gchar **xref = data;
gtk_tree_model_get (GTK_TREE_MODEL (model), iter,
- COLUMN_PAGE_NO, &page_no,
- COLUMN_PAGE_NAME, &page_name,
+ INFO_PARSER_COLUMN_PAGE_NO, &page_no,
+ INFO_PARSER_COLUMN_PAGE_NAME, &page_name,
-1);
if (g_str_equal (page_name, *xref)) {
g_free (*xref);
@@ -1029,9 +1039,9 @@ 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:", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
- g_free (tmp);
+ g_free (tmp);
} else { /* Indexy type menu - we gotta do a little work to fix the
* spacing
*/
@@ -1047,19 +1057,19 @@ 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:", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
- g_free (tmp);
+ g_free (tmp);
xmlNewTextChild (mholder, NULL, BAD_CAST "spacing",
BAD_CAST sp);
tmp = g_strconcat (g_strstrip(ref), ".", NULL);
ref1 = xmlNewTextChild (mholder, NULL, BAD_CAST "a",
BAD_CAST tmp);
g_free (tmp);
- tmp = g_strconcat ("?", xref, NULL);
+ tmp = g_strconcat ("xref:", xref, NULL);
xmlNewProp (ref1, BAD_CAST "href", BAD_CAST tmp);
- g_free (tmp);
+ g_free (tmp);
g_free (sp);
}
xmlNewTextChild (mholder, NULL, BAD_CAST "para",
@@ -1214,7 +1224,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 ("xref:", link, NULL);
link[length] = 'a';
g_free (link);
@@ -1249,8 +1259,8 @@ 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);
- g_free (frag);
+ href = g_strconcat ("xref:", frag, NULL);
+ g_free (frag);
}
for (ulink = urls; *ulink != NULL; ulink++) {
if (ulink == urls)
diff --git a/src/yelp-info-parser.h b/libyelp/yelp-info-parser.h
index 23eb71a0..d338a59a 100644
--- a/src/yelp-info-parser.h
+++ b/libyelp/yelp-info-parser.h
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* Copyright (C) 2004, Davyd Madeley
*
@@ -27,7 +27,13 @@
#include <gtk/gtk.h>
#include <libxml/tree.h>
-#include "yelp-utils.h"
+enum {
+ INFO_PARSER_COLUMN_PAGE_NO,
+ INFO_PARSER_COLUMN_PAGE_NAME,
+ INFO_PARSER_COLUMN_PAGE_CONTENT,
+ INFO_PARSER_N_COLUMNS
+};
+
GtkTreeStore *yelp_info_parser_parse_file (char *file);
xmlDocPtr yelp_info_parser_parse_tree (GtkTreeStore *tree);
diff --git a/libyelp/yelp-io-channel.c b/libyelp/yelp-io-channel.c
deleted file mode 100644
index 47934d11..00000000
--- a/libyelp/yelp-io-channel.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2003 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include <stdio.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include "yelp-error.h"
-#include "yelp-io-channel.h"
-
-#include <zlib.h>
-#ifdef HAVE_LIBBZ2
-#include <bzlib.h>
-#endif
-#ifdef HAVE_LIBLZMADEC
-#include <lzmadec.h>
-#endif
-#include <string.h>
-
-typedef struct _YelpIOChannel YelpIOChannel;
-struct _YelpIOChannel {
- GIOChannel channel;
-#ifdef HAVE_LIBBZ2
- BZFILE *bzin;
-#endif
- gzFile gzin;
-#ifdef HAVE_LIBLZMADEC
- lzmadec_FILE *lzin;
-#endif
-};
-
-static GIOStatus yelp_io_read (GIOChannel *channel,
- gchar *buffer,
- gsize count,
- gsize *bytes_read,
- GError **error);
-static GIOStatus yelp_io_close (GIOChannel *channel,
- GError **error);
-static void yelp_io_free (GIOChannel *channel);
-static GIOStatus yelp_io_set_flags (GIOChannel *channel,
- GIOFlags flags,
- GError **error);
-static GIOFlags yelp_io_get_flags (GIOChannel *channel);
-
-static GIOFuncs yelp_channel_funcs = {
- yelp_io_read,
- NULL,
- NULL,
- yelp_io_close,
- NULL,
- yelp_io_free,
- yelp_io_set_flags,
- yelp_io_get_flags,
-};
-
-GIOChannel *
-yelp_io_channel_new_file (gchar *file,
- GError **error)
-{
- YelpIOChannel *channel;
- GIOChannel *iochannel;
-
- if (!file)
- return NULL;
-
- if (!g_file_test (file, G_FILE_TEST_EXISTS) ||
- g_file_test (file, G_FILE_TEST_IS_DIR))
- return NULL;
-
- channel = g_new0(YelpIOChannel, 1);
- iochannel = (GIOChannel *) channel;
-
-#ifdef HAVE_LIBBZ2
- if (g_str_has_suffix (file, ".bz2"))
- channel->bzin = bzopen (file, "r");
- else
-#endif
-#ifdef HAVE_LIBLZMADEC
- if (g_str_has_suffix (file, ".lzma"))
- channel->lzin = lzmadec_open(file);
- else
-#endif
-
- channel->gzin = gzopen (file, "r");
-
- if(
-#ifdef HAVE_LIBBZ2
- !channel->bzin &&
-#endif
-#ifdef HAVE_LIBLZMADEC
- !channel->lzin &&
-#endif
- !channel->gzin) {
-
- yelp_io_free (iochannel);
- channel = (YelpIOChannel *) g_io_channel_new_file (file, "r", error);
-
- if (!channel) {
- if (error) {
- g_set_error (error, YELP_ERROR, YELP_ERROR_PROCESSING,
- _("The file ‘%s’ could not be read and decoded. "
- "The file may be compressed in an unsupported "
- "format."),
- file);
- }
- return NULL;
- }
- }
-
- iochannel->is_readable = TRUE;
- iochannel->is_seekable = FALSE;
- iochannel->is_writeable = FALSE;
-
- g_io_channel_init (iochannel);
- g_io_channel_set_encoding (iochannel, NULL, NULL);
-
- iochannel->close_on_unref = TRUE;
- iochannel->funcs = &yelp_channel_funcs;
-
- return iochannel;
-}
-
-static GIOStatus
-yelp_io_read (GIOChannel *channel,
- gchar *buffer,
- gsize count,
- gsize *bytes_read,
- GError **error)
-{
- gssize bytes;
- YelpIOChannel *yelp_channel = (YelpIOChannel *) channel;
-
-#ifdef HAVE_LIBBZ2
- if (yelp_channel->bzin)
- bytes = bzread (yelp_channel->bzin, buffer, count);
- else
-#endif
-#if HAVE_LIBLZMADEC
- if (yelp_channel->lzin)
- bytes = lzmadec_read (yelp_channel->lzin, buffer, count);
- else
-#endif
- bytes = gzread (yelp_channel->gzin, buffer, count);
-
- *bytes_read = bytes;
-
- if (bytes < 0)
- return G_IO_STATUS_ERROR;
- else if (bytes == 0)
- return G_IO_STATUS_EOF;
- else
- return G_IO_STATUS_NORMAL;
-}
-
-static GIOStatus
-yelp_io_close (GIOChannel *channel,
- GError **error)
-{
- YelpIOChannel *yelp_channel = (YelpIOChannel *) channel;
-
-#ifdef HAVE_LIBBZ2
- if (yelp_channel->bzin)
- bzclose (yelp_channel->bzin);
-#endif
-#ifdef HAVE_LIBLZMADEC
- if (yelp_channel->lzin)
- lzmadec_close (yelp_channel->lzin);
-#endif
- if (yelp_channel->gzin)
- gzclose (yelp_channel->gzin);
-
- /* FIXME: return error on error */
- return G_IO_STATUS_NORMAL;
-}
-
-static void
-yelp_io_free (GIOChannel *channel)
-{
- YelpIOChannel *yelp_channel = (YelpIOChannel *) channel;
-
- g_free (yelp_channel);
-}
-
-static GIOStatus
-yelp_io_set_flags (GIOChannel *channel,
- GIOFlags flags,
- GError **error)
-{
- if (flags == G_IO_FLAG_IS_READABLE)
- return G_IO_STATUS_NORMAL;
- else
- return G_IO_STATUS_ERROR;
-}
-
-static GIOFlags
-yelp_io_get_flags (GIOChannel *channel)
-{
- return G_IO_FLAG_IS_READABLE;
-}
-
diff --git a/libyelp/yelp-io-channel.h b/libyelp/yelp-io-channel.h
deleted file mode 100644
index ad2e0bfe..00000000
--- a/libyelp/yelp-io-channel.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2003 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org>
- */
-
-#ifndef __YELP_IO_CHANNEL_H__
-#define __YELP_IO_CHANNEL_H__
-
-#include <glib.h>
-
-GIOChannel * yelp_io_channel_new_file (gchar *file,
- GError **error);
-
-#endif /* __YELP_IO_CHANNEL_H__ */
diff --git a/libyelp/yelp-location-entry.c b/libyelp/yelp-location-entry.c
index 8339d7b2..187f6bf9 100644
--- a/libyelp/yelp-location-entry.c
+++ b/libyelp/yelp-location-entry.c
@@ -61,6 +61,8 @@
* will cause the FIXME signal to be emitted.
**/
+static void location_entry_dispose (GObject *object);
+static void location_entry_finalize (GObject *object);
static void location_entry_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -112,8 +114,18 @@ static void cell_set_text_cell (GtkCellLayout *layout,
GtkTreeModel *model,
GtkTreeIter *iter,
YelpLocationEntry *entry);
+static void cell_set_bookmark_icon (GtkCellLayout *layout,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ YelpLocationEntry *entry);
/* GtkEntryCompletion callbacks */
+static void cell_set_completion_bookmark_icon (GtkCellLayout *layout,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ YelpLocationEntry *entry);
static void cell_set_completion_text_cell (GtkCellLayout *layout,
GtkCellRenderer *cell,
GtkTreeModel *model,
@@ -132,28 +144,31 @@ static gboolean entry_match_selected (GtkEntryCompletion *complet
typedef struct _YelpLocationEntryPrivate YelpLocationEntryPrivate;
struct _YelpLocationEntryPrivate
{
- GtkWidget *text_entry;
+ GtkWidget *text_entry;
gint desc_column;
gint icon_column;
gint flags_column;
gboolean enable_search;
- GtkTreeRowReference *row;
-
gboolean search_mode;
+ guint pulse;
GtkCellRenderer *icon_cell;
- /* owned by entry, do not free */
GtkEntryCompletion *completion;
gint completion_desc_column;
+ gint completion_flags_column;
+
+ /* free this, and only this */
+ GtkTreeRowReference *row;
};
enum {
LOCATION_SELECTED,
COMPLETION_SELECTED,
SEARCH_ACTIVATED,
+ BOOKMARK_CLICKED,
LAST_SIGNAL
};
@@ -177,6 +192,8 @@ yelp_location_entry_class_init (YelpLocationEntryClass *klass)
object_class = G_OBJECT_CLASS (klass);
+ object_class->dispose = location_entry_dispose;
+ object_class->finalize = location_entry_finalize;
object_class->get_property = location_entry_get_property;
object_class->set_property = location_entry_set_property;
@@ -236,6 +253,22 @@ yelp_location_entry_class_init (YelpLocationEntryClass *klass)
G_TYPE_STRING);
/**
+ * YelpLocationEntry::bookmark-clicked
+ * @widget: The #YelpLocationEntry for which the signal was emitted.
+ * @user_data: User data set when the handler was connected.
+ *
+ * This signal will be emitted whenever a user clicks the bookmark icon
+ * embedded in the location entry.
+ **/
+ location_entry_signals[BOOKMARK_CLICKED] =
+ g_signal_new ("bookmark-clicked",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
* YelpLocationEntry:desc-column
*
* The column in the #GtkTreeModel containing a description for each row.
@@ -244,7 +277,7 @@ yelp_location_entry_class_init (YelpLocationEntryClass *klass)
PROP_DESC_COLUMN,
g_param_spec_int ("desc-column",
N_("Description Column"),
- N_("A column in the model to descriptions from"),
+ N_("A column in the model to get descriptions from"),
-1,
G_MAXINT,
-1,
@@ -305,6 +338,7 @@ yelp_location_entry_class_init (YelpLocationEntryClass *klass)
static void
yelp_location_entry_init (YelpLocationEntry *entry)
{
+ GtkCellRenderer *bookmark_cell;
YelpLocationEntryPrivate *priv = GET_PRIV (entry);
GList *cells;
@@ -342,6 +376,13 @@ yelp_location_entry_init (YelpLocationEntry *entry)
gtk_cell_layout_reorder (GTK_CELL_LAYOUT (entry), priv->icon_cell, 0);
+ bookmark_cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (entry), bookmark_cell, FALSE);
+ gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (entry),
+ bookmark_cell,
+ (GtkCellLayoutDataFunc) cell_set_bookmark_icon,
+ entry, NULL);
+
g_signal_connect (entry, "changed",
G_CALLBACK (combo_box_changed_cb), NULL);
@@ -358,6 +399,30 @@ yelp_location_entry_init (YelpLocationEntry *entry)
}
static void
+location_entry_dispose (GObject *object)
+{
+ YelpLocationEntryPrivate *priv = GET_PRIV (object);
+
+ if (priv->row) {
+ gtk_tree_row_reference_free (priv->row);
+ priv->row = NULL;
+ }
+
+ if (priv->pulse > 0) {
+ g_source_remove (priv->pulse);
+ priv->pulse = 0;
+ }
+
+ G_OBJECT_CLASS (yelp_location_entry_parent_class)->dispose (object);
+}
+
+static void
+location_entry_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (yelp_location_entry_parent_class)->finalize (object);
+}
+
+static void
location_entry_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -450,15 +515,16 @@ location_entry_start_search (YelpLocationEntry *entry,
static void
location_entry_cancel_search (YelpLocationEntry *entry)
{
+ gboolean ret;
YelpLocationEntryPrivate *priv = GET_PRIV (entry);
GdkEventFocus *event = g_new0 (GdkEventFocus, 1);
priv->search_mode = FALSE;
location_entry_set_entry (entry, FALSE);
event->type = GDK_FOCUS_CHANGE;
- event->window = GTK_WIDGET (entry)->window;
+ event->window = gtk_widget_get_window (GTK_WIDGET (entry));
event->send_event = FALSE;
event->in = FALSE;
- g_signal_emit_by_name (entry, "focus-out-event", 0, event);
+ g_signal_emit_by_name (entry, "focus-out-event", event, &ret);
g_free (event);
/* Hack: This makes the popup disappear when you hit Esc. */
g_object_ref (priv->completion);
@@ -473,14 +539,16 @@ yelp_location_entry_set_completion_model (YelpLocationEntry *entry,
GtkTreeModel *model,
gint text_column,
gint desc_column,
- gint icon_column)
+ gint icon_column,
+ gint flags_column)
{
YelpLocationEntryPrivate *priv = GET_PRIV (entry);
GList *cells;
- GtkCellRenderer *icon_cell;
+ GtkCellRenderer *icon_cell, *bookmark_cell;
priv->completion = gtk_entry_completion_new ();
priv->completion_desc_column = desc_column;
+ priv->completion_flags_column = flags_column;
gtk_entry_completion_set_minimum_key_length (priv->completion, 3);
gtk_entry_completion_set_model (priv->completion, model);
gtk_entry_completion_set_text_column (priv->completion, text_column);
@@ -511,6 +579,13 @@ yelp_location_entry_set_completion_model (YelpLocationEntry *entry,
icon_column,
NULL);
+ bookmark_cell = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (priv->completion), bookmark_cell, FALSE);
+ gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (priv->completion),
+ bookmark_cell,
+ (GtkCellLayoutDataFunc) cell_set_completion_bookmark_icon,
+ entry, NULL);
+
gtk_entry_set_completion (GTK_ENTRY (priv->text_entry),
priv->completion);
}
@@ -554,7 +629,9 @@ location_entry_set_entry (YelpLocationEntry *entry, gboolean emit)
gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->text_entry),
GTK_ENTRY_ICON_PRIMARY,
"image-loading");
- g_timeout_add (80, location_entry_pulse, entry);
+ if (priv->pulse > 0)
+ g_source_remove (priv->pulse);
+ priv->pulse = g_timeout_add (80, location_entry_pulse, entry);
}
else {
gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->text_entry),
@@ -737,7 +814,7 @@ entry_icon_press_cb (GtkEntry *gtkentry,
location_entry_cancel_search (entry);
}
else if (g_str_equal (name, "bookmark-new")) {
- /* FIXME: emit bookmark signal */
+ g_signal_emit (entry, location_entry_signals[BOOKMARK_CLICKED], 0);
}
}
}
@@ -795,6 +872,46 @@ cell_set_text_cell (GtkCellLayout *layout,
}
static void
+cell_set_bookmark_icon (GtkCellLayout *layout,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ YelpLocationEntry *entry)
+{
+ gint flags;
+ YelpLocationEntryPrivate *priv = GET_PRIV (entry);
+
+ gtk_tree_model_get (model, iter,
+ priv->flags_column, &flags,
+ -1);
+ if (!(flags & YELP_LOCATION_ENTRY_IS_SEPARATOR) &&
+ !(flags & YELP_LOCATION_ENTRY_IS_SEARCH) &&
+ (flags & YELP_LOCATION_ENTRY_IS_BOOKMARKED))
+ g_object_set (cell, "icon-name", "bookmark", NULL);
+ else
+ g_object_set (cell, "icon-name", NULL, NULL);
+}
+
+static void
+cell_set_completion_bookmark_icon (GtkCellLayout *layout,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ YelpLocationEntry *entry)
+{
+ gint flags;
+ YelpLocationEntryPrivate *priv = GET_PRIV (entry);
+
+ gtk_tree_model_get (model, iter,
+ priv->completion_flags_column, &flags,
+ -1);
+ if (flags & YELP_LOCATION_ENTRY_IS_BOOKMARKED)
+ g_object_set (cell, "icon-name", "bookmark", NULL);
+ else
+ g_object_set (cell, "icon-name", NULL, NULL);
+}
+
+static void
cell_set_completion_text_cell (GtkCellLayout *layout,
GtkCellRenderer *cell,
GtkTreeModel *model,
diff --git a/libyelp/yelp-location-entry.h b/libyelp/yelp-location-entry.h
index 08db5c99..37167add 100644
--- a/libyelp/yelp-location-entry.h
+++ b/libyelp/yelp-location-entry.h
@@ -73,10 +73,11 @@ struct _YelpLocationEntryClass
* to be displayed by a #YelpLocationEntry.
**/
typedef enum {
- YELP_LOCATION_ENTRY_CAN_BOOKMARK = 1 << 0,
- YELP_LOCATION_ENTRY_IS_LOADING = 1 << 1,
- YELP_LOCATION_ENTRY_IS_SEPARATOR = 1 << 2,
- YELP_LOCATION_ENTRY_IS_SEARCH = 1 << 3
+ YELP_LOCATION_ENTRY_CAN_BOOKMARK = 1 << 0,
+ YELP_LOCATION_ENTRY_IS_BOOKMARKED = 1 << 1,
+ YELP_LOCATION_ENTRY_IS_LOADING = 1 << 2,
+ YELP_LOCATION_ENTRY_IS_SEPARATOR = 1 << 3,
+ YELP_LOCATION_ENTRY_IS_SEARCH = 1 << 4
} YelpLocationEntryFlags;
GType yelp_location_entry_get_type (void);
@@ -90,7 +91,8 @@ void yelp_location_entry_set_completion_model (YelpLocationEntry *ent
GtkTreeModel *model,
gint text_column,
gint desc_column,
- gint icon_column);
+ gint icon_column,
+ gint flags_column);
void yelp_location_entry_start_search (YelpLocationEntry *entry);
diff --git a/libyelp/yelp-lzma-decompressor.c b/libyelp/yelp-lzma-decompressor.c
new file mode 100644
index 00000000..b304cde2
--- /dev/null
+++ b/libyelp/yelp-lzma-decompressor.c
@@ -0,0 +1,182 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#include "config.h"
+
+#include "yelp-lzma-decompressor.h"
+
+#include <errno.h>
+#include <string.h>
+
+#include <lzma.h>
+
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+
+
+static void yelp_lzma_decompressor_iface_init (GConverterIface *iface);
+
+struct _YelpLzmaDecompressor
+{
+ GObject parent_instance;
+
+ lzma_stream lzmastream;
+};
+
+G_DEFINE_TYPE_WITH_CODE (YelpLzmaDecompressor, yelp_lzma_decompressor, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_CONVERTER,
+ yelp_lzma_decompressor_iface_init))
+
+static void
+yelp_lzma_decompressor_finalize (GObject *object)
+{
+ YelpLzmaDecompressor *decompressor;
+
+ decompressor = YELP_LZMA_DECOMPRESSOR (object);
+
+ lzma_end (&decompressor->lzmastream);
+
+ G_OBJECT_CLASS (yelp_lzma_decompressor_parent_class)->finalize (object);
+}
+
+static void
+yelp_lzma_decompressor_init (YelpLzmaDecompressor *decompressor)
+{
+}
+
+static void
+yelp_lzma_decompressor_constructed (GObject *object)
+{
+ YelpLzmaDecompressor *decompressor;
+ lzma_stream tmp = LZMA_STREAM_INIT;
+ lzma_ret res;
+
+ decompressor = YELP_LZMA_DECOMPRESSOR (object);
+
+ decompressor->lzmastream = tmp;
+ res = lzma_auto_decoder (&decompressor->lzmastream, SIZE_MAX, 0);
+
+ if (res == LZMA_MEM_ERROR)
+ g_error ("YelpLzmaDecompressor: Not enough memory for lzma use");
+
+ if (res == LZMA_OPTIONS_ERROR)
+ g_error ("YelpLzmaDecompressor: Unsupported flags");
+
+ if (res != LZMA_OK)
+ g_error ("YelpLzmaDecompressor: Unexpected lzma error");
+}
+
+static void
+yelp_lzma_decompressor_class_init (YelpLzmaDecompressorClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->finalize = yelp_lzma_decompressor_finalize;
+ gobject_class->constructed = yelp_lzma_decompressor_constructed;
+}
+
+YelpLzmaDecompressor *
+yelp_lzma_decompressor_new (void)
+{
+ YelpLzmaDecompressor *decompressor;
+
+ decompressor = g_object_new (YELP_TYPE_LZMA_DECOMPRESSOR, NULL);
+
+ return decompressor;
+}
+
+static void
+yelp_lzma_decompressor_reset (GConverter *converter)
+{
+ YelpLzmaDecompressor *decompressor = YELP_LZMA_DECOMPRESSOR (converter);
+ lzma_ret res;
+
+ /* lzma doesn't have a reset function. Ending and reiniting
+ * might do the trick. But this is untested. If reset matters
+ * to you, test this.
+ */
+ lzma_end (&decompressor->lzmastream);
+ res = lzma_code (&decompressor->lzmastream, LZMA_RUN);
+
+ if (res == LZMA_MEM_ERROR )
+ g_error ("YelpLzmaDecompressor: Not enough memory for lzma use");
+
+ if (res != LZMA_OK)
+ g_error ("YelpLzmaDecompressor: Unexpected lzma error");
+}
+
+static GConverterResult
+yelp_lzma_decompressor_convert (GConverter *converter,
+ const void *inbuf,
+ gsize inbuf_size,
+ void *outbuf,
+ gsize outbuf_size,
+ GConverterFlags flags,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error)
+{
+ YelpLzmaDecompressor *decompressor;
+ gsize header_size;
+ lzma_ret res;
+
+ decompressor = YELP_LZMA_DECOMPRESSOR (converter);
+
+ decompressor->lzmastream.next_in = (void *)inbuf;
+ decompressor->lzmastream.avail_in = inbuf_size;
+
+ decompressor->lzmastream.next_out = outbuf;
+ decompressor->lzmastream.avail_out = outbuf_size;
+
+ res = lzma_code (&decompressor->lzmastream, LZMA_RUN);
+
+ if (res == LZMA_DATA_ERROR) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA,
+ _("Invalid compressed data"));
+ return G_CONVERTER_ERROR;
+ }
+
+ if (res == LZMA_MEM_ERROR) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Not enough memory"));
+ return G_CONVERTER_ERROR;
+ }
+
+ if (res == LZMA_OK || res == LZMA_STREAM_END) {
+ *bytes_read = inbuf_size - decompressor->lzmastream.avail_in;
+ *bytes_written = outbuf_size - decompressor->lzmastream.avail_out;
+
+ if (res == LZMA_STREAM_END)
+ return G_CONVERTER_FINISHED;
+ return G_CONVERTER_CONVERTED;
+ }
+
+ g_assert_not_reached ();
+}
+
+static void
+yelp_lzma_decompressor_iface_init (GConverterIface *iface)
+{
+ iface->convert = yelp_lzma_decompressor_convert;
+ iface->reset = yelp_lzma_decompressor_reset;
+}
diff --git a/libyelp/yelp-lzma-decompressor.h b/libyelp/yelp-lzma-decompressor.h
new file mode 100644
index 00000000..7f1bce96
--- /dev/null
+++ b/libyelp/yelp-lzma-decompressor.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#ifndef __YELP_LZMA_DECOMPRESSOR_H__
+#define __YELP_LZMA_DECOMPRESSOR_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define YELP_TYPE_LZMA_DECOMPRESSOR (yelp_lzma_decompressor_get_type ())
+#define YELP_LZMA_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_LZMA_DECOMPRESSOR, YelpLzmaDecompressor))
+#define YELP_LZMA_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), YELP_TYPE_LZMA_DECOMPRESSOR, YelpLzmaDecompressorClass))
+#define YELP_IS_LZMA_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_LZMA_DECOMPRESSOR))
+#define YELP_IS_LZMA_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_LZMA_DECOMPRESSOR))
+#define YELP_LZMA_DECOMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_LZMA_DECOMPRESSOR, YelpLzmaDecompressorClass))
+
+typedef struct _YelpLzmaDecompressor YelpLzmaDecompressor;
+typedef struct _YelpLzmaDecompressorClass YelpLzmaDecompressorClass;
+
+struct _YelpLzmaDecompressorClass
+{
+ GObjectClass parent_class;
+};
+
+GType yelp_lzma_decompressor_get_type (void);
+
+YelpLzmaDecompressor *yelp_lzma_decompressor_new (void);
+
+G_END_DECLS
+
+#endif /* __YELP_LZMA_DECOMPRESSOR_H__ */
diff --git a/libyelp/yelp-magic-decompressor.c b/libyelp/yelp-magic-decompressor.c
new file mode 100644
index 00000000..89fa2be9
--- /dev/null
+++ b/libyelp/yelp-magic-decompressor.c
@@ -0,0 +1,161 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#include "config.h"
+
+#include <glib/gi18n.h>
+
+#include "yelp-magic-decompressor.h"
+
+#ifdef ENABLE_BZ2
+#include "yelp-bz2-decompressor.h"
+#endif
+
+#ifdef ENABLE_LZMA
+#include "yelp-lzma-decompressor.h"
+#endif
+
+
+static void yelp_magic_decompressor_iface_init (GConverterIface *iface);
+
+struct _YelpMagicDecompressor
+{
+ GObject parent_instance;
+
+ GConverter *magic_decoder_ring;
+
+ gboolean first;
+};
+
+G_DEFINE_TYPE_WITH_CODE (YelpMagicDecompressor, yelp_magic_decompressor, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_CONVERTER,
+ yelp_magic_decompressor_iface_init))
+
+static void
+yelp_magic_decompressor_dispose (GObject *object)
+{
+ YelpMagicDecompressor *decompressor;
+
+ if (decompressor->magic_decoder_ring) {
+ g_object_unref (decompressor->magic_decoder_ring);
+ decompressor->magic_decoder_ring = NULL;
+ }
+
+ G_OBJECT_CLASS (yelp_magic_decompressor_parent_class)->dispose (object);
+}
+
+static void
+yelp_magic_decompressor_init (YelpMagicDecompressor *decompressor)
+{
+ decompressor->magic_decoder_ring = NULL;
+ decompressor->first = TRUE;
+}
+
+static void
+yelp_magic_decompressor_class_init (YelpMagicDecompressorClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->dispose = yelp_magic_decompressor_dispose;
+}
+
+YelpMagicDecompressor *
+yelp_magic_decompressor_new (void)
+{
+ YelpMagicDecompressor *decompressor;
+
+ decompressor = g_object_new (YELP_TYPE_MAGIC_DECOMPRESSOR, NULL);
+
+ return decompressor;
+}
+
+static void
+yelp_magic_decompressor_reset (GConverter *converter)
+{
+ YelpMagicDecompressor *decompressor = YELP_MAGIC_DECOMPRESSOR (converter);
+
+ if (decompressor->magic_decoder_ring)
+ g_converter_reset (decompressor->magic_decoder_ring);
+}
+
+static GConverterResult
+yelp_magic_decompressor_convert (GConverter *converter,
+ const void *inbuf,
+ gsize inbuf_size,
+ void *outbuf,
+ gsize outbuf_size,
+ GConverterFlags flags,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error)
+{
+ YelpMagicDecompressor *decompressor;
+
+ decompressor = YELP_MAGIC_DECOMPRESSOR (converter);
+
+ if (decompressor->first) {
+ decompressor->first = FALSE;
+ /* If input_size is less than two the first time, we end up
+ * not getting detection. Might be worth addressing. Not
+ * sure I care.
+ *
+ * The two-byte magic we're doing here is not sufficient in
+ * the general case. It is sufficient for the specific data
+ * Yelp deals with.
+ */
+ if (inbuf_size <= 2)
+ ;
+#ifdef ENABLE_BZ2
+ else if (((gchar *) inbuf)[0] == 'B' &&
+ ((gchar *) inbuf)[1] == 'Z') {
+ decompressor->magic_decoder_ring = (GConverter *) yelp_bz2_decompressor_new ();
+ }
+#endif
+#ifdef ENABLE_LZMA
+ else if (((gchar *) inbuf)[0] == ']' &&
+ ((gchar *) inbuf)[1] == '\0') {
+ decompressor->magic_decoder_ring = (GConverter *) yelp_lzma_decompressor_new ();
+ }
+#endif
+ else {
+ decompressor->magic_decoder_ring =
+ (GConverter *) g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_GZIP);
+ }
+ }
+
+ return g_converter_convert (decompressor->magic_decoder_ring,
+ inbuf, inbuf_size,
+ outbuf, outbuf_size,
+ flags,
+ bytes_read, bytes_written,
+ error);
+
+ g_assert_not_reached ();
+}
+
+static void
+yelp_magic_decompressor_iface_init (GConverterIface *iface)
+{
+ iface->convert = yelp_magic_decompressor_convert;
+ iface->reset = yelp_magic_decompressor_reset;
+}
diff --git a/libyelp/yelp-magic-decompressor.h b/libyelp/yelp-magic-decompressor.h
new file mode 100644
index 00000000..15c09bbd
--- /dev/null
+++ b/libyelp/yelp-magic-decompressor.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Red Hat, Inc.
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Shaun McCance <shaunm@gnome.org>
+ */
+
+#ifndef __YELP_MAGIC_DECOMPRESSOR_H__
+#define __YELP_MAGIC_DECOMPRESSOR_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define YELP_TYPE_MAGIC_DECOMPRESSOR (yelp_magic_decompressor_get_type ())
+#define YELP_MAGIC_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_MAGIC_DECOMPRESSOR, YelpMagicDecompressor))
+#define YELP_MAGIC_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), YELP_TYPE_MAGIC_DECOMPRESSOR, YelpMagicDecompressorClass))
+#define YELP_IS_MAGIC_DECOMPRESSOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_MAGIC_DECOMPRESSOR))
+#define YELP_IS_MAGIC_DECOMPRESSOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_MAGIC_DECOMPRESSOR))
+#define YELP_MAGIC_DECOMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_MAGIC_DECOMPRESSOR, YelpMagicDecompressorClass))
+
+typedef struct _YelpMagicDecompressor YelpMagicDecompressor;
+typedef struct _YelpMagicDecompressorClass YelpMagicDecompressorClass;
+
+struct _YelpMagicDecompressorClass
+{
+ GObjectClass parent_class;
+};
+
+GType yelp_magic_decompressor_get_type (void);
+
+YelpMagicDecompressor *yelp_magic_decompressor_new (void);
+
+G_END_DECLS
+
+#endif /* __YELP_MAGIC_DECOMPRESSOR_H__ */
diff --git a/libyelp/yelp-settings.c b/libyelp/yelp-settings.c
index 1f838d63..0c8a386a 100644
--- a/libyelp/yelp-settings.c
+++ b/libyelp/yelp-settings.c
@@ -645,7 +645,7 @@ yelp_settings_set_icons (YelpSettings *settings,
gchar *filename = va_arg (args, gchar *);
if (settings->priv->icons[icon] != NULL)
g_free (settings->priv->icons[icon]);
- settings->priv->icons[icon] = g_strdup (filename);
+ settings->priv->icons[icon] = g_filename_to_uri (filename, NULL, NULL);
icon = va_arg (args, YelpSettingsIcon);
}
@@ -922,7 +922,8 @@ icon_theme_changed (GtkIconTheme *theme,
settings->priv->icon_size,
GTK_ICON_LOOKUP_NO_SVG);
if (info != NULL) {
- settings->priv->icons[i] = g_strdup (gtk_icon_info_get_filename (info));
+ settings->priv->icons[i] = g_filename_to_uri (gtk_icon_info_get_filename (info),
+ NULL, NULL);
gtk_icon_info_free (info);
}
else {
@@ -935,6 +936,39 @@ icon_theme_changed (GtkIconTheme *theme,
g_signal_emit (settings, settings_signals[ICONS_CHANGED], 0);
}
+gint
+yelp_settings_cmp_icons (const gchar *icon1,
+ const gchar *icon2)
+{
+ static const gchar *icons[] = {
+ "yelp-page-task",
+ "yelp-page-video",
+ "yelp-page-tip",
+ "yelp-page-ui",
+ "help-contents",
+ NULL
+ };
+ gint i;
+ for (i = 0; icons[i] != NULL; i++) {
+ gboolean eq1 = icon1 ? g_str_equal (icon1, icons[i]) : FALSE;
+ gboolean eq2 = icon2 ? g_str_equal (icon2, icons[i]) : FALSE;
+ if (eq1 && eq2)
+ return 0;
+ else if (eq1)
+ return -1;
+ else if (eq2)
+ return 1;
+ }
+ if (icon1 == NULL && icon2 == NULL)
+ return 0;
+ else if (icon2 == NULL)
+ return -1;
+ else if (icon1 == NULL)
+ return 1;
+ else
+ return strcmp (icon1, icon2);
+}
+
/******************************************************************************/
static void
diff --git a/libyelp/yelp-settings.h b/libyelp/yelp-settings.h
index 0c8fbd09..bf6af532 100644
--- a/libyelp/yelp-settings.h
+++ b/libyelp/yelp-settings.h
@@ -126,6 +126,9 @@ gboolean yelp_settings_get_editor_mode (YelpSettings *sett
void yelp_settings_set_editor_mode (YelpSettings *settings,
gboolean editor_mode);
+gint yelp_settings_cmp_icons (const gchar *icon1,
+ const gchar *icon2);
+
G_END_DECLS
#endif /* __YELP_SETTINGS_H__ */
diff --git a/libyelp/yelp-simple-document.c b/libyelp/yelp-simple-document.c
index 658df0cd..de62a9ba 100644
--- a/libyelp/yelp-simple-document.c
+++ b/libyelp/yelp-simple-document.c
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* Copyright (C) 2003-2009 Shaun McCance <shaunm@gnome.org>
*
@@ -76,7 +76,7 @@ static void document_finish_read (YelpDocument
const gchar *contents);
static gchar * document_get_mime_type (YelpDocument *document,
const gchar *mime_type);
-static void document_signal_all (YelpSimpleDocument *document);
+static gboolean document_signal_all (YelpSimpleDocument *document);
static void file_info_cb (GFile *file,
GAsyncResult *result,
@@ -93,7 +93,7 @@ static void stream_close_cb (GInputStream
static void request_cancel (GCancellable *cancellable,
Request *request);
-static void request_try_free (Request *request);
+static gboolean request_try_free (Request *request);
static void request_free (Request *request);
static void
@@ -253,18 +253,24 @@ document_get_mime_type (YelpDocument *document,
return NULL;
}
-static void
+static gboolean
document_signal_all (YelpSimpleDocument *document)
{
GSList *cur;
for (cur = document->priv->reqs; cur != NULL; cur = cur->next) {
- Request *request = (Request *) cur->data;
- if (request->callback)
- request->callback (request->document,
- YELP_DOCUMENT_SIGNAL_CONTENTS,
- request->user_data,
- NULL);
+ Request *request = (Request *) cur->data;
+ if (request->callback) {
+ request->callback (request->document,
+ YELP_DOCUMENT_SIGNAL_INFO,
+ request->user_data,
+ NULL);
+ request->callback (request->document,
+ YELP_DOCUMENT_SIGNAL_CONTENTS,
+ request->user_data,
+ NULL);
+ }
}
+ return FALSE;
}
/******************************************************************************/
@@ -277,8 +283,21 @@ file_info_cb (GFile *file,
GFileInfo *info = g_file_query_info_finish (file, result, NULL);
const gchar *type = g_file_info_get_attribute_string (info,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE);
- document->priv->mime_type = g_strdup (type);
+ if (g_str_equal (type, "text/x-readme"))
+ document->priv->mime_type = g_strdup ("text/plain");
+ else
+ document->priv->mime_type = g_strdup (type);
g_object_unref (info);
+
+ if (g_str_equal (document->priv->mime_type, "text/plain")) {
+ gchar *basename = g_file_get_basename (document->priv->file);
+ yelp_document_set_page_id (YELP_DOCUMENT (document), "//index", "//index");
+ yelp_document_set_page_id (YELP_DOCUMENT (document), NULL, "//index");
+ yelp_document_set_page_title (YELP_DOCUMENT (document), "//index", basename);
+ yelp_document_set_page_icon (YELP_DOCUMENT (document), "//index", "text-x-generic");
+ g_free (basename);
+ }
+
g_file_read_async (document->priv->file,
G_PRIORITY_DEFAULT,
NULL,
@@ -383,7 +402,7 @@ static void
request_cancel (GCancellable *cancellable, Request *request)
{
GSList *cur;
- YelpSimpleDocument *document = request->document;
+ YelpSimpleDocument *document = (YelpSimpleDocument *) request->document;
g_assert (document != NULL && YELP_IS_SIMPLE_DOCUMENT (document));
@@ -396,7 +415,7 @@ request_cancel (GCancellable *cancellable, Request *request)
request_try_free (request);
}
-static void
+static gboolean
request_try_free (Request *request)
{
if (!g_cancellable_is_cancelled (request->cancellable))
@@ -406,6 +425,7 @@ request_try_free (Request *request)
request_free (request);
else
g_idle_add ((GSourceFunc) request_try_free, request);
+ return FALSE;
}
static void
diff --git a/libyelp/yelp-uri.c b/libyelp/yelp-uri.c
index 4ea70d56..8e0c414c 100644
--- a/libyelp/yelp-uri.c
+++ b/libyelp/yelp-uri.c
@@ -279,18 +279,16 @@ resolve_async (YelpUri *uri)
break;
case YELP_URI_DOCUMENT_TYPE_DOCBOOK:
case YELP_URI_DOCUMENT_TYPE_MALLARD:
+ case YELP_URI_DOCUMENT_TYPE_INFO:
resolve_xref_uri (uri);
break;
case YELP_URI_DOCUMENT_TYPE_MAN:
/* FIXME: what do we do? */
break;
- case YELP_URI_DOCUMENT_TYPE_INFO:
- /* FIXME: what do we do? */
- break;
case YELP_URI_DOCUMENT_TYPE_TEXT:
case YELP_URI_DOCUMENT_TYPE_HTML:
case YELP_URI_DOCUMENT_TYPE_XHTML:
- /* FIXME: look up a relative file */
+ resolve_file_path (uri);
break;
case YELP_URI_DOCUMENT_TYPE_TOC:
/* FIXME: what do we do? */
@@ -465,11 +463,18 @@ resolve_file_uri (YelpUri *uri)
static void
resolve_file_path (YelpUri *uri)
{
- YelpUriPrivate *base_priv;
+ YelpUriPrivate *base_priv = NULL;
YelpUriPrivate *priv = GET_PRIV (uri);
gchar *path;
const gchar *hash = strchr (priv->res_arg, '#');
+ /* Treat xref: URIs like relative file paths */
+ if (g_str_has_prefix (priv->res_arg, "xref:")) {
+ gchar *tmp = g_strdup (priv->res_arg + 5);
+ g_free (priv->res_arg);
+ priv->res_arg = tmp;
+ }
+
if (priv->res_base)
base_priv = GET_PRIV (priv->res_base);
@@ -484,7 +489,19 @@ resolve_file_path (YelpUri *uri)
priv->gfile = g_file_new_for_path (path);
}
else if (base_priv && base_priv->gfile) {
- priv->gfile = g_file_resolve_relative_path (base_priv->gfile, path);
+ GFileInfo *info;
+ info = g_file_query_info (base_priv->gfile,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, NULL);
+ if (g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR) {
+ GFile *parent = g_file_get_parent (base_priv->gfile);
+ priv->gfile = g_file_resolve_relative_path (parent, path);
+ g_object_unref (parent);
+ }
+ else {
+ priv->gfile = g_file_resolve_relative_path (base_priv->gfile, path);
+ }
}
else {
gchar *cur;
@@ -508,17 +525,17 @@ resolve_data_dirs (YelpUri *ret,
const gchar * const *sdatadirs = g_get_system_data_dirs ();
const gchar * const *langs = g_get_language_names ();
/* The strings are still owned by GLib; we just own the array. */
- const gchar **datadirs;
+ gchar **datadirs;
YelpUriPrivate *priv = GET_PRIV (ret);
gchar *filename = NULL;
gchar **searchpath = NULL;
gint searchi, searchmax;
gint datadir_i, subdir_i, lang_i;
- datadirs = g_new0 (gchar *, g_strv_length (sdatadirs) + 2);
- datadirs[0] = g_get_user_data_dir ();
+ datadirs = g_new0 (gchar *, g_strv_length ((gchar **) sdatadirs) + 2);
+ datadirs[0] = (gchar *) g_get_user_data_dir ();
for (datadir_i = 0; sdatadirs[datadir_i]; datadir_i++)
- datadirs[datadir_i + 1] = sdatadirs[datadir_i];
+ datadirs[datadir_i + 1] = (gchar *) sdatadirs[datadir_i];
searchi = 0;
searchmax = 10;
@@ -765,7 +782,7 @@ resolve_man_uri (YelpUri *uri)
if (section)
realsection = section;
else
- realsection = mancats[k];
+ realsection = (gchar *) mancats[k];
fullpath = g_strconcat (langdir, "/man", realsection,
"/", name, ".", realsection,
@@ -968,7 +985,8 @@ resolve_xref_uri (YelpUri *uri)
priv->frag_id ? "#" : "",
priv->frag_id ? priv->frag_id : "",
NULL);
- else if (g_str_has_prefix (priv->docuri, "file:"))
+ else if (g_str_has_prefix (priv->docuri, "file:") ||
+ g_str_has_prefix (priv->docuri, "info:") )
priv->fulluri = g_strconcat (priv->docuri,
(priv->page_id || priv->frag_id) ? "#" : "",
priv->page_id ? priv->page_id : "",
@@ -1092,15 +1110,25 @@ resolve_gfile (YelpUri *uri, const gchar *hash)
priv->frag_id = g_strdup (splithash[1]);
}
}
- else if (g_str_equal (mime_type, "text/html")) {
- priv->tmptype = YELP_URI_DOCUMENT_TYPE_HTML;
- if (priv->frag_id == NULL)
- priv->frag_id = g_strdup (hash);
- }
- else if (g_str_equal (mime_type, "application/xhtml+xml")) {
- priv->tmptype = YELP_URI_DOCUMENT_TYPE_XHTML;
+ else if (g_str_equal (mime_type, "text/html") ||
+ g_str_equal (mime_type, "application/xhtml+xml")) {
+ GFile *parent = g_file_get_parent (priv->gfile);
+ priv->docuri = g_file_get_uri (parent);
+ g_object_unref (parent);
+ priv->tmptype = mime_type[0] == 't' ? YELP_URI_DOCUMENT_TYPE_HTML : YELP_URI_DOCUMENT_TYPE_XHTML;
+ if (priv->page_id == NULL)
+ priv->page_id = g_file_get_basename (priv->gfile);
if (priv->frag_id == NULL)
priv->frag_id = g_strdup (hash);
+ if (priv->fulluri == NULL) {
+ gchar *fulluri;
+ fulluri = g_file_get_uri (priv->gfile);
+ priv->fulluri = g_strconcat (fulluri,
+ priv->frag_id ? "#" : NULL,
+ priv->frag_id,
+ NULL);
+ g_free (fulluri);
+ }
}
else if (g_str_equal (mime_type, "application/x-gzip")) {
if (g_str_has_suffix (basename, ".info.gz"))
@@ -1136,6 +1164,9 @@ resolve_gfile (YelpUri *uri, const gchar *hash)
if (priv->frag_id == NULL)
priv->frag_id = g_strdup (hash);
}
+ else if (g_str_equal (mime_type, "text/x-readme")) {
+ priv->tmptype = YELP_URI_DOCUMENT_TYPE_TEXT;
+ }
else {
priv->tmptype = YELP_URI_DOCUMENT_TYPE_EXTERNAL;
}
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c
index 3971c805..783f7057 100644
--- a/libyelp/yelp-view.c
+++ b/libyelp/yelp-view.c
@@ -34,6 +34,7 @@
#include "yelp-debug.h"
#include "yelp-docbook-document.h"
#include "yelp-error.h"
+#include "yelp-settings.h"
#include "yelp-types.h"
#include "yelp-view.h"
@@ -53,6 +54,23 @@ static void yelp_view_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
+static void view_scrolled (GtkAdjustment *adjustment,
+ YelpView *view);
+static void view_scroll_adjustments (YelpView *view,
+ GtkAdjustment *hadj,
+ GtkAdjustment *vadj,
+ gpointer data);
+static void popup_open_link (GtkMenuItem *item,
+ YelpView *view);
+static void popup_open_link_new (GtkMenuItem *item,
+ YelpView *view);
+static void popup_save_image (GtkMenuItem *item,
+ YelpView *view);
+static void popup_send_image (GtkMenuItem *item,
+ YelpView *view);
+static void view_populate_popup (YelpView *view,
+ GtkMenu *menu,
+ gpointer data);
static gboolean view_navigation_requested (WebKitWebView *view,
WebKitWebFrame *frame,
WebKitNetworkRequest *request,
@@ -66,6 +84,13 @@ static void view_resource_request (WebKitWebView *vi
WebKitNetworkResponse *response,
gpointer user_data);
+static void view_print (GtkAction *action,
+ YelpView *view);
+static void view_history_action (GtkAction *action,
+ YelpView *view);
+static void view_navigation_action (GtkAction *action,
+ YelpView *view);
+
static void view_clear_load (YelpView *view);
static void view_load_page (YelpView *view);
static void view_show_error_page (YelpView *view,
@@ -81,10 +106,41 @@ static void document_callback (YelpDocument *document,
YelpView *view,
GError *error);
+static const GtkActionEntry entries[] = {
+ {"YelpViewPrint", GTK_STOCK_PRINT,
+ N_("_Print..."),
+ "<Control>P",
+ NULL,
+ G_CALLBACK (view_print) },
+ {"YelpViewGoBack", GTK_STOCK_GO_BACK,
+ N_("_Back"),
+ "<Alt>Left",
+ NULL,
+ G_CALLBACK (view_history_action) },
+ {"YelpViewGoForward", GTK_STOCK_GO_FORWARD,
+ N_("_Forward"),
+ "<Alt>Right",
+ NULL,
+ G_CALLBACK (view_history_action) },
+ {"YelpViewGoPrevious", NULL,
+ N_("_Previous Page"),
+ "<Control>Page_Up",
+ NULL,
+ G_CALLBACK (view_navigation_action) },
+ {"YelpViewGoNext", NULL,
+ N_("_Next Page"),
+ "<Control>Page_Down",
+ NULL,
+ G_CALLBACK (view_navigation_action) }
+};
+
+static gchar *nautilus_sendto = NULL;
+
enum {
PROP_0,
PROP_URI,
PROP_STATE,
+ PROP_PAGE_ID,
PROP_ROOT_TITLE,
PROP_PAGE_TITLE,
PROP_PAGE_DESC,
@@ -104,6 +160,25 @@ G_DEFINE_TYPE (YelpView, yelp_view, WEBKIT_TYPE_WEB_VIEW);
static WebKitWebSettings *websettings;
+typedef struct _YelpBackEntry YelpBackEntry;
+struct _YelpBackEntry {
+ YelpUri *uri;
+ gchar *title;
+ gchar *desc;
+ gdouble hadj;
+ gdouble vadj;
+};
+static void
+back_entry_free (YelpBackEntry *back)
+{
+ if (back == NULL)
+ return;
+ g_object_unref (back->uri);
+ g_free (back->title);
+ g_free (back->desc);
+ g_free (back);
+}
+
typedef struct _YelpViewPrivate YelpViewPrivate;
struct _YelpViewPrivate {
YelpUri *uri;
@@ -111,14 +186,30 @@ struct _YelpViewPrivate {
gchar *bogus_uri;
YelpDocument *document;
GCancellable *cancellable;
+ GtkAdjustment *vadjustment;
+ GtkAdjustment *hadjustment;
+ gdouble vadjust;
+ gdouble hadjust;
+ gulong vadjuster;
+ gulong hadjuster;
+
+ gchar *popup_link_uri;
+ gchar *popup_image_uri;
YelpViewState state;
+ gchar *page_id;
gchar *root_title;
gchar *page_title;
gchar *page_desc;
gchar *page_icon;
+ GList *back_list;
+ GList *back_cur;
+ gboolean back_load;
+
+ GtkActionGroup *action_group;
+
gint navigation_requested;
};
@@ -143,6 +234,16 @@ yelp_view_init (YelpView *view)
G_CALLBACK (view_navigation_requested), NULL);
g_signal_connect (view, "resource-request-starting",
G_CALLBACK (view_resource_request), NULL);
+ g_signal_connect (view, "set-scroll-adjustments",
+ G_CALLBACK (view_scroll_adjustments), NULL);
+ g_signal_connect (view, "populate-popup",
+ G_CALLBACK (view_populate_popup), NULL);
+
+ priv->action_group = gtk_action_group_new ("YelpView");
+ gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (priv->action_group,
+ entries, G_N_ELEMENTS (entries),
+ view);
}
static void
@@ -155,17 +256,38 @@ yelp_view_dispose (GObject *object)
priv->uri = NULL;
}
+ if (priv->vadjuster > 0) {
+ g_source_remove (priv->vadjuster);
+ priv->vadjuster = 0;
+ }
+
+ if (priv->hadjuster > 0) {
+ g_source_remove (priv->hadjuster);
+ priv->hadjuster = 0;
+ }
+
if (priv->cancellable) {
g_cancellable_cancel (priv->cancellable);
g_object_unref (priv->cancellable);
priv->cancellable = NULL;
}
+ if (priv->action_group) {
+ g_object_unref (priv->action_group);
+ priv->action_group = NULL;
+ }
+
if (priv->document) {
g_object_unref (priv->document);
priv->document = NULL;
}
+ priv->back_cur = NULL;
+ while (priv->back_list) {
+ back_entry_free ((YelpBackEntry *) priv->back_list->data);
+ priv->back_list = g_list_delete_link (priv->back_list, priv->back_list);
+ }
+
G_OBJECT_CLASS (yelp_view_parent_class)->dispose (object);
}
@@ -174,6 +296,10 @@ yelp_view_finalize (GObject *object)
{
YelpViewPrivate *priv = GET_PRIV (object);
+ g_free (priv->popup_link_uri);
+ g_free (priv->popup_image_uri);
+
+ g_free (priv->page_id);
g_free (priv->root_title);
g_free (priv->page_title);
g_free (priv->page_desc);
@@ -190,6 +316,8 @@ yelp_view_class_init (YelpViewClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
YelpSettings *settings = yelp_settings_get_default ();
+ nautilus_sendto = g_find_program_in_path ("nautilus-sendto");
+
websettings = webkit_web_settings_new ();
g_signal_connect (settings,
"fonts-changed",
@@ -212,8 +340,8 @@ yelp_view_class_init (YelpViewClass *klass)
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1, YELP_TYPE_URI);
signals[EXTERNAL_URI] =
g_signal_new ("external-uri",
@@ -253,10 +381,19 @@ yelp_view_class_init (YelpViewClass *klass)
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class,
+ PROP_PAGE_ID,
+ g_param_spec_string ("page-id",
+ N_("Page ID"),
+ N_("The ID of the root page of the page being viewed"),
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+ g_object_class_install_property (object_class,
PROP_ROOT_TITLE,
g_param_spec_string ("root-title",
N_("Root Title"),
- N_("The title of the root page of the page being viewew"),
+ N_("The title of the root page of the page being viewed"),
NULL,
G_PARAM_READABLE |
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
@@ -302,6 +439,9 @@ yelp_view_get_property (GObject *object,
case PROP_URI:
g_value_set_object (value, priv->uri);
break;
+ case PROP_PAGE_ID:
+ g_value_set_string (value, priv->page_id);
+ break;
case PROP_ROOT_TITLE:
g_value_set_string (value, priv->root_title);
break;
@@ -312,7 +452,10 @@ yelp_view_get_property (GObject *object,
g_value_set_string (value, priv->page_desc);
break;
case PROP_PAGE_ICON:
- g_value_set_string (value, priv->page_icon);
+ if (priv->page_icon)
+ g_value_set_string (value, priv->page_icon);
+ else
+ g_value_set_string (value, "help-contents");
break;
case PROP_STATE:
g_value_set_enum (value, priv->state);
@@ -370,22 +513,48 @@ yelp_view_load_uri (YelpView *view,
YelpUri *uri)
{
YelpViewPrivate *priv = GET_PRIV (view);
+ GParamSpec *spec;
view_clear_load (view);
g_object_set (view, "state", YELP_VIEW_STATE_LOADING, NULL);
+ g_free (priv->page_id);
g_free (priv->root_title);
g_free (priv->page_title);
g_free (priv->page_desc);
g_free (priv->page_icon);
+ priv->page_id = NULL;
priv->root_title = NULL;
priv->page_title = NULL;
priv->page_desc = NULL;
priv->page_icon = NULL;
- g_signal_emit_by_name (view, "notify::root-title", 0);
- g_signal_emit_by_name (view, "notify::page-title", 0);
- g_signal_emit_by_name (view, "notify::page-desc", 0);
- g_signal_emit_by_name (view, "notify::page-icon", 0);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-id");
+ g_signal_emit_by_name (view, "notify::page-id", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "root-title");
+ g_signal_emit_by_name (view, "notify::root-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-title");
+ g_signal_emit_by_name (view, "notify::page-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-desc");
+ g_signal_emit_by_name (view, "notify::page-desc", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-icon");
+ g_signal_emit_by_name (view, "notify::page-icon", spec);
+
+ gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group,
+ "YelpViewGoPrevious"),
+ FALSE);
+ gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group,
+ "YelpViewGoNext"),
+ FALSE);
priv->uri = g_object_ref (uri);
if (!yelp_uri_is_resolved (uri)) {
@@ -424,11 +593,314 @@ YelpDocument *
yelp_view_get_document (YelpView *view)
{
YelpViewPrivate *priv = GET_PRIV (view);
- return g_object_ref (priv->document);
+ return priv->document;
+}
+
+GtkActionGroup *
+yelp_view_get_action_group (YelpView *view)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ return priv->action_group;
}
/******************************************************************************/
+static void
+view_scrolled (GtkAdjustment *adjustment,
+ YelpView *view)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ if (priv->back_cur == NULL || priv->back_cur->data == NULL)
+ return;
+ if (adjustment == priv->vadjustment)
+ ((YelpBackEntry *) priv->back_cur->data)->vadj = gtk_adjustment_get_value (adjustment);
+ else if (adjustment = priv->hadjustment)
+ ((YelpBackEntry *) priv->back_cur->data)->hadj = gtk_adjustment_get_value (adjustment);
+}
+
+static void
+view_scroll_adjustments (YelpView *view,
+ GtkAdjustment *hadj,
+ GtkAdjustment *vadj,
+ gpointer data)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ priv->vadjustment = vadj;
+ if (priv->vadjuster > 0)
+ g_source_remove (priv->vadjuster);
+ priv->vadjuster = 0;
+ if (vadj) {
+ priv->vadjuster = g_signal_connect (vadj, "value-changed",
+ G_CALLBACK (view_scrolled), view);
+ }
+ priv->hadjustment = hadj;
+ if (priv->hadjuster > 0)
+ g_source_remove (priv->hadjuster);
+ priv->hadjuster = 0;
+ if (hadj) {
+ priv->hadjuster = g_signal_connect (hadj, "value-changed",
+ G_CALLBACK (view_scrolled), view);
+ }
+}
+
+static void
+popup_open_link (GtkMenuItem *item,
+ YelpView *view)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ YelpUri *uri;
+
+ if (g_str_has_prefix (priv->popup_link_uri, BOGUS_URI))
+ uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri + BOGUS_URI_LEN);
+ else
+ uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri);
+
+ yelp_view_load_uri (view, uri);
+
+ g_free (priv->popup_link_uri);
+ priv->popup_link_uri = NULL;
+}
+
+static void
+popup_open_link_new (GtkMenuItem *item,
+ YelpView *view)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ YelpUri *uri;
+
+ if (g_str_has_prefix (priv->popup_link_uri, BOGUS_URI))
+ uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri + BOGUS_URI_LEN);
+ else
+ uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri);
+
+ g_free (priv->popup_link_uri);
+ priv->popup_link_uri = NULL;
+
+ g_signal_emit (view, signals[NEW_VIEW_REQUESTED], 0, uri);
+ g_object_unref (uri);
+}
+
+typedef struct _YelpSaveData YelpSaveData;
+struct _YelpSaveData {
+ GFile *orig;
+ GFile *dest;
+ YelpView *view;
+ GtkWindow *window;
+};
+
+static void
+file_copied (GFile *file,
+ GAsyncResult *res,
+ YelpSaveData *data)
+{
+ GError *error = NULL;
+ if (!g_file_copy_finish (file, res, &error)) {
+ GtkWidget *dialog = gtk_message_dialog_new (GTK_WIDGET_VISIBLE (data->window) ? data->window : NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ "%s", error->message);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ }
+ g_object_unref (data->orig);
+ g_object_unref (data->dest);
+ g_object_unref (data->view);
+ g_object_unref (data->window);
+}
+
+static void
+popup_save_image (GtkMenuItem *item,
+ YelpView *view)
+{
+ YelpSaveData *data;
+ GtkWidget *dialog, *window;
+ gchar *basename;
+ gint res;
+ YelpViewPrivate *priv = GET_PRIV (view);
+
+ for (window = gtk_widget_get_parent (GTK_WIDGET (view));
+ window && !GTK_IS_WINDOW (window);
+ window = gtk_widget_get_parent (window));
+
+ data = g_new0 (YelpSaveData, 1);
+ data->orig = g_file_new_for_uri (priv->popup_image_uri);
+ data->view = g_object_ref (view);
+ data->window = g_object_ref (window);
+ g_free (priv->popup_image_uri);
+ priv->popup_image_uri = NULL;
+
+ dialog = gtk_file_chooser_dialog_new (_("Save Image"),
+ GTK_WINDOW (window),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_OK,
+ NULL);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
+ basename = g_file_get_basename (data->orig);
+ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), basename);
+ g_free (basename);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog),
+ g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP));
+
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ if (res == GTK_RESPONSE_OK) {
+ data->dest = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+ g_file_copy_async (data->orig, data->dest,
+ G_FILE_COPY_OVERWRITE,
+ G_PRIORITY_DEFAULT,
+ NULL, NULL, NULL,
+ (GAsyncReadyCallback) file_copied,
+ data);
+ }
+ else {
+ g_object_unref (data->orig);
+ g_object_unref (data->view);
+ g_object_unref (data->window);
+ g_free (data);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+popup_send_image (GtkMenuItem *item,
+ YelpView *view)
+{
+ gchar *command;
+ YelpViewPrivate *priv = GET_PRIV (view);
+
+ command = g_strdup_printf ("%s %s", nautilus_sendto, priv->popup_image_uri);
+
+ gdk_spawn_command_line_on_screen (gtk_widget_get_screen (GTK_WIDGET (view)),
+ command, NULL);
+
+ g_free (command);
+ g_free (priv->popup_image_uri);
+ priv->popup_image_uri = NULL;
+}
+
+static void
+view_populate_popup (YelpView *view,
+ GtkMenu *menu,
+ gpointer data)
+{
+ WebKitHitTestResult *result;
+ WebKitHitTestResultContext context;
+ GdkEvent *event;
+ YelpViewPrivate *priv = GET_PRIV (view);
+ GList *children;
+ GtkWidget *item;
+
+ children = gtk_container_get_children (GTK_CONTAINER (menu));
+ while (children) {
+ gtk_container_remove (GTK_CONTAINER (menu),
+ GTK_WIDGET (children->data));
+ children = children->next;
+ }
+ g_list_free (children);
+
+ event = gtk_get_current_event ();
+
+ result = webkit_web_view_get_hit_test_result (WEBKIT_WEB_VIEW (view), (GdkEventButton *) event);
+ g_object_get (result, "context", &context, NULL);
+
+ if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) {
+ gchar *uri;
+ g_object_get (result, "link-uri", &uri, NULL);
+ g_free (priv->popup_link_uri);
+ priv->popup_link_uri = uri;
+
+ if (g_str_has_prefix (priv->popup_link_uri, "mailto:")) {
+ /* Not using a mnemonic because underscores are common in email
+ * addresses, and we'd have to escape them. There doesn't seem
+ * to be a quick GTK+ function for this. In practice, there will
+ * probably only be one menu item for mailto link popups anyway,
+ * so the mnemonic's not that big of a deal.
+ */
+ gchar *label = g_strdup_printf (_("Send email to %s"),
+ priv->popup_link_uri + 7);
+ item = gtk_menu_item_new_with_label (label);
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ else {
+ item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("Open Link in New _Window"));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link_new), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+ else {
+ item = gtk_action_create_menu_item (gtk_action_group_get_action (priv->action_group,
+ "YelpViewGoBack"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ item = gtk_action_create_menu_item (gtk_action_group_get_action (priv->action_group,
+ "YelpViewGoForward"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+
+ if ((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) ||
+ (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA)) {
+ /* This doesn't currently work for video with automatic controls,
+ * because WebKit puts the hit test on the div with the controls.
+ */
+ gboolean image = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE;
+ gchar *uri;
+ g_object_get (result, image ? "image-uri" : "media-uri", &uri, NULL);
+ g_free (priv->popup_image_uri);
+ if (g_str_has_prefix (uri, BOGUS_URI)) {
+ priv->popup_image_uri = yelp_uri_locate_file_uri (priv->uri, uri + BOGUS_URI_LEN);
+ g_free (uri);
+ }
+ else {
+ priv->popup_image_uri = uri;
+ }
+
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ if (image)
+ item = gtk_menu_item_new_with_mnemonic (_("_Save Image As..."));
+ else
+ item = gtk_menu_item_new_with_mnemonic (_("_Save Video As..."));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_save_image), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ if (nautilus_sendto) {
+ if (image)
+ item = gtk_menu_item_new_with_mnemonic (_("S_end Image To..."));
+ else
+ item = gtk_menu_item_new_with_mnemonic (_("S_end Video To..."));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_send_image), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+
+ if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION) {
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ item = gtk_menu_item_new_with_mnemonic (_("_Copy Text"));
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (webkit_web_view_copy_clipboard), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+
+ g_object_unref (result);
+ gdk_event_free (event);
+ gtk_widget_show_all (GTK_WIDGET (menu));
+}
+
static gboolean
view_navigation_requested (WebKitWebView *view,
WebKitWebFrame *frame,
@@ -437,13 +909,14 @@ view_navigation_requested (WebKitWebView *view,
WebKitWebPolicyDecision *decision,
gpointer user_data)
{
+ const gchar *requri = webkit_network_request_get_uri (request);
YelpViewPrivate *priv = GET_PRIV (view);
YelpUri *uri;
- debug_print (DB_FUNCTION, "entering\n");
-
- uri = yelp_uri_new_relative (priv->uri,
- webkit_network_request_get_uri (request));
+ if (g_str_has_prefix (requri, BOGUS_URI))
+ uri = yelp_uri_new_relative (priv->uri, requri + BOGUS_URI_LEN);
+ else
+ uri = yelp_uri_new_relative (priv->uri, requri);
webkit_web_policy_decision_ignore (decision);
@@ -486,6 +959,71 @@ view_resource_request (WebKitWebView *view,
}
static void
+view_print (GtkAction *action, YelpView *view)
+{
+ webkit_web_frame_print (webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view)));
+}
+
+static void
+view_history_action (GtkAction *action,
+ YelpView *view)
+{
+ GList *newcur;
+ YelpViewPrivate *priv = GET_PRIV (view);
+
+ if (priv->back_cur == NULL)
+ return;
+
+ if (g_str_equal (gtk_action_get_name (action), "YelpViewGoBack"))
+ newcur = priv->back_cur->next;
+ else
+ newcur = priv->back_cur->prev;
+
+ if (newcur == NULL)
+ return;
+
+ priv->back_cur = newcur;
+
+ if (priv->back_cur->data == NULL)
+ return;
+
+ priv->back_load = TRUE;
+ yelp_view_load_uri (view, ((YelpBackEntry *) priv->back_cur->data)->uri);
+ priv->vadjust = ((YelpBackEntry *) priv->back_cur->data)->vadj;
+ priv->hadjust = ((YelpBackEntry *) priv->back_cur->data)->hadj;
+}
+
+static void
+view_navigation_action (GtkAction *action,
+ YelpView *view)
+{
+ YelpViewPrivate *priv = GET_PRIV (view);
+ gchar *page_id, *new_id, *xref;
+ YelpUri *new_uri;
+
+ page_id = yelp_uri_get_page_id (priv->uri);
+
+ if (g_str_equal (gtk_action_get_name (action), "YelpViewGoPrevious"))
+ new_id = yelp_document_get_prev_id (priv->document, page_id);
+ else
+ new_id = yelp_document_get_next_id (priv->document, page_id);
+
+ /* Just in case we screwed up somewhere */
+ if (new_id == NULL) {
+ gtk_action_set_sensitive (action, FALSE);
+ return;
+ }
+
+ xref = g_strconcat ("xref:", new_id, NULL);
+ new_uri = yelp_uri_new_relative (priv->uri, xref);
+ yelp_view_load_uri (view, new_uri);
+
+ g_free (xref);
+ g_free (new_id);
+ g_object_unref (new_uri);
+}
+
+static void
view_clear_load (YelpView *view)
{
YelpViewPrivate *priv = GET_PRIV (view);
@@ -542,7 +1080,6 @@ view_load_page (YelpView *view)
priv->cancellable,
(YelpDocumentCallback) document_callback,
view);
-
g_free (page_id);
}
@@ -554,46 +1091,77 @@ view_show_error_page (YelpView *view,
static const gchar *errorpage =
"<html><head>"
"<style type='text/css'>"
- "body { margin: 1em; }"
- ".outer {"
- " border: solid 2px #cc0000;"
- " -webkit-border-radius: 6px;"
- "}"
- ".inner {"
- " padding: 1em;"
- " border: solid 2px white;"
- " -webkit-border-radius: 6px;"
- " background: #fce94f;"
- "}"
+ "body {"
+ " margin: 1em;"
+ " color: %s;"
+ " background-color: %s;"
+ " }\n"
+ "div.note {"
+ " padding: 6px;"
+ " border-color: %s;"
+ " border-top: solid 1px;"
+ " border-bottom: solid 1px;"
+ " background-color: %s;"
+ " }\n"
+ "div.note div.inner {"
+ " margin: 0; padding: 0;"
+ " background-image: url(%s);"
+ " background-position: %s top;"
+ " background-repeat: no-repeat;"
+ " min-height: %ipx;"
+ " }\n"
+ "div.note div.contents {"
+ " margin-%s: %ipx;"
+ " }\n"
+ "div.note div.title {"
+ " margin-%s: %ipx;"
+ " margin-bottom: 0.2em;"
+ " font-weight: bold;"
+ " color: %s;"
+ " }\n"
"</style>"
"</head><body>"
- "<div class='outer'><div class='inner'>"
+ "<div class='note'><div class='inner'>"
"<div class='title'>%s</div>"
"<div class='contents'>%s</div>"
"</div></div>"
"</body></html>";
+ YelpSettings *settings = yelp_settings_get_default ();
gchar *page, *title = NULL;
+ gchar *textcolor, *bgcolor, *noteborder, *notebg, *titlecolor, *noteicon;
+ gint iconsize;
+ const gchar *left = (gtk_widget_get_direction((GtkWidget *) view) == GTK_TEXT_DIR_RTL) ? "right" : "left";
if (error->domain == YELP_ERROR)
switch (error->code) {
case YELP_ERROR_NOT_FOUND:
- title = _("Document or Page Not Found");
+ title = _("Not Found");
break;
case YELP_ERROR_CANT_READ:
- title = _("Cannot Read the Document or Page");
+ title = _("Cannot Read");
break;
default:
break;
}
if (title == NULL)
title = _("Unknown Error");
- page = g_strdup_printf (errorpage, title, error->message);
+ textcolor = yelp_settings_get_color (settings, YELP_SETTINGS_COLOR_TEXT);
+ bgcolor = yelp_settings_get_color (settings, YELP_SETTINGS_COLOR_BASE);
+ noteborder = yelp_settings_get_color (settings, YELP_SETTINGS_COLOR_RED_BORDER);
+ notebg = yelp_settings_get_color (settings, YELP_SETTINGS_COLOR_YELLOW_BASE);
+ titlecolor = yelp_settings_get_color (settings, YELP_SETTINGS_COLOR_TEXT_LIGHT);
+ noteicon = yelp_settings_get_icon (settings, YELP_SETTINGS_ICON_WARNING);
+ iconsize = yelp_settings_get_icon_size (settings) + 6;
+ page = g_strdup_printf (errorpage,
+ textcolor, bgcolor, noteborder, notebg, noteicon,
+ left, iconsize, left, iconsize, left, iconsize,
+ titlecolor, title, error->message);
g_object_set (view, "state", YELP_VIEW_STATE_ERROR, NULL);
g_signal_handler_block (view, priv->navigation_requested);
webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),
page,
"text/html",
"UTF-8",
- "about:error");
+ "file:///error/");
g_signal_handler_unblock (view, priv->navigation_requested);
g_error_free (error);
g_free (page);
@@ -650,14 +1218,18 @@ uri_resolved (YelpUri *uri,
{
YelpViewPrivate *priv = GET_PRIV (view);
YelpDocument *document;
+ YelpBackEntry *back;
+ GtkAction *action;
+ GSList *proxies, *cur;
GError *error;
gchar *struri;
+ GParamSpec *spec;
debug_print (DB_FUNCTION, "entering\n");
switch (yelp_uri_get_document_type (uri)) {
case YELP_URI_DOCUMENT_TYPE_EXTERNAL:
- g_signal_emit (view, signals[EXTERNAL_URI], 0, uri, 0);
+ g_signal_emit (view, signals[EXTERNAL_URI], 0, uri);
return;
case YELP_URI_DOCUMENT_TYPE_NOT_FOUND:
struri = yelp_uri_get_canonical_uri (uri);
@@ -684,7 +1256,83 @@ uri_resolved (YelpUri *uri,
g_object_unref (priv->document);
priv->document = document;
- g_signal_emit_by_name (view, "notify::yelp-uri", 0);
+ if (!priv->back_load) {
+ back = g_new0 (YelpBackEntry, 1);
+ back->uri = g_object_ref (uri);
+ while (priv->back_list != priv->back_cur) {
+ back_entry_free ((YelpBackEntry *) priv->back_list->data);
+ priv->back_list = g_list_delete_link (priv->back_list, priv->back_list);
+ }
+ priv->back_list = g_list_prepend (priv->back_list, back);
+ priv->back_cur = priv->back_list;
+ }
+ priv->back_load = FALSE;
+
+ action = gtk_action_group_get_action (priv->action_group, "YelpViewGoBack");
+ gtk_action_set_sensitive (action, FALSE);
+ proxies = gtk_action_get_proxies (action);
+ if (priv->back_cur->next && priv->back_cur->next->data) {
+ gchar *tooltip = "";
+ back = priv->back_cur->next->data;
+
+ gtk_action_set_sensitive (action, TRUE);
+ if (back->title && back->desc) {
+ gchar *color;
+ color = yelp_settings_get_color (yelp_settings_get_default (),
+ YELP_SETTINGS_COLOR_TEXT_LIGHT);
+ tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>",
+ back->title, color, back->desc);
+ g_free (color);
+ }
+ else if (back->title)
+ tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>",
+ back->title);
+ /* Can't seem to use markup on GtkAction tooltip */
+ for (cur = proxies; cur != NULL; cur = cur->next)
+ gtk_widget_set_tooltip_markup (GTK_WIDGET (cur->data), tooltip);
+ }
+ else {
+ for (cur = proxies; cur != NULL; cur = cur->next)
+ gtk_widget_set_tooltip_text (GTK_WIDGET (cur->data), "");
+ }
+
+ action = gtk_action_group_get_action (priv->action_group, "YelpViewGoForward");
+ gtk_action_set_sensitive (action, FALSE);
+ proxies = gtk_action_get_proxies (action);
+ if (priv->back_cur->prev && priv->back_cur->prev->data) {
+ gchar *tooltip = "";
+ back = priv->back_cur->prev->data;
+
+ gtk_action_set_sensitive (action, TRUE);
+ if (back->title && back->desc) {
+ gchar *color;
+ color = yelp_settings_get_color (yelp_settings_get_default (),
+ YELP_SETTINGS_COLOR_TEXT_LIGHT);
+ tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>",
+ back->title, color, back->desc);
+ g_free (color);
+ }
+ else if (back->title)
+ tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>",
+ back->title);
+ /* Can't seem to use markup on GtkAction tooltip */
+ for (cur = proxies; cur != NULL; cur = cur->next)
+ gtk_widget_set_tooltip_markup (GTK_WIDGET (cur->data), tooltip);
+ }
+ else {
+ for (cur = proxies; cur != NULL; cur = cur->next)
+ gtk_widget_set_tooltip_text (GTK_WIDGET (cur->data), "");
+ }
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "yelp-uri");
+ g_signal_emit_by_name (view, "notify::yelp-uri", spec);
+
+ g_free (priv->page_id);
+ priv->page_id = yelp_uri_get_page_id (priv->uri);
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-id");
+ g_signal_emit_by_name (view, "notify::page-id", spec);
view_load_page (view);
}
@@ -700,27 +1348,73 @@ document_callback (YelpDocument *document,
debug_print (DB_FUNCTION, "entering\n");
if (signal == YELP_DOCUMENT_SIGNAL_INFO) {
- gchar *page_id;
- page_id = yelp_uri_get_page_id (priv->uri);
+ gchar *prev_id, *next_id, *real_id;
+ GtkAction *action;
+ YelpBackEntry *back = NULL;
+ GParamSpec *spec;
+
+ real_id = yelp_document_get_page_id (document, priv->page_id);
+ if (priv->page_id && real_id && g_str_equal (real_id, priv->page_id)) {
+ g_free (real_id);
+ }
+ else {
+ GParamSpec *spec;
+ g_free (priv->page_id);
+ priv->page_id = real_id;
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-id");
+ g_signal_emit_by_name (view, "notify::page-id", spec);
+ }
g_free (priv->root_title);
g_free (priv->page_title);
g_free (priv->page_desc);
g_free (priv->page_icon);
- priv->root_title = yelp_document_get_root_title (document, page_id);
- priv->page_title = yelp_document_get_page_title (document, page_id);
- priv->page_desc = yelp_document_get_page_desc (document, page_id);
- priv->page_icon = yelp_document_get_page_icon (document, page_id);
+ priv->root_title = yelp_document_get_root_title (document, priv->page_id);
+ priv->page_title = yelp_document_get_page_title (document, priv->page_id);
+ priv->page_desc = yelp_document_get_page_desc (document, priv->page_id);
+ priv->page_icon = yelp_document_get_page_icon (document, priv->page_id);
+
+ if (priv->back_cur)
+ back = priv->back_cur->data;
+ if (back) {
+ g_free (back->title);
+ back->title = g_strdup (priv->page_title);
+ g_free (back->desc);
+ back->desc = g_strdup (priv->page_desc);
+ }
+
+ prev_id = yelp_document_get_prev_id (document, priv->page_id);
+ action = gtk_action_group_get_action (priv->action_group, "YelpViewGoPrevious");
+ gtk_action_set_sensitive (action, prev_id != NULL);
+ g_free (prev_id);
- g_signal_emit_by_name (view, "notify::root-title", 0);
- g_signal_emit_by_name (view, "notify::page-title", 0);
- g_signal_emit_by_name (view, "notify::page-desc", 0);
- g_signal_emit_by_name (view, "notify::page-icon", 0);
+ next_id = yelp_document_get_next_id (document, priv->page_id);
+ action = gtk_action_group_get_action (priv->action_group, "YelpViewGoNext");
+ gtk_action_set_sensitive (action, next_id != NULL);
+ g_free (next_id);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "root-title");
+ g_signal_emit_by_name (view, "notify::root-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-title");
+ g_signal_emit_by_name (view, "notify::page-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-desc");
+ g_signal_emit_by_name (view, "notify::page-desc", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-icon");
+ g_signal_emit_by_name (view, "notify::page-icon", spec);
}
else if (signal == YELP_DOCUMENT_SIGNAL_CONTENTS) {
+ YelpUriDocumentType doctype;
const gchar *contents;
- gchar *mime_type, *page_id, *frag_id;
+ gchar *mime_type, *page_id, *frag_id, *full_uri;
page_id = yelp_uri_get_page_id (priv->uri);
debug_print (DB_ARG, " document.uri.page_id=\"%s\"\n", page_id);
mime_type = yelp_document_get_mime_type (document, page_id);
@@ -750,10 +1444,21 @@ document_callback (YelpDocument *document,
based on actual file locations, but in fact it doesn't matter. So
we just make a bogus URI that's easy to process later.
*/
- if (frag_id != NULL)
- priv->bogus_uri = g_strdup_printf ("%s%p#%s", BOGUS_URI, priv->uri, frag_id);
- else
- priv->bogus_uri = g_strdup_printf ("%s%p", BOGUS_URI, priv->uri);
+ doctype = yelp_uri_get_document_type (priv->uri);
+ full_uri = yelp_uri_get_canonical_uri (priv->uri);
+ if (g_str_has_prefix (full_uri, "file:/") &&
+ (doctype == YELP_URI_DOCUMENT_TYPE_TEXT ||
+ doctype == YELP_URI_DOCUMENT_TYPE_HTML ||
+ doctype == YELP_URI_DOCUMENT_TYPE_XHTML )) {
+ priv->bogus_uri = full_uri;
+ }
+ else {
+ g_free (full_uri);
+ if (frag_id != NULL)
+ priv->bogus_uri = g_strdup_printf ("%s%p#%s", BOGUS_URI, priv->uri, frag_id);
+ else
+ priv->bogus_uri = g_strdup_printf ("%s%p", BOGUS_URI, priv->uri);
+ }
g_signal_handler_block (view, priv->navigation_requested);
webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),
contents,
@@ -762,6 +1467,44 @@ document_callback (YelpDocument *document,
priv->bogus_uri);
g_signal_handler_unblock (view, priv->navigation_requested);
g_object_set (view, "state", YELP_VIEW_STATE_LOADED, NULL);
+
+ /* If we need to set the GtkAdjustment or trigger the page title
+ * from what WebKit thinks it is (see comment below), we need to
+ * let the main loop run through.
+ */
+ if (priv->vadjust > 0 || priv->hadjust > 0 || priv->page_title == NULL)
+ while (g_main_context_pending (NULL))
+ g_main_context_iteration (NULL, FALSE);
+
+ /* Setting adjustments only work after the page is loaded. These
+ * are set by view_history_action, and they're reset to 0 after
+ * each load here.
+ */
+ if (priv->vadjust > 0) {
+ if (priv->vadjustment)
+ gtk_adjustment_set_value (priv->vadjustment, priv->vadjust);
+ priv->vadjust = 0;
+ }
+ if (priv->hadjust > 0) {
+ if (priv->hadjustment)
+ gtk_adjustment_set_value (priv->hadjustment, priv->hadjust);
+ priv->hadjust = 0;
+ }
+
+ /* If the document didn't give us a page title, get it from WebKit.
+ * We let the main loop run through so that WebKit gets the title
+ * set so that we can send notify::page-title before loaded. It
+ * simplifies things if YelpView consumers can assume the title
+ * is set before loaded is triggered.
+ */
+ if (priv->page_title == NULL) {
+ GParamSpec *spec;
+ priv->page_title = g_strdup (webkit_web_view_get_title (WEBKIT_WEB_VIEW (view)));
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-title");
+ g_signal_emit_by_name (view, "notify::page-title", spec);
+ }
+
g_free (frag_id);
g_free (page_id);
g_free (mime_type);
diff --git a/libyelp/yelp-view.h b/libyelp/yelp-view.h
index ea2238fc..d6930524 100644
--- a/libyelp/yelp-view.h
+++ b/libyelp/yelp-view.h
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* Copyright (C) 2009 Shaun McCance <shaunm@gnome.org>
*
@@ -36,6 +36,7 @@ G_BEGIN_DECLS
#define YELP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), YELP_TYPE_VIEW, YelpViewClass))
#define YELP_IS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), YELP_TYPE_VIEW))
#define YELP_IS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), YELP_TYPE_VIEW))
+#define YELP_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_VIEW, YelpViewClass))
typedef struct _YelpView YelpView;
typedef struct _YelpViewClass YelpViewClass;
@@ -57,19 +58,19 @@ typedef enum {
YELP_VIEW_STATE_ERROR
} YelpViewState;
-GType yelp_view_get_type (void);
-GType yelp_view_state_get_type (void);
+GType yelp_view_get_type (void);
+GType yelp_view_state_get_type (void);
-GtkWidget * yelp_view_new (void);
-
-void yelp_view_load (YelpView *view,
- const gchar *uri);
-void yelp_view_load_uri (YelpView *view,
- YelpUri *uri);
-void yelp_view_load_document (YelpView *view,
- YelpUri *uri,
- YelpDocument *document);
-YelpDocument * yelp_view_get_document (YelpView *view);
+GtkWidget * yelp_view_new (void);
+void yelp_view_load (YelpView *view,
+ const gchar *uri);
+void yelp_view_load_uri (YelpView *view,
+ YelpUri *uri);
+void yelp_view_load_document (YelpView *view,
+ YelpUri *uri,
+ YelpDocument *document);
+YelpDocument * yelp_view_get_document (YelpView *view);
+GtkActionGroup * yelp_view_get_action_group (YelpView *view);
G_END_DECLS
diff --git a/po/LINGUAS b/po/LINGUAS
index 6252eab8..7b3e1a67 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -14,6 +14,7 @@ bn_IN
br
bs
ca
+crh
cs
cy
da
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f1addbab..32b1b9d4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,38 +4,22 @@
data/info.xml.in
data/man.xml.in
data/toc.xml.in
-[type: gettext/glade]data/ui/yelp-bookmarks.ui
-[type: gettext/glade]data/ui/yelp-bookmarks-add.ui
-[type: gettext/glade]data/ui/yelp-open-location.ui
-[type: gettext/glade]data/ui/yelp-preferences.ui
+libyelp/yelp-bz2-decompressor.c
libyelp/yelp-debug.c
libyelp/yelp-docbook-document.c
libyelp/yelp-document.c
libyelp/yelp-error.c
-libyelp/yelp-io-channel.c
+libyelp/yelp-info-document.c
libyelp/yelp-location-entry.c
+libyelp/yelp-lzma-decompressor.c
+libyelp/yelp-magic-decompressor.c
libyelp/yelp-mallard-document.c
-libyelp/yelp-marshal.c
libyelp/yelp-settings.c
libyelp/yelp-simple-document.c
libyelp/yelp-transform.c
-libyelp/yelp-types.c
libyelp/yelp-uri.c
libyelp/yelp-view.c
-src/eggdesktopfile.c
-src/eggsmclient.c
src/yelp-application.c
-src/yelp-base.c
-src/yelp-bookmarks.c
-src/yelp-db-print.c
-src/yelp-error.c
-src/yelp-info.c
-src/yelp-main.c
-src/yelp-man.c
-src/yelp-page.c
-src/yelp-print.c
-src/yelp-search-parser.c
-src/yelp-search.c
-src/yelp-toc.c
src/yelp-window.c
+src/yelp.c
yelp.desktop.in.in
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 8cda3a43..b4e8b5c2 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1 +1,7 @@
+src/yelp-man.c
+src/yelp-print.c
+src/yelp-search-parser.c
+src/yelp-search.c
+src/yelp-toc.c
+src/yelp-db-print.c
yelp.desktop.in
diff --git a/po/bn_IN.po b/po/bn_IN.po
index 9c84f1a1..1922d717 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -1,18 +1,18 @@
# translation of bn_IN.po to Bengali INDIA
# The Bengali India translation for yelp.
-# Copyright (C) 2003, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the yelp package.
#
# Khandakar Mujahidul Islam <suzan229@yahoo.com>, 2003-2005.
# Runa Bhattacharjee <runabh@gmail.com>, 2007.
# Runa Bhattacharjee <runab@fedoraproject.org>, 2008.
-# Runa Bhattacharjee <runab@redhat.com>, 2008, 2009.
+# Runa Bhattacharjee <runab@redhat.com>, 2008, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: bn_IN\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n"
"POT-Creation-Date: 2009-08-07 00:18+0000\n"
-"PO-Revision-Date: 2009-08-25 16:09+0530\n"
+"PO-Revision-Date: 2010-04-17 15:22+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@redhat.com>\n"
"Language-Team: Bengali INDIA <anubad@lists.ankur.org.in>\n"
"MIME-Version: 1.0\n"
@@ -1161,7 +1161,7 @@ msgstr " GNOME Help Browser"
# msgstr "জিনোমের মধ্যে দেয়া সহায়ক তথ্য গ্ড়গ্রহণ করুন"
#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
msgid "Help"
-msgstr "সহায়তা"
+msgstr "সাহায্য"
#: ../src/yelp-mallard.c:311
#| msgid "File not found"
@@ -1365,7 +1365,7 @@ msgstr "বুকমার্ক (_B)"
# msgstr "/যাও/_সূচি"
#: ../src/yelp-window.c:308
msgid "_Help"
-msgstr "সহায়তা (_H)"
+msgstr "সাহায্য (_H)"
#: ../src/yelp-window.c:311
msgid "_New Window"
@@ -1415,7 +1415,7 @@ msgstr "শব্দ অথবা পংক্তির পূর্ববর্
# msgstr "স্বয়ংক্রিয়ভাবে _চারদিক থেকে জড়িয়ে ফেলে"
#: ../src/yelp-window.c:363
msgid "Find Ne_xt"
-msgstr "পরবর্তী উপস্থিত অনুসন্ধান করুন (_x)"
+msgstr "পরবর্তী উপস্থিতি অনুসন্ধান করুন (_x)"
#: ../src/yelp-window.c:365
msgid "Find next occurrence of the word or phrase"
@@ -1423,7 +1423,7 @@ msgstr "শব্দ অথবা পংক্তির পরবর্তী
#: ../src/yelp-window.c:368
msgid "_Preferences"
-msgstr "পছন্দ(_P)"
+msgstr "পছন্দসই বৈশিষ্ট্য (_P)"
#: ../src/yelp-window.c:373
msgid "_Reload"
@@ -1468,7 +1468,7 @@ msgstr "পরবর্তী বিভাগ (_N)"
# msgstr "_অনুসন্ধান হচ্ছেঃ "
#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
msgid "_Contents"
-msgstr "সূচি (_C)"
+msgstr "সূচিপত্র (_C)"
#: ../src/yelp-window.c:416
msgid "_Add Bookmark"
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
new file mode 100644
index 00000000..02d5dbad
--- /dev/null
+++ b/po/ca@valencia.po
@@ -0,0 +1,2126 @@
+# Yelp Catalan translation.
+# Copyright © 2002, 2003-2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the yelp package.
+# Jordi Mallach <jordi@sindominio.net>, 2002, 2003, 2004, 2005, 2006.
+# Gil Forcada <gilforcada@guifi.net>, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: yelp\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=yelp&component=general\n"
+"POT-Creation-Date: 2010-04-17 09:54+0000\n"
+"PO-Revision-Date: 2009-11-22 17:13+0100\n"
+"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
+"Language-Team: Catalan <tradgnome@softcatala.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/info.xml.in.h:1
+msgid "GNU Info Pages"
+msgstr "Pàgines info de GNU"
+
+#: ../data/info.xml.in.h:2
+msgid "Traditional command line help (info)"
+msgstr "Ajuda de línia d'ordes tradicional (info)"
+
+#: ../data/man.xml.in.h:1
+msgid "Applications"
+msgstr "Aplicacions"
+
+#: ../data/man.xml.in.h:2
+msgid "BLT Functions"
+msgstr "Funcions del BLT"
+
+#: ../data/man.xml.in.h:3
+msgid "Configuration Files"
+msgstr "Fitxers de configuració"
+
+#: ../data/man.xml.in.h:4
+msgid "Curses Functions"
+msgstr "Funcions del Curses"
+
+#: ../data/man.xml.in.h:5 ../data/toc.xml.in.h:35
+msgid "Development"
+msgstr "Desenvolupament"
+
+#: ../data/man.xml.in.h:6
+msgid "FORTRAN Functions"
+msgstr "Funcions del FORTRAN"
+
+#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:56
+msgid "Games"
+msgstr "Jocs"
+
+#: ../data/man.xml.in.h:8
+msgid "Hardware Devices"
+msgstr "Dispositius de maquinari"
+
+#: ../data/man.xml.in.h:9
+msgid "Kernel Routines"
+msgstr "Rutines del nucli"
+
+#: ../data/man.xml.in.h:10
+msgid "Manual Pages"
+msgstr "Pàgines de manual"
+
+#: ../data/man.xml.in.h:11
+msgid "Network Audio Sound Functions"
+msgstr "Funcions de so d'àudio de xarxa"
+
+#: ../data/man.xml.in.h:12
+msgid "OpenSSL Applications"
+msgstr "Aplicacions per a l'OpenSSL"
+
+#: ../data/man.xml.in.h:13
+msgid "OpenSSL Configuration"
+msgstr "Configuració de l'OpenSSL"
+
+#: ../data/man.xml.in.h:14
+msgid "OpenSSL Functions"
+msgstr "Funcions de l'OpenSSL"
+
+#: ../data/man.xml.in.h:15
+msgid "OpenSSL Overviews"
+msgstr "Resums de l'OpenSSL"
+
+#: ../data/man.xml.in.h:16
+msgid "Overviews"
+msgstr "Resums"
+
+#: ../data/man.xml.in.h:17
+msgid "POSIX Functions"
+msgstr "Funcions POSIX"
+
+#: ../data/man.xml.in.h:18
+msgid "POSIX Headers"
+msgstr "Capçaleres POSIX"
+
+#: ../data/man.xml.in.h:19
+msgid "Perl Functions"
+msgstr "Funcions del Perl"
+
+#: ../data/man.xml.in.h:20
+msgid "Qt Functions"
+msgstr "Funcions del Qt"
+
+#: ../data/man.xml.in.h:21
+msgid "Readline Functions"
+msgstr "Funcions del readline"
+
+#: ../data/man.xml.in.h:22
+msgid "Section 0p"
+msgstr "Secció 0p"
+
+#: ../data/man.xml.in.h:23
+msgid "Section 1m"
+msgstr "Secció 1m"
+
+#: ../data/man.xml.in.h:24
+msgid "Section 1ssl"
+msgstr "Secció 1ssl"
+
+#: ../data/man.xml.in.h:25
+msgid "Section 1x"
+msgstr "Secció 1x"
+
+#: ../data/man.xml.in.h:26
+msgid "Section 2"
+msgstr "Secció 2"
+
+#: ../data/man.xml.in.h:27
+msgid "Section 3blt"
+msgstr "Secció 3blt"
+
+#: ../data/man.xml.in.h:28
+msgid "Section 3f"
+msgstr "Secció 3f"
+
+#: ../data/man.xml.in.h:29
+msgid "Section 3nas"
+msgstr "Secció 3nas"
+
+#: ../data/man.xml.in.h:30
+msgid "Section 3p"
+msgstr "Secció 3p"
+
+#: ../data/man.xml.in.h:31
+msgid "Section 3qt"
+msgstr "Secció 3qt"
+
+#: ../data/man.xml.in.h:32
+msgid "Section 3readline"
+msgstr "Secció 3readline"
+
+#: ../data/man.xml.in.h:33
+msgid "Section 3ssl"
+msgstr "Secció 3ssl"
+
+#: ../data/man.xml.in.h:34
+msgid "Section 3tiff"
+msgstr "Secció 3tiff"
+
+#: ../data/man.xml.in.h:35
+msgid "Section 4"
+msgstr "Secció 4"
+
+#: ../data/man.xml.in.h:36
+msgid "Section 4x"
+msgstr "Secció 4x"
+
+#: ../data/man.xml.in.h:37
+msgid "Section 5"
+msgstr "Secció 5"
+
+#: ../data/man.xml.in.h:38
+msgid "Section 5ssl"
+msgstr "Secció 5ssl"
+
+#: ../data/man.xml.in.h:39
+msgid "Section 5x"
+msgstr "Secció 5x"
+
+#: ../data/man.xml.in.h:40
+msgid "Section 6"
+msgstr "Secció 6"
+
+#: ../data/man.xml.in.h:41
+msgid "Section 6x"
+msgstr "Secció 6x"
+
+#: ../data/man.xml.in.h:42
+msgid "Section 7ssl"
+msgstr "Secció 7ssl"
+
+#: ../data/man.xml.in.h:43
+msgid "Section 7x"
+msgstr "Secció 7x"
+
+#: ../data/man.xml.in.h:44
+msgid "Section 9"
+msgstr "Secció 9"
+
+#: ../data/man.xml.in.h:45
+msgid "Sections 1, 1p, 1g and 1t"
+msgstr "Seccions 1, 1p, 1g i 1t"
+
+#: ../data/man.xml.in.h:46
+msgid "Sections 3, 3o, and 3t"
+msgstr "Seccions 3, 3o, i 3t"
+
+#: ../data/man.xml.in.h:47
+msgid "Sections 3form and 3menu"
+msgstr "Seccions 3form i 3menu"
+
+#: ../data/man.xml.in.h:48
+msgid "Sections 3ncurses and 3curses"
+msgstr "Seccions 3ncurses i 3curses"
+
+#: ../data/man.xml.in.h:49
+msgid "Sections 3pm and 3perl"
+msgstr "Seccions 3pm i 3perl"
+
+#: ../data/man.xml.in.h:50
+msgid "Sections 3x and 3X11"
+msgstr "Seccions 3x i 3X11"
+
+#: ../data/man.xml.in.h:51
+msgid "Sections 7 and 7gcc"
+msgstr "Seccions 7 i 7gcc"
+
+#: ../data/man.xml.in.h:52
+msgid "Sections 8 and 8l"
+msgstr "Seccions 8 i 8l"
+
+#: ../data/man.xml.in.h:53
+msgid "System Administration"
+msgstr "Administració del sistema"
+
+#: ../data/man.xml.in.h:54
+msgid "System Calls"
+msgstr "Crides al sistema"
+
+#: ../data/man.xml.in.h:55
+msgid "System V Form/Menu Functions"
+msgstr "Functions del formulari/menú del sistema V"
+
+#: ../data/man.xml.in.h:56
+msgid "TIFF Functions"
+msgstr "Funcions TIFF"
+
+#: ../data/man.xml.in.h:57
+msgid "Termcap Applications"
+msgstr "Aplicacions per a Termcap"
+
+#: ../data/man.xml.in.h:58
+msgid "Traditional command line help (man)"
+msgstr "Ajuda de línia d'ordes tradicional (man)"
+
+#: ../data/man.xml.in.h:59
+msgid "X11 Applications"
+msgstr "Aplicacions per a X11"
+
+#: ../data/man.xml.in.h:60
+msgid "X11 Configuration"
+msgstr "Configuració d'X11"
+
+#: ../data/man.xml.in.h:61
+msgid "X11 Devices"
+msgstr "Dispositius d'X11"
+
+#: ../data/man.xml.in.h:62
+msgid "X11 Functions"
+msgstr "Funcions d'X11"
+
+#: ../data/man.xml.in.h:63
+msgid "X11 Games"
+msgstr "Jocs per a X11"
+
+#: ../data/man.xml.in.h:64
+msgid "X11 Overviews"
+msgstr "Resums d'X11"
+
+#: ../data/toc.xml.in.h:1
+msgid "2D Graphics"
+msgstr "Gràfics 2D"
+
+#: ../data/toc.xml.in.h:2
+msgid "3D Graphics"
+msgstr "Gràfics 3D"
+
+#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+msgid "Accessibility"
+msgstr "Accessibilitat"
+
+#: ../data/toc.xml.in.h:4
+msgid "Action Games"
+msgstr "Jocs d'acció"
+
+#: ../data/toc.xml.in.h:5
+msgid "Adventure Games"
+msgstr "Jocs d'aventures"
+
+#: ../data/toc.xml.in.h:6
+msgid "Amusement"
+msgstr "Entreteniment"
+
+#: ../data/toc.xml.in.h:7
+msgid "Applications for viewing and manipulating graphics"
+msgstr "Aplicacions per visualitzar i modificar gràfics"
+
+#: ../data/toc.xml.in.h:8
+msgid "Applications related to audio and video"
+msgstr "Aplicacions relacionades amb l'àudio i el vídeo"
+
+#: ../data/toc.xml.in.h:9
+msgid "Applications that teach or aid in learning"
+msgstr "Aplicacions que ensenyen o ajuden en l'aprenentatge"
+
+#: ../data/toc.xml.in.h:10
+msgid "Arcade Games"
+msgstr "Jocs recreatius"
+
+#: ../data/toc.xml.in.h:11
+msgid "Archiving Tools"
+msgstr "Eines d'arxivació"
+
+#: ../data/toc.xml.in.h:12
+msgid "Art"
+msgstr "Art"
+
+#: ../data/toc.xml.in.h:13
+msgid "Artificial Intelligence"
+msgstr "Intel·ligència artificial"
+
+#: ../data/toc.xml.in.h:14
+msgid "Astronomy"
+msgstr "Astronomia"
+
+#: ../data/toc.xml.in.h:15
+msgid "Biology"
+msgstr "Biologia"
+
+#: ../data/toc.xml.in.h:16
+msgid "Blocks Games"
+msgstr "Jocs de blocs"
+
+#: ../data/toc.xml.in.h:17
+msgid "Board Games"
+msgstr "Jocs de tauler"
+
+#: ../data/toc.xml.in.h:18
+msgid "Building"
+msgstr "Muntatge"
+
+#: ../data/toc.xml.in.h:19
+msgid "Calculator"
+msgstr "Calculadora"
+
+#: ../data/toc.xml.in.h:20
+msgid "Calendar"
+msgstr "Calendari"
+
+#: ../data/toc.xml.in.h:21
+msgid "Card Games"
+msgstr "Jocs de cartes"
+
+#: ../data/toc.xml.in.h:22
+msgid "Charting Tools"
+msgstr "Eines de creació de diagrames"
+
+#: ../data/toc.xml.in.h:23
+msgid "Chat"
+msgstr "Xat"
+
+#: ../data/toc.xml.in.h:24
+msgid "Chemistry"
+msgstr "Química"
+
+#: ../data/toc.xml.in.h:25
+msgid "Clocks"
+msgstr "Rellotges"
+
+#: ../data/toc.xml.in.h:26
+msgid "Compression Tools"
+msgstr "Eines de compressió"
+
+#: ../data/toc.xml.in.h:27
+msgid "Computer Science"
+msgstr "Informàtica"
+
+#: ../data/toc.xml.in.h:28
+msgid "Construction"
+msgstr "Construcció"
+
+#: ../data/toc.xml.in.h:29
+msgid "Contact Management"
+msgstr "Gestió de contactes"
+
+#: ../data/toc.xml.in.h:30
+msgid "Data Visualization"
+msgstr "Visualització de dades"
+
+#: ../data/toc.xml.in.h:31
+msgid "Databases"
+msgstr "Bases de dades"
+
+#: ../data/toc.xml.in.h:32
+msgid "Debuggers"
+msgstr "Depuradors"
+
+#: ../data/toc.xml.in.h:33
+msgid "Desktop"
+msgstr "Escriptori"
+
+#: ../data/toc.xml.in.h:34
+msgid "Desktop Settings"
+msgstr "Paràmetres d'escriptori"
+
+#: ../data/toc.xml.in.h:36
+msgid "Dialup"
+msgstr "Marcatge directe"
+
+#: ../data/toc.xml.in.h:37
+msgid "Dictionaries"
+msgstr "Diccionaris"
+
+#. Translators: this is a menu title for burning audio and video to dics
+#: ../data/toc.xml.in.h:39
+msgid "Disc Burning"
+msgstr "Enregistrament de discs"
+
+#: ../data/toc.xml.in.h:40
+msgid "Economy"
+msgstr "Economia"
+
+#: ../data/toc.xml.in.h:41
+msgid "Education"
+msgstr "Educació"
+
+#: ../data/toc.xml.in.h:42
+msgid "Electricity"
+msgstr "Electricitat"
+
+#: ../data/toc.xml.in.h:43
+msgid "Electronics"
+msgstr "Electrònica"
+
+#: ../data/toc.xml.in.h:44
+msgid "Email Tools"
+msgstr "Eines de correu electrònic"
+
+#: ../data/toc.xml.in.h:45
+msgid "Emulator"
+msgstr "Emulador"
+
+#: ../data/toc.xml.in.h:46
+msgid "Engineering"
+msgstr "Enginyeria"
+
+#: ../data/toc.xml.in.h:47
+msgid "File Manager"
+msgstr "Gestió de fitxers"
+
+#: ../data/toc.xml.in.h:48
+msgid "File Tools"
+msgstr "Eines de fitxers"
+
+#: ../data/toc.xml.in.h:49
+msgid "File Transfer"
+msgstr "Transferència de fitxers"
+
+#: ../data/toc.xml.in.h:50
+msgid "Filesystem"
+msgstr "Sistema de fitxers"
+
+#: ../data/toc.xml.in.h:51
+msgid "Financial Tools"
+msgstr "Eines financeres"
+
+#: ../data/toc.xml.in.h:52
+msgid "Flow Charting Tools"
+msgstr "Eines de diagrames de flux"
+
+#: ../data/toc.xml.in.h:53
+msgid "GNOME Applications"
+msgstr "Aplicacions per a GNOME"
+
+#: ../data/toc.xml.in.h:54
+msgid "GTK"
+msgstr "GTK"
+
+#: ../data/toc.xml.in.h:55
+msgid "GUI Designers"
+msgstr "Dissenyadors d'interfícies gràfiques"
+
+#: ../data/toc.xml.in.h:57
+msgid "Generic applications for the GNOME environment"
+msgstr "Aplicacions genèriques per a l'entorn GNOME"
+
+#: ../data/toc.xml.in.h:58
+msgid "Generic applications for the KDE environment"
+msgstr "Aplicacions genèriques per a l'entorn KDE"
+
+#: ../data/toc.xml.in.h:59
+msgid "Geography"
+msgstr "Geografia"
+
+#: ../data/toc.xml.in.h:60
+msgid "Geology"
+msgstr "Geologia"
+
+#: ../data/toc.xml.in.h:61
+msgid "Geoscience"
+msgstr "Ciències de la Terra"
+
+#: ../data/toc.xml.in.h:62
+msgid "Graphics"
+msgstr "Gràfics"
+
+#: ../data/toc.xml.in.h:63
+msgid "Guides and manuals for applications that connect to the outside world"
+msgstr "Guies i manuals per a aplicacions que es connecten a la resta del món"
+
+#: ../data/toc.xml.in.h:64
+msgid "Guides for getting involved in development"
+msgstr "Guies per involucrar-se en desenvolupament"
+
+#: ../data/toc.xml.in.h:65
+msgid "Ham Radio"
+msgstr "Radioaficionat"
+
+#: ../data/toc.xml.in.h:66
+msgid "Hardware Settings"
+msgstr "Paràmetres de maquinari"
+
+#: ../data/toc.xml.in.h:67
+msgid "Have some fun"
+msgstr "Divertir-se"
+
+#: ../data/toc.xml.in.h:68
+msgid "History"
+msgstr "Història"
+
+#: ../data/toc.xml.in.h:69
+msgid "IDEs"
+msgstr "Entorns integrats de desenvolupament"
+
+#: ../data/toc.xml.in.h:70
+msgid "IRC Clients"
+msgstr "Clients de l'IRC"
+
+#: ../data/toc.xml.in.h:71
+msgid "Image Processing"
+msgstr "Processament d'imatges"
+
+#: ../data/toc.xml.in.h:72
+msgid "Instant Messaging"
+msgstr "Missatgeria instantània"
+
+#: ../data/toc.xml.in.h:73
+msgid "Internet"
+msgstr "Internet"
+
+#: ../data/toc.xml.in.h:74
+msgid "Java"
+msgstr "Java"
+
+#: ../data/toc.xml.in.h:75
+msgid "KDE Applications"
+msgstr "Aplicacions per a KDE"
+
+#: ../data/toc.xml.in.h:76
+msgid "Kids Games"
+msgstr "Jocs per a canalla"
+
+#: ../data/toc.xml.in.h:77
+msgid ""
+"Learn more about making your system more accessible for a range of "
+"disabilities"
+msgstr ""
+"Apreneu com fer que el sistema siga més accessible a moltes discapacitats"
+
+#: ../data/toc.xml.in.h:78
+msgid "Licenses"
+msgstr "Llicències"
+
+#: ../data/toc.xml.in.h:79
+msgid "Literature"
+msgstr "Literatura"
+
+#: ../data/toc.xml.in.h:80
+msgid "Logic Games"
+msgstr "Jocs lògics"
+
+#: ../data/toc.xml.in.h:81
+msgid "Math"
+msgstr "Matemàtiques"
+
+#: ../data/toc.xml.in.h:82
+msgid "Medical Software"
+msgstr "Programari mèdic"
+
+#: ../data/toc.xml.in.h:83
+msgid "Midi"
+msgstr "MIDI"
+
+#: ../data/toc.xml.in.h:84
+msgid "Miscellaneous Documentation"
+msgstr "Documentació diversa"
+
+#: ../data/toc.xml.in.h:85
+msgid "Mixers"
+msgstr "Mescladors"
+
+#: ../data/toc.xml.in.h:86
+msgid "Monitor"
+msgstr "Pantalla"
+
+# es refereix a un joc d'eines de la mateixa manera que hi ha GTK+ i Qt
+#: ../data/toc.xml.in.h:87
+msgid "Motif"
+msgstr "Motif"
+
+#: ../data/toc.xml.in.h:88
+msgid "Music"
+msgstr "Música"
+
+#: ../data/toc.xml.in.h:89
+msgid "News"
+msgstr "Notícies"
+
+#: ../data/toc.xml.in.h:90
+msgid "Numerical Analysis"
+msgstr "Anàlisis numèrica"
+
+#: ../data/toc.xml.in.h:91
+msgid "OCR"
+msgstr "Reconeixement de text (OCR)"
+
+#: ../data/toc.xml.in.h:92
+msgid "Office Applications"
+msgstr "Aplicacions ofimàtiques"
+
+#: ../data/toc.xml.in.h:93
+msgid "Office applications"
+msgstr "Aplicacions ofimàtiques"
+
+#: ../data/toc.xml.in.h:94
+msgid "Other Documentation"
+msgstr "Altra documentació"
+
+#: ../data/toc.xml.in.h:95
+msgid "P2P"
+msgstr "P2P"
+
+#: ../data/toc.xml.in.h:96
+msgid "PDA Communication"
+msgstr "Comunicació amb PDA"
+
+#: ../data/toc.xml.in.h:97
+msgid "Package Manager"
+msgstr "Gestió de paquets"
+
+#: ../data/toc.xml.in.h:98
+msgid "Parallel Computing"
+msgstr "Computació paral·lela"
+
+#: ../data/toc.xml.in.h:99
+msgid "Photography"
+msgstr "Fotografia"
+
+#: ../data/toc.xml.in.h:100
+msgid "Physics"
+msgstr "Física"
+
+#. Translators: this is a menu title for audio and video players
+#: ../data/toc.xml.in.h:102
+msgid "Players"
+msgstr "Reproductors"
+
+#: ../data/toc.xml.in.h:103
+msgid "Presentation Tools"
+msgstr "Eines de presentació"
+
+#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:339 ../src/yelp-print.c:366
+msgid "Printing"
+msgstr "Impressió"
+
+#: ../data/toc.xml.in.h:105
+msgid "Profiling Tools"
+msgstr "Eines de perfils"
+
+#: ../data/toc.xml.in.h:106
+msgid "Project Management Tools"
+msgstr "Eines de gestió de projectes"
+
+#: ../data/toc.xml.in.h:107
+msgid "Publishing"
+msgstr "Publicació"
+
+#: ../data/toc.xml.in.h:108
+msgid "Qt"
+msgstr "Qt"
+
+#: ../data/toc.xml.in.h:109
+msgid "Raster Graphics"
+msgstr "Gràfics de píxels"
+
+#. Translators: this is a menu title for audio and video recorders
+#: ../data/toc.xml.in.h:111
+msgid "Recorders"
+msgstr "Codificadors"
+
+#: ../data/toc.xml.in.h:112
+msgid "Remote Access"
+msgstr "Accés remot"
+
+#: ../data/toc.xml.in.h:113
+msgid "Revision Control"
+msgstr "Control de revisions"
+
+#: ../data/toc.xml.in.h:114
+msgid "Robotics"
+msgstr "Robòtica"
+
+#: ../data/toc.xml.in.h:115
+msgid "Role Playing Games"
+msgstr "Jocs de rol"
+
+#: ../data/toc.xml.in.h:116
+msgid "Scanning"
+msgstr "Escaneig"
+
+#: ../data/toc.xml.in.h:117
+msgid "Science"
+msgstr "Ciència"
+
+#: ../data/toc.xml.in.h:118
+msgid "Security"
+msgstr "Seguretat"
+
+#: ../data/toc.xml.in.h:119
+msgid "Sequencers"
+msgstr "Seqüenciadors"
+
+#: ../data/toc.xml.in.h:120
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: ../data/toc.xml.in.h:121
+msgid "Settings users can manipulate to make their environment more pleasant"
+msgstr ""
+"Paràmetres que poden canviar els usuaris per fer el seu entorn més còmode"
+
+#: ../data/toc.xml.in.h:122
+msgid "Simulation Games"
+msgstr "Jocs de simulació"
+
+#: ../data/toc.xml.in.h:123
+msgid "Sound"
+msgstr "So"
+
+#: ../data/toc.xml.in.h:124
+msgid "Sound &amp; Video"
+msgstr "So i vídeo"
+
+#: ../data/toc.xml.in.h:125
+msgid "Sound &amp; Video Editing"
+msgstr "Edició de so i vídeo"
+
+#: ../data/toc.xml.in.h:126
+msgid "Sports"
+msgstr "Esports"
+
+#: ../data/toc.xml.in.h:127
+msgid "Sports Games"
+msgstr "Jocs d'esports"
+
+#: ../data/toc.xml.in.h:128
+msgid "Spreadsheet Tools"
+msgstr "Eines de full de càlcul"
+
+#: ../data/toc.xml.in.h:129
+msgid "Strategy Games"
+msgstr "Jocs d'estratègia"
+
+#: ../data/toc.xml.in.h:130
+msgid "System"
+msgstr "Sistema"
+
+#: ../data/toc.xml.in.h:131
+msgid "TV"
+msgstr "Televisió"
+
+#: ../data/toc.xml.in.h:132
+msgid "Telephony"
+msgstr "Telefonia"
+
+#: ../data/toc.xml.in.h:133
+msgid "Telephony Tools"
+msgstr "Eines de telefonia"
+
+#: ../data/toc.xml.in.h:134
+msgid "Terminal Emulator"
+msgstr "Emulador de terminal"
+
+#: ../data/toc.xml.in.h:135
+msgid "Text Editors"
+msgstr "Editors de text"
+
+#: ../data/toc.xml.in.h:136
+msgid "Text Tools"
+msgstr "Eines de text"
+
+#: ../data/toc.xml.in.h:137
+msgid "Tools to help you manage your computer"
+msgstr "Eines per ajudar-vos a gestionar l'ordinador"
+
+#: ../data/toc.xml.in.h:138
+msgid "Translation Tools"
+msgstr "Eines de traducció"
+
+#: ../data/toc.xml.in.h:139
+msgid "Tuners"
+msgstr "Sintonitzadors"
+
+#: ../data/toc.xml.in.h:140
+msgid "Utilities"
+msgstr "Utilitats"
+
+#: ../data/toc.xml.in.h:141
+msgid "Utilities to help you get work done"
+msgstr "Utilitats per ajudar-vos a fer la faena"
+
+#: ../data/toc.xml.in.h:142
+msgid "Vector Graphics"
+msgstr "Gràfics vectorials"
+
+#: ../data/toc.xml.in.h:143
+msgid "Video"
+msgstr "Vídeo"
+
+#: ../data/toc.xml.in.h:144
+msgid "Video Conference"
+msgstr "Conferència de vídeo"
+
+#. Translators: This is a menu title for graphics viewing applications
+#: ../data/toc.xml.in.h:146
+msgid "Viewer"
+msgstr "Visualitzadors"
+
+#: ../data/toc.xml.in.h:147
+msgid "Web Browser"
+msgstr "Navegador web"
+
+#: ../data/toc.xml.in.h:148
+msgid "Web Development"
+msgstr "Desenvolupament web"
+
+#: ../data/toc.xml.in.h:149
+msgid "Welcome to the GNOME Help Browser"
+msgstr "Vos donem la benvinguda al navegador de l'ajuda del GNOME"
+
+#: ../data/toc.xml.in.h:150
+msgid "Word Processors"
+msgstr "Processadors de text"
+
+#: ../data/ui/yelp-bookmarks.ui.h:1
+msgid "Bookmarks"
+msgstr "Adreces d'interés"
+
+#: ../data/ui/yelp-bookmarks.ui.h:2
+msgid "Re_name"
+msgstr "Canvia el _nom"
+
+#: ../data/ui/yelp-bookmarks.ui.h:3
+msgid "_Bookmarks:"
+msgstr "A_dreces d'interés:"
+
+#: ../data/ui/yelp-bookmarks-add.ui.h:1
+msgid "Add Bookmark"
+msgstr "Afig una adreça d'interés"
+
+#: ../data/ui/yelp-bookmarks-add.ui.h:2
+msgid "_Title:"
+msgstr "_Títol:"
+
+#: ../data/ui/yelp-open-location.ui.h:1
+msgid "Open Location"
+msgstr "Obri una ubicació"
+
+#: ../data/ui/yelp-open-location.ui.h:2
+msgid "_Location:"
+msgstr "_Ubicació:"
+
+#: ../data/ui/yelp-preferences.ui.h:2
+msgid "Fonts"
+msgstr "Tipus de lletres"
+
+#: ../data/ui/yelp-preferences.ui.h:3
+msgid "Preferences"
+msgstr "Preferències"
+
+#: ../data/ui/yelp-preferences.ui.h:4
+msgid "_Browse with caret"
+msgstr "_Navega amb un cursor"
+
+#: ../data/ui/yelp-preferences.ui.h:5
+msgid "_Fixed width:"
+msgstr "Amplada _fixa:"
+
+#: ../data/ui/yelp-preferences.ui.h:6
+msgid "_Use system fonts"
+msgstr "_Utilitza els tipus de lletra del sistema"
+
+#: ../data/ui/yelp-preferences.ui.h:7
+msgid "_Variable width:"
+msgstr "Amplada _variable:"
+
+#: ../data/yelp.schemas.in.h:1
+msgid "Font for fixed text"
+msgstr "Tipus de lletra per al text fix"
+
+#: ../data/yelp.schemas.in.h:2
+msgid "Font for text"
+msgstr "Tipus de lletra per al text"
+
+#: ../data/yelp.schemas.in.h:3
+msgid "Font for text with fixed width."
+msgstr "Tipus de lletra per al text amb amplada fixa."
+
+#: ../data/yelp.schemas.in.h:4
+msgid "Font for text with variable width."
+msgstr "Tipus de lletra per al text amb amplada variable."
+
+#: ../data/yelp.schemas.in.h:5
+msgid "Use a keyboard-controllable caret when viewing pages."
+msgstr ""
+"Utilitza un cursor controlable amb el teclat quan es visualitzen les pàgines."
+
+#: ../data/yelp.schemas.in.h:6
+msgid "Use caret"
+msgstr "Utilitza un cursor"
+
+#: ../data/yelp.schemas.in.h:7
+msgid "Use system fonts"
+msgstr "Utilitza els tipus de lletra del sistema"
+
+#: ../data/yelp.schemas.in.h:8
+msgid "Use the default fonts set for the system."
+msgstr "Utilitza els tipus de lletra per defecte del sistema."
+
+#: ../src/eggdesktopfile.c:165
+#, c-format
+msgid "File is not a valid .desktop file"
+msgstr "El fitxer no és un fitxer .desktop vàlid"
+
+#: ../src/eggdesktopfile.c:188
+#, c-format
+msgid "Unrecognized desktop file Version '%s'"
+msgstr "No s'ha reconegut la versió «%s» del fitxer d'escriptori"
+
+#: ../src/eggdesktopfile.c:957
+#, c-format
+msgid "Starting %s"
+msgstr "S'està iniciant %s"
+
+#: ../src/eggdesktopfile.c:1098
+#, c-format
+msgid "Application does not accept documents on command line"
+msgstr "L'aplicació no accepta documents des de la línia d'ordes"
+
+#: ../src/eggdesktopfile.c:1166
+#, c-format
+msgid "Unrecognized launch option: %d"
+msgstr "No s'ha reconegut l'opció de llançament: %d"
+
+#: ../src/eggdesktopfile.c:1365
+#, c-format
+msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+msgstr ""
+"No es poden passar URI de documents a una entrada d'escriptori de tipus "
+"«Type=Link»"
+
+#: ../src/eggdesktopfile.c:1384
+#, c-format
+msgid "Not a launchable item"
+msgstr "No és un element executable"
+
+#: ../src/eggsmclient.c:225
+msgid "Disable connection to session manager"
+msgstr "Inhabilita la connexió al gestor de sessió"
+
+#: ../src/eggsmclient.c:228
+msgid "Specify file containing saved configuration"
+msgstr "Especifica el fitxer que conté la configuració alçada"
+
+#: ../src/eggsmclient.c:228
+msgid "FILE"
+msgstr "FITXER"
+
+#: ../src/eggsmclient.c:231
+msgid "Specify session management ID"
+msgstr "Especifica l'identificador del gestor de sessió"
+
+#: ../src/eggsmclient.c:231
+msgid "ID"
+msgstr "IDENTIFICADOR"
+
+#: ../src/eggsmclient.c:252
+msgid "Session management options:"
+msgstr "Opcions del gestor de sessió:"
+
+#: ../src/eggsmclient.c:253
+msgid "Show session management options"
+msgstr "Mostra les opcions del gestor de sessió"
+
+#: ../src/yelp-bookmarks.c:147
+msgid "Open Bookmark in New Window"
+msgstr "Obri l'adreça d'interés a una finestra nova"
+
+#: ../src/yelp-bookmarks.c:151
+msgid "Rename Bookmark"
+msgstr "Canvia el nom de l'adreça d'interés"
+
+#: ../src/yelp-bookmarks.c:155
+msgid "Remove Bookmark"
+msgstr "Suprimeix l'adreça d'interés"
+
+#: ../src/yelp-bookmarks.c:319
+#, c-format
+msgid "A bookmark titled %s already exists for this page."
+msgstr "Ja existeix una adreça d'interés amb el títol %s per a esta pàgina."
+
+#: ../src/yelp-bookmarks.c:395
+#, c-format
+msgid "A bookmark titled <b>%s</b> already exists for this page."
+msgstr ""
+"Ja existeix una adreça d'interés amb el títol <b>%s</b> per a esta adreça."
+
+#: ../src/yelp-bookmarks.c:408
+msgid "Help Topics"
+msgstr "Temes d'ajuda"
+
+#: ../src/yelp-bookmarks.c:423
+msgid "Document Sections"
+msgstr "Seccions del document"
+
+#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
+#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
+#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:284 ../src/yelp-mallard.c:384
+#: ../src/yelp-man.c:292 ../src/yelp-man.c:385 ../src/yelp-toc.c:266
+#: ../src/yelp-toc.c:365
+msgid "Page not found"
+msgstr "No s'ha trobat la pàgina"
+
+#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
+#: ../src/yelp-mallard.c:285 ../src/yelp-mallard.c:385 ../src/yelp-man.c:293
+#, c-format
+msgid "The page %s was not found in the document %s."
+msgstr "No s'ha trobat la pàgina %s en el document %s."
+
+#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
+#: ../src/yelp-man.c:386
+#, c-format
+msgid "The requested page was not found in the document %s."
+msgstr "No s'ha trobat la pàgina sol·licitada en el document %s."
+
+#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
+#: ../src/yelp-man.c:429
+msgid "File not found"
+msgstr "No s'ha trobat el fitxer"
+
+#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
+#: ../src/yelp-man.c:430
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "No existeix el fitxer «%s»."
+
+#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
+#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
+#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
+msgid "Could not parse file"
+msgstr "No s'ha pogut analitzar el fitxer"
+
+#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"No s'ha pogut analitzar el fitxer «%s» perquè no és un document XML vàlid."
+
+#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"No s'ha pogut analitzar el fitxer «%s» perquè algun dels seus fitxers "
+"inclosos no és un document XML vàlid."
+
+#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
+msgid "Unknown Error"
+msgstr "Error desconegut"
+
+#: ../src/yelp-error.c:136 ../src/yelp-window.c:1716
+msgid "Could Not Read File"
+msgstr "No s'ha pogut llegir el fitxer"
+
+#: ../src/yelp-error.c:146
+msgid "No information is available about this error."
+msgstr "No hi ha informació disponible sobre este error."
+
+#: ../src/yelp-info.c:396
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"No s'ha pogut analitzar el fitxer «%s» perquè no és una pàgina d'informació "
+"vàlida."
+
+#: ../src/yelp-io-channel.c:132
+#, c-format
+msgid ""
+"The file ‘%s’ could not be read and decoded. The file may be compressed in "
+"an unsupported format."
+msgstr ""
+"No s'ha pogut llegir i decodificar el fitxer «%s». El sistema pot estar "
+"comprimit en un format no implementat."
+
+#: ../src/yelp-main.c:88
+msgid "Use a private session"
+msgstr "Utilitza una sessió privada"
+
+#: ../src/yelp-main.c:97
+msgid "Define which cache directory to use"
+msgstr "Defineix el directori de memòria cau a utilitzar"
+
+#. Commandline parsing is done here
+#: ../src/yelp-main.c:355
+msgid " GNOME Help Browser"
+msgstr " Navegador de l'ajuda del GNOME"
+
+#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Ajuda"
+
+#: ../src/yelp-mallard.c:315
+msgid "Directory not found"
+msgstr "No s'ha trobat el directori"
+
+#: ../src/yelp-mallard.c:316
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "No existeix el directori «%s»."
+
+#: ../src/yelp-man.c:459
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+msgstr ""
+"No s'ha pogut analitzar el fitxer «%s» perquè no és una pàgina de manual "
+"vàlida."
+
+#: ../src/yelp-print.c:99
+msgid "Print"
+msgstr "Imprimir"
+
+#: ../src/yelp-print.c:169
+msgid "Preparing to print"
+msgstr "S'està preparant per imprimir"
+
+#: ../src/yelp-print.c:263
+msgid "Printing is not supported on this printer"
+msgstr "No es pot imprimir en esta impressora"
+
+#: ../src/yelp-print.c:266
+#, c-format
+msgid "Printer %s does not support postscript printing."
+msgstr "La impressora %s no permet la impressió amb postscript."
+
+#: ../src/yelp-print.c:368
+msgid "Waiting to print"
+msgstr "S'està esperant per imprimir"
+
+#: ../src/yelp-print.c:580
+msgid "An error occurred while printing"
+msgstr "S'ha produït un error mentre s'imprimia"
+
+#: ../src/yelp-print.c:584
+#, c-format
+msgid "It was not possible to print your document: %s"
+msgstr "No s'ha pogut imprimir el vostre document: %s"
+
+#: ../src/yelp-search-parser.c:67
+msgid "the GNOME Support Forums"
+msgstr "els fòrums de suport del GNOME"
+
+#: ../src/yelp-search-parser.c:285
+#, c-format
+msgid "No results for \"%s\""
+msgstr "No s'han obtingut resultats per a «%s»"
+
+#: ../src/yelp-search-parser.c:286
+msgid ""
+"Try using different words to describe the problem you're having or the topic "
+"you want help with."
+msgstr ""
+"Proveu de fer servir paraules diferents per descriure el problema que "
+"tingueu o el tema per al qual vulgueu ajuda."
+
+#: ../src/yelp-search-parser.c:289
+#, c-format
+msgid "Search results for \"%s\""
+msgstr "Resultats de la cerca «%s»"
+
+#. TRANSLATORS: Please don't do anything funny with the
+#. * format arguement. It isn't really going through a printf
+#. * The %s is used to indicate where the name of the site (linked)
+#. * should be. This is done in the XSLT
+#.
+#: ../src/yelp-search-parser.c:303
+#, c-format
+msgid "Repeat the search online at %s"
+msgstr "Repeteix la cerca en línia a %s"
+
+#. Translators: Do not translate this list exactly. These are
+#. * colon-separated words that aren't useful for choosing search
+#. * results; they will be different for each language. Include
+#. * pronouns, articles, very common verbs and prepositions,
+#. * words from question structures like "tell me about" and
+#. * "how do I", and words for functional states like "not",
+#. * "work", and "broken".
+#.
+#: ../src/yelp-search-parser.c:874
+msgid ""
+"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
+"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
+"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
+"where:who:will:with:won't:wont:why:work:working:works"
+msgstr ""
+"a:això:allò:amb:este:esta:cap:com:de:del:dels:el:els:en:es:fer:fes:ha:han:"
+"has:i:la:les:na:no:o:on:per:quan:què:qui:sa:si:sí:tindre:un:una:unes:uns:va"
+
+#. Translators: This is a list of common prefixes for words.
+#. * Do not translate this directly. Instead, use a colon
+#. * seperated list of word-starts. In English, an example
+#. * is re-. If there is none, please use the term NULL
+#. * If there is only one, please put a colon after.
+#. * E.g. if the common prefix is re then the string would be
+#. * "re:"
+#.
+#: ../src/yelp-search-parser.c:890
+msgid "re"
+msgstr "a:anti:bi:ex:in:pre:pro:re:sub"
+
+# FIXME
+#. Translators: This is a list of (guess what?) common suffixes
+#. * to words. Things that may be put at ends of words to slightly
+#. * alter their meaning (like -ing and -s in English). This is a
+#. * colon seperated list (I like colons). If there are none,
+#. * please use the string NULL. If there is only 1, please
+#. * add a colon at the end of the list
+#.
+#: ../src/yelp-search-parser.c:899
+msgid "ers:er:ing:es:s:'s"
+msgstr "NULL"
+
+#: ../src/yelp-search-parser.c:1095
+msgid "No Comment"
+msgstr "Sense comentaris"
+
+#. Much bigger problems
+#: ../src/yelp-search.c:238
+msgid "Search could not be processed"
+msgstr "No s'ha pogut processar la cerca"
+
+#: ../src/yelp-search.c:239
+msgid "The requested search could not be processed."
+msgstr "No s'ha pogut processar la cerca sol·licitada."
+
+#: ../src/yelp-search.c:366
+msgid "Cannot process the search"
+msgstr "No s'ha pogut processar la cerca"
+
+#: ../src/yelp-search.c:367
+msgid "The search processor returned invalid results"
+msgstr "El processador de la cerca ha retornat resultats erronis"
+
+#: ../src/yelp-toc.c:267
+#, c-format
+msgid "The page %s was not found in the TOC."
+msgstr "No s'ha trobat la pàgina %s en la taula de continguts."
+
+#: ../src/yelp-toc.c:366
+msgid "The requested page was not found in the TOC."
+msgstr "No s'ha pogut trobar la pàgina sol·licitada en la taula de continguts."
+
+#: ../src/yelp-toc.c:438
+msgid ""
+"The TOC file could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"No s'ha pogut analitzar el fitxer de la taula de continguts perquè no és un "
+"document XML vàlid."
+
+#: ../src/yelp-transform.c:86
+msgid "Invalid Stylesheet"
+msgstr "Full d'estil invàlid"
+
+#: ../src/yelp-transform.c:87
+#, c-format
+msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
+msgstr ""
+"O bé no existeix el full d'estil XSLT «%s» o no és un fitxer d'estil vàlid."
+
+#: ../src/yelp-transform.c:122
+msgid "Broken Transformation"
+msgstr "Transformació malmesa"
+
+#: ../src/yelp-transform.c:123
+msgid "An unknown error occurred while attempting to transform the document."
+msgstr "S'ha produït un error desconegut mentre es transformava el document."
+
+#: ../src/yelp-transform.c:389
+msgid "No href attribute found on yelp:document\n"
+msgstr "No s'ha trobat cap atribut href a yelp:document\n"
+
+#: ../src/yelp-transform.c:404
+msgid "Out of memory"
+msgstr "S'ha exhaurit la memòria"
+
+#: ../src/yelp-window.c:304
+msgid "_File"
+msgstr "_Fitxer"
+
+#: ../src/yelp-window.c:305
+msgid "_Edit"
+msgstr "_Edita"
+
+#: ../src/yelp-window.c:306
+msgid "_Go"
+msgstr "_Vés"
+
+#: ../src/yelp-window.c:307
+msgid "_Bookmarks"
+msgstr "A_dreces d'interés"
+
+#: ../src/yelp-window.c:308
+msgid "_Help"
+msgstr "A_juda"
+
+#: ../src/yelp-window.c:311
+msgid "_New Window"
+msgstr "Finestra _nova"
+
+#: ../src/yelp-window.c:316
+msgid "Print This Document ..."
+msgstr "Imprimeix este document ..."
+
+#: ../src/yelp-window.c:321
+msgid "Print This Page ..."
+msgstr "Imprimeix esta pàgina ..."
+
+#: ../src/yelp-window.c:326
+msgid "About This Document"
+msgstr "Quant a este document"
+
+#: ../src/yelp-window.c:331
+msgid "Open _Location"
+msgstr "Obri una _ubicació"
+
+#: ../src/yelp-window.c:336
+msgid "_Close Window"
+msgstr "_Tanca la finestra"
+
+#: ../src/yelp-window.c:342
+msgid "_Copy"
+msgstr "_Copia"
+
+#: ../src/yelp-window.c:348
+msgid "_Select All"
+msgstr "_Selecciona-ho tot"
+
+#: ../src/yelp-window.c:353
+msgid "_Find..."
+msgstr "_Cerca..."
+
+#: ../src/yelp-window.c:358
+msgid "Find Pre_vious"
+msgstr "Cerca l'an_terior"
+
+#: ../src/yelp-window.c:360
+msgid "Find previous occurrence of the word or phrase"
+msgstr "Cerca l'anterior coincidència d'esta paraula o frase"
+
+# "la" paraula/frase (josep)
+#: ../src/yelp-window.c:363
+msgid "Find Ne_xt"
+msgstr "Cerca la següe_nt"
+
+#: ../src/yelp-window.c:365
+msgid "Find next occurrence of the word or phrase"
+msgstr "Cerca la següent coincidència d'esta paraula o frase"
+
+#: ../src/yelp-window.c:368
+msgid "_Preferences"
+msgstr "_Preferències"
+
+#: ../src/yelp-window.c:373
+msgid "_Reload"
+msgstr "To_rna a carregar"
+
+#: ../src/yelp-window.c:385
+msgid "_Back"
+msgstr "_Endarrere"
+
+#: ../src/yelp-window.c:387
+msgid "Show previous page in history"
+msgstr "Mostra la pàgina anterior de l'historial"
+
+#: ../src/yelp-window.c:390
+msgid "_Forward"
+msgstr "E_ndavant"
+
+#: ../src/yelp-window.c:392
+msgid "Show next page in history"
+msgstr "Mostra la pàgina següent de l'historial"
+
+#: ../src/yelp-window.c:395
+msgid "_Help Topics"
+msgstr "Temes d'a_juda"
+
+#: ../src/yelp-window.c:397
+msgid "Go to the listing of help topics"
+msgstr "Vés al llistat dels temes d'ajuda"
+
+#: ../src/yelp-window.c:400
+msgid "_Previous Section"
+msgstr "Secció an_terior"
+
+#: ../src/yelp-window.c:405
+msgid "_Next Section"
+msgstr "Secció següe_nt"
+
+#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
+msgid "_Contents"
+msgstr "_Continguts"
+
+#: ../src/yelp-window.c:416
+msgid "_Add Bookmark"
+msgstr "_Afig una adreça d'interés"
+
+#: ../src/yelp-window.c:421
+msgid "_Edit Bookmarks..."
+msgstr "_Edita les adreces d'interés..."
+
+#: ../src/yelp-window.c:427
+msgid "_Open Link"
+msgstr "_Obri l'enllaç"
+
+#: ../src/yelp-window.c:432
+msgid "Open Link in _New Window"
+msgstr "Obri l'enllaç a una finestra _nova"
+
+#: ../src/yelp-window.c:437
+msgid "_Copy Link Address"
+msgstr "_Copia l'adreça de l'enllaç"
+
+#: ../src/yelp-window.c:444
+msgid "Help On this application"
+msgstr "Ajuda per a esta aplicació"
+
+#: ../src/yelp-window.c:447
+msgid "_About"
+msgstr "_Quant a"
+
+#: ../src/yelp-window.c:452
+msgid "Copy _Email Address"
+msgstr "_Copia l'adreça de correu"
+
+#: ../src/yelp-window.c:524
+msgid "Help Browser"
+msgstr "Navegador d'ajuda"
+
+#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1779
+msgid "Loading..."
+msgstr "S'està carregant..."
+
+#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
+msgid "Unknown Page"
+msgstr "Pàgina desconeguda"
+
+#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1105
+#: ../src/yelp-window.c:1114
+#, c-format
+msgid "The requested URI \"%s\" is invalid"
+msgstr "L'URI «%s» sol·licitat no és vàlid"
+
+#: ../src/yelp-window.c:1044 ../src/yelp-window.c:1107
+#: ../src/yelp-window.c:1115
+msgid "Unable to load page"
+msgstr "No s'ha pogut carregar la pàgina"
+
+#: ../src/yelp-window.c:1336
+msgid "_Search:"
+msgstr "_Cerca:"
+
+#: ../src/yelp-window.c:1337
+msgid "Search for other documentation"
+msgstr "Cerca altra documentació"
+
+#: ../src/yelp-window.c:1357
+msgid "Cannot create window"
+msgstr "No s'ha pogut crear una finestra nova"
+
+#: ../src/yelp-window.c:1363
+msgid "Cannot create search component"
+msgstr "No s'ha pogut crear el component de cerca"
+
+#: ../src/yelp-window.c:1535
+msgid "Fin_d:"
+msgstr "_Cerca:"
+
+#: ../src/yelp-window.c:1557
+msgid "Find _Previous"
+msgstr "Cerca l'an_terior"
+
+#: ../src/yelp-window.c:1569
+msgid "Find _Next"
+msgstr "Cerca el següe_nt"
+
+#: ../src/yelp-window.c:1582
+msgid "Phrase not found"
+msgstr "No s'ha trobat la frase"
+
+#: ../src/yelp-window.c:1713
+#, c-format
+msgid ""
+"The file ‘%s’ could not be read. This file might be missing, or you might "
+"not have permissions to read it."
+msgstr ""
+"No s'ha pogut llegir el fitxer «%s». Pot ser que manque este fitxer, o potser "
+"no teniu permís per legir-lo."
+
+#. Note to translators: put here your name (and address) so it
+#. * will show up in the "about" box
+#: ../src/yelp-window.c:2604
+msgid "translator-credits"
+msgstr ""
+"Jordi Mallach <jordi@sindominio.net>\n"
+"Gil Forcada <gilforcada@guifi.net>"
+
+#: ../src/yelp-window.c:2607
+msgid "Yelp"
+msgstr "Yelp"
+
+#: ../src/yelp-window.c:2609
+msgid "A documentation browser and viewer for the Gnome Desktop."
+msgstr "Un navegador i visualitzador de documentació per a l'escriptori GNOME."
+
+# ...sobre el GNOME? (josep)
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Obtingueu ajuda per al GNOME"
+
+#~ msgid "<b>Accessibility</b>"
+#~ msgstr "<b>Accessibilitat</b>"
+
+#~ msgid "<b>Fonts</b>"
+#~ msgstr "<b>Tipus de lletra</b>"
+
+#~ msgid "C_ase sensitive"
+#~ msgstr "Diferenci_a entre majúscules i minúscules"
+
+#~ msgid "Find"
+#~ msgstr "Cerca"
+
+#~ msgid "_Find:"
+#~ msgstr "_Cerca:"
+
+#~ msgid "_Next"
+#~ msgstr "_Següent"
+
+#~ msgid "_Previous"
+#~ msgstr "_Anterior"
+
+#~ msgid "_Wrap around"
+#~ msgstr "_Torna al principi"
+
+#~ msgid "Error executing \"gnome-open\""
+#~ msgstr "S'ha produït un error en executar «gnome-open»"
+
+#~ msgid "Accessories"
+#~ msgstr "Accessoris"
+
+#~ msgid "Applications for fun"
+#~ msgstr "Aplicacions per a divertir-se"
+
+#~ msgid "Applications for word processing and other office tasks"
+#~ msgstr "Aplicacions per al processament de text i altres tasques d'oficina"
+
+#~ msgid "Applications related to multimedia"
+#~ msgstr "Aplicacions relacionades amb el multimèdia"
+
+#~ msgid "Applications related to software development"
+#~ msgstr "Aplicacions relacionades amb al desenvolupament de programari"
+
+#~ msgid "Applications specific to the panel"
+#~ msgstr "Aplicacions específiques del quadre"
+
+#~ msgid "Applications that support assistive technologies"
+#~ msgstr "Aplicacions que implementen tecnologies assistives"
+
+#~ msgid "KDE"
+#~ msgstr "KDE"
+
+#~ msgid "Learning applications"
+#~ msgstr "Aplicacions d'aprenentatge"
+
+#~ msgid "Office"
+#~ msgstr "Ofimàtica"
+
+#~ msgid "Panel Applets"
+#~ msgstr "Miniaplicacions del quadre"
+
+#~ msgid "Programming"
+#~ msgstr "Programació"
+
+#~ msgid "Scientific Applications."
+#~ msgstr "Aplicacions científiques."
+
+#~ msgid "Utility applications"
+#~ msgstr "Aplicacions d'utilitats"
+
+#~ msgid "Variety of other applications"
+#~ msgstr "Altres aplicacions diverses"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is not well-formed XML."
+#~ msgstr ""
+#~ "No s'ha pogut analitzar el fitxer «%s». El fitxer no existeix, o no és un "
+#~ "XML vàlid."
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is not a well-formed info page."
+#~ msgstr ""
+#~ "No s'ha pogut analitzar el fitxer «%s». El fitxer no existeix, o no és una "
+#~ "pàgina d'informació vàlida."
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is formatted incorrectly."
+#~ msgstr ""
+#~ "No s'ha pogut analitzar el fitxer «%s». El fitxer no existeix, o no és XML "
+#~ "vàlid."
+
+#~ msgid "Document Information"
+#~ msgstr "Informació del document"
+
+#~ msgid "The YelpDocInfo struct of the document"
+#~ msgstr "L'estructura YelpDocInfo del document"
+
+#~ msgid "Bigger problems still"
+#~ msgstr "Encara hi ha problemes majors"
+
+#~ msgid ""
+#~ "Your search could not be processed. The file ‘%s’ is either missing or is "
+#~ "not a valid XSLT stylesheet."
+#~ msgstr ""
+#~ "No s'ha pogut processar la cerca. Manca el fitxer «%s», o no és un full "
+#~ "d'estil XSLT vàlid."
+
+#~ msgid "Help Contents"
+#~ msgstr "Continguts de l'ajuda"
+
+#~ msgid "Could not load the OMF file '%s'."
+#~ msgstr "No s'ha pogut carregar el fitxer OMF «%s»."
+
+#~ msgid "YelpTocPager: Pause count is negative."
+#~ msgstr "YelpTocPager: el compte de pausa és negatiu."
+
+#~ msgid ""
+#~ "The table of contents could not be processed. The file ‘%s’ is either "
+#~ "missing or is not a valid XSLT stylesheet."
+#~ msgstr ""
+#~ "No s'ha pogut processar la taula de continguts. Falta el fitxer «%s», o no "
+#~ "és XML vàlid."
+
+#~ msgid "Read man page for %s"
+#~ msgstr "Llegiu la pàgina de manual per a %s"
+
+#~ msgid "Read info page for %s"
+#~ msgstr "Llegiu la pàgina d'informació de %s"
+
+#~ msgid ""
+#~ "The table of contents could not be loaded. The file ‘%s’ is either "
+#~ "missing or is not well-formed XML."
+#~ msgstr ""
+#~ "No s'ha pogut carregar la taula de continguts. Falta el fitxer «%s», o no "
+#~ "és un XML vàlid."
+
+#~ msgid "Command Line Help"
+#~ msgstr "Ajuda de la línia d'ordres"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is improperly formatted."
+#~ msgstr ""
+#~ "No s'ha pogut analitzar el fitxer «%s». El fitxer no existeix, o no està "
+#~ "formatat correctament."
+
+#~ msgid ""
+#~ "The document ‘%s’ could not be processed. The file ‘%s’ is either "
+#~ "missing, or it is not a valid XSLT stylesheet."
+#~ msgstr ""
+#~ "No s'ha pogut processar el document «%s». Falta el fitxer «%s» o no és un "
+#~ "full d'estil XSLT vàlid."
+
+#~ msgid "An unknown error occured"
+#~ msgstr "S'ha produït un error desconegut"
+
+#~ msgid "Could not load document"
+#~ msgstr "No s'ha pogut carregar el document"
+
+#~ msgid "Could not read the table of contents"
+#~ msgstr "No s'ha pogut carregar la taula de continguts"
+
+#~ msgid "Unsupported Format"
+#~ msgstr "El format no és suportat"
+
+#~ msgid "<b>Printing</b>"
+#~ msgstr "<b>Imprimint</b>"
+
+#~ msgid "yelp-watermark-blockquote-201C"
+#~ msgstr "yelp-watermark-blockquote-00AB"
+
+#~ msgid "The Uniform Resource Identifier for the file is invalid."
+#~ msgstr ""
+#~ "L'identificador uniforme del recurs per a aquest fitxer no és vàlid."
+
+#~ msgid ""
+#~ "The Uniform Resource Identifier ‘%s’ is invalid or does not point to an "
+#~ "actual file."
+#~ msgstr ""
+#~ "L'identificador uniforme del recurs «%s» no és vàlid o no apunta a un "
+#~ "fitxer existent."
+
+#~ msgid "Man pages are not supported in this version."
+#~ msgstr "Les pàgines de manual no estan implementades en aquesta versió."
+
+#~ msgid "GNU info pages are not supported in this version"
+#~ msgstr "Les pàgines d'info GNU no estan implementades en aquesta versió"
+
+#~ msgid "Search is not supported in this version."
+#~ msgstr "Aquesta versió no implementa cerques."
+
+#~ msgid ""
+#~ "SGML documents are no longer supported. Please ask the author of the "
+#~ "document to convert to XML."
+#~ msgstr ""
+#~ "Els documents SGML ja no estan implementats. Demaneu a l'autor del "
+#~ "document que ho converteixi a XML."
+
+#~ msgid ""
+#~ "A transformation context could not be created for the file ‘%s’. The "
+#~ "format may not be supported."
+#~ msgstr ""
+#~ "No s'ha pogut crear un context de transformació per al fitxer «%s». Pot "
+#~ "ser que el format no estigui implementat."
+
+#~ msgid ""
+#~ "The section ‘%s’ does not exist in this document. If you were directed to "
+#~ "this section from a Help button in an application, please report this to "
+#~ "the maintainers of that application."
+#~ msgstr ""
+#~ "La secció «%s» no existeix en aquest document. Si se us ha dirigit a "
+#~ "aquesta secció a través d'un botó d'ajuda d'una aplicació, informeu "
+#~ "d'aquest error als mantenidors de l'aplicació."
+
+#~ msgid "Generating PDF is not currently supported"
+#~ msgstr "De moment no es poden generar PDF"
+
+#~ msgid ""
+#~ "You were trying to print to a printer using the \"%s\" driver. This "
+#~ "program requires a PostScript printer driver."
+#~ msgstr ""
+#~ "Heu intentat imprimir a una impressora amb el controlador «%s». Aquest "
+#~ "programa requereix un controlador PostScript per a la impressora."
+
+#~ msgid "_From:"
+#~ msgstr "_De:"
+
+#~ msgid "Sets the start of the range of pages to be printed"
+#~ msgstr "Establei l'inici del rang de pàgines a imprimir"
+
+#~ msgid "_To:"
+#~ msgstr "_A:"
+
+#~ msgid "Sets the end of the range of pages to be printed"
+#~ msgstr "Estableix el final del rang de pàgines a imprimir"
+
+#~ msgid ""
+#~ "Could not display help for Yelp.\n"
+#~ "%s"
+#~ msgstr ""
+#~ "No s'ha pogut mostrar l'ajuda del Yelp.\n"
+#~ "%s"
+
+#~ msgid "Library Functions"
+#~ msgstr "Funcions de biblioteques"
+
+#~ msgid "Administration"
+#~ msgstr "Administració"
+
+#~ msgid "Other"
+#~ msgstr "Altres"
+
+#~ msgid "Multimedia"
+#~ msgstr "Multimèdia"
+
+#~ msgid "Yelp Factory"
+#~ msgstr "Fàbrica del Yelp"
+
+#~ msgid "Could not activate Yelp: '%s'"
+#~ msgstr "No s'ha pogut activar el Yelp: «%s»"
+
+#~ msgid ""
+#~ "Your search could not be processed. There is no connection to the beagle "
+#~ "daemon."
+#~ msgstr ""
+#~ "No s'ha pogut processar la cerca. No hi ha connexció al dimoni beagle."
+
+#~ msgid "<b>_Bookmarks:</b>"
+#~ msgstr "<b>_Adreces d'interès:</b>"
+
+#~ msgid "<b>_Title:</b>"
+#~ msgstr "<b>_Títol:</b>"
+
+#~ msgid "Go to home view"
+#~ msgstr "Vés a la pàgina inicial"
+
+#~ msgid "Development Environments"
+#~ msgstr "Entorns de desenvolupament"
+
+#~ msgid "Games and Entertainment"
+#~ msgstr "Jocs i entreteniment"
+
+#~ msgid "General"
+#~ msgstr "General"
+
+#~ msgid "Kernels"
+#~ msgstr "Nuclis"
+
+#~ msgid "Office and Productivity Applications"
+#~ msgstr "Oficina i aplicacions de productivitat"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "Titlepage"
+#~ msgstr "Pàgina de títol"
+
+#~ msgid "The selected document could not be opened"
+#~ msgstr "No s'ha pogut obrir el document seleccionat"
+
+#~ msgid "The table of contents could not be read."
+#~ msgstr "No s'ha pogut llegir la taula de continguts."
+
+#~ msgid "DocBook SGML documents are no longer supported."
+#~ msgstr "Els documents DocBook SGML ja no són suportats."
+
+#~ msgid "X11"
+#~ msgstr "X11"
+
+#~ msgid "OpenSSL"
+#~ msgstr "OpenSSL"
+
+#~ msgid "Termcap"
+#~ msgstr "Termcap"
+
+#~ msgid "Perl"
+#~ msgstr "Perl"
+
+#~ msgid "TIFF"
+#~ msgstr "TIFF"
+
+#~ msgid "PThreads"
+#~ msgstr "PThreads"
+
+#~ msgid "Categories"
+#~ msgstr "Categories"
+
+#~ msgid "Documents"
+#~ msgstr "Documents"
+
+#~ msgid "&#8216;"
+#~ msgstr "&#8216;"
+
+#~ msgid "&#8217;"
+#~ msgstr "&#8217;"
+
+#~ msgid "&#8220;"
+#~ msgstr "&#8220;"
+
+#~ msgid "&#8221;"
+#~ msgstr "&#8221;"
+
+#~ msgid "About This Article"
+#~ msgstr "Quant a aquest article"
+
+#~ msgid "About This Bibliography"
+#~ msgstr "Quant a aquesta bibliografia"
+
+#~ msgid "About This Book"
+#~ msgstr "Quant a aquest llibre"
+
+#~ msgid "About This Chapter"
+#~ msgstr "Quant a aquest capítol"
+
+#~ msgid "About This Entry"
+#~ msgstr "Quant a aquesta entrada"
+
+#~ msgid "About This Glossary"
+#~ msgstr "Quant a aquest glossari"
+
+#~ msgid "About This Index"
+#~ msgstr "Quant a aquest índex"
+
+#~ msgid "About This Part"
+#~ msgstr "Quant a aquesta part"
+
+#~ msgid "About This Reference"
+#~ msgstr "Quant a aquesta referència"
+
+#~ msgid "About This Section"
+#~ msgstr "Quant a aquesta secció"
+
+#~ msgid "Affiliation"
+#~ msgstr "Afiliació"
+
+#~ msgid "Appendix"
+#~ msgstr "Apèndix"
+
+#~ msgid "Audience"
+#~ msgstr "Audiència"
+
+#~ msgid "Author"
+#~ msgstr "Autor"
+
+#~ msgid "Authors"
+#~ msgstr "Autors"
+
+#~ msgid "Collaborators"
+#~ msgstr "Col·laboradors"
+
+#~ msgid "Colophon"
+#~ msgstr "Colofó"
+
+#~ msgid "Copyright"
+#~ msgstr "Copyright"
+
+#~ msgid "Copyrights"
+#~ msgstr "Copyrights"
+
+#~ msgid "Example"
+#~ msgstr "Exemple"
+
+#~ msgid "Figure"
+#~ msgstr "Imatge"
+
+#~ msgid "Glossary"
+#~ msgstr "Glossari"
+
+#~ msgid "Important"
+#~ msgstr "Important"
+
+#~ msgid "Index"
+#~ msgstr "Índex"
+
+#~ msgid "Legal Notice"
+#~ msgstr "Nota legal"
+
+#~ msgid "Level"
+#~ msgstr "Nivell"
+
+#~ msgid "Message Audience"
+#~ msgstr "Audiència del missatge"
+
+#~ msgid "Message Level"
+#~ msgstr "Nivell del missatge"
+
+#~ msgid "Message Origin"
+#~ msgstr "Origen del missatge"
+
+#~ msgid "Note"
+#~ msgstr "Nota"
+
+#~ msgid "Origin"
+#~ msgstr "Origen"
+
+#~ msgid "Other Contributor"
+#~ msgstr "Altre contribuïdor"
+
+#~ msgid "Other Contributors"
+#~ msgstr "Altres contribuïdors"
+
+#~ msgid "Part"
+#~ msgstr "Part"
+
+#~ msgid "Preface"
+#~ msgstr "Prefaci"
+
+#~ msgid "Publishers"
+#~ msgstr "Editors"
+
+#~ msgid "Reference Entry"
+#~ msgstr "Entrada de referència"
+
+#~ msgid "Reference Section"
+#~ msgstr "Secció de referència"
+
+#~ msgid "Release Information"
+#~ msgstr "Informació del llançament"
+
+#~ msgid "See"
+#~ msgstr "Vegeu"
+
+#~ msgid "Set Index"
+#~ msgstr "Estableix l'índex"
+
+#~ msgid "Table"
+#~ msgstr "Taula"
+
+#~ msgid "Table of Contents"
+#~ msgstr "Taula de continguts"
+
+#~ msgid "Tip"
+#~ msgstr "Suggeriment"
+
+#~ msgid "Document URI"
+#~ msgstr "URI del document"
+
+#~ msgid "The URI of the document to be processed"
+#~ msgstr "L'URI del document a processar"
+
+#~ msgid "/Edit/Find Ne_xt"
+#~ msgstr "/Edita/Cerca el se_güent"
+
+#~ msgid "/Edit/Find Pre_vious"
+#~ msgstr "/Edita/Cerca l'an_terior"
+
+#~ msgid "/Go/_Back"
+#~ msgstr "/Vés/_Endarrere"
+
+#~ msgid "/Go/_Forward"
+#~ msgstr "/Vés/E_ndavant"
+
+#~ msgid "/Go/_Home"
+#~ msgstr "/Vés/_Pàgina inicial"
+
+#~ msgid "/Go/"
+#~ msgstr "/Vés/"
+
+#~ msgid "/Go/_Contents"
+#~ msgstr "/Vés/_Continguts"
+
+#~ msgid "A Help Browser for GNOME"
+#~ msgstr "Navegador d'ajuda per al GNOME"
+
+#~ msgid "<b>Find text in the document:</b>"
+#~ msgstr "<b>Cerca text en el document:</b>"
+
+#~ msgid "Automatically _wrap around"
+#~ msgstr "A_justa automàticament"
+
+#~ msgid "Match _entire word"
+#~ msgstr "Coincideix amb paraules s_enceres"
+
+#~ msgid "_Match upper/lower case"
+#~ msgstr "Distingueix entre _majúscules i minúscules"
+
+#~ msgid "GNOME - Desktop"
+#~ msgstr "GNOME - Escriptori"
+
+#~ msgid "Additional documents"
+#~ msgstr "Documents addicionals"
+
+#~ msgid "GNOME is"
+#~ msgstr "GNOME és"
+
+#~ msgid "(C)"
+#~ msgstr "©"
+
+#~ msgid "Previous"
+#~ msgstr "Anterior"
+
+#~ msgid "Next"
+#~ msgstr "Següent"
+
+#~ msgid "Search in the index"
+#~ msgstr "Cerca en l'índex"
+
+#~ msgid ""
+#~ "Error while parsing the stylesheet, make sure you have your docbook "
+#~ "environment setup correctly."
+#~ msgstr ""
+#~ "Error al analitzar la sintaxi de la fulla d'estil, assegureu-vos de que "
+#~ "teniu docbook correctament configurat."
+
+#~ msgid "Error while applying the stylesheet."
+#~ msgstr "Error al aplicar la fulla d'estil."
+
+#~ msgid "info"
+#~ msgstr "info"
+
+#~ msgid "man"
+#~ msgstr "man"
diff --git a/po/crh.po b/po/crh.po
new file mode 100644
index 00000000..5e40a607
--- /dev/null
+++ b/po/crh.po
@@ -0,0 +1,1850 @@
+# QIRIMTATARCA yelp.
+# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+#
+# Reşat SABIQ <tilde.birlik@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: yelp.TRUNK\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-30 09:40+0300\n"
+"PO-Revision-Date: 2010-04-16 00:28-0500\n"
+"Last-Translator: Reşat SABIQ <tilde.birlik@gmail.com>\n"
+"Language-Team: QIRIMTATARCA (Qırım Türkçesi) <tilde-birlik-tercime@lists."
+"sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/info.xml.in.h:1
+# tr
+msgid "GNU Info Pages"
+msgstr "GNU Bilgi Sayfaları"
+
+#: ../data/info.xml.in.h:2
+# tr
+msgid "Traditional command line help (info)"
+msgstr "Geleneksek komut satırı yardımı (info)"
+
+#: ../data/man.xml.in.h:1
+# tr
+msgid "Applications"
+msgstr "Uygulamalar"
+
+#: ../data/man.xml.in.h:2
+# tr
+msgid "BLT Functions"
+msgstr "BLT İşlevleri"
+
+#: ../data/man.xml.in.h:3
+# tr
+msgid "Configuration Files"
+msgstr "Yapılandırma Dosyaları"
+
+#: ../data/man.xml.in.h:4
+# tr
+msgid "Curses Functions"
+msgstr "Curses İşlevleri"
+
+#: ../data/man.xml.in.h:5 ../data/toc.xml.in.h:35
+# tr
+msgid "Development"
+msgstr "Geliştirme"
+
+#: ../data/man.xml.in.h:6
+# tr
+msgid "FORTRAN Functions"
+msgstr "FORTRAN İşlevleri"
+
+#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:56
+# tr
+msgid "Games"
+msgstr "Oyunlar"
+
+#: ../data/man.xml.in.h:8
+# tr
+msgid "Hardware Devices"
+msgstr "Donanım Aygıtları"
+
+#: ../data/man.xml.in.h:9
+# tr
+msgid "Kernel Routines"
+msgstr "Çekirdek Yordamları"
+
+#: ../data/man.xml.in.h:10
+# tr
+msgid "Manual Pages"
+msgstr "Kılavuz Sayfaları"
+
+#: ../data/man.xml.in.h:11
+# tr
+msgid "Network Audio Sound Functions"
+msgstr "Ağ Sesi İşitsel İşlevleri"
+
+#: ../data/man.xml.in.h:12
+# tr
+msgid "OpenSSL Applications"
+msgstr "OpenSSL Uygulamaları"
+
+#: ../data/man.xml.in.h:13
+# tr
+msgid "OpenSSL Configuration"
+msgstr "OpenSSL Yapılandırması"
+
+#: ../data/man.xml.in.h:14
+# tr
+msgid "OpenSSL Functions"
+msgstr "OpenSSL İşlevleri"
+
+#: ../data/man.xml.in.h:15
+# tr
+msgid "OpenSSL Overviews"
+msgstr "OpenSSL İzlenimleri"
+
+#: ../data/man.xml.in.h:16
+# tr
+msgid "Overviews"
+msgstr "İzlenimler"
+
+#: ../data/man.xml.in.h:17
+# tr
+msgid "POSIX Functions"
+msgstr "POSIX İşlevleri"
+
+#: ../data/man.xml.in.h:18
+# tr
+msgid "POSIX Headers"
+msgstr "POSIX Başlıkları"
+
+#: ../data/man.xml.in.h:19
+# tr
+msgid "Perl Functions"
+msgstr "Perl İşlevleri"
+
+#: ../data/man.xml.in.h:20
+# tr
+msgid "Qt Functions"
+msgstr "Qt İşlevleri"
+
+#: ../data/man.xml.in.h:21
+# tr
+msgid "Readline Functions"
+msgstr "Readline İşlevleri"
+
+#: ../data/man.xml.in.h:22
+# tr
+msgid "Section 0p"
+msgstr "Bölüm 0p"
+
+#: ../data/man.xml.in.h:23
+# tr
+msgid "Section 1m"
+msgstr "Bölüm 1m"
+
+#: ../data/man.xml.in.h:24
+# tr
+msgid "Section 1ssl"
+msgstr "Bölüm 1ssl"
+
+#: ../data/man.xml.in.h:25
+# tr
+msgid "Section 1x"
+msgstr "Bölüm 1x"
+
+#: ../data/man.xml.in.h:26
+# tr
+msgid "Section 2"
+msgstr "Bölüm 2"
+
+#: ../data/man.xml.in.h:27
+# tr
+msgid "Section 3blt"
+msgstr "Bölüm 3bit"
+
+#: ../data/man.xml.in.h:28
+# tr
+msgid "Section 3f"
+msgstr "Bölüm 3f"
+
+#: ../data/man.xml.in.h:29
+# tr
+msgid "Section 3nas"
+msgstr "Bölüm 3nas"
+
+#: ../data/man.xml.in.h:30
+# tr
+msgid "Section 3p"
+msgstr "Bölüm 3p"
+
+#: ../data/man.xml.in.h:31
+# tr
+msgid "Section 3qt"
+msgstr "Bölüm 3qt"
+
+#: ../data/man.xml.in.h:32
+# tr
+msgid "Section 3readline"
+msgstr "Bölüm 3readline"
+
+#: ../data/man.xml.in.h:33
+# tr
+msgid "Section 3ssl"
+msgstr "Bölüm 3ssl"
+
+#: ../data/man.xml.in.h:34
+# tr
+msgid "Section 3tiff"
+msgstr "Bölüm 3tiff"
+
+#: ../data/man.xml.in.h:35
+# tr
+msgid "Section 4"
+msgstr "Bölüm 4"
+
+#: ../data/man.xml.in.h:36
+# tr
+msgid "Section 4x"
+msgstr "Bölüm 4x"
+
+#: ../data/man.xml.in.h:37
+# tr
+msgid "Section 5"
+msgstr "Bölüm 5"
+
+#: ../data/man.xml.in.h:38
+# tr
+msgid "Section 5ssl"
+msgstr "Bölüm 5ssl"
+
+#: ../data/man.xml.in.h:39
+# tr
+msgid "Section 5x"
+msgstr "Bölüm 5x"
+
+#: ../data/man.xml.in.h:40
+# tr
+msgid "Section 6"
+msgstr "Bölüm 6"
+
+#: ../data/man.xml.in.h:41
+# tr
+msgid "Section 6x"
+msgstr "Bölüm 6x"
+
+#: ../data/man.xml.in.h:42
+# tr
+msgid "Section 7ssl"
+msgstr "Bölüm 7ssl"
+
+#: ../data/man.xml.in.h:43
+# tr
+msgid "Section 7x"
+msgstr "Bölüm 7x"
+
+#: ../data/man.xml.in.h:44
+# tr
+msgid "Section 9"
+msgstr "Bölüm 9"
+
+#: ../data/man.xml.in.h:45
+# tr
+msgid "Sections 1, 1p, 1g and 1t"
+msgstr "Bölüm 1, 1p, 1g ve 1t"
+
+#: ../data/man.xml.in.h:46
+# tr
+msgid "Sections 3, 3o, and 3t"
+msgstr "Bölüm 3, 3o ve 3t"
+
+#: ../data/man.xml.in.h:47
+# tr
+msgid "Sections 3form and 3menu"
+msgstr "Bölüm 3form ve 3menu"
+
+#: ../data/man.xml.in.h:48
+# tr
+msgid "Sections 3ncurses and 3curses"
+msgstr "Bölüm 3bcurses ve 3curses"
+
+#: ../data/man.xml.in.h:49
+# tr
+msgid "Sections 3pm and 3perl"
+msgstr "Bölüm 3pm ve 3perl"
+
+#: ../data/man.xml.in.h:50
+# tr
+msgid "Sections 3x and 3X11"
+msgstr "Bölüm 3x ve 3x11"
+
+#: ../data/man.xml.in.h:51
+# tr
+msgid "Sections 7 and 7gcc"
+msgstr "Bölüm 7 ve 7gcc"
+
+#: ../data/man.xml.in.h:52
+# tr
+msgid "Sections 8 and 8l"
+msgstr "Bölüm 8 ve 8l"
+
+#: ../data/man.xml.in.h:53
+# tr
+msgid "System Administration"
+msgstr "Sistem Yönetimi"
+
+#: ../data/man.xml.in.h:54
+# tr
+msgid "System Calls"
+msgstr "Sistem Çağrıları"
+
+#: ../data/man.xml.in.h:55
+# tr
+msgid "System V Form/Menu Functions"
+msgstr "Sistem V From/Menü İşlevleri"
+
+#: ../data/man.xml.in.h:56
+# tr
+msgid "TIFF Functions"
+msgstr "TIFF İşlevleri"
+
+#: ../data/man.xml.in.h:57
+# tr
+msgid "Termcap Applications"
+msgstr "Termcap Uygulamaları"
+
+#: ../data/man.xml.in.h:58
+# tr
+msgid "Traditional command line help (man)"
+msgstr "Geleneksel komut satırı yardımı (man)"
+
+#: ../data/man.xml.in.h:59
+# tr
+msgid "X11 Applications"
+msgstr "X11 Uygulamaları"
+
+#: ../data/man.xml.in.h:60
+# tr
+msgid "X11 Configuration"
+msgstr "X11 Yapılandırması"
+
+#: ../data/man.xml.in.h:61
+# tr
+msgid "X11 Devices"
+msgstr "X11 Aygıtları"
+
+#: ../data/man.xml.in.h:62
+# tr
+msgid "X11 Functions"
+msgstr "X11 İşlevleri"
+
+#: ../data/man.xml.in.h:63
+# tr
+msgid "X11 Games"
+msgstr "X11 Oyunları"
+
+#: ../data/man.xml.in.h:64
+# tr
+msgid "X11 Overviews"
+msgstr "X11 İzlenimleri"
+
+#: ../data/toc.xml.in.h:1
+# tr
+msgid "2D Graphics"
+msgstr "2B Grafikler"
+
+#: ../data/toc.xml.in.h:2
+# tr
+msgid "3D Graphics"
+msgstr "3B Grafikler"
+
+#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+# tr
+msgid "Accessibility"
+msgstr "Erişilebilirlik"
+
+#: ../data/toc.xml.in.h:4
+# tr
+msgid "Action Games"
+msgstr "Aksiyon Oyunları"
+
+#: ../data/toc.xml.in.h:5
+# tr
+msgid "Adventure Games"
+msgstr "Macera Oyunları"
+
+#: ../data/toc.xml.in.h:6
+# tr
+msgid "Amusement"
+msgstr "Eğlence"
+
+#: ../data/toc.xml.in.h:7
+# tr
+msgid "Applications for viewing and manipulating graphics"
+msgstr "Grafik görüntülemesi ve yönetimi için uygulamalar"
+
+#: ../data/toc.xml.in.h:8
+# tr
+msgid "Applications related to audio and video"
+msgstr "Ses ve video ile ilgili uygulamalar"
+
+#: ../data/toc.xml.in.h:9
+# tr
+msgid "Applications that teach or aid in learning"
+msgstr "Öğreten ya da öğrenmeye yardım eden uygulamalar"
+
+#: ../data/toc.xml.in.h:10
+# tr
+msgid "Arcade Games"
+msgstr "Atari Oyunları"
+
+#: ../data/toc.xml.in.h:11
+# tr
+msgid "Archiving Tools"
+msgstr "Arşivleme Araçları"
+
+#: ../data/toc.xml.in.h:12
+# tr
+msgid "Art"
+msgstr "Sanat"
+
+#: ../data/toc.xml.in.h:13
+# tr
+msgid "Artificial Intelligence"
+msgstr "Yapay Zeka"
+
+#: ../data/toc.xml.in.h:14
+# tr
+msgid "Astronomy"
+msgstr "Astronomi"
+
+#: ../data/toc.xml.in.h:15
+# tr
+msgid "Biology"
+msgstr "Biyoloji"
+
+#: ../data/toc.xml.in.h:16
+# tr
+msgid "Blocks Games"
+msgstr "Blok Oyunları"
+
+#: ../data/toc.xml.in.h:17
+# tr
+msgid "Board Games"
+msgstr "Tahta Oyunları"
+
+#: ../data/toc.xml.in.h:18
+# tr
+msgid "Building"
+msgstr "İnşa"
+
+#: ../data/toc.xml.in.h:19
+msgid "Calculator"
+msgstr "Esaplayıcı"
+
+#: ../data/toc.xml.in.h:20
+# tr
+msgid "Calendar"
+msgstr "Takvim"
+
+#: ../data/toc.xml.in.h:21
+# tr
+msgid "Card Games"
+msgstr "Kağıt Oyunları"
+
+#: ../data/toc.xml.in.h:22
+# tr
+msgid "Charting Tools"
+msgstr "Grafik Araçları"
+
+#: ../data/toc.xml.in.h:23
+# tr
+msgid "Chat"
+msgstr "Sohbet"
+
+#: ../data/toc.xml.in.h:24
+# tr
+msgid "Chemistry"
+msgstr "Kimya"
+
+#: ../data/toc.xml.in.h:25
+# tr
+msgid "Clocks"
+msgstr "Saatler"
+
+#: ../data/toc.xml.in.h:26
+# tr
+msgid "Compression Tools"
+msgstr "Sıkıştırma Araçları"
+
+#: ../data/toc.xml.in.h:27
+# tr
+msgid "Computer Science"
+msgstr "Bilgisayar Bilimi"
+
+#: ../data/toc.xml.in.h:28
+# tr
+msgid "Construction"
+msgstr "İnşaat"
+
+#: ../data/toc.xml.in.h:29
+# tr
+msgid "Contact Management"
+msgstr "Bağlantı Yönetimi"
+
+#: ../data/toc.xml.in.h:30
+# tr
+msgid "Data Visualization"
+msgstr "Veri Görselleştirme"
+
+#: ../data/toc.xml.in.h:31
+# tr
+msgid "Databases"
+msgstr "Veritabanları"
+
+#: ../data/toc.xml.in.h:32
+# tr
+msgid "Debuggers"
+msgstr "Hata Ayıklayıcılar"
+
+#: ../data/toc.xml.in.h:33
+# tr
+msgid "Desktop"
+msgstr "Masaüstü"
+
+#: ../data/toc.xml.in.h:34
+# tr
+msgid "Desktop Settings"
+msgstr "Masaüstü Ayarları"
+
+#: ../data/toc.xml.in.h:36
+# tr
+msgid "Dialup"
+msgstr "Çevirmeli"
+
+#: ../data/toc.xml.in.h:37
+# tr
+msgid "Dictionaries"
+msgstr "Sözlükler"
+
+#. Translators: this is a menu title for burning audio and video to dics
+#: ../data/toc.xml.in.h:39
+# tr
+msgid "Disc Burning"
+msgstr "Disk Yazma"
+
+#: ../data/toc.xml.in.h:40
+# tr
+msgid "Economy"
+msgstr "Ekonomi"
+
+#: ../data/toc.xml.in.h:41
+# tr
+msgid "Education"
+msgstr "Eğitim"
+
+#: ../data/toc.xml.in.h:42
+# tr
+msgid "Electricity"
+msgstr "Elektrik"
+
+#: ../data/toc.xml.in.h:43
+# tr
+msgid "Electronics"
+msgstr "Elektronik"
+
+#: ../data/toc.xml.in.h:44
+# tr
+msgid "Email Tools"
+msgstr "E-posta Araçları"
+
+#: ../data/toc.xml.in.h:45
+# tr
+msgid "Emulator"
+msgstr "Emülatör"
+
+#: ../data/toc.xml.in.h:46
+# tr
+msgid "Engineering"
+msgstr "Mühendislik"
+
+#: ../data/toc.xml.in.h:47
+msgid "File Manager"
+msgstr "Dosye İdarecisi"
+
+#: ../data/toc.xml.in.h:48
+msgid "File Tools"
+msgstr "Dosye Aletleri"
+
+#: ../data/toc.xml.in.h:49
+# tr
+msgid "File Transfer"
+msgstr "Dosya Transferi"
+
+#: ../data/toc.xml.in.h:50
+# tr
+msgid "Filesystem"
+msgstr "Dosya Sistemi"
+
+#: ../data/toc.xml.in.h:51
+# tr
+msgid "Financial Tools"
+msgstr "Finansal Araçlar"
+
+#: ../data/toc.xml.in.h:52
+# tr
+msgid "Flow Charting Tools"
+msgstr "Akışı Şeması Araçları"
+
+#: ../data/toc.xml.in.h:53
+# tr
+msgid "GNOME Applications"
+msgstr "GNOME Uygulamaları"
+
+#: ../data/toc.xml.in.h:54
+# tr
+msgid "GTK"
+msgstr "GTK"
+
+#: ../data/toc.xml.in.h:55
+# tr
+msgid "GUI Designers"
+msgstr "Arayüz Tasarımcıları"
+
+#: ../data/toc.xml.in.h:57
+# tr
+msgid "Generic applications for the GNOME environment"
+msgstr "GNOME ortamı için genel uygulamalar"
+
+#: ../data/toc.xml.in.h:58
+# tr
+msgid "Generic applications for the KDE environment"
+msgstr "KDE Masaüstü Ortamı'na özgü uygulamalar"
+
+#: ../data/toc.xml.in.h:59
+# tr
+msgid "Geography"
+msgstr "Coğrafya"
+
+#: ../data/toc.xml.in.h:60
+# tr
+msgid "Geology"
+msgstr "Jeoloji"
+
+#: ../data/toc.xml.in.h:61
+# tr
+msgid "Geoscience"
+msgstr "Yerbilimi"
+
+#: ../data/toc.xml.in.h:62
+# tr
+msgid "Graphics"
+msgstr "Grafik"
+
+#: ../data/toc.xml.in.h:63
+# tr
+msgid "Guides and manuals for applications that connect to the outside world"
+msgstr "Dış dünyaya bağlanma uygulamaları için kılavuzlar ve el kitapları"
+
+#: ../data/toc.xml.in.h:64
+# tr
+msgid "Guides for getting involved in development"
+msgstr "Geliştirici olmak için kılavuzlar"
+
+#: ../data/toc.xml.in.h:65
+# tr
+msgid "Ham Radio"
+msgstr "Ham Radyo"
+
+#: ../data/toc.xml.in.h:66
+# tr
+msgid "Hardware Settings"
+msgstr "Donanım Ayarları"
+
+#: ../data/toc.xml.in.h:67
+# tr
+msgid "Have some fun"
+msgstr "Biraz eğlen"
+
+#: ../data/toc.xml.in.h:68
+# tr
+msgid "History"
+msgstr "Tarih"
+
+#: ../data/toc.xml.in.h:69
+# tr
+msgid "IDEs"
+msgstr "IDE'ler"
+
+#: ../data/toc.xml.in.h:70
+# tr
+msgid "IRC Clients"
+msgstr "IRC İstemcileri"
+
+#: ../data/toc.xml.in.h:71
+# tr
+msgid "Image Processing"
+msgstr "Görüntü İşlem"
+
+#: ../data/toc.xml.in.h:72
+# tr
+msgid "Instant Messaging"
+msgstr "Anında Mesajlaşma"
+
+#: ../data/toc.xml.in.h:73
+# tr
+msgid "Internet"
+msgstr "İnternet"
+
+#: ../data/toc.xml.in.h:74
+# tr
+msgid "Java"
+msgstr "Java"
+
+#: ../data/toc.xml.in.h:75
+# tr
+msgid "KDE Applications"
+msgstr "KDE Uygulamaları"
+
+#: ../data/toc.xml.in.h:76
+# tr
+msgid "Kids Games"
+msgstr "Çocuk Oyunları"
+
+#: ../data/toc.xml.in.h:77
+# tr
+msgid ""
+"Learn more about making your system more accessible for a range of "
+"disabilities"
+msgstr ""
+"Sisteminizi bir takım engeller için daha erişebilir yapabilme hakkında daha "
+"fazla bilgi öğrenin"
+
+#: ../data/toc.xml.in.h:78
+# tr
+msgid "Licenses"
+msgstr "Lisanslar"
+
+#: ../data/toc.xml.in.h:79
+# tr
+msgid "Literature"
+msgstr "Edebiyat"
+
+#: ../data/toc.xml.in.h:80
+# tr
+msgid "Logic Games"
+msgstr "Mantık Oyunları"
+
+#: ../data/toc.xml.in.h:81
+# tr
+msgid "Math"
+msgstr "Matematik"
+
+#: ../data/toc.xml.in.h:82
+# tr
+msgid "Medical Software"
+msgstr "Medikal Yazılım"
+
+#: ../data/toc.xml.in.h:83
+# tr
+msgid "Midi"
+msgstr "Midi"
+
+#: ../data/toc.xml.in.h:84
+# tr
+msgid "Miscellaneous Documentation"
+msgstr "Çeşitli Belgeler"
+
+#: ../data/toc.xml.in.h:85
+# tr
+msgid "Mixers"
+msgstr "Karıştırıcılar"
+
+#: ../data/toc.xml.in.h:86
+# tr
+msgid "Monitor"
+msgstr "Ekran"
+
+#: ../data/toc.xml.in.h:87
+# tr
+msgid "Motif"
+msgstr "Motif"
+
+#: ../data/toc.xml.in.h:88
+# tr
+msgid "Music"
+msgstr "Müzik"
+
+#: ../data/toc.xml.in.h:89
+# tr
+msgid "News"
+msgstr "Haberler"
+
+#: ../data/toc.xml.in.h:90
+# tr
+msgid "Numerical Analysis"
+msgstr "Sayısal Analiz"
+
+#: ../data/toc.xml.in.h:91
+# tr
+msgid "OCR"
+msgstr "OCR"
+
+#: ../data/toc.xml.in.h:92
+# tr
+msgid "Office Applications"
+msgstr "Ofis Uygulamaları"
+
+#: ../data/toc.xml.in.h:93
+# tr
+msgid "Office applications"
+msgstr "Ofis uygulamaları"
+
+#: ../data/toc.xml.in.h:94
+# tr
+msgid "Other Documentation"
+msgstr "Diğer Belgelendirmeler"
+
+#: ../data/toc.xml.in.h:95
+# tr
+msgid "P2P"
+msgstr "P2P"
+
+#: ../data/toc.xml.in.h:96
+# tr
+msgid "PDA Communication"
+msgstr "PDA İletişimi"
+
+#: ../data/toc.xml.in.h:97
+# tr
+msgid "Package Manager"
+msgstr "Paket Yöneticisi"
+
+#: ../data/toc.xml.in.h:98
+# tr
+msgid "Parallel Computing"
+msgstr "Paralel Bilişim"
+
+#: ../data/toc.xml.in.h:99
+# tr
+msgid "Photography"
+msgstr "Fotoğrafçılık"
+
+#: ../data/toc.xml.in.h:100
+# tr
+msgid "Physics"
+msgstr "Fizik"
+
+#. Translators: this is a menu title for audio and video players
+#: ../data/toc.xml.in.h:102
+# tr
+msgid "Players"
+msgstr "Oyuncular"
+
+#: ../data/toc.xml.in.h:103
+# tr
+msgid "Presentation Tools"
+msgstr "Sunum Araçları"
+
+#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
+# tr
+msgid "Printing"
+msgstr "Yazdırma"
+
+#: ../data/toc.xml.in.h:105
+# tr
+msgid "Profiling Tools"
+msgstr "Profil Çıkarma Araçları"
+
+#: ../data/toc.xml.in.h:106
+# tr
+msgid "Project Management Tools"
+msgstr "Proje Yönetim Araçları"
+
+#: ../data/toc.xml.in.h:107
+# tr
+msgid "Publishing"
+msgstr "Yayımcılık"
+
+#: ../data/toc.xml.in.h:108
+# tr
+msgid "Qt"
+msgstr "Qt"
+
+#: ../data/toc.xml.in.h:109
+# tr
+msgid "Raster Graphics"
+msgstr "Taramalı Grafikler"
+
+#. Translators: this is a menu title for audio and video recorders
+#: ../data/toc.xml.in.h:111
+# tr
+msgid "Recorders"
+msgstr "Kaydediciler"
+
+#: ../data/toc.xml.in.h:112
+# tr
+msgid "Remote Access"
+msgstr "Uzaktan Erişim"
+
+#: ../data/toc.xml.in.h:113
+# tr
+msgid "Revision Control"
+msgstr "Sürüm Kontrolü"
+
+#: ../data/toc.xml.in.h:114
+# tr
+msgid "Robotics"
+msgstr "Robot Bilimi"
+
+#: ../data/toc.xml.in.h:115
+# tr
+msgid "Role Playing Games"
+msgstr "Rol Oynama Oyunları"
+
+#: ../data/toc.xml.in.h:116
+# tr
+msgid "Scanning"
+msgstr "Tarama"
+
+#: ../data/toc.xml.in.h:117
+# tr
+msgid "Science"
+msgstr "Bilim"
+
+#: ../data/toc.xml.in.h:118
+# tr
+msgid "Security"
+msgstr "Güvenlik"
+
+#: ../data/toc.xml.in.h:119
+# tr
+msgid "Sequencers"
+msgstr "Diziciler"
+
+#: ../data/toc.xml.in.h:120
+# tr
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: ../data/toc.xml.in.h:121
+# tr
+msgid "Settings users can manipulate to make their environment more pleasant"
+msgstr ""
+"Ortamlarını daha çekici yapabillmek için kullanıcıların değiştirebilecekleri "
+"ayarlar"
+
+#: ../data/toc.xml.in.h:122
+# tr
+msgid "Simulation Games"
+msgstr "Simülasyon Oyunları"
+
+#: ../data/toc.xml.in.h:123
+# tr
+msgid "Sound"
+msgstr "Ses"
+
+#: ../data/toc.xml.in.h:124
+# tr
+msgid "Sound &amp; Video"
+msgstr "Ses ve Video"
+
+#: ../data/toc.xml.in.h:125
+# tr
+msgid "Sound &amp; Video Editing"
+msgstr "Ses &amp; Video Düzenleme"
+
+#: ../data/toc.xml.in.h:126
+# tr
+msgid "Sports"
+msgstr "Spor"
+
+#: ../data/toc.xml.in.h:127
+# tr
+msgid "Sports Games"
+msgstr "Spor Oyunları"
+
+#: ../data/toc.xml.in.h:128
+# tr
+msgid "Spreadsheet Tools"
+msgstr "Çizelge Araçları"
+
+#: ../data/toc.xml.in.h:129
+# tr
+msgid "Strategy Games"
+msgstr "Strateji Oyunları"
+
+#: ../data/toc.xml.in.h:130
+# tr
+msgid "System"
+msgstr "Sistem"
+
+#: ../data/toc.xml.in.h:131
+# tr
+msgid "TV"
+msgstr "TV"
+
+#: ../data/toc.xml.in.h:132
+# tr
+msgid "Telephony"
+msgstr "Telefon"
+
+#: ../data/toc.xml.in.h:133
+# tr
+msgid "Telephony Tools"
+msgstr "Telefon Araçları"
+
+#: ../data/toc.xml.in.h:134
+# tr
+msgid "Terminal Emulator"
+msgstr "Uçbirim Emülatörü"
+
+#: ../data/toc.xml.in.h:135
+# tr
+msgid "Text Editors"
+msgstr "Metin Düzenleyici"
+
+#: ../data/toc.xml.in.h:136
+# tr
+msgid "Text Tools"
+msgstr "Metin Araçları"
+
+#: ../data/toc.xml.in.h:137
+# tr
+msgid "Tools to help you manage your computer"
+msgstr "Bilgisayarınızı yönetmeye yardımcı araçlar"
+
+#: ../data/toc.xml.in.h:138
+# tr
+msgid "Translation Tools"
+msgstr "Çeviri Araçları"
+
+#: ../data/toc.xml.in.h:139
+# tr
+msgid "Tuners"
+msgstr "Ayarlayıcılar"
+
+#: ../data/toc.xml.in.h:140
+# tr
+msgid "Utilities"
+msgstr "Araçlar"
+
+#: ../data/toc.xml.in.h:141
+# tr
+msgid "Utilities to help you get work done"
+msgstr "İşinizi tamamlamak için yardımcı araçlar"
+
+#: ../data/toc.xml.in.h:142
+# tr
+msgid "Vector Graphics"
+msgstr "Vektörel Grafikler"
+
+#: ../data/toc.xml.in.h:143
+# tr
+msgid "Video"
+msgstr "Video"
+
+#: ../data/toc.xml.in.h:144
+# tr
+msgid "Video Conference"
+msgstr "Video Konferans"
+
+#. Translators: This is a menu title for graphics viewing applications
+#: ../data/toc.xml.in.h:146
+# tr
+msgid "Viewer"
+msgstr "İzleyici"
+
+#: ../data/toc.xml.in.h:147
+# tr
+msgid "Web Browser"
+msgstr "Web Tarayıcı"
+
+#: ../data/toc.xml.in.h:148
+# tr
+msgid "Web Development"
+msgstr "Web Geliştirme"
+
+#: ../data/toc.xml.in.h:149
+# tr
+msgid "Welcome to the GNOME Help Browser"
+msgstr "GNOME Yardım Tarayıcısı'na Hoşgeldiniz"
+
+#: ../data/toc.xml.in.h:150
+# tr
+msgid "Word Processors"
+msgstr "Kelime İşlemci"
+
+#: ../data/ui/yelp-bookmarks.ui.h:1
+# tr
+msgid "Bookmarks"
+msgstr "Yer İmleri"
+
+#: ../data/ui/yelp-bookmarks.ui.h:2
+# tr
+msgid "Re_name"
+msgstr "Ye_niden Adlandır"
+
+#: ../data/ui/yelp-bookmarks.ui.h:3
+# tr
+msgid "_Bookmarks:"
+msgstr "_Yer İmleri:"
+
+#: ../data/ui/yelp-bookmarks-add.ui.h:1
+# tr
+msgid "Add Bookmark"
+msgstr "Yer İmi Ekle"
+
+#: ../data/ui/yelp-bookmarks-add.ui.h:2
+# tr
+msgid "_Title:"
+msgstr "_Başlık:"
+
+#: ../data/ui/yelp-open-location.ui.h:1
+# tr
+msgid "Open Location"
+msgstr "Konumu Aç"
+
+#: ../data/ui/yelp-open-location.ui.h:2
+# tr
+msgid "_Location:"
+msgstr "_Konum:"
+
+#: ../data/ui/yelp-preferences.ui.h:2
+# tr
+msgid "Fonts"
+msgstr "Yazıtipleri"
+
+#: ../data/ui/yelp-preferences.ui.h:3
+# tr
+msgid "Preferences"
+msgstr "Tercihler"
+
+#: ../data/ui/yelp-preferences.ui.h:4
+# tr
+msgid "_Browse with caret"
+msgstr "İ_mleç ile tara"
+
+#: ../data/ui/yelp-preferences.ui.h:5
+# tr
+msgid "_Fixed width:"
+msgstr "_Sabit genişlik:"
+
+#: ../data/ui/yelp-preferences.ui.h:6
+# tr
+msgid "_Use system fonts"
+msgstr "_Sistem yazıtiplerini kullan"
+
+#: ../data/ui/yelp-preferences.ui.h:7
+# tr
+msgid "_Variable width:"
+msgstr "_Değişken genişlik:"
+
+#: ../data/yelp.schemas.in.h:1
+# tr
+msgid "Font for fixed text"
+msgstr "Sabit metin için yazıtipi"
+
+#: ../data/yelp.schemas.in.h:2
+# tr
+msgid "Font for text"
+msgstr "Metin için yazıtipi"
+
+#: ../data/yelp.schemas.in.h:3
+# tr
+msgid "Font for text with fixed width."
+msgstr "Sabit genişlikli metin için yazıtipi."
+
+#: ../data/yelp.schemas.in.h:4
+# tr
+msgid "Font for text with variable width."
+msgstr "Değişken genişlikli metin için yazıtipi."
+
+#: ../data/yelp.schemas.in.h:5
+# tr
+msgid "Use a keyboard-controllable caret when viewing pages."
+msgstr "Sayfaları izlerken klavye kontrollü imleci kullan."
+
+#: ../data/yelp.schemas.in.h:6
+# tr
+msgid "Use caret"
+msgstr "İmleç kullan"
+
+#: ../data/yelp.schemas.in.h:7
+# tr
+msgid "Use system fonts"
+msgstr "Sistem yazıtiplerini kullan"
+
+#: ../data/yelp.schemas.in.h:8
+# tr
+msgid "Use the default fonts set for the system."
+msgstr "Sistem için öntanımlı yazıtiplerini kullan."
+
+#: ../src/eggdesktopfile.c:165
+msgid "File is not a valid .desktop file"
+msgstr "Dosye keçerli bir .desktop dosyesi degildir"
+
+#: ../src/eggdesktopfile.c:188
+# tr
+msgid "Unrecognized desktop file Version '%s'"
+msgstr "Tanınmayan masaüstü dosyası Sürüm '%s'"
+
+#: ../src/eggdesktopfile.c:958
+# tr
+msgid "Starting %s"
+msgstr "%s başlatılıyor"
+
+#: ../src/eggdesktopfile.c:1100
+# tr
+msgid "Application does not accept documents on command line"
+msgstr "Uygulama komut satırında belgeleri kabul etmez"
+
+#: ../src/eggdesktopfile.c:1168
+# tr
+msgid "Unrecognized launch option: %d"
+msgstr "Tanınmayan başlatma seçeneği: %d"
+
+#: ../src/eggdesktopfile.c:1373
+# tr
+msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+msgstr "Bir 'Type=Link' masaüstü girişine belge URI'leri geçilemez"
+
+#: ../src/eggdesktopfile.c:1392
+# tr
+msgid "Not a launchable item"
+msgstr "Başlatılabilir bir öğe değil"
+
+#: ../src/eggsmclient.c:225
+# tr
+msgid "Disable connection to session manager"
+msgstr "Oturum yöneticisi bağlantısını devre dışı bırak"
+
+#: ../src/eggsmclient.c:228
+# tr
+msgid "Specify file containing saved configuration"
+msgstr "Kaydedilen yapılandırmayı içeren dosyayı belirtin"
+
+#: ../src/eggsmclient.c:228
+# tr
+msgid "FILE"
+msgstr "DOSYA"
+
+#: ../src/eggsmclient.c:231
+# tr
+msgid "Specify session management ID"
+msgstr "Oturum yönetimi kimliğini belirtin"
+
+#: ../src/eggsmclient.c:231
+# tr
+msgid "ID"
+msgstr "ID"
+
+#: ../src/eggsmclient.c:252
+# tr
+msgid "Session management options:"
+msgstr "Oturum yönetimi seçenekleri:"
+
+#: ../src/eggsmclient.c:253
+# tr
+msgid "Show session management options"
+msgstr "Oturum yönetimi seçeneklerini göster"
+
+#: ../src/yelp-bookmarks.c:148
+# tr
+msgid "Open Bookmark in New Window"
+msgstr "Yer İmini Yeni Pencerede Aç"
+
+#: ../src/yelp-bookmarks.c:152
+# tr
+msgid "Rename Bookmark"
+msgstr "Yer İmini Yeniden Adlandır"
+
+#: ../src/yelp-bookmarks.c:156
+# tr
+msgid "Remove Bookmark"
+msgstr "Yer İmini Kaldır"
+
+#: ../src/yelp-bookmarks.c:314
+# tr
+msgid "A bookmark titled %s already exists for this page."
+msgstr "Bu sayfa için %s isimli bir yer imi zaten var."
+
+#: ../src/yelp-bookmarks.c:390
+# tr
+msgid "A bookmark titled <b>%s</b> already exists for this page."
+msgstr "Bu sayfa için <b>%s</b> isimli bir yer imi zaten var."
+
+#: ../src/yelp-bookmarks.c:403
+# tr
+msgid "Help Topics"
+msgstr "Yardım Konuları"
+
+#: ../src/yelp-bookmarks.c:418
+# tr
+msgid "Document Sections"
+msgstr "Belge Bölümleri"
+
+#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
+#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
+#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-mallard.c:380
+#: ../src/yelp-man.c:292 ../src/yelp-man.c:385 ../src/yelp-toc.c:266
+#: ../src/yelp-toc.c:365
+# tr
+msgid "Page not found"
+msgstr "Sayfa bulunamadı"
+
+#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
+#: ../src/yelp-mallard.c:281 ../src/yelp-mallard.c:381 ../src/yelp-man.c:293
+# tr
+msgid "The page %s was not found in the document %s."
+msgstr "%s sayfası %s belgesinde bulunamadı."
+
+#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
+#: ../src/yelp-man.c:386
+# tr
+msgid "The requested page was not found in the document %s."
+msgstr "İstenen sayfa %s belgesi içinde bulunamadı."
+
+#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
+#: ../src/yelp-man.c:429
+# tr
+msgid "File not found"
+msgstr "Dosya bulunamadı"
+
+#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
+#: ../src/yelp-man.c:430
+# tr
+msgid "The file ‘%s’ does not exist."
+msgstr "'%s' dosyası mevcut değil."
+
+#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
+#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
+#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
+# tr
+msgid "Could not parse file"
+msgstr "Dosya ayrıştırılamıyor"
+
+#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+# tr
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"'%s' dosyası ayrıştırılamıyor çünkü düzgün biçimlendirilmiş bir XML belgesi "
+"değil."
+
+#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+# tr
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"'%s' dosyası ayrıştırılamıyor çünkü içerdiği bir veya daha çok dosya düzgün "
+"biçimlendirilmiş XML belgesi değil."
+
+#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
+# tr
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
+# tr
+msgid "Unknown Error"
+msgstr "Bilinmeyen Hata"
+
+#: ../src/yelp-error.c:136 ../src/yelp-window.c:1710
+# tr
+msgid "Could Not Read File"
+msgstr "Dosya Okunamadı"
+
+#: ../src/yelp-error.c:146
+# tr
+msgid "No information is available about this error."
+msgstr "Bu hata hakkında hiçbir bilgi elde edilemiyor."
+
+#: ../src/yelp-info.c:396
+# tr
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"'%s' dosyası ayrıştırılamıyor çünkü düzgün biçimlendirilmiş bir bilgi "
+"sayfası değil."
+
+#: ../src/yelp-io-channel.c:132
+# tr
+msgid ""
+"The file ‘%s’ could not be read and decoded. The file may be compressed in "
+"an unsupported format."
+msgstr ""
+"'%s' dosyası okunamıyor ve çözülemiyor. Dosya desteklenmeyen bir biçimde "
+"sıkıştırılmış olabilir."
+
+#: ../src/yelp-main.c:88
+# tr
+msgid "Use a private session"
+msgstr "Özel bir oturum kullan"
+
+#: ../src/yelp-main.c:97
+msgid "Define which cache directory to use"
+msgstr "Angi öghafiza cilbentiniñ qullanılacağını belgileñiz"
+
+#. Commandline parsing is done here
+#: ../src/yelp-main.c:355
+# tr
+msgid " GNOME Help Browser"
+msgstr " GNOME Yardım Tarayıcısı"
+
+#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
+# tr
+msgid "Help"
+msgstr "Yardım"
+
+#: ../src/yelp-mallard.c:311
+# tr
+msgid "Directory not found"
+msgstr "Dizin bulunamadı"
+
+#: ../src/yelp-mallard.c:312
+# tr
+msgid "The directory ‘%s’ does not exist."
+msgstr "Dizin '%s' mevcut değil."
+
+#: ../src/yelp-man.c:459
+# tr
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+msgstr ""
+"'%s' dosyası ayrıştırılamıyor çünkü düzgün biçimlendirilmiş bir kılavuz "
+"sayfası değil."
+
+#: ../src/yelp-print.c:97
+# tr
+msgid "Print"
+msgstr "Yazdır"
+
+#: ../src/yelp-print.c:167
+msgid "Preparing to print"
+msgstr "Basqığa azırlana"
+
+#: ../src/yelp-print.c:261
+# tr
+msgid "Printing is not supported on this printer"
+msgstr "Bu yazıcıda yazdırma desteklenmiyor"
+
+#: ../src/yelp-print.c:264
+# tr
+msgid "Printer %s does not support postscript printing."
+msgstr "%s yazıcısı postscript yazdırmayı desteklemiyor."
+
+#: ../src/yelp-print.c:366
+# tr
+msgid "Waiting to print"
+msgstr "Yazdırma bekleniyor"
+
+#: ../src/yelp-print.c:578
+# tr
+msgid "An error occurred while printing"
+msgstr "Yazdırılırken bir hata oluştu"
+
+#: ../src/yelp-print.c:582
+# tr
+msgid "It was not possible to print your document: %s"
+msgstr "Belgeyi yazdırmak mümkün değil: %s"
+
+#: ../src/yelp-search-parser.c:67
+# tr
+msgid "the GNOME Support Forums"
+msgstr "GNOME Destek Forumları"
+
+#: ../src/yelp-search-parser.c:285
+# tr
+msgid "No results for \"%s\""
+msgstr "\"%s\" için sonuç yok"
+
+#: ../src/yelp-search-parser.c:286
+# tr
+msgid ""
+"Try using different words to describe the problem you're having or the topic "
+"you want help with."
+msgstr ""
+"Yaşadığınız sorunu tanımlayan farklı kelimeleri, ya da yardım edinmek "
+"istediğiniz konuyu deneyin."
+
+#: ../src/yelp-search-parser.c:289
+# tr
+msgid "Search results for \"%s\""
+msgstr " \"%s\" için arama sonuçları"
+
+#. TRANSLATORS: Please don't do anything funny with the
+#. * format arguement. It isn't really going through a printf
+#. * The %s is used to indicate where the name of the site (linked)
+#. * should be. This is done in the XSLT
+#.
+#: ../src/yelp-search-parser.c:303
+# tr
+msgid "Repeat the search online at %s"
+msgstr "%s üzerinde tekrar çevrimiçi ara"
+
+#. Translators: Do not translate this list exactly. These are
+#. * colon-separated words that aren't useful for choosing search
+#. * results; they will be different for each language. Include
+#. * pronouns, articles, very common verbs and prepositions,
+#. * words from question structures like "tell me about" and
+#. * "how do I", and words for functional states like "not",
+#. * "work", and "broken".
+#.
+#: ../src/yelp-search-parser.c:874
+# tr
+msgid ""
+"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
+"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
+"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
+"where:who:will:with:won't:wont:why:work:working:works"
+msgstr "nasıl:ne:mı:ve:için:ya da:değil:ben:içinde:tarafından"
+
+#. Translators: This is a list of common prefixes for words.
+#. * Do not translate this directly. Instead, use a colon
+#. * seperated list of word-starts. In English, an example
+#. * is re-. If there is none, please use the term NULL
+#. * If there is only one, please put a colon after.
+#. * E.g. if the common prefix is re then the string would be
+#. * "re:"
+#.
+#: ../src/yelp-search-parser.c:890
+# tr
+msgid "re"
+msgstr "NULL"
+
+#. Translators: This is a list of (guess what?) common suffixes
+#. * to words. Things that may be put at ends of words to slightly
+#. * alter their meaning (like -ing and -s in English). This is a
+#. * colon seperated list (I like colons). If there are none,
+#. * please use the string NULL. If there is only 1, please
+#. * add a colon at the end of the list
+#.
+#: ../src/yelp-search-parser.c:899
+# tr
+msgid "ers:er:ing:es:s:'s"
+msgstr "ler:lar"
+
+#: ../src/yelp-search-parser.c:1095
+# tr
+msgid "No Comment"
+msgstr "Yorumsuz"
+
+#. Much bigger problems
+#: ../src/yelp-search.c:238
+# tr
+msgid "Search could not be processed"
+msgstr "Arama işlenemedi"
+
+#: ../src/yelp-search.c:239
+# tr
+msgid "The requested search could not be processed."
+msgstr "İstenen arama işlenemiyor."
+
+#: ../src/yelp-search.c:366
+# tr
+msgid "Cannot process the search"
+msgstr "Arama işlenemiyor"
+
+#: ../src/yelp-search.c:367
+# tr
+msgid "The search processor returned invalid results"
+msgstr "Arama işlemcisi geçersiz sonuçlar döndürdü"
+
+#: ../src/yelp-toc.c:267
+# tr
+msgid "The page %s was not found in the TOC."
+msgstr "%s sayfası içindekilerde bulunamadı."
+
+#: ../src/yelp-toc.c:366
+# tr
+msgid "The requested page was not found in the TOC."
+msgstr "İstenen sayfa içindekilerde bulunamadı."
+
+#: ../src/yelp-toc.c:438
+# tr
+msgid ""
+"The TOC file could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"İçindekiler dosyası ayrıştırılamıyor çünkü düzgün biçimlendirilmiş XML "
+"belgesi değil."
+
+#: ../src/yelp-transform.c:86
+# tr
+msgid "Invalid Stylesheet"
+msgstr "Geçersiz Biçem Sayfası"
+
+#: ../src/yelp-transform.c:87
+# tr
+msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
+msgstr "XSLT biçem sayfası '%s' ya bulunmuyor ya da geçerli değil."
+
+#: ../src/yelp-transform.c:122
+# tr
+msgid "Broken Transformation"
+msgstr "Bozuk Dönüşüm"
+
+#: ../src/yelp-transform.c:123
+# tr
+msgid "An unknown error occurred while attempting to transform the document."
+msgstr "Belge dönüştürülmeye çalışılırken bilinmeyen bir hata oluştu."
+
+#: ../src/yelp-transform.c:389
+# tr
+msgid "No href attribute found on yelp:document\n"
+msgstr "yelp:document üzerinde hiçbir href özniteliği bulunamadı\n"
+
+#: ../src/yelp-transform.c:404
+# tr
+msgid "Out of memory"
+msgstr "Bellek yetersiz"
+
+#: ../src/yelp-window.c:304
+msgid "_File"
+msgstr "_Dosye"
+
+#: ../src/yelp-window.c:305
+msgid "_Edit"
+msgstr "_Tarir"
+
+#: ../src/yelp-window.c:306
+msgid "_Go"
+msgstr "_Bar"
+
+#: ../src/yelp-window.c:307
+msgid "_Bookmarks"
+msgstr "_Saife-imleri"
+
+#: ../src/yelp-window.c:308
+msgid "_Help"
+msgstr "_Yardım"
+
+#: ../src/yelp-window.c:311
+msgid "_New Window"
+msgstr "_Yañı Pencere"
+
+#: ../src/yelp-window.c:316
+msgid "Print This Document ..."
+msgstr "Bu Vesiqanı Bastır ..."
+
+#: ../src/yelp-window.c:321
+msgid "Print This Page ..."
+msgstr "Bu Saifeni Bastır ..."
+
+#: ../src/yelp-window.c:326
+msgid "About This Document"
+msgstr "Bu Vesiqa Aqqında"
+
+#: ../src/yelp-window.c:331
+# tr
+msgid "Open _Location"
+msgstr "_Konumu Aç"
+
+#: ../src/yelp-window.c:336
+msgid "_Close Window"
+msgstr "_Pencereni Qapat"
+
+#: ../src/yelp-window.c:342
+msgid "_Copy"
+msgstr "_Kopiyala"
+
+#: ../src/yelp-window.c:348
+msgid "_Select All"
+msgstr "Episini _Sayla"
+
+#: ../src/yelp-window.c:353
+msgid "_Find..."
+msgstr "_Tap..."
+
+#: ../src/yelp-window.c:358
+# tr
+msgid "Find Pre_vious"
+msgstr "Ö_ncekini Bul"
+
+#: ../src/yelp-window.c:360
+# tr
+msgid "Find previous occurrence of the word or phrase"
+msgstr "Kelime veya ifadenin önceki yerini bul"
+
+#: ../src/yelp-window.c:363
+# tr
+msgid "Find Ne_xt"
+msgstr "Sonrakini B_ul"
+
+#: ../src/yelp-window.c:365
+# tr
+msgid "Find next occurrence of the word or phrase"
+msgstr "Kelime veya ifadenin sonraki yerini bul"
+
+#: ../src/yelp-window.c:368
+msgid "_Preferences"
+msgstr "_Tercihler"
+
+#: ../src/yelp-window.c:373
+# tr
+msgid "_Reload"
+msgstr "_Tekrar Yükle"
+
+#: ../src/yelp-window.c:385
+msgid "_Back"
+msgstr "_Keri"
+
+#: ../src/yelp-window.c:387
+msgid "Show previous page in history"
+msgstr "Keçmişteki evelki saifeni köster"
+
+#: ../src/yelp-window.c:390
+msgid "_Forward"
+msgstr "İ_leri"
+
+#: ../src/yelp-window.c:392
+msgid "Show next page in history"
+msgstr "Keçmişteki soñraki saifeni köster"
+
+#: ../src/yelp-window.c:395
+msgid "_Help Topics"
+msgstr "_Yardım Mevzuları"
+
+#: ../src/yelp-window.c:397
+# tr
+msgid "Go to the listing of help topics"
+msgstr "Yardım konuları listesine git"
+
+#: ../src/yelp-window.c:400
+msgid "_Previous Section"
+msgstr "_Evelki Kesim"
+
+#: ../src/yelp-window.c:405
+msgid "_Next Section"
+msgstr "_Soñraki Kesim"
+
+#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
+msgid "_Contents"
+msgstr "İçi_ndekiler"
+
+#: ../src/yelp-window.c:416
+msgid "_Add Bookmark"
+msgstr "Saife-imi _Ekle"
+
+#: ../src/yelp-window.c:421
+msgid "_Edit Bookmarks..."
+msgstr "Saife-imlerini _Tarir Et..."
+
+#: ../src/yelp-window.c:427
+# tr
+msgid "_Open Link"
+msgstr "Bağlantı _Aç"
+
+#: ../src/yelp-window.c:432
+# tr
+msgid "Open Link in _New Window"
+msgstr "Yeni Pencerede Bağlantı _Aç"
+
+#: ../src/yelp-window.c:437
+# tr
+msgid "_Copy Link Address"
+msgstr "Bağlantı Adresini _Kopyala"
+
+#: ../src/yelp-window.c:444
+# tr
+msgid "Help On this application"
+msgstr "Bu uygulama hakkında yardım"
+
+#: ../src/yelp-window.c:447
+msgid "_About"
+msgstr "_Aqqında"
+
+#: ../src/yelp-window.c:452
+# tr
+msgid "Copy _Email Address"
+msgstr "_E-Posta Adresini Kopyala"
+
+#: ../src/yelp-window.c:524
+# tr
+msgid "Help Browser"
+msgstr "Yardım Tarayıcısı"
+
+#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1772
+msgid "Loading..."
+msgstr "Yüklene..."
+
+#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
+# tr
+msgid "Unknown Page"
+msgstr "Bilinmeyen Sayfa"
+
+#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104
+#: ../src/yelp-window.c:1113
+# tr
+msgid "The requested URI \"%s\" is invalid"
+msgstr "İstenen URI \"%s\" geçersiz"
+
+#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106
+#: ../src/yelp-window.c:1114
+# tr
+msgid "Unable to load page"
+msgstr "Sayfa yüklenemedi"
+
+#: ../src/yelp-window.c:1330
+msgid "_Search:"
+msgstr "_Qıdır:"
+
+#: ../src/yelp-window.c:1331
+# tr
+msgid "Search for other documentation"
+msgstr "Diğer belgeleri ara"
+
+#: ../src/yelp-window.c:1351
+# tr
+msgid "Cannot create window"
+msgstr "Pencere oluşturulamıyor"
+
+#: ../src/yelp-window.c:1357
+# tr
+msgid "Cannot create search component"
+msgstr "Arama bileşeni oluşturulamıyor"
+
+#: ../src/yelp-window.c:1529
+msgid "Fin_d:"
+msgstr "_Tap:"
+
+#: ../src/yelp-window.c:1551
+msgid "Find _Previous"
+msgstr "_Evelkini Tap"
+
+#: ../src/yelp-window.c:1563
+msgid "Find _Next"
+msgstr "_Soñrakini Tap"
+
+#: ../src/yelp-window.c:1576
+msgid "Phrase not found"
+msgstr "İbare tapılmadı"
+
+#: ../src/yelp-window.c:1707
+# tr
+msgid ""
+"The file ‘%s’ could not be read. This file might be missing, or you might "
+"not have permissions to read it."
+msgstr ""
+"'%s' dosyası okunamadı. Dosya bulunmuyor ya da dosyayı okumak için izniniz "
+"yok."
+
+#. Note to translators: put here your name (and address) so it
+#. * will show up in the "about" box
+#: ../src/yelp-window.c:2589
+msgid "translator-credits"
+msgstr "Reşat SABIQ <tilde.birlik@gmail.com>"
+
+#: ../src/yelp-window.c:2592
+msgid "Yelp"
+msgstr "Yelp"
+
+# tüklü
+#: ../src/yelp-window.c:2594
+msgid "A documentation browser and viewer for the Gnome Desktop."
+msgstr "Gnome Masaüstü içün bir vesiqalandırma kezicisi ve seyrettiricisi."
+
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "GNOME ile yardım elde etiñiz"
diff --git a/po/de.po b/po/de.po
index 48090919..f1235b68 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,16 +6,17 @@
# Hendrik Richter <hendrikr@gnome.org>, 2006, 2008.
# Andre Klapper <ak-47@gmx.net>, 2007.
# Jochen Skulj <jochen@jochenskulj.de>, 2008.
-# Mario Blättermann <mariobl@gnome.org>, 2009.
+# Mario Blättermann <mariobl@gnome.org>, 2009, 2010.
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: Yelp\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-14 02:28+0200\n"
-"PO-Revision-Date: 2009-08-10 10:50+0200\n"
-"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=yelp&component=general\n"
+"POT-Creation-Date: 2010-05-02 09:38+0000\n"
+"PO-Revision-Date: 2010-05-02 15:11+0100\n"
+"Last-Translator: Mario Blättermann <mariobl@gnome.org>\n"
"Language-Team: German <gnome-de@gnome.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -51,7 +52,7 @@ msgstr "Entwicklung"
#: ../data/man.xml.in.h:6
msgid "FORTRAN Functions"
-msgstr "FORTRAN Funktionen"
+msgstr "FORTRAN-Funktionen"
#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:56
msgid "Games"
@@ -293,7 +294,7 @@ msgstr "2D-Grafik"
msgid "3D Graphics"
msgstr "3D-Grafik"
-#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+#: ../data/toc.xml.in.h:3
msgid "Accessibility"
msgstr "Barrierefreiheit"
@@ -770,7 +771,7 @@ msgstr "Klang"
#: ../data/toc.xml.in.h:124
msgid "Sound &amp; Video"
-msgstr "Klang &amp; Video"
+msgstr "Klang und Video"
#: ../data/toc.xml.in.h:125
msgid "Sound &amp; Video Editing"
@@ -822,7 +823,7 @@ msgstr "Textwerkzeuge"
#: ../data/toc.xml.in.h:137
msgid "Tools to help you manage your computer"
-msgstr "Werkzeuge zur Verwaltung Ihres Computers"
+msgstr "Werkzeuge zur Verwaltung Ihres Rechners"
#: ../data/toc.xml.in.h:138
msgid "Translation Tools"
@@ -873,91 +874,307 @@ msgstr "Willkommen zum GNOME-Hilfe-Browser"
msgid "Word Processors"
msgstr "Textverarbeitung"
-#: ../data/ui/yelp-bookmarks.ui.h:1
-msgid "Bookmarks"
-msgstr "Lesezeichen"
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:147
+msgid "Invalid compressed data"
+msgstr "Ungültige gepackte Daten"
-#: ../data/ui/yelp-bookmarks.ui.h:2
-msgid "Re_name"
-msgstr "Umbe_nennen"
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:153
+#| msgid "Out of memory"
+msgid "Not enough memory"
+msgstr "Nicht genug Speicher"
-#: ../data/ui/yelp-bookmarks.ui.h:3
-msgid "_Bookmarks:"
-msgstr "_Lesezeichen:"
+#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, c-format
+#| msgid "The page %s was not found in the document %s."
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "Die Seite »%s« konnte im Dokument »%s« nicht gefunden werden."
-#: ../data/ui/yelp-bookmarks-add.ui.h:1
-msgid "Add Bookmark"
-msgstr "Lesezeichen hinzufügen"
+#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366
+#, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The file does not exist."
+msgstr "Die Datei existiert nicht."
-#: ../data/ui/yelp-bookmarks-add.ui.h:2
-msgid "_Title:"
-msgstr "_Titel:"
+#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376
+#: ../src/yelp-db-print.c:393 ../src/yelp-man.c:430
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "Die Datei »%s« existiert nicht."
-#: ../data/ui/yelp-open-location.ui.h:1
-msgid "Open Location"
-msgstr "Ort öffnen"
+#: ../libyelp/yelp-docbook-document.c:323 ../src/yelp-db-print.c:407
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"Die Datei »%s« konnte nicht analysiert werden, da der Inhalt kein gültiges XML-"
+"Dokument ist."
+
+#: ../libyelp/yelp-docbook-document.c:336 ../src/yelp-db-print.c:419
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"Die Datei »%s« konnte nicht analysiert werden, da eine oder mehrere der "
+"enthaltenen Dateien kein gültiges XML-Dokument ist."
+
+#: ../libyelp/yelp-docbook-document.c:720 ../src/yelp-db-print.c:766
+msgid "Unknown"
+msgstr "Unbekannt"
-#: ../data/ui/yelp-open-location.ui.h:2
-msgid "_Location:"
-msgstr "_Ort:"
+#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309
+#, c-format
+#| msgid "The requested page was not found in the document %s."
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "Die angeforderte Seite konnte nicht im Dokument »%s« gefunden werden."
-#: ../data/ui/yelp-preferences.ui.h:2
-msgid "Fonts"
-msgstr "Schriften"
+#: ../libyelp/yelp-error.c:33
+#, c-format
+#| msgid "An unknown error occured"
+msgid "An unknown error occurred."
+msgstr "Es ist ein unbekannter Fehler aufgetreten."
-#: ../data/ui/yelp-preferences.ui.h:3
-msgid "Preferences"
-msgstr "Einstellungen"
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"Die Datei »%s« konnte nicht analysiert werden, da sie keine gültige Info-Seite "
+"ist."
+
+#: ../libyelp/yelp-io-channel.c:125
+#, c-format
+msgid ""
+"The file ‘%s’ could not be read and decoded. The file may be compressed in an "
+"unsupported format."
+msgstr ""
+"Die Datei »%s« konnte nicht gelesen und dekodiert werden. Eventuell ist die "
+"Datei in einem nicht unterstützen Format komprimiert."
+
+#: ../libyelp/yelp-location-entry.c:246
+msgid "Description Column"
+msgstr "Beschreibungsspalte"
+
+#: ../libyelp/yelp-location-entry.c:247
+msgid "A column in the model to descriptions from"
+msgstr "Eine Spalte im Modell zum Bezug von Beschreibungen"
+
+#: ../libyelp/yelp-location-entry.c:262
+msgid "Icon Column"
+msgstr "Symbolspalte"
+
+#: ../libyelp/yelp-location-entry.c:263
+msgid "A column in the model to get icon names from"
+msgstr "Eine Spalte im Modell zum Bezug von Symbolnamen"
+
+#: ../libyelp/yelp-location-entry.c:278
+msgid "Flags Column"
+msgstr "Markierungsspalte"
+
+#: ../libyelp/yelp-location-entry.c:279
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr "Eine Spalte im Modell mit YelpLocationEntryFlags-Markierungen"
-#: ../data/ui/yelp-preferences.ui.h:4
-msgid "_Browse with caret"
-msgstr "Mit Text_cursor navigieren"
+#: ../libyelp/yelp-location-entry.c:295
+msgid "Enable Search"
+msgstr "Suche aktivieren"
-#: ../data/ui/yelp-preferences.ui.h:5
-msgid "_Fixed width:"
-msgstr "_Feste Breite:"
+#: ../libyelp/yelp-location-entry.c:296
+msgid "Whether the location entry can be used as a search field"
+msgstr "Legt fest, ob die Adresszeile als Suchfeld verwendet werden kann"
-#: ../data/ui/yelp-preferences.ui.h:6
-msgid "_Use system fonts"
-msgstr "_Systemschriften verwenden"
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "Der Ordner »%s« existiert nicht."
+
+#: ../libyelp/yelp-settings.c:146
+#| msgid "Settings"
+msgid "GtkSettings"
+msgstr "GtkSettings"
+
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr "Ein GtkSettings-Objekt, aus welchem Einstellungen bezogen werden sollen"
+
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
+
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr "Ein GtkIconTheme, aus welchem die Symbole bezogen werden sollen"
-#: ../data/ui/yelp-preferences.ui.h:7
-msgid "_Variable width:"
-msgstr "_Variable Breite:"
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Schriftanpassung"
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Dicktengleiche Schrift"
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr "Eine Größenanpassung zum Hinzufügen zu Schriftgrößen"
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Standardschrift"
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Textcursor anzeigen"
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Schrift für Buchstaben mit fester Breite (Dicktengleichheit)"
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr "Textcursor oder Caret für barrierefreie Navigation anzeigen"
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Schrift für Buchstaben mit variabler Breite"
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Editormodus"
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr "Nützliche Funktionsmerkmale für Editoren aktivieren"
+
+#: ../libyelp/yelp-transform.c:171
+#| msgid "Invalid Stylesheet"
+msgid "XSLT Stylesheet"
+msgstr "XSLT-Stilvorlage"
+
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr "Der Ort der XSLT-Stilvorlage"
+
+#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394
+#, c-format
+#| msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
msgstr ""
-"Einen über die Tastatur kontrollierbaren Rahmen verwenden, wenn Seiten "
-"betrachtet werden."
+"Entweder existiert die XSLT-Stilvorlage »%s« nicht, oder es ist keine gültige "
+"XSLT-Stilvorlage."
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Rahmen verwenden"
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "Kein href-Attribut im yelp:-Dokument gefunden\n"
+
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Speichermangel"
+
+#: ../libyelp/yelp-view.c:92
+msgid "_Back"
+msgstr "_Zurück"
+
+#: ../libyelp/yelp-view.c:97
+msgid "_Forward"
+msgstr "_Vor"
+
+#: ../libyelp/yelp-view.c:102
+#| msgid "_Previous"
+msgid "_Previous Page"
+msgstr "_Vorherige Seite"
+
+#: ../libyelp/yelp-view.c:107
+#| msgid "_Next"
+msgid "_Next Page"
+msgstr "_Nächste Seite"
+
+#: ../libyelp/yelp-view.c:310
+#| msgid "Yelp"
+msgid "Yelp URI"
+msgstr "Yelp-URI"
+
+#: ../libyelp/yelp-view.c:311
+msgid "A YelpUri with the current location"
+msgstr "Eine YelpUri mit dem aktuellen Ort"
+
+#: ../libyelp/yelp-view.c:319
+#| msgid "Loading..."
+msgid "Loading State"
+msgstr "Ladestatus"
+
+#: ../libyelp/yelp-view.c:320
+msgid "The loading state of the view"
+msgstr "Der Ladestatus der Ansicht"
+
+#: ../libyelp/yelp-view.c:329
+msgid "Page ID"
+msgstr "Seitenkennung"
+
+#: ../libyelp/yelp-view.c:330
+#| msgid "Sets the end of the range of pages to be printed"
+msgid "The ID of the root page of the page being viewew"
+msgstr "Die Kennung der Basisseite der betrachteten Seite"
+
+#: ../libyelp/yelp-view.c:338
+msgid "Root Title"
+msgstr "Basistitel"
+
+#: ../libyelp/yelp-view.c:339
+#| msgid "Sets the start of the range of pages to be printed"
+msgid "The title of the root page of the page being viewew"
+msgstr "Der Titel der Basisseite der betrachteten Seite"
+
+#: ../libyelp/yelp-view.c:347
+msgid "Page Title"
+msgstr "Seitentitel"
+
+#: ../libyelp/yelp-view.c:348
+msgid "The title of the page being viewed"
+msgstr "Der Titel der betrachteten Seite"
+
+#: ../libyelp/yelp-view.c:356
+msgid "Page Description"
+msgstr "Seitenbeschreibung"
+
+#: ../libyelp/yelp-view.c:357
+msgid "The description of the page being viewed"
+msgstr "Die Beschreibung der betrachteten Seite"
+
+#: ../libyelp/yelp-view.c:365
+#| msgid "Page not found"
+msgid "Page Icon"
+msgstr "Seitensymbol"
+
+#: ../libyelp/yelp-view.c:366
+msgid "The icon of the page being viewed"
+msgstr "Das Symbol der betrachteten Seite"
+
+#: ../libyelp/yelp-view.c:683
+#, c-format
+#| msgid "Could not load document"
+msgid "Could not load a document for ‘%s’"
+msgstr "Ein Dokument für »%s« konnte nicht geladen werden"
+
+#: ../libyelp/yelp-view.c:689
+#, c-format
+#| msgid "Could not load document"
+msgid "Could not load a document"
+msgstr "Ein Dokument konnte nicht geladen werden"
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Systemschriften verwenden"
+#: ../libyelp/yelp-view.c:756
+#| msgid "Page not found"
+msgid "Not Found"
+msgstr "Nicht gefunden"
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Die vom System vorgegebenen Schriften verwenden."
+#: ../libyelp/yelp-view.c:759
+#| msgid "Cannot create window"
+msgid "Cannot Read"
+msgstr "Nicht lesbar"
+
+#: ../libyelp/yelp-view.c:765 ../src/yelp-error.c:132 ../src/yelp-error.c:139
+msgid "Unknown Error"
+msgstr "Unbekannter Fehler"
+
+#: ../libyelp/yelp-view.c:855
+#, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "Die Adresse »%s« enthält keine gültige Seite."
+
+#: ../libyelp/yelp-view.c:863
+#, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "Die Adresse »%s« konnte nicht verarbeitet werden."
#: ../src/eggdesktopfile.c:165
#, c-format
@@ -1025,100 +1242,67 @@ msgstr "Optionen der Sitzungsverwaltung:"
msgid "Show session management options"
msgstr "Optionen der Sitzungsverwaltung anzeigen"
-#: ../src/yelp-bookmarks.c:148
-msgid "Open Bookmark in New Window"
-msgstr "Lesezeichen in neuem Fenster öffnen"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr "In den Editor-Modus wechseln"
-#: ../src/yelp-bookmarks.c:152
-msgid "Rename Bookmark"
-msgstr "Lesezeichen umbenennen"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "Gr_ößerer Text"
-#: ../src/yelp-bookmarks.c:156
-msgid "Remove Bookmark"
-msgstr "Lesezeichen entfernen"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Die Schriftgröße des Texts erhöhen"
-#: ../src/yelp-bookmarks.c:314
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Ein Lesezeichen mit dem Namen %s existiert bereits für diese Seite."
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "_Kleinerer Text"
-#: ../src/yelp-bookmarks.c:390
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr ""
-"Ein Lesezeichen mit dem Namen <b>%s</b> existiert bereits für diese Seite."
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr "Die Schriftgröße des Texts verringern"
-#: ../src/yelp-bookmarks.c:403
-msgid "Help Topics"
-msgstr "Hilfe-Themen"
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr "Text_cursor anzeigen"
-#: ../src/yelp-bookmarks.c:418
-msgid "Document Sections"
-msgstr "Dokumentabschnitte"
+#: ../src/yelp-application.c:297 ../src/yelp-main.c:386
+#: ../src/yelp-window.c:1000 ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Hilfe"
-#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-man.c:292
+#: ../src/yelp-application.c:547
+msgid ""
+"You do not have PackageKit installed. Package installation links require "
+"PackageKit."
+msgstr ""
+"PackageKit ist nicht installiert. Dies ist zur Paketinstallation erforderlich."
+
+#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 ../src/yelp-man.c:292
#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
msgid "Page not found"
msgstr "Seite konnte nicht gefunden werden"
-#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-mallard.c:281 ../src/yelp-man.c:293
+#: ../src/yelp-db-print.c:259 ../src/yelp-man.c:293
#, c-format
msgid "The page %s was not found in the document %s."
msgstr "Die Seite %s konnte nicht im Dokument %s gefunden werden."
-#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
-#: ../src/yelp-man.c:386
+#: ../src/yelp-db-print.c:351 ../src/yelp-man.c:386
#, c-format
msgid "The requested page was not found in the document %s."
msgstr "Die angeforderte Seite konnte nicht im Dokument %s gefunden werden."
-#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
-#: ../src/yelp-man.c:429
+#: ../src/yelp-db-print.c:392 ../src/yelp-man.c:429
msgid "File not found"
msgstr "Datei nicht gefunden"
-#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
-#: ../src/yelp-man.c:430
-#, c-format
-msgid "The file ‘%s’ does not exist."
-msgstr "Die Datei »%s« existiert nicht."
-
-#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
-#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
+#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 ../src/yelp-man.c:458
+#: ../src/yelp-toc.c:437
msgid "Could not parse file"
msgstr "Datei konnte nicht analysiert werden"
-#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed XML "
-"document."
-msgstr ""
-"Die Datei »%s« konnte nicht analysiert werden, da der Inhalt kein gültiges "
-"XML-Dokument ist."
-
-#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because one or more of its included files "
-"is not a well-formed XML document."
-msgstr ""
-"Die Datei »%s« konnte nicht analysiert werden, da eine oder mehrere der "
-"enthaltenen Dateien kein gültiges XML-Dokument ist."
-
-#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
-msgid "Unknown Error"
-msgstr "Unbekannter Fehler"
-
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1710
+#: ../src/yelp-error.c:136
msgid "Could Not Read File"
msgstr "Datei konnte nicht gelesen werden"
@@ -1126,49 +1310,19 @@ msgstr "Datei konnte nicht gelesen werden"
msgid "No information is available about this error."
msgstr "Über diesen Fehler stehen keine weiteren Informationen zur Verfügung."
-#: ../src/yelp-info.c:396
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr ""
-"Die Datei »%s« konnte nicht analysiert werden, da sie keine gültige Info-"
-"Seite ist."
-
-#: ../src/yelp-io-channel.c:132
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
-msgstr ""
-"Die Datei »%s« konnte nicht gelesen und dekodiert werden. Eventuell ist die "
-"Datei in einem nicht unterstützen Format komprimiert."
-
-#: ../src/yelp-main.c:88
+#: ../src/yelp-main.c:89
msgid "Use a private session"
msgstr "Private Sitzung verwenden"
-#: ../src/yelp-main.c:97
+#: ../src/yelp-main.c:98
msgid "Define which cache directory to use"
msgstr "Den Ordner für den Zwischenspeicher festlegen"
#. Commandline parsing is done here
-#: ../src/yelp-main.c:355
+#: ../src/yelp-main.c:357
msgid " GNOME Help Browser"
msgstr " GNOME-Hilfe-Browser"
-#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Hilfe"
-
-#: ../src/yelp-mallard.c:311
-msgid "Directory not found"
-msgstr "Ordner nicht gefunden"
-
-#: ../src/yelp-mallard.c:312
-#, c-format
-msgid "The directory ‘%s’ does not exist."
-msgstr "Der Ordner »%s« existiert nicht."
-
#: ../src/yelp-man.c:459
#, c-format
msgid ""
@@ -1205,7 +1359,7 @@ msgstr "Beim Drucken ist ein Fehler aufgetreten"
#: ../src/yelp-print.c:582
#, c-format
msgid "It was not possible to print your document: %s"
-msgstr "Es war nicht möglich das Dokument zu drucken: %s"
+msgstr "Es war nicht möglich, das Dokument zu drucken: %s"
#: ../src/yelp-search-parser.c:67
msgid "the GNOME Support Forums"
@@ -1221,7 +1375,7 @@ msgid ""
"Try using different words to describe the problem you're having or the topic "
"you want help with."
msgstr ""
-"Versuchen Sie, Ihr Problem oder das Thema zu dem Sie Hilfe möchten mit "
+"Versuchen Sie, Ihr Problem oder das Thema, zu dem Sie Hilfe möchten, mit "
"anderen Worten zu beschreiben."
#: ../src/yelp-search-parser.c:289
@@ -1269,8 +1423,7 @@ msgstr ""
#: ../src/yelp-search-parser.c:890
msgid "re"
msgstr ""
-"ab:an:auf:be:bei:ein:ent:er:ge:hin:nach:nieder:über:um:un:unter:ver:vor:zer:"
-"zu"
+"ab:an:auf:be:bei:ein:ent:er:ge:hin:nach:nieder:über:um:un:unter:ver:vor:zer:zu"
#. Translators: This is a list of (guess what?) common suffixes
#. * to words. Things that may be put at ends of words to slightly
@@ -1316,277 +1469,305 @@ msgstr ""
#: ../src/yelp-toc.c:438
msgid ""
-"The TOC file could not be parsed because it is not a well-formed XML "
-"document."
+"The TOC file could not be parsed because it is not a well-formed XML document."
msgstr ""
"Die Inhaltsverzeichnis-Datei »%s« konnte nicht analysiert werden, da sie kein "
"gültiges XML-Dokument ist."
-#: ../src/yelp-transform.c:86
-msgid "Invalid Stylesheet"
-msgstr "Ungültige Stilvorlage"
+#: ../src/yelp-window.c:203
+msgid "_Page"
+msgstr "_Seite"
-#: ../src/yelp-transform.c:87
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr ""
-"Entweder existiert die XSLT-Stilvorlage »%s« nicht, oder es ist keine gültige "
-"XSLT-Stilvorlage."
+#: ../src/yelp-window.c:204
+#| msgid "Viewer"
+msgid "_View"
+msgstr "_Ansicht"
-#: ../src/yelp-transform.c:122
-msgid "Broken Transformation"
-msgstr "Defekte Umwandlung"
+#: ../src/yelp-window.c:205
+msgid "_Go"
+msgstr "_Gehe zu"
-#: ../src/yelp-transform.c:123
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr ""
-"Ein unbekannter Fehler trat auf beim Versuch, das Dokument umzuwandeln."
+#: ../src/yelp-window.c:206
+msgid "_Bookmarks"
+msgstr "_Lesezeichen"
-#: ../src/yelp-transform.c:389
-msgid "No href attribute found on yelp:document\n"
-msgstr "Kein href-Attribut im yelp:-Dokument gefunden\n"
+#: ../src/yelp-window.c:209
+msgid "_New Window"
+msgstr "_Neues Fenster"
-#: ../src/yelp-transform.c:404
-msgid "Out of memory"
-msgstr "Speichermangel"
+#: ../src/yelp-window.c:214
+#| msgid "Clocks"
+msgid "_Close"
+msgstr "S_chließen"
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "_Datei"
+#: ../src/yelp-window.c:219
+msgid "_Add Bookmark"
+msgstr "Lesezeichen _hinzufügen"
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "_Bearbeiten"
+#: ../src/yelp-window.c:224
+msgid "Open Location"
+msgstr "Ort öffnen"
-#: ../src/yelp-window.c:306
-msgid "_Go"
-msgstr "_Gehe zu"
+#: ../src/yelp-window.c:249
+#| msgid "Applications"
+msgid "Application"
+msgstr "Anwendung"
-#: ../src/yelp-window.c:307
-msgid "_Bookmarks"
-msgstr "_Lesezeichen"
+#: ../src/yelp-window.c:250
+msgid "A YelpApplication instance that controls this window"
+msgstr "Eine YelpApplication-Instanz, welche dieses Fenster steuert"
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "_Hilfe"
+#: ../src/yelp-window.c:416
+#| msgid "_Search:"
+msgid "Search..."
+msgstr "Suchen …"
-#: ../src/yelp-window.c:311
-msgid "_New Window"
-msgstr "_Neues Fenster"
+#: ../src/yelp-window.c:945
+#| msgid "Loading..."
+msgid "Loading"
+msgstr "Ladevorgang"
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "Aktuelles Dokument drucken …"
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Hilfe zu GNOME erhalten"
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "Diese Seite drucken …"
+#~ msgid "Bookmarks"
+#~ msgstr "Lesezeichen"
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "Informationen über dieses Dokument"
+#~ msgid "Re_name"
+#~ msgstr "Umbe_nennen"
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "_Ort öffnen"
+#~ msgid "_Bookmarks:"
+#~ msgstr "_Lesezeichen:"
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "Fenster s_chließen"
+#~ msgid "Add Bookmark"
+#~ msgstr "Lesezeichen hinzufügen"
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "K_opieren"
+#~ msgid "_Title:"
+#~ msgstr "_Titel:"
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "_Alles auswählen"
+#~ msgid "_Location:"
+#~ msgstr "_Ort:"
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "_Suchen …"
+#~ msgid "Fonts"
+#~ msgstr "Schriften"
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "_Rückwärts suchen"
+#~ msgid "Preferences"
+#~ msgstr "Einstellungen"
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Das vorherige Vorkommen des Wortes oder Satzes suchen"
+#~ msgid "_Browse with caret"
+#~ msgstr "Mit Text_cursor navigieren"
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "_Weitersuchen"
+#~ msgid "_Fixed width:"
+#~ msgstr "_Feste Breite:"
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "Das nächste Vorkommen des Wortes oder Satzes suchen"
+#~ msgid "_Use system fonts"
+#~ msgstr "_Systemschriften verwenden"
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "_Einstellungen"
+#~ msgid "_Variable width:"
+#~ msgstr "_Variable Breite:"
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "_Neu laden"
+#~ msgid "Font for fixed text"
+#~ msgstr "Dicktengleiche Schrift"
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "_Zurück"
+#~ msgid "Font for text"
+#~ msgstr "Standardschrift"
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "Die vorherige Seite in der Chronik anzeigen"
+#~ msgid "Font for text with fixed width."
+#~ msgstr "Schrift für Buchstaben mit fester Breite (Dicktengleichheit)"
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "_Vor"
+#~ msgid "Font for text with variable width."
+#~ msgstr "Schrift für Buchstaben mit variabler Breite"
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "Die nächste Seite in der Chronik anzeigen"
+#~ msgid "Use a keyboard-controllable caret when viewing pages."
+#~ msgstr ""
+#~ "Einen über die Tastatur kontrollierbaren Rahmen verwenden, wenn Seiten "
+#~ "betrachtet werden."
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "_Hilfe-Themen"
+#~ msgid "Use caret"
+#~ msgstr "Rahmen verwenden"
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "Zur Auflistung der Hilfe-Themen gehen"
+#~ msgid "Use system fonts"
+#~ msgstr "Systemschriften verwenden"
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "V_orheriger Abschnitt"
+#~ msgid "Use the default fonts set for the system."
+#~ msgstr "Die vom System vorgegebenen Schriften verwenden."
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "_Nächster Abschnitt"
+#~ msgid "Open Bookmark in New Window"
+#~ msgstr "Lesezeichen in neuem Fenster öffnen"
-#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "_Inhalte"
+#~ msgid "Rename Bookmark"
+#~ msgstr "Lesezeichen umbenennen"
-#: ../src/yelp-window.c:416
-msgid "_Add Bookmark"
-msgstr "Lesezeichen _hinzufügen"
+#~ msgid "Remove Bookmark"
+#~ msgstr "Lesezeichen entfernen"
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "Lesezeichen _bearbeiten"
+#~ msgid "A bookmark titled %s already exists for this page."
+#~ msgstr "Ein Lesezeichen mit dem Namen %s existiert bereits für diese Seite."
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "_Verweis öffnen"
+#~ msgid "A bookmark titled <b>%s</b> already exists for this page."
+#~ msgstr ""
+#~ "Ein Lesezeichen mit dem Namen <b>%s</b> existiert bereits für diese Seite."
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "Verweis in _neuem Fenster öffnen"
+#~ msgid "Help Topics"
+#~ msgstr "Hilfe-Themen"
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "Verweisadresse _kopieren"
+#~ msgid "Document Sections"
+#~ msgstr "Dokumentabschnitte"
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "Hilfe zu dieser Anwendung anzeigen"
+#~ msgid "Directory not found"
+#~ msgstr "Ordner nicht gefunden"
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "_Info"
+#~ msgid "Broken Transformation"
+#~ msgstr "Defekte Umwandlung"
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "_E-Mail-Adresse kopieren"
+#~ msgid "An unknown error occurred while attempting to transform the document."
+#~ msgstr ""
+#~ "Ein unbekannter Fehler trat auf beim Versuch, das Dokument umzuwandeln."
-#: ../src/yelp-window.c:524
-msgid "Help Browser"
-msgstr "Hilfe-Browser"
+#~ msgid "_File"
+#~ msgstr "_Datei"
-#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1772
-msgid "Loading..."
-msgstr "Ladevorgang …"
+#~ msgid "_Edit"
+#~ msgstr "_Bearbeiten"
-#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
-msgid "Unknown Page"
-msgstr "Unbekannte Seite"
+#~ msgid "_Help"
+#~ msgstr "_Hilfe"
-#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104
-#: ../src/yelp-window.c:1113
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "Die angeforderte URI-Adresse »%s« ist ungültig"
+#~ msgid "Print This Document ..."
+#~ msgstr "Aktuelles Dokument drucken …"
-#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106
-#: ../src/yelp-window.c:1114
-msgid "Unable to load page"
-msgstr "Laden der Seite nicht möglich"
+#~ msgid "Print This Page ..."
+#~ msgstr "Diese Seite drucken …"
-#: ../src/yelp-window.c:1330
-msgid "_Search:"
-msgstr "_Suchen:"
+#~ msgid "About This Document"
+#~ msgstr "Informationen über dieses Dokument"
-#: ../src/yelp-window.c:1331
-msgid "Search for other documentation"
-msgstr "Nach sonstiger Dokumentation suchen"
+#~ msgid "Open _Location"
+#~ msgstr "_Ort öffnen"
-#: ../src/yelp-window.c:1351
-msgid "Cannot create window"
-msgstr "Fenster konnte nicht erzeugt werden"
+#~ msgid "_Close Window"
+#~ msgstr "Fenster s_chließen"
-#: ../src/yelp-window.c:1357
-msgid "Cannot create search component"
-msgstr "Suchkomponente konnte nicht erzeugt werden"
+#~ msgid "_Copy"
+#~ msgstr "K_opieren"
-#: ../src/yelp-window.c:1529
-msgid "Fin_d:"
-msgstr "_Suchen:"
+#~ msgid "_Select All"
+#~ msgstr "_Alles auswählen"
-#: ../src/yelp-window.c:1551
-msgid "Find _Previous"
-msgstr "_Rückwärts suchen"
+#~ msgid "_Find..."
+#~ msgstr "_Suchen …"
-#: ../src/yelp-window.c:1563
-msgid "Find _Next"
-msgstr "_Weitersuchen"
+#~ msgid "Find Pre_vious"
+#~ msgstr "_Rückwärts suchen"
-#: ../src/yelp-window.c:1576
-msgid "Phrase not found"
-msgstr "Ausdruck nicht gefunden"
+#~ msgid "Find previous occurrence of the word or phrase"
+#~ msgstr "Das vorherige Vorkommen des Wortes oder Satzes suchen"
-#: ../src/yelp-window.c:1707
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr ""
-"Die Datei »%s« konnte nicht gelesen werden. Eventuell gibt es sie nicht oder "
-"Sie haben nicht die notwendigen Zugriffsrechte um diese zu lesen."
+#~ msgid "Find Ne_xt"
+#~ msgstr "_Weitersuchen"
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2577
-msgid "translator-credits"
-msgstr ""
-"Christian Meyer <chrisime@gnome.org>\n"
-"Christian Neumair <chris@gnome-de.org>\n"
-"Matthias Warkus <mawarkus@gnome.org>\n"
-"Hendrik Brandt <heb@gnome-de.org>\n"
-"Andre Klapper <ak-47@gmx.net>\n"
-"Mario Blättermann <mariobl@gnome.org>\n"
-"Christian Kirbach <Christian.Kirbach@googlemail.com>"
-
-#: ../src/yelp-window.c:2580
-msgid "Yelp"
-msgstr "Yelp"
-
-#: ../src/yelp-window.c:2582
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr ""
-"Ein zentraler Sammelpunkt für Hilfedokumente der GNOME Arbeitsumgebung."
+#~ msgid "Find next occurrence of the word or phrase"
+#~ msgstr "Das nächste Vorkommen des Wortes oder Satzes suchen"
-#: ../yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "Hilfe zu GNOME erhalten"
+#~ msgid "_Preferences"
+#~ msgstr "_Einstellungen"
+
+#~ msgid "_Reload"
+#~ msgstr "_Neu laden"
+
+#~ msgid "Show previous page in history"
+#~ msgstr "Die vorherige Seite in der Chronik anzeigen"
+
+#~ msgid "Show next page in history"
+#~ msgstr "Die nächste Seite in der Chronik anzeigen"
+
+#~ msgid "_Help Topics"
+#~ msgstr "_Hilfe-Themen"
+
+#~ msgid "Go to the listing of help topics"
+#~ msgstr "Zur Auflistung der Hilfe-Themen gehen"
+
+#~ msgid "_Previous Section"
+#~ msgstr "V_orheriger Abschnitt"
+
+#~ msgid "_Next Section"
+#~ msgstr "_Nächster Abschnitt"
+
+#~ msgid "_Contents"
+#~ msgstr "_Inhalte"
+
+#~ msgid "_Edit Bookmarks..."
+#~ msgstr "Lesezeichen _bearbeiten"
+
+#~ msgid "_Open Link"
+#~ msgstr "_Verweis öffnen"
+
+#~ msgid "Open Link in _New Window"
+#~ msgstr "Verweis in _neuem Fenster öffnen"
+
+#~ msgid "_Copy Link Address"
+#~ msgstr "Verweisadresse _kopieren"
+
+#~ msgid "Help On this application"
+#~ msgstr "Hilfe zu dieser Anwendung anzeigen"
+
+#~ msgid "_About"
+#~ msgstr "_Info"
+
+#~ msgid "Copy _Email Address"
+#~ msgstr "_E-Mail-Adresse kopieren"
+
+#~ msgid "Help Browser"
+#~ msgstr "Hilfe-Browser"
+
+#~ msgid "Unknown Page"
+#~ msgstr "Unbekannte Seite"
+
+#~ msgid "The requested URI \"%s\" is invalid"
+#~ msgstr "Die angeforderte URI-Adresse »%s« ist ungültig"
+
+#~ msgid "Unable to load page"
+#~ msgstr "Laden der Seite nicht möglich"
+
+#~ msgid "Search for other documentation"
+#~ msgstr "Nach sonstiger Dokumentation suchen"
+
+#~ msgid "Cannot create search component"
+#~ msgstr "Suchkomponente konnte nicht erzeugt werden"
+
+#~ msgid "Fin_d:"
+#~ msgstr "_Suchen:"
+
+#~ msgid "Find _Previous"
+#~ msgstr "_Rückwärts suchen"
+
+#~ msgid "Find _Next"
+#~ msgstr "_Weitersuchen"
+
+#~ msgid "Phrase not found"
+#~ msgstr "Ausdruck nicht gefunden"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be read. This file might be missing, or you might "
+#~ "not have permissions to read it."
+#~ msgstr ""
+#~ "Die Datei »%s« konnte nicht gelesen werden. Eventuell gibt es sie nicht "
+#~ "oder Sie haben nicht die notwendigen Zugriffsrechte um diese zu lesen."
+
+#~ msgid "translator-credits"
+#~ msgstr ""
+#~ "Christian Meyer <chrisime@gnome.org>\n"
+#~ "Christian Neumair <chris@gnome-de.org>\n"
+#~ "Matthias Warkus <mawarkus@gnome.org>\n"
+#~ "Hendrik Brandt <heb@gnome-de.org>\n"
+#~ "Andre Klapper <ak-47@gmx.net>\n"
+#~ "Mario Blättermann <mariobl@gnome.org>\n"
+#~ "Christian Kirbach <Christian.Kirbach@googlemail.com>"
+
+#~ msgid "A documentation browser and viewer for the Gnome Desktop."
+#~ msgstr ""
+#~ "Ein zentraler Sammelpunkt für Hilfedokumente der GNOME Arbeitsumgebung."
#~ msgid "<b>Accessibility</b>"
#~ msgstr "<b>Barrierefreiheit</b>"
@@ -1603,12 +1784,6 @@ msgstr "Hilfe zu GNOME erhalten"
#~ msgid "_Find:"
#~ msgstr "_Suchen:"
-#~ msgid "_Next"
-#~ msgstr "_Weitersuchen"
-
-#~ msgid "_Previous"
-#~ msgstr "_Rückwärts suchen"
-
#~ msgid "_Wrap around"
#~ msgstr "_Zeilenumbruch"
@@ -1660,12 +1835,6 @@ msgstr "Hilfe zu GNOME erhalten"
#~ msgid "Variety of other applications"
#~ msgstr "Eine Sammlung sonstiger Programme"
-#~ msgid "An unknown error occured"
-#~ msgstr "Es ist ein unbekannter Fehler aufgetreten"
-
-#~ msgid "Could not load document"
-#~ msgstr "Dokument konnte nicht geladen werden"
-
#~ msgid "Could not read the table of contents"
#~ msgstr "Das Inhaltsverzeichnis konnte nicht gelesen werden"
@@ -1676,8 +1845,8 @@ msgstr "Hilfe zu GNOME erhalten"
#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
#~ "is formatted incorrectly."
#~ msgstr ""
-#~ "Die Datei »%s« konnte nicht analysiert werden. Entweder existiert die "
-#~ "Datei nicht oder der Inhalt hat das falsche Format."
+#~ "Die Datei »%s« konnte nicht analysiert werden. Entweder existiert die Datei "
+#~ "nicht oder der Inhalt hat das falsche Format."
#~ msgid "The YelpDocInfo struct of the document"
#~ msgstr "Die YelpDocInfo-Struktur dieses Dokuments"
@@ -1705,8 +1874,8 @@ msgstr "Hilfe zu GNOME erhalten"
#~ "The table of contents could not be processed. The file ‘%s’ is either "
#~ "missing or is not a valid XSLT stylesheet."
#~ msgstr ""
-#~ "Das Inhaltsverzeichnis konnte nicht geladen werden. Entweder existiert "
-#~ "die Datei »%s« nicht oder der Inhalt ist kein gültiges XSLT-Stylesheet."
+#~ "Das Inhaltsverzeichnis konnte nicht geladen werden. Entweder existiert die "
+#~ "Datei »%s« nicht oder der Inhalt ist kein gültiges XSLT-Stylesheet."
#~ msgid "Read man page for %s"
#~ msgstr "Handbuch für %s lesen"
@@ -1715,11 +1884,11 @@ msgstr "Hilfe zu GNOME erhalten"
#~ msgstr "Info-Seite für %s lesen"
#~ msgid ""
-#~ "The table of contents could not be loaded. The file ‘%s’ is either "
-#~ "missing or is not well-formed XML."
+#~ "The table of contents could not be loaded. The file ‘%s’ is either missing "
+#~ "or is not well-formed XML."
#~ msgstr ""
-#~ "Das Inhaltsverzeichnis konnte nicht geladen werden. Entweder existiert "
-#~ "die Datei »%s« nicht oder der Inhalt ist kein gültiges XML."
+#~ "Das Inhaltsverzeichnis konnte nicht geladen werden. Entweder existiert die "
+#~ "Datei »%s« nicht oder der Inhalt ist kein gültiges XML."
#~ msgid "Command Line Help"
#~ msgstr "Befehlszeilen-Hilfe"
@@ -1733,8 +1902,8 @@ msgstr "Hilfe zu GNOME erhalten"
#~ "The Uniform Resource Identifier ‘%s’ is invalid or does not point to an "
#~ "actual file."
#~ msgstr ""
-#~ "Der Uniform-Ressource-Identifier (URI-Adresse) »%s« ist ungültig oder "
-#~ "zeigt nicht auf eine existierende Datei."
+#~ "Der Uniform-Ressource-Identifier (URI-Adresse) »%s« ist ungültig oder zeigt "
+#~ "nicht auf eine existierende Datei."
#~ msgid "Man pages are not supported in this version."
#~ msgstr "Man-Pages werden in dieser Version nicht unterstützt."
@@ -1772,8 +1941,8 @@ msgstr "Hilfe zu GNOME erhalten"
#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
#~ "is improperly formatted."
#~ msgstr ""
-#~ "Die Datei »%s« konnte nicht analysiert werden. Entweder existiert die "
-#~ "Datei nicht oder sie ist falsch formatiert."
+#~ "Die Datei »%s« konnte nicht analysiert werden. Entweder existiert die Datei "
+#~ "nicht oder sie ist falsch formatiert."
#~ msgid "<b>Printing</b>"
#~ msgstr "<b>Drucken</b>"
@@ -1796,15 +1965,9 @@ msgstr "Hilfe zu GNOME erhalten"
#~ msgid "_From:"
#~ msgstr "_Von:"
-#~ msgid "Sets the start of the range of pages to be printed"
-#~ msgstr "Legt die erste Seite des zu druckenden Druckbereichs fest"
-
#~ msgid "_To:"
#~ msgstr "_Bis:"
-#~ msgid "Sets the end of the range of pages to be printed"
-#~ msgstr "Legt die letzte Seite des zu druckenden Druckbereichs fest"
-
#~ msgid ""
#~ "Could not display help for Yelp.\n"
#~ "%s"
diff --git a/po/es.po b/po/es.po
index 2e8c7a5f..8e26087d 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,21 +4,22 @@
#
# Juan Manuel García Molina <juanma_gm@wanadoo.es>, 2001, 2002, 2003.
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2003, 2004, 2005, 2006.
-# Jorge González <jorgegonz@svn.gnome.org>, 2007, 200, 2009.
+# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2009, 2010.
+#
msgid ""
msgstr ""
"Project-Id-Version: yelp.HEAD\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=yelp&component=general\n"
-"POT-Creation-Date: 2009-08-07 00:18+0000\n"
-"PO-Revision-Date: 2009-08-07 19:11+0200\n"
+"POT-Creation-Date: 2010-05-09 11:11+0000\n"
+"PO-Revision-Date: 2010-05-10 19:25+0200\n"
"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../data/info.xml.in.h:1
msgid "GNU Info Pages"
@@ -292,7 +293,7 @@ msgstr "Gráficos 2D"
msgid "3D Graphics"
msgstr "Gráficos 3D"
-#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+#: ../data/toc.xml.in.h:3
msgid "Accessibility"
msgstr "Accesibilidad"
@@ -687,7 +688,7 @@ msgstr "Reproductores"
msgid "Presentation Tools"
msgstr "Herramientas de presentaciones"
-#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
+#: ../data/toc.xml.in.h:104
msgid "Printing"
msgstr "Imprimir"
@@ -870,702 +871,784 @@ msgstr "Bienvenido al visor de ayuda de GNOME"
msgid "Word Processors"
msgstr "Procesador de textos"
-#: ../data/ui/yelp-bookmarks.ui.h:1
-msgid "Bookmarks"
-msgstr "Marcadores"
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:155
+msgid "Invalid compressed data"
+msgstr "Datos comprimidos no válidos"
-#: ../data/ui/yelp-bookmarks.ui.h:2
-msgid "Re_name"
-msgstr "Re_nombrar"
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:161
+msgid "Not enough memory"
+msgstr "No hay suficiente memoria"
-#: ../data/ui/yelp-bookmarks.ui.h:3
-msgid "_Bookmarks:"
-msgstr "_Marcadores:"
+#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, c-format
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "La página «%s» no se encontró en el documento «%s»."
-#: ../data/ui/yelp-bookmarks-add.ui.h:1
-msgid "Add Bookmark"
-msgstr "Añadir marcador"
+#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366
+#, c-format
+msgid "The file does not exist."
+msgstr "El archivo no existe."
-#: ../data/ui/yelp-bookmarks-add.ui.h:2
-msgid "_Title:"
-msgstr "_Título:"
+#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "El archivo «%s» no existe."
-#: ../data/ui/yelp-open-location.ui.h:1
-msgid "Open Location"
-msgstr "Abrir dirección"
+#: ../libyelp/yelp-docbook-document.c:323
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"El archivo «%s» no se pudo analizar porque no es un documento XML bien "
+"formado."
+
+#: ../libyelp/yelp-docbook-document.c:336
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"El archivo «%s» no se pudo analizar porque uno o más de sus archivos "
+"incluidos no son documentos XML bien formados."
+
+#: ../libyelp/yelp-docbook-document.c:720
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309
+#, c-format
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "No se encontró la página solicitada en el documento «%s»."
-#: ../data/ui/yelp-open-location.ui.h:2
-msgid "_Location:"
-msgstr "_Dirección:"
+#: ../libyelp/yelp-error.c:33
+#, c-format
+msgid "An unknown error occurred."
+msgstr "Ocurrió un error desconocido."
-#: ../data/ui/yelp-preferences.ui.h:2
-msgid "Fonts"
-msgstr "Tipografías"
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"El archivo «%s» no se pudo analizar porque no es una página de información "
+"bien formada."
-#: ../data/ui/yelp-preferences.ui.h:3
-msgid "Preferences"
-msgstr "Preferencias"
+#: ../libyelp/yelp-location-entry.c:279
+msgid "Description Column"
+msgstr "Columna de descripción"
-#: ../data/ui/yelp-preferences.ui.h:4
-msgid "_Browse with caret"
-msgstr "_Examinar con cursor"
+#: ../libyelp/yelp-location-entry.c:280
+msgid "A column in the model to get descriptions from"
+msgstr "Una columna en el modelo de la que obtener las descripciones"
-#: ../data/ui/yelp-preferences.ui.h:5
-msgid "_Fixed width:"
-msgstr "Anchura _fija:"
+#: ../libyelp/yelp-location-entry.c:295
+msgid "Icon Column"
+msgstr "Columna de icono"
-#: ../data/ui/yelp-preferences.ui.h:6
-msgid "_Use system fonts"
-msgstr "_Usar tipografía del sistema"
+#: ../libyelp/yelp-location-entry.c:296
+msgid "A column in the model to get icon names from"
+msgstr "Una columna en el modelo de la que obtener los nombres de icono"
-#: ../data/ui/yelp-preferences.ui.h:7
-msgid "_Variable width:"
-msgstr "Anchura _variable:"
+#: ../libyelp/yelp-location-entry.c:311
+msgid "Flags Column"
+msgstr "Columna de opciones"
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Tipografía para el texto de ancho fijo"
+#: ../libyelp/yelp-location-entry.c:312
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr "Una columna en el modelo con las opciones YelpLocationEntryFlags"
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Tipografía para el texto"
+#: ../libyelp/yelp-location-entry.c:328
+msgid "Enable Search"
+msgstr "Activar búsqueda"
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Tipografía para el texto con ancho fijo."
+#: ../libyelp/yelp-location-entry.c:329
+msgid "Whether the location entry can be used as a search field"
+msgstr ""
+"Indica si la entrada de ubicación se puede usar como un campo de búsqueda"
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Tipografía para el texto de ancho variable."
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "El directorio «%s» no existe."
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr "Usar un cursor controlable por el teclado al ver las páginas."
+#: ../libyelp/yelp-settings.c:146
+msgid "GtkSettings"
+msgstr "GtkSettings"
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Usar cursor"
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr "Un objeto GtkSettings del que obtener la configuración"
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Usar tipografía del sistema"
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Usar el conjunto de tipos predeterminado del sistema."
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr "Un objeto GtkIconTheme del que obtener los iconos"
-#: ../src/eggdesktopfile.c:165
-#, c-format
-msgid "File is not a valid .desktop file"
-msgstr "El archivo no es un archivo .desktop válido"
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Ajuste de tipografía"
-#: ../src/eggdesktopfile.c:188
-#, c-format
-msgid "Unrecognized desktop file Version '%s'"
-msgstr "No se reconoce la versión «%s» del archivo desktop"
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr "Ajuste de tamaño que añadir a los tamaños de tipografía"
-#: ../src/eggdesktopfile.c:958
-#, c-format
-#| msgid "Settings"
-msgid "Starting %s"
-msgstr "Iniciando %s"
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Mostrar el cursor de texto"
-#: ../src/eggdesktopfile.c:1100
-#, c-format
-msgid "Application does not accept documents on command line"
-msgstr "La aplicación no acepta documentos en la línea de comandos"
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr "Mostrar el cursor de texto para navegación accesible"
-#: ../src/eggdesktopfile.c:1168
-#, c-format
-msgid "Unrecognized launch option: %d"
-msgstr "Opción de lanzamiento no reconocida: %d"
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Modo editor"
-#: ../src/eggdesktopfile.c:1373
-#, c-format
-msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
-msgstr ""
-"No se pueden pasar los URI de documentos a entradas de escritorio «Type=Link»"
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr "Activar características útiles para editores"
-#: ../src/eggdesktopfile.c:1392
+#: ../libyelp/yelp-transform.c:171
+msgid "XSLT Stylesheet"
+msgstr "Hoja de estilo XSLT"
+
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr "La ubicación de la hoja de estilo XSLT"
+
+#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394
#, c-format
-msgid "Not a launchable item"
-msgstr "No es un elemento lanzable"
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "La hoja de estilo XSLT «%s» falta o no es válida."
+
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "No se encontró atributo href en yelp:document\n"
+
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Se agotó la memoria"
+
+#: ../libyelp/yelp-view.c:94
+#| msgid "Print"
+msgid "_Print..."
+msgstr "_Imprimir…"
-#: ../src/eggsmclient.c:225
-msgid "Disable connection to session manager"
-msgstr "Desactivar la conexión con el gestor de sesiones"
+#: ../libyelp/yelp-view.c:99
+msgid "_Back"
+msgstr "A_trás"
-#: ../src/eggsmclient.c:228
-msgid "Specify file containing saved configuration"
-msgstr "Especificar el archivo que contiene la configuración guardada"
+#: ../libyelp/yelp-view.c:104
+msgid "_Forward"
+msgstr "A_delante"
-#: ../src/eggsmclient.c:228
-msgid "FILE"
-msgstr "ARCHIVO"
+#: ../libyelp/yelp-view.c:109
+msgid "_Previous Page"
+msgstr "Página _anterior"
-#: ../src/eggsmclient.c:231
-msgid "Specify session management ID"
-msgstr "Especificar el ID de gestión de sesión"
+#: ../libyelp/yelp-view.c:114
+msgid "_Next Page"
+msgstr "_Siguiente página"
-#: ../src/eggsmclient.c:231
-#| msgid "IDEs"
-msgid "ID"
-msgstr "ID"
+#: ../libyelp/yelp-view.c:317
+msgid "Yelp URI"
+msgstr "URI de Yelp"
-#: ../src/eggsmclient.c:252
-msgid "Session management options:"
-msgstr "Opciones de gestión de la sesión:"
+#: ../libyelp/yelp-view.c:318
+msgid "A YelpUri with the current location"
+msgstr "Un YelpUri con la ubicación actual"
-#: ../src/eggsmclient.c:253
-msgid "Show session management options"
-msgstr "Mostrar las opciones de gestión de la sesión"
+#: ../libyelp/yelp-view.c:326
+msgid "Loading State"
+msgstr "Estado de la carga"
-#: ../src/yelp-bookmarks.c:148
-msgid "Open Bookmark in New Window"
-msgstr "Abrir marcador en una ventana nueva"
+#: ../libyelp/yelp-view.c:327
+msgid "The loading state of the view"
+msgstr "El estado de carga de la vista"
-#: ../src/yelp-bookmarks.c:152
-msgid "Rename Bookmark"
-msgstr "Renombrar marcador"
+#: ../libyelp/yelp-view.c:336
+msgid "Page ID"
+msgstr "ID de página"
-#: ../src/yelp-bookmarks.c:156
-msgid "Remove Bookmark"
-msgstr "Eliminar marcador"
+#: ../libyelp/yelp-view.c:337
+#| msgid "The ID of the root page of the page being viewew"
+msgid "The ID of the root page of the page being viewed"
+msgstr "El ID de la página raíz de la página que se está viendo"
-#: ../src/yelp-bookmarks.c:314
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Ya existe un marcador titulado %s para esta página."
+#: ../libyelp/yelp-view.c:345
+msgid "Root Title"
+msgstr "Título raíz"
-#: ../src/yelp-bookmarks.c:390
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "Ya existe un marcador titulado <b>%s</b> para esta página."
-
-#: ../src/yelp-bookmarks.c:403
-msgid "Help Topics"
-msgstr "Temas de la ayuda"
-
-#: ../src/yelp-bookmarks.c:418
-msgid "Document Sections"
-msgstr "Secciones del documento"
-
-#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-man.c:292
-#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-mallard.c:281 ../src/yelp-man.c:293
-#, c-format
-msgid "The page %s was not found in the document %s."
-msgstr "La página %s no se encontró en el documento %s."
+#: ../libyelp/yelp-view.c:346
+#| msgid "The title of the root page of the page being viewew"
+msgid "The title of the root page of the page being viewed"
+msgstr "El título de la página raíz de la página que se está viendo"
-#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
-#: ../src/yelp-man.c:386
-#, c-format
-msgid "The requested page was not found in the document %s."
-msgstr "No se encontró la página requerida en el documento %s."
+#: ../libyelp/yelp-view.c:354
+msgid "Page Title"
+msgstr "Título de página"
-#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
-#: ../src/yelp-man.c:429
-msgid "File not found"
-msgstr "No se ha encontrado el archivo"
+#: ../libyelp/yelp-view.c:355
+msgid "The title of the page being viewed"
+msgstr "El título de la página que se está viendo"
-#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
-#: ../src/yelp-man.c:430
-#, c-format
-msgid "The file ‘%s’ does not exist."
-msgstr "El archivo «%s» no existe."
+#: ../libyelp/yelp-view.c:363
+msgid "Page Description"
+msgstr "Descripción de página"
-#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
-#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
-msgid "Could not parse file"
-msgstr "No se pudo analizar el archivo"
+#: ../libyelp/yelp-view.c:364
+msgid "The description of the page being viewed"
+msgstr "La descripción de la página que se está viendo"
-#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+#: ../libyelp/yelp-view.c:372
+msgid "Page Icon"
+msgstr "Icono de página"
+
+#: ../libyelp/yelp-view.c:373
+msgid "The icon of the page being viewed"
+msgstr "El icono de la página que se está viendo"
+
+#: ../libyelp/yelp-view.c:712
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed XML "
-"document."
-msgstr ""
-"El archivo «%s» no se pudo analizar porque no es un documento XML bien "
-"formado."
+msgid "Could not load a document for ‘%s’"
+msgstr "No se pudo cargar un documento para «%s»"
-#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+#: ../libyelp/yelp-view.c:718
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because one or more of its included files "
-"is not a well-formed XML document."
-msgstr ""
-"El archivo «%s» no se pudo analizar porque uno o más de sus archivos "
-"incluidos no son documentos XML bien formados."
+msgid "Could not load a document"
+msgstr "No se pudo cargar un documento"
-#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
-msgid "Unknown"
-msgstr "Desconocido"
+#: ../libyelp/yelp-view.c:785
+msgid "Not Found"
+msgstr "No encontrada"
+
+#: ../libyelp/yelp-view.c:788
+msgid "Cannot Read"
+msgstr "No se puede leer"
-#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
+#: ../libyelp/yelp-view.c:794
msgid "Unknown Error"
msgstr "Error desconocido"
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1710
-msgid "Could Not Read File"
-msgstr "No se pudo leer el archivo"
-
-#: ../src/yelp-error.c:146
-msgid "No information is available about this error."
-msgstr "No hay información disponible acerca de este error."
-
-#: ../src/yelp-info.c:396
+#: ../libyelp/yelp-view.c:885
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr ""
-"El archivo «%s» no se pudo analizar porque no es una página de información "
-"bien formada."
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "El URI «%s» no apunta a una página válida."
-#: ../src/yelp-io-channel.c:132
+#: ../libyelp/yelp-view.c:893
#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
-msgstr ""
-"El archivo «%s» no se pudo leer y decodificar. El archivo podría estar "
-"comprimido en un formato no soportado."
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "No se pudo analizar el URI «%s»."
-#: ../src/yelp-main.c:88
-msgid "Use a private session"
-msgstr "Usar una sesión privada"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr "Activar el modo editor"
-#: ../src/yelp-main.c:97
-msgid "Define which cache directory to use"
-msgstr "Define qué directorio de caché utilizar"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "Texto más gra_nde"
-#. Commandline parsing is done here
-#: ../src/yelp-main.c:355
-msgid " GNOME Help Browser"
-msgstr "Visor de ayuda de GNOME"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Aumentar el tamaño del texto"
-#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Ayuda"
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "Texto más peque_ño"
-#: ../src/yelp-mallard.c:311
-msgid "Directory not found"
-msgstr "No se encontró el directorio"
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr "Reducir el tamaño del texto"
-#: ../src/yelp-mallard.c:312
-#, c-format
-msgid "The directory ‘%s’ does not exist."
-msgstr "El directorio «%s» no existe."
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr "Mostrar el _cursor de texto"
-#: ../src/yelp-man.c:459
-#, c-format
+#: ../src/yelp-application.c:297 ../src/yelp-window.c:1475
+#: ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Ayuda"
+
+#: ../src/yelp-application.c:547
msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+"You do not have PackageKit installed. Package installation links require "
+"PackageKit."
msgstr ""
-"El archivo «%s» no se pudo analizar porque no es una página man bien formada."
+"No tiene PackageKit instalado. Los enlaces de instalación de paquetes "
+"requieren PackageKit."
-#: ../src/yelp-print.c:97
-msgid "Print"
-msgstr "Imprimir"
+#: ../src/yelp-window.c:254
+msgid "_Page"
+msgstr "_Página"
-#: ../src/yelp-print.c:167
-msgid "Preparing to print"
-msgstr "Preparándose para imprimir"
+#: ../src/yelp-window.c:255
+msgid "_View"
+msgstr "_Ver"
-#: ../src/yelp-print.c:261
-msgid "Printing is not supported on this printer"
-msgstr "La impresión no se soporta en esta impresora"
+#: ../src/yelp-window.c:256
+msgid "_Go"
+msgstr "_Ir a"
-#: ../src/yelp-print.c:264
-#, c-format
-msgid "Printer %s does not support postscript printing."
-msgstr "La impresora %s soporta la impresión PostScript."
+#: ../src/yelp-window.c:257
+msgid "_Bookmarks"
+msgstr "_Marcadores"
-#: ../src/yelp-print.c:366
-msgid "Waiting to print"
-msgstr "Esperando para imprimir"
+#: ../src/yelp-window.c:260
+msgid "_New Window"
+msgstr "Ventana _nueva"
-#: ../src/yelp-print.c:578
-msgid "An error occurred while printing"
-msgstr "Ocurrió un error al imprimir"
+#: ../src/yelp-window.c:265
+msgid "_Close"
+msgstr "_Cerrar"
-#: ../src/yelp-print.c:582
-#, c-format
-msgid "It was not possible to print your document: %s"
-msgstr "No es posible imprimir su documento: %s"
+#: ../src/yelp-window.c:270
+msgid "_Add Bookmark"
+msgstr "_Añadir marcador"
-#: ../src/yelp-search-parser.c:67
-msgid "the GNOME Support Forums"
-msgstr "Los fórums de asistencia de GNOME"
+#: ../src/yelp-window.c:275
+msgid "Find in Page..."
+msgstr "Buscar en la página…"
-#: ../src/yelp-search-parser.c:285
-#, c-format
-msgid "No results for \"%s\""
-msgstr "Sin resultados para «%s»"
+#: ../src/yelp-window.c:280 ../src/yelp-window.c:497
+msgid "Search..."
+msgstr "Buscar…"
-#: ../src/yelp-search-parser.c:286
-msgid ""
-"Try using different words to describe the problem you're having or the topic "
-"you want help with."
-msgstr ""
-"Intente usar palabras diferentes para describir el problema que está "
-"teniendo o el asunto del que quiere ayuda."
+#: ../src/yelp-window.c:285
+msgid "Open Location"
+msgstr "Abrir dirección"
-#: ../src/yelp-search-parser.c:289
-#, c-format
-msgid "Search results for \"%s\""
-msgstr "Buscar resultados para «%s»"
-
-#. TRANSLATORS: Please don't do anything funny with the
-#. * format arguement. It isn't really going through a printf
-#. * The %s is used to indicate where the name of the site (linked)
-#. * should be. This is done in the XSLT
-#.
-#: ../src/yelp-search-parser.c:303
-#, c-format
-msgid "Repeat the search online at %s"
-msgstr "Repetir la búsqueda en línea en %s"
-
-#. Translators: Do not translate this list exactly. These are
-#. * colon-separated words that aren't useful for choosing search
-#. * results; they will be different for each language. Include
-#. * pronouns, articles, very common verbs and prepositions,
-#. * words from question structures like "tell me about" and
-#. * "how do I", and words for functional states like "not",
-#. * "work", and "broken".
-#.
-#: ../src/yelp-search-parser.c:874
-msgid ""
-"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
-"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
-"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
-"where:who:will:with:won't:wont:why:work:working:works"
-msgstr ""
-"acerca de:con:contra:de:desde:elemento:es:hace:mi:por:que:según:sin:sobre:son"
-
-#. Translators: This is a list of common prefixes for words.
-#. * Do not translate this directly. Instead, use a colon
-#. * seperated list of word-starts. In English, an example
-#. * is re-. If there is none, please use the term NULL
-#. * If there is only one, please put a colon after.
-#. * E.g. if the common prefix is re then the string would be
-#. * "re:"
-#.
-#: ../src/yelp-search-parser.c:890
-msgid "re"
-msgstr "auto:re:"
-
-#. Translators: This is a list of (guess what?) common suffixes
-#. * to words. Things that may be put at ends of words to slightly
-#. * alter their meaning (like -ing and -s in English). This is a
-#. * colon seperated list (I like colons). If there are none,
-#. * please use the string NULL. If there is only 1, please
-#. * add a colon at the end of the list
-#.
-#: ../src/yelp-search-parser.c:899
-msgid "ers:er:ing:es:s:'s"
-msgstr "ando:mente:"
-
-#: ../src/yelp-search-parser.c:1095
-msgid "No Comment"
-msgstr "Sin comentario"
-
-#. Much bigger problems
-#: ../src/yelp-search.c:238
-msgid "Search could not be processed"
-msgstr "No se pudo procesar la búsqueda"
-
-#: ../src/yelp-search.c:239
-msgid "The requested search could not be processed."
-msgstr "No se pudo procesar la búsqueda requerida."
-
-#: ../src/yelp-search.c:366
-msgid "Cannot process the search"
-msgstr "No se puede procesar la búsqueda"
-
-#: ../src/yelp-search.c:367
-msgid "The search processor returned invalid results"
-msgstr "El procesador de búsqueda devolvió resultados no válidos"
-
-#: ../src/yelp-toc.c:267
+#: ../src/yelp-window.c:312
+msgid "Application"
+msgstr "Aplicación"
+
+#: ../src/yelp-window.c:313
+msgid "A YelpApplication instance that controls this window"
+msgstr "Una instancia de YelpApplication que controla esta ventana"
+
+#: ../src/yelp-window.c:1096
#, c-format
-msgid "The page %s was not found in the TOC."
-msgstr "No se encontró la página %s en el TOC."
+msgid "%i match"
+msgid_plural "%i matches"
+msgstr[0] "%i coincidencia"
+msgstr[1] "%i coincidencias"
-#: ../src/yelp-toc.c:366
-msgid "The requested page was not found in the TOC."
-msgstr "No se encontró la página requerida en el TOC."
+#: ../src/yelp-window.c:1121
+msgid "No matches"
+msgstr "Sin coincidencias"
-#: ../src/yelp-toc.c:438
-msgid ""
-"The TOC file could not be parsed because it is not a well-formed XML "
-"document."
-msgstr ""
-"El archivo TOC no se pudo analizar porque no es un documento XML bien "
-"formado."
+#: ../src/yelp-window.c:1418
+msgid "Loading"
+msgstr "Cargando"
-#: ../src/yelp-transform.c:86
-msgid "Invalid Stylesheet"
-msgstr "Hoja de estilo no válida"
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Obtenga ayuda acerca de GNOME"
-#: ../src/yelp-transform.c:87
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr "La hoja de estilo XSLT «%s» falta o no es válida."
+#~ msgid ""
+#~ "The file ‘%s’ could not be read and decoded. The file may be compressed "
+#~ "in an unsupported format."
+#~ msgstr ""
+#~ "El archivo «%s» no se pudo leer y decodificar. El archivo podría estar "
+#~ "comprimido en un formato no soportado."
-#: ../src/yelp-transform.c:122
-msgid "Broken Transformation"
-msgstr "Transformación rota"
+#~| msgid "Search..."
+#~ msgid "Search"
+#~ msgstr "Buscar"
-#: ../src/yelp-transform.c:123
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr "Ocurrió un error desconocido al intentar transformar el documento."
+#~ msgid "File is not a valid .desktop file"
+#~ msgstr "El archivo no es un archivo .desktop válido"
-#: ../src/yelp-transform.c:389
-msgid "No href attribute found on yelp:document\n"
-msgstr "No se encontró atributo href en yelp:document\n"
+#~ msgid "Unrecognized desktop file Version '%s'"
+#~ msgstr "No se reconoce la versión «%s» del archivo desktop"
-#: ../src/yelp-transform.c:404
-msgid "Out of memory"
-msgstr "Se agotó la memoria"
+#~ msgid "Starting %s"
+#~ msgstr "Iniciando %s"
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "_Archivo"
+#~ msgid "Application does not accept documents on command line"
+#~ msgstr "La aplicación no acepta documentos en la línea de comandos"
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "_Editar"
+#~ msgid "Unrecognized launch option: %d"
+#~ msgstr "Opción de lanzamiento no reconocida: %d"
-#: ../src/yelp-window.c:306
-msgid "_Go"
-msgstr "_Ir a"
+#~ msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+#~ msgstr ""
+#~ "No se pueden pasar los URI de documentos a entradas de escritorio "
+#~ "«Type=Link»"
-#: ../src/yelp-window.c:307
-msgid "_Bookmarks"
-msgstr "_Marcadores"
+#~ msgid "Not a launchable item"
+#~ msgstr "No es un elemento lanzable"
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "Ay_uda"
+#~ msgid "Disable connection to session manager"
+#~ msgstr "Desactivar la conexión con el gestor de sesiones"
-#: ../src/yelp-window.c:311
-msgid "_New Window"
-msgstr "Ventana _nueva"
+#~ msgid "Specify file containing saved configuration"
+#~ msgstr "Especificar el archivo que contiene la configuración guardada"
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "Imprimir este documento..."
+#~ msgid "FILE"
+#~ msgstr "ARCHIVO"
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "Imprimir esta página..."
+#~ msgid "Specify session management ID"
+#~ msgstr "Especificar el ID de gestión de sesión"
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "Acerca de este documento"
+#~ msgid "ID"
+#~ msgstr "ID"
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "Abrir _dirección"
+#~ msgid "Session management options:"
+#~ msgstr "Opciones de gestión de la sesión:"
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "_Cerrar ventana"
+#~ msgid "Show session management options"
+#~ msgstr "Mostrar las opciones de gestión de la sesión"
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "_Copiar"
+#~ msgid "Page not found"
+#~ msgstr "Página no encontrada"
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "Seleccionar _todo"
+#~ msgid "The page %s was not found in the document %s."
+#~ msgstr "La página %s no se encontró en el documento %s."
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "_Buscar..."
+#~ msgid "The requested page was not found in the document %s."
+#~ msgstr "No se encontró la página requerida en el documento %s."
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "Buscar _anterior"
+#~ msgid "File not found"
+#~ msgstr "No se ha encontrado el archivo"
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Buscar la anterior aparición de la palabra o frase"
+#~ msgid "Could not parse file"
+#~ msgstr "No se pudo analizar el archivo"
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "Buscar _siguiente"
+#~ msgid "Could Not Read File"
+#~ msgstr "No se pudo leer el archivo"
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "Buscar la siguiente aparición de la palabra o frase"
+#~ msgid "No information is available about this error."
+#~ msgstr "No hay información disponible acerca de este error."
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "Prefere_ncias"
+#~ msgid "Use a private session"
+#~ msgstr "Usar una sesión privada"
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "Re_cargar"
+#~ msgid "Define which cache directory to use"
+#~ msgstr "Define qué directorio de caché utilizar"
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "A_trás"
+#~ msgid " GNOME Help Browser"
+#~ msgstr "Visor de ayuda de GNOME"
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "Muestra la página anterior del historial"
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed because it is not a well-formed man "
+#~ "page."
+#~ msgstr ""
+#~ "El archivo «%s» no se pudo analizar porque no es una página man bien "
+#~ "formada."
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "A_delante"
+#~ msgid "Preparing to print"
+#~ msgstr "Preparándose para imprimir"
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "Muestra la siguiente página del historial"
+#~ msgid "Printing is not supported on this printer"
+#~ msgstr "La impresión no se soporta en esta impresora"
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "Temas de ay_uda"
+#~ msgid "Printer %s does not support postscript printing."
+#~ msgstr "La impresora %s soporta la impresión PostScript."
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "Ir a la lista de temas de ayuda"
+#~ msgid "Waiting to print"
+#~ msgstr "Esperando para imprimir"
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "Sección _anterior"
+#~ msgid "An error occurred while printing"
+#~ msgstr "Ocurrió un error al imprimir"
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "Sección _siguiente"
+#~ msgid "It was not possible to print your document: %s"
+#~ msgstr "No es posible imprimir su documento: %s"
-#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "Índ_ice"
+#~ msgid "the GNOME Support Forums"
+#~ msgstr "Los fórums de asistencia de GNOME"
-#: ../src/yelp-window.c:416
-msgid "_Add Bookmark"
-msgstr "_Añadir marcador"
+#~ msgid "No results for \"%s\""
+#~ msgstr "Sin resultados para «%s»"
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "_Editar marcadores..."
+#~ msgid ""
+#~ "Try using different words to describe the problem you're having or the "
+#~ "topic you want help with."
+#~ msgstr ""
+#~ "Intente usar palabras diferentes para describir el problema que está "
+#~ "teniendo o el asunto del que quiere ayuda."
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "_Abrir enlace"
+#~ msgid "Search results for \"%s\""
+#~ msgstr "Buscar resultados para «%s»"
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "Abrir enlace en una _ventana nueva"
+#~ msgid "Repeat the search online at %s"
+#~ msgstr "Repetir la búsqueda en línea en %s"
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "_Copiar dirección del enlace"
+#~ msgid ""
+#~ "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:"
+#~ "doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:"
+#~ "when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:"
+#~ "this:to:what:where:who:will:with:won't:wont:why:work:working:works"
+#~ msgstr ""
+#~ "acerca de:con:contra:de:desde:elemento:es:hace:mi:por:que:según:sin:sobre:"
+#~ "son"
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "Ayuda acerca de esta aplicación"
+#~ msgid "re"
+#~ msgstr "auto:re:"
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "Acerca _de"
+#~ msgid "ers:er:ing:es:s:'s"
+#~ msgstr "ando:mente:"
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "Copiar dirección de _correo-e"
+#~ msgid "No Comment"
+#~ msgstr "Sin comentario"
-#: ../src/yelp-window.c:524
-msgid "Help Browser"
-msgstr "Visor de ayuda"
+#~ msgid "Search could not be processed"
+#~ msgstr "No se pudo procesar la búsqueda"
-#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1772
-msgid "Loading..."
-msgstr "Cargando..."
+#~ msgid "The requested search could not be processed."
+#~ msgstr "No se pudo procesar la búsqueda requerida."
-#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
-msgid "Unknown Page"
-msgstr "Página desconocida"
+#~ msgid "Cannot process the search"
+#~ msgstr "No se puede procesar la búsqueda"
-#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104
-#: ../src/yelp-window.c:1113
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "El URI requerido «%s» no es válido"
+#~ msgid "The search processor returned invalid results"
+#~ msgstr "El procesador de búsqueda devolvió resultados no válidos"
-#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106
-#: ../src/yelp-window.c:1114
-msgid "Unable to load page"
-msgstr "No se pudo cargar la página"
+#~ msgid "The page %s was not found in the TOC."
+#~ msgstr "No se encontró la página %s en el TOC."
-#: ../src/yelp-window.c:1330
-msgid "_Search:"
-msgstr "_Buscar:"
+#~ msgid "The requested page was not found in the TOC."
+#~ msgstr "No se encontró la página requerida en el TOC."
-#: ../src/yelp-window.c:1331
-msgid "Search for other documentation"
-msgstr "Buscar otra documentación"
+#~ msgid ""
+#~ "The TOC file could not be parsed because it is not a well-formed XML "
+#~ "document."
+#~ msgstr ""
+#~ "El archivo TOC no se pudo analizar porque no es un documento XML bien "
+#~ "formado."
-#: ../src/yelp-window.c:1351
-msgid "Cannot create window"
-msgstr "No se puede crear la ventana"
+#~ msgid "Bookmarks"
+#~ msgstr "Marcadores"
-#: ../src/yelp-window.c:1357
-msgid "Cannot create search component"
-msgstr "No se puede crear el componente de búsqueda"
+#~ msgid "Re_name"
+#~ msgstr "Re_nombrar"
-#: ../src/yelp-window.c:1529
-msgid "Fin_d:"
-msgstr "_Buscar:"
+#~ msgid "_Bookmarks:"
+#~ msgstr "_Marcadores:"
-#: ../src/yelp-window.c:1551
-msgid "Find _Previous"
-msgstr "Buscar _anterior"
+#~ msgid "Add Bookmark"
+#~ msgstr "Añadir marcador"
-#: ../src/yelp-window.c:1563
-msgid "Find _Next"
-msgstr "Buscar _siguiente"
+#~ msgid "_Title:"
+#~ msgstr "_Título:"
-#: ../src/yelp-window.c:1576
-msgid "Phrase not found"
-msgstr "No se encontró la frase"
+#~ msgid "_Location:"
+#~ msgstr "_Dirección:"
-#: ../src/yelp-window.c:1707
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr ""
-"El archivo «%s» no se pudo leer. Este archivo quizá falte, o quizá no tenga "
-"permiso para leerlo."
+#~ msgid "Fonts"
+#~ msgstr "Tipografías"
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2577
-msgid "translator-credits"
-msgstr ""
-"Jorge González <jorgegonz@svn.gnome.org>, 2007-2009\n"
-"Francisco J.F. Serrador <serrador@cvs.gnome.com>, 2003-2006"
+#~ msgid "Preferences"
+#~ msgstr "Preferencias"
-#: ../src/yelp-window.c:2580
-msgid "Yelp"
-msgstr "Yelp"
+#~ msgid "_Browse with caret"
+#~ msgstr "_Examinar con cursor"
-#: ../src/yelp-window.c:2582
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "Un visor y explorador de documentación para el escritorio GNOME."
+#~ msgid "_Fixed width:"
+#~ msgstr "Anchura _fija:"
-#: ../yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "Obtenga ayuda acerca de GNOME"
+#~ msgid "_Use system fonts"
+#~ msgstr "_Usar tipografía del sistema"
+
+#~ msgid "_Variable width:"
+#~ msgstr "Anchura _variable:"
+
+#~ msgid "Font for fixed text"
+#~ msgstr "Tipografía para el texto de ancho fijo"
+
+#~ msgid "Font for text"
+#~ msgstr "Tipografía para el texto"
+
+#~ msgid "Font for text with fixed width."
+#~ msgstr "Tipografía para el texto con ancho fijo."
+
+#~ msgid "Font for text with variable width."
+#~ msgstr "Tipografía para el texto de ancho variable."
+
+#~ msgid "Use a keyboard-controllable caret when viewing pages."
+#~ msgstr "Usar un cursor controlable por el teclado al ver las páginas."
+
+#~ msgid "Use caret"
+#~ msgstr "Usar cursor"
+
+#~ msgid "Use system fonts"
+#~ msgstr "Usar tipografía del sistema"
+
+#~ msgid "Use the default fonts set for the system."
+#~ msgstr "Usar el conjunto de tipos predeterminado del sistema."
+
+#~ msgid "Open Bookmark in New Window"
+#~ msgstr "Abrir marcador en una ventana nueva"
+
+#~ msgid "Rename Bookmark"
+#~ msgstr "Renombrar marcador"
+
+#~ msgid "Remove Bookmark"
+#~ msgstr "Eliminar marcador"
+
+#~ msgid "A bookmark titled %s already exists for this page."
+#~ msgstr "Ya existe un marcador titulado %s para esta página."
+
+#~ msgid "A bookmark titled <b>%s</b> already exists for this page."
+#~ msgstr "Ya existe un marcador titulado <b>%s</b> para esta página."
+
+#~ msgid "Help Topics"
+#~ msgstr "Temas de la ayuda"
+
+#~ msgid "Document Sections"
+#~ msgstr "Secciones del documento"
+
+#~ msgid "Directory not found"
+#~ msgstr "No se encontró el directorio"
+
+#~ msgid "Broken Transformation"
+#~ msgstr "Transformación rota"
+
+#~ msgid ""
+#~ "An unknown error occurred while attempting to transform the document."
+#~ msgstr "Ocurrió un error desconocido al intentar transformar el documento."
+
+#~ msgid "_File"
+#~ msgstr "_Archivo"
+
+#~ msgid "_Edit"
+#~ msgstr "_Editar"
+
+#~ msgid "_Help"
+#~ msgstr "Ay_uda"
+
+#~ msgid "Print This Document ..."
+#~ msgstr "Imprimir este documento..."
+
+#~ msgid "About This Document"
+#~ msgstr "Acerca de este documento"
+
+#~ msgid "Open _Location"
+#~ msgstr "Abrir _dirección"
+
+#~ msgid "_Close Window"
+#~ msgstr "_Cerrar ventana"
+
+#~ msgid "_Copy"
+#~ msgstr "_Copiar"
+
+#~ msgid "_Select All"
+#~ msgstr "Seleccionar _todo"
+
+#~ msgid "_Find..."
+#~ msgstr "_Buscar..."
+
+#~ msgid "Find Pre_vious"
+#~ msgstr "Buscar _anterior"
+
+#~ msgid "Find previous occurrence of the word or phrase"
+#~ msgstr "Buscar la anterior aparición de la palabra o frase"
+
+#~ msgid "Find Ne_xt"
+#~ msgstr "Buscar _siguiente"
+
+#~ msgid "Find next occurrence of the word or phrase"
+#~ msgstr "Buscar la siguiente aparición de la palabra o frase"
+
+#~ msgid "_Preferences"
+#~ msgstr "Prefere_ncias"
+
+#~ msgid "_Reload"
+#~ msgstr "Re_cargar"
+
+#~ msgid "Show previous page in history"
+#~ msgstr "Muestra la página anterior del historial"
+
+#~ msgid "Show next page in history"
+#~ msgstr "Muestra la siguiente página del historial"
+
+#~ msgid "_Help Topics"
+#~ msgstr "Temas de ay_uda"
+
+#~ msgid "Go to the listing of help topics"
+#~ msgstr "Ir a la lista de temas de ayuda"
+
+#~ msgid "_Previous Section"
+#~ msgstr "Sección _anterior"
+
+#~ msgid "_Next Section"
+#~ msgstr "Sección _siguiente"
+
+#~ msgid "_Contents"
+#~ msgstr "Índ_ice"
+
+#~ msgid "_Edit Bookmarks..."
+#~ msgstr "_Editar marcadores..."
+
+#~ msgid "_Open Link"
+#~ msgstr "_Abrir enlace"
+
+#~ msgid "Open Link in _New Window"
+#~ msgstr "Abrir enlace en una _ventana nueva"
+
+#~ msgid "_Copy Link Address"
+#~ msgstr "_Copiar dirección del enlace"
+
+#~ msgid "Help On this application"
+#~ msgstr "Ayuda acerca de esta aplicación"
+
+#~ msgid "_About"
+#~ msgstr "Acerca _de"
+
+#~ msgid "Copy _Email Address"
+#~ msgstr "Copiar dirección de _correo-e"
+
+#~ msgid "Help Browser"
+#~ msgstr "Visor de ayuda"
+
+#~ msgid "Unknown Page"
+#~ msgstr "Página desconocida"
+
+#~ msgid "The requested URI \"%s\" is invalid"
+#~ msgstr "El URI requerido «%s» no es válido"
+
+#~ msgid "Unable to load page"
+#~ msgstr "No se pudo cargar la página"
+
+#~ msgid "Search for other documentation"
+#~ msgstr "Buscar otra documentación"
+
+#~ msgid "Cannot create search component"
+#~ msgstr "No se puede crear el componente de búsqueda"
+
+#~ msgid "Fin_d:"
+#~ msgstr "_Buscar:"
+
+#~ msgid "Find _Previous"
+#~ msgstr "Buscar _anterior"
+
+#~ msgid "Find _Next"
+#~ msgstr "Buscar _siguiente"
+
+#~ msgid "Phrase not found"
+#~ msgstr "No se encontró la frase"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be read. This file might be missing, or you "
+#~ "might not have permissions to read it."
+#~ msgstr ""
+#~ "El archivo «%s» no se pudo leer. Este archivo quizá falte, o quizá no "
+#~ "tenga permiso para leerlo."
+
+#~ msgid "translator-credits"
+#~ msgstr ""
+#~ "Jorge González <jorgegonz@svn.gnome.org>, 2007-2009\n"
+#~ "Francisco J.F. Serrador <serrador@cvs.gnome.com>, 2003-2006"
+
+#~ msgid "A documentation browser and viewer for the Gnome Desktop."
+#~ msgstr "Un visor y explorador de documentación para el escritorio GNOME."
#~ msgid "<b>Accessibility</b>"
#~ msgstr "<b>Accesibilidad</b>"
@@ -1582,12 +1665,6 @@ msgstr "Obtenga ayuda acerca de GNOME"
#~ msgid "_Find:"
#~ msgstr "_Buscar:"
-#~ msgid "_Next"
-#~ msgstr "_Siguiente"
-
-#~ msgid "_Previous"
-#~ msgstr "_Anterior"
-
#~ msgid "_Wrap around"
#~ msgstr "_Volver al principio"
diff --git a/po/gl.po b/po/gl.po
index 2bacb51c..07570034 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -14,19 +14,21 @@
# Suso Baleato <suso.baleato@xunta.es>, 2009.
# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
# Antón Méixome <meixome@mancomun.org>, 2009.
+# Fran Diéguez <frandieguez@ubuntu.com>, 2010.
+#
msgid ""
msgstr ""
"Project-Id-Version: yelp.master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 13:41+0200\n"
-"PO-Revision-Date: 2009-08-18 09:05+0200\n"
-"Last-Translator: Antón Méixome <meixome@mancomun.org>\n"
-"Language-Team: Galician <gnome@mancomun.org>\n"
+"POT-Creation-Date: 2010-05-20 18:49+0200\n"
+"PO-Revision-Date: 2010-05-20 18:49+0200\n"
+"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
+"Language-Team: Galician <gnome@g11.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: gl\n"
-"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\\\n"
"X-Generator: KBabel 1.11.4\n"
#: ../data/info.xml.in.h:1
@@ -301,7 +303,7 @@ msgstr "Gráficos en 2D"
msgid "3D Graphics"
msgstr "Gráficos en 3D"
-#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+#: ../data/toc.xml.in.h:3
msgid "Accessibility"
msgstr "Accesibilidade"
@@ -695,7 +697,7 @@ msgstr "Reprodutores"
msgid "Presentation Tools"
msgstr "Ferramentas de presentación"
-#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
+#: ../data/toc.xml.in.h:104
msgid "Printing"
msgstr "Imprimir"
@@ -879,701 +881,789 @@ msgstr "Benvido ao navegador de axuda do Gnome"
msgid "Word Processors"
msgstr "Procesadores de texto"
-#: ../data/ui/yelp-bookmarks.ui.h:1
-msgid "Bookmarks"
-msgstr "Marcadores"
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:155
+msgid "Invalid compressed data"
+msgstr "Datos comprimidos non válidos"
-#: ../data/ui/yelp-bookmarks.ui.h:2
-msgid "Re_name"
-msgstr "Re_nomear"
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:161
+msgid "Not enough memory"
+msgstr "Non hai suficiente memoria"
-#: ../data/ui/yelp-bookmarks.ui.h:3
-msgid "_Bookmarks:"
-msgstr "_Marcadores:"
+#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, c-format
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "Non se encontrou a páxina «%s» no documento «%s»."
-#: ../data/ui/yelp-bookmarks-add.ui.h:1
-msgid "Add Bookmark"
-msgstr "Engadir un marcador"
+#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366
+#, c-format
+msgid "The file does not exist."
+msgstr "O ficheiro non existe."
-#: ../data/ui/yelp-bookmarks-add.ui.h:2
-msgid "_Title:"
-msgstr "_Título:"
+#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "O ficheiro ‘%s’ non existe."
-#: ../data/ui/yelp-open-location.ui.h:1
-msgid "Open Location"
-msgstr "Abrir localización"
+#: ../libyelp/yelp-docbook-document.c:323
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"Non foi posíbel analizar o ficheiro ‘%s’ porque non é un documento HTML ben "
+"formado."
-#: ../data/ui/yelp-open-location.ui.h:2
-msgid "_Location:"
-msgstr "_Localización:"
+#: ../libyelp/yelp-docbook-document.c:336
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"Non foi posíbel o ficheiro ‘%s’ porque non é un documento XML ben formado."
-#: ../data/ui/yelp-preferences.ui.h:2
-msgid "Fonts"
-msgstr "Tipos de letra"
+#: ../libyelp/yelp-docbook-document.c:720
+msgid "Unknown"
+msgstr "Descoñecido"
-#: ../data/ui/yelp-preferences.ui.h:3
-msgid "Preferences"
-msgstr "Preferencias"
+#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309
+#, c-format
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "Non se encontrou a páxina solicitada no documento «%s»."
-#: ../data/ui/yelp-preferences.ui.h:4
-msgid "_Browse with caret"
-msgstr "_Navegar con cursor"
+#: ../libyelp/yelp-error.c:33
+#, c-format
+msgid "An unknown error occurred."
+msgstr "Produciuse un erro descoñecido."
-#: ../data/ui/yelp-preferences.ui.h:5
-msgid "_Fixed width:"
-msgstr "Largura _fixa:"
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de "
+"información ben elaborada."
-#: ../data/ui/yelp-preferences.ui.h:6
-msgid "_Use system fonts"
-msgstr "_Usar os tipos de letra do sistema"
+#: ../libyelp/yelp-location-entry.c:279
+msgid "Description Column"
+msgstr "Columna de descrición"
-#: ../data/ui/yelp-preferences.ui.h:7
-msgid "_Variable width:"
-msgstr "Largura _variábel:"
+#: ../libyelp/yelp-location-entry.c:280
+msgid "A column in the model to get descriptions from"
+msgstr "Unha columna no modelo desde onde obter as descricións"
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Tipo de letra para o texto fixo"
+#: ../libyelp/yelp-location-entry.c:295
+msgid "Icon Column"
+msgstr "Columna de icona"
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Tipo de letra para o texto"
+#: ../libyelp/yelp-location-entry.c:296
+msgid "A column in the model to get icon names from"
+msgstr "Unha columna no modelo desde onde obter os nomes de icona"
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Tipo de letra para o texto de largura fixa."
+#: ../libyelp/yelp-location-entry.c:311
+msgid "Flags Column"
+msgstr "Columna de opcións"
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Tipo de letra para o texto de largura variábel."
+#: ../libyelp/yelp-location-entry.c:312
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr "Unha columna no modelo con opcións YelpLocationEntryFlags"
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr "Usar un cursor controlábel polo teclado ao ver as páxinas."
+#: ../libyelp/yelp-location-entry.c:328
+msgid "Enable Search"
+msgstr "Activar a busca"
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Usar cursor"
+#: ../libyelp/yelp-location-entry.c:329
+msgid "Whether the location entry can be used as a search field"
+msgstr ""
+"Indica se a entrada de localización pode ser usada como un campo de busca"
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Usar tipos de letra do sistema"
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "O cartafol «%s» non existe."
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Usar o conxunto de tipos de letra predeterminado do sistema."
+#: ../libyelp/yelp-settings.c:146
+msgid "GtkSettings"
+msgstr "GtkSettings"
-#: ../src/eggdesktopfile.c:165
-#, c-format
-msgid "File is not a valid .desktop file"
-msgstr "O ficheiro non é un ficheiro .desktop válido"
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr "Un obxecto GtkSettings desde onde obter as configuracións"
-#: ../src/eggdesktopfile.c:188
-#, c-format
-msgid "Unrecognized desktop file Version '%s'"
-msgstr "Non se recoñece a versión '%s' do ficheiro de escritorio"
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
-#: ../src/eggdesktopfile.c:958
-#, c-format
-msgid "Starting %s"
-msgstr "Iniciando %s"
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr "Un obxecto GtkIconTheme desde onde obter iconas"
-#: ../src/eggdesktopfile.c:1100
-#, c-format
-msgid "Application does not accept documents on command line"
-msgstr "O aplicativo non acepta documentos na liña de ordes"
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Axuste do tipo de letra"
-#: ../src/eggdesktopfile.c:1168
-#, c-format
-msgid "Unrecognized launch option: %d"
-msgstr "Opción de lanzamento descoñecida: %d"
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr "Unha opción de tamaño onde engadir tamaños de tipo de letra"
-#: ../src/eggdesktopfile.c:1373
-#, c-format
-msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
-msgstr ""
-"Non se lle pode pasar os URI do documento a unha entrada de escritorio "
-"'Type=Link'"
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Mostrar o cursor de texto"
-#: ../src/eggdesktopfile.c:1392
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr "Mostrar o cursor de texto ou o cursor para unha navegación accesíbel"
+
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Modo editor"
+
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr "Activar as características útiles para editores"
+
+#: ../libyelp/yelp-transform.c:171
+msgid "XSLT Stylesheet"
+msgstr "Folla de estilo XSLT"
+
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr "A localización da folla de estilos XSLT"
+
+#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394
#, c-format
-msgid "Not a launchable item"
-msgstr "Non é un ítem lanzábel"
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "Falta a folla de estilo XSLT «%s» ou ben non é válida."
-#: ../src/eggsmclient.c:225
-msgid "Disable connection to session manager"
-msgstr "Desactivar a conexión ao xestor de sesións"
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "Non se localizou o atributo href en yelp:document\n"
-#: ../src/eggsmclient.c:228
-msgid "Specify file containing saved configuration"
-msgstr "Especificar o ficheiro que contén a configuración gardada"
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Sen memoria"
-#: ../src/eggsmclient.c:228
-msgid "FILE"
-msgstr "FICHEIRO"
+#: ../libyelp/yelp-view.c:111
+msgid "_Print..."
+msgstr "_Imprimir..."
-#: ../src/eggsmclient.c:231
-msgid "Specify session management ID"
-msgstr "Especificar o ID do xestor de sesións"
+#: ../libyelp/yelp-view.c:116
+msgid "_Back"
+msgstr "_Atrás"
-#: ../src/eggsmclient.c:231
-msgid "ID"
-msgstr "ID"
+#: ../libyelp/yelp-view.c:121
+msgid "_Forward"
+msgstr "_Adiante"
-#: ../src/eggsmclient.c:252
-msgid "Session management options:"
-msgstr "Opcións de xestión de sesión:"
+#: ../libyelp/yelp-view.c:126
+msgid "_Previous Page"
+msgstr "Páxina _anterior"
-#: ../src/eggsmclient.c:253
-msgid "Show session management options"
-msgstr "Mostrar as opcións da xestión de sesión"
+#: ../libyelp/yelp-view.c:131
+msgid "_Next Page"
+msgstr "Páxina _seguinte"
-#: ../src/yelp-bookmarks.c:148
-msgid "Open Bookmark in New Window"
-msgstr "Abrir marcador nunha xanela nova"
+#: ../libyelp/yelp-view.c:367
+msgid "Yelp URI"
+msgstr "URI do Yelp"
-#: ../src/yelp-bookmarks.c:152
-msgid "Rename Bookmark"
-msgstr "Renomear marcador"
+#: ../libyelp/yelp-view.c:368
+msgid "A YelpUri with the current location"
+msgstr "Unha YelpURI coa localización actual"
-#: ../src/yelp-bookmarks.c:156
-msgid "Remove Bookmark"
-msgstr "Eliminar marcador"
+#: ../libyelp/yelp-view.c:376
+msgid "Loading State"
+msgstr "Estado da carga"
-#: ../src/yelp-bookmarks.c:314
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Xa existe un marcador titulado %s para esta páxina."
+#: ../libyelp/yelp-view.c:377
+msgid "The loading state of the view"
+msgstr "O estado da carga da visualización"
-#: ../src/yelp-bookmarks.c:390
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "Xa existe un marcador titulado <b>%s</b> para esta páxina."
-
-#: ../src/yelp-bookmarks.c:403
-msgid "Help Topics"
-msgstr "Temas de axuda"
-
-#: ../src/yelp-bookmarks.c:418
-msgid "Document Sections"
-msgstr "Seccións do documento"
-
-#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-man.c:292
-#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
-msgid "Page not found"
-msgstr "Non se encontrou a páxina"
-
-#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-mallard.c:281 ../src/yelp-man.c:293
-#, c-format
-msgid "The page %s was not found in the document %s."
-msgstr "Non se encontrou a páxina %s no documento %s."
+#: ../libyelp/yelp-view.c:386
+msgid "Page ID"
+msgstr "ID da páxina"
-#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
-#: ../src/yelp-man.c:386
-#, c-format
-msgid "The requested page was not found in the document %s."
-msgstr "A páxina solicitada non se encontrou no documento %s."
+#: ../libyelp/yelp-view.c:387
+msgid "The ID of the root page of the page being viewed"
+msgstr "O ID da páxina raíz da páxina que está vendo"
-#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
-#: ../src/yelp-man.c:429
-msgid "File not found"
-msgstr "Non se encontrou o ficheiro"
+#: ../libyelp/yelp-view.c:395
+msgid "Root Title"
+msgstr "Título raíz"
-#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
-#: ../src/yelp-man.c:430
-#, c-format
-msgid "The file ‘%s’ does not exist."
-msgstr "O ficheiro ‘%s’ non existe."
+#: ../libyelp/yelp-view.c:396
+msgid "The title of the root page of the page being viewed"
+msgstr "O título da páxina raíz da páxina que se está vendo"
-#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
-#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
-msgid "Could not parse file"
-msgstr "Non foi posíbel analizar o ficheiro"
+#: ../libyelp/yelp-view.c:404
+msgid "Page Title"
+msgstr "Título de páxina"
-#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+#: ../libyelp/yelp-view.c:405
+msgid "The title of the page being viewed"
+msgstr "O título da páxina que está vendo"
+
+#: ../libyelp/yelp-view.c:413
+msgid "Page Description"
+msgstr "Descrición da páxina"
+
+#: ../libyelp/yelp-view.c:414
+msgid "The description of the page being viewed"
+msgstr "A descrición da páxina que está vendo"
+
+#: ../libyelp/yelp-view.c:422
+msgid "Page Icon"
+msgstr "Icona da páxina"
+
+#: ../libyelp/yelp-view.c:423
+msgid "The icon of the page being viewed"
+msgstr "A icona da páxina que está vendo"
+
+#: ../libyelp/yelp-view.c:733
+msgid "Save Image"
+msgstr "Gardar a imaxe"
+
+#: ../libyelp/yelp-view.c:815
+msgid "_Open Link"
+msgstr "_Abrir a ligazón"
+
+#: ../libyelp/yelp-view.c:820
+msgid "Open Link in New _Window"
+msgstr "Abrir ligazón nunha xanela _nova"
+
+#: ../libyelp/yelp-view.c:849
+msgid "_Save Image As..."
+msgstr "_Gardar imaxe como..."
+
+#: ../libyelp/yelp-view.c:855
+msgid "S_end Image To..."
+msgstr "G_ardar imaxe en..."
+
+#: ../libyelp/yelp-view.c:866
+msgid "_Copy Text"
+msgstr "_Copiar texto"
+
+#: ../libyelp/yelp-view.c:1037
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed XML "
-"document."
-msgstr ""
-"Non foi posíbel analizar o ficheiro ‘%s’ porque non é un documento HTML ben "
-"formado."
+msgid "Could not load a document for ‘%s’"
+msgstr "Non foi posíbel cargar un documento para «%s»"
-#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+#: ../libyelp/yelp-view.c:1043
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because one or more of its included files "
-"is not a well-formed XML document."
-msgstr ""
-"Non foi posíbel o ficheiro ‘%s’ porque non é un documento XML ben formado."
+msgid "Could not load a document"
+msgstr "Non foi posíbel cargar un documento"
-#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
-msgid "Unknown"
-msgstr "Descoñecido"
+#: ../libyelp/yelp-view.c:1110
+msgid "Not Found"
+msgstr "Non se encontrou"
+
+#: ../libyelp/yelp-view.c:1113
+msgid "Cannot Read"
+msgstr "Non é posíbel ler"
-#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
+#: ../libyelp/yelp-view.c:1119
msgid "Unknown Error"
msgstr "Erro descoñecido"
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1710
-msgid "Could Not Read File"
-msgstr "Non foi posíbel ler o ficheiro"
-
-#: ../src/yelp-error.c:146
-msgid "No information is available about this error."
-msgstr "Non hai información dispoñíbel sobre este erro."
-
-#: ../src/yelp-info.c:396
+#: ../libyelp/yelp-view.c:1210
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr ""
-"Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de "
-"información ben elaborada."
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "O URI «%s» non apunta a unha páxina válida."
-#: ../src/yelp-io-channel.c:132
+#: ../libyelp/yelp-view.c:1218
#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
-msgstr ""
-"Non foi posíbel ler nin descodificar o ficheiro '%s'. O ficheiro pode estar "
-"comprimido nun formato non soportado."
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "Non foi posíbel analizar o URI «%s»."
-#: ../src/yelp-main.c:88
-msgid "Use a private session"
-msgstr "Usar unha sesión privada"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr "Activar o modo editor"
-#: ../src/yelp-main.c:97
-msgid "Define which cache directory to use"
-msgstr "Definir o directorio da caché que se vai usar"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "Texto máis _grande"
-#. Commandline parsing is done here
-#: ../src/yelp-main.c:355
-msgid " GNOME Help Browser"
-msgstr " Navegador de axuda do Gnome"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Aumentar o tamaño do texto"
-#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Axuda"
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "Texto máis peque_no"
-#: ../src/yelp-mallard.c:311
-msgid "Directory not found"
-msgstr "Non se encontrou o cartafol"
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr "Reducir o tamaño do texto"
-#: ../src/yelp-mallard.c:312
-#, c-format
-msgid "The directory ‘%s’ does not exist."
-msgstr "O cartafol ‘%s’ non existe."
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr "Mostrar o _cursor de texto"
-#: ../src/yelp-man.c:459
-#, c-format
+#: ../src/yelp-application.c:297 ../src/yelp-window.c:1523
+#: ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Axuda"
+
+#: ../src/yelp-application.c:563
msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+"You do not have PackageKit installed. Package installation links require "
+"PackageKit."
msgstr ""
-"Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de manual "
-"ben formada."
+"Non ten PackageKit instalado. As ligazóns de instalación do paquete requiren "
+"PackageKit."
-#: ../src/yelp-print.c:97
-msgid "Print"
-msgstr "Imprimir"
+#: ../src/yelp-window.c:255
+msgid "_Page"
+msgstr "_Páxina"
+
+#: ../src/yelp-window.c:256
+msgid "_View"
+msgstr "_Ver"
+
+#: ../src/yelp-window.c:257
+msgid "_Go"
+msgstr "_Ir"
-#: ../src/yelp-print.c:167
-msgid "Preparing to print"
-msgstr "Preparándose para imprimir"
+#: ../src/yelp-window.c:258
+msgid "_Bookmarks"
+msgstr "_Marcadores"
-#: ../src/yelp-print.c:261
-msgid "Printing is not supported on this printer"
-msgstr "A impresión non se permite nesta impresora"
+#: ../src/yelp-window.c:261
+msgid "_New Window"
+msgstr "Xanela _nova"
-#: ../src/yelp-print.c:264
-#, c-format
-msgid "Printer %s does not support postscript printing."
-msgstr "A impresora %s non permite a impresión postscript."
+#: ../src/yelp-window.c:266
+msgid "_Close"
+msgstr "_Pechar"
-#: ../src/yelp-print.c:366
-msgid "Waiting to print"
-msgstr "Esperando para imprimir"
+#: ../src/yelp-window.c:271
+msgid "_Add Bookmark"
+msgstr "_Engadir marcador"
-#: ../src/yelp-print.c:578
-msgid "An error occurred while printing"
-msgstr "Ocorreu un erro ao imprimir"
+#: ../src/yelp-window.c:276
+msgid "Find in Page..."
+msgstr "Buscar na páxina…"
-#: ../src/yelp-print.c:582
-#, c-format
-msgid "It was not possible to print your document: %s"
-msgstr "Non foi posíbel imprimir o documento: %s"
+#: ../src/yelp-window.c:281 ../src/yelp-window.c:498
+msgid "Search..."
+msgstr "Buscar..."
-#: ../src/yelp-search-parser.c:67
-msgid "the GNOME Support Forums"
-msgstr "os foros de asistencia do Gnome"
+#: ../src/yelp-window.c:286
+msgid "Open Location"
+msgstr "Abrir localización"
-#: ../src/yelp-search-parser.c:285
-#, c-format
-msgid "No results for \"%s\""
-msgstr "Non hai resultados para \"%s\""
+#: ../src/yelp-window.c:313
+msgid "Application"
+msgstr "Aplicativos"
-#: ../src/yelp-search-parser.c:286
-msgid ""
-"Try using different words to describe the problem you're having or the topic "
-"you want help with."
-msgstr ""
-"Tente usar palabras diferentes para describir o problema que ten ou o tema "
-"sobre o que quere axuda."
+#: ../src/yelp-window.c:314
+msgid "A YelpApplication instance that controls this window"
+msgstr "Unha instancia de YelpApplications que controla esta xanela"
-#: ../src/yelp-search-parser.c:289
+#: ../src/yelp-window.c:1141
#, c-format
-msgid "Search results for \"%s\""
-msgstr "Buscar resultados para \"%s\""
-
-#. TRANSLATORS: Please don't do anything funny with the
-#. * format arguement. It isn't really going through a printf
-#. * The %s is used to indicate where the name of the site (linked)
-#. * should be. This is done in the XSLT
-#.
-#: ../src/yelp-search-parser.c:303
-#, c-format
-msgid "Repeat the search online at %s"
-msgstr "Repetir a busca en liña en %s"
-
-#. Translators: Do not translate this list exactly. These are
-#. * colon-separated words that aren't useful for choosing search
-#. * results; they will be different for each language. Include
-#. * pronouns, articles, very common verbs and prepositions,
-#. * words from question structures like "tell me about" and
-#. * "how do I", and words for functional states like "not",
-#. * "work", and "broken".
-#.
-#: ../src/yelp-search-parser.c:874
-msgid ""
-"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
-"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
-"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
-"where:who:will:with:won't:wont:why:work:working:works"
-msgstr ""
-"a:o:as:os:ao:á:como:con:contra:da:do:das:dos:de:desde:é:en:entre:fai:hai:"
-"houbo:no:na:nos:nas:non:para:por:que:segundo:se:sen:sobre:son:agás:ante: "
-"após:malia:mediante:menos:onda:para:perante:por:salvo:segundo:sen:senón: "
-"menos:onda:para:perante:sacado:sacando:quitando:salvante:sen:senón:so: sobre:"
-"tras:xunta:que:conforme:ca:coma:apenas:asemade:cando:mal:mentres: onde:logo:"
-"cando:entón:se:así:nin:mais:e"
-
-#. Translators: This is a list of common prefixes for words.
-#. * Do not translate this directly. Instead, use a colon
-#. * seperated list of word-starts. In English, an example
-#. * is re-. If there is none, please use the term NULL
-#. * If there is only one, please put a colon after.
-#. * E.g. if the common prefix is re then the string would be
-#. * "re:"
-#.
-#: ../src/yelp-search-parser.c:890
-msgid "re"
-msgstr "auto:re:des"
-
-#. Translators: This is a list of (guess what?) common suffixes
-#. * to words. Things that may be put at ends of words to slightly
-#. * alter their meaning (like -ing and -s in English). This is a
-#. * colon seperated list (I like colons). If there are none,
-#. * please use the string NULL. If there is only 1, please
-#. * add a colon at the end of the list
-#.
-#: ../src/yelp-search-parser.c:899
-msgid "ers:er:ing:es:s:'s"
-msgstr "ando:mente:ble:ción:dade"
-
-#: ../src/yelp-search-parser.c:1095
-msgid "No Comment"
-msgstr "Non hai comentarios"
-
-#. Much bigger problems
-#: ../src/yelp-search.c:238
-msgid "Search could not be processed"
-msgstr "Non foi posíbel procesar a busca"
-
-#: ../src/yelp-search.c:239
-msgid "The requested search could not be processed."
-msgstr "Non foi posíbel procesar a busca solicitada."
-
-#: ../src/yelp-search.c:366
-msgid "Cannot process the search"
-msgstr "Non é posíbel procesar a busca"
-
-#: ../src/yelp-search.c:367
-msgid "The search processor returned invalid results"
-msgstr "O procesador da busca devolveu resultados non válidos"
-
-#: ../src/yelp-toc.c:267
-#, c-format
-msgid "The page %s was not found in the TOC."
-msgstr "Non se encontrou a páxina %s no TOC."
+msgid "%i match"
+msgid_plural "%i matches"
+msgstr[0] "%i coincidencia"
+msgstr[1] "%i coincidencias"
-#: ../src/yelp-toc.c:366
-msgid "The requested page was not found in the TOC."
-msgstr "Non se encontrou a páxina solicitada no TOC."
+#: ../src/yelp-window.c:1166
+msgid "No matches"
+msgstr "Sen coincidencias"
-#: ../src/yelp-toc.c:438
-msgid ""
-"The TOC file could not be parsed because it is not a well-formed XML "
-"document."
-msgstr "Non se puido analizar o TOC porque non é un documento XML ben formado."
+#: ../src/yelp-window.c:1483
+msgid "Loading"
+msgstr "Cargando"
-#: ../src/yelp-transform.c:86
-msgid "Invalid Stylesheet"
-msgstr "A folla de cálculo non válida"
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Obter axuda co Gnome"
-#: ../src/yelp-transform.c:87
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr "Falta a folla de cálculo XSLT ‘%s’ ou ben non é válida."
+#~ msgid ""
+#~ "The file ‘%s’ could not be read and decoded. The file may be compressed "
+#~ "in an unsupported format."
+#~ msgstr ""
+#~ "Non foi posíbel ler nin descodificar o ficheiro '%s'. O ficheiro pode "
+#~ "estar comprimido nun formato non soportado."
-#: ../src/yelp-transform.c:122
-msgid "Broken Transformation"
-msgstr "Transformación rota"
+#~ msgid "Search"
+#~ msgstr "Buscar"
-#: ../src/yelp-transform.c:123
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr "Encontrouse un erro descoñecido ao tentar transformar o documento."
+#~ msgid "File is not a valid .desktop file"
+#~ msgstr "O ficheiro non é un ficheiro .desktop válido"
-#: ../src/yelp-transform.c:389
-msgid "No href attribute found on yelp:document\n"
-msgstr "Non se localizou o atributo href en yelp:document\n"
+#~ msgid "Unrecognized desktop file Version '%s'"
+#~ msgstr "Non se recoñece a versión '%s' do ficheiro de escritorio"
-#: ../src/yelp-transform.c:404
-msgid "Out of memory"
-msgstr "Sen memoria"
+#~ msgid "Starting %s"
+#~ msgstr "Iniciando %s"
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "_Ficheiro"
+#~ msgid "Application does not accept documents on command line"
+#~ msgstr "O aplicativo non acepta documentos na liña de ordes"
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "_Editar"
+#~ msgid "Unrecognized launch option: %d"
+#~ msgstr "Opción de lanzamento descoñecida: %d"
-#: ../src/yelp-window.c:306
-msgid "_Go"
-msgstr "_Ir"
+#~ msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+#~ msgstr ""
+#~ "Non se lle pode pasar os URI do documento a unha entrada de escritorio "
+#~ "'Type=Link'"
-#: ../src/yelp-window.c:307
-msgid "_Bookmarks"
-msgstr "_Marcadores"
+#~ msgid "Not a launchable item"
+#~ msgstr "Non é un ítem lanzábel"
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "_Axuda"
+#~ msgid "Disable connection to session manager"
+#~ msgstr "Desactivar a conexión ao xestor de sesións"
-#: ../src/yelp-window.c:311
-msgid "_New Window"
-msgstr "Xanela _nova"
+#~ msgid "Specify file containing saved configuration"
+#~ msgstr "Especificar o ficheiro que contén a configuración gardada"
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "Imprimir este documento…"
+#~ msgid "FILE"
+#~ msgstr "FICHEIRO"
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "Imprimir esta páxina…"
+#~ msgid "Specify session management ID"
+#~ msgstr "Especificar o ID do xestor de sesións"
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "Sobre este documento"
+#~ msgid "ID"
+#~ msgstr "ID"
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "Abrir _localización"
+#~ msgid "Session management options:"
+#~ msgstr "Opcións de xestión de sesión:"
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "_Pechar a xanela"
+#~ msgid "Show session management options"
+#~ msgstr "Mostrar as opcións da xestión de sesión"
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "_Copiar"
+#~ msgid "Page not found"
+#~ msgstr "Non se encontrou a páxina"
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "_Seleccionar todo"
+#~ msgid "The page %s was not found in the document %s."
+#~ msgstr "Non se encontrou a páxina %s no documento %s."
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "_Buscar..."
+#~ msgid "The requested page was not found in the document %s."
+#~ msgstr "A páxina solicitada non se encontrou no documento %s."
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "Buscar an_terior"
+#~ msgid "File not found"
+#~ msgstr "Non se encontrou o ficheiro"
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Buscar a anterior ocorrencia da palabra ou frase"
+#~ msgid "Could not parse file"
+#~ msgstr "Non foi posíbel analizar o ficheiro"
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "_Buscar seguinte"
+#~ msgid "Could Not Read File"
+#~ msgstr "Non foi posíbel ler o ficheiro"
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "Busca a seguinte ocorrencia da palabra ou frase"
+#~ msgid "No information is available about this error."
+#~ msgstr "Non hai información dispoñíbel sobre este erro."
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "_Preferencias"
+#~ msgid "Use a private session"
+#~ msgstr "Usar unha sesión privada"
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "_Recargar"
+#~ msgid "Define which cache directory to use"
+#~ msgstr "Definir o directorio da caché que se vai usar"
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "_Atrás"
+#~ msgid " GNOME Help Browser"
+#~ msgstr " Navegador de axuda do Gnome"
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "Mostrar a páxina anterior no historial"
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed because it is not a well-formed man "
+#~ "page."
+#~ msgstr ""
+#~ "Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de "
+#~ "manual ben formada."
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "_Adiante"
+#~ msgid "Preparing to print"
+#~ msgstr "Preparándose para imprimir"
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "Mostrar a páxina seguinte no historial"
+#~ msgid "Printing is not supported on this printer"
+#~ msgstr "A impresión non se permite nesta impresora"
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "_Temas de axuda"
+#~ msgid "Printer %s does not support postscript printing."
+#~ msgstr "A impresora %s non permite a impresión postscript."
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "Ir á lista de temas de axuda"
+#~ msgid "Waiting to print"
+#~ msgstr "Esperando para imprimir"
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "Sección _anterior"
+#~ msgid "An error occurred while printing"
+#~ msgstr "Ocorreu un erro ao imprimir"
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "Sección _seguinte"
+#~ msgid "It was not possible to print your document: %s"
+#~ msgstr "Non foi posíbel imprimir o documento: %s"
-#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "_Contidos"
+#~ msgid "the GNOME Support Forums"
+#~ msgstr "os foros de asistencia do Gnome"
-#: ../src/yelp-window.c:416
-msgid "_Add Bookmark"
-msgstr "_Engadir marcador"
+#~ msgid "No results for \"%s\""
+#~ msgstr "Non hai resultados para \"%s\""
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "_Editar marcadores..."
+#~ msgid ""
+#~ "Try using different words to describe the problem you're having or the "
+#~ "topic you want help with."
+#~ msgstr ""
+#~ "Tente usar palabras diferentes para describir o problema que ten ou o "
+#~ "tema sobre o que quere axuda."
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "_Abrir a ligazón"
+#~ msgid "Search results for \"%s\""
+#~ msgstr "Buscar resultados para \"%s\""
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "Abrir unha ligazón nunha xanela _nova"
+#~ msgid "Repeat the search online at %s"
+#~ msgstr "Repetir a busca en liña en %s"
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "_Copiar o enderezo da ligazón"
+#~ msgid ""
+#~ "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:"
+#~ "doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:"
+#~ "when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:"
+#~ "this:to:what:where:who:will:with:won't:wont:why:work:working:works"
+#~ msgstr ""
+#~ "a:o:as:os:ao:á:como:con:contra:da:do:das:dos:de:desde:é:en:entre:fai:hai:"
+#~ "houbo:no:na:nos:nas:non:para:por:que:segundo:se:sen:sobre:son:agás:ante: "
+#~ "após:malia:mediante:menos:onda:para:perante:por:salvo:segundo:sen:senón: "
+#~ "menos:onda:para:perante:sacado:sacando:quitando:salvante:sen:senón:so: "
+#~ "sobre:tras:xunta:que:conforme:ca:coma:apenas:asemade:cando:mal:mentres: "
+#~ "onde:logo:cando:entón:se:así:nin:mais:e"
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "Axuda sobre este aplicativo"
+#~ msgid "re"
+#~ msgstr "auto:re:des"
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "_Sobre"
+#~ msgid "ers:er:ing:es:s:'s"
+#~ msgstr "ando:mente:ble:ción:dade"
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "Copiar o enderezo de _correo"
+#~ msgid "No Comment"
+#~ msgstr "Non hai comentarios"
-#: ../src/yelp-window.c:524
-msgid "Help Browser"
-msgstr "Navegador da axuda"
+#~ msgid "Search could not be processed"
+#~ msgstr "Non foi posíbel procesar a busca"
-#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1772
-msgid "Loading..."
-msgstr "Cargando..."
+#~ msgid "The requested search could not be processed."
+#~ msgstr "Non foi posíbel procesar a busca solicitada."
-#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
-msgid "Unknown Page"
-msgstr "Páxina descoñecida"
+#~ msgid "Cannot process the search"
+#~ msgstr "Non é posíbel procesar a busca"
-#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104
-#: ../src/yelp-window.c:1113
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "O URI \"%s\" solicitado non é válido"
+#~ msgid "The search processor returned invalid results"
+#~ msgstr "O procesador da busca devolveu resultados non válidos"
-#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106
-#: ../src/yelp-window.c:1114
-msgid "Unable to load page"
-msgstr "Non é posíbel cargar a páxina"
+#~ msgid "The page %s was not found in the TOC."
+#~ msgstr "Non se encontrou a páxina %s no TOC."
-#: ../src/yelp-window.c:1330
-msgid "_Search:"
-msgstr "_Buscar:"
+#~ msgid "The requested page was not found in the TOC."
+#~ msgstr "Non se encontrou a páxina solicitada no TOC."
-#: ../src/yelp-window.c:1331
-msgid "Search for other documentation"
-msgstr "Buscar outra documentación"
+#~ msgid ""
+#~ "The TOC file could not be parsed because it is not a well-formed XML "
+#~ "document."
+#~ msgstr ""
+#~ "Non se puido analizar o TOC porque non é un documento XML ben formado."
-#: ../src/yelp-window.c:1351
-msgid "Cannot create window"
-msgstr "Non é posíbel crear a xanela"
+#~ msgid "Bookmarks"
+#~ msgstr "Marcadores"
-#: ../src/yelp-window.c:1357
-msgid "Cannot create search component"
-msgstr "Non é posíbel crear o compoñente de busca"
+#~ msgid "Re_name"
+#~ msgstr "Re_nomear"
-#: ../src/yelp-window.c:1529
-msgid "Fin_d:"
-msgstr "Lo_calizar:"
+#~ msgid "_Bookmarks:"
+#~ msgstr "_Marcadores:"
-#: ../src/yelp-window.c:1551
-msgid "Find _Previous"
-msgstr "Buscar _anterior"
+#~ msgid "Add Bookmark"
+#~ msgstr "Engadir un marcador"
-#: ../src/yelp-window.c:1563
-msgid "Find _Next"
-msgstr "Buscar _seguinte"
+#~ msgid "_Title:"
+#~ msgstr "_Título:"
-#: ../src/yelp-window.c:1576
-msgid "Phrase not found"
-msgstr "Non se encontrou a frase"
+#~ msgid "_Location:"
+#~ msgstr "_Localización:"
-#: ../src/yelp-window.c:1707
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr ""
-"Non foi posíbel ler o ficheiro '%s'. Pode que falte este ficheiro ou que non "
-"teña permiso para lelo."
+#~ msgid "Fonts"
+#~ msgstr "Tipos de letra"
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2577
-msgid "translator-credits"
-msgstr ""
-"Suso Baleato <suso.baleato@xunta.es>, 2009;\n"
-"Antón Méixome <meixome@mancomun.org>, 2009."
+#~ msgid "Preferences"
+#~ msgstr "Preferencias"
-#: ../src/yelp-window.c:2580
-msgid "Yelp"
-msgstr "Yelp"
+#~ msgid "_Browse with caret"
+#~ msgstr "_Navegar con cursor"
-#: ../src/yelp-window.c:2582
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "Un navegador e visualizador de documentación para o escritorio Gnome."
+#~ msgid "_Fixed width:"
+#~ msgstr "Largura _fixa:"
-#: ../yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "Obter axuda co Gnome"
+#~ msgid "_Use system fonts"
+#~ msgstr "_Usar os tipos de letra do sistema"
+
+#~ msgid "_Variable width:"
+#~ msgstr "Largura _variábel:"
+
+#~ msgid "Font for fixed text"
+#~ msgstr "Tipo de letra para o texto fixo"
+
+#~ msgid "Font for text"
+#~ msgstr "Tipo de letra para o texto"
+
+#~ msgid "Font for text with fixed width."
+#~ msgstr "Tipo de letra para o texto de largura fixa."
+
+#~ msgid "Font for text with variable width."
+#~ msgstr "Tipo de letra para o texto de largura variábel."
+
+#~ msgid "Use a keyboard-controllable caret when viewing pages."
+#~ msgstr "Usar un cursor controlábel polo teclado ao ver as páxinas."
+
+#~ msgid "Use caret"
+#~ msgstr "Usar cursor"
+
+#~ msgid "Use system fonts"
+#~ msgstr "Usar tipos de letra do sistema"
+
+#~ msgid "Use the default fonts set for the system."
+#~ msgstr "Usar o conxunto de tipos de letra predeterminado do sistema."
+
+#~ msgid "Open Bookmark in New Window"
+#~ msgstr "Abrir marcador nunha xanela nova"
+
+#~ msgid "Rename Bookmark"
+#~ msgstr "Renomear marcador"
+
+#~ msgid "Remove Bookmark"
+#~ msgstr "Eliminar marcador"
+
+#~ msgid "A bookmark titled %s already exists for this page."
+#~ msgstr "Xa existe un marcador titulado %s para esta páxina."
+
+#~ msgid "A bookmark titled <b>%s</b> already exists for this page."
+#~ msgstr "Xa existe un marcador titulado <b>%s</b> para esta páxina."
+
+#~ msgid "Help Topics"
+#~ msgstr "Temas de axuda"
+
+#~ msgid "Document Sections"
+#~ msgstr "Seccións do documento"
+
+#~ msgid "Directory not found"
+#~ msgstr "Non se encontrou o cartafol"
+
+#~ msgid "Broken Transformation"
+#~ msgstr "Transformación rota"
+
+#~ msgid ""
+#~ "An unknown error occurred while attempting to transform the document."
+#~ msgstr "Encontrouse un erro descoñecido ao tentar transformar o documento."
+
+#~ msgid "_File"
+#~ msgstr "_Ficheiro"
+
+#~ msgid "_Edit"
+#~ msgstr "_Editar"
+
+#~ msgid "_Help"
+#~ msgstr "_Axuda"
+
+#~ msgid "Print This Document ..."
+#~ msgstr "Imprimir este documento…"
+
+#~ msgid "About This Document"
+#~ msgstr "Sobre este documento"
+
+#~ msgid "Open _Location"
+#~ msgstr "Abrir _localización"
+
+#~ msgid "_Close Window"
+#~ msgstr "_Pechar a xanela"
+
+#~ msgid "_Select All"
+#~ msgstr "_Seleccionar todo"
+
+#~ msgid "_Find..."
+#~ msgstr "_Buscar..."
+
+#~ msgid "Find Pre_vious"
+#~ msgstr "Buscar an_terior"
+
+#~ msgid "Find previous occurrence of the word or phrase"
+#~ msgstr "Buscar a anterior ocorrencia da palabra ou frase"
+
+#~ msgid "Find Ne_xt"
+#~ msgstr "_Buscar seguinte"
+
+#~ msgid "Find next occurrence of the word or phrase"
+#~ msgstr "Busca a seguinte ocorrencia da palabra ou frase"
+
+#~ msgid "_Preferences"
+#~ msgstr "_Preferencias"
+
+#~ msgid "_Reload"
+#~ msgstr "_Recargar"
+
+#~ msgid "Show previous page in history"
+#~ msgstr "Mostrar a páxina anterior no historial"
+
+#~ msgid "Show next page in history"
+#~ msgstr "Mostrar a páxina seguinte no historial"
+
+#~ msgid "_Help Topics"
+#~ msgstr "_Temas de axuda"
+
+#~ msgid "Go to the listing of help topics"
+#~ msgstr "Ir á lista de temas de axuda"
+
+#~ msgid "_Contents"
+#~ msgstr "_Contidos"
+
+#~ msgid "_Edit Bookmarks..."
+#~ msgstr "_Editar marcadores..."
+
+#~ msgid "_Copy Link Address"
+#~ msgstr "_Copiar o enderezo da ligazón"
+
+#~ msgid "Help On this application"
+#~ msgstr "Axuda sobre este aplicativo"
+
+#~ msgid "_About"
+#~ msgstr "_Sobre"
+
+#~ msgid "Copy _Email Address"
+#~ msgstr "Copiar o enderezo de _correo"
+
+#~ msgid "Help Browser"
+#~ msgstr "Navegador da axuda"
+
+#~ msgid "Unknown Page"
+#~ msgstr "Páxina descoñecida"
+
+#~ msgid "The requested URI \"%s\" is invalid"
+#~ msgstr "O URI \"%s\" solicitado non é válido"
+
+#~ msgid "Unable to load page"
+#~ msgstr "Non é posíbel cargar a páxina"
+
+#~ msgid "Search for other documentation"
+#~ msgstr "Buscar outra documentación"
+
+#~ msgid "Cannot create search component"
+#~ msgstr "Non é posíbel crear o compoñente de busca"
+
+#~ msgid "Fin_d:"
+#~ msgstr "Lo_calizar:"
+
+#~ msgid "Find _Previous"
+#~ msgstr "Buscar _anterior"
+
+#~ msgid "Find _Next"
+#~ msgstr "Buscar _seguinte"
+
+#~ msgid "Phrase not found"
+#~ msgstr "Non se encontrou a frase"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be read. This file might be missing, or you "
+#~ "might not have permissions to read it."
+#~ msgstr ""
+#~ "Non foi posíbel ler o ficheiro '%s'. Pode que falte este ficheiro ou que "
+#~ "non teña permiso para lelo."
+
+#~ msgid "translator-credits"
+#~ msgstr ""
+#~ "Suso Baleato <suso.baleato@xunta.es>, 2009;\n"
+#~ "Antón Méixome <meixome@mancomun.org>, 2009."
+
+#~ msgid "A documentation browser and viewer for the Gnome Desktop."
+#~ msgstr ""
+#~ "Un navegador e visualizador de documentación para o escritorio Gnome."
diff --git a/po/id.po b/po/id.po
index e8053ea5..65d0ab48 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,23 +1,26 @@
-# Indonesia translation of yelp.
+# Indonesian translation of yelp.
# Copyright (C) 2004 THE yelp's COPYRIGHT HOLDER
# This file is distributed under the same license as the yelp package.
# Mohammad DAMT <mdamt@bisnisweb.com>, 2004.
# Ahmad Riza H Nst <ari@160c.afraid.org>, 2005.
-#
-#
+#
+#
msgid ""
msgstr ""
-"Project-Id-Version: yelp HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-04 10:56+0700\n"
-"PO-Revision-Date: 2006-08-04 10:56+0700\n"
-"Last-Translator: Ahmad Riza H Nst <ari@160c.afraid.org>\n"
-"Language-Team: Indonesia <kontak@id.gnome.org>\n"
+"Project-Id-Version: yelp master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n"
+"POT-Creation-Date: 2010-05-07 04:21+0000\n"
+"PO-Revision-Date: 2010-05-07 21:20+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: GNOME Indonesian Translation Team <gnome@i15n.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Indonesian\n"
+"X-Poedit-Country: Indonesia\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../data/info.xml.in.h:1 ../src/yelp-toc-pager.c:1838
+#: ../data/info.xml.in.h:1
msgid "GNU Info Pages"
msgstr "Halaman Info GNU"
@@ -42,6 +45,7 @@ msgid "Curses Functions"
msgstr "Fungsi Curses"
#: ../data/man.xml.in.h:5
+#: ../data/toc.xml.in.h:35
msgid "Development"
msgstr "Pembangunan"
@@ -49,7 +53,8 @@ msgstr "Pembangunan"
msgid "FORTRAN Functions"
msgstr "Fungsi FORTRAN"
-#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:15
+#: ../data/man.xml.in.h:7
+#: ../data/toc.xml.in.h:56
msgid "Games"
msgstr "Permainan"
@@ -61,7 +66,7 @@ msgstr "Perangkat Keras"
msgid "Kernel Routines"
msgstr "Rutin Kernel"
-#: ../data/man.xml.in.h:10 ../src/yelp-toc-pager.c:1832
+#: ../data/man.xml.in.h:10
msgid "Manual Pages"
msgstr "Berkas Manual"
@@ -282,1198 +287,946 @@ msgid "X11 Overviews"
msgstr "Ringkasan X11"
#: ../data/toc.xml.in.h:1
-msgid "Accessibility"
-msgstr "Kemudahan Akses"
+msgid "2D Graphics"
+msgstr "Grafis 2D"
#: ../data/toc.xml.in.h:2
-msgid "Accessories"
-msgstr "Aksesoris"
+msgid "3D Graphics"
+msgstr "Grafis 3D"
#: ../data/toc.xml.in.h:3
-msgid "Applications for fun"
-msgstr "Aplikasi untuk gembira"
+msgid "Accessibility"
+msgstr "Kemudahan Akses"
#: ../data/toc.xml.in.h:4
-msgid "Applications for manipulating or viewing graphics"
-msgstr "Aplikasi untuk memanipulasi atau menampilkan grafis"
+msgid "Action Games"
+msgstr "Permainan Aksi"
#: ../data/toc.xml.in.h:5
-msgid "Applications for word processing and other office tasks"
-msgstr "Aplikasi untuk proses kata dan tugas kantor lainnya"
+msgid "Adventure Games"
+msgstr "Permainan Petualangan"
#: ../data/toc.xml.in.h:6
-msgid "Applications related to X Windows"
-msgstr "Aplikasi yang berhubungan dengan X Windows"
+msgid "Amusement"
+msgstr "Hiburan"
#: ../data/toc.xml.in.h:7
-msgid "Applications related to multimedia"
-msgstr "Aplikasi yang berhubungan dengan multimedia"
+msgid "Applications for viewing and manipulating graphics"
+msgstr "Aplikasi untuk menilik atau memanipulasi grafis"
#: ../data/toc.xml.in.h:8
-msgid "Applications related to software development"
-msgstr "Aplikasi yang berhubungan dengan pengembangan perangkat lunak"
+msgid "Applications related to audio and video"
+msgstr "Aplikasi terkait audio dan video"
#: ../data/toc.xml.in.h:9
-msgid "Applications related to the internet"
-msgstr "Aplikasi yang berhubungan dengan internet"
+msgid "Applications that teach or aid in learning"
+msgstr "Aplikasi yang mengajarkan atau membantu proses belajar"
#: ../data/toc.xml.in.h:10
-msgid "Applications specific to the panel"
-msgstr "Aplikasi yang khusus terhadap panel"
+msgid "Arcade Games"
+msgstr "Permainan Arcade"
#: ../data/toc.xml.in.h:11
-msgid "Applications that support assistive technologies"
-msgstr "Aplikasi yang mendukung teknologi assistive"
+msgid "Archiving Tools"
+msgstr "Perangkat Pengarsipan"
#: ../data/toc.xml.in.h:12
-msgid "Desktop"
-msgstr "Desktop"
+msgid "Art"
+msgstr "Seni"
#: ../data/toc.xml.in.h:13
-msgid "Documents specific to the KDE Desktop Environment"
-msgstr "Dokumen khusus mengenai Lingkungan Desktop KDE"
+msgid "Artificial Intelligence"
+msgstr "Kecerdasan Buatan"
#: ../data/toc.xml.in.h:14
-msgid "Education"
-msgstr "Pendidikan"
+msgid "Astronomy"
+msgstr "Astronomi"
+
+#: ../data/toc.xml.in.h:15
+msgid "Biology"
+msgstr "Biologi"
#: ../data/toc.xml.in.h:16
-msgid "Graphics"
-msgstr "Grafis"
+msgid "Blocks Games"
+msgstr "Permainan Blok"
#: ../data/toc.xml.in.h:17
-msgid "Internet"
-msgstr "Internet"
+msgid "Board Games"
+msgstr "Permainan Papan"
#: ../data/toc.xml.in.h:18
-msgid "KDE"
-msgstr "KDE"
+msgid "Building"
+msgstr "Membangun"
#: ../data/toc.xml.in.h:19
-msgid "Learning applications"
-msgstr "Aplikasi Pembelajaran"
+msgid "Calculator"
+msgstr "Kalkulator"
#: ../data/toc.xml.in.h:20
-msgid "Miscellaneous documents"
-msgstr "Dokumen lain-lain"
+msgid "Calendar"
+msgstr "Kalender"
#: ../data/toc.xml.in.h:21
-msgid "Office"
-msgstr "Kantor"
+msgid "Card Games"
+msgstr "Permainan Kartu"
#: ../data/toc.xml.in.h:22
-msgid "Other Applications"
-msgstr "Aplikasi Lainnya"
+msgid "Charting Tools"
+msgstr "Perkakas Diagram"
#: ../data/toc.xml.in.h:23
-msgid "Other Documentation"
-msgstr "Dokumen Lainnya"
+msgid "Chat"
+msgstr "Mengobrol"
#: ../data/toc.xml.in.h:24
-msgid "Panel Applets"
-msgstr "Aplet Panel"
+msgid "Chemistry"
+msgstr "Kimia"
#: ../data/toc.xml.in.h:25
-msgid "Programming"
-msgstr "Pemrograman"
+msgid "Clocks"
+msgstr "Jam"
#: ../data/toc.xml.in.h:26
-msgid "Scientific"
-msgstr "Ilmuwan"
+msgid "Compression Tools"
+msgstr "Perkakas Kompresi"
#: ../data/toc.xml.in.h:27
-msgid "Scientific Applications."
-msgstr "Aplikasi Ilmiah"
+msgid "Computer Science"
+msgstr "Komputer Sains"
#: ../data/toc.xml.in.h:28
-msgid "Sound &amp; Video"
-msgstr "Suara $amp; Video"
+msgid "Construction"
+msgstr "Pembangunan"
#: ../data/toc.xml.in.h:29
-msgid "System Tools"
-msgstr "Alat Sistem"
+msgid "Contact Management"
+msgstr "Manajemen Kontak"
#: ../data/toc.xml.in.h:30
-msgid "Utilities to manage your computer"
-msgstr "Peralatan untuk mengelola komputer anda"
+msgid "Data Visualization"
+msgstr "Visualisasi Data"
#: ../data/toc.xml.in.h:31
-msgid "Utility applications"
-msgstr "Aplikasi Utilitas"
+msgid "Databases"
+msgstr "Basis Data"
#: ../data/toc.xml.in.h:32
-msgid "Variety of other applications"
-msgstr "Bermacam aplikasi lainnya"
+msgid "Debuggers"
+msgstr "Pengawa Kutu"
#: ../data/toc.xml.in.h:33
-msgid "Welcome to the GNOME Help Browser"
-msgstr "Selamat datang ke Perambah Bantuan GNOME"
+msgid "Desktop"
+msgstr "Desktop"
#: ../data/toc.xml.in.h:34
-msgid "X Applications"
-msgstr "Aplikasi X"
-
-#: ../data/ui/yelp.glade.h:1
-msgid "<b>Accessibility</b>"
-msgstr "<b>Kemudahan Akses</b>"
-
-#: ../data/ui/yelp.glade.h:2
-msgid "<b>Fonts</b>"
-msgstr "<b>Fonta</b>"
+msgid "Desktop Settings"
+msgstr "Tatanan Desktop"
-#: ../data/ui/yelp.glade.h:3
-msgid "Add Bookmark"
-msgstr "Tambah Pembatas"
+#: ../data/toc.xml.in.h:36
+msgid "Dialup"
+msgstr "Dialup"
-#: ../data/ui/yelp.glade.h:4
-msgid "Bookmarks"
-msgstr "Pembatas"
+#: ../data/toc.xml.in.h:37
+msgid "Dictionaries"
+msgstr "Kamus"
-#: ../data/ui/yelp.glade.h:5
-msgid "C_ase sensitive"
-msgstr "Bed_akan huruf besar/kecil"
+#. Translators: this is a menu title for burning audio and video to dics
+#: ../data/toc.xml.in.h:39
+msgid "Disc Burning"
+msgstr "Membakar Cakram"
-#: ../data/ui/yelp.glade.h:6
-msgid "Find"
-msgstr "Cari"
+#: ../data/toc.xml.in.h:40
+msgid "Economy"
+msgstr "Ekonomi"
-#: ../data/ui/yelp.glade.h:7
-msgid "Open Location"
-msgstr "Buka Lokasi"
-
-#: ../data/ui/yelp.glade.h:8
-msgid "Preferences"
-msgstr "Pengaturan"
+#: ../data/toc.xml.in.h:41
+msgid "Education"
+msgstr "Pendidikan"
-#: ../data/ui/yelp.glade.h:9
-msgid "Re_name"
-msgstr "Ubah _nama"
+#: ../data/toc.xml.in.h:42
+msgid "Electricity"
+msgstr "Kelistrikan"
-#: ../data/ui/yelp.glade.h:10
-msgid "_Bookmarks:"
-msgstr "Pem_batas:"
+#: ../data/toc.xml.in.h:43
+msgid "Electronics"
+msgstr "Elektronik"
-#: ../data/ui/yelp.glade.h:11
-msgid "_Browse with caret"
-msgstr "_Rambah dengan caret"
+#: ../data/toc.xml.in.h:44
+msgid "Email Tools"
+msgstr "Perkakas Surel"
-#: ../data/ui/yelp.glade.h:12
-msgid "_Find:"
-msgstr "_Temukan: "
+#: ../data/toc.xml.in.h:45
+msgid "Emulator"
+msgstr "Emulator"
-#: ../data/ui/yelp.glade.h:13
-msgid "_Fixed width:"
-msgstr "_Lebar yang pas:"
+#: ../data/toc.xml.in.h:46
+msgid "Engineering"
+msgstr "Rekayasa"
-#: ../data/ui/yelp.glade.h:14
-msgid "_Location:"
-msgstr "_Lokasi:"
+#: ../data/toc.xml.in.h:47
+msgid "File Manager"
+msgstr "Manajer Berkas"
-#: ../data/ui/yelp.glade.h:15
-msgid "_Next"
-msgstr "_Maju"
+#: ../data/toc.xml.in.h:48
+msgid "File Tools"
+msgstr "Perkakas Berkas"
-#: ../data/ui/yelp.glade.h:16
-msgid "_Previous"
-msgstr "M_undur"
+#: ../data/toc.xml.in.h:49
+msgid "File Transfer"
+msgstr "Transfer Berkas"
-#: ../data/ui/yelp.glade.h:17
-msgid "_Title:"
-msgstr "_Judul:"
+#: ../data/toc.xml.in.h:50
+msgid "Filesystem"
+msgstr "Sistem berkas"
-#: ../data/ui/yelp.glade.h:18
-msgid "_Use system fonts"
-msgstr "G_unakan jenis huruf sistem"
+#: ../data/toc.xml.in.h:51
+msgid "Financial Tools"
+msgstr "Perkakas Keuangan"
-#: ../data/ui/yelp.glade.h:19
-msgid "_Variable width:"
-msgstr "Lebar _variabel:"
+#: ../data/toc.xml.in.h:52
+msgid "Flow Charting Tools"
+msgstr "Perkakas Diagram Alir (Flow Chart)"
-#: ../data/ui/yelp.glade.h:20
-msgid "_Wrap around"
-msgstr "_Potong sekitar"
+#: ../data/toc.xml.in.h:53
+msgid "GNOME Applications"
+msgstr "Aplikasi GNOME"
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Fonta untuk teks pas"
+#: ../data/toc.xml.in.h:54
+msgid "GTK"
+msgstr "GTK"
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Jenis huruf untuk teks"
+#: ../data/toc.xml.in.h:55
+msgid "GUI Designers"
+msgstr "Perancang GUI"
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Jenis huruf untuk teks dengan lebar pas."
+#: ../data/toc.xml.in.h:57
+msgid "Generic applications for the GNOME environment"
+msgstr "Aplikasi generik bagi lingkungan GNOME"
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Jenis huruf untuk teks dengan lebar berubah."
+#: ../data/toc.xml.in.h:58
+msgid "Generic applications for the KDE environment"
+msgstr "Aplikasi generik bagi lingkungan KDE"
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr ""
-"Gunakan sebuah caret yang dapat dikendalikan oleh papan ketik ketika "
-"menampilkan halaman."
+#: ../data/toc.xml.in.h:59
+msgid "Geography"
+msgstr "Geografi"
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Gunakan caret"
+#: ../data/toc.xml.in.h:60
+msgid "Geology"
+msgstr "Geologi"
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Gunakan jenis huruf sistem"
+#: ../data/toc.xml.in.h:61
+msgid "Geoscience"
+msgstr "Ilmu Kebumian"
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Gunakan ketetapan jenis huruf standar untuk sistem."
+#: ../data/toc.xml.in.h:62
+msgid "Graphics"
+msgstr "Grafis"
-#: ../src/yelp-bookmarks.c:150
-msgid "Open Bookmark in New Window"
-msgstr "Buka Pembatas Buku pada Jendela Baru"
+#: ../data/toc.xml.in.h:63
+msgid "Guides and manuals for applications that connect to the outside world"
+msgstr "Panduan dan pegangan bagi aplikasi yang menyambung ke dunia luar"
-#: ../src/yelp-bookmarks.c:154
-msgid "Rename Bookmark"
-msgstr "Ubah Nama Pembatas"
+#: ../data/toc.xml.in.h:64
+msgid "Guides for getting involved in development"
+msgstr "Panduan untuk terlibat dalam pengembangan"
-#: ../src/yelp-bookmarks.c:158
-msgid "Remove Bookmark"
-msgstr "Buang Pembatas"
+#: ../data/toc.xml.in.h:65
+msgid "Ham Radio"
+msgstr "Radio Amatir"
-#: ../src/yelp-bookmarks.c:315
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Sebuah pembatas %s sudah ada untuk halaman ini."
+#: ../data/toc.xml.in.h:66
+msgid "Hardware Settings"
+msgstr "Tatanan Perangkat Keras"
-#: ../src/yelp-bookmarks.c:392
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "Judul sebuah pembatas buku <b>%s</b> sudah ada untuk halaman ini."
+#: ../data/toc.xml.in.h:67
+msgid "Have some fun"
+msgstr "Ayo bermain"
-#: ../src/yelp-bookmarks.c:405
-msgid "Help Topics"
-msgstr "Topik Tersedia"
+#: ../data/toc.xml.in.h:68
+msgid "History"
+msgstr "Sejarah"
-#: ../src/yelp-bookmarks.c:420
-msgid "Document Sections"
-msgstr "Bagian Dokumen"
+#: ../data/toc.xml.in.h:69
+msgid "IDEs"
+msgstr "IDE"
-#: ../src/yelp-db-pager.c:239 ../src/yelp-db-print-pager.c:190
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"not well-formed XML."
-msgstr ""
-"Berkas ‘%s’ tidak dapat diuraikan. Apakah berkas tidak ada atau tidak "
-"berbentuk XML yang baik."
+#: ../data/toc.xml.in.h:70
+msgid "IRC Clients"
+msgstr "Klien IRC"
-#: ../src/yelp-error.c:42 ../src/yelp-error.c:58
-msgid "An unknown error occured"
-msgstr "Kesalahan yang tidak diketahui terjadi"
+#: ../data/toc.xml.in.h:71
+msgid "Image Processing"
+msgstr "Pengolahan Citra"
-#: ../src/yelp-error.c:46
-msgid "Could not load document"
-msgstr "Tidak dapat membaca dokumen"
+#: ../data/toc.xml.in.h:72
+msgid "Instant Messaging"
+msgstr "Pesan Instan"
-#: ../src/yelp-error.c:48
-msgid "Could not load section"
-msgstr "Tidak dapat membaca bagian"
+#: ../data/toc.xml.in.h:73
+msgid "Internet"
+msgstr "Internet"
-#: ../src/yelp-error.c:50
-msgid "Could not read the table of contents"
-msgstr "Tidak dapat membaca daftar isi"
+#: ../data/toc.xml.in.h:74
+msgid "Java"
+msgstr "Java"
-#: ../src/yelp-error.c:52
-msgid "Unsupported Format"
-msgstr "Bentuk yang tidak didukung"
+#: ../data/toc.xml.in.h:75
+msgid "KDE Applications"
+msgstr "Aplikasi KDE"
-#: ../src/yelp-error.c:54
-msgid "Could not read document"
-msgstr "Tidak dapat membaca dokumen"
+#: ../data/toc.xml.in.h:76
+msgid "Kids Games"
+msgstr "Permainan Anak"
-#: ../src/yelp-error.c:56
-msgid "Could not process document"
-msgstr "Tidak dapat memproses dokumen"
+#: ../data/toc.xml.in.h:77
+msgid "Learn more about making your system more accessible for a range of disabilities"
+msgstr "Belajar lebih jauh tentang membuat sistem Anda lebih mudah dipakai penyandang cacat"
-#: ../src/yelp-error.c:66
-msgid "No information is available about the error."
-msgstr "Tidak ada informasi tersedia tentang kesalahan."
+#: ../data/toc.xml.in.h:78
+msgid "Licenses"
+msgstr "Lisensi"
-#: ../src/yelp-info-pager.c:188
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"not a well-formed info page."
-msgstr ""
-"Berkas ‘%s’ tidak dapat diuraikan. Apakah berkas tidak ada atau tidak "
-"berbentuk halaman info yang baik."
+#: ../data/toc.xml.in.h:79
+msgid "Literature"
+msgstr "Literatur"
-#: ../src/yelp-io-channel.c:101
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
-msgstr ""
-"Berkas ‘%s’ tidak dapat dibaca dan diuraikan. Berkas ini mungkin dipadatkan "
-"dalam bentuk yang tidak didukung."
+#: ../data/toc.xml.in.h:80
+msgid "Logic Games"
+msgstr "Permainan Logika"
-#: ../src/yelp-main.c:91
-msgid "Use a private session"
-msgstr "Pergunakan sesi pribadi"
+#: ../data/toc.xml.in.h:81
+msgid "Math"
+msgstr "Matematika"
-#: ../src/yelp-main.c:100
-msgid "Define which cache directory to use"
-msgstr "Tentukan direktori cache yang digunakan"
+#: ../data/toc.xml.in.h:82
+msgid "Medical Software"
+msgstr "Perangkat Lunak Kedokteran"
-#. Commandline parsing is done here
-#: ../src/yelp-main.c:354
-msgid " GNOME Help Browser"
-msgstr " Perambah Bantuan GNOME"
+#: ../data/toc.xml.in.h:83
+msgid "Midi"
+msgstr "Midi"
-#: ../src/yelp-main.c:370 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Bantuan"
+#: ../data/toc.xml.in.h:84
+msgid "Miscellaneous Documentation"
+msgstr "Dokumentasi Lain-lain"
-#: ../src/yelp-man-pager.c:263
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"formatted incorrectly."
-msgstr ""
-"Berkas ‘%s’ tidak dapat diuraikan. Apakah berkas tidak ada atau tidak "
-"dibentuk dengan benar."
+#: ../data/toc.xml.in.h:85
+msgid "Mixers"
+msgstr "Pencampur"
-#: ../src/yelp-pager.c:116
-msgid "Document Information"
-msgstr "Informasi Dokumen"
+#: ../data/toc.xml.in.h:86
+msgid "Monitor"
+msgstr "Monitor"
-#: ../src/yelp-pager.c:117
-msgid "The YelpDocInfo struct of the document"
-msgstr "Susunan YelpDocInfo dari dokumen"
+#: ../data/toc.xml.in.h:87
+msgid "Motif"
+msgstr "Motif"
-#: ../src/yelp-print.c:167
-msgid "Preparing to print"
-msgstr "Persiapan mencetak"
+#: ../data/toc.xml.in.h:88
+msgid "Music"
+msgstr "Musik"
-#: ../src/yelp-print.c:261
-msgid "Printing is not supported on this printer"
-msgstr "Pencetakan tidak didukung pada pencetak ini."
+#: ../data/toc.xml.in.h:89
+msgid "News"
+msgstr "Berita"
-#: ../src/yelp-print.c:264
-#, c-format
-msgid "Printer %s does not support postscript printing."
-msgstr "Pencetak %s tidak mendukung pencetakan postscript."
+#: ../data/toc.xml.in.h:90
+msgid "Numerical Analysis"
+msgstr "Analisis Numerik"
-#: ../src/yelp-print.c:337
-msgid "Printing"
-msgstr "Pencetakan"
+#: ../data/toc.xml.in.h:91
+msgid "OCR"
+msgstr "OCR"
-#: ../src/yelp-print.c:364
-msgid "<b>Printing</b>"
-msgstr "<b>Pencetakan</b>"
+#: ../data/toc.xml.in.h:92
+msgid "Office Applications"
+msgstr "Aplikasi Perkantoran"
-#: ../src/yelp-print.c:366
-msgid "Waiting to print"
-msgstr "Menunggu mencetak"
+#: ../data/toc.xml.in.h:93
+msgid "Office applications"
+msgstr "Aplikasi perkantoran"
-#: ../src/yelp-print.c:578
-msgid "An error occurred while printing"
-msgstr "Kesalahan terjadi ketika mencetak"
+#: ../data/toc.xml.in.h:94
+msgid "Other Documentation"
+msgstr "Dokumen Lainnya"
-#: ../src/yelp-print.c:582
-#, c-format
-msgid "It was not possible to print your document: %s"
-msgstr "Tidak memungkinkan untuk mencetak dokumen anda: %s"
-
-#. TRANSLATORS: If you know of a forum in your own language, please
-#. * change this URL to the type required for a search of the site.
-#. * The %s argument is the search terms
-#.
-#: ../src/yelp-search-pager.c:73
-#, c-format
-msgid ""
-"http://gnomesupport.org/forums/search.php?search_keywords=%s&search_cat=1"
-msgstr ""
-"http://gnomesupport.org/forums/search.php?search_keywords=%s&search_cat=1"
+#: ../data/toc.xml.in.h:95
+msgid "P2P"
+msgstr "P2P"
-#: ../src/yelp-search-pager.c:75
-msgid "the GNOME Support Forums"
-msgstr "Forum dukungan GNOME"
+#: ../data/toc.xml.in.h:96
+msgid "PDA Communication"
+msgstr "Komunikasi PDA"
-#: ../src/yelp-search-pager.c:710
-#, c-format
-msgid ""
-"Your search could not be processed. The file ‘%s’ is either missing or is "
-"not a valid XSLT stylesheet."
-msgstr ""
-"Pencarian anda tidak dapat diproses. Berkas '%s' hilang atau bukan merupkan "
-"lembar kerja XSLT yang benar."
+#: ../data/toc.xml.in.h:97
+msgid "Package Manager"
+msgstr "Manajer Paket"
-#: ../src/yelp-search-pager.c:762
-#, c-format
-msgid "No results for \"%s\""
-msgstr "Tidak ada hasil untuk \"%s\""
+#: ../data/toc.xml.in.h:98
+msgid "Parallel Computing"
+msgstr "Parallel Computing"
-#: ../src/yelp-search-pager.c:763
-msgid ""
-"Try using different words to describe the problem you're having or the topic "
-"you want help with."
-msgstr ""
-"Coba pergunakan kata yang berbeda untuk menjelaskan masalah yang anda miliki "
-"atau topik yang anda perlu bantuannya."
+#: ../data/toc.xml.in.h:99
+msgid "Photography"
+msgstr "Fotografi"
-#: ../src/yelp-search-pager.c:766
-#, c-format
-msgid "Search results for \"%s\""
-msgstr "Hasil pencarian untuk \"%s\""
-
-#. TRANSLATORS: Please don't do anything funny with the
-#. * format arguement. It isn't really going through a printf
-#. * The %s is used to indicate where the name of the site (linked)
-#. * should be. This is done in the XSLT
-#.
-#: ../src/yelp-search-pager.c:783
-#, c-format
-msgid "Repeat the search online at %s"
-msgstr "Ulangi pencarian online pada %s"
+#: ../data/toc.xml.in.h:100
+msgid "Physics"
+msgstr "Fisika"
-#: ../src/yelp-search-pager.c:855 ../src/yelp-toc-pager.c:2133
-#: ../src/yelp-xslt-pager.c:364
-msgid "No href attribute found on yelp:document"
-msgstr "Tidak menemukan atribut href pada dokumen yelp"
+#. Translators: this is a menu title for audio and video players
+#: ../data/toc.xml.in.h:102
+msgid "Players"
+msgstr "Pemutar"
-#: ../src/yelp-search-pager.c:869 ../src/yelp-toc-pager.c:2146
-#: ../src/yelp-xslt-pager.c:380 ../src/yelp-xslt-pager.c:531
-msgid "Out of memory"
-msgstr "Memori habis"
+#: ../data/toc.xml.in.h:103
+msgid "Presentation Tools"
+msgstr "Perkakas Presentasi"
-#: ../src/yelp-search-pager.c:910 ../src/yelp-toc-pager.c:2195
-msgid "Help Contents"
-msgstr "Daftar Isi"
-
-#. Translators: Do not translate this list exactly. These are
-#. * colon-separated words that aren't useful for choosing search
-#. * results; they will be different for each language. Include
-#. * pronouns, articles, very common verbs and prepositions,
-#. * words from question structures like "tell me about" and
-#. * "how do I", and words for functional states like "not",
-#. * "work", and "broken".
-#.
-#: ../src/yelp-search-pager.c:1236
-msgid ""
-"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
-"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
-"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
-"where:who:will:with:won't:wont:why:work:working:works"
-msgstr ""
+#: ../data/toc.xml.in.h:104
+msgid "Printing"
+msgstr "Pencetakan"
-#. Translators: This is a list of common prefixes for words.
-#. * Do not translate this directly. Instead, use a colon
-#. * seperated list of word-starts. In English, an example
-#. * is re-. If there is none, please use the term NULL
-#. * If there is only one, please put a colon after.
-#. * E.g. if the common prefix is re then the string would be
-#. * "re:"
-#.
-#: ../src/yelp-search-pager.c:1252
-msgid "re"
-msgstr ""
+#: ../data/toc.xml.in.h:105
+msgid "Profiling Tools"
+msgstr "Perkakas Profiling"
-#. Translators: This is a list of (guess what?) common suffixes
-#. * to words. Things that may be put at ends of words to slightly
-#. * alter their meaning (like -ing and -s in English). This is a
-#. * colon seperated list (I like colons). If there are none,
-#. * please use the strig NULL. If there is only 1, please
-#. * add a colon at the end of the list
-#.
-#: ../src/yelp-search-pager.c:1261
-msgid "ers:er:ing:es:s:'s"
-msgstr ""
+#: ../data/toc.xml.in.h:106
+msgid "Project Management Tools"
+msgstr "Perkakas Manajemen Projek"
-#: ../src/yelp-search-pager.c:1455 ../src/yelp-toc-pager.c:620
-#, c-format
-msgid "Could not load the OMF file '%s'."
-msgstr "Tidak dapat membaca berkas OMF '%s'."
-
-#. TRANSLATORS:
-#. This is an image of the opening quote character used to watermark
-#. blockquote elements. Different languages use different opening
-#. quote characters, so the icon name is translatable. The name of
-#. the icon should be "yelp-watermark-blockquote-XXXX", where XXXX
-#. is the Unicode code point of the opening quote character. For
-#. example, some languages use the double angle quotation mark, so
-#. those would use "yelp-watermark-blockquote-00AB". However, the
-#. image is not automagically created. Do not translate this to a
-#. value if there isn't a corresponding icon in yelp/data/icons.
-#. If you need an image created, contact the maintainers.
-#.
-#. Phew, now some notes on which character to use. Languages that
-#. use guillemets (angle quotations) should use either 00AB or 00BB,
-#. depending on whether the opening quotation is the left guillemet
-#. or the right guillemet. Languages that use inverted comma style
-#. quotations should use 201C, 201D, or 201E. Note that single
-#. quotation marks don't make very nice watermarks. So if you use
-#. single quotes as your primary (outer) quotation marks, you should
-#. just use the corresponding double quote watermark.
-#.
-#: ../src/yelp-settings.c:151
-msgid "yelp-watermark-blockquote-201C"
-msgstr "yelp-watermark-blockquote-201C"
-
-#: ../src/yelp-toc-pager.c:265
-msgid "YelpTocPager: Pause count is negative."
-msgstr "YelpTocPager: Perhitungan istirahat bernilai negatif."
-
-#: ../src/yelp-toc-pager.c:371 ../src/yelp-toc-pager.c:1946
-#, c-format
-msgid ""
-"The table of contents could not be processed. The file ‘%s’ is either "
-"missing or is not a valid XSLT stylesheet."
-msgstr ""
-"Daftar Isi tidak dapat diproses. Berkas ‘%s’ apakah hilang atau bukan gaya "
-"XSLT yang benar."
+#: ../data/toc.xml.in.h:107
+msgid "Publishing"
+msgstr "Penerbitan"
-#: ../src/yelp-toc-pager.c:1099
-#, c-format
-msgid "Read man page for %s"
-msgstr "Baca halaman manual untuk %s"
+#: ../data/toc.xml.in.h:108
+msgid "Qt"
+msgstr "Qt"
-#: ../src/yelp-toc-pager.c:1692
-#, c-format
-msgid "Read info page for %s"
-msgstr "Baca halaman info untuk %s"
+#: ../data/toc.xml.in.h:109
+msgid "Raster Graphics"
+msgstr "Grafis Raster"
-#: ../src/yelp-toc-pager.c:1805
-#, c-format
-msgid ""
-"The table of contents could not be loaded. The file ‘%s’ is either missing "
-"or is not well-formed XML."
-msgstr ""
-"Daftar isi tidak dapat dibaca. Berkas ‘%s’ apakah hilang atau tidak berada "
-"pada bentuk XML yang benar."
+#. Translators: this is a menu title for audio and video recorders
+#: ../data/toc.xml.in.h:111
+msgid "Recorders"
+msgstr "Perekam"
-#: ../src/yelp-toc-pager.c:1827
-msgid "Command Line Help"
-msgstr "Bantuan Perintah Baris"
+#: ../data/toc.xml.in.h:112
+msgid "Remote Access"
+msgstr "Akses Jarak Jauh"
-#: ../src/yelp-window.c:318
-msgid "_File"
-msgstr "_Berkas"
+#: ../data/toc.xml.in.h:113
+msgid "Revision Control"
+msgstr "Kendali Revisi"
-#: ../src/yelp-window.c:319
-msgid "_Edit"
-msgstr "_Ubah"
+#: ../data/toc.xml.in.h:114
+msgid "Robotics"
+msgstr "Robotika"
-#: ../src/yelp-window.c:320
-msgid "_Go"
-msgstr "B_uka"
+#: ../data/toc.xml.in.h:115
+msgid "Role Playing Games"
+msgstr "Permainan Role Playing"
-#: ../src/yelp-window.c:321
-msgid "_Bookmarks"
-msgstr "Pem_batas"
+#: ../data/toc.xml.in.h:116
+msgid "Scanning"
+msgstr "Pemindaian"
-#: ../src/yelp-window.c:322
-msgid "_Help"
-msgstr "Ba_ntuan"
+#: ../data/toc.xml.in.h:117
+msgid "Science"
+msgstr "Sains"
-#: ../src/yelp-window.c:325
-msgid "_New Window"
-msgstr "_Jendela Baru"
+#: ../data/toc.xml.in.h:118
+msgid "Security"
+msgstr "Keamanan"
-#: ../src/yelp-window.c:330
-msgid "Print This Document"
-msgstr "Cetak Dokumen Ini"
+#: ../data/toc.xml.in.h:119
+msgid "Sequencers"
+msgstr "Sequencer"
-#: ../src/yelp-window.c:335
-msgid "Print This Page"
-msgstr "Cetak Halaman Ini"
+#: ../data/toc.xml.in.h:120
+msgid "Settings"
+msgstr "Tatanan"
-#: ../src/yelp-window.c:340
-msgid "About This Document"
-msgstr "Tentang Dokumen Ini"
+#: ../data/toc.xml.in.h:121
+msgid "Settings users can manipulate to make their environment more pleasant"
+msgstr "Tatanan yang dapat dimanipulasi pengguna untuk membuat lingkungan mereka lebih nyaman"
-#: ../src/yelp-window.c:345
-msgid "Open _Location"
-msgstr "Buka _Lokasi"
+#: ../data/toc.xml.in.h:122
+msgid "Simulation Games"
+msgstr "Permainan Simulasi"
-#: ../src/yelp-window.c:350
-msgid "_Close Window"
-msgstr "_Tutup Jendela"
+#: ../data/toc.xml.in.h:123
+msgid "Sound"
+msgstr "Suara"
-#: ../src/yelp-window.c:356
-msgid "_Copy"
-msgstr "_Salin"
+#: ../data/toc.xml.in.h:124
+msgid "Sound &amp; Video"
+msgstr "Suara $amp; Video"
-#: ../src/yelp-window.c:362
-msgid "_Select All"
-msgstr "_Pilih Semua"
+#: ../data/toc.xml.in.h:125
+msgid "Sound &amp; Video Editing"
+msgstr "Penyuntingan Suara &amp; Video"
-#: ../src/yelp-window.c:367
-msgid "_Find..."
-msgstr "_Cari..."
+#: ../data/toc.xml.in.h:126
+msgid "Sports"
+msgstr "Olah Raga"
-#: ../src/yelp-window.c:372
-msgid "Find Pre_vious"
-msgstr "Temukan Seb_elumnya"
+#: ../data/toc.xml.in.h:127
+msgid "Sports Games"
+msgstr "Permainan Olah Raga"
-#: ../src/yelp-window.c:374
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Temukan kata atau frasa sebelumnya"
+#: ../data/toc.xml.in.h:128
+msgid "Spreadsheet Tools"
+msgstr "Perkakas Spreadsheet"
-#: ../src/yelp-window.c:377
-msgid "Find Ne_xt"
-msgstr "Temukan Sel_anjutnya"
+#: ../data/toc.xml.in.h:129
+msgid "Strategy Games"
+msgstr "Permainan Strategi"
-#: ../src/yelp-window.c:379
-msgid "Find next occurrence of the word or phrase"
-msgstr "Temukan kata atau frasa selanjutnya"
+#: ../data/toc.xml.in.h:130
+msgid "System"
+msgstr "Sistem"
-#: ../src/yelp-window.c:382
-msgid "_Preferences"
-msgstr "_Pengaturan"
+#: ../data/toc.xml.in.h:131
+msgid "TV"
+msgstr "TV"
-#: ../src/yelp-window.c:387
-msgid "_Reload"
-msgstr "_Baca ulang"
+#: ../data/toc.xml.in.h:132
+msgid "Telephony"
+msgstr "Telefoni"
-#: ../src/yelp-window.c:399
-msgid "_Back"
-msgstr "Kem_bali"
+#: ../data/toc.xml.in.h:133
+msgid "Telephony Tools"
+msgstr "Perkakas Telefoni"
-#: ../src/yelp-window.c:401
-msgid "Show previous page in history"
-msgstr "Tampilkan layar sebelumnya dalam catatan"
+#: ../data/toc.xml.in.h:134
+msgid "Terminal Emulator"
+msgstr "Emulator Terminal"
-#: ../src/yelp-window.c:404
-msgid "_Forward"
-msgstr "_Maju"
+#: ../data/toc.xml.in.h:135
+msgid "Text Editors"
+msgstr "Penyunting Teks"
-#: ../src/yelp-window.c:406
-msgid "Show next page in history"
-msgstr "Tampilkan layar berikutnya dalam catatan"
+#: ../data/toc.xml.in.h:136
+msgid "Text Tools"
+msgstr "Perkakas Teks"
-#: ../src/yelp-window.c:409
-msgid "_Help Topics"
-msgstr "Topik _Bantuan"
+#: ../data/toc.xml.in.h:137
+msgid "Tools to help you manage your computer"
+msgstr "Peralatan untuk membantu mengelola komputer Anda"
-#: ../src/yelp-window.c:411
-msgid "Go to the listing of help topics"
-msgstr "Buka daftar topik bantuan"
+#: ../data/toc.xml.in.h:138
+msgid "Translation Tools"
+msgstr "Perkakas Penerjemahan"
-#: ../src/yelp-window.c:414
-msgid "_Previous Section"
-msgstr "Bagian Se_belumnya"
+#: ../data/toc.xml.in.h:139
+msgid "Tuners"
+msgstr "Radio"
-#: ../src/yelp-window.c:419
-msgid "_Next Section"
-msgstr "Bagian Selanjut_nya"
+#: ../data/toc.xml.in.h:140
+msgid "Utilities"
+msgstr "Peralatan"
-#: ../src/yelp-window.c:424 ../src/yelp-window.c:456
-msgid "_Contents"
-msgstr "Daftar _Isi"
+#: ../data/toc.xml.in.h:141
+msgid "Utilities to help you get work done"
+msgstr "Utilitas untuk membantu Anda menyelesaikan pekerjaan"
-#: ../src/yelp-window.c:430
-msgid "_Add Bookmark"
-msgstr "T_ambah Pembatas"
+#: ../data/toc.xml.in.h:142
+msgid "Vector Graphics"
+msgstr "Grafis Vektor"
-#: ../src/yelp-window.c:435
-msgid "_Edit Bookmarks..."
-msgstr "_Ubah Pembatas..."
+#: ../data/toc.xml.in.h:143
+msgid "Video"
+msgstr "Video"
-#: ../src/yelp-window.c:441
-msgid "_Open Link"
-msgstr "_Buka Taut"
+#: ../data/toc.xml.in.h:144
+msgid "Video Conference"
+msgstr "Konferensi Video"
-#: ../src/yelp-window.c:446
-msgid "Open Link in _New Window"
-msgstr "Buka Taut pada Jendela _Baru"
+#. Translators: This is a menu title for graphics viewing applications
+#: ../data/toc.xml.in.h:146
+msgid "Viewer"
+msgstr "Penilik"
-#: ../src/yelp-window.c:451
-msgid "_Copy Link Address"
-msgstr "_Salin Alamat Taut"
+#: ../data/toc.xml.in.h:147
+msgid "Web Browser"
+msgstr "Peramban Web"
-#: ../src/yelp-window.c:458
-msgid "Help On this application"
-msgstr "Bantuan Pada Aplikasi ini"
+#: ../data/toc.xml.in.h:148
+msgid "Web Development"
+msgstr "Pengembangan Web"
-#: ../src/yelp-window.c:461
-msgid "_About"
-msgstr "Keter_angan Program"
+#: ../data/toc.xml.in.h:149
+msgid "Welcome to the GNOME Help Browser"
+msgstr "Selamat datang ke Perambah Bantuan GNOME"
-#: ../src/yelp-window.c:466
-msgid "Copy _Email Address"
-msgstr "_Salin Alamat Surat"
+#: ../data/toc.xml.in.h:150
+msgid "Word Processors"
+msgstr "Pengolah Kata"
-#: ../src/yelp-window.c:515
-msgid "Help Browser"
-msgstr "Perambah Bantuan"
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:155
+msgid "Invalid compressed data"
+msgstr "Data terkompresi tak valid"
-#: ../src/yelp-window.c:926 ../src/yelp-window.c:1082
-msgid "The Uniform Resource Identifier for the file is invalid."
-msgstr "Penanda Seragam Sumber untuk berkas ini tidak benar."
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:161
+msgid "Not enough memory"
+msgstr "Memori tak cukup"
-#: ../src/yelp-window.c:938 ../src/yelp-window.c:1077
+#: ../libyelp/yelp-docbook-document.c:264
+#: ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
#, c-format
-msgid ""
-"The Uniform Resource Identifier ‘%s’ is invalid or does not point to an "
-"actual file."
-msgstr ""
-"Penanda Seragam Sumber ‘%s’ adalah salah atau tidak menunjuk ke berkas yang "
-"ada."
-
-#: ../src/yelp-window.c:1026 ../src/yelp-window.c:1506
-msgid "Man pages are not supported in this version."
-msgstr "Halaman man tidak didukung pada versi ini."
-
-#: ../src/yelp-window.c:1036 ../src/yelp-window.c:1497
-msgid "GNU info pages are not supported in this version"
-msgstr "Halaman info GNU tidak didukung pada versi ini"
-
-#: ../src/yelp-window.c:1052 ../src/yelp-window.c:1519
-msgid "Search is not supported in this version."
-msgstr "Pencarian tidak didukung pada versi ini."
-
-#: ../src/yelp-window.c:1057
-msgid ""
-"SGML documents are no longer supported. Please ask the author of the "
-"document to convert to XML."
-msgstr ""
-"Dokumen SGML tidak lagi didukung. Silahkan tanya penulis dokumen untuk "
-"merubah ke XML."
-
-#: ../src/yelp-window.c:1223
-msgid "_Search:"
-msgstr "_Cari:"
-
-#: ../src/yelp-window.c:1224
-msgid "Search for other documentation"
-msgstr "Cari Dokumen Lainnya"
-
-#: ../src/yelp-window.c:1386
-msgid "Fin_d:"
-msgstr "Temu_kan:"
-
-#: ../src/yelp-window.c:1406
-msgid "Find _Next"
-msgstr "Cari _Lagi"
-
-#: ../src/yelp-window.c:1418
-msgid "Find _Previous"
-msgstr "Cari ke _Belakang"
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "Halaman '%s' tak ditemukan di dokumen '%s'."
-#: ../src/yelp-window.c:1532
+#: ../libyelp/yelp-docbook-document.c:298
+#: ../libyelp/yelp-info-document.c:366
#, c-format
-msgid ""
-"A transformation context could not be created for the file ‘%s’. The format "
-"may not be supported."
-msgstr ""
-"Perubahan isi tidak dapat dibuat untuk berkas ‘%s’. Bentuknya mungkin tidak "
-"didukung."
+msgid "The file does not exist."
+msgstr "Berkas tak ada."
-#: ../src/yelp-window.c:1562 ../src/yelp-window.c:1981
-#: ../src/yelp-window.c:2064
+#: ../libyelp/yelp-docbook-document.c:308
+#: ../libyelp/yelp-info-document.c:376
#, c-format
-msgid ""
-"The section ‘%s’ does not exist in this document. If you were directed to "
-"this section from a Help button in an application, please report this to the "
-"maintainers of that application."
-msgstr ""
-"Bagian ‘%s’ tidak ada pada dokumen ini. Jika anda diarahkan ke bagian ini "
-"dari tombol bantuan pada sebuah aplikasi, silahkan laporkan hal ini ke "
-"pemelihara dari aplikasi tersebut."
+msgid "The file ‘%s’ does not exist."
+msgstr "Berkas '%s' tak ada."
-#: ../src/yelp-window.c:1677 ../src/yelp-window.c:2468
+#: ../libyelp/yelp-docbook-document.c:323
#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr ""
-"Tidak dapat membaca berkas ‘%s’. Berkas ini mungkin hilang atau anda tidak "
-"memiliki hak untuk membacanya."
+msgid "The file ‘%s’ could not be parsed because it is not a well-formed XML document."
+msgstr "Berkas ‘%s’ tak dapat diuraikan karena bukan dokumen XML yang baik bentuknya."
-#: ../src/yelp-window.c:1728
-msgid "Loading..."
-msgstr "Sedang membuka..."
-
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2911
-msgid "translator-credits"
-msgstr ""
-"Ahmad Riza H Nst <rizahnst@gnome.org>\n"
-"Mohammad DAMT <mdamt@bisnisweb.com>\n"
-"http://id.gnome.org/"
-
-#: ../src/yelp-window.c:2914
-msgid "Yelp"
-msgstr "Yelp"
+#: ../libyelp/yelp-docbook-document.c:336
+#, c-format
+msgid "The file ‘%s’ could not be parsed because one or more of its included files is not a well-formed XML document."
+msgstr "Berkas ‘%s’ tak dapat diuraikan karena satu atau lebih berkas terkait bukan dokumen XLM yang baik bentuknya."
-#: ../src/yelp-window.c:2916
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "Perambah dokumentasi untuk Desktop Gnome."
+#: ../libyelp/yelp-docbook-document.c:720
+msgid "Unknown"
+msgstr "Tak dikenal"
-#: ../src/yelp-xslt-pager.c:189
+#: ../libyelp/yelp-docbook-document.c:781
+#: ../libyelp/yelp-info-document.c:309
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"improperly formatted."
-msgstr ""
-"Berkas ‘%s’ tidak dapat diuraikan. Entah berkas ini tidak ada, atau tidak "
-"dibentuk dengan benar."
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "Halaman yang diminta tak ditemukan di dokumen '%s'."
-#: ../src/yelp-xslt-pager.c:210 ../src/yelp-xslt-pager.c:223
+#: ../libyelp/yelp-error.c:33
#, c-format
-msgid ""
-"The document ‘%s’ could not be processed. The file ‘%s’ is either missing, "
-"or it is not a valid XSLT stylesheet."
-msgstr ""
-"Dokumen ‘%s’ tidak dapat diproses. Berkas ‘%s’ apakah hilang atau bukan "
-"merupakan gaya XSLT yang benar."
-
-#: ../yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "Buka bantuan GNOME"
-
-#~ msgid "Library Functions"
-#~ msgstr "Fungsi Pustaka"
-
-#~ msgid "Administration"
-#~ msgstr "Administrasi"
-
-#~ msgid "Multimedia"
-#~ msgstr "Multimedia"
-
-#~ msgid "Other"
-#~ msgstr "Lainnya"
-
-#~ msgid "Yelp Factory"
-#~ msgstr "Yelp Factory"
-
-#~ msgid "Could not activate Yelp: '%s'"
-#~ msgstr "Tidak dapat mengaktifkan Yelp: '%s'"
-
-#~ msgid "Could not open new window."
-#~ msgstr "TIdak dapat membuka jendela baru."
-
-#~ msgid "Pages"
-#~ msgstr "Halaman"
-
-#~ msgid "Generating PDF is not currently supported"
-#~ msgstr "Menghasilkan PDF belum lagi tersedia"
-
-#~ msgid ""
-#~ "You were trying to print to a printer using the \"%s\" driver. This "
-#~ "program requires a PostScript printer driver."
-#~ msgstr ""
-#~ "Anda mencoba mencetak menggunakan driver \"%s\". Program ini memerlukan "
-#~ "driver cetak PostScript."
-
-#~ msgid "_From:"
-#~ msgstr "_Dari:"
-
-#~ msgid "Sets the start of the range of pages to be printed"
-#~ msgstr "Tentukan awal dari halaman yang mau dicetak"
+msgid "An unknown error occurred."
+msgstr "Terjadi kesalahan yang tak dikenal."
-#~ msgid "_To:"
-#~ msgstr "_Ke:"
-
-#~ msgid "Sets the end of the range of pages to be printed"
-#~ msgstr "Tentukan akhir dari halaman yang mau dicetak"
-
-#~ msgid ""
-#~ "Could not display help for Yelp.\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Tidak dapat menampilkan bantuan untuk Yelp.\n"
-#~ "%s"
-
-#~ msgid "<b>_Bookmarks:</b>"
-#~ msgstr "<b>Pem_batas Buku:</b>"
-
-#~ msgid "<b>_Title:</b>"
-#~ msgstr "<b>_Judul:</b>"
-
-#~ msgid "Unknown Section"
-#~ msgstr "Bagian Tidak Diketahui"
-
-#~ msgid "Find:"
-#~ msgstr "Cari:"
-
-#, fuzzy
-#~ msgid "_Home"
-#~ msgstr "Awal"
-
-#~ msgid "Go to home view"
-#~ msgstr "Tampilkan halaman awal"
-
-#, fuzzy
-#~ msgid "Development Environments"
-#~ msgstr "Pembangunan"
-
-#, fuzzy
-#~ msgid "Development Tools"
-#~ msgstr "Pembangunan"
-
-#, fuzzy
-#~ msgid "Editors"
-#~ msgstr "/_Edit"
-
-#~ msgid "Games and Entertainment"
-#~ msgstr "Gim dan Hiburan"
-
-#~ msgid "General"
-#~ msgstr "Static Gray"
-
-#, fuzzy
-#~ msgid "Kernels"
-#~ msgstr "Rutin Kernel"
-
-#~ msgid "Office and Productivity Applications"
-#~ msgstr "Aplikasi Perkantoran dan Produktivitas"
-
-#~ msgid "Securities"
-#~ msgstr "Keamanan"
-
-#, fuzzy
-#~ msgid "System"
-#~ msgstr "System Call"
-
-#~ msgid "Utilities"
-#~ msgstr "Peralatan"
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr "Berkas ‘%s’ tak dapat diuraikan karena bukan halaman info yang baik bentuknya."
-#~ msgid "*"
-#~ msgstr "*"
+#: ../libyelp/yelp-location-entry.c:251
+msgid "Description Column"
+msgstr "Kolom Keterangan"
-#~ msgid "Titlepage"
-#~ msgstr "Judul"
+#: ../libyelp/yelp-location-entry.c:252
+msgid "A column in the model to get descriptions from"
+msgstr "Suatu kolom pada model tempat memperoleh keterangan"
-#, fuzzy
-#~ msgid "The selected document could not be opened"
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../libyelp/yelp-location-entry.c:267
+msgid "Icon Column"
+msgstr "Kolom Ikon"
-#, fuzzy
-#~ msgid "The selected page could not be found in this document."
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../libyelp/yelp-location-entry.c:268
+msgid "A column in the model to get icon names from"
+msgstr "Suatu kolom pada model tempat memperoleh nama ikon"
-#, fuzzy
-#~ msgid "The table of contents could not be read."
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../libyelp/yelp-location-entry.c:283
+msgid "Flags Column"
+msgstr "Kolom Flag"
-#, fuzzy
-#~ msgid "The selected file could not be read."
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../libyelp/yelp-location-entry.c:284
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr "Suatu kolom pada model dengan flag YelpLocationEntryFlags"
-#, fuzzy
-#~ msgid "The file could not be processed."
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../libyelp/yelp-location-entry.c:300
+msgid "Enable Search"
+msgstr "Aktifkan Pencarian"
-#~ msgid "X11"
-#~ msgstr "X11"
+#: ../libyelp/yelp-location-entry.c:301
+msgid "Whether the location entry can be used as a search field"
+msgstr "Apakah entri lokasi dapat dipakai sebagai ruas pencarian"
-#~ msgid "OpenSSL"
-#~ msgstr "OpenSSL"
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "Direktori '%s' tak ada."
-#~ msgid "Termcap"
-#~ msgstr "Termcap"
+#: ../libyelp/yelp-settings.c:146
+msgid "GtkSettings"
+msgstr "GtkSettings"
-#~ msgid "Perl"
-#~ msgstr "Perl"
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr "Objek GtkSettings tempat mendapat tatanan"
-#~ msgid "Qt"
-#~ msgstr "Qt"
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
-#~ msgid "TIFF"
-#~ msgstr "TIFF"
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr "Objek GtkIconTheme tempat mendapat tatanan"
-#~ msgid "PThreads"
-#~ msgstr "PThreads"
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Penyesuaian Fonta"
-#~ msgid "Categories"
-#~ msgstr "Kategori"
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr "Penyesuaian ukuran untuk ditambahkan ke ukuran fonta"
-#~ msgid "Documents"
-#~ msgstr "Dokumen"
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Tampilkan Kursor Teks"
-#, fuzzy
-#~ msgid "_Next Page"
-#~ msgstr "/Go/_Indeks"
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr "Tampilkan kursor teks atau caret untuk navigasi yang lebih membantu"
-#~ msgid "&#8216;"
-#~ msgstr "&#8216;"
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Mode Penyunting"
-#~ msgid "&#8217;"
-#~ msgstr "&#8217;"
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr "Aktifkan fitur yang berguna bagi para penyunting"
-#~ msgid "&#8220;"
-#~ msgstr "&#8220;"
+#: ../libyelp/yelp-transform.c:171
+msgid "XSLT Stylesheet"
+msgstr "Stylesheet XSLT"
-#~ msgid "&#8221;"
-#~ msgstr "&#8221;"
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr "Lokasi dari stylesheet XSLT"
-#~ msgid "About This Article"
-#~ msgstr "Informasi Artikel"
+#: ../libyelp/yelp-transform.c:379
+#: ../libyelp/yelp-transform.c:394
+#, c-format
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "Stylesheet XSLT '%s' mungkin hilang atau tak valid."
-#~ msgid "About This Bibliography"
-#~ msgstr "Informasi Bibliografi"
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "Tak ditemukan atribut href pada yelp:document\n"
-#~ msgid "About This Book"
-#~ msgstr "Informasi Buku Ini"
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Memori habis"
-#~ msgid "About This Chapter"
-#~ msgstr "Informasi Bab Ini"
+#: ../libyelp/yelp-view.c:92
+msgid "_Back"
+msgstr "Kem_bali"
-#~ msgid "About This Entry"
-#~ msgstr "Informasi Tulisan Ini"
+#: ../libyelp/yelp-view.c:97
+msgid "_Forward"
+msgstr "_Maju"
-#~ msgid "About This Glossary"
-#~ msgstr "Informasi Glosari Ini"
+#: ../libyelp/yelp-view.c:102
+msgid "_Previous Page"
+msgstr "Halaman Se_belumnya"
-#~ msgid "About This Index"
-#~ msgstr "Informasi Index Ini"
+#: ../libyelp/yelp-view.c:107
+msgid "_Next Page"
+msgstr "Halaman Selanjut_nya"
-#~ msgid "About This Part"
-#~ msgstr "Informasi Bagian Ini"
+#: ../libyelp/yelp-view.c:310
+msgid "Yelp URI"
+msgstr "URI Yelp"
-#~ msgid "About This Reference"
-#~ msgstr "Informasi Referensi"
+#: ../libyelp/yelp-view.c:311
+msgid "A YelpUri with the current location"
+msgstr "YelpURI untuk lokasi kini"
-#~ msgid "About This Section"
-#~ msgstr "Informasi Seksi Ini"
+#: ../libyelp/yelp-view.c:319
+msgid "Loading State"
+msgstr "Memuat Keadaan"
-#, fuzzy
-#~ msgid "Affiliation"
-#~ msgstr "Aplikasi"
+#: ../libyelp/yelp-view.c:320
+msgid "The loading state of the view"
+msgstr "Sedang memuat keadaan tilikan"
-#~ msgid "Appendix"
-#~ msgstr "Lampiran"
+#: ../libyelp/yelp-view.c:329
+msgid "Page ID"
+msgstr "ID Halaman"
-#~ msgid "Article"
-#~ msgstr "Artikel"
+#: ../libyelp/yelp-view.c:330
+msgid "The ID of the root page of the page being viewew"
+msgstr "ID dari halaman akar dari halaman yang sedang ditilik"
-#~ msgid "Audience"
-#~ msgstr "Pembaca"
+#: ../libyelp/yelp-view.c:338
+msgid "Root Title"
+msgstr "Judul Akar"
-#~ msgid "Author"
-#~ msgstr "Penulis"
+#: ../libyelp/yelp-view.c:339
+msgid "The title of the root page of the page being viewew"
+msgstr "Judul dari halaman akar dari halaman yang sedang ditilik"
-#~ msgid "Authors"
-#~ msgstr "Penulis"
+#: ../libyelp/yelp-view.c:347
+msgid "Page Title"
+msgstr "Judul Halaman"
-#~ msgid "Bibliography"
-#~ msgstr "Bibliografi"
+#: ../libyelp/yelp-view.c:348
+msgid "The title of the page being viewed"
+msgstr "Judul dari halaman yang sedang ditilik"
-#~ msgid "Caution"
-#~ msgstr "Perhatian"
+#: ../libyelp/yelp-view.c:356
+msgid "Page Description"
+msgstr "Keterangan Halaman"
-#~ msgid "Chapter"
-#~ msgstr "Bab"
+#: ../libyelp/yelp-view.c:357
+msgid "The description of the page being viewed"
+msgstr "Keterangan dari halaman yang sedang ditilik"
-#~ msgid "Collaborator"
-#~ msgstr "Kolaborator"
+#: ../libyelp/yelp-view.c:365
+msgid "Page Icon"
+msgstr "Ikon Halaman"
-#~ msgid "Collaborators"
-#~ msgstr "Kolaborator"
+#: ../libyelp/yelp-view.c:366
+msgid "The icon of the page being viewed"
+msgstr "Ikon dari halaman yang sedang ditilik"
-#~ msgid "Colophon"
-#~ msgstr "Kolofon"
+#: ../libyelp/yelp-view.c:683
+#, c-format
+msgid "Could not load a document for ‘%s’"
+msgstr "Tak bisa memuat suatu dokumen bagi '%s'"
-#~ msgid "Copyright"
-#~ msgstr "Hak Cipta"
+#: ../libyelp/yelp-view.c:689
+#, c-format
+msgid "Could not load a document"
+msgstr "Tak bisa memuat suatu dokumen"
-#~ msgid "Copyrights"
-#~ msgstr "Hak Cipta"
+#: ../libyelp/yelp-view.c:756
+msgid "Not Found"
+msgstr "Tak Ditemukan"
-#~ msgid "Date"
-#~ msgstr "Tanggal"
+#: ../libyelp/yelp-view.c:759
+msgid "Cannot Read"
+msgstr "Tak Bisa Membaca"
-#, fuzzy
-#~ msgid "Editor"
-#~ msgstr "/_Edit"
+#: ../libyelp/yelp-view.c:765
+msgid "Unknown Error"
+msgstr "Galat Tak Dikenal"
-#~ msgid "Email"
-#~ msgstr "Email"
+#: ../libyelp/yelp-view.c:855
+#, c-format
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "URI '%s' tak menunjuk ke suatu halaman yang valid."
-#~ msgid "Example"
-#~ msgstr "Teladan"
+#: ../libyelp/yelp-view.c:863
+#, c-format
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "URI '%s' tak dapat diuraikan."
-#~ msgid "Figure"
-#~ msgstr "Gambar"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr "Nyalakan mode penyunting"
-#~ msgid "Glossary"
-#~ msgstr "Glosari"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "Teks Besa_r"
-#~ msgid "Important"
-#~ msgstr "Penting"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Perbesar ukuran teks"
-#~ msgid "Index"
-#~ msgstr "Indeks"
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "Tek_s Kecil"
-#, fuzzy
-#~ msgid "Set Index"
-#~ msgstr "Indeks"
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr "Perkecil ukuran teks"
-#, fuzzy
-#~ msgid "Table of Contents"
-#~ msgstr "Isi Bantuan"
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr "Tampilkan _Kursor Teks"
-#, fuzzy
-#~ msgid "/Edit/Find Ne_xt"
-#~ msgstr "/Edit/C_ari lagi"
+#: ../src/yelp-application.c:297
+#: ../src/yelp-window.c:1351
+#: ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Bantuan"
-#, fuzzy
-#~ msgid "/Edit/Find Pre_vious"
-#~ msgstr "/Edit/C_ari lagi"
+#: ../src/yelp-application.c:547
+msgid "You do not have PackageKit installed. Package installation links require PackageKit."
+msgstr "Anda belum memasang PackageKit. Tautan pemasangan paket memerlukan PackageKit."
-#~ msgid "/Go/_Back"
-#~ msgstr "/Navigasi/_Kembali"
+#: ../src/yelp-window.c:239
+msgid "_Page"
+msgstr "_Halaman"
-#~ msgid "/Go/_Forward"
-#~ msgstr "/Navigasi/_Maju"
+#: ../src/yelp-window.c:240
+msgid "_View"
+msgstr "_Tilik"
-#~ msgid "/Go/_Home"
-#~ msgstr "/Go/_Awal"
+#: ../src/yelp-window.c:241
+msgid "_Go"
+msgstr "B_uka"
-#, fuzzy
-#~ msgid "/Go/"
-#~ msgstr "/Navi_gasi"
+#: ../src/yelp-window.c:242
+msgid "_Bookmarks"
+msgstr "Pem_batas"
-#, fuzzy
-#~ msgid "/Go/_Contents"
-#~ msgstr "Isi Bantuan"
+#: ../src/yelp-window.c:245
+msgid "_New Window"
+msgstr "_Jendela Baru"
-#, fuzzy
-#~ msgid "A Help Browser for GNOME"
-#~ msgstr "Browser Bantuan untuk GNOME 2.0"
+#: ../src/yelp-window.c:250
+msgid "_Close"
+msgstr "_Tutup"
-#~ msgid "The document '%s' does not exist"
-#~ msgstr "File dokumen '%s' tidak ada"
+#: ../src/yelp-window.c:255
+msgid "_Add Bookmark"
+msgstr "T_ambah Pembatas"
-#~ msgid "<b>Find text in the document:</b>"
-#~ msgstr "<b>Cari teks dalam dokumen:</b>"
+#: ../src/yelp-window.c:260
+msgid "Find in Page..."
+msgstr "Cari di Halaman..."
-#~ msgid "Automatically _wrap around"
-#~ msgstr "_Potong kalimat secara otomatis"
+#: ../src/yelp-window.c:265
+#: ../src/yelp-window.c:480
+msgid "Search..."
+msgstr "Cari..."
-#~ msgid "Match _entire word"
-#~ msgstr "Cocokkan s_eluruh kata"
+#: ../src/yelp-window.c:270
+msgid "Open Location"
+msgstr "Buka Lokasi"
-#~ msgid "_Match upper/lower case"
-#~ msgstr "C_ocokkan sesuai huruf besar/kecil"
+#: ../src/yelp-window.c:297
+msgid "Application"
+msgstr "Aplikasi"
-#~ msgid "GNOME - Desktop"
-#~ msgstr "GNOME - Desktop"
+#: ../src/yelp-window.c:298
+msgid "A YelpApplication instance that controls this window"
+msgstr "Instansi YelpApplication yang mengendalikan jendela ini"
-#~ msgid "GNOME is"
-#~ msgstr "GNOME adalah"
+#: ../src/yelp-window.c:993
+#, c-format
+msgid "%i match"
+msgid_plural "%i matches"
+msgstr[0] "%i cocok"
-#~ msgid "Free Software"
-#~ msgstr "Perangkat Lunak Bebas"
+#: ../src/yelp-window.c:1018
+msgid "No matches"
+msgstr "Tak ada yang cocok"
-#~ msgid "(C)"
-#~ msgstr "(C)"
+#: ../src/yelp-window.c:1295
+msgid "Loading"
+msgstr "Sedang memuat"
-#, fuzzy
-#~ msgid "Loading..&nbsp;"
-#~ msgstr "Sedang meload..."
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Buka bantuan GNOME"
-#~ msgid "Search in the index"
-#~ msgstr "Cari dalam indeks"
diff --git a/po/kn.po b/po/kn.po
index 3c244613..adf028f6 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -1,14 +1,15 @@
-# translation of yelp.HEAD.kn.po to Kannada
+# translation of yelp.master.kn.po to Kannada
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Shankar Prasad <svenkate@redhat.com>, 2008, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: yelp.HEAD.kn\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-07 15:56+0100\n"
-"PO-Revision-Date: 2009-03-30 13:20+0530\n"
+"Project-Id-Version: yelp.master.kn\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=yelp&component=general\n"
+"POT-Creation-Date: 2010-03-30 16:12+0000\n"
+"PO-Revision-Date: 2009-09-16 23:28+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
"MIME-Version: 1.0\n"
@@ -289,7 +290,7 @@ msgstr "2D ಗ್ರಾಫಿಕ್ಸುಗಳು"
msgid "3D Graphics"
msgstr "3D ಗ್ರಾಫಿಕ್ಸುಗಳು"
-#: ../data/toc.xml.in.h:3
+#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
msgid "Accessibility"
msgstr "ನಿಲುಕಣೆ"
@@ -415,7 +416,7 @@ msgstr "ಗಣಕತೆರೆ"
#: ../data/toc.xml.in.h:34
msgid "Desktop Settings"
-msgstr "ಗಣಕತೆರೆ ಸಂಯೋಜನೆಗಳು"
+msgstr "ಗಣಕತೆರೆ ಸಿದ್ಧತೆಗಳು"
#: ../data/toc.xml.in.h:36
msgid "Dialup"
@@ -520,7 +521,8 @@ msgstr "ಗ್ರಾಫಿಕ್ಸ್‍"
#: ../data/toc.xml.in.h:63
msgid "Guides and manuals for applications that connect to the outside world"
-msgstr "ಬಾಹ್ಯ ಜಗತ್ತಿನೊಂದಿಗೆ ಸಂಪರ್ಕಹೊಂದಲು ಬಳಸಲಾಗುವ ಅನ್ವಯಗಳ ಮಾರ್ಗದರ್ಶಿಗಳು ಹಾಗು ಕೈಪಿಡಿಗಳು"
+msgstr ""
+"ಬಾಹ್ಯ ಜಗತ್ತಿನೊಂದಿಗೆ ಸಂಪರ್ಕಹೊಂದಲು ಬಳಸಲಾಗುವ ಅನ್ವಯಗಳ ಮಾರ್ಗದರ್ಶಿಗಳು ಹಾಗು ಕೈಪಿಡಿಗಳು"
#: ../data/toc.xml.in.h:64
msgid "Guides for getting involved in development"
@@ -532,7 +534,7 @@ msgstr "ಹ್ಯಾಮ್ ರೇಡಿಯೋ"
#: ../data/toc.xml.in.h:66
msgid "Hardware Settings"
-msgstr "ಯಂತ್ರಾಂಶ ಸಂಯೋಜನೆಗಳು"
+msgstr "ಯಂತ್ರಾಂಶ ಸಿದ್ಧತೆಗಳು"
#: ../data/toc.xml.in.h:67
msgid "Have some fun"
@@ -681,7 +683,7 @@ msgstr "ಚಾಲಕಗಳು"
msgid "Presentation Tools"
msgstr "ಪ್ರಸ್ತುತಪಡಿಕೆಯ ಉಪಕರಣಗಳು"
-#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
+#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:339 ../src/yelp-print.c:366
msgid "Printing"
msgstr "ಮುದ್ರಣ"
@@ -744,11 +746,12 @@ msgstr "ಸೀಕ್ವೆನ್ಸರ್"
#: ../data/toc.xml.in.h:120
msgid "Settings"
-msgstr "ಸಂಯೋಜನೆಗಳು"
+msgstr "ಸಿದ್ಧತೆಗಳು"
#: ../data/toc.xml.in.h:121
msgid "Settings users can manipulate to make their environment more pleasant"
-msgstr "ಬಳಕೆದಾರರು ತಮ್ಮ ಗಣಕ ಪರಿಸರವನ್ನು ಇನ್ನಷ್ಟು ಹಿತಕರವಾಗಿರುವಂತೆ ಬದಲಾಯಿಸಿಕೊಳ್ಳಲು ಸಿದ್ಧತೆಗಳು"
+msgstr ""
+"ಬಳಕೆದಾರರು ತಮ್ಮ ಗಣಕ ಪರಿಸರವನ್ನು ಇನ್ನಷ್ಟು ಹಿತಕರವಾಗಿರುವಂತೆ ಬದಲಾಯಿಸಿಕೊಳ್ಳಲು ಸಿದ್ಧತೆಗಳು"
#: ../data/toc.xml.in.h:122
msgid "Simulation Games"
@@ -863,86 +866,58 @@ msgstr "GNOME ನೆರವು ವೀಕ್ಷಕಕ್ಕೆ ಸ್ವಾಗತ"
msgid "Word Processors"
msgstr "ಶಬ್ಧ ಸಂಸ್ಕಾರಕಗಳು(ವರ್ಡ್ ಪ್ರೊಸೆಸರ್ಸ್)"
-#: ../data/ui/yelp.glade.h:1
-msgid "<b>Accessibility</b>"
-msgstr "<b>ನಿಲುಕಣೆ</b>"
-
-#: ../data/ui/yelp.glade.h:2
-msgid "<b>Fonts</b>"
-msgstr "<b>ಅಕ್ಷರ ಶೈಲಿಗಳು</b>"
-
-#: ../data/ui/yelp.glade.h:3
-msgid "Add Bookmark"
-msgstr "ಬುಕ್‌ಮಾರ್ಕುಗಳನ್ನು ಸೇರಿಸು"
-
-#: ../data/ui/yelp.glade.h:4
+#: ../data/ui/yelp-bookmarks.ui.h:1
msgid "Bookmarks"
msgstr "ಬುಕ್‌ಮಾರ್ಕುಗಳು"
-#: ../data/ui/yelp.glade.h:5
-msgid "C_ase sensitive"
-msgstr "ಕೇಸ್ ಸಂವೇದಿ(_a)"
-
-#: ../data/ui/yelp.glade.h:6
-msgid "Find"
-msgstr "ಹುಡುಕು"
-
-#: ../data/ui/yelp.glade.h:7
-msgid "Open Location"
-msgstr "ಸ್ಥಳವನ್ನು ತೆಗೆ"
-
-#: ../data/ui/yelp.glade.h:8
-msgid "Preferences"
-msgstr "ಆದ್ಯತೆಗಳು"
-
-#: ../data/ui/yelp.glade.h:9
+#: ../data/ui/yelp-bookmarks.ui.h:2
msgid "Re_name"
msgstr "ಹೆಸರನ್ನು ಬದಲಾಯಿಸು(_n)"
-#: ../data/ui/yelp.glade.h:10
+#: ../data/ui/yelp-bookmarks.ui.h:3
msgid "_Bookmarks:"
msgstr "ಬುಕ್‌ಮಾರ್ಕುಗಳು(_B):"
-#: ../data/ui/yelp.glade.h:11
-msgid "_Browse with caret"
-msgstr "ಕ್ಯಾರಟ್‌ನೊಂದಿಗೆ(caret) ವೀಕ್ಷಿಸು(_B)"
+#: ../data/ui/yelp-bookmarks-add.ui.h:1
+msgid "Add Bookmark"
+msgstr "ಬುಕ್‌ಮಾರ್ಕುಗಳನ್ನು ಸೇರಿಸು"
-#: ../data/ui/yelp.glade.h:12
-msgid "_Find:"
-msgstr "ಹುಡುಕು(_F):"
+#: ../data/ui/yelp-bookmarks-add.ui.h:2
+msgid "_Title:"
+msgstr "ಶೀರ್ಷಿಕೆ(_T):"
-#: ../data/ui/yelp.glade.h:13
-msgid "_Fixed width:"
-msgstr "ನಿಗದಿತ ಅಗಲ(_F):"
+#: ../data/ui/yelp-open-location.ui.h:1
+msgid "Open Location"
+msgstr "ಸ್ಥಳವನ್ನು ತೆಗೆ"
-#: ../data/ui/yelp.glade.h:14
+#: ../data/ui/yelp-open-location.ui.h:2
msgid "_Location:"
msgstr "ಸ್ಥಳ(_L):"
-#: ../data/ui/yelp.glade.h:15
-msgid "_Next"
-msgstr "ಮುಂದಿನ(_N)"
+#: ../data/ui/yelp-preferences.ui.h:2
+msgid "Fonts"
+msgstr "ಅಕ್ಷರಶೈಲಿಗಳು"
-#: ../data/ui/yelp.glade.h:16
-msgid "_Previous"
-msgstr "ಹಿಂದಿನ(_P)"
+#: ../data/ui/yelp-preferences.ui.h:3
+msgid "Preferences"
+msgstr "ಆದ್ಯತೆಗಳು"
-#: ../data/ui/yelp.glade.h:17
-msgid "_Title:"
-msgstr "ಶೀರ್ಷಿಕೆ(_T):"
+#: ../data/ui/yelp-preferences.ui.h:4
+msgid "_Browse with caret"
+msgstr "ಕ್ಯಾರಟ್‌ನೊಂದಿಗೆ(caret) ವೀಕ್ಷಿಸು(_B)"
-#: ../data/ui/yelp.glade.h:18
+#: ../data/ui/yelp-preferences.ui.h:5
+msgid "_Fixed width:"
+msgstr "ನಿಗದಿತ ಅಗಲ(_F):"
+
+#: ../data/ui/yelp-preferences.ui.h:6
msgid "_Use system fonts"
msgstr "ಗಣಕದ ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸು(_U)"
-#: ../data/ui/yelp.glade.h:19
+#: ../data/ui/yelp-preferences.ui.h:7
msgid "_Variable width:"
msgstr "ಬದಲಾಗುವ ಅಗಲ(_V):"
-#: ../data/ui/yelp.glade.h:20
-msgid "_Wrap around"
-msgstr "ವ್ರಾಪ್ ಮಾಡು(_W)"
-
#: ../data/yelp.schemas.in.h:1
msgid "Font for fixed text"
msgstr "ನಿಗದಿತ ಪಠ್ಯಕ್ಕಾಗಿನ ಅಕ್ಷರಶೈಲಿ"
@@ -973,47 +948,112 @@ msgstr "ಗಣಕದ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು"
#: ../data/yelp.schemas.in.h:8
msgid "Use the default fonts set for the system."
-msgstr "ಗಣಕಕ್ಕೆ ಹೊಂದಿಸಲಾದ ಡೀಫಾಲ್ಟ್‍ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು."
+msgstr "ಗಣಕಕ್ಕೆ ಹೊಂದಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು."
-#: ../src/yelp-bookmarks.c:150
+#: ../src/eggdesktopfile.c:165
+#, c-format
+msgid "File is not a valid .desktop file"
+msgstr "ಕಡತವು ಒಂದು ಮಾನ್ಯವಾದಂತಹ .desktop ಕಡತವಾಗಿಲ್ಲ"
+
+#: ../src/eggdesktopfile.c:188
+#, c-format
+msgid "Unrecognized desktop file Version '%s'"
+msgstr "ಗುರುತಿಸಲಾಗದ ಗಣಕತೆರೆ ಕಡತದ ಆವೃತ್ತಿ '%s'"
+
+#: ../src/eggdesktopfile.c:957
+#, c-format
+msgid "Starting %s"
+msgstr "%s ಅನ್ನು ಆರಂಭಿಸಲಾಗುತ್ತಿದೆ"
+
+#: ../src/eggdesktopfile.c:1098
+#, c-format
+msgid "Application does not accept documents on command line"
+msgstr "ಅನ್ವಯವು ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ ದಸ್ತಾವೇಜುಗಳನ್ನು ಅಂಗೀಕರಿಸುವುದಿಲ್ಲ"
+
+#: ../src/eggdesktopfile.c:1166
+#, c-format
+msgid "Unrecognized launch option: %d"
+msgstr "ಗುರುತಿಸಲಾಗದ ಆರಂಭದ ಆಯ್ಕೆ: %d"
+
+#: ../src/eggdesktopfile.c:1365
+#, c-format
+msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+msgstr ""
+"ದಸ್ತಾವೇಜಿನ URI ಗಳನ್ನು ಒಂದು 'Type=Link' ಗಣಕತೆರೆ ನಮೂದಿಗೆ ರವಾನಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
+
+#: ../src/eggdesktopfile.c:1384
+#, c-format
+msgid "Not a launchable item"
+msgstr "ಆರಂಭಿಸಬಹುದಾದ ಅಂಶವಾಗಿಲ್ಲ"
+
+#: ../src/eggsmclient.c:225
+msgid "Disable connection to session manager"
+msgstr "ಅಧಿವೇಶನದ ವ್ಯವಸ್ಥಾಪಕನೊಂದಿಗಿನ ಸಂಪರ್ಕವನ್ನು ಅಶಕ್ತಗೊಳಿಸು"
+
+#: ../src/eggsmclient.c:228
+msgid "Specify file containing saved configuration"
+msgstr "ಉಳಿಸಲಾದ ಸಂರಚನೆಯನ್ನು ಹೊಂದಿರುವ ಕಡತವನ್ನು ಸೂಚಿಸಿ"
+
+#: ../src/eggsmclient.c:228
+msgid "FILE"
+msgstr "FILE"
+
+#: ../src/eggsmclient.c:231
+msgid "Specify session management ID"
+msgstr "ಅಧೀವೇಶನ ವ್ಯವಸ್ಥಾಪನಾ ID ಯನ್ನು ಸೂಚಿಸಿ"
+
+#: ../src/eggsmclient.c:231
+msgid "ID"
+msgstr "ID"
+
+#: ../src/eggsmclient.c:252
+msgid "Session management options:"
+msgstr "ಅಧಿವೇಶನ ನಿರ್ವಹಣಾ ಆಯ್ಕೆಗಳು:"
+
+#: ../src/eggsmclient.c:253
+msgid "Show session management options"
+msgstr "ಅಧಿವೇಶನ ವ್ಯವಸ್ಥಾಪನಾ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು"
+
+#: ../src/yelp-bookmarks.c:148
msgid "Open Bookmark in New Window"
msgstr "ಬುಕ್‌ಮಾರ್ಕನ್ನು ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆ"
-#: ../src/yelp-bookmarks.c:154
+#: ../src/yelp-bookmarks.c:152
msgid "Rename Bookmark"
msgstr "ಬುಕ್‌ಮಾರ್ಕಿನ ಹೆಸರನ್ನು ಬದಲಾಯಿಸು"
-#: ../src/yelp-bookmarks.c:158
+#: ../src/yelp-bookmarks.c:156
msgid "Remove Bookmark"
msgstr "ಬುಕ್‌ಮಾರ್ಕನ್ನು ತೆಗೆದುಹಾಕು"
-#: ../src/yelp-bookmarks.c:315
+#: ../src/yelp-bookmarks.c:314
#, c-format
msgid "A bookmark titled %s already exists for this page."
msgstr "ಈ ಪುಟಕ್ಕಾಗಿನ %s ಎಂಬ ಶೀರ್ಷಿಕೆಯ ಒಂದು ಬುಕ್‌ಮಾರ್ಕು ಈಗಾಗೆಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."
-#: ../src/yelp-bookmarks.c:392
+#: ../src/yelp-bookmarks.c:390
#, c-format
msgid "A bookmark titled <b>%s</b> already exists for this page."
msgstr "ಈ ಪುಟಕ್ಕಾಗಿನ <b>%s</b> ಎಂಬ ಶೀರ್ಷಿಕೆಯ ಒಂದು ಬುಕ್‌ಮಾರ್ಕು ಈಗಾಗೆಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."
-#: ../src/yelp-bookmarks.c:405
+#: ../src/yelp-bookmarks.c:403
msgid "Help Topics"
msgstr "ನೆರವಿನ ವಿಷಯಗಳು"
-#: ../src/yelp-bookmarks.c:420
+#: ../src/yelp-bookmarks.c:418
msgid "Document Sections"
msgstr "ದಸ್ತಾವೇಜು ವಿಭಾಗಗಳು"
#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-man.c:292 ../src/yelp-man.c:385
-#: ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
+#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:284 ../src/yelp-mallard.c:384
+#: ../src/yelp-man.c:292 ../src/yelp-man.c:385 ../src/yelp-toc.c:266
+#: ../src/yelp-toc.c:365
msgid "Page not found"
msgstr "ಪುಟವು ಕಂಡುಬಂದಿಲ್ಲ"
#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-man.c:293
+#: ../src/yelp-mallard.c:285 ../src/yelp-mallard.c:385 ../src/yelp-man.c:293
#, c-format
msgid "The page %s was not found in the document %s."
msgstr "%s ಪುಟವು %s ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಕಂಡುಬಂದಿಲ್ಲ."
@@ -1046,16 +1086,20 @@ msgstr "ಕಡತವನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಆಗಲಿ
msgid ""
"The file ‘%s’ could not be parsed because it is not a well-formed XML "
"document."
-msgstr "ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು XML ಪುಟವಾಗಿಲ್ಲ."
+msgstr ""
+"ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು XML "
+"ಪುಟವಾಗಿಲ್ಲ."
#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
#, c-format
msgid ""
"The file ‘%s’ could not be parsed because one or more of its included files "
"is not a well-formed XML document."
-msgstr "ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಒಳಗೊಂಡಿರುವ ಒಂದು ಅಥವ ಹೆಚ್ಚಿನ ಕಡತಗಳು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು XML ಪುಟವಾಗಿಲ್ಲ."
+msgstr ""
+"ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಒಳಗೊಂಡಿರುವ ಒಂದು ಅಥವ ಹೆಚ್ಚಿನ "
+"ಕಡತಗಳು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು XML ಪುಟವಾಗಿಲ್ಲ."
-#: ../src/yelp-db-print.c:765 ../src/yelp-docbook.c:786
+#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
msgid "Unknown"
msgstr "ಗೊತ್ತಿಲ್ಲದ"
@@ -1063,7 +1107,7 @@ msgstr "ಗೊತ್ತಿಲ್ಲದ"
msgid "Unknown Error"
msgstr "ಗೊತ್ತಿರದ ದೋಷ"
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1643
+#: ../src/yelp-error.c:136 ../src/yelp-window.c:1716
msgid "Could Not Read File"
msgstr "ಕಡತವನ್ನು ಓದಲು ಆಗಲಿಲ್ಲ"
@@ -1073,64 +1117,81 @@ msgstr "ಈ ದೋಷದ ಬಗ್ಗೆ ಯಾವುದೆ ಮಾಹಿತಿ
#: ../src/yelp-info.c:396
#, c-format
-msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr "ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು ಮಾಹಿತಿ (info) ಪುಟವಾಗಿಲ್ಲ."
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr ""
+"ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು ಮಾಹಿತಿ "
+"(info) ಪುಟವಾಗಿಲ್ಲ."
#: ../src/yelp-io-channel.c:132
#, c-format
msgid ""
"The file ‘%s’ could not be read and decoded. The file may be compressed in "
"an unsupported format."
-msgstr "ಕಡತ ‘%s’ ಅನ್ನು ಓದಿ ಡೀಕೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ. ಕಡತವನ್ನು ಬೆಂಬಲವಿಲ್ಲದ ಒಂದು ಬಗೆಯಲ್ಲಿ ಸಂಕುಚನಗೊಳಿಸಿರಬಹುದು."
+msgstr ""
+"ಕಡತ ‘%s’ ಅನ್ನು ಓದಿ ಡೀಕೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ. ಕಡತವನ್ನು ಬೆಂಬಲವಿಲ್ಲದ ಒಂದು ಬಗೆಯಲ್ಲಿ "
+"ಸಂಕುಚನಗೊಳಿಸಿರಬಹುದು."
-#: ../src/yelp-main.c:91
+#: ../src/yelp-main.c:88
msgid "Use a private session"
msgstr "ಖಾಸಗಿ ಅಧಿವೇಶನವನ್ನು ಬಳಸು"
-#: ../src/yelp-main.c:100
+#: ../src/yelp-main.c:97
msgid "Define which cache directory to use"
msgstr "ಯಾವ ಕ್ಯಾಶೆ ಕೋಶವನ್ನು ಬಳಸಬೇಕು ಎಂದು ಸೂಚಿಸಿ"
#. Commandline parsing is done here
-#: ../src/yelp-main.c:357
+#: ../src/yelp-main.c:355
msgid " GNOME Help Browser"
msgstr " GNOME ಸಹಾಯ ವೀಕ್ಷಕ"
-#: ../src/yelp-main.c:377 ../yelp.desktop.in.in.h:2
+#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
msgid "Help"
msgstr "ಸಹಾಯ"
+#: ../src/yelp-mallard.c:315
+msgid "Directory not found"
+msgstr "ಕೋಶವು ಕಂಡುಬಂದಿಲ್ಲ"
+
+#: ../src/yelp-mallard.c:316
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "ಕೋಶ ‘%s’ ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ."
+
#: ../src/yelp-man.c:459
#, c-format
-msgid "The file ‘%s’ could not be parsed because it is not a well-formed man page."
-msgstr "ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು ಮ್ಯಾನ್ (man) ಪುಟವಾಗಿಲ್ಲ."
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+msgstr ""
+"ಕಡತ ‘%s’ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಸೂಕ್ತವಾಗಿ ರಚಿಸಲಾದ ಒಂದು ಮ್ಯಾನ್ "
+"(man) ಪುಟವಾಗಿಲ್ಲ."
-#: ../src/yelp-print.c:97
+#: ../src/yelp-print.c:99
msgid "Print"
msgstr "ಮುದ್ರಿಸು"
-#: ../src/yelp-print.c:167
+#: ../src/yelp-print.c:169
msgid "Preparing to print"
msgstr "ಮುದ್ರಣಕ್ಕೆ ಅಣಿಗೊಳ್ಳುತ್ತಿದೆ"
-#: ../src/yelp-print.c:261
+#: ../src/yelp-print.c:263
msgid "Printing is not supported on this printer"
msgstr "ಈ ಮುದ್ರಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಬೆಂಬಲವಿಲ್ಲ"
-#: ../src/yelp-print.c:264
+#: ../src/yelp-print.c:266
#, c-format
msgid "Printer %s does not support postscript printing."
msgstr "ಮುದ್ರಕ %s ವು ಪೋಸ್ಟ್‌ಸ್ಕ್ರಿಪ್ಟ್‍ ಮುದ್ರಣವನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."
-#: ../src/yelp-print.c:366
+#: ../src/yelp-print.c:368
msgid "Waiting to print"
msgstr "ಮುದ್ರಿಸಲು ಕಾಯಲಾಗುತ್ತಿದೆ"
-#: ../src/yelp-print.c:578
+#: ../src/yelp-print.c:580
msgid "An error occurred while printing"
msgstr "ಮುದ್ರಿಸುವಾಗ ಒಂದು ದೋಷ ಕಂಡು ಬಂದಿದೆ"
-#: ../src/yelp-print.c:582
+#: ../src/yelp-print.c:584
#, c-format
msgid "It was not possible to print your document: %s"
msgstr "ನಿಮ್ಮ ದಸ್ತಾವೇಜನ್ನು ಮುದ್ರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
@@ -1148,7 +1209,9 @@ msgstr "\"%s\" ಗಾಗಿ ಯಾವುದೆ ಫಲಿತಾಂಶಗಳಿಲ
msgid ""
"Try using different words to describe the problem you're having or the topic "
"you want help with."
-msgstr "ನೀವು ಎದುರಿಸುತ್ತಿರುವ ತೊಂದರೆಯನ್ನು ಅಥವ ನಿಮಗೆ ನೆರವು ಬೇಕಿರುವ ವಿಷಯವನ್ನು ವಿವರಿಸಲು ಬೇರೆ ಪದಗಳನ್ನು ಬಳಸಿ."
+msgstr ""
+"ನೀವು ಎದುರಿಸುತ್ತಿರುವ ತೊಂದರೆಯನ್ನು ಅಥವ ನಿಮಗೆ ನೆರವು ಬೇಕಿರುವ ವಿಷಯವನ್ನು ವಿವರಿಸಲು ಬೇರೆ "
+"ಪದಗಳನ್ನು ಬಳಸಿ."
#: ../src/yelp-search-parser.c:289
#, c-format
@@ -1246,28 +1309,28 @@ msgstr ""
"TOC ಕಡತವನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಒಂದು ಸೂಕ್ತವಾಗಿ ರಚಿತವಾಗಿರದ XML "
"ದಸ್ತಾವೇಜಾಗಿದೆ."
-#: ../src/yelp-transform.c:80
+#: ../src/yelp-transform.c:86
msgid "Invalid Stylesheet"
msgstr "ಅಮಾನ್ಯವಾದ ಶೈಲಿಹಾಳೆ"
-#: ../src/yelp-transform.c:81
+#: ../src/yelp-transform.c:87
#, c-format
msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
msgstr "XSLT ಶೈಲಿಹಾಳೆ(ಸ್ಟೈಲ್‌ಶೀಟ್) ‘%s’ ಯು ಒಂದೊ ಕಾಣುತ್ತಿಲ್ಲ, ಅಥವ ಅಮಾನ್ಯವಾದುದಾಗಿದೆ."
-#: ../src/yelp-transform.c:112
+#: ../src/yelp-transform.c:122
msgid "Broken Transformation"
msgstr "ಭಿನ್ನಗೊಂಡ ಪರಿವರ್ತನೆ"
-#: ../src/yelp-transform.c:113
+#: ../src/yelp-transform.c:123
msgid "An unknown error occurred while attempting to transform the document."
msgstr "ದಸ್ತಾವೇಜನ್ನು ಪರಿವರ್ತಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಒಂದು ಅಜ್ಞಾತ ದೋಷವು ಕಂಡುಬಂದಿದೆ."
-#: ../src/yelp-transform.c:373
+#: ../src/yelp-transform.c:389
msgid "No href attribute found on yelp:document\n"
msgstr "yelp:ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಯಾವುದೆ href ವೈಶಿಷ್ಟ್ಯವು ಕಂಡುಬಂದಿಲ್ಲ\n"
-#: ../src/yelp-transform.c:388
+#: ../src/yelp-transform.c:404
msgid "Out of memory"
msgstr "ಮೆಮೊರಿ ಇಲ್ಲ"
@@ -1419,66 +1482,62 @@ msgstr "ತಂತ್ರಾಂಶದ ಬಗ್ಗೆ(_A)"
msgid "Copy _Email Address"
msgstr "ಇಮೈಲ್ ವಿಳಾಸವನ್ನು ಕಾಪಿ ಮಾಡು(_E)"
-#: ../src/yelp-window.c:501
+#: ../src/yelp-window.c:524
msgid "Help Browser"
msgstr "ಸಹಾಯ ವೀಕ್ಷಕ"
-#: ../src/yelp-window.c:592 ../src/yelp-window.c:644 ../src/yelp-window.c:1700
+#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1779
msgid "Loading..."
msgstr "ಓದುತ್ತಿದೆ..."
-#: ../src/yelp-window.c:593 ../src/yelp-window.c:645
+#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
msgid "Unknown Page"
msgstr "ಅಜ್ಞಾತ ಪುಟ"
-#: ../src/yelp-window.c:1008 ../src/yelp-window.c:1064
-#: ../src/yelp-window.c:1084
+#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1105
+#: ../src/yelp-window.c:1114
#, c-format
msgid "The requested URI \"%s\" is invalid"
msgstr "ಮನವಿ ಸಲ್ಲಿಸಲಾದ URI \"%s\" ಅಮಾನ್ಯವಾಗಿದೆ"
-#: ../src/yelp-window.c:1009 ../src/yelp-window.c:1066
-#: ../src/yelp-window.c:1085
+#: ../src/yelp-window.c:1044 ../src/yelp-window.c:1107
+#: ../src/yelp-window.c:1115
msgid "Unable to load page"
msgstr "ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
-#: ../src/yelp-window.c:1079
-msgid "Error executing \"gnome-open\""
-msgstr "\"gnome-open\" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಲ್ಲಿ ದೋಷ"
-
-#: ../src/yelp-window.c:1265
+#: ../src/yelp-window.c:1336
msgid "_Search:"
msgstr "ಹುಡುಕು(_S):"
-#: ../src/yelp-window.c:1266
+#: ../src/yelp-window.c:1337
msgid "Search for other documentation"
msgstr "ಇತರೆ ದಸ್ತಾವೇಜುಗಳನ್ನು ಹುಡುಕು"
-#: ../src/yelp-window.c:1286
+#: ../src/yelp-window.c:1357
msgid "Cannot create window"
msgstr "ಹೊಸ ವಿಂಡೋವನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
-#: ../src/yelp-window.c:1292
+#: ../src/yelp-window.c:1363
msgid "Cannot create search component"
msgstr "ಹುಡುಕು ಅಂಗವನ್ನು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
-#: ../src/yelp-window.c:1464
+#: ../src/yelp-window.c:1535
msgid "Fin_d:"
msgstr "ಹುಡುಕು(_d):"
-#: ../src/yelp-window.c:1486
+#: ../src/yelp-window.c:1557
msgid "Find _Previous"
msgstr "ಹಿಂದಿನದನ್ನು ಹುಡುಕು(_P)"
-#: ../src/yelp-window.c:1498
+#: ../src/yelp-window.c:1569
msgid "Find _Next"
msgstr "ಮುಂದಿನದನ್ನು ಹುಡುಕು(_N)"
-#: ../src/yelp-window.c:1511
+#: ../src/yelp-window.c:1582
msgid "Phrase not found"
msgstr "ಪದವು ಕಂಡುಬಂದಿಲ್ಲ"
-#: ../src/yelp-window.c:1640
+#: ../src/yelp-window.c:1713
#, c-format
msgid ""
"The file ‘%s’ could not be read. This file might be missing, or you might "
@@ -1489,19 +1548,18 @@ msgstr ""
#. Note to translators: put here your name (and address) so it
#. * will show up in the "about" box
-#: ../src/yelp-window.c:2480
+#: ../src/yelp-window.c:2604
msgid "translator-credits"
msgstr "ಪ್ರಮೋದ್.ಆರ್, ಶಂಕರ್ ಪ್ರಸಾದ್ <svenkate@redhat.com>"
-#: ../src/yelp-window.c:2483
+#: ../src/yelp-window.c:2607
msgid "Yelp"
msgstr "ಯೆಲ್ಪ್"
-#: ../src/yelp-window.c:2485
+#: ../src/yelp-window.c:2609
msgid "A documentation browser and viewer for the Gnome Desktop."
msgstr "Gnome Desktop ಗಾಗಿನ ಒಂದು ದಸ್ತಾವೇಜು ವೀಕ್ಷಕ ಹಾಗು ನೋಡುಗ."
#: ../yelp.desktop.in.in.h:1
msgid "Get help with GNOME"
msgstr "GNOME ಬಗ್ಗೆ ನೆರವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ"
-
diff --git a/po/nb.po b/po/nb.po
index 96ef572a..c02c48ae 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,13 +1,13 @@
# Norwegian (bokmål) translation of yelp.
# Copyright © 2001-2004 Free Software Foundation, Inc.
-# Kjartan Maraas <kmaraas@gnome.org>, 2001-2009.
+# Kjartan Maraas <kmaraas@gnome.org>, 2001-2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: yelp 2.27.x\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-01 14:28+0200\n"
-"PO-Revision-Date: 2009-09-01 14:29+0200\n"
+"Project-Id-Version: yelp 2.30.x\n"
+"Report-Msgid-Bugs-To:\n"
+"POT-Creation-Date: 2010-05-02 11:33+0200\n"
+"PO-Revision-Date: 2010-05-02 11:38+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norsk (bokmål) <i18n-nb@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
@@ -286,7 +286,7 @@ msgstr "2D-grafikk"
msgid "3D Graphics"
msgstr "3D-grafikk"
-#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
+#: ../data/toc.xml.in.h:3
msgid "Accessibility"
msgstr "Tilgjengelighet"
@@ -864,89 +864,281 @@ msgstr "Velkommen til GNOME hjelpleser"
msgid "Word Processors"
msgstr "Tekstbehandlere"
-#: ../data/ui/yelp-bookmarks.ui.h:1
-msgid "Bookmarks"
-msgstr "Bokmerke"
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:147
+msgid "Invalid compressed data"
+msgstr "Ugyldige komprimerte data"
-#: ../data/ui/yelp-bookmarks.ui.h:2
-msgid "Re_name"
-msgstr "E_ndre navn"
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:153
+msgid "Not enough memory"
+msgstr "Ikke nok minne"
-#: ../data/ui/yelp-bookmarks.ui.h:3
-msgid "_Bookmarks:"
-msgstr "_Bokmerker:"
+#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, c-format
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "Siden «%s» ble ikke funnet i dokumentet «%s»."
-#: ../data/ui/yelp-bookmarks-add.ui.h:1
-msgid "Add Bookmark"
-msgstr "Legg til bokmerke"
+#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366
+#, c-format
+msgid "The file does not exist."
+msgstr "Filen eksisterer ikke."
-#: ../data/ui/yelp-bookmarks-add.ui.h:2
-msgid "_Title:"
-msgstr "_Tittel:"
+#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376
+#: ../src/yelp-db-print.c:393 ../src/yelp-man.c:430
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "Filen «%s» eksisterer ikke."
-#: ../data/ui/yelp-open-location.ui.h:1
-msgid "Open Location"
-msgstr "Åpne lokasjon"
+#: ../libyelp/yelp-docbook-document.c:323 ../src/yelp-db-print.c:407
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr ""
+"Filen «%s» kunne ikke leses fordi den ikke er et gyldig utformet XML-dokument."
-#: ../data/ui/yelp-open-location.ui.h:2
-msgid "_Location:"
-msgstr "_Lokasjon:"
+#: ../libyelp/yelp-docbook-document.c:336 ../src/yelp-db-print.c:419
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"Filen «%s» kunne ikke tolkes fordi den eller en inkludert fil ikke er "
+"velformet XML."
-#: ../data/ui/yelp-preferences.ui.h:2
-msgid "Fonts"
-msgstr "Skrifter"
+#: ../libyelp/yelp-docbook-document.c:720 ../src/yelp-db-print.c:766
+msgid "Unknown"
+msgstr "Ukjent"
-#: ../data/ui/yelp-preferences.ui.h:3
-msgid "Preferences"
-msgstr "Brukervalg"
+#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309
+#, c-format
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "Etterspurt side ble ikke funnet i dokument «%s»."
-#: ../data/ui/yelp-preferences.ui.h:4
-msgid "_Browse with caret"
-msgstr "_Bruk markør"
+#: ../libyelp/yelp-error.c:33
+#, c-format
+msgid "An unknown error occurred."
+msgstr "En ukjent feil oppsto."
-#: ../data/ui/yelp-preferences.ui.h:5
-msgid "_Fixed width:"
-msgstr "_Fast bredde:"
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr "Filen «%s» kunne ikke tolkes fordi den ikke er en velformet info-side."
-#: ../data/ui/yelp-preferences.ui.h:6
-msgid "_Use system fonts"
-msgstr "Br_uk systemets skrifter"
+#: ../libyelp/yelp-io-channel.c:125
+#, c-format
+msgid ""
+"The file ‘%s’ could not be read and decoded. The file may be compressed in "
+"an unsupported format."
+msgstr ""
+"Filen «%s» kunne ikke leses og dekodes. Filen kan være komprimert i et format "
+"som ikke støttes."
-#: ../data/ui/yelp-preferences.ui.h:7
-msgid "_Variable width:"
-msgstr "_Variabel bredde:"
+#: ../libyelp/yelp-location-entry.c:246
+msgid "Description Column"
+msgstr "Beskrivelseskolonne"
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Skrift for fast tekst"
+#: ../libyelp/yelp-location-entry.c:247
+msgid "A column in the model to descriptions from"
+msgstr ""
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Skrift for tekst"
+#: ../libyelp/yelp-location-entry.c:262
+msgid "Icon Column"
+msgstr "Ikonkolonne"
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Skrift for tekst med fast bredde."
+#: ../libyelp/yelp-location-entry.c:263
+msgid "A column in the model to get icon names from"
+msgstr ""
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Skrift for tekst med variabel bredde."
+#: ../libyelp/yelp-location-entry.c:278
+msgid "Flags Column"
+msgstr ""
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr "Bruk tastaturkontrollert markør ved visning av sider."
+#: ../libyelp/yelp-location-entry.c:279
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr ""
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Bruk markør"
+#: ../libyelp/yelp-location-entry.c:295
+msgid "Enable Search"
+msgstr "Slå på søk"
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Bruk systemets skrifter"
+#: ../libyelp/yelp-location-entry.c:296
+msgid "Whether the location entry can be used as a search field"
+msgstr "Om lokasjonsfeltet kan brukes som et søkefelt"
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Bruk systemets forvalgte skrifter."
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "Katalogen «%s» eksisterer ikke."
+
+#: ../libyelp/yelp-settings.c:146
+msgid "GtkSettings"
+msgstr "GtkSettings"
+
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr ""
+
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
+
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr ""
+
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Justering av skrift"
+
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr ""
+
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Vis tekstmarkør"
+
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr ""
+
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Redigeringsmodus"
+
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr ""
+
+#: ../libyelp/yelp-transform.c:171
+msgid "XSLT Stylesheet"
+msgstr "XSLT-stilark"
+
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr ""
+
+#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394
+#, fuzzy, c-format
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "XSLT-stilark «%s» mangler eller er ugyldig."
+
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "Ingen href-attributt funnet på yelp:document\n"
+
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Ikke mer minne"
+
+#: ../libyelp/yelp-view.c:92
+msgid "_Back"
+msgstr "Til_bake"
+
+#: ../libyelp/yelp-view.c:97
+msgid "_Forward"
+msgstr "_Fremover"
+
+#: ../libyelp/yelp-view.c:102
+msgid "_Previous Page"
+msgstr "_Forrige side"
+
+#: ../libyelp/yelp-view.c:107
+msgid "_Next Page"
+msgstr "_Neste side"
+
+#: ../libyelp/yelp-view.c:310
+msgid "Yelp URI"
+msgstr "Yelp URI"
+
+#: ../libyelp/yelp-view.c:311
+msgid "A YelpUri with the current location"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:319
+msgid "Loading State"
+msgstr "Laster tilstand"
+
+#: ../libyelp/yelp-view.c:320
+msgid "The loading state of the view"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:329
+msgid "Page ID"
+msgstr "Side-ID"
+
+#: ../libyelp/yelp-view.c:330
+msgid "The ID of the root page of the page being viewew"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:338
+msgid "Root Title"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:339
+msgid "The title of the root page of the page being viewew"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:347
+msgid "Page Title"
+msgstr "Sidetittel"
+
+#: ../libyelp/yelp-view.c:348
+msgid "The title of the page being viewed"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:356
+msgid "Page Description"
+msgstr "Beskrivelse av side"
+
+#: ../libyelp/yelp-view.c:357
+msgid "The description of the page being viewed"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:365
+msgid "Page Icon"
+msgstr "Sideikon"
+
+#: ../libyelp/yelp-view.c:366
+msgid "The icon of the page being viewed"
+msgstr ""
+
+#: ../libyelp/yelp-view.c:683
+#, c-format
+msgid "Could not load a document for ‘%s’"
+msgstr "Kunne ikke laste dokument for «%s»"
+
+#: ../libyelp/yelp-view.c:689
+#, c-format
+msgid "Could not load a document"
+msgstr "Kunne ikke laste et dokument"
+
+#: ../libyelp/yelp-view.c:756
+msgid "Not Found"
+msgstr "Ikke funnet"
+
+#: ../libyelp/yelp-view.c:759
+msgid "Cannot Read"
+msgstr "Kan ikke lese"
+
+#: ../libyelp/yelp-view.c:765 ../src/yelp-error.c:132 ../src/yelp-error.c:139
+msgid "Unknown Error"
+msgstr "Ukjent feil"
+
+#: ../libyelp/yelp-view.c:855
+#, fuzzy, c-format
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "Filen «%s» eksisterer ikke."
+
+#: ../libyelp/yelp-view.c:863
+#, c-format
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "URI «%s» kunne ikke tolkes."
#: ../src/eggdesktopfile.c:165
#, c-format
@@ -1011,99 +1203,66 @@ msgstr "Alternativer for sesjonshåndtering:"
msgid "Show session management options"
msgstr "Vis alternativer for sesjonshåndtering"
-#: ../src/yelp-bookmarks.c:148
-msgid "Open Bookmark in New Window"
-msgstr "Åpne bokmerke i nytt vindu"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr ""
-#: ../src/yelp-bookmarks.c:152
-msgid "Rename Bookmark"
-msgstr "Endre navn på bokmerke"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "_Større tekst"
-#: ../src/yelp-bookmarks.c:156
-msgid "Remove Bookmark"
-msgstr "Fjern bokmerke"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Øk størrelsen på teksten"
-#: ../src/yelp-bookmarks.c:314
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Et bokmerke med navn %s eksisterer allerede for denne siden."
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "_Mindre tekst"
-#: ../src/yelp-bookmarks.c:390
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "Et bokmerke med navn <b>%s</b> eksisterer allerede for denne siden."
-
-#: ../src/yelp-bookmarks.c:403
-msgid "Help Topics"
-msgstr "Hjelpemner"
-
-#: ../src/yelp-bookmarks.c:418
-msgid "Document Sections"
-msgstr "Dokumentdeler"
-
-#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-mallard.c:380
-#: ../src/yelp-man.c:292 ../src/yelp-man.c:385 ../src/yelp-toc.c:266
-#: ../src/yelp-toc.c:365
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr ""
+
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr ""
+
+#: ../src/yelp-application.c:297 ../src/yelp-main.c:386
+#: ../src/yelp-window.c:1000 ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Hjelp"
+
+#: ../src/yelp-application.c:547
+msgid ""
+"You do not have PackageKit installed. Package installation links require "
+"PackageKit."
+msgstr ""
+
+#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 ../src/yelp-man.c:292
+#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
msgid "Page not found"
msgstr "Side ikke funnet"
-#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-mallard.c:281 ../src/yelp-mallard.c:381 ../src/yelp-man.c:293
+#: ../src/yelp-db-print.c:259 ../src/yelp-man.c:293
#, c-format
msgid "The page %s was not found in the document %s."
msgstr "Siden %s ble ikke funnet i dokument %s."
-#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
-#: ../src/yelp-man.c:386
+#: ../src/yelp-db-print.c:351 ../src/yelp-man.c:386
#, c-format
msgid "The requested page was not found in the document %s."
msgstr "Etterspurt side ble ikke funnet i dokument %s."
-#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
-#: ../src/yelp-man.c:429
+#: ../src/yelp-db-print.c:392 ../src/yelp-man.c:429
msgid "File not found"
msgstr "Fil ikke funnet"
-#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
-#: ../src/yelp-man.c:430
-#, c-format
-msgid "The file ‘%s’ does not exist."
-msgstr "Filen «%s» eksisterer ikke."
-
-#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
-#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
+#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 ../src/yelp-man.c:458
+#: ../src/yelp-toc.c:437
msgid "Could not parse file"
msgstr "Kunne ikke lese fil"
-#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed XML "
-"document."
-msgstr ""
-"Filen «%s» kunne ikke leses fordi den ikke er et gyldig utformet XML-dokument."
-
-#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because one or more of its included files "
-"is not a well-formed XML document."
-msgstr ""
-"Filen «%s» kunne ikke tolkes fordi den eller en inkludert fil ikke er "
-"velformet XML."
-
-#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
-msgid "Unknown Error"
-msgstr "Ukjent feil"
-
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1723
+#: ../src/yelp-error.c:136
msgid "Could Not Read File"
msgstr "Kunne ikke lese filen"
@@ -1111,47 +1270,19 @@ msgstr "Kunne ikke lese filen"
msgid "No information is available about this error."
msgstr "Ingen informasjon er tilgjengelig om denne feilen."
-#: ../src/yelp-info.c:396
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr "Filen «%s» kunne ikke tolkes fordi den ikke er en velformet info-side."
-
-#: ../src/yelp-io-channel.c:132
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
-msgstr ""
-"Filen «%s» kunne ikke leses og dekodes. Filen kan være komprimert i et format "
-"som ikke støttes."
-
-#: ../src/yelp-main.c:88
+#: ../src/yelp-main.c:89
msgid "Use a private session"
msgstr "Bruk en privat sesjon"
-#: ../src/yelp-main.c:97
+#: ../src/yelp-main.c:98
msgid "Define which cache directory to use"
msgstr "Definer hvilken bufferkatalog som skal brukes"
#. Commandline parsing is done here
-#: ../src/yelp-main.c:355
+#: ../src/yelp-main.c:357
msgid " GNOME Help Browser"
msgstr "GNOME hjelpleser"
-#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Hjelp"
-
-#: ../src/yelp-mallard.c:311
-msgid "Directory not found"
-msgstr "Katalog ikke funnet"
-
-#: ../src/yelp-mallard.c:312
-#, c-format
-msgid "The directory ‘%s’ does not exist."
-msgstr "Katalogen «%s» eksisterer ikke."
-
#: ../src/yelp-man.c:459
#, c-format
msgid ""
@@ -1300,256 +1431,53 @@ msgstr ""
"Innholdsfortegnelsen kunne ikke tolkes fordi den ikke er et velformet XML-"
"dokument."
-#: ../src/yelp-transform.c:86
-msgid "Invalid Stylesheet"
-msgstr "Ugyldig stilark"
-
-#: ../src/yelp-transform.c:87
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr "XSLT-stilark «%s» mangler eller er ugyldig."
+#: ../src/yelp-window.c:203
+msgid "_Page"
+msgstr "Si_de"
-#: ../src/yelp-transform.c:122
-msgid "Broken Transformation"
-msgstr "Feil i transformasjon"
+#: ../src/yelp-window.c:204
+msgid "_View"
+msgstr "_Visning"
-#: ../src/yelp-transform.c:123
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr "En ukjent feil oppsto under forsøk på å transformere dokumentet."
-
-#: ../src/yelp-transform.c:389
-msgid "No href attribute found on yelp:document\n"
-msgstr "Ingen href-attributt funnet på yelp:document\n"
-
-#: ../src/yelp-transform.c:404
-msgid "Out of memory"
-msgstr "Ikke mer minne"
-
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "_Fil"
-
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "R_ediger"
-
-#: ../src/yelp-window.c:306
+#: ../src/yelp-window.c:205
msgid "_Go"
msgstr "_Naviger"
-#: ../src/yelp-window.c:307
+#: ../src/yelp-window.c:206
msgid "_Bookmarks"
msgstr "_Bokmerker"
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "_Hjelp"
-
-#: ../src/yelp-window.c:311
+#: ../src/yelp-window.c:209
msgid "_New Window"
msgstr "_Nytt vindu"
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "Skriv ut dette dokumentet..."
-
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "Skriv ut denne siden..."
-
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "Om dette dokumentet"
-
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "Åpne _lokasjon"
-
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "_Lukk vindu"
-
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "_Kopier"
-
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "_Velg alt"
-
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "_Finn..."
-
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "Finn f_orrige"
-
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Finn forrige oppføring av ordet eller frasen"
-
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "Finn ne_ste"
-
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "Finn neste oppføring av ordet eller frasen"
-
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "_Brukervalg"
-
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "_Gjenles"
-
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "Til_bake"
-
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "Vis forrige side i historikken"
-
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "_Fremover"
-
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "Vis neste side i historikken"
-
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "_Hjelpemner"
+#: ../src/yelp-window.c:214
+msgid "_Close"
+msgstr "_Lukk"
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "Gå til listen over hjelpemner"
-
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "_Forrige del"
-
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "_Neste del"
-
-#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "_Innhold"
-
-#: ../src/yelp-window.c:416
+#: ../src/yelp-window.c:219
msgid "_Add Bookmark"
msgstr "_Legg til bokmerke"
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "R_ediger bokmerker..."
-
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "Å_pne lenke"
-
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "Åpne lenke i _nytt vindu"
-
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "_Kopier lenkens adresse"
-
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "Hjelp for dette programmet"
-
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "_Om"
-
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "Kopier e-postadresse"
-
-#: ../src/yelp-window.c:524
-msgid "Help Browser"
-msgstr "Hjelp leser"
-
-#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1785
-msgid "Loading..."
-msgstr "Laster..."
-
-#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
-msgid "Unknown Page"
-msgstr "Ukjent side"
-
-#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104
-#: ../src/yelp-window.c:1113
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "Etterspurt URI «%s» er ugyldig"
-
-#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106
-#: ../src/yelp-window.c:1114
-msgid "Unable to load page"
-msgstr "Kan ikke laste siden"
-
-#: ../src/yelp-window.c:1343
-msgid "_Search:"
-msgstr "_Søk:"
-
-#: ../src/yelp-window.c:1344
-msgid "Search for other documentation"
-msgstr "Søk etter annen dokumentasjon"
-
-#: ../src/yelp-window.c:1364
-msgid "Cannot create window"
-msgstr "Kan ikke opprette vindu"
-
-#: ../src/yelp-window.c:1370
-msgid "Cannot create search component"
-msgstr "Kan ikke opprette søkekomponent"
-
-#: ../src/yelp-window.c:1542
-msgid "Fin_d:"
-msgstr "_Finn:"
+#: ../src/yelp-window.c:224
+msgid "Open Location"
+msgstr "Åpne lokasjon"
-#: ../src/yelp-window.c:1564
-msgid "Find _Previous"
-msgstr "_Finn forrige"
+#: ../src/yelp-window.c:249
+msgid "Application"
+msgstr "Program"
-#: ../src/yelp-window.c:1576
-msgid "Find _Next"
-msgstr "Finn _neste"
+#: ../src/yelp-window.c:250
+msgid "A YelpApplication instance that controls this window"
+msgstr ""
-#: ../src/yelp-window.c:1589
-msgid "Phrase not found"
-msgstr "Frase ikke funnet"
+#: ../src/yelp-window.c:416
+msgid "Search..."
+msgstr "Søk..."
-#: ../src/yelp-window.c:1720
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr ""
-"Filen «%s» kunne ikke leses. Filen kan mangle eller kanskje du ikke har "
-"rettigheter til å lese den."
-
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2602
-msgid "translator-credits"
-msgstr "Kjartan Maraas <kmaraas@gnome.org>"
-
-#: ../src/yelp-window.c:2605
-msgid "Yelp"
-msgstr "Yelp"
-
-#: ../src/yelp-window.c:2607
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "Program for å finne og lese dokumentasjon for GNOME skrivebordet."
+#: ../src/yelp-window.c:945
+msgid "Loading"
+msgstr "Laster"
#: ../yelp.desktop.in.in.h:1
msgid "Get help with GNOME"
diff --git a/po/oc.po b/po/oc.po
index ed94aa40..57082fe7 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the yelp package.
# Copyright (C) 2005 Free Software Foundation,Inc.
#
-# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>, 2006-2008.
+# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>, 2006-2008, 2010.
msgid ""
msgstr ""
"Project-Id-Version: oc\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-07-02 09:01+0200\n"
-"PO-Revision-Date: 2008-08-06 02:41+0200\n"
+"PO-Revision-Date: 2010-04-14 18:40+0200\n"
"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
"Language-Team: Occitan <ubuntu-l10n-oci@lists.ubuntu.com>\n"
"MIME-Version: 1.0\n"
@@ -59,7 +59,7 @@ msgstr "Periferics materials"
#: ../data/man.xml.in.h:9
msgid "Kernel Routines"
-msgstr ""
+msgstr "Rotinas del nucli"
#: ../data/man.xml.in.h:10
msgid "Manual Pages"
@@ -239,7 +239,7 @@ msgstr "Administracion sistèma"
#: ../data/man.xml.in.h:54
msgid "System Calls"
-msgstr ""
+msgstr "Apèls del sistèma"
#: ../data/man.xml.in.h:55
msgid "System V Form/Menu Functions"
@@ -283,11 +283,11 @@ msgstr "Presentacion de X11"
#: ../data/toc.xml.in.h:1
msgid "2D Graphics"
-msgstr ""
+msgstr "Grafismes 2D"
#: ../data/toc.xml.in.h:2
msgid "3D Graphics"
-msgstr ""
+msgstr "Grafismes 3D"
#: ../data/toc.xml.in.h:3
msgid "Accessibility"
@@ -307,11 +307,11 @@ msgstr "Divertiment"
#: ../data/toc.xml.in.h:7
msgid "Applications for viewing and manipulating graphics"
-msgstr ""
+msgstr "Aplicacions per afichar o manipular de grafics"
#: ../data/toc.xml.in.h:8
msgid "Applications related to audio and video"
-msgstr ""
+msgstr "Aplicacions ligadas a l'àudio o a la vidèo"
#: ../data/toc.xml.in.h:9
msgid "Applications that teach or aid in learning"
@@ -319,11 +319,11 @@ msgstr "Aplicacions per ensenhar o ajudar a aprene"
#: ../data/toc.xml.in.h:10
msgid "Arcade Games"
-msgstr ""
+msgstr "Jòcs d'arcada"
#: ../data/toc.xml.in.h:11
msgid "Archiving Tools"
-msgstr ""
+msgstr "Espleches d'archivatge"
#: ../data/toc.xml.in.h:12
msgid "Art"
@@ -343,15 +343,15 @@ msgstr "Biologia"
#: ../data/toc.xml.in.h:16
msgid "Blocks Games"
-msgstr ""
+msgstr "Jòcs de blòcs"
#: ../data/toc.xml.in.h:17
msgid "Board Games"
-msgstr ""
+msgstr "Jòcs de platèus"
#: ../data/toc.xml.in.h:18
msgid "Building"
-msgstr ""
+msgstr "Construccion"
#: ../data/toc.xml.in.h:19
msgid "Calculator"
@@ -367,7 +367,7 @@ msgstr "Jòcs de cartas"
#: ../data/toc.xml.in.h:22
msgid "Charting Tools"
-msgstr ""
+msgstr "Espleches de diagramas"
#: ../data/toc.xml.in.h:23
msgid "Chat"
@@ -395,11 +395,11 @@ msgstr "Construccion"
#: ../data/toc.xml.in.h:29
msgid "Contact Management"
-msgstr ""
+msgstr "Gestion dels contactes"
#: ../data/toc.xml.in.h:30
msgid "Data Visualization"
-msgstr ""
+msgstr "Visualizacion de donadas"
#: ../data/toc.xml.in.h:31
msgid "Databases"
@@ -407,7 +407,7 @@ msgstr "Basas de donadas"
#: ../data/toc.xml.in.h:32
msgid "Debuggers"
-msgstr ""
+msgstr "Desbugadors"
#: ../data/toc.xml.in.h:33
msgid "Desktop"
@@ -419,7 +419,7 @@ msgstr "Paramètres del burèu"
#: ../data/toc.xml.in.h:36
msgid "Dialup"
-msgstr ""
+msgstr "Connexions comutadas"
#: ../data/toc.xml.in.h:37
msgid "Dictionaries"
@@ -428,7 +428,7 @@ msgstr "Diccionaris"
#. Translators: this is a menu title for burning audio and video to dics
#: ../data/toc.xml.in.h:39
msgid "Disc Burning"
-msgstr ""
+msgstr "Gravadura de disques"
#: ../data/toc.xml.in.h:40
msgid "Economy"
@@ -448,15 +448,15 @@ msgstr "Electronica"
#: ../data/toc.xml.in.h:44
msgid "Email Tools"
-msgstr ""
+msgstr "Espleches de messatjariá"
#: ../data/toc.xml.in.h:45
msgid "Emulator"
-msgstr ""
+msgstr "Emulator"
#: ../data/toc.xml.in.h:46
msgid "Engineering"
-msgstr ""
+msgstr "Ingenhiariá"
#: ../data/toc.xml.in.h:47
msgid "File Manager"
@@ -476,11 +476,11 @@ msgstr "Sistèma de fichièrs"
#: ../data/toc.xml.in.h:51
msgid "Financial Tools"
-msgstr ""
+msgstr "Espleches financièrs"
#: ../data/toc.xml.in.h:52
msgid "Flow Charting Tools"
-msgstr ""
+msgstr "Espleches de diagramas de flux"
#: ../data/toc.xml.in.h:53
msgid "GNOME Applications"
@@ -492,7 +492,7 @@ msgstr "GTK"
#: ../data/toc.xml.in.h:55
msgid "GUI Designers"
-msgstr ""
+msgstr "Conceptors d'interfàcia grafica d'utilizaire"
#: ../data/toc.xml.in.h:57
msgid "Generic applications for the GNOME environment"
@@ -512,7 +512,7 @@ msgstr "Geologia"
#: ../data/toc.xml.in.h:61
msgid "Geoscience"
-msgstr ""
+msgstr "Geosciéncia"
#: ../data/toc.xml.in.h:62
msgid "Graphics"
@@ -520,23 +520,23 @@ msgstr "Grafisme"
#: ../data/toc.xml.in.h:63
msgid "Guides and manuals for applications that connect to the outside world"
-msgstr ""
+msgstr "Guidas e manuals de las aplicacions que se connèctan al mond exterior"
#: ../data/toc.xml.in.h:64
msgid "Guides for getting involved in development"
-msgstr ""
+msgstr "Guidas d'introduccion al desvolopament"
#: ../data/toc.xml.in.h:65
msgid "Ham Radio"
-msgstr ""
+msgstr "Ràdio amator"
#: ../data/toc.xml.in.h:66
msgid "Hardware Settings"
-msgstr ""
+msgstr "Configuracion materiala"
#: ../data/toc.xml.in.h:67
msgid "Have some fun"
-msgstr ""
+msgstr "Divertiment"
#: ../data/toc.xml.in.h:68
msgid "History"
@@ -544,7 +544,7 @@ msgstr "Istoric"
#: ../data/toc.xml.in.h:69
msgid "IDEs"
-msgstr ""
+msgstr "Environaments de desvolopament integrat"
#: ../data/toc.xml.in.h:70
msgid "IRC Clients"
@@ -552,7 +552,7 @@ msgstr "Clients IRC"
#: ../data/toc.xml.in.h:71
msgid "Image Processing"
-msgstr ""
+msgstr "Tractament dels imatges"
#: ../data/toc.xml.in.h:72
msgid "Instant Messaging"
@@ -579,10 +579,12 @@ msgid ""
"Learn more about making your system more accessible for a range of "
"disabilities"
msgstr ""
+"Ne saber mai sul biais de rendre vòstre sistèma mai accessible a las "
+"personas que patisson d'andicaps"
#: ../data/toc.xml.in.h:78
msgid "Licenses"
-msgstr ""
+msgstr "Licéncias"
#: ../data/toc.xml.in.h:79
msgid "Literature"
@@ -598,7 +600,7 @@ msgstr "Matematicas"
#: ../data/toc.xml.in.h:82
msgid "Medical Software"
-msgstr ""
+msgstr "Logicial medical"
#: ../data/toc.xml.in.h:83
msgid "Midi"
@@ -610,15 +612,15 @@ msgstr "Documentacion divèrsa"
#: ../data/toc.xml.in.h:85
msgid "Mixers"
-msgstr ""
+msgstr "Mixadors"
#: ../data/toc.xml.in.h:86
msgid "Monitor"
-msgstr ""
+msgstr "Ecran"
#: ../data/toc.xml.in.h:87
msgid "Motif"
-msgstr ""
+msgstr "Motiu"
#: ../data/toc.xml.in.h:88
msgid "Music"
@@ -630,7 +632,7 @@ msgstr "Novèlas"
#: ../data/toc.xml.in.h:90
msgid "Numerical Analysis"
-msgstr ""
+msgstr "Analisi numeric"
#: ../data/toc.xml.in.h:91
msgid "OCR"
@@ -654,7 +656,7 @@ msgstr "P2P"
#: ../data/toc.xml.in.h:96
msgid "PDA Communication"
-msgstr ""
+msgstr "Comunicacion PDA"
#: ../data/toc.xml.in.h:97
msgid "Package Manager"
@@ -662,7 +664,7 @@ msgstr "Gestinari de paquetatges"
#: ../data/toc.xml.in.h:98
msgid "Parallel Computing"
-msgstr ""
+msgstr "Calcul parallèl"
#: ../data/toc.xml.in.h:99
msgid "Photography"
@@ -679,7 +681,7 @@ msgstr "Jogaires"
#: ../data/toc.xml.in.h:103
msgid "Presentation Tools"
-msgstr ""
+msgstr "Espleches de presentacion"
#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
msgid "Printing"
@@ -687,11 +689,11 @@ msgstr "Estampatge"
#: ../data/toc.xml.in.h:105
msgid "Profiling Tools"
-msgstr ""
+msgstr "Espleches d'analisi"
#: ../data/toc.xml.in.h:106
msgid "Project Management Tools"
-msgstr ""
+msgstr "Espleches de gestion de projècte"
#: ../data/toc.xml.in.h:107
msgid "Publishing"
@@ -703,12 +705,12 @@ msgstr "Qt"
#: ../data/toc.xml.in.h:109
msgid "Raster Graphics"
-msgstr ""
+msgstr "Rendut de grafismes"
#. Translators: this is a menu title for audio and video recorders
#: ../data/toc.xml.in.h:111
msgid "Recorders"
-msgstr ""
+msgstr "Enregistradors"
#: ../data/toc.xml.in.h:112
msgid "Remote Access"
@@ -716,7 +718,7 @@ msgstr "Accès distant"
#: ../data/toc.xml.in.h:113
msgid "Revision Control"
-msgstr ""
+msgstr "Gestion de versions"
#: ../data/toc.xml.in.h:114
msgid "Robotics"
@@ -724,11 +726,11 @@ msgstr "Robotica"
#: ../data/toc.xml.in.h:115
msgid "Role Playing Games"
-msgstr ""
+msgstr "Jòcs de ròtle"
#: ../data/toc.xml.in.h:116
msgid "Scanning"
-msgstr ""
+msgstr "Fintar"
#: ../data/toc.xml.in.h:117
msgid "Science"
@@ -740,7 +742,7 @@ msgstr "Seguritat"
#: ../data/toc.xml.in.h:119
msgid "Sequencers"
-msgstr ""
+msgstr "Sequenciadors"
#: ../data/toc.xml.in.h:120
msgid "Settings"
@@ -749,10 +751,12 @@ msgstr "Paramètres"
#: ../data/toc.xml.in.h:121
msgid "Settings users can manipulate to make their environment more pleasant"
msgstr ""
+"Paramètres que los utilizares pòdon modificar per far lor environament mai "
+"agradiu"
#: ../data/toc.xml.in.h:122
msgid "Simulation Games"
-msgstr ""
+msgstr "Jòcs de simulacion"
#: ../data/toc.xml.in.h:123
msgid "Sound"
@@ -764,7 +768,7 @@ msgstr "Son e videò"
#: ../data/toc.xml.in.h:125
msgid "Sound &amp; Video Editing"
-msgstr ""
+msgstr "Edicion sonòra e vidèo"
#: ../data/toc.xml.in.h:126
msgid "Sports"
@@ -792,15 +796,15 @@ msgstr "TV"
#: ../data/toc.xml.in.h:132
msgid "Telephony"
-msgstr ""
+msgstr "Telefoniá"
#: ../data/toc.xml.in.h:133
msgid "Telephony Tools"
-msgstr ""
+msgstr "Espleches de telefoniá"
#: ../data/toc.xml.in.h:134
msgid "Terminal Emulator"
-msgstr ""
+msgstr "Emulador de terminal"
#: ../data/toc.xml.in.h:135
msgid "Text Editors"
@@ -820,7 +824,7 @@ msgstr "Espleches de revirada"
#: ../data/toc.xml.in.h:139
msgid "Tuners"
-msgstr ""
+msgstr "Ràdio"
#: ../data/toc.xml.in.h:140
msgid "Utilities"
@@ -828,11 +832,11 @@ msgstr "Utilitaris"
#: ../data/toc.xml.in.h:141
msgid "Utilities to help you get work done"
-msgstr ""
+msgstr "Utilitaris per vos ajudar a far vòstre trabalh"
#: ../data/toc.xml.in.h:142
msgid "Vector Graphics"
-msgstr ""
+msgstr "Grafisme vectorial"
#: ../data/toc.xml.in.h:143
msgid "Video"
@@ -881,7 +885,7 @@ msgstr "Marca-paginas"
#: ../data/ui/yelp.glade.h:5
msgid "C_ase sensitive"
-msgstr ""
+msgstr "Téner compte de la c_assa"
#: ../data/ui/yelp.glade.h:6
msgid "Find"
@@ -905,7 +909,7 @@ msgstr "_Favorits :"
#: ../data/ui/yelp.glade.h:11
msgid "_Browse with caret"
-msgstr ""
+msgstr "_Navigar amb lo cursor"
#: ../data/ui/yelp.glade.h:12
msgid "_Find:"
@@ -913,7 +917,7 @@ msgstr "_Recercar :"
#: ../data/ui/yelp.glade.h:13
msgid "_Fixed width:"
-msgstr ""
+msgstr "Chassa _fixa :"
#: ../data/ui/yelp.glade.h:14
msgid "_Location:"
@@ -941,11 +945,11 @@ msgstr "Largor _variabla :"
#: ../data/ui/yelp.glade.h:20
msgid "_Wrap around"
-msgstr ""
+msgstr "Recèrca _circulara"
#: ../data/yelp.schemas.in.h:1
msgid "Font for fixed text"
-msgstr ""
+msgstr "Poliça de chassa fixa"
#: ../data/yelp.schemas.in.h:2
msgid "Font for text"
@@ -953,19 +957,21 @@ msgstr "Poliça pel tèxt"
#: ../data/yelp.schemas.in.h:3
msgid "Font for text with fixed width."
-msgstr ""
+msgstr "Poliça de tèxte de chassa fixa."
#: ../data/yelp.schemas.in.h:4
msgid "Font for text with variable width."
-msgstr ""
+msgstr "Poliça de tèxte de chassa variabla."
#: ../data/yelp.schemas.in.h:5
msgid "Use a keyboard-controllable caret when viewing pages."
msgstr ""
+"Utilizar un cursor contrarotlable pel clavièr al moment de la visualizacion "
+"de las paginas."
#: ../data/yelp.schemas.in.h:6
msgid "Use caret"
-msgstr ""
+msgstr "Utilizar lo cursor"
#: ../data/yelp.schemas.in.h:7
msgid "Use system fonts"
@@ -1022,7 +1028,7 @@ msgstr "Impossible de trobar la pagina %s dins lo document %s."
#: ../src/yelp-man.c:386
#, c-format
msgid "The requested page was not found in the document %s."
-msgstr ""
+msgstr "La pagina demandada es pas estada trobada dins lo document %s."
#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
#: ../src/yelp-man.c:429
@@ -1039,7 +1045,7 @@ msgstr "Lo fichièr '%s' existís pas."
#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
msgid "Could not parse file"
-msgstr ""
+msgstr "Impossible d'analisar lo fichièr"
#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
#, c-format
@@ -1047,6 +1053,8 @@ msgid ""
"The file ‘%s’ could not be parsed because it is not a well-formed XML "
"document."
msgstr ""
+"Lo fichièr « %s » a pas pogut èsser analisat, perque es pas un document XML "
+"corrèctament format."
#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
#, c-format
@@ -1054,6 +1062,8 @@ msgid ""
"The file ‘%s’ could not be parsed because one or more of its included files "
"is not a well-formed XML document."
msgstr ""
+"Lo fichièr « %s » a pas pogut èsser analisat, perque un o mai d'un de sos "
+"fichièrs incluses es pas un document XML corrèctament format."
#: ../src/yelp-db-print.c:765 ../src/yelp-docbook.c:786
msgid "Unknown"
@@ -1069,13 +1079,15 @@ msgstr "Impossible de legir lo fichièr"
#: ../src/yelp-error.c:146
msgid "No information is available about this error."
-msgstr ""
+msgstr "Cap d'informacion es pas disponibla a prepaus d'aquesta error."
#: ../src/yelp-info.c:396
#, c-format
msgid ""
"The file ‘%s’ could not be parsed because it is not a well-formed info page."
msgstr ""
+"Lo fichièr « %s » a pas pogut èsser analisat, perque es pas una pagina info "
+"corrèctament formada."
#: ../src/yelp-io-channel.c:132
#, c-format
@@ -1108,6 +1120,8 @@ msgstr "Ajuda"
msgid ""
"The file ‘%s’ could not be parsed because it is not a well-formed man page."
msgstr ""
+"Lo fichièr « %s » a pas pogut èsser analisat, perque es pas una pagina de "
+"manual corrèctament formada."
#: ../src/yelp-print.c:97
msgid "Print"
@@ -1141,7 +1155,7 @@ msgstr "Impossible d'estampar vòstre document : %s"
#: ../src/yelp-search-parser.c:67
msgid "the GNOME Support Forums"
-msgstr ""
+msgstr "Los forums d'assisténcia de GNOME"
#: ../src/yelp-search-parser.c:285
#, c-format
@@ -1153,6 +1167,8 @@ msgid ""
"Try using different words to describe the problem you're having or the topic "
"you want help with."
msgstr ""
+"Ensajatz d'utilizar de mots diferents per descriure lo problèma qu'avètz o "
+"lo tèma dins lo qual volètz d'ajuda."
#: ../src/yelp-search-parser.c:289
#, c-format
@@ -1167,7 +1183,7 @@ msgstr "Resultas de la recèrca per \"%s\""
#: ../src/yelp-search-parser.c:303
#, c-format
msgid "Repeat the search online at %s"
-msgstr ""
+msgstr "Repetir la recèrca en linha a %s"
#. Translators: Do not translate this list exactly. These are
#. * colon-separated words that aren't useful for choosing search
@@ -1184,6 +1200,8 @@ msgid ""
"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
"where:who:will:with:won't:wont:why:work:working:works"
msgstr ""
+"ieu:tu:el:ela:nos:vos:eles:elas:me:te:le:la:los:li:lor:me:te:mas:o:e:doncas:"
+"o:ni:perque:un:una:de:que:quina:siá:qué:quora:tanben:coma:causa:daquòs:ajuda"
#. Translators: This is a list of common prefixes for words.
#. * Do not translate this directly. Instead, use a colon
@@ -1207,55 +1225,62 @@ msgstr "re"
#: ../src/yelp-search-parser.c:899
msgid "ers:er:ing:es:s:'s"
msgstr ""
+"acion:aça:ada:atge:enc:ava:al:algia:algic:antròp:antropic:arquia:arque:assa:"
+"astre:cid:còl:cultura:dèrme:eria:esca:e:or:oses:gama:gamia:gèn:genèsi:gòn:"
+"gonia:grada:grafia:genia:iatra:iatria:isme:ista:ium:latria:logia:logic:lòg:"
+"ment:nòm:onar:patia:fag:fil:filia:fòba:fobia:s:tcnia:tecnic:terapèuta:"
+"terapia:terapic:tiu:vòr"
#: ../src/yelp-search-parser.c:1095
msgid "No Comment"
-msgstr ""
+msgstr "Sens comentari"
#. Much bigger problems
#: ../src/yelp-search.c:238
msgid "Search could not be processed"
-msgstr ""
+msgstr "Impossible d'efectuar la recèrca"
#: ../src/yelp-search.c:239
msgid "The requested search could not be processed."
-msgstr ""
+msgstr "La recèrca demandada a pas pogut èsser tractada."
#: ../src/yelp-search.c:366
msgid "Cannot process the search"
-msgstr ""
+msgstr "Impossible d'efectuar la recèrca"
#: ../src/yelp-search.c:367
msgid "The search processor returned invalid results"
-msgstr ""
+msgstr "Lo motor de recèrca a tornat de resultats invalids"
#: ../src/yelp-toc.c:267
#, c-format
msgid "The page %s was not found in the TOC."
-msgstr ""
+msgstr "La pagina %s se tròba pas dins l'ensenhador"
#: ../src/yelp-toc.c:366
msgid "The requested page was not found in the TOC."
-msgstr ""
+msgstr "La pagina demandada se tròba pas dins l'ensenhador"
#: ../src/yelp-toc.c:438
msgid ""
"The TOC file could not be parsed because it is not a well-formed XML "
"document."
msgstr ""
+"Lo fichièr d'ensenhador pòt pas èsser analisat perque es pas un document XML "
+"corrèctament format."
#: ../src/yelp-transform.c:80
msgid "Invalid Stylesheet"
-msgstr ""
+msgstr "Fuèlha d'estil invalida"
#: ../src/yelp-transform.c:81
#, c-format
msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr ""
+msgstr "Lo fuèlh d'estil « %s » es mancant o es invalid."
#: ../src/yelp-transform.c:112
msgid "Broken Transformation"
-msgstr ""
+msgstr "Fracàs de transformacion"
#: ../src/yelp-transform.c:113
msgid "An unknown error occurred while attempting to transform the document."
@@ -1265,7 +1290,7 @@ msgstr ""
#: ../src/yelp-transform.c:373
msgid "No href attribute found on yelp:document\n"
-msgstr ""
+msgstr "Cap d'atribut href pas trobat dins yelp:document\n"
#: ../src/yelp-transform.c:388
msgid "Out of memory"
@@ -1333,7 +1358,7 @@ msgstr "Recercar lo _precedent"
#: ../src/yelp-window.c:360
msgid "Find previous occurrence of the word or phrase"
-msgstr ""
+msgstr "Recèrca l'occurréncia precedenta d'aqueste mot o d'aquesta expression"
#: ../src/yelp-window.c:363
msgid "Find Ne_xt"
@@ -1341,7 +1366,7 @@ msgstr "Recercar lo seguent"
#: ../src/yelp-window.c:365
msgid "Find next occurrence of the word or phrase"
-msgstr ""
+msgstr "Recèrca l'occurréncian venenta d'aqueste mot o d'aquesta expression"
#: ../src/yelp-window.c:368
msgid "_Preferences"
@@ -1435,7 +1460,7 @@ msgstr "Pagina desconeguda"
#: ../src/yelp-window.c:1084
#, c-format
msgid "The requested URI \"%s\" is invalid"
-msgstr ""
+msgstr "L'URI demandat « %s » es invalid"
#: ../src/yelp-window.c:1009 ../src/yelp-window.c:1066
#: ../src/yelp-window.c:1085
@@ -1444,7 +1469,7 @@ msgstr "Impossible de cargar la pagina"
#: ../src/yelp-window.c:1079
msgid "Error executing \"gnome-open\""
-msgstr ""
+msgstr "Error al moment d'executar \"gnome-open\""
#: ../src/yelp-window.c:1265
msgid "_Search:"
@@ -1460,7 +1485,7 @@ msgstr "Impossible de crear una fenèstra"
#: ../src/yelp-window.c:1292
msgid "Cannot create search component"
-msgstr ""
+msgstr "Impossible de crear un component de recèrca"
#: ../src/yelp-window.c:1464
msgid "Fin_d:"
@@ -1484,6 +1509,8 @@ msgid ""
"The file ‘%s’ could not be read. This file might be missing, or you might "
"not have permissions to read it."
msgstr ""
+"Lo fichièr « %s » pòt pas èsser legit. Benlèu qu'aqueste fichièr es mancant, "
+"o qu'avètz pas las permissions per lo legir."
#. Note to translators: put here your name (and address) so it
#. * will show up in the "about" box
@@ -1502,4 +1529,3 @@ msgstr "Un navigador e legidor de documentacion pel burèu GNOME."
#: ../yelp.desktop.in.in.h:1
msgid "Get help with GNOME"
msgstr "Obténer d'ajuda amb GNOME"
-
diff --git a/po/or.po b/po/or.po
index 12efe21a..ae1456e5 100644
--- a/po/or.po
+++ b/po/or.po
@@ -1,4 +1,4 @@
-# translation of yelp.HEAD.or.po to Oriya
+# translation of yelp.master.or.po to Oriya
# Oriya translation of yelp.HEAD.pot.
# This file is distributed under the same license as the yelp package.
# Copyright (C) 2005 Free Software Foundation,Inc.
@@ -8,20 +8,20 @@
# Kasturi Dhal <kasturi_mama@yahoo.com>, 2005.
# Gora Mohanty <gora_mohanty@yahoo.co.in>, 2006.
# Subhransu Behera <arya_subhransu@yahoo.co.in>, 2006.
-# Manoj Kumar Giri <mgiri@redhat.com>, 2008.
+# Manoj Kumar Giri <mgiri@redhat.com>, 2008, 2010.
msgid ""
msgstr ""
-"Project-Id-Version: yelp.HEAD.or\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-20 04:08+0000\n"
-"PO-Revision-Date: 2008-08-19 19:30+0530\n"
+"Project-Id-Version: yelp.master.or\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n"
+"POT-Creation-Date: 2010-05-07 16:33+0000\n"
+"PO-Revision-Date: 2010-05-11 19:28+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
-"Language-Team: Oriya\n"
+"Language-Team: Oriya <Translation-team-or@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n!=1)\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"\n"
"\n"
"\n"
@@ -77,7 +77,7 @@ msgstr "ସହାୟକ ପୁସ୍ତକ ପୃଷ୍ଠା"
#: ../data/man.xml.in.h:11
msgid "Network Audio Sound Functions"
-msgstr "ନେଟଓ୍ବାର୍କ ଧ୍ବନୀ ଶବ୍ଦ ଫଳନ"
+msgstr "ନେଟୱର୍କ ଧ୍ବନୀ ଶବ୍ଦ ଫଳନ"
#: ../data/man.xml.in.h:12
msgid "OpenSSL Applications"
@@ -369,7 +369,7 @@ msgstr "କାଲକୁଲେଟର"
#: ../data/toc.xml.in.h:20
msgid "Calendar"
-msgstr "କାଲେଣ୍ଡର"
+msgstr "କ୍ଯାଲେଣ୍ଡର"
#: ../data/toc.xml.in.h:21
msgid "Card Games"
@@ -421,7 +421,7 @@ msgstr "ତ୍ରୁଟି ନିବାରଣକାରୀ"
#: ../data/toc.xml.in.h:33
msgid "Desktop"
-msgstr "ଡେସ୍କଟପ୍"
+msgstr "ଡେସ୍କଟପ"
#: ../data/toc.xml.in.h:34
msgid "Desktop Settings"
@@ -526,7 +526,7 @@ msgstr "ଭୂବିଜ୍ଞାନ"
#: ../data/toc.xml.in.h:62
msgid "Graphics"
-msgstr "ଆଲେଖୀ"
+msgstr "ଆଲେଖୀକ"
#: ../data/toc.xml.in.h:63
msgid "Guides and manuals for applications that connect to the outside world"
@@ -550,7 +550,7 @@ msgstr "କିଛି ମଜା କରନ୍ତୁ"
#: ../data/toc.xml.in.h:68
msgid "History"
-msgstr "ଇତିହାସ"
+msgstr "ପୁରୁଣା ତଥ୍ଯ"
#: ../data/toc.xml.in.h:69
msgid "IDEs"
@@ -574,7 +574,7 @@ msgstr "ଇଣ୍ଟରନେଟ"
#: ../data/toc.xml.in.h:74
msgid "Java"
-msgstr "Java"
+msgstr "ଜାଭା"
#: ../data/toc.xml.in.h:75
msgid "KDE Applications"
@@ -588,8 +588,7 @@ msgstr "ପିଲାଙ୍କ ଖେଳ"
msgid ""
"Learn more about making your system more accessible for a range of "
"disabilities"
-msgstr ""
-"ଆପଣଙ୍କ ତନ୍ତ୍ରକୁ ଗୋଟିଏ ପରିସରଭୁକ୍ତ ନିଷ୍କ୍ରିତା ପାଇଁ ପ୍ରବେଶକୁ ଅଧିକ ସହଜମୟ କରିବା ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"
+msgstr "ଆପଣଙ୍କ ତନ୍ତ୍ରକୁ ଗୋଟିଏ ପରିସରଭୁକ୍ତ ନିଷ୍କ୍ରିତା ପାଇଁ ପ୍ରବେଶକୁ ଅଧିକ ସହଜମୟ କରିବା ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"
#: ../data/toc.xml.in.h:78
msgid "Licenses"
@@ -692,7 +691,7 @@ msgstr "ଖେଳାଳୀମାନେ"
msgid "Presentation Tools"
msgstr "ଉପସ୍ଥାପନ ଉପକରଣଗୁଡ଼ିକ"
-#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364
+#: ../data/toc.xml.in.h:104
msgid "Printing"
msgstr "ମୁଦ୍ରଣ କରୁଅଛି"
@@ -755,7 +754,7 @@ msgstr "ଅନୁକ୍ରମିକା"
#: ../data/toc.xml.in.h:120
msgid "Settings"
-msgstr "ବିନ୍ୟାସ"
+msgstr "ବିନ୍ଯାସ"
#: ../data/toc.xml.in.h:121
msgid "Settings users can manipulate to make their environment more pleasant"
@@ -874,192 +873,45 @@ msgstr "ନୋମ ସହାୟତା ବ୍ରାଉଜରକୁ ସ୍ବାଗ
msgid "Word Processors"
msgstr "ଶବ୍ଦ ସଂସାଧକ"
-#: ../data/ui/yelp.glade.h:1
-msgid "<b>Accessibility</b>"
-msgstr "<b>ଅଭିଗମ୍ଯତା</b>"
-
-#: ../data/ui/yelp.glade.h:2
-msgid "<b>Fonts</b>"
-msgstr "<b>ଅକ୍ଷରରୂପ</b>"
-
-#: ../data/ui/yelp.glade.h:3
-msgid "Add Bookmark"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ଯୋଗ କରନ୍ତୁ"
-
-#: ../data/ui/yelp.glade.h:4
-msgid "Bookmarks"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ"
-
-#: ../data/ui/yelp.glade.h:5
-msgid "C_ase sensitive"
-msgstr "ଅକ୍ଷର ନିର୍ଦ୍ଦିଷ୍ଟ (_a)"
-
-#: ../data/ui/yelp.glade.h:6
-msgid "Find"
-msgstr "ଖୋଜନ୍ତୁ"
-
-#: ../data/ui/yelp.glade.h:7
-msgid "Open Location"
-msgstr "ଅବସ୍ଥାନ ଖୋଲନ୍ତୁ"
-
-#: ../data/ui/yelp.glade.h:8
-msgid "Preferences"
-msgstr "ପସନ୍ଦ"
-
-#: ../data/ui/yelp.glade.h:9
-msgid "Re_name"
-msgstr "ନାମ ବଦଳାନ୍ତୁ (_n)"
-
-#: ../data/ui/yelp.glade.h:10
-msgid "_Bookmarks:"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)"
-
-#: ../data/ui/yelp.glade.h:11
-msgid "_Browse with caret"
-msgstr "କାରେଟ ସହିତ ଖୋଜନ୍ତୁ (_B)"
-
-#: ../data/ui/yelp.glade.h:12
-msgid "_Find:"
-msgstr "ଖୋଜନ୍ତୁ: (_F)"
-
-#: ../data/ui/yelp.glade.h:13
-msgid "_Fixed width:"
-msgstr "ସ୍ଥିର ଓସାର: (_F)"
-
-#: ../data/ui/yelp.glade.h:14
-msgid "_Location:"
-msgstr "ଅବସ୍ଥାନ: (_L)"
-
-#: ../data/ui/yelp.glade.h:15
-msgid "_Next"
-msgstr "ପରବର୍ତ୍ତୀ (_N)"
-
-#: ../data/ui/yelp.glade.h:16
-msgid "_Previous"
-msgstr "ପୂର୍ବବର୍ତ୍ତୀ (_P)"
-
-#: ../data/ui/yelp.glade.h:17
-msgid "_Title:"
-msgstr "ଶୀର୍ଷକ (_T)"
-
-#: ../data/ui/yelp.glade.h:18
-msgid "_Use system fonts"
-msgstr "ତନ୍ତ୍ର ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ (_U)"
-
-#: ../data/ui/yelp.glade.h:19
-msgid "_Variable width:"
-msgstr "ଅସ୍ଥିର ଓସାର: (_V)"
-
-#: ../data/ui/yelp.glade.h:20
-msgid "_Wrap around"
-msgstr "ପରିବେଷ୍ଟନ (_W)"
-
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "ସ୍ଥିର ପାଠ୍ଯ ପାଇଁ ଅକ୍ଷରରୂପ"
-
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "ପାଠ୍ଯ ପାଇଁ ଅକ୍ଷରରୂପ"
-
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "ପାଠ୍ଯ ପାଇଁ ସ୍ଥିର ଓସାରର ଅକ୍ଷରରୂପ"
-
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "ପାଠ୍ଯ ପାଇଁ ଅସ୍ଥିର ଓସାରର ଅକ୍ଷରରୂପ"
-
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr "ପୃଷ୍ଠା ଦେଖିଲାବେଳେ ଚାବି ପଟି ଦ୍ବାରା ନିୟନ୍ତ୍ରଣଯୋଗ୍ଯ କାରେଟ ବ୍ଯବହାର କରନ୍ତୁ"
-
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "କାରେଟ ବ୍ଯବହାର କରନ୍ତୁ"
-
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "ତନ୍ତ୍ର ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ"
-
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "ତନ୍ତ୍ର ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ."
-
-#: ../src/yelp-bookmarks.c:150
-msgid "Open Bookmark in New Window"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ନୂଆ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ"
-
-#: ../src/yelp-bookmarks.c:154
-msgid "Rename Bookmark"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନର ନାମ ବଦଳାନ୍ତୁ"
-
-#: ../src/yelp-bookmarks.c:158
-msgid "Remove Bookmark"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ କାଢ଼ନ୍ତୁ"
-
-#: ../src/yelp-bookmarks.c:315
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "ଏହି ପୃଷ୍ଠା ପାଇଁ %s ନାମକ ଚିହ୍ନିତ ସ୍ଥାନ ପୂର୍ବରୁ ଅଛି."
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:155
+msgid "Invalid compressed data"
+msgstr ""
-#: ../src/yelp-bookmarks.c:392
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "ଏହି ପୃଷ୍ଠା ପାଇଁ <b>%s</b> ନାମକ ଚିହ୍ନିତ ସ୍ଥାନ ପୂର୍ବରୁ ଅଛି."
-
-#: ../src/yelp-bookmarks.c:405
-msgid "Help Topics"
-msgstr "ସାହାଯ୍ଯ ବିଷୟ"
-
-#: ../src/yelp-bookmarks.c:420
-msgid "Document Sections"
-msgstr "ଦଲିଲ ଅଂଶ"
-
-#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338 ../src/yelp-man.c:292 ../src/yelp-man.c:385
-#: ../src/yelp-toc.c:266 ../src/yelp-toc.c:365
-msgid "Page not found"
-msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ"
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:161
+#, fuzzy
+#| msgid "Out of memory"
+msgid "Not enough memory"
+msgstr "ଯଥେଷ୍ଟ ସ୍ମ୍ରୁତି ନାହିଁ"
-#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
-#: ../src/yelp-man.c:293
-#, c-format
-msgid "The page %s was not found in the document %s."
+#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, fuzzy, c-format
+#| msgid "The page %s was not found in the document %s."
+msgid "The page ‘%s’ was not found in the document ‘%s’."
msgstr "ଦଲିଲ %s ରେ ପୃଷ୍ଠା %s ମିଳୁନାହିଁ."
-#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
-#: ../src/yelp-man.c:386
-#, c-format
-msgid "The requested page was not found in the document %s."
-msgstr "ଦଲିଲ %s ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ."
-
-#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
-#: ../src/yelp-man.c:429
-msgid "File not found"
-msgstr "ଫାଇଲ ମିଳୁନାହିଁ"
+#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366
+#, fuzzy, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The file does not exist."
+msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ."
-#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
-#: ../src/yelp-man.c:430
+#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376
#, c-format
msgid "The file ‘%s’ does not exist."
msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ."
-#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
-#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
-msgid "Could not parse file"
-msgstr "ଫାଇଲ ବିଶ୍ଲେଷଣ କରିପାରୁ ନାହିଁଲା ନାହିଁ"
-
-#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+#: ../libyelp/yelp-docbook-document.c:323
#, c-format
msgid ""
"The file ‘%s’ could not be parsed because it is not a well-formed XML "
"document."
msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ XML ଦଲିଲ ନୁହଁ."
-#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+#: ../libyelp/yelp-docbook-document.c:336
#, c-format
msgid ""
"The file ‘%s’ could not be parsed because one or more of its included files "
@@ -1068,453 +920,367 @@ msgstr ""
"‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏଥିରେ ଅନ୍ତର୍ଭୁକ୍ତ ଥିବା ଏକ ଅଧିକ ଫାଇଲ ସୁନିର୍ମିତ XML ଦଲିଲ "
"ନୁହଁ."
-#: ../src/yelp-db-print.c:765 ../src/yelp-docbook.c:786
+#: ../libyelp/yelp-docbook-document.c:720
msgid "Unknown"
msgstr "ଅଜଣା"
-#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
-msgid "Unknown Error"
-msgstr "ଅଜଣା ତ୍ରୁଟି"
-
-#: ../src/yelp-error.c:136 ../src/yelp-window.c:1643
-msgid "Could Not Read File"
-msgstr "ଫାଇଲ ପଢ଼ିହେଲା ନାହିଁ"
+#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309
+#, fuzzy, c-format
+#| msgid "The requested page was not found in the document %s."
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "ଦଲିଲ %s ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ."
-#: ../src/yelp-error.c:146
-msgid "No information is available about this error."
-msgstr "ଏହି ତ୍ରୁଟି ବିଷୟରେ କୌଣସି ସୂଚନା ଉପଲବ୍ଧ ନାହିଁ।"
+#: ../libyelp/yelp-error.c:33
+#, c-format
+msgid "An unknown error occurred."
+msgstr ""
-#: ../src/yelp-info.c:396
+#: ../libyelp/yelp-info-document.c:391
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ ସୂଚନା ପୃଷ୍ଠା ନୁହଁ."
-#: ../src/yelp-io-channel.c:132
-#, c-format
-msgid ""
-"The file ‘%s’ could not be read and decoded. The file may be compressed in "
-"an unsupported format."
+#: ../libyelp/yelp-location-entry.c:251
+msgid "Description Column"
msgstr ""
-"‘%s’ ଫାଇଲ ପଢ଼ି ଅବସଙ୍କେତିତ କରିହେଲା ନାହିଁ। ସମ୍ଭବ କି ଫାଇଲ ଗୋଟିଏ ଅସହାୟକ ଶୈଲୀରେ ସଂକୁଚିତ।"
-#: ../src/yelp-main.c:91
-msgid "Use a private session"
-msgstr "ଗୋଟିଏ ବ୍ଯକ୍ତିଗତ ଅଧିବେଶନକୁ ବ୍ଯବହାର କରନ୍ତୁ"
+#: ../libyelp/yelp-location-entry.c:252
+msgid "A column in the model to get descriptions from"
+msgstr ""
-#: ../src/yelp-main.c:100
-msgid "Define which cache directory to use"
-msgstr "କ୍ଯାଶ ଡିରେକ୍ଟୋରିକୁ ବ୍ଯାଖ୍ଯା କରନ୍ତୁ"
+#: ../libyelp/yelp-location-entry.c:267
+msgid "Icon Column"
+msgstr ""
-#. Commandline parsing is done here
-#: ../src/yelp-main.c:357
-msgid " GNOME Help Browser"
-msgstr " ନୋମ ସାହାଯ୍ଯ ଖୋଜାଳୀ"
+#: ../libyelp/yelp-location-entry.c:268
+msgid "A column in the model to get icon names from"
+msgstr ""
-#: ../src/yelp-main.c:377 ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "ସହାୟତା"
+#: ../libyelp/yelp-location-entry.c:283
+msgid "Flags Column"
+msgstr ""
-#: ../src/yelp-man.c:459
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed because it is not a well-formed man page."
-msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ ମୂଖ୍ୟ ପୃଷ୍ଠା ନୁହଁ."
+#: ../libyelp/yelp-location-entry.c:284
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr ""
-#: ../src/yelp-print.c:97
-msgid "Print"
-msgstr "ମୁଦ୍ରଣ କରନ୍ତୁ"
+#: ../libyelp/yelp-location-entry.c:300
+msgid "Enable Search"
+msgstr ""
-#: ../src/yelp-print.c:167
-msgid "Preparing to print"
-msgstr "ମୁଦ୍ରଣ ପାଇଁ ବ୍ଯବସ୍ଥା କରାଯାଉଛି"
+#: ../libyelp/yelp-location-entry.c:301
+msgid "Whether the location entry can be used as a search field"
+msgstr ""
-#: ../src/yelp-print.c:261
-msgid "Printing is not supported on this printer"
-msgstr "ଏହି ମୁଦ୍ରଣୀରେ ମୁଦ୍ରଣ ଅସହାୟକ"
+#: ../libyelp/yelp-mallard-document.c:294
+#, fuzzy, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The directory ‘%s’ does not exist."
+msgstr "ଡିରେକ୍ଟୋରୀ '%s' ଅବସ୍ଥିତ ନାହିଁ।"
-#: ../src/yelp-print.c:264
-#, c-format
-msgid "Printer %s does not support postscript printing."
-msgstr "%s ମୁଦ୍ରଣୀରେ ପୋଷ୍ଟସ୍କ୍ରିପ୍ଟ ମୁଦ୍ରଣକୁ ସମର୍ଥ କରେନାହିଁ।"
+#: ../libyelp/yelp-settings.c:146
+#, fuzzy
+#| msgid "Settings"
+msgid "GtkSettings"
+msgstr "ବିନ୍ୟାସ"
-#: ../src/yelp-print.c:366
-msgid "Waiting to print"
-msgstr "ମୁଦ୍ରଣ ପାଇଁ ଅପେକ୍ଷାରେ"
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr ""
-#: ../src/yelp-print.c:578
-msgid "An error occurred while printing"
-msgstr "ମୁଦ୍ରଣରେ ତ୍ରୁଟି"
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr ""
-#: ../src/yelp-print.c:582
-#, c-format
-msgid "It was not possible to print your document: %s"
-msgstr "ଆପଣଙ୍କ ଦଲିଲ ମୁଦ୍ରଣ କରିହେଲା ନାହିଁ: %s"
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr ""
-#: ../src/yelp-search-parser.c:67
-msgid "the GNOME Support Forums"
-msgstr "ନୋମ ସହାୟତା ବିଚାରସ୍ଥଳ"
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr ""
-#: ../src/yelp-search-parser.c:285
-#, c-format
-msgid "No results for \"%s\""
-msgstr "\"%s\" ପାଇଁ କୌଣସି ଫଳାଫଳ ମିଳିଲା ନାହିଁ"
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr ""
-#: ../src/yelp-search-parser.c:286
-msgid ""
-"Try using different words to describe the problem you're having or the topic "
-"you want help with."
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
msgstr ""
-"ଆପଣ ସମ୍ମୁଖୀନ ହେଉଥିବା ସମସ୍ଯାକୁ କିମ୍ବା ଆପଣ ଯେଉଁ ବିଷୟ ବସ୍ତୁ ସହିତ ସାହାର୍ଯ୍ଯ କରିବା ପାଇଁ ଚାହୁଁଛନ୍ତି "
-"ତାହାକୁ ବର୍ଣ୍ଣନା କରିବା ପାଇଁ ବିଭିନ୍ନ ଶବ୍ଦ ମାନଙ୍କୁ ପ୍ରୟୋଗ କରିବା ପାଇଁ ପ୍ରଚେଷ୍ଟା କରନ୍ତୁ।"
-#: ../src/yelp-search-parser.c:289
-#, c-format
-msgid "Search results for \"%s\""
-msgstr "\"%s\" ପାଇଁ ଗୋଟିଏ ଫଳାଫଳ ସନ୍ଧାନ କରନ୍ତୁ"
-
-#. TRANSLATORS: Please don't do anything funny with the
-#. * format arguement. It isn't really going through a printf
-#. * The %s is used to indicate where the name of the site (linked)
-#. * should be. This is done in the XSLT
-#.
-#: ../src/yelp-search-parser.c:303
-#, c-format
-msgid "Repeat the search online at %s"
-msgstr "%s ରେ ଅନ-ଲାଇନ ଭାବରେ ପୁଣିଥରେ ସନ୍ଧାନ କରନ୍ତୁ"
-
-#. Translators: Do not translate this list exactly. These are
-#. * colon-separated words that aren't useful for choosing search
-#. * results; they will be different for each language. Include
-#. * pronouns, articles, very common verbs and prepositions,
-#. * words from question structures like "tell me about" and
-#. * "how do I", and words for functional states like "not",
-#. * "work", and "broken".
-#.
-#: ../src/yelp-search-parser.c:874
-msgid ""
-"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
-"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
-"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
-"where:who:will:with:won't:wont:why:work:working:works"
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
msgstr ""
-"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
-"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
-"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
-"where:who:will:with:won't:wont:why:work:working:works"
-
-#. Translators: This is a list of common prefixes for words.
-#. * Do not translate this directly. Instead, use a colon
-#. * seperated list of word-starts. In English, an example
-#. * is re-. If there is none, please use the term NULL
-#. * If there is only one, please put a colon after.
-#. * E.g. if the common prefix is re then the string would be
-#. * "re:"
-#.
-#: ../src/yelp-search-parser.c:890
-msgid "re"
-msgstr "NULL"
-
-#. Translators: This is a list of (guess what?) common suffixes
-#. * to words. Things that may be put at ends of words to slightly
-#. * alter their meaning (like -ing and -s in English). This is a
-#. * colon seperated list (I like colons). If there are none,
-#. * please use the string NULL. If there is only 1, please
-#. * add a colon at the end of the list
-#.
-#: ../src/yelp-search-parser.c:899
-msgid "ers:er:ing:es:s:'s"
-msgstr "NULL"
-
-#: ../src/yelp-search-parser.c:1095
-msgid "No Comment"
-msgstr "କିଛି ଟିପ୍ପଣୀ ନାହିଁ"
-
-#. Much bigger problems
-#: ../src/yelp-search.c:238
-msgid "Search could not be processed"
-msgstr "ସନ୍ଧାନକୁ ସଂସାଧନ କରିହେଲା ନାହିଁ"
-
-#: ../src/yelp-search.c:239
-msgid "The requested search could not be processed."
-msgstr "ଅନୁରୋଧିତ ସନ୍ଧାନଟି ସଂସାଧନ କରିହେଲା ନାହିଁ."
-
-#: ../src/yelp-search.c:366
-msgid "Cannot process the search"
-msgstr "ସନ୍ଧାନକୁ ସଂସାଧନ କରିପାରିଲେ ନାହିଁ"
-
-#: ../src/yelp-search.c:367
-msgid "The search processor returned invalid results"
-msgstr "ସନ୍ଧାନ ସଂସାଧକ ଅବୈଧ ଫଳାଫଳ ଫେରାଇଲା"
-
-#: ../src/yelp-toc.c:267
-#, c-format
-msgid "The page %s was not found in the TOC."
-msgstr "TOC ରେ ପୃଷ୍ଠା %s ମିଳିଲା ନାହିଁ."
-#: ../src/yelp-toc.c:366
-msgid "The requested page was not found in the TOC."
-msgstr "TOC ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠା %s ମିଳିଲା ନାହିଁ."
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr ""
-#: ../src/yelp-toc.c:438
-msgid ""
-"The TOC file could not be parsed because it is not a well-formed XML "
-"document."
-msgstr "TOC ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ଏକ ସୁନିର୍ମିତ XML ଦଲିଲ ନୁହଁ."
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr ""
-#: ../src/yelp-transform.c:80
-msgid "Invalid Stylesheet"
+#: ../libyelp/yelp-transform.c:171
+#, fuzzy
+#| msgid "Invalid Stylesheet"
+msgid "XSLT Stylesheet"
msgstr "ଅବୈଧ ଶୈଳୀ ପୃଷ୍ଠା"
-#: ../src/yelp-transform.c:81
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr "XSLT ଶୈଳୀପୃଷ୍ଠା '%s'ଟି ହଜିଯାଇଥାଇପାରେ, ଅଥବା ଏହା ବୈଧ ନୁହଁ."
-
-#: ../src/yelp-transform.c:112
-msgid "Broken Transformation"
-msgstr "ଭଙ୍ଗା ରୂପାନ୍ତରଣ"
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr ""
-#: ../src/yelp-transform.c:113
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr "ଦଲିଲକୁ ରୂପାନ୍ତରଣ କରିବାକୁ ପ୍ରୟାସ କରିବା ସମୟରେ ଗୋଟିଏ ଅଜଣା ତ୍ରୁଟି ଘଟିଲା."
+#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394
+#, fuzzy, c-format
+#| msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "XSLT ଶୈଳୀପୃଷ୍ଠା '%s'ଟି ହଜିଯାଇଥାଇପାରେ, ଅଥବା ଏହା ବୈଧ ନୁହଁ."
-#: ../src/yelp-transform.c:373
+#: ../libyelp/yelp-transform.c:528
msgid "No href attribute found on yelp:document\n"
msgstr "yelp:ଦଲିଲରେ କୌଣସି href ଗୁଣ ମିଳିଲା ନାହିଁ\n"
-#: ../src/yelp-transform.c:388
+#: ../libyelp/yelp-transform.c:543
msgid "Out of memory"
msgstr "ଯଥେଷ୍ଟ ସ୍ମ୍ରୁତି ନାହିଁ"
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "ଫାଇଲ (_F)"
+#: ../libyelp/yelp-view.c:94
+#, fuzzy
+#| msgid "Print"
+msgid "_Print..."
+msgstr "ମୂଦ୍ରଣ କରନ୍ତୁ ... (_P)"
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "ସମ୍ପାଦନ (_E)"
-
-#: ../src/yelp-window.c:306
-msgid "_Go"
-msgstr "ଯାଆନ୍ତୁ (_G)"
+#: ../libyelp/yelp-view.c:99
+msgid "_Back"
+msgstr "ପଛକୁ (_B)"
-#: ../src/yelp-window.c:307
-msgid "_Bookmarks"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)"
+#: ../libyelp/yelp-view.c:104
+msgid "_Forward"
+msgstr "ପରବର୍ତ୍ତୀ (_F)"
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "ସାହାଯ୍ଯ (_H)"
+#: ../libyelp/yelp-view.c:109
+#, fuzzy
+#| msgid "_Previous"
+msgid "_Previous Page"
+msgstr "ପୂର୍ବବର୍ତ୍ତୀ (_P)"
-#: ../src/yelp-window.c:311
-msgid "_New Window"
-msgstr "ନୂଆ ୱିଣ୍ଡୋ (_N)"
+#: ../libyelp/yelp-view.c:114
+#, fuzzy
+#| msgid "_Next"
+msgid "_Next Page"
+msgstr "ପରବର୍ତ୍ତୀ (_N)"
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "ଏହି ଦଲିଲକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..."
+#: ../libyelp/yelp-view.c:317
+#, fuzzy
+#| msgid "Yelp"
+msgid "Yelp URI"
+msgstr "ୟେଲ୍ପ"
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "ଏହି ପୃଷ୍ଠାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..."
+#: ../libyelp/yelp-view.c:318
+msgid "A YelpUri with the current location"
+msgstr ""
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "ଏହି ଦଲିଲ ବିଷୟରେ"
+#: ../libyelp/yelp-view.c:326
+#, fuzzy
+#| msgid "Loading..."
+msgid "Loading State"
+msgstr "ଧାରଣ..."
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "ଅବସ୍ଥାନ ଖୋଲନ୍ତୁ (_L)"
+#: ../libyelp/yelp-view.c:327
+msgid "The loading state of the view"
+msgstr ""
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "ୱିଣ୍ଡୋ ବନ୍ଦ କରନ୍ତୁ (_C)"
+#: ../libyelp/yelp-view.c:336
+msgid "Page ID"
+msgstr ""
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "ନକଲ (_C)"
+#: ../libyelp/yelp-view.c:337
+msgid "The ID of the root page of the page being viewed"
+msgstr ""
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "ସବୁ ବାଛନ୍ତୁ (_S)"
+#: ../libyelp/yelp-view.c:345
+msgid "Root Title"
+msgstr ""
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "ଖୋଜନ୍ତୁ... (_F)"
+#: ../libyelp/yelp-view.c:346
+msgid "The title of the root page of the page being viewed"
+msgstr ""
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_v)"
+#: ../libyelp/yelp-view.c:354
+msgid "Page Title"
+msgstr ""
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "ଶବ୍ଦ ବା ବାକ୍ଯଖଣ୍ଡର ପୂର୍ବବର୍ତ୍ତୀ ଘଟଣା ଖୋଜନ୍ତୁ"
+#: ../libyelp/yelp-view.c:355
+msgid "The title of the page being viewed"
+msgstr ""
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_x)"
+#: ../libyelp/yelp-view.c:363
+msgid "Page Description"
+msgstr ""
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "ଶବ୍ଦ ବା ବାକ୍ଯଖଣ୍ଡର ପରବର୍ତ୍ତୀ ଘଟଣା ଖୋଜନ୍ତୁ"
+#: ../libyelp/yelp-view.c:364
+msgid "The description of the page being viewed"
+msgstr ""
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "ପସନ୍ଦ (_P)"
+#: ../libyelp/yelp-view.c:372
+#, fuzzy
+#| msgid "Page not found"
+msgid "Page Icon"
+msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ"
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "ପୁନର୍ଧାରଣ (_R)"
+#: ../libyelp/yelp-view.c:373
+msgid "The icon of the page being viewed"
+msgstr ""
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "ପଛକୁ ଯାଆନ୍ତୁ (_B)"
+#: ../libyelp/yelp-view.c:696
+#, c-format
+msgid "Could not load a document for ‘%s’"
+msgstr ""
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "ଇତିହାସର ପୂର୍ବବର୍ତ୍ତୀ ପୃଷ୍ଠା ଦେଖାନ୍ତୁ"
+#: ../libyelp/yelp-view.c:702
+#, c-format
+msgid "Could not load a document"
+msgstr ""
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "ଆଗକୁ (_F)"
+#: ../libyelp/yelp-view.c:769
+#, fuzzy
+#| msgid "Page not found"
+msgid "Not Found"
+msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ"
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "ଇତିହାସର ପରବର୍ତ୍ତୀ ପୃଷ୍ଠା ଦେଖାନ୍ତୁ"
+#: ../libyelp/yelp-view.c:772
+#, fuzzy
+#| msgid "Cannot create window"
+msgid "Cannot Read"
+msgstr "ୱିଣ୍ଡୋ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ"
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "ସାହାଯ୍ଯ ବିଷୟ (_H)"
+#: ../libyelp/yelp-view.c:778
+msgid "Unknown Error"
+msgstr "ଅଜଣା ତ୍ରୁଟି"
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "ସାହାଯ୍ଯ ବିଷୟ ତାଲିକାକୁ ଯାଆନ୍ତୁ"
+#: ../libyelp/yelp-view.c:868
+#, fuzzy, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ."
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଅଂଶ (_P)"
+#: ../libyelp/yelp-view.c:876
+#, fuzzy, c-format
+#| msgid "The file ‘%s’ does not exist."
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ."
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "ପରବର୍ତ୍ତୀ ଅଂଶ (_N)"
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr ""
-#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "ସୂଚୀପତ୍ର (_C)"
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr ""
-#: ../src/yelp-window.c:416
-msgid "_Add Bookmark"
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ଯୋଗ କରନ୍ତୁ (_A)"
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr ""
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ସମ୍ପାଦନ କରନ୍ତୁ... (_E)"
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr ""
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "ସଂଯୋଗ ଖୋଲନ୍ତୁ (_O)"
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr ""
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "ନୂଆ ୱିଣ୍ଡୋରେ ସଂଯୋଗ ଖୋଲନ୍ତୁ (_N)"
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr ""
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "ସଂଯୋଗ ଠିକଣା ନକଲ କରନ୍ତୁ (_C)"
+#: ../src/yelp-application.c:297 ../src/yelp-window.c:1353
+#: ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "ସହାୟତା"
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "ଏହି ପ୍ରୟୋଗ ପାଇଁ ସହାୟତା"
+#: ../src/yelp-application.c:547
+msgid ""
+"You do not have PackageKit installed. Package installation links require "
+"PackageKit."
+msgstr ""
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "ବିବରଣୀ (_A)"
+#: ../src/yelp-window.c:241
+msgid "_Page"
+msgstr ""
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "ଇ-ଡାକ ଠିକଣା ନକଲ କରନ୍ତୁ (_E)"
+#: ../src/yelp-window.c:242
+#, fuzzy
+#| msgid "Viewer"
+msgid "_View"
+msgstr "ଦ୍ରୁଶ୍ଯ (_V)"
-#: ../src/yelp-window.c:501
-msgid "Help Browser"
-msgstr "ସାହାଯ୍ଯ ଖୋଜାଳୀ"
+#: ../src/yelp-window.c:243
+msgid "_Go"
+msgstr "ଯାଆନ୍ତୁ (_G)"
-#: ../src/yelp-window.c:592 ../src/yelp-window.c:644 ../src/yelp-window.c:1700
-msgid "Loading..."
-msgstr "ଧାରଣ..."
+#: ../src/yelp-window.c:244
+msgid "_Bookmarks"
+msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)"
-#: ../src/yelp-window.c:593 ../src/yelp-window.c:645
-msgid "Unknown Page"
-msgstr "ଅଜଣା ପୃଷ୍ଠା"
+#: ../src/yelp-window.c:247
+msgid "_New Window"
+msgstr "ନୂଆ ୱିଣ୍ଡୋ (_N)"
-#: ../src/yelp-window.c:1008 ../src/yelp-window.c:1064
-#: ../src/yelp-window.c:1084
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "ଅନୁରୋଧିତ URI \"%s\"ଟି ଅବୈଧ ଅଟେ"
+#: ../src/yelp-window.c:252
+#, fuzzy
+#| msgid "Clocks"
+msgid "_Close"
+msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)"
-#: ../src/yelp-window.c:1009 ../src/yelp-window.c:1066
-#: ../src/yelp-window.c:1085
-msgid "Unable to load page"
-msgstr "ପୃଷ୍ଠା ଧାରଣ କରିବାରେ ଅସମର୍ଥ"
+#: ../src/yelp-window.c:257
+msgid "_Add Bookmark"
+msgstr "ବୁକମାର୍କକୁ ଯୋଗ କରନ୍ତୁ (_A)"
-#: ../src/yelp-window.c:1079
-msgid "Error executing \"gnome-open\""
-msgstr "\"gnome-ଖୋଲନ୍ତୁ\"କୁ ନିଷ୍ପାଦନ କରିବା ସମୟରେ ତ୍ରୁଟି"
+#: ../src/yelp-window.c:262
+#, fuzzy
+#| msgid "Print This Page ..."
+msgid "Find in Page..."
+msgstr "ଏହି ପୃଷ୍ଠାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..."
-#: ../src/yelp-window.c:1265
-msgid "_Search:"
+#: ../src/yelp-window.c:267 ../src/yelp-window.c:482
+#, fuzzy
+#| msgid "_Search:"
+msgid "Search..."
msgstr "ଖୋଜନ୍ତୁ: (_S)"
-#: ../src/yelp-window.c:1266
-msgid "Search for other documentation"
-msgstr "ଅନ୍ଯ ଦଲିଲିକରଣ ଖୋଜନ୍ତୁ"
-
-#: ../src/yelp-window.c:1286
-msgid "Cannot create window"
-msgstr "ୱିଣ୍ଡୋ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ"
-
-#: ../src/yelp-window.c:1292
-msgid "Cannot create search component"
-msgstr "ଖୋଜା ଯନ୍ତ୍ରାଂଶ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ"
-
-#: ../src/yelp-window.c:1464
-msgid "Fin_d:"
-msgstr "ଖୋଜନ୍ତୁ: (_d)"
-
-#: ../src/yelp-window.c:1486
-msgid "Find _Previous"
-msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_P)"
+#: ../src/yelp-window.c:272
+msgid "Open Location"
+msgstr "ଅବସ୍ଥାନକୁ ଖୋଲନ୍ତୁ"
-#: ../src/yelp-window.c:1498
-msgid "Find _Next"
-msgstr "ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_N)"
+#: ../src/yelp-window.c:299
+#, fuzzy
+#| msgid "Applications"
+msgid "Application"
+msgstr "ପ୍ରୟୋଗ"
-#: ../src/yelp-window.c:1511
-msgid "Phrase not found"
-msgstr "ବାକ୍ୟାଂଶ ମିଳିଲା ନାହିଁ"
+#: ../src/yelp-window.c:300
+msgid "A YelpApplication instance that controls this window"
+msgstr ""
-#: ../src/yelp-window.c:1640
+#: ../src/yelp-window.c:995
#, c-format
-msgid ""
-"The file ‘%s’ could not be read. This file might be missing, or you might "
-"not have permissions to read it."
-msgstr "‘%s’ ଫାଇଲ ପଢ଼ିହେଲା ନାହିଁ. ଏହି ଫାଇଲ ମିଳୁ ନାହିଁ, ବା ଆପଣଙ୍କର ଏହାକୁ ପଢ଼ିବାର ଅନୁମତି ନାହିଁ."
-
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2480
-msgid "translator-credits"
-msgstr "Sudhansu <srujanika@yahoo.com>"
-
-#: ../src/yelp-window.c:2483
-msgid "Yelp"
-msgstr "ୟେଲ୍ପ"
+msgid "%i match"
+msgid_plural "%i matches"
+msgstr[0] ""
+msgstr[1] ""
-#: ../src/yelp-window.c:2485
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "ନୋମ ଡେକ୍ସଟପ ପାଇଁ ଗୋଟିଏ ଦଲିଲିକରଣ ଖୋଜାଳି ଓ ପ୍ରଦର୍ଶକ."
+#: ../src/yelp-window.c:1020
+msgid "No matches"
+msgstr ""
+
+#: ../src/yelp-window.c:1297
+#, fuzzy
+#| msgid "Loading..."
+msgid "Loading"
+msgstr "ଧାରଣ କରୁଅଛି"
#: ../yelp.desktop.in.in.h:1
msgid "Get help with GNOME"
msgstr "ନୋମ ପାଇଁ ସାହାଯ୍ଯ ପାଆନ୍ତୁ"
+
diff --git a/po/sl.po b/po/sl.po
index 9e896e59..4c503464 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -1,1516 +1,1524 @@
-# Copyright (C) 2005-2007 Free Software Foundation, Inc.
-# This file is distributed under the same license as the program package.
-#
-# Andraz Tori <andraz.tori1@guest.arnes.si>, 2002.
-# Matej Urbančič <mateju@svn.gnome.org>, 2006 - 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: yelp\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-15 14:51+0100\n"
-"PO-Revision-Date: 2008-01-25 15:58+0100\n"
-"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
-"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
-"X-Poedit-Language: Slovenian\n"
-"X-Poedit-Country: SLOVENIA\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: ../data/info.xml.in.h:1
-msgid "GNU Info Pages"
-msgstr "GNU strani podrobnosti"
-
-#: ../data/info.xml.in.h:2
-msgid "Traditional command line help (info)"
-msgstr "Pomoč z ukazne vrstice (info)"
-
-#: ../data/man.xml.in.h:1
-msgid "Applications"
-msgstr "Programi"
-
-#: ../data/man.xml.in.h:2
-msgid "BLT Functions"
-msgstr "BLT funkcije"
-
-#: ../data/man.xml.in.h:3
-msgid "Configuration Files"
-msgstr "Nastavitvene datoteke"
-
-#: ../data/man.xml.in.h:4
-msgid "Curses Functions"
-msgstr "Curses funkcije"
-
-#: ../data/man.xml.in.h:5
-#: ../data/toc.xml.in.h:35
-msgid "Development"
-msgstr "Razvoj"
-
-#: ../data/man.xml.in.h:6
-msgid "FORTRAN Functions"
-msgstr "FORTRAN Funkcije"
-
-#: ../data/man.xml.in.h:7
-#: ../data/toc.xml.in.h:56
-msgid "Games"
-msgstr "Igre"
-
-#: ../data/man.xml.in.h:8
-msgid "Hardware Devices"
-msgstr "Strojne naprava"
-
-#: ../data/man.xml.in.h:9
-msgid "Kernel Routines"
-msgstr "Funkcije jedra"
-
-#: ../data/man.xml.in.h:10
-msgid "Manual Pages"
-msgstr "Strani priročnika"
-
-#: ../data/man.xml.in.h:11
-msgid "Network Audio Sound Functions"
-msgstr "Omrežni zvočne funkcije"
-
-#: ../data/man.xml.in.h:12
-msgid "OpenSSL Applications"
-msgstr "OpenSSL programi"
-
-#: ../data/man.xml.in.h:13
-msgid "OpenSSL Configuration"
-msgstr "OpenSSL nastavitve"
-
-#: ../data/man.xml.in.h:14
-msgid "OpenSSL Functions"
-msgstr "OpenSSL nastavitve"
-
-#: ../data/man.xml.in.h:15
-msgid "OpenSSL Overviews"
-msgstr "OpenSSL pogledi"
-
-#: ../data/man.xml.in.h:16
-msgid "Overviews"
-msgstr "Drugi pogledi"
-
-#: ../data/man.xml.in.h:17
-msgid "POSIX Functions"
-msgstr "POSIX funkcije"
-
-#: ../data/man.xml.in.h:18
-msgid "POSIX Headers"
-msgstr "POSIX Glave"
-
-#: ../data/man.xml.in.h:19
-msgid "Perl Functions"
-msgstr "Perl funkcije"
-
-#: ../data/man.xml.in.h:20
-msgid "Qt Functions"
-msgstr "Qt funkcije"
-
-#: ../data/man.xml.in.h:21
-msgid "Readline Functions"
-msgstr "Readline funkcije"
-
-#: ../data/man.xml.in.h:22
-msgid "Section 0p"
-msgstr "Odsek 0p"
-
-#: ../data/man.xml.in.h:23
-msgid "Section 1m"
-msgstr "Odsek 1m"
-
-#: ../data/man.xml.in.h:24
-msgid "Section 1ssl"
-msgstr "Odsek 1ssl"
-
-#: ../data/man.xml.in.h:25
-msgid "Section 1x"
-msgstr "Odsek 1x"
-
-#: ../data/man.xml.in.h:26
-msgid "Section 2"
-msgstr "Odsek 2"
-
-#: ../data/man.xml.in.h:27
-msgid "Section 3blt"
-msgstr "Odsek 3blt"
-
-#: ../data/man.xml.in.h:28
-msgid "Section 3f"
-msgstr "Odsek 3f"
-
-#: ../data/man.xml.in.h:29
-msgid "Section 3nas"
-msgstr "Odsek 3nas"
-
-#: ../data/man.xml.in.h:30
-msgid "Section 3p"
-msgstr "Odsek 3p"
-
-#: ../data/man.xml.in.h:31
-msgid "Section 3qt"
-msgstr "Odsek 3qt"
-
-#: ../data/man.xml.in.h:32
-msgid "Section 3readline"
-msgstr "Odsek 3readline"
-
-#: ../data/man.xml.in.h:33
-msgid "Section 3ssl"
-msgstr "Odsek 3ssl"
-
-#: ../data/man.xml.in.h:34
-msgid "Section 3tiff"
-msgstr "Odsek 3tiff"
-
-#: ../data/man.xml.in.h:35
-msgid "Section 4"
-msgstr "Odsek 4"
-
-#: ../data/man.xml.in.h:36
-msgid "Section 4x"
-msgstr "Odsek 4x"
-
-#: ../data/man.xml.in.h:37
-msgid "Section 5"
-msgstr "Odsek 5"
-
-#: ../data/man.xml.in.h:38
-msgid "Section 5ssl"
-msgstr "Odsek 5ssl"
-
-#: ../data/man.xml.in.h:39
-msgid "Section 5x"
-msgstr "Odsek 5x"
-
-#: ../data/man.xml.in.h:40
-msgid "Section 6"
-msgstr "Odsek 6"
-
-#: ../data/man.xml.in.h:41
-msgid "Section 6x"
-msgstr "Odsek 6x"
-
-#: ../data/man.xml.in.h:42
-msgid "Section 7ssl"
-msgstr "Odsek 7ssl"
-
-#: ../data/man.xml.in.h:43
-msgid "Section 7x"
-msgstr "Odsek 7x"
-
-#: ../data/man.xml.in.h:44
-msgid "Section 9"
-msgstr "Odsek 9"
-
-#: ../data/man.xml.in.h:45
-msgid "Sections 1, 1p, 1g and 1t"
-msgstr "Odseki 1, 1p, 1g in 1t"
-
-#: ../data/man.xml.in.h:46
-msgid "Sections 3, 3o, and 3t"
-msgstr "Odseki 3, 3o, in 3t"
-
-#: ../data/man.xml.in.h:47
-msgid "Sections 3form and 3menu"
-msgstr "Odseki 3form in 3menu"
-
-#: ../data/man.xml.in.h:48
-msgid "Sections 3ncurses and 3curses"
-msgstr "Odseki 3ncurses ind 3curses"
-
-#: ../data/man.xml.in.h:49
-msgid "Sections 3pm and 3perl"
-msgstr "Odseki 3pm in 3perl"
-
-#: ../data/man.xml.in.h:50
-msgid "Sections 3x and 3X11"
-msgstr "Odseki 3x in 3X11"
-
-#: ../data/man.xml.in.h:51
-msgid "Sections 7 and 7gcc"
-msgstr "Odseki 7 in 7gcc"
-
-#: ../data/man.xml.in.h:52
-msgid "Sections 8 and 8l"
-msgstr "Odseki 8 in 8l"
-
-#: ../data/man.xml.in.h:53
-msgid "System Administration"
-msgstr "Sistemska administracija"
-
-#: ../data/man.xml.in.h:54
-msgid "System Calls"
-msgstr "Sistemski klici"
-
-#: ../data/man.xml.in.h:55
-msgid "System V Form/Menu Functions"
-msgstr "Sistem V Form/Menu funkcije"
-
-#: ../data/man.xml.in.h:56
-msgid "TIFF Functions"
-msgstr "TIFF Funkcije"
-
-#: ../data/man.xml.in.h:57
-msgid "Termcap Applications"
-msgstr "Termcap programi"
-
-#: ../data/man.xml.in.h:58
-msgid "Traditional command line help (man)"
-msgstr "Pomoč z ukazne vrstice (man)"
-
-#: ../data/man.xml.in.h:59
-msgid "X11 Applications"
-msgstr "X11 Programi"
-
-#: ../data/man.xml.in.h:60
-msgid "X11 Configuration"
-msgstr "X11 nastavitve"
-
-#: ../data/man.xml.in.h:61
-msgid "X11 Devices"
-msgstr "X11 naprave"
-
-#: ../data/man.xml.in.h:62
-msgid "X11 Functions"
-msgstr "X11 funkcije"
-
-#: ../data/man.xml.in.h:63
-msgid "X11 Games"
-msgstr "X11 igre"
-
-#: ../data/man.xml.in.h:64
-msgid "X11 Overviews"
-msgstr "X11 pogledi"
-
-#: ../data/toc.xml.in.h:1
-msgid "2D Graphics"
-msgstr "2D oblikovanje"
-
-#: ../data/toc.xml.in.h:2
-msgid "3D Graphics"
-msgstr "3D oblikovanje"
-
-#: ../data/toc.xml.in.h:3
-msgid "Accessibility"
-msgstr "Dostopnost"
-
-#: ../data/toc.xml.in.h:4
-msgid "Action Games"
-msgstr "Akcijske igre"
-
-#: ../data/toc.xml.in.h:5
-msgid "Adventure Games"
-msgstr "Igre avanture"
-
-#: ../data/toc.xml.in.h:6
-msgid "Amusement"
-msgstr "Zabava"
-
-#: ../data/toc.xml.in.h:7
-msgid "Applications for viewing and manipulating graphics"
-msgstr "Programi za obdelavo in pregledovanje slik"
-
-#: ../data/toc.xml.in.h:8
-msgid "Applications related to audio and video"
-msgstr "Programi povezani z zvokom in sliko"
-
-#: ../data/toc.xml.in.h:9
-msgid "Applications that teach or aid in learning"
-msgstr "Programi povezani z učenjem"
-
-#: ../data/toc.xml.in.h:10
-msgid "Arcade Games"
-msgstr "Arkadne igre"
-
-#: ../data/toc.xml.in.h:11
-msgid "Archiving Tools"
-msgstr "Orodja za arhiviranje"
-
-#: ../data/toc.xml.in.h:12
-msgid "Art"
-msgstr "Umetnost"
-
-#: ../data/toc.xml.in.h:13
-msgid "Artificial Intelligence"
-msgstr "Umetna Inteligenca"
-
-#: ../data/toc.xml.in.h:14
-msgid "Astronomy"
-msgstr "Astronomija"
-
-#: ../data/toc.xml.in.h:15
-msgid "Biology"
-msgstr "Biologija"
-
-#: ../data/toc.xml.in.h:16
-msgid "Blocks Games"
-msgstr "Igre blokov"
-
-#: ../data/toc.xml.in.h:17
-msgid "Board Games"
-msgstr "Tabelne Igre"
-
-#: ../data/toc.xml.in.h:18
-msgid "Building"
-msgstr "Gredbeništvo"
-
-#: ../data/toc.xml.in.h:19
-msgid "Calculator"
-msgstr "Kalkulator"
-
-#: ../data/toc.xml.in.h:20
-msgid "Calendar"
-msgstr "Koledar"
-
-#: ../data/toc.xml.in.h:21
-msgid "Card Games"
-msgstr "Igre s kartami"
-
-#: ../data/toc.xml.in.h:22
-msgid "Charting Tools"
-msgstr "Orodja za izris grafov"
-
-#: ../data/toc.xml.in.h:23
-msgid "Chat"
-msgstr "Klepet"
-
-#: ../data/toc.xml.in.h:24
-msgid "Chemistry"
-msgstr "Kemija"
-
-#: ../data/toc.xml.in.h:25
-msgid "Clocks"
-msgstr "Ure"
-
-#: ../data/toc.xml.in.h:26
-msgid "Compression Tools"
-msgstr "Orodja za stiskanjee"
-
-#: ../data/toc.xml.in.h:27
-msgid "Computer Science"
-msgstr "Računalništvo"
-
-#: ../data/toc.xml.in.h:28
-msgid "Construction"
-msgstr "Gradbeništvo"
-
-#: ../data/toc.xml.in.h:29
-msgid "Contact Management"
-msgstr "Upravljanje s stiki"
-
-#: ../data/toc.xml.in.h:30
-msgid "Data Visualization"
-msgstr "Prikazovanje podatkov"
-
-#: ../data/toc.xml.in.h:31
-msgid "Databases"
-msgstr "Podatkovne zbirke"
-
-#: ../data/toc.xml.in.h:32
-msgid "Debuggers"
-msgstr "Razhroščevalniki"
-
-#: ../data/toc.xml.in.h:33
-msgid "Desktop"
-msgstr "Namizje"
-
-#: ../data/toc.xml.in.h:34
-msgid "Desktop Settings"
-msgstr "Nastavitve namizja"
-
-#: ../data/toc.xml.in.h:36
-msgid "Dialup"
-msgstr "Klicanje"
-
-#: ../data/toc.xml.in.h:37
-msgid "Dictionaries"
-msgstr "Slovarji"
-
-#. Translators: this is a menu title for burning audio and video to dics
-#: ../data/toc.xml.in.h:39
-msgid "Disc Burning"
-msgstr "Peka zgoščenk"
-
-#: ../data/toc.xml.in.h:40
-msgid "Economy"
-msgstr "Ekonomija"
-
-#: ../data/toc.xml.in.h:41
-msgid "Education"
-msgstr "Izobraževanje"
-
-#: ../data/toc.xml.in.h:42
-msgid "Electricity"
-msgstr "Elektrika"
-
-#: ../data/toc.xml.in.h:43
-msgid "Electronics"
-msgstr "Elektronika"
-
-#: ../data/toc.xml.in.h:44
-msgid "Email Tools"
-msgstr "Orodja za elektronsko pošto"
-
-#: ../data/toc.xml.in.h:45
-msgid "Emulator"
-msgstr "Emulator"
-
-#: ../data/toc.xml.in.h:46
-msgid "Engineering"
-msgstr "Inženiring"
-
-#: ../data/toc.xml.in.h:47
-msgid "File Manager"
-msgstr "Upravljalnik datotek"
-
-#: ../data/toc.xml.in.h:48
-msgid "File Tools"
-msgstr "Datotečna orodja"
-
-#: ../data/toc.xml.in.h:49
-msgid "File Transfer"
-msgstr "Prenos datotek"
-
-#: ../data/toc.xml.in.h:50
-msgid "Filesystem"
-msgstr "Datotečni sistem"
-
-#: ../data/toc.xml.in.h:51
-msgid "Financial Tools"
-msgstr "Finančna orodja"
-
-#: ../data/toc.xml.in.h:52
-msgid "Flow Charting Tools"
-msgstr "Orodja za izdelovanje grafikonov"
-
-#: ../data/toc.xml.in.h:53
-msgid "GNOME Applications"
-msgstr "GNOME programi"
-
-#: ../data/toc.xml.in.h:54
-msgid "GTK"
-msgstr "GTK"
-
-#: ../data/toc.xml.in.h:55
-msgid "GUI Designers"
-msgstr "Oblikovanje uporabniškega vmesnika"
-
-#: ../data/toc.xml.in.h:57
-msgid "Generic applications for the GNOME environment"
-msgstr "Program GNOME okolja"
-
-#: ../data/toc.xml.in.h:58
-msgid "Generic applications for the KDE environment"
-msgstr "Programi privzeti za namizje KDE"
-
-#: ../data/toc.xml.in.h:59
-msgid "Geography"
-msgstr "Geografija"
-
-#: ../data/toc.xml.in.h:60
-msgid "Geology"
-msgstr "Geologija"
-
-#: ../data/toc.xml.in.h:61
-msgid "Geoscience"
-msgstr "Geološke znanosti"
-
-#: ../data/toc.xml.in.h:62
-msgid "Graphics"
-msgstr "Grafika"
-
-#: ../data/toc.xml.in.h:63
-msgid "Guides and manuals for applications that connect to the outside world"
-msgstr "Vodila in priročniki za programe povezane v splet"
-
-#: ../data/toc.xml.in.h:64
-msgid "Guides for getting involved in development"
-msgstr "Vodila za sodelovanje pri razvoju programov"
-
-#: ../data/toc.xml.in.h:65
-msgid "Ham Radio"
-msgstr "Ham Radio"
-
-#: ../data/toc.xml.in.h:66
-msgid "Hardware Settings"
-msgstr "Strojne nastavitve"
-
-#: ../data/toc.xml.in.h:67
-msgid "Have some fun"
-msgstr "Zabava in sprostitev"
-
-#: ../data/toc.xml.in.h:68
-msgid "History"
-msgstr "Zgodovina"
-
-#: ../data/toc.xml.in.h:69
-msgid "IDEs"
-msgstr "IDE"
-
-#: ../data/toc.xml.in.h:70
-msgid "IRC Clients"
-msgstr "IRC odjemalci"
-
-#: ../data/toc.xml.in.h:71
-msgid "Image Processing"
-msgstr "Obdelovanje slik"
-
-#: ../data/toc.xml.in.h:72
-msgid "Instant Messaging"
-msgstr "Trenutno sporočanje"
-
-#: ../data/toc.xml.in.h:73
-msgid "Internet"
-msgstr "Internet"
-
-#: ../data/toc.xml.in.h:74
-msgid "Java"
-msgstr "Java"
-
-#: ../data/toc.xml.in.h:75
-msgid "KDE Applications"
-msgstr "KDE programi"
-
-#: ../data/toc.xml.in.h:76
-msgid "Kids Games"
-msgstr "Otroške igre"
-
-#: ../data/toc.xml.in.h:77
-msgid "Learn more about making your system more accessible for a range of disabilities"
-msgstr "Spoznajte več o prilagoditvi sistema za širši krog nedostopnosti"
-
-#: ../data/toc.xml.in.h:78
-msgid "Licenses"
-msgstr "Licence"
-
-#: ../data/toc.xml.in.h:79
-msgid "Literature"
-msgstr "Literatura"
-
-#: ../data/toc.xml.in.h:80
-msgid "Logic Games"
-msgstr "Logične igre"
-
-#: ../data/toc.xml.in.h:81
-msgid "Math"
-msgstr "Matematika"
-
-#: ../data/toc.xml.in.h:82
-msgid "Medical Software"
-msgstr "Medicinski programi"
-
-#: ../data/toc.xml.in.h:83
-msgid "Midi"
-msgstr "Midi"
-
-#: ../data/toc.xml.in.h:84
-msgid "Miscellaneous Documentation"
-msgstr "Različni dokumenti"
-
-#: ../data/toc.xml.in.h:85
-msgid "Mixers"
-msgstr "Mešala"
-
-#: ../data/toc.xml.in.h:86
-msgid "Monitor"
-msgstr "Nadzorovanje"
-
-#: ../data/toc.xml.in.h:87
-msgid "Motif"
-msgstr "Motif"
-
-#: ../data/toc.xml.in.h:88
-msgid "Music"
-msgstr "Glasba"
-
-#: ../data/toc.xml.in.h:89
-msgid "News"
-msgstr "Novice"
-
-#: ../data/toc.xml.in.h:90
-msgid "Numerical Analysis"
-msgstr "Številčne analize"
-
-#: ../data/toc.xml.in.h:91
-msgid "OCR"
-msgstr "OCR"
-
-#: ../data/toc.xml.in.h:92
-msgid "Office Applications"
-msgstr "Pisarniški programi"
-
-#: ../data/toc.xml.in.h:93
-msgid "Office applications"
-msgstr "Pisarniški programi"
-
-#: ../data/toc.xml.in.h:94
-msgid "Other Documentation"
-msgstr "Dodatna dokumentacija"
-
-#: ../data/toc.xml.in.h:95
-msgid "P2P"
-msgstr "P2P"
-
-#: ../data/toc.xml.in.h:96
-msgid "PDA Communication"
-msgstr "PDA komuniciranje"
-
-#: ../data/toc.xml.in.h:97
-msgid "Package Manager"
-msgstr "Upravljalnik paketov"
-
-#: ../data/toc.xml.in.h:98
-msgid "Parallel Computing"
-msgstr "Vzporedno računanje"
-
-#: ../data/toc.xml.in.h:99
-msgid "Photography"
-msgstr "Fotografija"
-
-#: ../data/toc.xml.in.h:100
-msgid "Physics"
-msgstr "Fizika"
-
-#. Translators: this is a menu title for audio and video players
-#: ../data/toc.xml.in.h:102
-msgid "Players"
-msgstr "Predvajalniki"
-
-#: ../data/toc.xml.in.h:103
-msgid "Presentation Tools"
-msgstr "Orodja za izdelovanje predstavitev"
-
-#: ../data/toc.xml.in.h:104
-#: ../src/yelp-print.c:337
-#: ../src/yelp-print.c:364
-msgid "Printing"
-msgstr "Tiskanje"
-
-#: ../data/toc.xml.in.h:105
-msgid "Profiling Tools"
-msgstr "Orodja za profiliranje"
-
-#: ../data/toc.xml.in.h:106
-msgid "Project Management Tools"
-msgstr "Orodja za upravljanje projektov"
-
-#: ../data/toc.xml.in.h:107
-msgid "Publishing"
-msgstr "Objavljanje"
-
-#: ../data/toc.xml.in.h:108
-msgid "Qt"
-msgstr "Qt"
-
-#: ../data/toc.xml.in.h:109
-msgid "Raster Graphics"
-msgstr "Rastersko oblikovanje"
-
-#. Translators: this is a menu title for audio and video recorders
-#: ../data/toc.xml.in.h:111
-msgid "Recorders"
-msgstr "Snemalniki"
-
-#: ../data/toc.xml.in.h:112
-msgid "Remote Access"
-msgstr "Oddaljeni dostop"
-
-#: ../data/toc.xml.in.h:113
-msgid "Revision Control"
-msgstr "Nadzor revizij"
-
-#: ../data/toc.xml.in.h:114
-msgid "Robotics"
-msgstr "Robotika"
-
-#: ../data/toc.xml.in.h:115
-msgid "Role Playing Games"
-msgstr "Igre igranja vlog"
-
-#: ../data/toc.xml.in.h:116
-msgid "Scanning"
-msgstr "Skeniranje"
-
-#: ../data/toc.xml.in.h:117
-msgid "Science"
-msgstr "Znanost"
-
-#: ../data/toc.xml.in.h:118
-msgid "Security"
-msgstr "Varnost"
-
-#: ../data/toc.xml.in.h:119
-msgid "Sequencers"
-msgstr "Sekvenčniki"
-
-#: ../data/toc.xml.in.h:120
-msgid "Settings"
-msgstr "Nastavitve"
-
-#: ../data/toc.xml.in.h:121
-msgid "Settings users can manipulate to make their environment more pleasant"
-msgstr "Nastavitve s katerimi si uporabnik prilagaja delovno okolje"
-
-#: ../data/toc.xml.in.h:122
-msgid "Simulation Games"
-msgstr "Simulacijske igre"
-
-#: ../data/toc.xml.in.h:123
-msgid "Sound"
-msgstr "Zvok"
-
-#: ../data/toc.xml.in.h:124
-msgid "Sound &amp; Video"
-msgstr "Zvok in video"
-
-#: ../data/toc.xml.in.h:125
-msgid "Sound &amp; Video Editing"
-msgstr "Urejanje zvoka &amp; slike"
-
-#: ../data/toc.xml.in.h:126
-msgid "Sports"
-msgstr "Šport"
-
-#: ../data/toc.xml.in.h:127
-msgid "Sports Games"
-msgstr "Športne igre"
-
-#: ../data/toc.xml.in.h:128
-msgid "Spreadsheet Tools"
-msgstr "Orodja za izdelovanje preglednic"
-
-#: ../data/toc.xml.in.h:129
-msgid "Strategy Games"
-msgstr "Strateške igre"
-
-#: ../data/toc.xml.in.h:130
-msgid "System"
-msgstr "Sistem"
-
-#: ../data/toc.xml.in.h:131
-msgid "TV"
-msgstr "TV"
-
-#: ../data/toc.xml.in.h:132
-msgid "Telephony"
-msgstr "Telefonija"
-
-#: ../data/toc.xml.in.h:133
-msgid "Telephony Tools"
-msgstr "Orodja telefonije"
-
-#: ../data/toc.xml.in.h:134
-msgid "Terminal Emulator"
-msgstr "Terminalski emulatorji"
-
-#: ../data/toc.xml.in.h:135
-msgid "Text Editors"
-msgstr "Urejevalniki besedila"
-
-#: ../data/toc.xml.in.h:136
-msgid "Text Tools"
-msgstr "Besedilna orodja"
-
-#: ../data/toc.xml.in.h:137
-msgid "Tools to help you manage your computer"
-msgstr "Orodja za upravljanje z računalnikom"
-
-#: ../data/toc.xml.in.h:138
-msgid "Translation Tools"
-msgstr "Orodja za prevajanje"
-
-#: ../data/toc.xml.in.h:139
-msgid "Tuners"
-msgstr "Uravnalci"
-
-#: ../data/toc.xml.in.h:140
-msgid "Utilities"
-msgstr "Pripomočki"
-
-#: ../data/toc.xml.in.h:141
-msgid "Utilities to help you get work done"
-msgstr "Pripomočki za izvajanje nalog"
-
-#: ../data/toc.xml.in.h:142
-msgid "Vector Graphics"
-msgstr "Vektorsko oblikovanje"
-
-#: ../data/toc.xml.in.h:143
-msgid "Video"
-msgstr "Video"
-
-#: ../data/toc.xml.in.h:144
-msgid "Video Conference"
-msgstr "VideoKonference"
-
-#. Translators: This is a menu title for graphics viewing applications
-#: ../data/toc.xml.in.h:146
-msgid "Viewer"
-msgstr "Pregledovalnik"
-
-#: ../data/toc.xml.in.h:147
-msgid "Web Browser"
-msgstr "Spletni brskalnik"
-
-#: ../data/toc.xml.in.h:148
-msgid "Web Development"
-msgstr "Razvoj spletišča"
-
-#: ../data/toc.xml.in.h:149
-msgid "Welcome to the GNOME Help Browser"
-msgstr "Dobrodošli v GNOME brskalniku pomoči"
-
-#: ../data/toc.xml.in.h:150
-msgid "Word Processors"
-msgstr "Pisarniški urejevalniki besedil"
-
-#: ../data/ui/yelp.glade.h:1
-msgid "<b>Accessibility</b>"
-msgstr "<b>Dostopnost</b>"
-
-#: ../data/ui/yelp.glade.h:2
-msgid "<b>Fonts</b>"
-msgstr "<b>Pisave</b>"
-
-#: ../data/ui/yelp.glade.h:3
-msgid "Add Bookmark"
-msgstr "Dodaj zaznamek"
-
-#: ../data/ui/yelp.glade.h:4
-msgid "Bookmarks"
-msgstr "Zaznamki"
-
-#: ../data/ui/yelp.glade.h:5
-msgid "C_ase sensitive"
-msgstr "Velike in m_ale črke"
-
-#: ../data/ui/yelp.glade.h:6
-msgid "Find"
-msgstr "Najdi"
-
-#: ../data/ui/yelp.glade.h:7
-msgid "Open Location"
-msgstr "Odpri lokacijo"
-
-#: ../data/ui/yelp.glade.h:8
-msgid "Preferences"
-msgstr "Nastavitve"
-
-#: ../data/ui/yelp.glade.h:9
-msgid "Re_name"
-msgstr "Preime_nuj"
-
-#: ../data/ui/yelp.glade.h:10
-msgid "_Bookmarks:"
-msgstr "_Zaznamki:"
-
-#: ../data/ui/yelp.glade.h:11
-msgid "_Browse with caret"
-msgstr "_Brskanje s kazalko"
-
-#: ../data/ui/yelp.glade.h:12
-msgid "_Find:"
-msgstr "_Poišči:"
-
-#: ../data/ui/yelp.glade.h:13
-msgid "_Fixed width:"
-msgstr "_Določena širina:"
-
-#: ../data/ui/yelp.glade.h:14
-msgid "_Location:"
-msgstr "_Položaj:"
-
-#: ../data/ui/yelp.glade.h:15
-msgid "_Next"
-msgstr "_Naslednje"
-
-#: ../data/ui/yelp.glade.h:16
-msgid "_Previous"
-msgstr "_Predhodno"
-
-#: ../data/ui/yelp.glade.h:17
-msgid "_Title:"
-msgstr "_Naslov:"
-
-#: ../data/ui/yelp.glade.h:18
-msgid "_Use system fonts"
-msgstr "_Uporabi sistemske pisave"
-
-#: ../data/ui/yelp.glade.h:19
-msgid "_Variable width:"
-msgstr "_Spremenljiva širina:"
-
-#: ../data/ui/yelp.glade.h:20
-msgid "_Wrap around"
-msgstr "_Prelom vrstic"
-
-#: ../data/yelp.schemas.in.h:1
-msgid "Font for fixed text"
-msgstr "Pisava za določeno besedilo"
-
-#: ../data/yelp.schemas.in.h:2
-msgid "Font for text"
-msgstr "Pisava za besedilo"
-
-#: ../data/yelp.schemas.in.h:3
-msgid "Font for text with fixed width."
-msgstr "Pisava za besedilo z določeno širino."
-
-#: ../data/yelp.schemas.in.h:4
-msgid "Font for text with variable width."
-msgstr "Pisava za besedilo s spremenljivo širino."
-
-#: ../data/yelp.schemas.in.h:5
-msgid "Use a keyboard-controllable caret when viewing pages."
-msgstr "Uporabi s tipkovnico nadzorovano kazalko med ogledom strani."
-
-#: ../data/yelp.schemas.in.h:6
-msgid "Use caret"
-msgstr "Uporabi kazalko"
-
-#: ../data/yelp.schemas.in.h:7
-msgid "Use system fonts"
-msgstr "Uporabi sistemske pisave"
-
-#: ../data/yelp.schemas.in.h:8
-msgid "Use the default fonts set for the system."
-msgstr "Uporabi privzete pisave za sistem."
-
-#: ../src/yelp-bookmarks.c:150
-msgid "Open Bookmark in New Window"
-msgstr "Odpri zaznamek v novem oknu"
-
-#: ../src/yelp-bookmarks.c:154
-msgid "Rename Bookmark"
-msgstr "Preimenuj zaznamek"
-
-#: ../src/yelp-bookmarks.c:158
-msgid "Remove Bookmark"
-msgstr "Odstrani zaznamek"
-
-#: ../src/yelp-bookmarks.c:315
-#, c-format
-msgid "A bookmark titled %s already exists for this page."
-msgstr "Zaznamek z imenom %s za to stran že obstaja."
-
-#: ../src/yelp-bookmarks.c:392
-#, c-format
-msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "Zaznamek z imenom <b>%s</b> za to stran že obstaja."
-
-#: ../src/yelp-bookmarks.c:405
-msgid "Help Topics"
-msgstr "Teme pomoči"
-
-#: ../src/yelp-bookmarks.c:420
-msgid "Document Sections"
-msgstr "Odseki dokumentov"
-
-#: ../src/yelp-db-print.c:258
-#: ../src/yelp-db-print.c:350
-#: ../src/yelp-docbook.c:275
-#: ../src/yelp-docbook.c:367
-#: ../src/yelp-info.c:243
-#: ../src/yelp-info.c:338
-#: ../src/yelp-man.c:293
-#: ../src/yelp-man.c:388
-#: ../src/yelp-toc.c:266
-#: ../src/yelp-toc.c:365
-msgid "Page not found"
-msgstr "Strani ni mogoče najti"
-
-#: ../src/yelp-db-print.c:259
-#: ../src/yelp-docbook.c:276
-#: ../src/yelp-info.c:244
-#: ../src/yelp-man.c:294
-#, c-format
-msgid "The page %s was not found in the document %s."
-msgstr "Strani %s v dokumentu %s ni mogoče najti."
-
-#: ../src/yelp-db-print.c:351
-#: ../src/yelp-docbook.c:368
-#: ../src/yelp-info.c:339
-#: ../src/yelp-man.c:389
-#, c-format
-msgid "The requested page was not found in the document %s."
-msgstr "Zahtevane strani ni mogoče najti v dokumentu %s."
-
-#: ../src/yelp-db-print.c:392
-#: ../src/yelp-docbook.c:409
-#: ../src/yelp-info.c:379
-#: ../src/yelp-man.c:431
-msgid "File not found"
-msgstr "Datoteke ni mogoče najti"
-
-#: ../src/yelp-db-print.c:393
-#: ../src/yelp-docbook.c:410
-#: ../src/yelp-info.c:380
-#: ../src/yelp-man.c:432
-#, c-format
-msgid "The file ‘%s’ does not exist."
-msgstr "Dokument '%s' ne obstaja."
-
-#: ../src/yelp-db-print.c:406
-#: ../src/yelp-db-print.c:418
-#: ../src/yelp-docbook.c:423
-#: ../src/yelp-docbook.c:435
-#: ../src/yelp-info.c:394
-#: ../src/yelp-man.c:460
-#: ../src/yelp-toc.c:436
-msgid "Could not parse file"
-msgstr "Ni mogoče razčleniti datoteke"
-
-#: ../src/yelp-db-print.c:407
-#: ../src/yelp-docbook.c:424
-#, c-format
-msgid "The file ‘%s’ could not be parsed because it is not a well-formed XML document."
-msgstr "Datoteke ‘%s’ ni mogoče razčleniti ni pravilnem XML zapisu."
-
-#: ../src/yelp-db-print.c:419
-#: ../src/yelp-docbook.c:436
-#, c-format
-msgid "The file ‘%s’ could not be parsed because one or more of its included files is not a well-formed XML document."
-msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilnem XML zapisu."
-
-#: ../src/yelp-db-print.c:765
-#: ../src/yelp-docbook.c:786
-msgid "Unknown"
-msgstr "Neznano"
-
-#: ../src/yelp-error.c:132
-#: ../src/yelp-error.c:139
-msgid "Unknown Error"
-msgstr "Neznana napaka"
-
-#: ../src/yelp-error.c:136
-#: ../src/yelp-window.c:1630
-msgid "Could Not Read File"
-msgstr "Ni mogoče prebrati dokumenta"
-
-#: ../src/yelp-error.c:146
-msgid "No information is available about this error."
-msgstr "Podrobnosti o napaki niso na voljo."
-
-#: ../src/yelp-info.c:395
-#, c-format
-msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
-msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu info."
-
-#: ../src/yelp-io-channel.c:123
-#, c-format
-msgid "The file ‘%s’ could not be read and decoded. The file may be compressed in an unsupported format."
-msgstr "Datoteke ‘%s’ ni mogoče prebrati in dekodirati. Datoteka je morda skrčena v nepodprtem arhivu."
-
-#: ../src/yelp-main.c:92
-msgid "Use a private session"
-msgstr "Uporabi osebno sejo"
-
-#: ../src/yelp-main.c:101
-msgid "Define which cache directory to use"
-msgstr "Določitev predpomnilniškega imenika za uporabo"
-
-#. Commandline parsing is done here
-#: ../src/yelp-main.c:358
-msgid " GNOME Help Browser"
-msgstr "Gnome brskalnik pomoči"
-
-#: ../src/yelp-main.c:378
-#: ../yelp.desktop.in.in.h:2
-msgid "Help"
-msgstr "Pomoč"
-
-#: ../src/yelp-man.c:461
-#, c-format
-msgid "The file ‘%s’ could not be parsed because it is not a well-formed man page."
-msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu man strani."
-
-#: ../src/yelp-print.c:97
-msgid "Print"
-msgstr "Natisni"
-
-#: ../src/yelp-print.c:167
-msgid "Preparing to print"
-msgstr "Priprava na tiskanje"
-
-#: ../src/yelp-print.c:261
-msgid "Printing is not supported on this printer"
-msgstr "Tiskanje s tem tiskalnikom ni podprto"
-
-#: ../src/yelp-print.c:264
-#, c-format
-msgid "Printer %s does not support postscript printing."
-msgstr "Tiskalnik %s ne podpira postscript tiskanja."
-
-#: ../src/yelp-print.c:366
-msgid "Waiting to print"
-msgstr "Čakanje na tiskanje"
-
-#: ../src/yelp-print.c:578
-msgid "An error occurred while printing"
-msgstr "Med tiskanjem je prišlo do napake"
-
-#: ../src/yelp-print.c:582
-#, c-format
-msgid "It was not possible to print your document: %s"
-msgstr "Dokumenta ni bilo mogoče natisniti: %s"
-
-#: ../src/yelp-search-parser.c:68
-msgid "the GNOME Support Forums"
-msgstr "GNOME Podporni Forumi"
-
-#: ../src/yelp-search-parser.c:286
-#, c-format
-msgid "No results for \"%s\""
-msgstr "Ni zadetkov za \"%s\""
-
-#: ../src/yelp-search-parser.c:287
-msgid "Try using different words to describe the problem you're having or the topic you want help with."
-msgstr "Poskusite uporabiti drugačne besede za opis vašega problema ali teme, za katero potrebujete pomoč."
-
-#: ../src/yelp-search-parser.c:290
-#, c-format
-msgid "Search results for \"%s\""
-msgstr "Iskalni zadetki za \"%s\""
-
-#. TRANSLATORS: Please don't do anything funny with the
-#. * format arguement. It isn't really going through a printf
-#. * The %s is used to indicate where the name of the site (linked)
-#. * should be. This is done in the XSLT
-#.
-#: ../src/yelp-search-parser.c:304
-#, c-format
-msgid "Repeat the search online at %s"
-msgstr "Ponovi iskanje na mreži %s"
-
-#. Translators: Do not translate this list exactly. These are
-#. * colon-separated words that aren't useful for choosing search
-#. * results; they will be different for each language. Include
-#. * pronouns, articles, very common verbs and prepositions,
-#. * words from question structures like "tell me about" and
-#. * "how do I", and words for functional states like "not",
-#. * "work", and "broken".
-#.
-#: ../src/yelp-search-parser.c:874
-msgid "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:where:who:will:with:won't:wont:why:work:working:works"
-msgstr "da:od:ne:k:kot:h:o:in:ali:to:tisto:tisti:tista"
-
-#. Translators: This is a list of common prefixes for words.
-#. * Do not translate this directly. Instead, use a colon
-#. * seperated list of word-starts. In English, an example
-#. * is re-. If there is none, please use the term NULL
-#. * If there is only one, please put a colon after.
-#. * E.g. if the common prefix is re then the string would be
-#. * "re:"
-#.
-#: ../src/yelp-search-parser.c:890
-msgid "re"
-msgstr "NULL"
-
-#. Translators: This is a list of (guess what?) common suffixes
-#. * to words. Things that may be put at ends of words to slightly
-#. * alter their meaning (like -ing and -s in English). This is a
-#. * colon seperated list (I like colons). If there are none,
-#. * please use the string NULL. If there is only 1, please
-#. * add a colon at the end of the list
-#.
-#: ../src/yelp-search-parser.c:899
-msgid "ers:er:ing:es:s:'s"
-msgstr "NULL"
-
-#: ../src/yelp-search-parser.c:1095
-msgid "No Comment"
-msgstr "Ni opomb"
-
-#. Much bigger problems
-#: ../src/yelp-search.c:238
-msgid "Search could not be processed"
-msgstr "Ni mogoče izvesti iskanja"
-
-#: ../src/yelp-search.c:239
-msgid "The requested search could not be processed."
-msgstr "Iskalnega niza ni mogoče izvesti."
-
-#: ../src/yelp-search.c:366
-msgid "Cannot process the search"
-msgstr "Ni mogoče izvesti iskanja"
-
-#: ../src/yelp-search.c:367
-msgid "The search processor returned invalid results"
-msgstr "Iskalnik je vrnil neveljavne rezultate"
-
-#: ../src/yelp-toc.c:267
-#, c-format
-msgid "The page %s was not found in the TOC."
-msgstr "Strani %s ni mogoče najti v kazalu."
-
-#: ../src/yelp-toc.c:366
-msgid "The requested page was not found in the TOC."
-msgstr "Zahtevane stran ni mogoče najti v kazalu"
-
-#: ../src/yelp-toc.c:437
-msgid "The TOC file could not be parsed because it is not a well-formed XML document."
-msgstr "Datoteke TOC ni mogoče razčleniti, ker ni pravilno oblikovana v formatu XML."
-
-#: ../src/yelp-transform.c:80
-msgid "Invalid Stylesheet"
-msgstr "Neveljavna oblikovna datoteka"
-
-#: ../src/yelp-transform.c:81
-#, c-format
-msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
-msgstr "Oblikovna datoteka XSLT ‘%s’ ne obstaja ali pa ni zapisana v veljavnem zapisu."
-
-#: ../src/yelp-transform.c:112
-msgid "Broken Transformation"
-msgstr "Pokvarjena pretvorba"
-
-#: ../src/yelp-transform.c:113
-msgid "An unknown error occurred while attempting to transform the document."
-msgstr "Prišlo je do neznane napake med poskusom pretvorbe dokumenta."
-
-#: ../src/yelp-transform.c:372
-msgid "No href attribute found on yelp:document\n"
-msgstr "Ni mogoče najti atributa href na yelp:dokument\n"
-
-#: ../src/yelp-transform.c:387
-msgid "Out of memory"
-msgstr "Primanjkuje pomnilnika"
-
-#: ../src/yelp-window.c:304
-msgid "_File"
-msgstr "_Datoteka"
-
-#: ../src/yelp-window.c:305
-msgid "_Edit"
-msgstr "_Uredi"
-
-#: ../src/yelp-window.c:306
-msgid "_Go"
-msgstr "Po_jdi"
-
-#: ../src/yelp-window.c:307
-msgid "_Bookmarks"
-msgstr "_Zaznamki"
-
-#: ../src/yelp-window.c:308
-msgid "_Help"
-msgstr "_Pomoč"
-
-#: ../src/yelp-window.c:311
-msgid "_New Window"
-msgstr "_Novo okno"
-
-#: ../src/yelp-window.c:316
-msgid "Print This Document ..."
-msgstr "Natisni dokument ..."
-
-#: ../src/yelp-window.c:321
-msgid "Print This Page ..."
-msgstr "Natisni stran ..."
-
-#: ../src/yelp-window.c:326
-msgid "About This Document"
-msgstr "O dokumentu"
-
-#: ../src/yelp-window.c:331
-msgid "Open _Location"
-msgstr "Odpri _povezavo"
-
-#: ../src/yelp-window.c:336
-msgid "_Close Window"
-msgstr "_Zapri okno"
-
-#: ../src/yelp-window.c:342
-msgid "_Copy"
-msgstr "_Kopiraj"
-
-#: ../src/yelp-window.c:348
-msgid "_Select All"
-msgstr "_Izberi vse"
-
-#: ../src/yelp-window.c:353
-msgid "_Find..."
-msgstr "_Poišči ..."
-
-#: ../src/yelp-window.c:358
-msgid "Find Pre_vious"
-msgstr "Poišči _predhodne"
-
-#: ../src/yelp-window.c:360
-msgid "Find previous occurrence of the word or phrase"
-msgstr "Poišči predhodno besedo ali frazo"
-
-#: ../src/yelp-window.c:363
-msgid "Find Ne_xt"
-msgstr "Poišči na_slednjo"
-
-#: ../src/yelp-window.c:365
-msgid "Find next occurrence of the word or phrase"
-msgstr "Poišči naslednjo besedo ali frazo"
-
-#: ../src/yelp-window.c:368
-msgid "_Preferences"
-msgstr "_Lastnosti"
-
-#: ../src/yelp-window.c:373
-msgid "_Reload"
-msgstr "_Osveži"
-
-#: ../src/yelp-window.c:385
-msgid "_Back"
-msgstr "Naza_j"
-
-#: ../src/yelp-window.c:387
-msgid "Show previous page in history"
-msgstr "Pokaži predhodno stran zgodovine"
-
-#: ../src/yelp-window.c:390
-msgid "_Forward"
-msgstr "_Naprej"
-
-#: ../src/yelp-window.c:392
-msgid "Show next page in history"
-msgstr "Pokaži naslednjo stran v zgodovini"
-
-#: ../src/yelp-window.c:395
-msgid "_Help Topics"
-msgstr "_Teme pomoči"
-
-#: ../src/yelp-window.c:397
-msgid "Go to the listing of help topics"
-msgstr "Pojdi na seznam pomoči"
-
-#: ../src/yelp-window.c:400
-msgid "_Previous Section"
-msgstr "_Predhodni odsek"
-
-#: ../src/yelp-window.c:405
-msgid "_Next Section"
-msgstr "_Naslednji odsek"
-
-#: ../src/yelp-window.c:410
-#: ../src/yelp-window.c:442
-msgid "_Contents"
-msgstr "_Vsebina"
-
-#: ../src/yelp-window.c:416
-msgid "_Add Bookmark"
-msgstr "_Dodaj zaznamek"
-
-#: ../src/yelp-window.c:421
-msgid "_Edit Bookmarks..."
-msgstr "_Uredi zaznamke ..."
-
-#: ../src/yelp-window.c:427
-msgid "_Open Link"
-msgstr "_Odpri povezavo"
-
-#: ../src/yelp-window.c:432
-msgid "Open Link in _New Window"
-msgstr "Odpri povezavo v _novem oknu"
-
-#: ../src/yelp-window.c:437
-msgid "_Copy Link Address"
-msgstr "_Kopiraj naslov povezave"
-
-#: ../src/yelp-window.c:444
-msgid "Help On this application"
-msgstr "Pomoč programa"
-
-#: ../src/yelp-window.c:447
-msgid "_About"
-msgstr "_O programu"
-
-#: ../src/yelp-window.c:452
-msgid "Copy _Email Address"
-msgstr "Kopiraj elektronski naslov"
-
-#: ../src/yelp-window.c:501
-msgid "Help Browser"
-msgstr "Brskalnik pomoči"
-
-#: ../src/yelp-window.c:592
-#: ../src/yelp-window.c:644
-#: ../src/yelp-window.c:1684
-msgid "Loading..."
-msgstr "Nalaganje ..."
-
-#: ../src/yelp-window.c:593
-#: ../src/yelp-window.c:645
-msgid "Unknown Page"
-msgstr "Neznana stran"
-
-#: ../src/yelp-window.c:1008
-#: ../src/yelp-window.c:1074
-#, c-format
-msgid "The requested URI \"%s\" is invalid"
-msgstr "Zahtevan naslov URI \"%s\" ni veljaven"
-
-#: ../src/yelp-window.c:1009
-#: ../src/yelp-window.c:1075
-msgid "Unable to load page"
-msgstr "Ni mogoče naložiti strani"
-
-#: ../src/yelp-window.c:1069
-msgid "Error executing \"gnome-open\""
-msgstr "Napaka izvedbe \"gnome-open\""
-
-#: ../src/yelp-window.c:1253
-msgid "_Search:"
-msgstr "_Išči:"
-
-#: ../src/yelp-window.c:1254
-msgid "Search for other documentation"
-msgstr "Iskanje druge dokumentacije"
-
-#: ../src/yelp-window.c:1274
-msgid "Cannot create window"
-msgstr "Ni mogoče ustvariti okna"
-
-#: ../src/yelp-window.c:1280
-msgid "Cannot create search component"
-msgstr "Ni mogoče ustvariti iskalnega niza"
-
-#: ../src/yelp-window.c:1452
-msgid "Fin_d:"
-msgstr "_Poišči:"
-
-#: ../src/yelp-window.c:1474
-msgid "Find _Previous"
-msgstr "Poišči _predhodne"
-
-#: ../src/yelp-window.c:1486
-msgid "Find _Next"
-msgstr "Poišči _naslednje"
-
-#: ../src/yelp-window.c:1499
-msgid "Phrase not found"
-msgstr "Fraze ni mogoče najti"
-
-#: ../src/yelp-window.c:1627
-#, c-format
-msgid "The file ‘%s’ could not be read. This file might be missing, or you might not have permissions to read it."
-msgstr "Datoteke ‘%s’ ni mogoče prebrati. Datoteka ne obstaja ali pa nimate dovoljenja za branje."
-
-#. Note to translators: put here your name (and address) so it
-#. * will show up in the "about" box
-#: ../src/yelp-window.c:2453
-msgid "translator-credits"
-msgstr "Matej Urbančič <mateju@svn.gnome.org>"
-
-#: ../src/yelp-window.c:2456
-msgid "Yelp"
-msgstr "Yelp"
-
-#: ../src/yelp-window.c:2458
-msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "Pregledovalnik dokumentov za namizje Gnome."
-
-#: ../yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "Iskanje pomoči z Gnome namizjem"
-
+# Slovenian translation of yelp package.
+# Copyright (C) 2005-2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the program package.
+#
+# Andraž Tori <andraz.tori1@guest.arnes.si>, 2002.
+# Matej Urbančič <mateju@svn.gnome.org>, 2006 - 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: yelp master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n"
+"POT-Creation-Date: 2010-05-07 23:28+0000\n"
+"PO-Revision-Date: 2010-05-08 10:00+0100\n"
+"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
+"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../data/info.xml.in.h:1
+msgid "GNU Info Pages"
+msgstr "GNU Info strani"
+
+#: ../data/info.xml.in.h:2
+msgid "Traditional command line help (info)"
+msgstr "Pomoč z ukazne vrstice (info)"
+
+#: ../data/man.xml.in.h:1
+msgid "Applications"
+msgstr "Programi"
+
+#: ../data/man.xml.in.h:2
+msgid "BLT Functions"
+msgstr "BLT funkcije"
+
+#: ../data/man.xml.in.h:3
+msgid "Configuration Files"
+msgstr "Nastavitvene datoteke"
+
+#: ../data/man.xml.in.h:4
+msgid "Curses Functions"
+msgstr "Curses funkcije"
+
+#: ../data/man.xml.in.h:5
+#: ../data/toc.xml.in.h:35
+msgid "Development"
+msgstr "Razvoj"
+
+#: ../data/man.xml.in.h:6
+msgid "FORTRAN Functions"
+msgstr "FORTRAN funkcije"
+
+#: ../data/man.xml.in.h:7
+#: ../data/toc.xml.in.h:56
+msgid "Games"
+msgstr "Igre"
+
+#: ../data/man.xml.in.h:8
+msgid "Hardware Devices"
+msgstr "Strojne naprave"
+
+#: ../data/man.xml.in.h:9
+msgid "Kernel Routines"
+msgstr "Funkcije jedra"
+
+#: ../data/man.xml.in.h:10
+msgid "Manual Pages"
+msgstr "Strani priročnika"
+
+#: ../data/man.xml.in.h:11
+msgid "Network Audio Sound Functions"
+msgstr "Omrežne zvočne funkcije"
+
+#: ../data/man.xml.in.h:12
+msgid "OpenSSL Applications"
+msgstr "OpenSSL programi"
+
+#: ../data/man.xml.in.h:13
+msgid "OpenSSL Configuration"
+msgstr "OpenSSL nastavitve"
+
+#: ../data/man.xml.in.h:14
+msgid "OpenSSL Functions"
+msgstr "OpenSSL funkcije"
+
+#: ../data/man.xml.in.h:15
+msgid "OpenSSL Overviews"
+msgstr "OpenSSL pregledi"
+
+#: ../data/man.xml.in.h:16
+msgid "Overviews"
+msgstr "Pregledi"
+
+#: ../data/man.xml.in.h:17
+msgid "POSIX Functions"
+msgstr "POSIX funkcije"
+
+#: ../data/man.xml.in.h:18
+msgid "POSIX Headers"
+msgstr "POSIX glave"
+
+#: ../data/man.xml.in.h:19
+msgid "Perl Functions"
+msgstr "Perl funkcije"
+
+#: ../data/man.xml.in.h:20
+msgid "Qt Functions"
+msgstr "Qt funkcije"
+
+#: ../data/man.xml.in.h:21
+msgid "Readline Functions"
+msgstr "Readline funkcije"
+
+#: ../data/man.xml.in.h:22
+msgid "Section 0p"
+msgstr "Odsek 0p"
+
+#: ../data/man.xml.in.h:23
+msgid "Section 1m"
+msgstr "Odsek 1m"
+
+#: ../data/man.xml.in.h:24
+msgid "Section 1ssl"
+msgstr "Odsek 1ssl"
+
+#: ../data/man.xml.in.h:25
+msgid "Section 1x"
+msgstr "Odsek 1x"
+
+#: ../data/man.xml.in.h:26
+msgid "Section 2"
+msgstr "Odsek 2"
+
+#: ../data/man.xml.in.h:27
+msgid "Section 3blt"
+msgstr "Odsek 3blt"
+
+#: ../data/man.xml.in.h:28
+msgid "Section 3f"
+msgstr "Odsek 3f"
+
+#: ../data/man.xml.in.h:29
+msgid "Section 3nas"
+msgstr "Odsek 3nas"
+
+#: ../data/man.xml.in.h:30
+msgid "Section 3p"
+msgstr "Odsek 3p"
+
+#: ../data/man.xml.in.h:31
+msgid "Section 3qt"
+msgstr "Odsek 3qt"
+
+#: ../data/man.xml.in.h:32
+msgid "Section 3readline"
+msgstr "Odsek 3readline"
+
+#: ../data/man.xml.in.h:33
+msgid "Section 3ssl"
+msgstr "Odsek 3ssl"
+
+#: ../data/man.xml.in.h:34
+msgid "Section 3tiff"
+msgstr "Odsek 3tiff"
+
+#: ../data/man.xml.in.h:35
+msgid "Section 4"
+msgstr "Odsek 4"
+
+#: ../data/man.xml.in.h:36
+msgid "Section 4x"
+msgstr "Odsek 4x"
+
+#: ../data/man.xml.in.h:37
+msgid "Section 5"
+msgstr "Odsek 5"
+
+#: ../data/man.xml.in.h:38
+msgid "Section 5ssl"
+msgstr "Odsek 5ssl"
+
+#: ../data/man.xml.in.h:39
+msgid "Section 5x"
+msgstr "Odsek 5x"
+
+#: ../data/man.xml.in.h:40
+msgid "Section 6"
+msgstr "Odsek 6"
+
+#: ../data/man.xml.in.h:41
+msgid "Section 6x"
+msgstr "Odsek 6x"
+
+#: ../data/man.xml.in.h:42
+msgid "Section 7ssl"
+msgstr "Odsek 7ssl"
+
+#: ../data/man.xml.in.h:43
+msgid "Section 7x"
+msgstr "Odsek 7x"
+
+#: ../data/man.xml.in.h:44
+msgid "Section 9"
+msgstr "Odsek 9"
+
+#: ../data/man.xml.in.h:45
+msgid "Sections 1, 1p, 1g and 1t"
+msgstr "Odseki 1, 1p, 1g in 1t"
+
+#: ../data/man.xml.in.h:46
+msgid "Sections 3, 3o, and 3t"
+msgstr "Odseki 3, 3o, in 3t"
+
+#: ../data/man.xml.in.h:47
+msgid "Sections 3form and 3menu"
+msgstr "Odseki 3form in 3menu"
+
+#: ../data/man.xml.in.h:48
+msgid "Sections 3ncurses and 3curses"
+msgstr "Odseki 3ncurses in 3curses"
+
+#: ../data/man.xml.in.h:49
+msgid "Sections 3pm and 3perl"
+msgstr "Odseki 3pm in 3perl"
+
+#: ../data/man.xml.in.h:50
+msgid "Sections 3x and 3X11"
+msgstr "Odseki 3x in 3X11"
+
+#: ../data/man.xml.in.h:51
+msgid "Sections 7 and 7gcc"
+msgstr "Odseki 7 in 7gcc"
+
+#: ../data/man.xml.in.h:52
+msgid "Sections 8 and 8l"
+msgstr "Odseki 8 in 8l"
+
+#: ../data/man.xml.in.h:53
+msgid "System Administration"
+msgstr "Sistemsko upravljanje"
+
+#: ../data/man.xml.in.h:54
+msgid "System Calls"
+msgstr "Sistemski klici"
+
+#: ../data/man.xml.in.h:55
+msgid "System V Form/Menu Functions"
+msgstr "Sistem V Form/Meni funkcije"
+
+#: ../data/man.xml.in.h:56
+msgid "TIFF Functions"
+msgstr "TIFF funkcije"
+
+#: ../data/man.xml.in.h:57
+msgid "Termcap Applications"
+msgstr "Termcap programi"
+
+#: ../data/man.xml.in.h:58
+msgid "Traditional command line help (man)"
+msgstr "Pomoč z ukazne vrstice (man)"
+
+#: ../data/man.xml.in.h:59
+msgid "X11 Applications"
+msgstr "X11 programi"
+
+#: ../data/man.xml.in.h:60
+msgid "X11 Configuration"
+msgstr "X11 nastavitve"
+
+#: ../data/man.xml.in.h:61
+msgid "X11 Devices"
+msgstr "X11 naprave"
+
+#: ../data/man.xml.in.h:62
+msgid "X11 Functions"
+msgstr "X11 funkcije"
+
+#: ../data/man.xml.in.h:63
+msgid "X11 Games"
+msgstr "X11 igre"
+
+#: ../data/man.xml.in.h:64
+msgid "X11 Overviews"
+msgstr "X11 pregledi"
+
+#: ../data/toc.xml.in.h:1
+msgid "2D Graphics"
+msgstr "2D oblikovanje"
+
+#: ../data/toc.xml.in.h:2
+msgid "3D Graphics"
+msgstr "3D oblikovanje"
+
+#: ../data/toc.xml.in.h:3
+msgid "Accessibility"
+msgstr "Dostopnost"
+
+#: ../data/toc.xml.in.h:4
+msgid "Action Games"
+msgstr "Akcijske igre"
+
+#: ../data/toc.xml.in.h:5
+msgid "Adventure Games"
+msgstr "Igre dogodivščin"
+
+#: ../data/toc.xml.in.h:6
+msgid "Amusement"
+msgstr "Zabava"
+
+#: ../data/toc.xml.in.h:7
+msgid "Applications for viewing and manipulating graphics"
+msgstr "Programi za obdelavo in pregledovanje slik"
+
+#: ../data/toc.xml.in.h:8
+msgid "Applications related to audio and video"
+msgstr "Programi povezani z zvokom in sliko"
+
+#: ../data/toc.xml.in.h:9
+msgid "Applications that teach or aid in learning"
+msgstr "Programi povezani z učenjem"
+
+#: ../data/toc.xml.in.h:10
+msgid "Arcade Games"
+msgstr "Arkadne igre"
+
+#: ../data/toc.xml.in.h:11
+msgid "Archiving Tools"
+msgstr "Orodja za arhiviranje"
+
+#: ../data/toc.xml.in.h:12
+msgid "Art"
+msgstr "Umetnost"
+
+#: ../data/toc.xml.in.h:13
+msgid "Artificial Intelligence"
+msgstr "Umetna razumnost"
+
+#: ../data/toc.xml.in.h:14
+msgid "Astronomy"
+msgstr "Astronomija"
+
+#: ../data/toc.xml.in.h:15
+msgid "Biology"
+msgstr "Biologija"
+
+#: ../data/toc.xml.in.h:16
+msgid "Blocks Games"
+msgstr "Igre z liki"
+
+#: ../data/toc.xml.in.h:17
+msgid "Board Games"
+msgstr "Tabelne Igre"
+
+#: ../data/toc.xml.in.h:18
+msgid "Building"
+msgstr "Izgradnja"
+
+#: ../data/toc.xml.in.h:19
+msgid "Calculator"
+msgstr "Računalo"
+
+#: ../data/toc.xml.in.h:20
+msgid "Calendar"
+msgstr "Koledar"
+
+#: ../data/toc.xml.in.h:21
+msgid "Card Games"
+msgstr "Igre s kartami"
+
+#: ../data/toc.xml.in.h:22
+msgid "Charting Tools"
+msgstr "Orodja za izrisovanje grafov"
+
+#: ../data/toc.xml.in.h:23
+msgid "Chat"
+msgstr "Klepet"
+
+#: ../data/toc.xml.in.h:24
+msgid "Chemistry"
+msgstr "Kemija"
+
+#: ../data/toc.xml.in.h:25
+msgid "Clocks"
+msgstr "Ure"
+
+#: ../data/toc.xml.in.h:26
+msgid "Compression Tools"
+msgstr "Orodja za stiskanje"
+
+#: ../data/toc.xml.in.h:27
+msgid "Computer Science"
+msgstr "Računalništvo"
+
+#: ../data/toc.xml.in.h:28
+msgid "Construction"
+msgstr "Gradbeništvo"
+
+#: ../data/toc.xml.in.h:29
+msgid "Contact Management"
+msgstr "Upravljanje s stiki"
+
+#: ../data/toc.xml.in.h:30
+msgid "Data Visualization"
+msgstr "Prikazovanje podatkov"
+
+#: ../data/toc.xml.in.h:31
+msgid "Databases"
+msgstr "Podatkovne zbirke"
+
+#: ../data/toc.xml.in.h:32
+msgid "Debuggers"
+msgstr "Razhroščevalniki"
+
+#: ../data/toc.xml.in.h:33
+msgid "Desktop"
+msgstr "Namizje"
+
+#: ../data/toc.xml.in.h:34
+msgid "Desktop Settings"
+msgstr "Nastavitve namizja"
+
+#: ../data/toc.xml.in.h:36
+msgid "Dialup"
+msgstr "Klicanje"
+
+#: ../data/toc.xml.in.h:37
+msgid "Dictionaries"
+msgstr "Slovarji"
+
+#. Translators: this is a menu title for burning audio and video to dics
+#: ../data/toc.xml.in.h:39
+msgid "Disc Burning"
+msgstr "Zapisovanje diskov"
+
+#: ../data/toc.xml.in.h:40
+msgid "Economy"
+msgstr "Ekonomija"
+
+#: ../data/toc.xml.in.h:41
+msgid "Education"
+msgstr "Izobraževanje"
+
+#: ../data/toc.xml.in.h:42
+msgid "Electricity"
+msgstr "Elektrika"
+
+#: ../data/toc.xml.in.h:43
+msgid "Electronics"
+msgstr "Elektronika"
+
+#: ../data/toc.xml.in.h:44
+msgid "Email Tools"
+msgstr "Orodja za elektronsko pošto"
+
+#: ../data/toc.xml.in.h:45
+msgid "Emulator"
+msgstr "Posnemovalniki"
+
+#: ../data/toc.xml.in.h:46
+msgid "Engineering"
+msgstr "Inženirstvo"
+
+#: ../data/toc.xml.in.h:47
+msgid "File Manager"
+msgstr "Upravljalnik datotek"
+
+#: ../data/toc.xml.in.h:48
+msgid "File Tools"
+msgstr "Datotečna orodja"
+
+#: ../data/toc.xml.in.h:49
+msgid "File Transfer"
+msgstr "Prenos datotek"
+
+#: ../data/toc.xml.in.h:50
+msgid "Filesystem"
+msgstr "Datotečni sistem"
+
+#: ../data/toc.xml.in.h:51
+msgid "Financial Tools"
+msgstr "Finančna orodja"
+
+#: ../data/toc.xml.in.h:52
+msgid "Flow Charting Tools"
+msgstr "Orodja za izdelovanje grafikonov"
+
+#: ../data/toc.xml.in.h:53
+msgid "GNOME Applications"
+msgstr "GNOME programi"
+
+#: ../data/toc.xml.in.h:54
+msgid "GTK"
+msgstr "GTK"
+
+#: ../data/toc.xml.in.h:55
+msgid "GUI Designers"
+msgstr "Snovalniki uporabniških vmesnikov"
+
+#: ../data/toc.xml.in.h:57
+msgid "Generic applications for the GNOME environment"
+msgstr "Osnovni programi okolja GNOME"
+
+#: ../data/toc.xml.in.h:58
+msgid "Generic applications for the KDE environment"
+msgstr "Osnovni programi okolja KDE"
+
+#: ../data/toc.xml.in.h:59
+msgid "Geography"
+msgstr "Geografija"
+
+#: ../data/toc.xml.in.h:60
+msgid "Geology"
+msgstr "Geologija"
+
+#: ../data/toc.xml.in.h:61
+msgid "Geoscience"
+msgstr "Geološke znanosti"
+
+#: ../data/toc.xml.in.h:62
+msgid "Graphics"
+msgstr "Grafika"
+
+#: ../data/toc.xml.in.h:63
+msgid "Guides and manuals for applications that connect to the outside world"
+msgstr "Vodniki in priročniki za programe povezane v splet"
+
+#: ../data/toc.xml.in.h:64
+msgid "Guides for getting involved in development"
+msgstr "Vodniki za sodelovanje pri razvoju programov"
+
+#: ../data/toc.xml.in.h:65
+msgid "Ham Radio"
+msgstr "Ham Radio"
+
+#: ../data/toc.xml.in.h:66
+msgid "Hardware Settings"
+msgstr "Strojne nastavitve"
+
+#: ../data/toc.xml.in.h:67
+msgid "Have some fun"
+msgstr "Zabava in sprostitev"
+
+#: ../data/toc.xml.in.h:68
+msgid "History"
+msgstr "Zgodovina"
+
+#: ../data/toc.xml.in.h:69
+msgid "IDEs"
+msgstr "IDE"
+
+#: ../data/toc.xml.in.h:70
+msgid "IRC Clients"
+msgstr "IRC odjemalci"
+
+#: ../data/toc.xml.in.h:71
+msgid "Image Processing"
+msgstr "Obdelovanje slik"
+
+#: ../data/toc.xml.in.h:72
+msgid "Instant Messaging"
+msgstr "Hipno sporočanje"
+
+#: ../data/toc.xml.in.h:73
+msgid "Internet"
+msgstr "Medmrežje"
+
+#: ../data/toc.xml.in.h:74
+msgid "Java"
+msgstr "Java"
+
+#: ../data/toc.xml.in.h:75
+msgid "KDE Applications"
+msgstr "KDE programi"
+
+#: ../data/toc.xml.in.h:76
+msgid "Kids Games"
+msgstr "Otroške igre"
+
+#: ../data/toc.xml.in.h:77
+msgid "Learn more about making your system more accessible for a range of disabilities"
+msgstr "Spoznajte več o prilagoditvi sistema za dostopnost širšemu krogu nezmožnosti"
+
+#: ../data/toc.xml.in.h:78
+msgid "Licenses"
+msgstr "Dovoljenja"
+
+#: ../data/toc.xml.in.h:79
+msgid "Literature"
+msgstr "Literatura"
+
+#: ../data/toc.xml.in.h:80
+msgid "Logic Games"
+msgstr "Logične igre"
+
+#: ../data/toc.xml.in.h:81
+msgid "Math"
+msgstr "Matematika"
+
+#: ../data/toc.xml.in.h:82
+msgid "Medical Software"
+msgstr "Medicinski programi"
+
+#: ../data/toc.xml.in.h:83
+msgid "Midi"
+msgstr "Midi"
+
+#: ../data/toc.xml.in.h:84
+msgid "Miscellaneous Documentation"
+msgstr "Različna dokumentacija"
+
+#: ../data/toc.xml.in.h:85
+msgid "Mixers"
+msgstr "Mešalniki"
+
+#: ../data/toc.xml.in.h:86
+msgid "Monitor"
+msgstr "Nadzor"
+
+#: ../data/toc.xml.in.h:87
+msgid "Motif"
+msgstr "Motif"
+
+#: ../data/toc.xml.in.h:88
+msgid "Music"
+msgstr "Glasba"
+
+#: ../data/toc.xml.in.h:89
+msgid "News"
+msgstr "Novice"
+
+#: ../data/toc.xml.in.h:90
+msgid "Numerical Analysis"
+msgstr "Analiza števil"
+
+#: ../data/toc.xml.in.h:91
+msgid "OCR"
+msgstr "Optično branje"
+
+#: ../data/toc.xml.in.h:92
+msgid "Office Applications"
+msgstr "Pisarniški programi"
+
+#: ../data/toc.xml.in.h:93
+msgid "Office applications"
+msgstr "Pisarniški programi"
+
+#: ../data/toc.xml.in.h:94
+msgid "Other Documentation"
+msgstr "Dodatna dokumentacija"
+
+#: ../data/toc.xml.in.h:95
+msgid "P2P"
+msgstr "P2P"
+
+#: ../data/toc.xml.in.h:96
+msgid "PDA Communication"
+msgstr "Povezovanje dlančnikov"
+
+#: ../data/toc.xml.in.h:97
+msgid "Package Manager"
+msgstr "Upravljalnik paketov"
+
+#: ../data/toc.xml.in.h:98
+msgid "Parallel Computing"
+msgstr "Vzporedno izračunavanje"
+
+#: ../data/toc.xml.in.h:99
+msgid "Photography"
+msgstr "Fotografija"
+
+#: ../data/toc.xml.in.h:100
+msgid "Physics"
+msgstr "Fizika"
+
+#. Translators: this is a menu title for audio and video players
+#: ../data/toc.xml.in.h:102
+msgid "Players"
+msgstr "Predvajalniki"
+
+#: ../data/toc.xml.in.h:103
+msgid "Presentation Tools"
+msgstr "Orodja za izdelovanje predstavitev"
+
+#: ../data/toc.xml.in.h:104
+msgid "Printing"
+msgstr "Tiskanje"
+
+#: ../data/toc.xml.in.h:105
+msgid "Profiling Tools"
+msgstr "Orodja za profiliranje"
+
+#: ../data/toc.xml.in.h:106
+msgid "Project Management Tools"
+msgstr "Orodja za upravljanje projektov"
+
+#: ../data/toc.xml.in.h:107
+msgid "Publishing"
+msgstr "Založništvo"
+
+#: ../data/toc.xml.in.h:108
+msgid "Qt"
+msgstr "Qt"
+
+#: ../data/toc.xml.in.h:109
+msgid "Raster Graphics"
+msgstr "Rastersko oblikovanje"
+
+#. Translators: this is a menu title for audio and video recorders
+#: ../data/toc.xml.in.h:111
+msgid "Recorders"
+msgstr "Snemalniki"
+
+#: ../data/toc.xml.in.h:112
+msgid "Remote Access"
+msgstr "Oddaljeni dostop"
+
+#: ../data/toc.xml.in.h:113
+msgid "Revision Control"
+msgstr "Nadzor predelav"
+
+#: ../data/toc.xml.in.h:114
+msgid "Robotics"
+msgstr "Robotika"
+
+#: ../data/toc.xml.in.h:115
+msgid "Role Playing Games"
+msgstr "Igre igranja vlog"
+
+#: ../data/toc.xml.in.h:116
+msgid "Scanning"
+msgstr "Preiskovanje"
+
+#: ../data/toc.xml.in.h:117
+msgid "Science"
+msgstr "Znanost"
+
+#: ../data/toc.xml.in.h:118
+msgid "Security"
+msgstr "Varnost"
+
+#: ../data/toc.xml.in.h:119
+msgid "Sequencers"
+msgstr "Sekvenčniki"
+
+#: ../data/toc.xml.in.h:120
+msgid "Settings"
+msgstr "Nastavitve"
+
+#: ../data/toc.xml.in.h:121
+msgid "Settings users can manipulate to make their environment more pleasant"
+msgstr "Nastavitve za prilagajanje delovnega okolja"
+
+#: ../data/toc.xml.in.h:122
+msgid "Simulation Games"
+msgstr "Simulacije"
+
+#: ../data/toc.xml.in.h:123
+msgid "Sound"
+msgstr "Zvok"
+
+#: ../data/toc.xml.in.h:124
+msgid "Sound &amp; Video"
+msgstr "Zvok in video"
+
+#: ../data/toc.xml.in.h:125
+msgid "Sound &amp; Video Editing"
+msgstr "Urejanje zvoka in slike"
+
+#: ../data/toc.xml.in.h:126
+msgid "Sports"
+msgstr "Šport"
+
+#: ../data/toc.xml.in.h:127
+msgid "Sports Games"
+msgstr "Športne igre"
+
+#: ../data/toc.xml.in.h:128
+msgid "Spreadsheet Tools"
+msgstr "Orodja za izdelovanje razpredelnic"
+
+#: ../data/toc.xml.in.h:129
+msgid "Strategy Games"
+msgstr "Strateške igre"
+
+#: ../data/toc.xml.in.h:130
+msgid "System"
+msgstr "Sistem"
+
+#: ../data/toc.xml.in.h:131
+msgid "TV"
+msgstr "TV"
+
+#: ../data/toc.xml.in.h:132
+msgid "Telephony"
+msgstr "Telefonija"
+
+#: ../data/toc.xml.in.h:133
+msgid "Telephony Tools"
+msgstr "Orodja telefonije"
+
+#: ../data/toc.xml.in.h:134
+msgid "Terminal Emulator"
+msgstr "Terminalski posnemovalnik"
+
+#: ../data/toc.xml.in.h:135
+msgid "Text Editors"
+msgstr "Urejevalniki besedila"
+
+#: ../data/toc.xml.in.h:136
+msgid "Text Tools"
+msgstr "Orodja za besedilo"
+
+#: ../data/toc.xml.in.h:137
+msgid "Tools to help you manage your computer"
+msgstr "Orodja za upravljanje z računalnikom"
+
+#: ../data/toc.xml.in.h:138
+msgid "Translation Tools"
+msgstr "Orodja za prevajanje"
+
+#: ../data/toc.xml.in.h:139
+msgid "Tuners"
+msgstr "Uravnalci"
+
+#: ../data/toc.xml.in.h:140
+msgid "Utilities"
+msgstr "Pripomočki"
+
+#: ../data/toc.xml.in.h:141
+msgid "Utilities to help you get work done"
+msgstr "Pripomočki za izvajanje nalog"
+
+#: ../data/toc.xml.in.h:142
+msgid "Vector Graphics"
+msgstr "Vektorsko oblikovanje"
+
+#: ../data/toc.xml.in.h:143
+msgid "Video"
+msgstr "Video"
+
+#: ../data/toc.xml.in.h:144
+msgid "Video Conference"
+msgstr "Video konference"
+
+#. Translators: This is a menu title for graphics viewing applications
+#: ../data/toc.xml.in.h:146
+msgid "Viewer"
+msgstr "Pregledovalnik"
+
+#: ../data/toc.xml.in.h:147
+msgid "Web Browser"
+msgstr "Spletni brskalnik"
+
+#: ../data/toc.xml.in.h:148
+msgid "Web Development"
+msgstr "Razvoj spletišča"
+
+#: ../data/toc.xml.in.h:149
+msgid "Welcome to the GNOME Help Browser"
+msgstr "Dobrodošli v GNOME brskalniku pomoči"
+
+#: ../data/toc.xml.in.h:150
+msgid "Word Processors"
+msgstr "Pisarniški urejevalniki besedil"
+
+#: ../libyelp/yelp-bz2-decompressor.c:146
+#: ../libyelp/yelp-lzma-decompressor.c:155
+msgid "Invalid compressed data"
+msgstr "Neveljavni skrčeni podatki"
+
+#: ../libyelp/yelp-bz2-decompressor.c:152
+#: ../libyelp/yelp-lzma-decompressor.c:161
+msgid "Not enough memory"
+msgstr "Ni dovolj pomnilnika"
+
+#: ../libyelp/yelp-docbook-document.c:264
+#: ../libyelp/yelp-info-document.c:233
+#: ../libyelp/yelp-mallard-document.c:254
+#: ../libyelp/yelp-mallard-document.c:391
+#, c-format
+msgid "The page ‘%s’ was not found in the document ‘%s’."
+msgstr "Strani ‘%s’ ni mogoče najti v dokumentu %s."
+
+#: ../libyelp/yelp-docbook-document.c:298
+#: ../libyelp/yelp-info-document.c:366
+#, c-format
+msgid "The file does not exist."
+msgstr "Datoteka ne obstaja."
+
+#: ../libyelp/yelp-docbook-document.c:308
+#: ../libyelp/yelp-info-document.c:376
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "Datoteka ‘%s’ ne obstaja."
+
+#: ../libyelp/yelp-docbook-document.c:323
+#, c-format
+msgid "The file ‘%s’ could not be parsed because it is not a well-formed XML document."
+msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni pravilnem XML zapisu."
+
+#: ../libyelp/yelp-docbook-document.c:336
+#, c-format
+msgid "The file ‘%s’ could not be parsed because one or more of its included files is not a well-formed XML document."
+msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilnem XML zapisu."
+
+#: ../libyelp/yelp-docbook-document.c:720
+msgid "Unknown"
+msgstr "Neznano"
+
+#: ../libyelp/yelp-docbook-document.c:781
+#: ../libyelp/yelp-info-document.c:309
+#, c-format
+msgid "The requested page was not found in the document ‘%s’."
+msgstr "Zahtevane strani ni mogoče najti v dokumentu ‘%s’."
+
+#: ../libyelp/yelp-error.c:33
+#, c-format
+msgid "An unknown error occurred."
+msgstr "Prišlo je do neznane napake."
+
+#: ../libyelp/yelp-info-document.c:391
+#, c-format
+msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu info."
+
+#: ../libyelp/yelp-location-entry.c:279
+msgid "Description Column"
+msgstr "Stolpec opisa"
+
+#: ../libyelp/yelp-location-entry.c:280
+msgid "A column in the model to get descriptions from"
+msgstr "Stolpec modela, iz katerega naj bodo pridobljeni nizi"
+
+#: ../libyelp/yelp-location-entry.c:295
+msgid "Icon Column"
+msgstr "Stolpec ikone"
+
+#: ../libyelp/yelp-location-entry.c:296
+msgid "A column in the model to get icon names from"
+msgstr "Stolpec iz katerega naj se pridobijo imena ikon"
+
+#: ../libyelp/yelp-location-entry.c:311
+msgid "Flags Column"
+msgstr "Stolpec zastavic"
+
+#: ../libyelp/yelp-location-entry.c:312
+msgid "A column in the model with YelpLocationEntryFlags flags"
+msgstr "Stolpec z zastavicami YelpLocationEntryFlags"
+
+#: ../libyelp/yelp-location-entry.c:328
+msgid "Enable Search"
+msgstr "Omogoči iskanje"
+
+#: ../libyelp/yelp-location-entry.c:329
+msgid "Whether the location entry can be used as a search field"
+msgstr "Ali je vnos mesta mogoče uporabiti v polju iskanja"
+
+#: ../libyelp/yelp-mallard-document.c:294
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "Mapa ‘%s’ ne obstaja."
+
+#: ../libyelp/yelp-settings.c:146
+msgid "GtkSettings"
+msgstr "GtkNastavitve"
+
+#: ../libyelp/yelp-settings.c:147
+msgid "A GtkSettings object to get settings from"
+msgstr "Predmet GtkSettings iz katerega naj se pridobijo nastavitve"
+
+#: ../libyelp/yelp-settings.c:155
+msgid "GtkIconTheme"
+msgstr "GtkIconTheme"
+
+#: ../libyelp/yelp-settings.c:156
+msgid "A GtkIconTheme object to get icons from"
+msgstr "Predmet GtkIconTheme iz katerega naj se pridobijo ikone"
+
+#: ../libyelp/yelp-settings.c:164
+msgid "Font Adjustment"
+msgstr "Prilagajanje pisave"
+
+#: ../libyelp/yelp-settings.c:165
+msgid "A size adjustment to add to font sizes"
+msgstr "Prilagoditev velikosti za prilagajanje velikosti pisave"
+
+#: ../libyelp/yelp-settings.c:173
+msgid "Show Text Cursor"
+msgstr "Pokaži kazalnik besedila"
+
+#: ../libyelp/yelp-settings.c:174
+msgid "Show the text cursor or caret for accessibile navigation"
+msgstr "Pokaži kazalnik besedila za dostopno upravljanje"
+
+#: ../libyelp/yelp-settings.c:182
+msgid "Editor Mode"
+msgstr "Način urejevalnika"
+
+#: ../libyelp/yelp-settings.c:183
+msgid "Enable features useful to editors"
+msgstr "Omogoči zmožnosti za urejevalnik"
+
+#: ../libyelp/yelp-transform.c:171
+msgid "XSLT Stylesheet"
+msgstr "Slogovna predloga XSLT"
+
+#: ../libyelp/yelp-transform.c:172
+msgid "The location of the XSLT stylesheet"
+msgstr "Mesto XSLT slogovne predloge"
+
+#: ../libyelp/yelp-transform.c:379
+#: ../libyelp/yelp-transform.c:394
+#, c-format
+msgid "The XSLT stylesheet ‘%s’ is either missing or not valid."
+msgstr "Slogovna predloga XSLT ‘%s’ ne obstaja ali pa ni zapisana v veljavnem zapisu."
+
+#: ../libyelp/yelp-transform.c:528
+msgid "No href attribute found on yelp:document\n"
+msgstr "Ni mogoče najti atributa href v yelp:dokument\n"
+
+#: ../libyelp/yelp-transform.c:543
+msgid "Out of memory"
+msgstr "Primanjkuje pomnilnika"
+
+#: ../libyelp/yelp-view.c:94
+msgid "_Print..."
+msgstr "Na_tisni ..."
+
+#: ../libyelp/yelp-view.c:99
+msgid "_Back"
+msgstr "Naza_j"
+
+#: ../libyelp/yelp-view.c:104
+msgid "_Forward"
+msgstr "_Naprej"
+
+#: ../libyelp/yelp-view.c:109
+msgid "_Previous Page"
+msgstr "_Predhodna stran"
+
+#: ../libyelp/yelp-view.c:114
+msgid "_Next Page"
+msgstr "_Naslednja stran"
+
+#: ../libyelp/yelp-view.c:317
+msgid "Yelp URI"
+msgstr "Naslov URI Yelp"
+
+#: ../libyelp/yelp-view.c:318
+msgid "A YelpUri with the current location"
+msgstr "Yelp naslov URI s trenutnim mestom"
+
+#: ../libyelp/yelp-view.c:326
+msgid "Loading State"
+msgstr "Stanje nalaganja"
+
+#: ../libyelp/yelp-view.c:327
+msgid "The loading state of the view"
+msgstr "Stanje nalaganja pogleda"
+
+#: ../libyelp/yelp-view.c:336
+msgid "Page ID"
+msgstr "ID strani"
+
+#: ../libyelp/yelp-view.c:337
+msgid "The ID of the root page of the page being viewed"
+msgstr "ID korenske strani prikazane strani"
+
+#: ../libyelp/yelp-view.c:345
+msgid "Root Title"
+msgstr "Naslov korena"
+
+#: ../libyelp/yelp-view.c:346
+msgid "The title of the root page of the page being viewed"
+msgstr "Naslov korenske strani prikazane strani"
+
+#: ../libyelp/yelp-view.c:354
+msgid "Page Title"
+msgstr "Naslov strani"
+
+#: ../libyelp/yelp-view.c:355
+msgid "The title of the page being viewed"
+msgstr "Naslov prikazane strani"
+
+#: ../libyelp/yelp-view.c:363
+msgid "Page Description"
+msgstr "Opis strani"
+
+#: ../libyelp/yelp-view.c:364
+msgid "The description of the page being viewed"
+msgstr "Opis prikazane strani"
+
+#: ../libyelp/yelp-view.c:372
+msgid "Page Icon"
+msgstr "Ikona strani"
+
+#: ../libyelp/yelp-view.c:373
+msgid "The icon of the page being viewed"
+msgstr "Ikona trenutne strani"
+
+#: ../libyelp/yelp-view.c:712
+#, c-format
+msgid "Could not load a document for ‘%s’"
+msgstr "Ni mogoče naložiti dokumenta za ‘%s’"
+
+#: ../libyelp/yelp-view.c:718
+#, c-format
+msgid "Could not load a document"
+msgstr "Ni mogoče naložiti dokumenta"
+
+#: ../libyelp/yelp-view.c:785
+msgid "Not Found"
+msgstr "Ni mogoče najti"
+
+#: ../libyelp/yelp-view.c:788
+msgid "Cannot Read"
+msgstr "Ni mogoče brati"
+
+#: ../libyelp/yelp-view.c:794
+msgid "Unknown Error"
+msgstr "Neznana napaka"
+
+#: ../libyelp/yelp-view.c:885
+#, c-format
+msgid "The URI ‘%s’ does point to a valid page."
+msgstr "Naslov URI ‘%s’ ni povezan z veljavno stranjo."
+
+#: ../libyelp/yelp-view.c:893
+#, c-format
+msgid "The URI ‘%s’ could not be parsed."
+msgstr "Naslova URI ‘%s’ ni mogoče razčleniti"
+
+#: ../src/yelp-application.c:55
+msgid "Turn on editor mode"
+msgstr "Omogoči urejevalni način"
+
+#: ../src/yelp-application.c:106
+msgid "_Larger Text"
+msgstr "_Večje besedilo"
+
+#: ../src/yelp-application.c:108
+msgid "Increase the size of the text"
+msgstr "Povečaj velikost besedila"
+
+#: ../src/yelp-application.c:111
+msgid "_Smaller Text"
+msgstr "_Manjše besedilo"
+
+#: ../src/yelp-application.c:113
+msgid "Descrease the size of the text"
+msgstr "Pomanjšaj velikost besedila"
+
+#: ../src/yelp-application.c:221
+msgid "Show Text _Cursor"
+msgstr "Pokaži _kazalnik besedila"
+
+#: ../src/yelp-application.c:297
+#: ../src/yelp-window.c:1475
+#: ../yelp.desktop.in.in.h:2
+msgid "Help"
+msgstr "Pomoč"
+
+#: ../src/yelp-application.c:547
+msgid "You do not have PackageKit installed. Package installation links require PackageKit."
+msgstr "PackageKit ni nameščen. Povezave za nameščanje zahtevajo paket PackageKit."
+
+#: ../src/yelp-window.c:254
+msgid "_Page"
+msgstr "_Stran"
+
+#: ../src/yelp-window.c:255
+msgid "_View"
+msgstr "_Pogled"
+
+#: ../src/yelp-window.c:256
+msgid "_Go"
+msgstr "Po_jdi"
+
+#: ../src/yelp-window.c:257
+msgid "_Bookmarks"
+msgstr "_Zaznamki"
+
+#: ../src/yelp-window.c:260
+msgid "_New Window"
+msgstr "_Novo okno"
+
+#: ../src/yelp-window.c:265
+msgid "_Close"
+msgstr "_Zapri"
+
+#: ../src/yelp-window.c:270
+msgid "_Add Bookmark"
+msgstr "_Dodaj zaznamek"
+
+#: ../src/yelp-window.c:275
+msgid "Find in Page..."
+msgstr "Najdi na strani ..."
+
+#: ../src/yelp-window.c:280
+#: ../src/yelp-window.c:497
+msgid "Search..."
+msgstr "Poišči ..."
+
+#: ../src/yelp-window.c:285
+msgid "Open Location"
+msgstr "Odpri mesto"
+
+#: ../src/yelp-window.c:312
+msgid "Application"
+msgstr "Program"
+
+#: ../src/yelp-window.c:313
+msgid "A YelpApplication instance that controls this window"
+msgstr "Primerek YelpApplication, ki nadzira to okno"
+
+#: ../src/yelp-window.c:1096
+#, c-format
+msgid "%i match"
+msgid_plural "%i matches"
+msgstr[0] "%i zadetkov"
+msgstr[1] "%i zadetek"
+msgstr[2] "%i zadetka"
+msgstr[3] "%i zadetki"
+
+#: ../src/yelp-window.c:1121
+msgid "No matches"
+msgstr "Ni zadetkov"
+
+#: ../src/yelp-window.c:1418
+msgid "Loading"
+msgstr "Nalaganje"
+
+#: ../yelp.desktop.in.in.h:1
+msgid "Get help with GNOME"
+msgstr "Iskanje pomoči namizja GNOME"
+
+#~ msgid ""
+#~ "The file ‘%s’ could not be read and decoded. The file may be compressed "
+#~ "in an unsupported format."
+#~ msgstr ""
+#~ "Datoteke ‘%s’ ni mogoče prebrati in dekodirati. Datoteka je morda skrčena "
+#~ "v arhivu nepodprte vrste."
+#~ msgid "File is not a valid .desktop file"
+#~ msgstr "Datoteka ni veljavna .desktop datoteka"
+#~ msgid "Unrecognized desktop file Version '%s'"
+#~ msgstr "Neznana različica datoteke namizja '%s'"
+#~ msgid "Starting %s"
+#~ msgstr "Zaganjanje %s"
+#~ msgid "Application does not accept documents on command line"
+#~ msgstr "Program ne omogoča sprejemanja dokumentov preko ukazne vrstice"
+#~ msgid "Unrecognized launch option: %d"
+#~ msgstr "Nepoznana možnost zagona: %d"
+#~ msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+#~ msgstr ""
+#~ "Ni mogoče poslati naslova URI dokumenta na vnos 'Vrsta=Povezava' predmeta "
+#~ "namizja"
+#~ msgid "Not a launchable item"
+#~ msgstr "Predmet ni zagonljiv"
+#~ msgid "Disable connection to session manager"
+#~ msgstr "Onemogoči povezavo z upravljalnikom seje"
+#~ msgid "Specify file containing saved configuration"
+#~ msgstr "Določitev datoteke s shranjenimi nastavitvami"
+#~ msgid "FILE"
+#~ msgstr "DATOTEKA"
+#~ msgid "Specify session management ID"
+#~ msgstr "Določi ID upravljanja seje"
+#~ msgid "ID"
+#~ msgstr "ID"
+#~ msgid "Session management options:"
+#~ msgstr "Možnosti upravljanja seje:"
+#~ msgid "Show session management options"
+#~ msgstr "Pokaži možnosti upravljanja seje"
+#~ msgid "Page not found"
+#~ msgstr "Strani ni mogoče najti"
+#~ msgid "The page %s was not found in the document %s."
+#~ msgstr "Strani %s v dokumentu %s ni mogoče najti."
+#~ msgid "The requested page was not found in the document %s."
+#~ msgstr "Zahtevane strani ni mogoče najti v dokumentu %s."
+#~ msgid "File not found"
+#~ msgstr "Datoteke ni mogoče najti"
+#~ msgid "Could not parse file"
+#~ msgstr "Ni mogoče razčleniti datoteke"
+#~ msgid "Could Not Read File"
+#~ msgstr "Ni mogoče prebrati dokumenta"
+#~ msgid "No information is available about this error."
+#~ msgstr "Podrobnosti o napaki niso na voljo."
+#~ msgid "Use a private session"
+#~ msgstr "Uporabi osebno sejo"
+#~ msgid "Define which cache directory to use"
+#~ msgstr "Določitev predpomnilniškega imenika za uporabo"
+#~ msgid " GNOME Help Browser"
+#~ msgstr "GNOME brskalnik pomoči"
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed because it is not a well-formed man "
+#~ "page."
+#~ msgstr ""
+#~ "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu "
+#~ "man strani."
+#~ msgid "Preparing to print"
+#~ msgstr "Priprava na tiskanje"
+#~ msgid "Printing is not supported on this printer"
+#~ msgstr "Tiskanje s tem tiskalnikom ni podprto"
+#~ msgid "Printer %s does not support postscript printing."
+#~ msgstr "Tiskalnik %s ne podpira postscript tiskanja."
+#~ msgid "Waiting to print"
+#~ msgstr "Čakanje na tiskanje"
+#~ msgid "An error occurred while printing"
+#~ msgstr "Prišlo je do napake med tiskanjem"
+#~ msgid "It was not possible to print your document: %s"
+#~ msgstr "Dokumenta ni bilo mogoče natisniti: %s"
+#~ msgid "the GNOME Support Forums"
+#~ msgstr "GNOME podporni forumi"
+#~ msgid "No results for \"%s\""
+#~ msgstr "Ni zadetkov za \"%s\""
+#~ msgid ""
+#~ "Try using different words to describe the problem you're having or the "
+#~ "topic you want help with."
+#~ msgstr ""
+#~ "Poskusite uporabiti drugačne besede za opis vašega problema ali teme, za "
+#~ "katero potrebujete pomoč."
+#~ msgid "Search results for \"%s\""
+#~ msgstr "Iskalni zadetki za \"%s\""
+#~ msgid "Repeat the search online at %s"
+#~ msgstr "Ponovi iskanje preko povezave na %s"
+#~ msgid ""
+#~ "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:"
+#~ "doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:"
+#~ "when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:"
+#~ "this:to:what:where:who:will:with:won't:wont:why:work:working:works"
+#~ msgstr "da:od:ne:k:kot:h:o:in:ali:to:tisto:tisti:tista"
+#~ msgid "re"
+#~ msgstr "NULL"
+#~ msgid "ers:er:ing:es:s:'s"
+#~ msgstr "NULL"
+#~ msgid "No Comment"
+#~ msgstr "Ni opomb"
+#~ msgid "Search could not be processed"
+#~ msgstr "Ni mogoče izvesti iskanja"
+#~ msgid "The requested search could not be processed."
+#~ msgstr "Iskalnega niza ni mogoče izvesti."
+#~ msgid "Cannot process the search"
+#~ msgstr "Ni mogoče izvesti iskanja"
+#~ msgid "The search processor returned invalid results"
+#~ msgstr "Iskalnik je vrnil neveljavne rezultate"
+#~ msgid "The page %s was not found in the TOC."
+#~ msgstr "Strani %s ni mogoče najti v kazalu."
+#~ msgid "The requested page was not found in the TOC."
+#~ msgstr "Zahtevane stran ni mogoče najti v kazalu."
+#~ msgid ""
+#~ "The TOC file could not be parsed because it is not a well-formed XML "
+#~ "document."
+#~ msgstr ""
+#~ "Datoteke kazala ni mogoče razčleniti, ker ni pravilno oblikovana v zapisu "
+#~ "XML."
+#~ msgid "Bookmarks"
+#~ msgstr "Zaznamki"
+#~ msgid "Re_name"
+#~ msgstr "Preime_nuj"
+#~ msgid "_Bookmarks:"
+#~ msgstr "_Zaznamki:"
+#~ msgid "Add Bookmark"
+#~ msgstr "Dodaj zaznamek"
+#~ msgid "_Title:"
+#~ msgstr "_Naslov:"
+#~ msgid "_Location:"
+#~ msgstr "_Mesto:"
+#~ msgid "Fonts"
+#~ msgstr "Pisave"
+#~ msgid "Preferences"
+#~ msgstr "Možnosti"
+#~ msgid "_Browse with caret"
+#~ msgstr "_Brskanje s kazalko"
+#~ msgid "_Fixed width:"
+#~ msgstr "_Določena širina:"
+#~ msgid "_Use system fonts"
+#~ msgstr "_Uporabi sistemske pisave"
+#~ msgid "_Variable width:"
+#~ msgstr "_Spremenljiva širina:"
+#~ msgid "Font for fixed text"
+#~ msgstr "Pisava za besedilo določene širine"
+#~ msgid "Font for text"
+#~ msgstr "Pisava za besedilo"
+#~ msgid "Font for text with fixed width."
+#~ msgstr "Pisava za besedilo z določeno širino."
+#~ msgid "Font for text with variable width."
+#~ msgstr "Pisava za besedilo s spremenljivo širino."
+#~ msgid "Use a keyboard-controllable caret when viewing pages."
+#~ msgstr "Uporabi s tipkovnico nadzorovano kazalko med ogledom strani."
+#~ msgid "Use caret"
+#~ msgstr "Uporabi kazalko"
+#~ msgid "Use system fonts"
+#~ msgstr "Uporabi sistemske pisave"
+#~ msgid "Use the default fonts set for the system."
+#~ msgstr "Uporabi privzete pisave za sistem."
+#~ msgid "Open Bookmark in New Window"
+#~ msgstr "Odpri zaznamek v novem oknu"
+#~ msgid "Rename Bookmark"
+#~ msgstr "Preimenuj zaznamek"
+#~ msgid "Remove Bookmark"
+#~ msgstr "Odstrani zaznamek"
+#~ msgid "A bookmark titled %s already exists for this page."
+#~ msgstr "Zaznamek z imenom %s za to stran že obstaja."
+#~ msgid "A bookmark titled <b>%s</b> already exists for this page."
+#~ msgstr "Zaznamek z imenom <b>%s</b> za to stran že obstaja."
+#~ msgid "Help Topics"
+#~ msgstr "Teme pomoči"
+#~ msgid "Document Sections"
+#~ msgstr "Odseki dokumentov"
+#~ msgid "Directory not found"
+#~ msgstr "Mape ni mogoče najti"
+#~ msgid "Broken Transformation"
+#~ msgstr "Pokvarjena pretvorba"
+#~ msgid ""
+#~ "An unknown error occurred while attempting to transform the document."
+#~ msgstr "Prišlo je do neznane napake med poskusom pretvorbe dokumenta."
+#~ msgid "_File"
+#~ msgstr "_Datoteka"
+#~ msgid "_Edit"
+#~ msgstr "_Uredi"
+#~ msgid "_Help"
+#~ msgstr "Pomo_č"
+#~ msgid "Print This Document ..."
+#~ msgstr "Natisni dokument ..."
+#~ msgid "About This Document"
+#~ msgstr "O dokumentu"
+#~ msgid "Open _Location"
+#~ msgstr "Odpri _mesto"
+#~ msgid "_Close Window"
+#~ msgstr "_Zapri okno"
+#~ msgid "_Copy"
+#~ msgstr "_Kopiraj"
+#~ msgid "_Select All"
+#~ msgstr "_Izberi vse"
+#~ msgid "_Find..."
+#~ msgstr "_Najdi ..."
+#~ msgid "Find Pre_vious"
+#~ msgstr "Najdi _predhodno"
+#~ msgid "Find previous occurrence of the word or phrase"
+#~ msgstr "Najdi predhodno ponovitev besede ali rekla"
+#~ msgid "Find Ne_xt"
+#~ msgstr "Najdi na_slednje"
+#~ msgid "Find next occurrence of the word or phrase"
+#~ msgstr "Najdi naslednjo ponovitev besede ali rekla"
+#~ msgid "_Preferences"
+#~ msgstr "_Možnosti"
+#~ msgid "_Reload"
+#~ msgstr "_Ponovno naloži"
+#~ msgid "Show previous page in history"
+#~ msgstr "Pokaži predhodno stran zgodovine"
+#~ msgid "Show next page in history"
+#~ msgstr "Pokaži naslednjo stran v zgodovini"
+#~ msgid "_Help Topics"
+#~ msgstr "_Teme pomoči"
+#~ msgid "Go to the listing of help topics"
+#~ msgstr "Pojdi na seznam pomoči"
+#~ msgid "_Previous Section"
+#~ msgstr "_Predhodni odsek"
+#~ msgid "_Next Section"
+#~ msgstr "_Naslednji odsek"
+#~ msgid "_Contents"
+#~ msgstr "_Vsebina"
+#~ msgid "_Edit Bookmarks..."
+#~ msgstr "_Uredi zaznamke ..."
+#~ msgid "_Open Link"
+#~ msgstr "_Odpri povezavo"
+#~ msgid "Open Link in _New Window"
+#~ msgstr "Odpri povezavo v _novem oknu"
+#~ msgid "_Copy Link Address"
+#~ msgstr "_Kopiraj naslov povezave"
+#~ msgid "Help On this application"
+#~ msgstr "Pomoč za delo s programom"
+#~ msgid "_About"
+#~ msgstr "_O programu"
+#~ msgid "Copy _Email Address"
+#~ msgstr "Kopiraj _elektronski naslov"
+#~ msgid "Help Browser"
+#~ msgstr "Brskalnik pomoči"
+#~ msgid "Unknown Page"
+#~ msgstr "Neznana stran"
+#~ msgid "The requested URI \"%s\" is invalid"
+#~ msgstr "Zahtevan naslov URI \"%s\" ni veljaven"
+#~ msgid "Unable to load page"
+#~ msgstr "Ni mogoče naložiti strani"
+#~ msgid "Search for other documentation"
+#~ msgstr "Iskanje druge dokumentacije"
+#~ msgid "Cannot create search component"
+#~ msgstr "Ni mogoče ustvariti iskalnega niza"
+#~ msgid "Fin_d:"
+#~ msgstr "_Najdi:"
+#~ msgid "Find _Previous"
+#~ msgstr "Najdi _predhodne"
+#~ msgid "Find _Next"
+#~ msgstr "Najdi na_slednje"
+#~ msgid "Phrase not found"
+#~ msgstr "Rekla ni mogoče najti"
+#~ msgid ""
+#~ "The file ‘%s’ could not be read. This file might be missing, or you "
+#~ "might not have permissions to read it."
+#~ msgstr ""
+#~ "Datoteke ‘%s’ ni mogoče prebrati. Datoteka ne obstaja ali pa ni ustreznih "
+#~ "dovoljenj za branje."
+#~ msgid "translator-credits"
+#~ msgstr "Matej Urbančič <mateju@svn.gnome.org>"
+#~ msgid "A documentation browser and viewer for the Gnome Desktop."
+#~ msgstr "Pregledovalnik dokumentacije namizja Gnome."
+#~ msgid "<b>Accessibility</b>"
+#~ msgstr "<b>Dostopnost</b>"
+#~ msgid "<b>Fonts</b>"
+#~ msgstr "<b>Pisave</b>"
+#~ msgid "C_ase sensitive"
+#~ msgstr "Velike in m_ale črke"
+#~ msgid "Find"
+#~ msgstr "Najdi"
+#~ msgid "_Find:"
+#~ msgstr "_Poišči:"
+#~ msgid "_Wrap around"
+#~ msgstr "_Prelom vrstic"
+#~ msgid "Error executing \"gnome-open\""
+#~ msgstr "Napaka izvedbe \"gnome-open\""
+
diff --git a/po/ug.po b/po/ug.po
index 180646f8..966db25d 100644
--- a/po/ug.po
+++ b/po/ug.po
@@ -2,712 +2,1809 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Abduxukur Abdurixit <abduxukur.abdurixit@t-systems.ch>, 2005
+# Gheyret T.Kenji <gheyret@gmail.com>, 2010
#
msgid ""
msgstr ""
"Project-Id-Version: yelp 2.10\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-04-11 16:25+0200\n"
-"PO-Revision-Date: \n"
-"Last-Translator: Abduxukur Abdurixit <abduxukur.abdurixit@t-systems.ch>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=yelp&component=general\n"
+"POT-Creation-Date: 2010-04-26 15:25+0000\n"
+"PO-Revision-Date: 2010-04-23 01:19+0000\n"
+"Last-Translator: Sebastien Bacher <seb128@ubuntu.com>\n"
"Language-Team: GNOME Uighur Translation Project <gnome-uighur@yahoogroups."
"com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-04-27 05:28+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
-#: data/man.xml.in.h:1 data/toc.xml.in.h:4
+#: ../data/info.xml.in.h:1
+msgid "GNU Info Pages"
+msgstr "GNU ئۇچۇر بەتلىرى"
+
+#: ../data/info.xml.in.h:2
+msgid "Traditional command line help (info)"
+msgstr "ئەنئەنىۋى بۇيرۇق قۇرى ياردىمى (ئۇچۇرى)"
+
+#: ../data/man.xml.in.h:1
msgid "Applications"
-msgstr "قوللانما پىروگراممىلىرى"
+msgstr "پروگراممىلار"
+
+#: ../data/man.xml.in.h:2
+msgid "BLT Functions"
+msgstr "BTL فۇنكسىيىلىرى"
-#: data/man.xml.in.h:2
+#: ../data/man.xml.in.h:3
msgid "Configuration Files"
-msgstr "قۇرۇلما ھۆججەتلىرى"
+msgstr "سەپلىمە ھۆججەتلىرى"
-#: data/man.xml.in.h:3
+#: ../data/man.xml.in.h:4
+msgid "Curses Functions"
+msgstr "Curses فۇنكسىيىسى"
+
+#: ../data/man.xml.in.h:5 ../data/toc.xml.in.h:35
msgid "Development"
msgstr "تەرەققىيات"
-#: data/man.xml.in.h:4
+#: ../data/man.xml.in.h:6
msgid "FORTRAN Functions"
-msgstr "فۇنكسىيەلىرى FORTRAN"
+msgstr "FORTRAN فۇنكسىيىلىرى"
-#: data/man.xml.in.h:5 data/toc.xml.in.h:7
+#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:56
msgid "Games"
msgstr "ئويۇنلار"
-#: data/man.xml.in.h:6
+#: ../data/man.xml.in.h:8
msgid "Hardware Devices"
msgstr "قاتتىق دېتال زاپچاسلىرى"
-#: data/man.xml.in.h:7
+#: ../data/man.xml.in.h:9
msgid "Kernel Routines"
-msgstr "Kernel Routines"
+msgstr "Kernel فۇنكسىيىلىرى"
-#: data/man.xml.in.h:8
-msgid "Library Functions"
-msgstr "كۈتۈپخانا فۇنكىسىيەلىرى"
+#: ../data/man.xml.in.h:10
+msgid "Manual Pages"
+msgstr "قوللانما بەتلىرى"
-#: data/man.xml.in.h:9 src/yelp-toc-pager.c:787
-msgid "Man Pages"
-msgstr "بەتلىرى Man "
+#: ../data/man.xml.in.h:11
+msgid "Network Audio Sound Functions"
+msgstr "توردىكى ئۈن ئاۋاز فۇنكسىيىسى"
-#: data/man.xml.in.h:10
+#: ../data/man.xml.in.h:12
msgid "OpenSSL Applications"
-msgstr "قوللانما پىروگراممىلىرى OpenSSL"
+msgstr "OpenSSL پروگراممىلىرى"
-#: data/man.xml.in.h:11
+#: ../data/man.xml.in.h:13
msgid "OpenSSL Configuration"
-msgstr "|نىڭ قۇرۇلمىسى OpenSSL"
+msgstr "OpenSSLنىڭ سەپلىمىسى"
+
+#: ../data/man.xml.in.h:14
+msgid "OpenSSL Functions"
+msgstr "OpenSSL نىڭ فۇنكسىيىلىرى"
-#: data/man.xml.in.h:12
+#: ../data/man.xml.in.h:15
msgid "OpenSSL Overviews"
-msgstr "نىڭ قىسقىچە تونۇشتۇرىلىشى OpenSSL"
+msgstr "OpenSSL نىڭ قىسقىچە تونۇشتۇرۇلۇشى"
-#: data/man.xml.in.h:13
+#: ../data/man.xml.in.h:16
msgid "Overviews"
-msgstr " قىسقىچە تونۇشتۇرۇش"
+msgstr "قىسقىچە تونۇشتۇرۇش"
+
+#: ../data/man.xml.in.h:17
+msgid "POSIX Functions"
+msgstr "POSIX نىڭ فۇنكسىيىلىرى"
-#: data/man.xml.in.h:14
+#: ../data/man.xml.in.h:18
+msgid "POSIX Headers"
+msgstr "POSIX بېشى"
+
+#: ../data/man.xml.in.h:19
msgid "Perl Functions"
-msgstr "فۇنكىسىيەلىرى Perl"
+msgstr "Perl فۇنكسىيىلىرى"
-#: data/man.xml.in.h:15
+#: ../data/man.xml.in.h:20
msgid "Qt Functions"
-msgstr "فۇنكىسىيەلىرى Qt"
+msgstr "Qt فۇنكسىيىلىرى"
+
+#: ../data/man.xml.in.h:21
+msgid "Readline Functions"
+msgstr "Readline فۇنكسىيىسى"
+
+#: ../data/man.xml.in.h:22
+msgid "Section 0p"
+msgstr "0p بۆلەك"
+
+#: ../data/man.xml.in.h:23
+msgid "Section 1m"
+msgstr "1m بۆلەك"
+
+#: ../data/man.xml.in.h:24
+msgid "Section 1ssl"
+msgstr "1ssl بۆلەك"
+
+#: ../data/man.xml.in.h:25
+msgid "Section 1x"
+msgstr "1x بۆلەك"
+
+#: ../data/man.xml.in.h:26
+msgid "Section 2"
+msgstr "2 بۆلەك"
+
+#: ../data/man.xml.in.h:27
+msgid "Section 3blt"
+msgstr "3blt بۆلەك"
+
+#: ../data/man.xml.in.h:28
+msgid "Section 3f"
+msgstr "3f بۆلەك"
+
+#: ../data/man.xml.in.h:29
+msgid "Section 3nas"
+msgstr "3nas بۆلەك"
+
+#: ../data/man.xml.in.h:30
+msgid "Section 3p"
+msgstr "3p بۆلەك"
+
+#: ../data/man.xml.in.h:31
+msgid "Section 3qt"
+msgstr "3qt بۆلەك"
+
+#: ../data/man.xml.in.h:32
+msgid "Section 3readline"
+msgstr "3readline بۆلەك"
+
+#: ../data/man.xml.in.h:33
+msgid "Section 3ssl"
+msgstr "3ssl بۆلەك"
+
+#: ../data/man.xml.in.h:34
+msgid "Section 3tiff"
+msgstr "3tiff بۆلەك"
+
+#: ../data/man.xml.in.h:35
+msgid "Section 4"
+msgstr "4 بۆلەك"
-#: data/man.xml.in.h:16
+#: ../data/man.xml.in.h:36
+msgid "Section 4x"
+msgstr "4x بۆلەك"
+
+#: ../data/man.xml.in.h:37
+msgid "Section 5"
+msgstr "5 بۆلەك"
+
+#: ../data/man.xml.in.h:38
+msgid "Section 5ssl"
+msgstr "5ssl بۆلەك"
+
+#: ../data/man.xml.in.h:39
+msgid "Section 5x"
+msgstr "5x بۆلەك"
+
+#: ../data/man.xml.in.h:40
+msgid "Section 6"
+msgstr "6 بۆلەك"
+
+#: ../data/man.xml.in.h:41
+msgid "Section 6x"
+msgstr "6x بۆلەك"
+
+#: ../data/man.xml.in.h:42
+msgid "Section 7ssl"
+msgstr "7ssl بۆلەك"
+
+#: ../data/man.xml.in.h:43
+msgid "Section 7x"
+msgstr "7x بۆلەك"
+
+#: ../data/man.xml.in.h:44
+msgid "Section 9"
+msgstr "9 بۆلەك"
+
+#: ../data/man.xml.in.h:45
+msgid "Sections 1, 1p, 1g and 1t"
+msgstr "1، 1p، 1g ۋە 1t بۆلەك"
+
+#: ../data/man.xml.in.h:46
+msgid "Sections 3, 3o, and 3t"
+msgstr "3، 3o ۋە 3t بۆلەك"
+
+#: ../data/man.xml.in.h:47
+msgid "Sections 3form and 3menu"
+msgstr "3form ۋە 3menu بۆلەك"
+
+#: ../data/man.xml.in.h:48
+msgid "Sections 3ncurses and 3curses"
+msgstr "3ncurses ۋە 3curses بۆلەك"
+
+#: ../data/man.xml.in.h:49
+msgid "Sections 3pm and 3perl"
+msgstr "3pm ۋە 3perl بۆلەك"
+
+#: ../data/man.xml.in.h:50
+msgid "Sections 3x and 3X11"
+msgstr "3x ۋە 3X11 بۆلەك"
+
+#: ../data/man.xml.in.h:51
+msgid "Sections 7 and 7gcc"
+msgstr "7 ۋە 7gcc بۆلەك"
+
+#: ../data/man.xml.in.h:52
+msgid "Sections 8 and 8l"
+msgstr "8 ۋە 8l بۆلەك"
+
+#: ../data/man.xml.in.h:53
msgid "System Administration"
msgstr "سىستېما باشقۇرۇش"
-#: data/man.xml.in.h:17
+#: ../data/man.xml.in.h:54
msgid "System Calls"
-msgstr "سىستېما يۆتكەپ ئىشلىتىشى"
+msgstr "سىستېما چاقىرىش"
-#: data/man.xml.in.h:18
+#: ../data/man.xml.in.h:55
+msgid "System V Form/Menu Functions"
+msgstr "System V جەدۋەل/تىزىملىك فۇنكسىيىسى"
+
+#: ../data/man.xml.in.h:56
+msgid "TIFF Functions"
+msgstr "TIFF فۇنكسىيىلىرى"
+
+#: ../data/man.xml.in.h:57
msgid "Termcap Applications"
-msgstr "قوللىنىش پىروگراممىلىرى Termcap"
+msgstr "Termcap پروگراممىلىرى"
+
+#: ../data/man.xml.in.h:58
+msgid "Traditional command line help (man)"
+msgstr "ئەنئەنىۋى بۇيرۇق قۇرى ياردىمى (man)"
-#: data/man.xml.in.h:19
+#: ../data/man.xml.in.h:59
msgid "X11 Applications"
-msgstr "قوللىنىش پىروگراممىلىرى X11"
+msgstr "X11 پروگراممىلىرى"
-#: data/man.xml.in.h:20
+#: ../data/man.xml.in.h:60
msgid "X11 Configuration"
-msgstr "قۇرۇلمىسى X11 "
+msgstr "X11 سەپلىمىسى"
-#: data/man.xml.in.h:21
+#: ../data/man.xml.in.h:61
msgid "X11 Devices"
-msgstr "زاپچاسلىرى X11"
+msgstr "ئۈسكۈنىلىرىX11"
-#: data/man.xml.in.h:22
+#: ../data/man.xml.in.h:62
msgid "X11 Functions"
-msgstr "فۇنكسىيەلىرى X11"
+msgstr "X11 فۇنكسىيىلىرى"
-#: data/man.xml.in.h:23
+#: ../data/man.xml.in.h:63
msgid "X11 Games"
-msgstr "ئويۇنلىرى X11"
+msgstr "X11 ئويۇنلىرى"
-#: data/man.xml.in.h:24
+#: ../data/man.xml.in.h:64
msgid "X11 Overviews"
-msgstr "نىڭ قىسقىچە چۈشەندۈرىلىشى X11"
+msgstr "X11 نىڭ قىسقىچە چۈشەندۈرۈلۈشى"
+
+#: ../data/toc.xml.in.h:1
+msgid "2D Graphics"
+msgstr "2D گرافىكلىرى"
+
+#: ../data/toc.xml.in.h:2
+msgid "3D Graphics"
+msgstr "3D گرافىكى"
-#: data/toc.xml.in.h:1
+#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1
msgid "Accessibility"
msgstr "ياردەم ئىقتىدارى"
-#: data/toc.xml.in.h:2
-msgid "Accessories"
-msgstr "قوشۇمچە زاپچاسلار"
+#: ../data/toc.xml.in.h:4
+msgid "Action Games"
+msgstr "ھەرىكەتلىك ئويۇن"
-#: data/toc.xml.in.h:3
-msgid "Administration"
-msgstr "باشقۇرۇش"
+#: ../data/toc.xml.in.h:5
+msgid "Adventure Games"
+msgstr "تەۋەككۈلچىلىك ئويۇنى"
-#: data/toc.xml.in.h:5
+#: ../data/toc.xml.in.h:6
+msgid "Amusement"
+msgstr "كۆڭۈل خۇشلۇقى"
+
+#: ../data/toc.xml.in.h:7
+msgid "Applications for viewing and manipulating graphics"
+msgstr "گرافىك كۆرۈش ۋە بىر تەرەپ قىلىشقا ئىشلىتىدىغان قوللىنىشچان پروگرامما"
+
+#: ../data/toc.xml.in.h:8
+msgid "Applications related to audio and video"
+msgstr "ئۈن ۋە سىنغا باغلىنىشلىق پروگرامما"
+
+#: ../data/toc.xml.in.h:9
+msgid "Applications that teach or aid in learning"
+msgstr "مائارىپ ۋە ئوقۇتۇشتا ياردەمچى قوللىنىشچان پروگرامما"
+
+#: ../data/toc.xml.in.h:10
+msgid "Arcade Games"
+msgstr "Arcade ئويۇنى"
+
+#: ../data/toc.xml.in.h:11
+msgid "Archiving Tools"
+msgstr "ئارخىپ قورالى"
+
+#: ../data/toc.xml.in.h:12
+msgid "Art"
+msgstr "سەنئەت"
+
+#: ../data/toc.xml.in.h:13
+msgid "Artificial Intelligence"
+msgstr "سۈنئىي ئىدراك"
+
+#: ../data/toc.xml.in.h:14
+msgid "Astronomy"
+msgstr "ئاسترونومىيە"
+
+#: ../data/toc.xml.in.h:15
+msgid "Biology"
+msgstr "بىئولوگىيە"
+
+#: ../data/toc.xml.in.h:16
+msgid "Blocks Games"
+msgstr "خىش ئويۇنى"
+
+#: ../data/toc.xml.in.h:17
+msgid "Board Games"
+msgstr "شاھمات تاختىسى ئويۇنى"
+
+#: ../data/toc.xml.in.h:18
+msgid "Building"
+msgstr "قۇرۇلۇش"
+
+#: ../data/toc.xml.in.h:19
+msgid "Calculator"
+msgstr "ھېسابلىغۇچ"
+
+#: ../data/toc.xml.in.h:20
+msgid "Calendar"
+msgstr "يىلنامە"
+
+#: ../data/toc.xml.in.h:21
+msgid "Card Games"
+msgstr "قارتا ئويۇنلىرى"
+
+#: ../data/toc.xml.in.h:22
+msgid "Charting Tools"
+msgstr "سىزمىچىلىق قوراللىرى"
+
+#: ../data/toc.xml.in.h:23
+msgid "Chat"
+msgstr "دىئاگرامما"
+
+#: ../data/toc.xml.in.h:24
+msgid "Chemistry"
+msgstr "خىمىيە"
+
+#: ../data/toc.xml.in.h:25
+msgid "Clocks"
+msgstr "سائەتلەر"
+
+#: ../data/toc.xml.in.h:26
+msgid "Compression Tools"
+msgstr "پرېسلاش پروگراممىلىرى"
+
+#: ../data/toc.xml.in.h:27
+msgid "Computer Science"
+msgstr "كومپيۇتېر ئىلمى"
+
+#: ../data/toc.xml.in.h:28
+msgid "Construction"
+msgstr "قۇرۇلۇش"
+
+#: ../data/toc.xml.in.h:29
+msgid "Contact Management"
+msgstr "ئالاقىلەشكۈچىلەرنى باشقۇرۇش"
+
+#: ../data/toc.xml.in.h:30
+msgid "Data Visualization"
+msgstr "سانلىق مەلۇمات كۆرۈنۈشچانلىقى"
+
+#: ../data/toc.xml.in.h:31
+msgid "Databases"
+msgstr "ساندان"
+
+#: ../data/toc.xml.in.h:32
+msgid "Debuggers"
+msgstr "تەڭشەپ سىناش پروگراممىسى"
+
+#: ../data/toc.xml.in.h:33
+#, fuzzy
msgid "Desktop"
-msgstr "Desktop"
+msgstr "ئۈستەل يۈزى تەڭشىكى"
+
+#: ../data/toc.xml.in.h:34
+msgid "Desktop Settings"
+msgstr "ئۈستەل يۈزى تەڭشىكى"
+
+#: ../data/toc.xml.in.h:36
+msgid "Dialup"
+msgstr "نومۇر بۇراش"
+
+#: ../data/toc.xml.in.h:37
+msgid "Dictionaries"
+msgstr "لۇغەتلەر"
+
+#. Translators: this is a menu title for burning audio and video to dics
+#: ../data/toc.xml.in.h:39
+msgid "Disc Burning"
+msgstr "دىسكا ئويۇش"
+
+#: ../data/toc.xml.in.h:40
+msgid "Economy"
+msgstr "ئىقتىساد"
+
+#: ../data/toc.xml.in.h:41
+msgid "Education"
+msgstr "ئوقۇتۇش"
+
+#: ../data/toc.xml.in.h:42
+msgid "Electricity"
+msgstr "ئېلېكتر"
+
+#: ../data/toc.xml.in.h:43
+msgid "Electronics"
+msgstr "ئېلېكترون ئىلمى"
+
+#: ../data/toc.xml.in.h:44
+msgid "Email Tools"
+msgstr "ئېلخەت قوراللىرى"
+
+#: ../data/toc.xml.in.h:45
+msgid "Emulator"
+msgstr "تەقلىدلەشتۈرگۈچ"
+
+#: ../data/toc.xml.in.h:46
+msgid "Engineering"
+msgstr "ئىنژېنېرلىق ئىلمى"
+
+#: ../data/toc.xml.in.h:47
+msgid "File Manager"
+msgstr "ھۆججەت باشقۇرغۇچ"
+
+#: ../data/toc.xml.in.h:48
+msgid "File Tools"
+msgstr "ھۆججەت قورالى"
+
+#: ../data/toc.xml.in.h:49
+msgid "File Transfer"
+msgstr "ھۆججەت يوللاش"
+
+#: ../data/toc.xml.in.h:50
+msgid "Filesystem"
+msgstr "ھۆججەت سىستېمىسى"
+
+#: ../data/toc.xml.in.h:51
+msgid "Financial Tools"
+msgstr "مالىيە قورالى"
+
+#: ../data/toc.xml.in.h:52
+msgid "Flow Charting Tools"
+msgstr "تەرتىپ دىئاگرامما قورالى"
-#: data/toc.xml.in.h:6
-msgid "Education Applications"
-msgstr "ئوقۇتۇش قوللانما پروگراممىلىرى"
+#: ../data/toc.xml.in.h:53
+msgid "GNOME Applications"
+msgstr "GNOME پروگراممىلىرى"
-#: data/toc.xml.in.h:8
+#: ../data/toc.xml.in.h:54
+msgid "GTK"
+msgstr "GTK"
+
+#: ../data/toc.xml.in.h:55
+msgid "GUI Designers"
+msgstr "ئىشلەتكۈچى كۆرۈنمە يۈز لايىھىلىگۈچى"
+
+#: ../data/toc.xml.in.h:57
+msgid "Generic applications for the GNOME environment"
+msgstr "GNOME مۇھىتىدىكى ئادەتتىكى قوللىنىشچان پروگراممىلار"
+
+#: ../data/toc.xml.in.h:58
+msgid "Generic applications for the KDE environment"
+msgstr "KDE مۇھىتىدىكى ئادەتتىكى پروگراممىلار"
+
+#: ../data/toc.xml.in.h:59
+msgid "Geography"
+msgstr "جۇغراپىيە"
+
+#: ../data/toc.xml.in.h:60
+msgid "Geology"
+msgstr "گېئولوگىيە"
+
+#: ../data/toc.xml.in.h:61
+msgid "Geoscience"
+msgstr "يەر شارى ئىلمى"
+
+#: ../data/toc.xml.in.h:62
msgid "Graphics"
-msgstr "گىرافىكلار"
+msgstr "گرافىكلار"
-#: data/toc.xml.in.h:9 src/yelp-bookmarks.c:391
-msgid "Help Topics"
-msgstr "ياردەم تېمىلىرى"
+#: ../data/toc.xml.in.h:63
+msgid "Guides and manuals for applications that connect to the outside world"
+msgstr "توردىكى پروگرامما قوللانمىسى ۋە ياردىمى"
+
+#: ../data/toc.xml.in.h:64
+msgid "Guides for getting involved in development"
+msgstr "پروگرامما تۈزۈشكە مۇناسىۋەتلىك كۆرسەتمىلەر"
+
+#: ../data/toc.xml.in.h:65
+msgid "Ham Radio"
+msgstr "سىمسىز تېلېگراف ھەۋەسكارلار رادىئوسى"
-#: data/toc.xml.in.h:10
+#: ../data/toc.xml.in.h:66
+msgid "Hardware Settings"
+msgstr "قاتتىق دېتال تەڭشىكى"
+
+#: ../data/toc.xml.in.h:67
+msgid "Have some fun"
+msgstr "خۇشال ئويناڭ"
+
+#: ../data/toc.xml.in.h:68
+msgid "History"
+msgstr "تارىخ"
+
+#: ../data/toc.xml.in.h:69
+msgid "IDEs"
+msgstr "يۈرۈشلەشتۈرۈلگەن ئىجادىيەت مۇھىتلىرى"
+
+#: ../data/toc.xml.in.h:70
+msgid "IRC Clients"
+msgstr "IRC خېرىدارى"
+
+#: ../data/toc.xml.in.h:71
+msgid "Image Processing"
+msgstr "سۈرەتچىلىك"
+
+#: ../data/toc.xml.in.h:72
+msgid "Instant Messaging"
+msgstr "مۇڭداشقۇ"
+
+#: ../data/toc.xml.in.h:73
msgid "Internet"
msgstr "ئىنتېرنېت"
-#: data/toc.xml.in.h:11
-msgid "KDE"
-msgstr "KDE"
+#: ../data/toc.xml.in.h:74
+msgid "Java"
+msgstr "Java"
+
+#: ../data/toc.xml.in.h:75
+msgid "KDE Applications"
+msgstr "KDE قوللىنىشچان پروگراممىلىرى"
+
+#: ../data/toc.xml.in.h:76
+msgid "Kids Games"
+msgstr "بالىلار ئويۇنلىرى"
+
+#: ../data/toc.xml.in.h:77
+msgid ""
+"Learn more about making your system more accessible for a range of "
+"disabilities"
+msgstr ""
+"قانداق قىلغاندا كومپيۇتېرىڭىزنى تېخىمۇ كۆپ مېيىپلەرنىڭ ئىشلىتىشى ھەققىدە "
+"چۈشىنىڭ"
+
+#: ../data/toc.xml.in.h:78
+msgid "Licenses"
+msgstr "ئىجازەتنامىلەر"
+
+#: ../data/toc.xml.in.h:79
+msgid "Literature"
+msgstr "ئەدەبىيات"
+
+#: ../data/toc.xml.in.h:80
+msgid "Logic Games"
+msgstr "لوگىكىلىق ئويۇن"
+
+#: ../data/toc.xml.in.h:81
+msgid "Math"
+msgstr "ماتېماتىكا"
+
+#: ../data/toc.xml.in.h:82
+msgid "Medical Software"
+msgstr "تېببىي يۇمشاق دېتال"
+
+#: ../data/toc.xml.in.h:83
+msgid "Midi"
+msgstr "Midi"
+
+#: ../data/toc.xml.in.h:84
+msgid "Miscellaneous Documentation"
+msgstr "باشقا پۈتۈكلەر"
+
+#: ../data/toc.xml.in.h:85
+msgid "Mixers"
+msgstr "ئاۋاز تەڭشىگۈچ"
+
+#: ../data/toc.xml.in.h:86
+msgid "Monitor"
+msgstr "ئېكران"
+
+#: ../data/toc.xml.in.h:87
+msgid "Motif"
+msgstr "Motif"
-#: data/toc.xml.in.h:12
-msgid "Multimedia"
-msgstr "ناخشا مۇزىكىلار"
+#: ../data/toc.xml.in.h:88
+msgid "Music"
+msgstr "مۇزىكا"
-#: data/toc.xml.in.h:13
-msgid "Office"
-msgstr "ئشخانا"
+#: ../data/toc.xml.in.h:89
+msgid "News"
+msgstr "خەۋەر"
-#: data/toc.xml.in.h:14
-msgid "Other"
-msgstr "باشقىلار"
+#: ../data/toc.xml.in.h:90
+msgid "Numerical Analysis"
+msgstr "سانلىق ئانالىز"
-#: data/toc.xml.in.h:15
+#: ../data/toc.xml.in.h:91
+msgid "OCR"
+msgstr "OCR"
+
+#: ../data/toc.xml.in.h:92
+msgid "Office Applications"
+msgstr "ئىشخانا پروگراممىلىرى"
+
+#: ../data/toc.xml.in.h:93
+msgid "Office applications"
+msgstr "ئىشخانا پروگراممىلىرى"
+
+#: ../data/toc.xml.in.h:94
msgid "Other Documentation"
-msgstr "باشقا ماقالىلار"
+msgstr "باشقا ماقالىلەر"
-#: data/toc.xml.in.h:16
-msgid "Panel Applets"
-msgstr "تاختىسىدىكى كىچىك پىروگراممىلار Desktop"
+#: ../data/toc.xml.in.h:95
+msgid "P2P"
+msgstr "P2P"
-#: data/toc.xml.in.h:17 data/ui/yelp.glade.h:10
-msgid "Preferences"
-msgstr "مايىللىق"
+#: ../data/toc.xml.in.h:96
+msgid "PDA Communication"
+msgstr "PDA ئالاقىسى"
-#: data/toc.xml.in.h:18
-msgid "Programming"
-msgstr "پىروگرامما تۈزەش"
+#: ../data/toc.xml.in.h:97
+msgid "Package Manager"
+msgstr "بوغچا باشقۇرغۇچ"
-#: data/toc.xml.in.h:19
-msgid "Scientific"
-msgstr "ئىلمى"
+#: ../data/toc.xml.in.h:98
+msgid "Parallel Computing"
+msgstr "پاراللېل ھېسابلاش"
-#: data/toc.xml.in.h:20
-msgid "System Tools"
-msgstr "سىستىما قوراللىرى"
+#: ../data/toc.xml.in.h:99
+msgid "Photography"
+msgstr "فوتو سۈرەتچىلىك"
-#: data/toc.xml.in.h:21
-msgid "X Applications"
-msgstr "قوللىنىش پىروگراممىلىرى X"
+#: ../data/toc.xml.in.h:100
+msgid "Physics"
+msgstr "فىزىكا"
-#: data/ui/yelp.glade.h:1
-msgid "<b>Accessibility</b>"
-msgstr "<b>ياردەم قوراللىرى<b>"
+#. Translators: this is a menu title for audio and video players
+#: ../data/toc.xml.in.h:102
+msgid "Players"
+msgstr "ئوينىغۇچى"
-#: data/ui/yelp.glade.h:2
-msgid "<b>Fonts</b>"
-msgstr "<b>:فونتلار<b>"
+#: ../data/toc.xml.in.h:103
+msgid "Presentation Tools"
+msgstr "كۆرسەتمە قورالى"
-#: data/ui/yelp.glade.h:3
-msgid "<b>_Bookmarks:</b>"
-msgstr "<b>:ئادرېس تىزىملىگى<b>"
+#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:339 ../src/yelp-print.c:366
+msgid "Printing"
+msgstr "بېسىۋاتىدۇ"
-#: data/ui/yelp.glade.h:4
-msgid "<b>_Title:</b>"
-msgstr "<b>:تېمىسى<b>"
+#: ../data/toc.xml.in.h:105
+msgid "Profiling Tools"
+msgstr "سىناش قورالى"
-#: data/ui/yelp.glade.h:5
-msgid "Add Bookmark"
-msgstr "ئادرېسنى قوشۇش"
+#: ../data/toc.xml.in.h:106
+msgid "Project Management Tools"
+msgstr "قۇرۇلۇش باشقۇرۇش قورالى"
-#: data/ui/yelp.glade.h:6
-msgid "Bookmarks"
-msgstr "ئادرېس تىزىملىگى"
+#: ../data/toc.xml.in.h:107
+msgid "Publishing"
+msgstr "نەشرىياتچىلىق"
-#: data/ui/yelp.glade.h:7
-msgid "C_ase sensitive"
-msgstr "(_A) چوڭ كىچىك ھەرپنى پەرقلەندۈرۈش"
+#: ../data/toc.xml.in.h:108
+msgid "Qt"
+msgstr "Qt"
-#: data/ui/yelp.glade.h:8
-msgid "Find"
-msgstr "ئىزدەش"
+#: ../data/toc.xml.in.h:109
+msgid "Raster Graphics"
+msgstr "نۇر سېتكا گرافىكى"
-#: data/ui/yelp.glade.h:9
-msgid "Open Location"
-msgstr "تور ئادرېسىنى ئېچىش"
+#. Translators: this is a menu title for audio and video recorders
+#: ../data/toc.xml.in.h:111
+msgid "Recorders"
+msgstr "ئۈنئالغۇ"
+
+#: ../data/toc.xml.in.h:112
+msgid "Remote Access"
+msgstr "يىراقتىن زىيارەت"
+
+#: ../data/toc.xml.in.h:113
+msgid "Revision Control"
+msgstr "نەشر كونترولى"
+
+#: ../data/toc.xml.in.h:114
+msgid "Robotics"
+msgstr "ماشىنا ئادەم ئىلمى"
-#: data/ui/yelp.glade.h:11
+#: ../data/toc.xml.in.h:115
+msgid "Role Playing Games"
+msgstr "رول ئېلىش تىپىدىكى ئويۇن"
+
+#: ../data/toc.xml.in.h:116
+msgid "Scanning"
+msgstr "تەكشۈرۈۋاتىدۇ"
+
+#: ../data/toc.xml.in.h:117
+msgid "Science"
+msgstr "ئىلىم"
+
+#: ../data/toc.xml.in.h:118
+msgid "Security"
+msgstr "بىخەتەرلىك"
+
+#: ../data/toc.xml.in.h:119
+msgid "Sequencers"
+msgstr "تەرتىپلىگۈچ"
+
+#: ../data/toc.xml.in.h:120
+msgid "Settings"
+msgstr "تەڭشەكلەر"
+
+#: ../data/toc.xml.in.h:121
+msgid "Settings users can manipulate to make their environment more pleasant"
+msgstr ""
+"ئىشلەتكۈچىلەر بۇ تەڭشەكلەرنى ئۆزگەرتىپ مەشغۇلات مۇھىتىنى تېخىمۇ راھەت "
+"قىلالايدۇ"
+
+#: ../data/toc.xml.in.h:122
+msgid "Simulation Games"
+msgstr "تەقلىدلەشتۈرگۈچ ئويۇنى"
+
+#: ../data/toc.xml.in.h:123
+msgid "Sound"
+msgstr "ئاۋاز"
+
+#: ../data/toc.xml.in.h:124
+msgid "Sound &amp; Video"
+msgstr "ئۈن &amp; سىن"
+
+#: ../data/toc.xml.in.h:125
+msgid "Sound &amp; Video Editing"
+msgstr "ئۈن &amp; سىن تەھرىر"
+
+#: ../data/toc.xml.in.h:126
+msgid "Sports"
+msgstr "تەنتەربىيە"
+
+#: ../data/toc.xml.in.h:127
+msgid "Sports Games"
+msgstr "تەنتەربىيە ئويۇنلىرى"
+
+#: ../data/toc.xml.in.h:128
+msgid "Spreadsheet Tools"
+msgstr "ئېلېكترونلۇق جەدۋەل قورالى"
+
+#: ../data/toc.xml.in.h:129
+msgid "Strategy Games"
+msgstr "تەدبىر ئويۇنى"
+
+#: ../data/toc.xml.in.h:130
+msgid "System"
+msgstr "سىستېما"
+
+#: ../data/toc.xml.in.h:131
+msgid "TV"
+msgstr "تېلېۋىزور"
+
+#: ../data/toc.xml.in.h:132
+msgid "Telephony"
+msgstr "تېلېفون ئىلمى"
+
+#: ../data/toc.xml.in.h:133
+msgid "Telephony Tools"
+msgstr "تېلېفونشۇناسلىق قورالى"
+
+#: ../data/toc.xml.in.h:134
+msgid "Terminal Emulator"
+msgstr "تېرمىنال تەقلىدلەشتۈرگۈچ"
+
+#: ../data/toc.xml.in.h:135
+msgid "Text Editors"
+msgstr "تېكىست تەھرىرلىگۈچلەر"
+
+#: ../data/toc.xml.in.h:136
+msgid "Text Tools"
+msgstr "تېكىست قوراللىرى"
+
+#: ../data/toc.xml.in.h:137
+msgid "Tools to help you manage your computer"
+msgstr "كومپيۇتېر باشقۇرۇشقا ياردەمچى پروگراممىلار"
+
+#: ../data/toc.xml.in.h:138
+msgid "Translation Tools"
+msgstr "تەرجىمە قوراللىرى"
+
+#: ../data/toc.xml.in.h:139
+msgid "Tuners"
+msgstr "سازلىغۇچ"
+
+#: ../data/toc.xml.in.h:140
+msgid "Utilities"
+msgstr "ئەمەلىي قوللىنىشچان قورال"
+
+#: ../data/toc.xml.in.h:141
+msgid "Utilities to help you get work done"
+msgstr "خىزمىتىڭىزنى تاماملاشقا ياردەم بېرىدىغان ئەمەلىي قوللىنىشچان قورال"
+
+#: ../data/toc.xml.in.h:142
+msgid "Vector Graphics"
+msgstr "ۋېكتورلۇق گرافىك"
+
+#: ../data/toc.xml.in.h:143
+msgid "Video"
+msgstr "سىن"
+
+#: ../data/toc.xml.in.h:144
+msgid "Video Conference"
+msgstr "سىنلىق يىغىن"
+
+#. Translators: This is a menu title for graphics viewing applications
+#: ../data/toc.xml.in.h:146
+msgid "Viewer"
+msgstr "كۆرگۈچ"
+
+#: ../data/toc.xml.in.h:147
+msgid "Web Browser"
+msgstr "توركۆرگۈ"
+
+#: ../data/toc.xml.in.h:148
+msgid "Web Development"
+msgstr "Web ئېچىش"
+
+#: ../data/toc.xml.in.h:149
+#, fuzzy
+msgid "Welcome to the GNOME Help Browser"
+msgstr " GNOME ياردەم توركۆرگۈ"
+
+#: ../data/toc.xml.in.h:150
+msgid "Word Processors"
+msgstr "پۈتۈكچىلىك"
+
+#: ../data/ui/yelp-bookmarks.ui.h:1
+msgid "Bookmarks"
+msgstr "خەتكۈش"
+
+#: ../data/ui/yelp-bookmarks.ui.h:2
msgid "Re_name"
-msgstr "(_N)نامىنى ئۆزگەرتىش"
+msgstr "ئاتىنى ئۆزگەرت(_N)"
-#: data/ui/yelp.glade.h:12
-msgid "_Browse with caret"
-msgstr "(_B) نۇر توچكىسى بىلەن كۆرۈش"
+#: ../data/ui/yelp-bookmarks.ui.h:3
+msgid "_Bookmarks:"
+msgstr "خەتكۈش(_B):"
-#: data/ui/yelp.glade.h:13
-msgid "_Find: "
-msgstr "(_F) ئىزدەش"
+#: ../data/ui/yelp-bookmarks-add.ui.h:1
+msgid "Add Bookmark"
+msgstr "خەتكۈش قوشۇش"
-#: data/ui/yelp.glade.h:14
-msgid "_Fixed width:"
-msgstr "(_F) مۇقىم كەڭلىك"
+#: ../data/ui/yelp-bookmarks-add.ui.h:2
+msgid "_Title:"
+msgstr "ماۋزۇ (_T):"
-#: data/ui/yelp.glade.h:15
+#: ../data/ui/yelp-open-location.ui.h:1
+msgid "Open Location"
+msgstr "تور ئادرېسىنى ئاچ"
+
+#: ../data/ui/yelp-open-location.ui.h:2
msgid "_Location:"
-msgstr "(_L) تور ئادرېسى"
+msgstr "ئورنى (_L):"
-#: data/ui/yelp.glade.h:16
-msgid "_Next"
-msgstr "(_N) كېيىنكىسى"
+#: ../data/ui/yelp-preferences.ui.h:2
+msgid "Fonts"
+msgstr "فونتلار"
-#: data/ui/yelp.glade.h:17
-msgid "_Previous"
-msgstr "(_P) ئالدىنقىسى"
+#: ../data/ui/yelp-preferences.ui.h:3
+msgid "Preferences"
+msgstr "مايىللىق"
+
+#: ../data/ui/yelp-preferences.ui.h:4
+msgid "_Browse with caret"
+msgstr "نۇر بەلگىسى بىلەن كۆرۈش (_B)"
-#: data/ui/yelp.glade.h:18
+#: ../data/ui/yelp-preferences.ui.h:5
+msgid "_Fixed width:"
+msgstr "مۇقىم كەڭلىك(_F):"
+
+#: ../data/ui/yelp-preferences.ui.h:6
msgid "_Use system fonts"
-msgstr "(_U) سىستېما فونتلىرىنى ئىشلىتىش"
+msgstr "سىستېما فونتلىرىنى ئىشلەت(_U)"
-#: data/ui/yelp.glade.h:19
+#: ../data/ui/yelp-preferences.ui.h:7
msgid "_Variable width:"
-msgstr "(_V) :ئۆزگۈرۈشچان كەڭلىك"
-
-#: data/ui/yelp.glade.h:20
-msgid "_Wrap around"
-msgstr "(_W) ئاپتوماتىك قۇر ئالمىشىش"
+msgstr "ئۆزگىرىشچان كەڭلىك(_V):"
-#: data/yelp.schemas.in.h:1
+#: ../data/yelp.schemas.in.h:1
msgid "Font for fixed text"
-msgstr "ئوخشاش كەڭلىكتىكى تېكىست فونتى"
+msgstr "تەڭ كەڭلىكتىكى تېكىست فونتى"
-#: data/yelp.schemas.in.h:2
+#: ../data/yelp.schemas.in.h:2
msgid "Font for text"
msgstr "تېكىست فونتى"
-#: data/yelp.schemas.in.h:3
+#: ../data/yelp.schemas.in.h:3
msgid "Font for text with fixed width."
-msgstr "ئوخشاش كەڭلىكتىكى تېكىست فونتى"
+msgstr "تەڭ كەڭلىكتىكى تېكىست فونتى"
-#: data/yelp.schemas.in.h:4
+#: ../data/yelp.schemas.in.h:4
msgid "Font for text with variable width."
-msgstr "ئۆزگۈرۈشچان كەڭلىكتىكى تېكىست فونتى "
+msgstr "ئۆزگىرىشچان كەڭلىكتىكى تېكىست فونتى"
-#: data/yelp.schemas.in.h:5
+#: ../data/yelp.schemas.in.h:5
msgid "Use a keyboard-controllable caret when viewing pages."
msgstr ""
-"بەتنى كۆرۈۋاتقاندا كۇنۇپكا تاختىسىدىن كونتىرول قىلىنىدىغان نۇر توچكىسىنى "
-"ئىشلىتىش"
+"بەتنى كۆرۈۋاتقاندا كۇنۇپكا تاختىسىدىن كونترول قىلىنىدىغان نۇر بەلگىسى ئىشلەت"
-#: data/yelp.schemas.in.h:6
+#: ../data/yelp.schemas.in.h:6
msgid "Use caret"
-msgstr "نۇر توچكىسىنى ئىشلىتىش"
+msgstr "نۇر بەلگىسى ئىشلەت"
-#: data/yelp.schemas.in.h:7
+#: ../data/yelp.schemas.in.h:7
msgid "Use system fonts"
-msgstr "سىستېما فونتىنى ئىشلىتىش"
+msgstr "سىستېما فونتى ئىشلەت"
-#: data/yelp.schemas.in.h:8
+#: ../data/yelp.schemas.in.h:8
msgid "Use the default fonts set for the system."
-msgstr "سىستېما ئۈچۈن ئەسلىدىكى فونت قۇرۇلمىسىنى ئىشلىتىش"
+msgstr "سىستېمىغا كۆڭۈلدىكى فونت قۇرۇلمىسىنى ئىشلەت"
-#: src/GNOME_Yelp.server.in.h:1 src/yelp-window.c:2169
-msgid "Yelp"
-msgstr "Yelp"
+#: ../src/eggdesktopfile.c:165
+#, c-format
+msgid "File is not a valid .desktop file"
+msgstr "ھۆججەت ئىناۋەتلىك .desktop ھۆججىتى ئەمەس."
+
+#: ../src/eggdesktopfile.c:188
+#, c-format
+msgid "Unrecognized desktop file Version '%s'"
+msgstr "ئىناۋەتسىز ئۈستەل يۈزى ھۆججەت نەشرى '%s'"
+
+#: ../src/eggdesktopfile.c:957
+#, c-format
+msgid "Starting %s"
+msgstr "%s قوزغىلىۋاتىدۇ"
+
+#: ../src/eggdesktopfile.c:1098
+#, c-format
+msgid "Application does not accept documents on command line"
+msgstr "قوللىنىشچان پروگرامما بۇيرۇق قۇرىدا پۈتۈككە يول قويمايدۇ"
+
+#: ../src/eggdesktopfile.c:1166
+#, c-format
+msgid "Unrecognized launch option: %d"
+msgstr "تونۇمايدىغان ئىجرا تاللانمىسى: %d"
+
+#: ../src/eggdesktopfile.c:1365
+#, c-format
+msgid "Can't pass document URIs to a 'Type=Link' desktop entry"
+msgstr "URI پۈتۈكنى 'Type=Link' ئۈستەل يۈزى تۈرىگە يوللىيالمىدى."
+
+#: ../src/eggdesktopfile.c:1384
+#, c-format
+msgid "Not a launchable item"
+msgstr "ئىجراچان تۈر ئەمەس"
+
+#: ../src/eggsmclient.c:225
+msgid "Disable connection to session manager"
+msgstr "سۆزلىشىش باشقۇرغۇچقا ئۇلىنىشنى چەكلەش"
-#: src/GNOME_Yelp.server.in.h:2
-msgid "Yelp Factory"
-msgstr "زاۋۇتى Yelp"
+#: ../src/eggsmclient.c:228
+msgid "Specify file containing saved configuration"
+msgstr "بەلگىلەنگەن سەپلىمە ساقلانغان ھۆججەت"
-#: src/yelp-bookmarks.c:155
+#: ../src/eggsmclient.c:228
+msgid "FILE"
+msgstr "ھۆججەت"
+
+#: ../src/eggsmclient.c:231
+msgid "Specify session management ID"
+msgstr "session باشقۇرغۇچ ID سېنى بەلگىلە"
+
+#: ../src/eggsmclient.c:231
+msgid "ID"
+msgstr "ID"
+
+#: ../src/eggsmclient.c:252
+msgid "Session management options:"
+msgstr "session باشقۇرغۇچ تاللانمىلىرى:"
+
+#: ../src/eggsmclient.c:253
+msgid "Show session management options"
+msgstr "session باشقۇرغۇچ تاللانمىلىرى كۆرسەت"
+
+#: ../src/yelp-bookmarks.c:147
msgid "Open Bookmark in New Window"
-msgstr "تور ئادرېسىنى يېڭى كۆزنەكتە ئېچىش"
+msgstr "خەتكۈچنى يېڭى كۆزنەكتە ئاچ"
-#: src/yelp-bookmarks.c:159
+#: ../src/yelp-bookmarks.c:151
msgid "Rename Bookmark"
-msgstr "تور ئادرېسىنى ئۆزگەرتىش"
+msgstr "خەتكۈش ئاتى ئۆزگەرت"
-#: src/yelp-bookmarks.c:163
+#: ../src/yelp-bookmarks.c:155
msgid "Remove Bookmark"
-msgstr "تور ئادرېسىنى ئېلىۋېتىش"
+msgstr "خەتكۈش چىقىرىۋەت"
-#: src/yelp-bookmarks.c:306 src/yelp-bookmarks.c:378
+#: ../src/yelp-bookmarks.c:319
+#, c-format
+msgid "A bookmark titled %s already exists for this page."
+msgstr "بۇ بەتتە %s ماۋزۇلۇق خەتكۈش بار."
+
+#: ../src/yelp-bookmarks.c:395
#, c-format
msgid "A bookmark titled <b>%s</b> already exists for this page."
-msgstr "ماۋزۇلۇق تور بەت ئادرېسى ئاللىقاچان مەۋجۈت <b>%s</b> بۇ بەتنىڭ"
+msgstr "بۇ بەتنىڭ <b>%s</b> ماۋزۇلۇق تور بەت ئادرېسى مەۋجۇت"
-#: src/yelp-bookmarks.c:406
+#: ../src/yelp-bookmarks.c:408
+msgid "Help Topics"
+msgstr "ياردەم تېمىلىرى"
+
+#: ../src/yelp-bookmarks.c:423
msgid "Document Sections"
-msgstr "ماقالىنىڭ قىسىملىرى"
+msgstr "پۈتۈك بۆلەكلىرى"
+
+#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350
+#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243
+#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:284 ../src/yelp-mallard.c:384
+#: ../src/yelp-man.c:292 ../src/yelp-man.c:385 ../src/yelp-toc.c:266
+#: ../src/yelp-toc.c:365
+msgid "Page not found"
+msgstr "بەتنى تاپالمىدى"
+
+#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244
+#: ../src/yelp-mallard.c:285 ../src/yelp-mallard.c:385 ../src/yelp-man.c:293
+#, c-format
+msgid "The page %s was not found in the document %s."
+msgstr "%2$s پۈتۈكتىكى %1$s بەتنى تاپالمىدى."
-#: src/yelp-db-pager.c:242
+#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339
+#: ../src/yelp-man.c:386
#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"not well-formed XML."
-msgstr ""
-"ھۆججەت '%s' نى ئانالىز قىلىش مۈمكىن ئەمەس. يا بۇ ھۆججەت مەۋجۈت ئەمەس, يا بۇ "
-"ئىناۋەتلىك XML ئەمەس"
+msgid "The requested page was not found in the document %s."
+msgstr "%s پۈتۈكتىن ئىلتىماس قىلغان بەتنى تاپالمىدى."
-#: src/yelp-db-pager.c:486
-msgid "Unknown Section"
-msgstr "تونۇمىغان قىسىم"
+#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380
+#: ../src/yelp-man.c:429
+msgid "File not found"
+msgstr "ھۆججەت تېپىلمىدى"
-#: src/yelp-error.c:42 src/yelp-error.c:58
-msgid "An unknown error occured"
-msgstr "تونۇمىغان خاتالىق يۈز بەردى"
+#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381
+#: ../src/yelp-man.c:430
+#, c-format
+msgid "The file ‘%s’ does not exist."
+msgstr "‘%s’ ھۆججەت مەۋجۇت ئەمەس."
-#: src/yelp-error.c:46
-msgid "Could not load document"
-msgstr "ھۆججەتنى يۈكلىيەلمىدى"
+#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418
+#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395
+#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437
+msgid "Could not parse file"
+msgstr "ھۆججەتنى يېشەلمىدى"
-#: src/yelp-error.c:48
-msgid "Could not load section"
-msgstr "قىسىمنى يۈكلىيەلمىدى"
+#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed XML "
+"document."
+msgstr "‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكى ئۇ ئىناۋەتلىك XML پۈتۈكى ئەمەس."
-#: src/yelp-error.c:50
-msgid "Could not read the table of contents"
-msgstr "مۇندەرىجىنى ئوقۇيالمىدى"
+#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because one or more of its included files "
+"is not a well-formed XML document."
+msgstr ""
+"‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكى ئۇنىڭ بىر ياكى بىر قانچە بۆلەك ھۆججىتى "
+"ئىناۋەتلىك XML پۈتۈكى ئەمەس."
+
+#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787
+msgid "Unknown"
+msgstr "نامەلۇم"
-#: src/yelp-error.c:52
-msgid "Unsupported Format"
-msgstr "قوللىمايدىغان فورمات"
+#: ../src/yelp-error.c:132 ../src/yelp-error.c:139
+msgid "Unknown Error"
+msgstr "نامەلۇم خاتالىق"
-#: src/yelp-error.c:54
-msgid "Could not read document"
-msgstr "ھۆججەتنى ئوقۇيالمىدى"
+#: ../src/yelp-error.c:136 ../src/yelp-window.c:1719
+msgid "Could Not Read File"
+msgstr "ھۆججەت ئوقۇيالمىدى"
-#: src/yelp-error.c:56
-msgid "Could not process document"
-msgstr "ھۆججەتنى بىر تەرەپ قىلالمىدى"
+#: ../src/yelp-error.c:146
+msgid "No information is available about this error."
+msgstr "بۇ ئۇچۇرغا مۇناسىۋەتلىك ئىشلىتىلىشچان ئۇچۇر يوق."
-#: src/yelp-error.c:66
-msgid "No information is available about the error."
-msgstr "خاتالىق ھەققىدە ھىچقانداق ئۇچۇر يوق"
+#: ../src/yelp-info.c:396
+#, c-format
+msgid ""
+"The file ‘%s’ could not be parsed because it is not a well-formed info page."
+msgstr "‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكى ئۇچۇر بېتى فورماتقا ماس كەلمەيدۇ."
-#: src/yelp-io-channel.c:98
+#: ../src/yelp-io-channel.c:132
#, c-format
msgid ""
-"The file ‘s%’ could not be read and decoded. The file may be compressed in "
+"The file ‘%s’ could not be read and decoded. The file may be compressed in "
"an unsupported format."
msgstr ""
-"ھۆججەت s% نى ئوقۇش ھەم يېشىش مۈمكىن بولمىدى. ھۆججەت تونۇمايدىغان فورماتتا "
-"قىسىلغان بولۇشى مۈمكىن "
+"‘%s’ ھۆججەتنى ئوقۇپ كودىنى يېشەلمىدى. ھۆججەت قوللىمايدىغان فورماتتا "
+"پرېسلانغان بولۇشى مۇمكىن."
-#: src/yelp-main.c:95
-msgid "Define which cache directory to use"
-msgstr "مۇندەرىجىسىنى ئىشلىتىشنى بەلگۈلەش cache قايسى"
+#: ../src/yelp-main.c:88
+msgid "Use a private session"
+msgstr "شەخسىي session ئىشلەت"
-#: src/yelp-main.c:129
-#, c-format
-msgid "Could not activate Yelp: '%s'"
-msgstr "نى قوزغىتالمىدى Yelp: %s"
+#: ../src/yelp-main.c:97
+msgid "Define which cache directory to use"
+msgstr "قايسى غەملەك مۇندەرىجە ئىشلىتىشنى بەلگىلەش"
-#: src/yelp-main.c:148
-msgid "Could not open new window."
-msgstr "يېڭى كۆزنەك ئاچالمىدى"
+#. Commandline parsing is done here
+#: ../src/yelp-main.c:355
+msgid " GNOME Help Browser"
+msgstr " GNOME ياردەم توركۆرگۈ"
-#: src/yelp-main.c:325 yelp.desktop.in.in.h:2
+#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2
msgid "Help"
msgstr "ياردەم"
-#: src/yelp-man-pager.c:164
+#: ../src/yelp-mallard.c:315
+msgid "Directory not found"
+msgstr "مۇندەرىجە تېپىلمىدى"
+
+#: ../src/yelp-mallard.c:316
+#, c-format
+msgid "The directory ‘%s’ does not exist."
+msgstr "‘%s’ دېگەن مۇندەرىجە يوق."
+
+#: ../src/yelp-man.c:459
#, c-format
msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"formatted incorrectly."
-msgstr ""
-"ھۆججەت %s نى ئانالىز قىلىش مۈمكىن ئەمەس. يا بۇ ھۆججەت مەۋجۈت ئەمەس يا خاتا "
-"فورماتلانغان"
-
-#: src/yelp-pager.c:120
-msgid "Document Information"
-msgstr "ماقالا ئۇچۇرى"
-
-#: src/yelp-pager.c:121
-msgid "The YelpDocInfo struct of the document"
-msgstr "قۇرۇلمىسى YelpDocInfo ماقالىنىڭ"
-
-#. TRANSLATORS:
-#. This is an image of the opening quote character used to watermark
-#. blockquote elements. Different languages use different opening
-#. quote characters, so the icon name is translatable. The name of
-#. the icon should be "yelp-watermark-blockquote-XXXX", where XXXX
-#. is the Unicode code point of the opening quote character. For
-#. example, some languages use the double angle quotation mark, so
-#. those would use "yelp-watermark-blockquote-00AB". However, the
-#. image is not automagically created. Do not translate this to a
-#. value if there isn't a corresponding icon in yelp/data/icons.
-#. If you need an image created, contact the maintainers.
-#.
-#. Phew, now some notes on which character to use. Languages that
-#. use guillemets (angle quotations) should use either 00AB or AABB,
-#. depending on whether the opening quotation is the left guillemet
-#. or the right guillemet. Languages that use inverted comma style
-#. quotations should use 201C, 201D, or 201E. Note that single
-#. quotation marks don't make very nice watermarks. So if you use
-#. single quotes as your primary (outer) quotation marks, you should
-#. just use the corresponding double quote watermark.
-#.
-#: src/yelp-settings.c:153
-msgid "yelp-watermark-blockquote-201C"
-msgstr "yelp-watermark-blockquote-201C"
+"The file ‘%s’ could not be parsed because it is not a well-formed man page."
+msgstr "‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكىman بەت فورماتىغا ماس كەلمەيدۇ."
+
+#: ../src/yelp-print.c:99
+msgid "Print"
+msgstr "باس"
+
+#: ../src/yelp-print.c:169
+msgid "Preparing to print"
+msgstr "بېسىشقا تەييارلىنىۋاتىدۇ"
-#: src/yelp-toc-pager.c:268
-msgid "YelpTocPager: Pause count is negative."
-msgstr "قىسقا توختاش قېتىم سانى مەنپى سان :YelpTocPager"
+#: ../src/yelp-print.c:263
+msgid "Printing is not supported on this printer"
+msgstr "بۇ پرىنتېردا بېسىشنى قوللىمايدۇ"
-#: src/yelp-toc-pager.c:491
+#: ../src/yelp-print.c:266
#, c-format
-msgid "Could not load the OMF file '%s'."
-msgstr "نى قاچىلىيالمىدى %s ھۆججىتى OMF"
+msgid "Printer %s does not support postscript printing."
+msgstr "%s پرىنتېر postscript تا بېسىشنى قوللىمايدۇ"
-#: src/yelp-toc-pager.c:682
+#: ../src/yelp-print.c:368
+msgid "Waiting to print"
+msgstr "بېسىشنى كۈتۈۋاتىدۇ"
+
+#: ../src/yelp-print.c:580
+msgid "An error occurred while printing"
+msgstr "بېسىۋاتقاندا خاتالىق كۆرۈلدى"
+
+#: ../src/yelp-print.c:584
#, c-format
-msgid "Read man page for %s"
-msgstr "بېتىنى ئوقۇش man نىڭ %s"
+msgid "It was not possible to print your document: %s"
+msgstr "پۈتۈكىڭىزنى باسالمىدى: %s"
+
+#: ../src/yelp-search-parser.c:67
+msgid "the GNOME Support Forums"
+msgstr ""
-#: src/yelp-toc-pager.c:767
+#: ../src/yelp-search-parser.c:285
#, c-format
+msgid "No results for \"%s\""
+msgstr "\"%s\" نەتىجە يوق"
+
+#: ../src/yelp-search-parser.c:286
msgid ""
-"The table of contents could not be loaded. The file ‘%s’ is either missing "
-"or is not well-formed XML."
+"Try using different words to describe the problem you're having or the topic "
+"you want help with."
msgstr ""
-"مۇندەرىجىنى يۈكلەش مۇمكىن ئەمەس. يا ھۆججەت %s يوقالغان يا ئىناۋەتلىك XML "
-"ئەمەس"
+"ئوخشىمىغان مەزمۇندا سىز يولۇققان مەسىلىنى ياكى سىز ئېرىشمەكچى بولغان ياردەم "
+"باش تېمىسىنى بايان قىلىڭ."
+
+#: ../src/yelp-search-parser.c:289
+#, c-format
+msgid "Search results for \"%s\""
+msgstr "\"%s\" نىڭ ئىزدەش نەتىجىسى"
+
+#. TRANSLATORS: Please don't do anything funny with the
+#. * format arguement. It isn't really going through a printf
+#. * The %s is used to indicate where the name of the site (linked)
+#. * should be. This is done in the XSLT
+#.
+#: ../src/yelp-search-parser.c:303
+#, c-format
+msgid "Repeat the search online at %s"
+msgstr "%s دىن قايتا ئىزدە"
+
+#. Translators: Do not translate this list exactly. These are
+#. * colon-separated words that aren't useful for choosing search
+#. * results; they will be different for each language. Include
+#. * pronouns, articles, very common verbs and prepositions,
+#. * words from question structures like "tell me about" and
+#. * "how do I", and words for functional states like "not",
+#. * "work", and "broken".
+#.
+#: ../src/yelp-search-parser.c:874
+msgid ""
+"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:"
+"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:"
+"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:"
+"where:who:will:with:won't:wont:why:work:working:works"
+msgstr "ھەققىدە: ماق: مەك:ئۈچۈن:نىڭ:دا:دە:تا:تە:"
+
+#. Translators: This is a list of common prefixes for words.
+#. * Do not translate this directly. Instead, use a colon
+#. * seperated list of word-starts. In English, an example
+#. * is re-. If there is none, please use the term NULL
+#. * If there is only one, please put a colon after.
+#. * E.g. if the common prefix is re then the string would be
+#. * "re:"
+#.
+#: ../src/yelp-search-parser.c:890
+msgid "re"
+msgstr "جاۋاب"
+
+#. Translators: This is a list of (guess what?) common suffixes
+#. * to words. Things that may be put at ends of words to slightly
+#. * alter their meaning (like -ing and -s in English). This is a
+#. * colon seperated list (I like colons). If there are none,
+#. * please use the string NULL. If there is only 1, please
+#. * add a colon at the end of the list
+#.
+#: ../src/yelp-search-parser.c:899
+msgid "ers:er:ing:es:s:'s"
+msgstr "نىڭ: دار:پەز:غۇ:چى"
+
+#: ../src/yelp-search-parser.c:1095
+msgid "No Comment"
+msgstr "باھا يوق"
+
+#. Much bigger problems
+#: ../src/yelp-search.c:238
+msgid "Search could not be processed"
+msgstr "ئىزدىيەلمىدى"
+
+#: ../src/yelp-search.c:239
+msgid "The requested search could not be processed."
+msgstr "ئىزدەش ئىلتىماسىنى ئىجرا قىلالمىدى."
-#: src/yelp-toc-pager.c:878
+#: ../src/yelp-search.c:366
+msgid "Cannot process the search"
+msgstr "بۇ ئىزدەشنى ئىجرا قىلالمىدى"
+
+#: ../src/yelp-search.c:367
+msgid "The search processor returned invalid results"
+msgstr "ئىزدەش جەريانى ئىشلەتكىلى بولمايدىغان نەتىجە قايتۇردى"
+
+#: ../src/yelp-toc.c:267
#, c-format
+msgid "The page %s was not found in the TOC."
+msgstr "TOC دا %s بەتنى تاپالمىدى."
+
+#: ../src/yelp-toc.c:366
+msgid "The requested page was not found in the TOC."
+msgstr "TOC دا ئىلتىماس قىلغان بەتنى تاپالمىدى."
+
+#: ../src/yelp-toc.c:438
msgid ""
-"The table of contents could not be processed. The file ‘%s’ is either "
-"missing or is not a valid XSLT stylesheet."
+"The TOC file could not be parsed because it is not a well-formed XML "
+"document."
msgstr ""
-"مۇندەرىجىنى بىر تەرەپ قىلىش مۇمكىن ئەمەس. يا ھۆججەت %s يوقالغان يا "
-"ئىناۋەتلىك XSLT ئەمەس "
+"TOC ھۆججىتىنى تەھلىل قىلالمىدى، بۇ ئۆلچەملىك فورماتتىكى XML پۈتۈكى ئەمەس."
-#: src/yelp-toc-pager.c:1029 src/yelp-xslt-pager.c:365
-msgid "No href attribute found on yelp:document"
-msgstr " نى تاپالمىدى href دىن yelp:document"
+#: ../src/yelp-transform.c:86
+msgid "Invalid Stylesheet"
+msgstr "ئىناۋەتسىز ئۇسلۇب جەدۋىلى"
-#: src/yelp-toc-pager.c:1043 src/yelp-xslt-pager.c:381
-msgid "Out of memory"
-msgstr "ئىچكى ساقلىغۇچتا ئورۇن قالمىدى"
+#: ../src/yelp-transform.c:87
+#, c-format
+msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid."
+msgstr "XSLT ئۇسلۇب جەدۋىلى ‘%s’ يوقالغان ياكى ئىناۋەتسىز."
-#: src/yelp-toc-pager.c:1084
-msgid "Help Contents"
-msgstr "ياردەم تېمىلىرى"
+#: ../src/yelp-transform.c:122
+msgid "Broken Transformation"
+msgstr "بۇزۇلغان ئايلاندۇرۇش"
+
+#: ../src/yelp-transform.c:123
+msgid "An unknown error occurred while attempting to transform the document."
+msgstr "ھۆججەت ئايلاندۇرغاندا نامەلۇم خاتالىق كۆرۈلدى."
+
+#: ../src/yelp-transform.c:389
+msgid "No href attribute found on yelp:document\n"
+msgstr "yelp:document دا href خاسلىقى يوقكەن\n"
+
+#: ../src/yelp-transform.c:404
+msgid "Out of memory"
+msgstr "ئەسلەك يېتىشمىدى"
-#: src/yelp-window.c:292
+#: ../src/yelp-window.c:304
msgid "_File"
-msgstr "(_F)ھۆججەت"
+msgstr "ھۆججەت(_F)"
-#: src/yelp-window.c:293
+#: ../src/yelp-window.c:305
msgid "_Edit"
-msgstr "(_E)ئېدىتلاش"
+msgstr "تەھرىر(_E)"
-#: src/yelp-window.c:294
+#: ../src/yelp-window.c:306
msgid "_Go"
-msgstr "(_G)يۈرگۈزۈش"
+msgstr "يۆتكەل(_G)"
-#: src/yelp-window.c:295
+#: ../src/yelp-window.c:307
msgid "_Bookmarks"
-msgstr "(_B)ئادرېس تىزىملىگى"
+msgstr "خەتكۈش(_B)"
-#: src/yelp-window.c:296
+#: ../src/yelp-window.c:308
msgid "_Help"
-msgstr "(_H)ياردەم"
+msgstr "ياردەم(_H)"
-#: src/yelp-window.c:299
+#: ../src/yelp-window.c:311
msgid "_New Window"
-msgstr "(_N)يېڭى كۆزنەك"
+msgstr "يېڭى كۆزنەك(_N)"
-#: src/yelp-window.c:304
+#: ../src/yelp-window.c:316
+msgid "Print This Document ..."
+msgstr "بۇ پۈتۈكنى باس…"
+
+#: ../src/yelp-window.c:321
+msgid "Print This Page ..."
+msgstr "بۇ بەتنى باس…"
+
+#: ../src/yelp-window.c:326
msgid "About This Document"
msgstr "بۇ ھۆججەت توغرىسىدا"
-#: src/yelp-window.c:309
+#: ../src/yelp-window.c:331
msgid "Open _Location"
-msgstr "ئادرېسنى ئېچىش"
+msgstr "ئادرېس ئاچ(_L)"
-#: src/yelp-window.c:314
+#: ../src/yelp-window.c:336
msgid "_Close Window"
-msgstr "(_C)كۆزنەكنى ئېتىش"
+msgstr "كۆزنەك ياپ(_C)"
-#: src/yelp-window.c:320
+#: ../src/yelp-window.c:342
msgid "_Copy"
-msgstr "(_C)كۆچۈرۈش"
+msgstr "كۆچۈر(_C)"
-#: src/yelp-window.c:326
+#: ../src/yelp-window.c:348
msgid "_Select All"
-msgstr "(_S)ھەممىنى تاللاش"
+msgstr "ھەممىنى تاللا(_S)"
-#: src/yelp-window.c:331
+#: ../src/yelp-window.c:353
msgid "_Find..."
-msgstr "(_F)ئىزلەش"
+msgstr "ئىزدە(_F)…"
+
+#: ../src/yelp-window.c:358
+msgid "Find Pre_vious"
+msgstr "ئالدىنقىنى ئىزدە(_V)"
+
+#: ../src/yelp-window.c:360
+msgid "Find previous occurrence of the word or phrase"
+msgstr "ئالدىن قېتىم كۆرۈلگەن سۆز ياكى ئاتالغۇنى ئىزدە"
+
+#: ../src/yelp-window.c:363
+msgid "Find Ne_xt"
+msgstr "كېيىنكىنى ئىزدە(_X)"
-#: src/yelp-window.c:336
+#: ../src/yelp-window.c:365
+msgid "Find next occurrence of the word or phrase"
+msgstr "كېيىنكى قېتىم كۆرۈلىدىغان سۆز ياكى ئاتالغۇنى ئىزدە"
+
+#: ../src/yelp-window.c:368
msgid "_Preferences"
-msgstr "(_P)مايىللىق"
+msgstr "مايىللىق(_P)"
-#: src/yelp-window.c:341
+#: ../src/yelp-window.c:373
msgid "_Reload"
-msgstr "(_R)يېڭىلاش"
+msgstr "قايتا يۈكلە(_R)"
-#: src/yelp-window.c:347
+#: ../src/yelp-window.c:385
msgid "_Back"
-msgstr "(_B)كەينىگە"
+msgstr "كەينىگە(_B)"
-#: src/yelp-window.c:349
+#: ../src/yelp-window.c:387
msgid "Show previous page in history"
-msgstr "تارىختىكى ئالدىنقى بەتنى كۆرسىتىش"
+msgstr "تارىختىكى ئالدىنقى بەتنى كۆرسەت"
-#: src/yelp-window.c:352
+#: ../src/yelp-window.c:390
msgid "_Forward"
-msgstr "(_F)ئالدىغا"
+msgstr "ئالدىغا(_F)"
-#: src/yelp-window.c:354
+#: ../src/yelp-window.c:392
msgid "Show next page in history"
-msgstr "تارىختىكى ئالدىنقى بەتنى كۆرسىتىش"
+msgstr "تارىختىكى كېيىنكى بەتنى كۆرسەت"
-#: src/yelp-window.c:357
+#: ../src/yelp-window.c:395
msgid "_Help Topics"
-msgstr "(_H)ياردەم تېمىلىرى"
+msgstr "ياردەم تېمىلىرى(_H)"
-#: src/yelp-window.c:359
+#: ../src/yelp-window.c:397
msgid "Go to the listing of help topics"
-msgstr "ياردەم تېمىلىرىنىڭ تىزىملىگىگە بېرىش"
+msgstr "ياردەم تېمىلىرىنىڭ تىزىملىكىگە يۆتكەل"
-#: src/yelp-window.c:362
+#: ../src/yelp-window.c:400
msgid "_Previous Section"
-msgstr "(_P)ئالدىنقى بۆلۈم"
+msgstr "ئالدىنقى بۆلەك(_P)"
-#: src/yelp-window.c:367
+#: ../src/yelp-window.c:405
msgid "_Next Section"
-msgstr "(_N)كېيىنكى بۆلۈم"
+msgstr "كېيىنكى بۆلەك(_N)"
-#: src/yelp-window.c:372
+#: ../src/yelp-window.c:410 ../src/yelp-window.c:442
msgid "_Contents"
-msgstr "(_C)مۇندەرىجە"
+msgstr "مەزمۇن(_C)"
-#: src/yelp-window.c:378
+#: ../src/yelp-window.c:416
msgid "_Add Bookmark"
-msgstr "(_A)تور بەت ئادرېسىنى قوشۇش"
+msgstr "خەتكۈش قوش(_A)"
-#: src/yelp-window.c:383
+#: ../src/yelp-window.c:421
msgid "_Edit Bookmarks..."
-msgstr "(_E).... تور بەت ئادېسلىرىنى ئېدىتلاش"
+msgstr "خەتكۈش تەھرىر(_E)…"
-#: src/yelp-window.c:389
+#: ../src/yelp-window.c:427
msgid "_Open Link"
-msgstr "(_O)ئۇلىنىشنى ئېچىش"
+msgstr "ئۇلانما ئاچ(_O)"
-#: src/yelp-window.c:394
+#: ../src/yelp-window.c:432
msgid "Open Link in _New Window"
-msgstr "ئۇلىنىشنى يېڭى كۆزنەكتە ئېچىش"
+msgstr "ئۇلانمىنى يېڭى كۆزنەكتە ئاچ(_N)"
-#: src/yelp-window.c:399
+#: ../src/yelp-window.c:437
msgid "_Copy Link Address"
-msgstr "(_C)ئۇلىنىش ئادرېسىنى كۆچۈرۈش"
+msgstr "ئۇلانما ئادرېس كۆچۈر(_C)"
+
+#: ../src/yelp-window.c:444
+msgid "Help On this application"
+msgstr "بۇ قوللىنىشچان پروگراممىنىڭ ياردىمى"
-#: src/yelp-window.c:405
+#: ../src/yelp-window.c:447
msgid "_About"
-msgstr "(_A)ھەققىدە"
+msgstr "ھەققىدە(_A)"
+
+#: ../src/yelp-window.c:452
+msgid "Copy _Email Address"
+msgstr "ئېلخەت ئادرېسى كۆچۈر(_E)"
-#: src/yelp-window.c:456
+#: ../src/yelp-window.c:524
msgid "Help Browser"
-msgstr "ياردەم كۆزنىگى"
+msgstr "ياردەم كۆرگۈچ"
-#: src/yelp-window.c:687 src/yelp-window.c:820
-msgid "The Uniform Resource Identifier for the file is invalid."
-msgstr "ھۆججەتنىڭ بىرلىككە كەلگەن مەنبە ئېنىقلىغۇچى ئىناۋەتسىز"
+#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1782
+msgid "Loading..."
+msgstr "يۈكلەۋاتىدۇ…"
+
+#: ../src/yelp-window.c:620 ../src/yelp-window.c:672
+msgid "Unknown Page"
+msgstr "نامەلۇم بەت"
-#: src/yelp-window.c:699 src/yelp-window.c:815
+#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1105
+#: ../src/yelp-window.c:1114
#, c-format
-msgid ""
-"The Uniform Resource Identifier ‘%s’ is invalid or does not point to an "
-"actual file."
-msgstr ""
-" بىرلىككە كەلگەن مەنبە ئېنىقلىغۇچى %s ئىناۋەتسىز ياكى بىر ئەمىلى ھۆججەتنى "
-"كۆرسەتمەيدۇ"
+msgid "The requested URI \"%s\" is invalid"
+msgstr "ئىلتىماس قىلغان URI \"%s\" ئىناۋەتسىز"
-#: src/yelp-window.c:775 src/yelp-window.c:1130
-msgid "Man pages are not supported in this version."
-msgstr "بەتلىرىنى قوللىمايدۇ man بۇ نۇسخا"
+#: ../src/yelp-window.c:1044 ../src/yelp-window.c:1107
+#: ../src/yelp-window.c:1115
+msgid "Unable to load page"
+msgstr "بەتنى يۈكلىيەلمەيدۇ"
-#: src/yelp-window.c:785 src/yelp-window.c:1121
-msgid "GNU info pages are not supported in this version"
-msgstr "بەتلىرىنى قوللىمايدۇ GNU info بۇ نۇسخا"
+#: ../src/yelp-window.c:1339
+msgid "_Search:"
+msgstr "ئىزدە(_S):"
-#: src/yelp-window.c:795
-msgid ""
-"SGML documents are no longer supported. Please ask the author of the "
-"document to convert to XML."
-msgstr ""
-" فورمات SGML نى قوللاش ئەمەلدىن قالدۇرۇلدى. XML فورماتىغا ئايلاندۇرۇشنى "
-"ماقالىنىڭ ئاپتورىدىن سوراڭ "
+#: ../src/yelp-window.c:1340
+msgid "Search for other documentation"
+msgstr "باشقا پۈتۈكنى ئىزدە"
-#: src/yelp-window.c:1014
-msgid "Find:"
-msgstr "ئىزلەش"
+#: ../src/yelp-window.c:1360
+msgid "Cannot create window"
+msgstr "كۆزنەك قۇرالمىدى"
-#: src/yelp-window.c:1030
-msgid "Find _Next"
-msgstr "كېيىنكىسىنى ئىزلەش"
+#: ../src/yelp-window.c:1366
+msgid "Cannot create search component"
+msgstr "ئىزدەش بۆلىكى قۇرالمىدى"
+
+#: ../src/yelp-window.c:1538
+msgid "Fin_d:"
+msgstr "ئىزدە(_D):"
-#: src/yelp-window.c:1042
+#: ../src/yelp-window.c:1560
msgid "Find _Previous"
-msgstr "ئالدىنقىسىنى ئىزلەش"
+msgstr "ئالدىنقىنى ئىزدە(_P)"
-#: src/yelp-window.c:1147
-#, c-format
-msgid ""
-"A transformation context could not be created for the file ‘%s’. The format "
-"may not be supported."
-msgstr ""
-"ھۆججىتىنى ئايلاندۇرۇش مۇھىتىنى قۇرۇش ئىمكانىيىتى بولمىدى. ھۆججەتنىڭ فورماتى"
-"%s قوللىنىلمىسا كېرەك"
+#: ../src/yelp-window.c:1572
+msgid "Find _Next"
+msgstr "كېيىنكىسىنى ئىزدە(_N)"
-#: src/yelp-window.c:1177 src/yelp-window.c:1601 src/yelp-window.c:1668
-#, c-format
-msgid ""
-"The section ‘%s’ does not exist in this document. If you were directed to "
-"this section from a Help button in an application, please report this to the "
-"maintainers of that application."
-msgstr ""
-"ماقالىنىڭ %s بۆلۈمى مەۋجۈت ئەمەس. ئگەر بىرەر قوللىنىش پىروگراممىسىنىڭ ياردەم "
-"تۈگمىسىنى بۇ يەرگە ئۇلىنىدىغان قىلغان بولسىڭىز ئۇنداقتا شۇ پىروگراممىنىڭ "
-"داۋاملاشتۇرغۇچىسىبىلەن ئالاقىلىشىڭ"
+#: ../src/yelp-window.c:1585
+msgid "Phrase not found"
+msgstr "ئاتالغۇنى تاپالمىدى"
-#: src/yelp-window.c:1292
+#: ../src/yelp-window.c:1716
#, c-format
msgid ""
"The file ‘%s’ could not be read. This file might be missing, or you might "
"not have permissions to read it."
msgstr ""
-"ھۆججەت %s نى ئوقۇغىلى بولمىدى. يا ھۆججەت يوقالغان يا سىزنىڭ ئوقۇش رۇخسىتىڭىز "
-"يوق"
-
-#: src/yelp-window.c:1336
-msgid "Loading..."
-msgstr "...... قاچىلىنىۋاتىدۇ"
+"‘%s’ ھۆججەتنى ئوقۇيالمىدى. ھۆججەت يوقالغان ياكى بۇ ھۆججەتنى ئوقۇش ھوقۇقىڭىز "
+"يوق."
#. Note to translators: put here your name (and address) so it
#. * will show up in the "about" box
-#: src/yelp-window.c:2166
+#: ../src/yelp-window.c:2607
msgid "translator-credits"
msgstr ""
"GNOME Uighur Translation Project <gnome-uighur@yahoogroups.comAbduxukur "
-"Abdurixit <abduxukur.abdurixit@t-systems.ch>, 2005"
+"Abdurixit <abduxukur.abdurixit@t-systems.ch>, 2005\n"
+"\n"
+"Launchpad Contributions:\n"
+" Burkut https://launchpad.net/~burkut\n"
+" Gheyret T.Kenji https://launchpad.net/~gheyretkenji\n"
+" Sebastien Bacher https://launchpad.net/~seb128"
+
+#: ../src/yelp-window.c:2610
+msgid "Yelp"
+msgstr "Yelp"
-#: src/yelp-window.c:2171
+#: ../src/yelp-window.c:2612
msgid "A documentation browser and viewer for the Gnome Desktop."
-msgstr "نىڭ ماقالالە كۆرگۈچىسى Gnome Desktop"
+msgstr "Gnome Desktop نىڭ پۈتۈك كۆرگۈچىسى"
-#: src/yelp-xslt-pager.c:194
-#, c-format
-msgid ""
-"The file ‘%s’ could not be parsed. Either the file does not exist, or it is "
-"improperly formatted."
-msgstr ""
-"ھۆججەت %s نى ئانالىز قىلىش مۈمكىن ئەمەس. يا ھۆججەت مەۋجۈت ئەمەس يا نامۇۋاپىق "
-"فورماتلانغان"
+#: ../yelp.desktop.in.in.h:1
+#, fuzzy
+msgid "Get help with GNOME"
+msgstr "Ubuntu ياردىمىگە ئېرىش"
-#: src/yelp-xslt-pager.c:215 src/yelp-xslt-pager.c:228
-#, c-format
-msgid ""
-"The document ‘%s’ could not be processed. The file ‘%s’ is either missing, "
-"or it is not a valid XSLT stylesheet."
-msgstr ""
-" ماقالە %s نى بىر تەرەپ قىلىش مۈمكىن ئەمەس. يا ھۆججەت %s يۈتكەن يا ئىناۋەتلىك "
-"XSLT ئەمەس"
+#~ msgid "Accessories"
+#~ msgstr "قوشۇمچە زاپچاسلار"
-#: yelp.desktop.in.in.h:1
-msgid "Get help with GNOME"
-msgstr "دىن ياردەمگە ئېرىشمەك GNOME"
+#~ msgid "KDE"
+#~ msgstr "KDE"
+
+#~ msgid "Multimedia"
+#~ msgstr "ناخشا مۇزىكىلار"
+
+#~ msgid "Office"
+#~ msgstr "ئشخانا"
+
+#~ msgid "Other"
+#~ msgstr "باشقىلار"
+
+#~ msgid "Panel Applets"
+#~ msgstr "تاختىسىدىكى كىچىك پىروگراممىلار Desktop"
+
+#~ msgid "Programming"
+#~ msgstr "پىروگرامما تۈزەش"
+
+#~ msgid "<b>Fonts</b>"
+#~ msgstr "<b>:فونتلار<b>"
+
+#~ msgid "C_ase sensitive"
+#~ msgstr "(_A) چوڭ كىچىك ھەرپنى پەرقلەندۈرۈش"
+
+#~ msgid "_Wrap around"
+#~ msgstr "(_W) ئاپتوماتىك قۇر ئالمىشىش"
+
+#~ msgid "Yelp Factory"
+#~ msgstr "زاۋۇتى Yelp"
+
+#~ msgid "An unknown error occured"
+#~ msgstr "تونۇمىغان خاتالىق يۈز بەردى"
+
+#~ msgid "Could not read the table of contents"
+#~ msgstr "مۇندەرىجىنى ئوقۇيالمىدى"
+
+#~ msgid "Unsupported Format"
+#~ msgstr "قوللىمايدىغان فورمات"
+
+#~ msgid "Could not activate Yelp: '%s'"
+#~ msgstr "نى قوزغىتالمىدى Yelp: %s"
+
+#~ msgid "The YelpDocInfo struct of the document"
+#~ msgstr "قۇرۇلمىسى YelpDocInfo ماقالىنىڭ"
+
+#~ msgid "yelp-watermark-blockquote-201C"
+#~ msgstr "yelp-watermark-blockquote-201C"
+
+#~ msgid "YelpTocPager: Pause count is negative."
+#~ msgstr "قىسقا توختاش قېتىم سانى مەنپى سان :YelpTocPager"
+
+#~ msgid "Read man page for %s"
+#~ msgstr "بېتىنى ئوقۇش man نىڭ %s"
+
+#~ msgid "The Uniform Resource Identifier for the file is invalid."
+#~ msgstr "ھۆججەتنىڭ بىرلىككە كەلگەن مەنبە ئېنىقلىغۇچى ئىناۋەتسىز"
+
+#~ msgid ""
+#~ "The Uniform Resource Identifier ‘%s’ is invalid or does not point to an "
+#~ "actual file."
+#~ msgstr ""
+#~ " بىرلىككە كەلگەن مەنبە ئېنىقلىغۇچى %s ئىناۋەتسىز ياكى بىر ئەمىلى "
+#~ "ھۆججەتنى كۆرسەتمەيدۇ"
+
+#~ msgid ""
+#~ "SGML documents are no longer supported. Please ask the author of the "
+#~ "document to convert to XML."
+#~ msgstr ""
+#~ " فورمات SGML نى قوللاش ئەمەلدىن قالدۇرۇلدى. XML فورماتىغا ئايلاندۇرۇشنى "
+#~ "ماقالىنىڭ ئاپتورىدىن سوراڭ "
+
+#~ msgid ""
+#~ "A transformation context could not be created for the file ‘%s’. The "
+#~ "format may not be supported."
+#~ msgstr ""
+#~ "ھۆججىتىنى ئايلاندۇرۇش مۇھىتىنى قۇرۇش ئىمكانىيىتى بولمىدى. ھۆججەتنىڭ "
+#~ "فورماتى%s قوللىنىلمىسا كېرەك"
+
+#~ msgid ""
+#~ "The section ‘%s’ does not exist in this document. If you were directed to "
+#~ "this section from a Help button in an application, please report this to "
+#~ "the maintainers of that application."
+#~ msgstr ""
+#~ "ماقالىنىڭ %s بۆلۈمى مەۋجۈت ئەمەس. ئگەر بىرەر قوللىنىش پىروگراممىسىنىڭ "
+#~ "ياردەم تۈگمىسىنى بۇ يەرگە ئۇلىنىدىغان قىلغان بولسىڭىز ئۇنداقتا شۇ "
+#~ "پىروگراممىنىڭ داۋاملاشتۇرغۇچىسىبىلەن ئالاقىلىشىڭ"
+
+#, fuzzy
+#~ msgid "Library Functions"
+#~ msgstr "BTL فۇنكسىيىلىرى"
+
+#, fuzzy
+#~ msgid "Education Applications"
+#~ msgstr "KDE قوللىنىشچان پروگراممىلىرى"
+
+#, fuzzy
+#~ msgid "<b>Accessibility</b>"
+#~ msgstr "ياردەم ئىقتىدارى"
+
+#, fuzzy
+#~ msgid "<b>_Bookmarks:</b>"
+#~ msgstr "خەتكۈش(_B):"
+
+#, fuzzy
+#~ msgid "Find"
+#~ msgstr "ئىزدە(_D):"
+
+#, fuzzy
+#~ msgid "_Find: "
+#~ msgstr "ئىزدە(_D):"
+
+#, fuzzy
+#~ msgid "_Next"
+#~ msgstr "كېيىنكىسىنى ئىزدە(_N)"
+
+#, fuzzy
+#~ msgid "_Previous"
+#~ msgstr "ئالدىنقىنى ئىزدە(_P)"
+
+#, fuzzy
+#~ msgid "Could not load document"
+#~ msgstr "ھۆججەت ئوقۇيالمىدى"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is formatted incorrectly."
+#~ msgstr "‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكى ئۇچۇر بېتى فورماتقا ماس كەلمەيدۇ."
+
+#, fuzzy
+#~ msgid "Could not load the OMF file '%s'."
+#~ msgstr "ھۆججەتنى يېشەلمىدى"
+
+#, fuzzy
+#~ msgid ""
+#~ "The table of contents could not be loaded. The file ‘%s’ is either "
+#~ "missing or is not well-formed XML."
+#~ msgstr "XSLT ئۇسلۇب جەدۋىلى ‘%s’ يوقالغان ياكى ئىناۋەتسىز."
+
+#, fuzzy
+#~ msgid ""
+#~ "The table of contents could not be processed. The file ‘%s’ is either "
+#~ "missing or is not a valid XSLT stylesheet."
+#~ msgstr "XSLT ئۇسلۇب جەدۋىلى ‘%s’ يوقالغان ياكى ئىناۋەتسىز."
+
+#, fuzzy
+#~ msgid "Help Contents"
+#~ msgstr "مەزمۇن(_C)"
+
+#, fuzzy
+#~ msgid "GNU info pages are not supported in this version"
+#~ msgstr "بۇ پرىنتېردا بېسىشنى قوللىمايدۇ"
+
+#, fuzzy
+#~ msgid ""
+#~ "The file ‘%s’ could not be parsed. Either the file does not exist, or it "
+#~ "is improperly formatted."
+#~ msgstr "‘%s’ ھۆججەتنى يېشەلمىدى، چۈنكىman بەت فورماتىغا ماس كەلمەيدۇ."
+
+#~ msgid "Can't find the answer?"
+#~ msgstr "جاۋاب تېپىلمىدىمۇ؟"
+
+#~ msgid "Canonical, its partners and approved companies provide"
+#~ msgstr ""
+#~ "Canonical، ئۇنىڭ ھەمكارلاشقان شېرىكى ۋە ئىجازەت بېرىلگەن شىركىتى "
+#~ "تەمىنلىگەن"
+
+#~ msgid "Common Questions"
+#~ msgstr "ئادەتتىكى سوئاللار"
+
+#~ msgid "Connecting to the internet"
+#~ msgstr "ئىنتېرنېتقا ئۇلىنىۋاتىدۇ"
+
+#~ msgid "Enabling visual effects"
+#~ msgstr "Enabling visual effects"
+
+#~ msgid "General Guides"
+#~ msgstr "ئادەتتىكى كۆرسەتمىلەر"
+
+#~ msgid "How to Contribute"
+#~ msgstr "قانداق ھەسسە قوشىدۇ"
+
+#~ msgid "Importing photos"
+#~ msgstr "رەسىم ئەكىر"
+
+#~ msgid "Keeping your computer updated"
+#~ msgstr "كومپيۇتېر سىستېمىڭىزنى يېڭىلاپ تۇرۇڭ"
+
+#~ msgid "Playing music"
+#~ msgstr "مۇزىكا چال"
+
+#~ msgid "The Ubuntu community provides extensive"
+#~ msgstr "Ubuntu ئىجتىمائىي رايونى كېڭەيتىلمە تەمىنلىگەن"
+
+#~ msgid ""
+#~ "These guides used to be on the front page. Put here for safe keeping in "
+#~ "their own new section."
+#~ msgstr ""
+#~ "بۇ يېتەكچى باشلاش بېتى قىلىپ ئىشلىتىلىدۇ. ئۇلار ئۆزىنىڭ يېڭى بۆلىكىدە "
+#~ "بىخەتەرلىكنى ساقلايدۇ."
+
+#~ msgid "To find help, insert a keyword in the search bar"
+#~ msgstr "ياردەم ئىزدىسىڭىز، ئىزدەش ئىستونىغا ھالقىلىق سۆز كىرگۈزۈڭ"
+
+#~ msgid "Topics"
+#~ msgstr "تېما"
+
+#~ msgid "Ubuntu Help Center"
+#~ msgstr "Ubuntu ياردەم مەركىزى"
+
+#~ msgid "Ubuntu has an open and vibrant community of contributors. Find out"
+#~ msgstr ""
+#~ "Ubuntu ئوچۇق ۋە ھاياتىي كۈچكە تولغان تۆھپىكارلار ئىجتىمائىي رايونى بار. "
+#~ "چۈشىنىڭ"
+
+#~ msgid "Welcome to the Ubuntu Help Center"
+#~ msgstr "Ubuntu ياردەم مەركىزىگە خۇش كەپسىز"
+
+#~ msgid "commercial technical support"
+#~ msgstr "تاۋارلاشقان تېخنىكىلىق قوللاش"
+
+#~ msgid "free support"
+#~ msgstr "ھەقسىز قوللاش"
+
+#~ msgid "how to contribute"
+#~ msgstr "قانداق تۆھپە قوشىدۇ"
+
+#~ msgid "http://www.ubuntu.com/community/participate"
+#~ msgstr "http://www.ubuntu.com/community/participate"
+
+#~ msgid "http://www.ubuntu.com/support/free"
+#~ msgstr "http://www.ubuntu.com/support/free"
+
+#~ msgid "http://www.ubuntu.com/support/paid"
+#~ msgstr "http://www.ubuntu.com/support/paid"
+
+#~ msgid "the Ubuntu Help Pages"
+#~ msgstr "Ubuntu ياردەم بېتى"
diff --git a/src/Makefile.am b/src/Makefile.am
index d2f4625c..fa4cdd90 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,22 +5,10 @@ yelp_SOURCES = \
yelp-window.c yelp-window.h \
yelp.c
-# yelp-base.c yelp-base.h \
-# yelp-bookmarks.c yelp-bookmarks.h \
-# yelp-error.c yelp-error.h \
-# yelp-html.c yelp-html.h \
-# yelp-io-channel.c yelp-io-channel.h \
-# yelp-utils.c yelp-utils.h \
-# yelp-window.c yelp-window.h \
-# yelp-marshal.c yelp-marshal.h \
# yelp-toc.h yelp-toc.c \
# yelp-db-print.c yelp-db-print.h \
-# yelp-mallard.h yelp-mallard.c \
# yelp-man-parser.c yelp-man-parser.h \
# yelp-man.c yelp-man.h \
-# yelp-info.c yelp-info.h \
-# yelp-info-parser.c yelp-info-parser.h \
-# gtkentryaction.c gtkentryaction.h \
# yelp-search.c yelp-search.h \
# yelp-search-parser.c yelp-search-parser.h
@@ -40,87 +28,28 @@ YELP_DEFINES = \
yelp_CFLAGS = \
-I$(top_srcdir)/libyelp \
$(YELP_CFLAGS) \
- $(YELP_SEARCH_CFLAGS) \
$(AM_CFLAGS) \
$(YELP_DEFINES)
yelp_LDADD = \
$(top_builddir)/libyelp/libyelp.la \
$(YELP_LIBS) \
- $(YELP_SEARCH_LIBS) \
$(POPT_LIBS) \
- $(Z_LIBS) \
- $(BZ_LIBS) \
- $(LZMADEC_LIBS) \
$(X_LIBS)
yelp_LDFLAGS = $(AM_LDFLAGS)
-if WITH_SMCLIENT
-yelp_SOURCES += \
- eggdesktopfile.c \
- eggdesktopfile.h \
- eggsmclient.c \
- eggsmclient.h \
- eggsmclient-private.h \
- $(NULL)
-yelp_CFLAGS += $(SMCLIENT_CFLAGS)
-yelp_LDADD += $(SMCLIENT_LIBS)
-if WITH_SMCLIENT_XSMP
-yelp_SOURCES += eggsmclient-xsmp.c
-yelp_CFLAGS += -DEGG_SM_CLIENT_BACKEND_XSMP
-endif
-if WITH_SMCLIENT_WIN32
-yelp_SOURCES += eggsmclient-win32.c
-endif
-if WITH_SMCLIENT_QUARTZ
-yelp_SOURCES += eggsmclient-osx.c
-endif
-endif
-
-BUILT_SOURCES = \
- yelp-dbus.h \
- yelp-marshal.h \
- stamp-yelp-marshal.h \
- yelp-marshal.c \
- server-bindings.h \
- client-bindings.h
+BUILT_SOURCES = yelp-dbus.h
noinst_HEADERS = $(BUILT_SOURCES)
yelp-dbus.h: yelp-dbus.xml
dbus-binding-tool --prefix=yelp --mode=glib-server $<> $@
-server-bindings.h: yelp-infos.xml
- dbus-binding-tool --prefix=server_object --mode=glib-server $< > $@
-
-client-bindings.h: yelp-infos.xml
- dbus-binding-tool --prefix=server_object --mode=glib-client $< > $@
-
-yelp-marshal.h: stamp-yelp-marshal.h
- @true
-
-stamp-yelp-marshal.h: yelp-marshal.list
- @GLIB_GENMARSHAL@ --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --header > xgen-ymh \
- && (cmp -s xgen-ymh yelp-marshal.h || cp xgen-ymh yelp-marshal.h) \
- && rm -f xgen-ymh xgen-ymh~ \
- && echo timestamp > $(@F)
-
-yelp-marshal.c: yelp-marshal.list
- @GLIB_GENMARSHAL@ --prefix=yelp_marshal $(srcdir)/yelp-marshal.list --body > xgen-ymc \
- && cp xgen-ymc yelp-marshal.c \
- && rm -f xgen-ymc xgen-ymc~
-
-yelp-marshal-main.c: yelp-marshal.c
-
-CLEANFILES = xgen-ymh xgen-ymc
-
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
-EXTRA_DIST = yelp-marshal.list yelp-infos.xml yelp-print.c yelp-print.h
-
-
+EXTRA_DIST = yelp-dbus.xml
install-exec-hook:
rm -f $(DESTDIR)$(bindir)/gnome-help && \
diff --git a/src/eggdesktopfile.c b/src/eggdesktopfile.c
deleted file mode 100644
index 357e548f..00000000
--- a/src/eggdesktopfile.c
+++ /dev/null
@@ -1,1477 +0,0 @@
-/* eggdesktopfile.c - Freedesktop.Org Desktop Files
- * Copyright (C) 2007 Novell, Inc.
- *
- * Based on gnome-desktop-item.c
- * Copyright (C) 1999, 2000 Red Hat Inc.
- * Copyright (C) 2001 George Lebl
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; see the file COPYING.LIB. If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place -
- * Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "eggdesktopfile.h"
-
-#include <string.h>
-#include <unistd.h>
-
-#include <glib/gi18n.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
-
-struct EggDesktopFile {
- GKeyFile *key_file;
- char *source;
-
- char *name, *icon;
- EggDesktopFileType type;
- char document_code;
-};
-
-/**
- * egg_desktop_file_new:
- * @desktop_file_path: path to a Freedesktop-style Desktop file
- * @error: error pointer
- *
- * Creates a new #EggDesktopFile for @desktop_file.
- *
- * Return value: the new #EggDesktopFile, or %NULL on error.
- **/
-EggDesktopFile *
-egg_desktop_file_new (const char *desktop_file_path, GError **error)
-{
- GKeyFile *key_file;
-
- key_file = g_key_file_new ();
- if (!g_key_file_load_from_file (key_file, desktop_file_path, 0, error))
- {
- g_key_file_free (key_file);
- return NULL;
- }
-
- return egg_desktop_file_new_from_key_file (key_file, desktop_file_path,
- error);
-}
-
-/**
- * egg_desktop_file_new_from_data_dirs:
- * @desktop_file_path: relative path to a Freedesktop-style Desktop file
- * @error: error pointer
- *
- * Looks for @desktop_file_path in the paths returned from
- * g_get_user_data_dir() and g_get_system_data_dirs(), and creates
- * a new #EggDesktopFile from it.
- *
- * Return value: the new #EggDesktopFile, or %NULL on error.
- **/
-EggDesktopFile *
-egg_desktop_file_new_from_data_dirs (const char *desktop_file_path,
- GError **error)
-{
- EggDesktopFile *desktop_file;
- GKeyFile *key_file;
- char *full_path;
-
- key_file = g_key_file_new ();
- if (!g_key_file_load_from_data_dirs (key_file, desktop_file_path,
- &full_path, 0, error))
- {
- g_key_file_free (key_file);
- return NULL;
- }
-
- desktop_file = egg_desktop_file_new_from_key_file (key_file,
- full_path,
- error);
- g_free (full_path);
- return desktop_file;
-}
-
-/**
- * egg_desktop_file_new_from_dirs:
- * @desktop_file_path: relative path to a Freedesktop-style Desktop file
- * @search_dirs: NULL-terminated array of directories to search
- * @error: error pointer
- *
- * Looks for @desktop_file_path in the paths returned from
- * g_get_user_data_dir() and g_get_system_data_dirs(), and creates
- * a new #EggDesktopFile from it.
- *
- * Return value: the new #EggDesktopFile, or %NULL on error.
- **/
-EggDesktopFile *
-egg_desktop_file_new_from_dirs (const char *desktop_file_path,
- const char **search_dirs,
- GError **error)
-{
- EggDesktopFile *desktop_file;
- GKeyFile *key_file;
- char *full_path;
-
- key_file = g_key_file_new ();
- if (!g_key_file_load_from_dirs (key_file, desktop_file_path, search_dirs,
- &full_path, 0, error))
- {
- g_key_file_free (key_file);
- return NULL;
- }
-
- desktop_file = egg_desktop_file_new_from_key_file (key_file,
- full_path,
- error);
- g_free (full_path);
- return desktop_file;
-}
-
-/**
- * egg_desktop_file_new_from_key_file:
- * @key_file: a #GKeyFile representing a desktop file
- * @source: the path or URI that @key_file was loaded from, or %NULL
- * @error: error pointer
- *
- * Creates a new #EggDesktopFile for @key_file. Assumes ownership of
- * @key_file (on success or failure); you should consider @key_file to
- * be freed after calling this function.
- *
- * Return value: the new #EggDesktopFile, or %NULL on error.
- **/
-EggDesktopFile *
-egg_desktop_file_new_from_key_file (GKeyFile *key_file,
- const char *source,
- GError **error)
-{
- EggDesktopFile *desktop_file;
- char *version, *type;
-
- if (!g_key_file_has_group (key_file, EGG_DESKTOP_FILE_GROUP))
- {
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_INVALID,
- _("File is not a valid .desktop file"));
- g_key_file_free (key_file);
- return NULL;
- }
-
- version = g_key_file_get_value (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_VERSION,
- NULL);
- if (version)
- {
- double version_num;
- char *end;
-
- version_num = g_ascii_strtod (version, &end);
- if (*end)
- {
- g_warning ("Invalid Version string '%s' in %s",
- version, source ? source : "(unknown)");
- }
- else if (version_num > 1.0)
- {
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_INVALID,
- _("Unrecognized desktop file Version '%s'"), version);
- g_free (version);
- g_key_file_free (key_file);
- return NULL;
- }
- g_free (version);
- }
-
- desktop_file = g_new0 (EggDesktopFile, 1);
- desktop_file->key_file = key_file;
-
- if (g_path_is_absolute (source))
- desktop_file->source = g_filename_to_uri (source, NULL, NULL);
- else
- desktop_file->source = g_strdup (source);
-
- desktop_file->name = g_key_file_get_string (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_NAME, error);
- if (!desktop_file->name)
- {
- egg_desktop_file_free (desktop_file);
- return NULL;
- }
-
- type = g_key_file_get_string (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_TYPE, error);
- if (!type)
- {
- egg_desktop_file_free (desktop_file);
- return NULL;
- }
-
- if (!strcmp (type, "Application"))
- {
- char *exec, *p;
-
- desktop_file->type = EGG_DESKTOP_FILE_TYPE_APPLICATION;
-
- exec = g_key_file_get_string (key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_EXEC,
- error);
- if (!exec)
- {
- egg_desktop_file_free (desktop_file);
- g_free (type);
- return NULL;
- }
-
- /* See if it takes paths or URIs or neither */
- for (p = exec; *p; p++)
- {
- if (*p == '%')
- {
- if (p[1] == '\0' || strchr ("FfUu", p[1]))
- {
- desktop_file->document_code = p[1];
- break;
- }
- p++;
- }
- }
-
- g_free (exec);
- }
- else if (!strcmp (type, "Link"))
- {
- char *url;
-
- desktop_file->type = EGG_DESKTOP_FILE_TYPE_LINK;
-
- url = g_key_file_get_string (key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_URL,
- error);
- if (!url)
- {
- egg_desktop_file_free (desktop_file);
- g_free (type);
- return NULL;
- }
- g_free (url);
- }
- else if (!strcmp (type, "Directory"))
- desktop_file->type = EGG_DESKTOP_FILE_TYPE_DIRECTORY;
- else
- desktop_file->type = EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED;
-
- g_free (type);
-
- /* Check the Icon key */
- desktop_file->icon = g_key_file_get_string (key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_ICON,
- NULL);
- if (desktop_file->icon && !g_path_is_absolute (desktop_file->icon))
- {
- char *ext;
-
- /* Lots of .desktop files still get this wrong */
- ext = strrchr (desktop_file->icon, '.');
- if (ext && (!strcmp (ext, ".png") ||
- !strcmp (ext, ".xpm") ||
- !strcmp (ext, ".svg")))
- {
- g_warning ("Desktop file '%s' has malformed Icon key '%s'"
- "(should not include extension)",
- source ? source : "(unknown)",
- desktop_file->icon);
- *ext = '\0';
- }
- }
-
- return desktop_file;
-}
-
-/**
- * egg_desktop_file_free:
- * @desktop_file: an #EggDesktopFile
- *
- * Frees @desktop_file.
- **/
-void
-egg_desktop_file_free (EggDesktopFile *desktop_file)
-{
- g_key_file_free (desktop_file->key_file);
- g_free (desktop_file->source);
- g_free (desktop_file->name);
- g_free (desktop_file->icon);
- g_free (desktop_file);
-}
-
-/**
- * egg_desktop_file_get_source:
- * @desktop_file: an #EggDesktopFile
- *
- * Gets the URI that @desktop_file was loaded from.
- *
- * Return value: @desktop_file's source URI
- **/
-const char *
-egg_desktop_file_get_source (EggDesktopFile *desktop_file)
-{
- return desktop_file->source;
-}
-
-/**
- * egg_desktop_file_get_desktop_file_type:
- * @desktop_file: an #EggDesktopFile
- *
- * Gets the desktop file type of @desktop_file.
- *
- * Return value: @desktop_file's type
- **/
-EggDesktopFileType
-egg_desktop_file_get_desktop_file_type (EggDesktopFile *desktop_file)
-{
- return desktop_file->type;
-}
-
-/**
- * egg_desktop_file_get_name:
- * @desktop_file: an #EggDesktopFile
- *
- * Gets the (localized) value of @desktop_file's "Name" key.
- *
- * Return value: the application/link name
- **/
-const char *
-egg_desktop_file_get_name (EggDesktopFile *desktop_file)
-{
- return desktop_file->name;
-}
-
-/**
- * egg_desktop_file_get_icon:
- * @desktop_file: an #EggDesktopFile
- *
- * Gets the value of @desktop_file's "Icon" key.
- *
- * If the icon string is a full path (that is, if g_path_is_absolute()
- * returns %TRUE when called on it), it points to a file containing an
- * unthemed icon. If the icon string is not a full path, it is the
- * name of a themed icon, which can be looked up with %GtkIconTheme,
- * or passed directly to a theme-aware widget like %GtkImage or
- * %GtkCellRendererPixbuf.
- *
- * Return value: the icon path or name
- **/
-const char *
-egg_desktop_file_get_icon (EggDesktopFile *desktop_file)
-{
- return desktop_file->icon;
-}
-
-gboolean
-egg_desktop_file_has_key (EggDesktopFile *desktop_file,
- const char *key,
- GError **error)
-{
- return g_key_file_has_key (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key,
- error);
-}
-
-char *
-egg_desktop_file_get_string (EggDesktopFile *desktop_file,
- const char *key,
- GError **error)
-{
- return g_key_file_get_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key,
- error);
-}
-
-char *
-egg_desktop_file_get_locale_string (EggDesktopFile *desktop_file,
- const char *key,
- const char *locale,
- GError **error)
-{
- return g_key_file_get_locale_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key, locale,
- error);
-}
-
-gboolean
-egg_desktop_file_get_boolean (EggDesktopFile *desktop_file,
- const char *key,
- GError **error)
-{
- return g_key_file_get_boolean (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key,
- error);
-}
-
-double
-egg_desktop_file_get_numeric (EggDesktopFile *desktop_file,
- const char *key,
- GError **error)
-{
- return g_key_file_get_double (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key,
- error);
-}
-
-char **
-egg_desktop_file_get_string_list (EggDesktopFile *desktop_file,
- const char *key,
- gsize *length,
- GError **error)
-{
- return g_key_file_get_string_list (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key, length,
- error);
-}
-
-char **
-egg_desktop_file_get_locale_string_list (EggDesktopFile *desktop_file,
- const char *key,
- const char *locale,
- gsize *length,
- GError **error)
-{
- return g_key_file_get_locale_string_list (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP, key,
- locale, length,
- error);
-}
-
-/**
- * egg_desktop_file_can_launch:
- * @desktop_file: an #EggDesktopFile
- * @desktop_environment: the name of the running desktop environment,
- * or %NULL
- *
- * Tests if @desktop_file can/should be launched in the current
- * environment. If @desktop_environment is non-%NULL, @desktop_file's
- * "OnlyShowIn" and "NotShowIn" keys are checked to make sure that
- * this desktop_file is appropriate for the named environment.
- *
- * Furthermore, if @desktop_file has type
- * %EGG_DESKTOP_FILE_TYPE_APPLICATION, its "TryExec" key (if any) is
- * also checked, to make sure the binary it points to exists.
- *
- * egg_desktop_file_can_launch() does NOT check the value of the
- * "Hidden" key.
- *
- * Return value: %TRUE if @desktop_file can be launched
- **/
-gboolean
-egg_desktop_file_can_launch (EggDesktopFile *desktop_file,
- const char *desktop_environment)
-{
- char *try_exec, *found_program;
- char **only_show_in, **not_show_in;
- gboolean found;
- int i;
-
- if (desktop_file->type != EGG_DESKTOP_FILE_TYPE_APPLICATION &&
- desktop_file->type != EGG_DESKTOP_FILE_TYPE_LINK)
- return FALSE;
-
- if (desktop_environment)
- {
- only_show_in = g_key_file_get_string_list (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_ONLY_SHOW_IN,
- NULL, NULL);
- if (only_show_in)
- {
- for (i = 0, found = FALSE; only_show_in[i] && !found; i++)
- {
- if (!strcmp (only_show_in[i], desktop_environment))
- found = TRUE;
- }
-
- g_strfreev (only_show_in);
-
- if (!found)
- return FALSE;
- }
-
- not_show_in = g_key_file_get_string_list (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_NOT_SHOW_IN,
- NULL, NULL);
- if (not_show_in)
- {
- for (i = 0, found = FALSE; not_show_in[i] && !found; i++)
- {
- if (!strcmp (not_show_in[i], desktop_environment))
- found = TRUE;
- }
-
- g_strfreev (not_show_in);
-
- if (found)
- return FALSE;
- }
- }
-
- if (desktop_file->type == EGG_DESKTOP_FILE_TYPE_APPLICATION)
- {
- try_exec = g_key_file_get_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_TRY_EXEC,
- NULL);
- if (try_exec)
- {
- found_program = g_find_program_in_path (try_exec);
- g_free (try_exec);
-
- if (!found_program)
- return FALSE;
- g_free (found_program);
- }
- }
-
- return TRUE;
-}
-
-/**
- * egg_desktop_file_accepts_documents:
- * @desktop_file: an #EggDesktopFile
- *
- * Tests if @desktop_file represents an application that can accept
- * documents on the command line.
- *
- * Return value: %TRUE or %FALSE
- **/
-gboolean
-egg_desktop_file_accepts_documents (EggDesktopFile *desktop_file)
-{
- return desktop_file->document_code != 0;
-}
-
-/**
- * egg_desktop_file_accepts_multiple:
- * @desktop_file: an #EggDesktopFile
- *
- * Tests if @desktop_file can accept multiple documents at once.
- *
- * If this returns %FALSE, you can still pass multiple documents to
- * egg_desktop_file_launch(), but that will result in multiple copies
- * of the application being launched. See egg_desktop_file_launch()
- * for more details.
- *
- * Return value: %TRUE or %FALSE
- **/
-gboolean
-egg_desktop_file_accepts_multiple (EggDesktopFile *desktop_file)
-{
- return (desktop_file->document_code == 'F' ||
- desktop_file->document_code == 'U');
-}
-
-/**
- * egg_desktop_file_accepts_uris:
- * @desktop_file: an #EggDesktopFile
- *
- * Tests if @desktop_file can accept (non-"file:") URIs as documents to
- * open.
- *
- * Return value: %TRUE or %FALSE
- **/
-gboolean
-egg_desktop_file_accepts_uris (EggDesktopFile *desktop_file)
-{
- return (desktop_file->document_code == 'U' ||
- desktop_file->document_code == 'u');
-}
-
-static void
-append_quoted_word (GString *str,
- const char *s,
- gboolean in_single_quotes,
- gboolean in_double_quotes)
-{
- const char *p;
-
- if (!in_single_quotes && !in_double_quotes)
- g_string_append_c (str, '\'');
- else if (!in_single_quotes && in_double_quotes)
- g_string_append (str, "\"'");
-
- if (!strchr (s, '\''))
- g_string_append (str, s);
- else
- {
- for (p = s; *p != '\0'; p++)
- {
- if (*p == '\'')
- g_string_append (str, "'\\''");
- else
- g_string_append_c (str, *p);
- }
- }
-
- if (!in_single_quotes && !in_double_quotes)
- g_string_append_c (str, '\'');
- else if (!in_single_quotes && in_double_quotes)
- g_string_append (str, "'\"");
-}
-
-static void
-do_percent_subst (EggDesktopFile *desktop_file,
- char code,
- GString *str,
- GSList **documents,
- gboolean in_single_quotes,
- gboolean in_double_quotes)
-{
- GSList *d;
- char *doc;
-
- switch (code)
- {
- case '%':
- g_string_append_c (str, '%');
- break;
-
- case 'F':
- case 'U':
- for (d = *documents; d; d = d->next)
- {
- doc = d->data;
- g_string_append (str, " ");
- append_quoted_word (str, doc, in_single_quotes, in_double_quotes);
- }
- *documents = NULL;
- break;
-
- case 'f':
- case 'u':
- if (*documents)
- {
- doc = (*documents)->data;
- g_string_append (str, " ");
- append_quoted_word (str, doc, in_single_quotes, in_double_quotes);
- *documents = (*documents)->next;
- }
- break;
-
- case 'i':
- if (desktop_file->icon)
- {
- g_string_append (str, "--icon ");
- append_quoted_word (str, desktop_file->icon,
- in_single_quotes, in_double_quotes);
- }
- break;
-
- case 'c':
- if (desktop_file->name)
- {
- append_quoted_word (str, desktop_file->name,
- in_single_quotes, in_double_quotes);
- }
- break;
-
- case 'k':
- if (desktop_file->source)
- {
- append_quoted_word (str, desktop_file->source,
- in_single_quotes, in_double_quotes);
- }
- break;
-
- case 'D':
- case 'N':
- case 'd':
- case 'n':
- case 'v':
- case 'm':
- /* Deprecated; skip */
- break;
-
- default:
- g_warning ("Unrecognized %%-code '%%%c' in Exec", code);
- break;
- }
-}
-
-static char *
-parse_exec (EggDesktopFile *desktop_file,
- GSList **documents,
- GError **error)
-{
- char *exec, *p, *command;
- gboolean escape, single_quot, double_quot;
- GString *gs;
-
- exec = g_key_file_get_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_EXEC,
- error);
- if (!exec)
- return NULL;
-
- /* Build the command */
- gs = g_string_new (NULL);
- escape = single_quot = double_quot = FALSE;
-
- for (p = exec; *p != '\0'; p++)
- {
- if (escape)
- {
- escape = FALSE;
- g_string_append_c (gs, *p);
- }
- else if (*p == '\\')
- {
- if (!single_quot)
- escape = TRUE;
- g_string_append_c (gs, *p);
- }
- else if (*p == '\'')
- {
- g_string_append_c (gs, *p);
- if (!single_quot && !double_quot)
- single_quot = TRUE;
- else if (single_quot)
- single_quot = FALSE;
- }
- else if (*p == '"')
- {
- g_string_append_c (gs, *p);
- if (!single_quot && !double_quot)
- double_quot = TRUE;
- else if (double_quot)
- double_quot = FALSE;
- }
- else if (*p == '%' && p[1])
- {
- do_percent_subst (desktop_file, p[1], gs, documents,
- single_quot, double_quot);
- p++;
- }
- else
- g_string_append_c (gs, *p);
- }
-
- g_free (exec);
- command = g_string_free (gs, FALSE);
-
- /* Prepend "xdg-terminal " if needed (FIXME: use gvfs) */
- if (g_key_file_has_key (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_TERMINAL,
- NULL))
- {
- GError *terminal_error = NULL;
- gboolean use_terminal =
- g_key_file_get_boolean (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_TERMINAL,
- &terminal_error);
- if (terminal_error)
- {
- g_free (command);
- g_propagate_error (error, terminal_error);
- return NULL;
- }
-
- if (use_terminal)
- {
- gs = g_string_new ("xdg-terminal ");
- append_quoted_word (gs, command, FALSE, FALSE);
- g_free (command);
- command = g_string_free (gs, FALSE);
- }
- }
-
- return command;
-}
-
-static GSList *
-translate_document_list (EggDesktopFile *desktop_file, GSList *documents)
-{
- gboolean accepts_uris = egg_desktop_file_accepts_uris (desktop_file);
- GSList *ret, *d;
-
- for (d = documents, ret = NULL; d; d = d->next)
- {
- const char *document = d->data;
- gboolean is_uri = !g_path_is_absolute (document);
- char *translated;
-
- if (accepts_uris)
- {
- if (is_uri)
- translated = g_strdup (document);
- else
- translated = g_filename_to_uri (document, NULL, NULL);
- }
- else
- {
- if (is_uri)
- translated = g_filename_from_uri (document, NULL, NULL);
- else
- translated = g_strdup (document);
- }
-
- if (translated)
- ret = g_slist_prepend (ret, translated);
- }
-
- return g_slist_reverse (ret);
-}
-
-static void
-free_document_list (GSList *documents)
-{
- GSList *d;
-
- for (d = documents; d; d = d->next)
- g_free (d->data);
- g_slist_free (documents);
-}
-
-/**
- * egg_desktop_file_parse_exec:
- * @desktop_file: a #EggDesktopFile
- * @documents: a list of document paths or URIs
- * @error: error pointer
- *
- * Parses @desktop_file's Exec key, inserting @documents into it, and
- * returns the result.
- *
- * If @documents contains non-file: URIs and @desktop_file does not
- * accept URIs, those URIs will be ignored. Likewise, if @documents
- * contains more elements than @desktop_file accepts, the extra
- * documents will be ignored.
- *
- * Return value: the parsed Exec string
- **/
-char *
-egg_desktop_file_parse_exec (EggDesktopFile *desktop_file,
- GSList *documents,
- GError **error)
-{
- GSList *translated, *docs;
- char *command;
-
- docs = translated = translate_document_list (desktop_file, documents);
- command = parse_exec (desktop_file, &docs, error);
- free_document_list (translated);
-
- return command;
-}
-
-static gboolean
-parse_link (EggDesktopFile *desktop_file,
- EggDesktopFile **app_desktop_file,
- GSList **documents,
- GError **error)
-{
- char *url;
- GKeyFile *key_file;
-
- url = g_key_file_get_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_URL,
- error);
- if (!url)
- return FALSE;
- *documents = g_slist_prepend (NULL, url);
-
- /* FIXME: use gvfs */
- key_file = g_key_file_new ();
- g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_NAME,
- "xdg-open");
- g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_TYPE,
- "Application");
- g_key_file_set_string (key_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_EXEC,
- "xdg-open %u");
- *app_desktop_file = egg_desktop_file_new_from_key_file (key_file, NULL, NULL);
- return TRUE;
-}
-
-#if GTK_CHECK_VERSION (2, 12, 0)
-static char *
-start_startup_notification (GdkDisplay *display,
- EggDesktopFile *desktop_file,
- const char *argv0,
- int screen,
- int workspace,
- guint32 launch_time)
-{
- static int sequence = 0;
- char *startup_id;
- char *description, *wmclass;
- char *screen_str, *workspace_str;
-
- if (g_key_file_has_key (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY,
- NULL))
- {
- if (!g_key_file_get_boolean (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY,
- NULL))
- return NULL;
- wmclass = NULL;
- }
- else
- {
- wmclass = g_key_file_get_string (desktop_file->key_file,
- EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_STARTUP_WM_CLASS,
- NULL);
- if (!wmclass)
- return NULL;
- }
-
- if (launch_time == (guint32)-1)
- launch_time = gdk_x11_display_get_user_time (display);
- startup_id = g_strdup_printf ("%s-%lu-%s-%s-%d_TIME%lu",
- g_get_prgname (),
- (unsigned long)getpid (),
- g_get_host_name (),
- argv0,
- sequence++,
- (unsigned long)launch_time);
-
- description = g_strdup_printf (_("Starting %s"), desktop_file->name);
- screen_str = g_strdup_printf ("%d", screen);
- workspace_str = workspace == -1 ? NULL : g_strdup_printf ("%d", workspace);
-
- gdk_x11_display_broadcast_startup_message (display, "new",
- "ID", startup_id,
- "NAME", desktop_file->name,
- "SCREEN", screen_str,
- "BIN", argv0,
- "ICON", desktop_file->icon,
- "DESKTOP", workspace_str,
- "DESCRIPTION", description,
- "WMCLASS", wmclass,
- NULL);
-
- g_free (description);
- g_free (wmclass);
- g_free (screen_str);
- g_free (workspace_str);
-
- return startup_id;
-}
-
-static void
-end_startup_notification (GdkDisplay *display,
- const char *startup_id)
-{
- gdk_x11_display_broadcast_startup_message (display, "remove",
- "ID", startup_id,
- NULL);
-}
-
-#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */)
-
-typedef struct {
- GdkDisplay *display;
- char *startup_id;
-} StartupNotificationData;
-
-static gboolean
-startup_notification_timeout (gpointer data)
-{
- StartupNotificationData *sn_data = data;
-
- end_startup_notification (sn_data->display, sn_data->startup_id);
- g_object_unref (sn_data->display);
- g_free (sn_data->startup_id);
- g_free (sn_data);
-
- return FALSE;
-}
-
-static void
-set_startup_notification_timeout (GdkDisplay *display,
- const char *startup_id)
-{
- StartupNotificationData *sn_data;
-
- sn_data = g_new (StartupNotificationData, 1);
- sn_data->display = g_object_ref (display);
- sn_data->startup_id = g_strdup (startup_id);
-
- g_timeout_add_seconds (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH,
- startup_notification_timeout, sn_data);
-}
-#endif /* GTK 2.12 */
-
-static GPtrArray *
-array_putenv (GPtrArray *env, char *variable)
-{
- guint i, keylen;
-
- if (!env)
- {
- char **envp;
-
- env = g_ptr_array_new ();
-
- envp = g_listenv ();
- for (i = 0; envp[i]; i++)
- {
- const char *value;
-
- value = g_getenv (envp[i]);
- g_ptr_array_add (env, g_strdup_printf ("%s=%s", envp[i],
- value ? value : ""));
- }
- g_strfreev (envp);
- }
-
- keylen = strcspn (variable, "=");
-
- /* Remove old value of key */
- for (i = 0; i < env->len; i++)
- {
- char *envvar = env->pdata[i];
-
- if (!strncmp (envvar, variable, keylen) && envvar[keylen] == '=')
- {
- g_free (envvar);
- g_ptr_array_remove_index_fast (env, i);
- break;
- }
- }
-
- /* Add new value */
- g_ptr_array_add (env, g_strdup (variable));
-
- return env;
-}
-
-static gboolean
-egg_desktop_file_launchv (EggDesktopFile *desktop_file,
- GSList *documents, va_list args,
- GError **error)
-{
- EggDesktopFileLaunchOption option;
- GSList *translated_documents = NULL, *docs = NULL;
- char *command, **argv;
- int argc, i, screen_num;
- gboolean success, current_success;
- GdkDisplay *display;
- char *startup_id;
-
- GPtrArray *env = NULL;
- char **variables = NULL;
- GdkScreen *screen = NULL;
- int workspace = -1;
- const char *directory = NULL;
- guint32 launch_time = (guint32)-1;
- GSpawnFlags flags = G_SPAWN_SEARCH_PATH;
- GSpawnChildSetupFunc setup_func = NULL;
- gpointer setup_data = NULL;
-
- GPid *ret_pid = NULL;
- int *ret_stdin = NULL, *ret_stdout = NULL, *ret_stderr = NULL;
- char **ret_startup_id = NULL;
-
- if (documents && desktop_file->document_code == 0)
- {
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
- _("Application does not accept documents on command line"));
- return FALSE;
- }
-
- /* Read the options: technically it's incorrect for the caller to
- * NULL-terminate the list of options (rather than 0-terminating
- * it), but NULL-terminating lets us use G_GNUC_NULL_TERMINATED,
- * it's more consistent with other glib/gtk methods, and it will
- * work as long as sizeof (int) <= sizeof (NULL), and NULL is
- * represented as 0. (Which is true everywhere we care about.)
- */
- while ((option = va_arg (args, EggDesktopFileLaunchOption)))
- {
- switch (option)
- {
- case EGG_DESKTOP_FILE_LAUNCH_CLEARENV:
- if (env)
- g_ptr_array_free (env, TRUE);
- env = g_ptr_array_new ();
- break;
- case EGG_DESKTOP_FILE_LAUNCH_PUTENV:
- variables = va_arg (args, char **);
- for (i = 0; variables[i]; i++)
- env = array_putenv (env, variables[i]);
- break;
-
- case EGG_DESKTOP_FILE_LAUNCH_SCREEN:
- screen = va_arg (args, GdkScreen *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_WORKSPACE:
- workspace = va_arg (args, int);
- break;
-
- case EGG_DESKTOP_FILE_LAUNCH_DIRECTORY:
- directory = va_arg (args, const char *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_TIME:
- launch_time = va_arg (args, guint32);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_FLAGS:
- flags |= va_arg (args, GSpawnFlags);
- /* Make sure they didn't set any flags that don't make sense. */
- flags &= ~G_SPAWN_FILE_AND_ARGV_ZERO;
- break;
- case EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC:
- setup_func = va_arg (args, GSpawnChildSetupFunc);
- setup_data = va_arg (args, gpointer);
- break;
-
- case EGG_DESKTOP_FILE_LAUNCH_RETURN_PID:
- ret_pid = va_arg (args, GPid *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE:
- ret_stdin = va_arg (args, int *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE:
- ret_stdout = va_arg (args, int *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE:
- ret_stderr = va_arg (args, int *);
- break;
- case EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID:
- ret_startup_id = va_arg (args, char **);
- break;
-
- default:
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION,
- _("Unrecognized launch option: %d"),
- GPOINTER_TO_INT (option));
- success = FALSE;
- goto out;
- }
- }
-
- if (screen)
- {
- char *display_name = gdk_screen_make_display_name (screen);
- char *display_env = g_strdup_printf ("DISPLAY=%s", display_name);
- env = array_putenv (env, display_env);
- g_free (display_name);
- g_free (display_env);
-
- display = gdk_screen_get_display (screen);
- }
- else
- {
- display = gdk_display_get_default ();
- screen = gdk_display_get_default_screen (display);
- }
- screen_num = gdk_screen_get_number (screen);
-
- translated_documents = translate_document_list (desktop_file, documents);
- docs = translated_documents;
-
- success = FALSE;
-
- do
- {
- command = parse_exec (desktop_file, &docs, error);
- if (!command)
- goto out;
-
- if (!g_shell_parse_argv (command, &argc, &argv, error))
- {
- g_free (command);
- goto out;
- }
- g_free (command);
-
-#if GTK_CHECK_VERSION (2, 12, 0)
- startup_id = start_startup_notification (display, desktop_file,
- argv[0], screen_num,
- workspace, launch_time);
- if (startup_id)
- {
- char *startup_id_env = g_strdup_printf ("DESKTOP_STARTUP_ID=%s",
- startup_id);
- env = array_putenv (env, startup_id_env);
- g_free (startup_id_env);
- }
-#else
- startup_id = NULL;
-#endif /* GTK 2.12 */
-
- if (env != NULL)
- g_ptr_array_add (env, NULL);
-
- current_success =
- g_spawn_async_with_pipes (directory,
- argv,
- env ? (char **)(env->pdata) : NULL,
- flags,
- setup_func, setup_data,
- ret_pid,
- ret_stdin, ret_stdout, ret_stderr,
- error);
- g_strfreev (argv);
-
- if (startup_id)
- {
-#if GTK_CHECK_VERSION (2, 12, 0)
- if (current_success)
- {
- set_startup_notification_timeout (display, startup_id);
-
- if (ret_startup_id)
- *ret_startup_id = startup_id;
- else
- g_free (startup_id);
- }
- else
-#endif /* GTK 2.12 */
- g_free (startup_id);
- }
- else if (ret_startup_id)
- *ret_startup_id = NULL;
-
- if (current_success)
- {
- /* If we successfully launch any instances of the app, make
- * sure we return TRUE and don't set @error.
- */
- success = TRUE;
- error = NULL;
-
- /* Also, only set the output params on the first one */
- ret_pid = NULL;
- ret_stdin = ret_stdout = ret_stderr = NULL;
- ret_startup_id = NULL;
- }
- }
- while (docs && current_success);
-
- out:
- if (env)
- {
- g_strfreev ((char **)env->pdata);
- g_ptr_array_free (env, FALSE);
- }
- free_document_list (translated_documents);
-
- return success;
-}
-
-/**
- * egg_desktop_file_launch:
- * @desktop_file: an #EggDesktopFile
- * @documents: a list of URIs or paths to documents to open
- * @error: error pointer
- * @...: additional options
- *
- * Launches @desktop_file with the given arguments. Additional options
- * can be specified as follows:
- *
- * %EGG_DESKTOP_FILE_LAUNCH_CLEARENV: (no arguments)
- * clears the environment in the child process
- * %EGG_DESKTOP_FILE_LAUNCH_PUTENV: (char **variables)
- * adds the NAME=VALUE strings in the given %NULL-terminated
- * array to the child process's environment
- * %EGG_DESKTOP_FILE_LAUNCH_SCREEN: (GdkScreen *screen)
- * causes the application to be launched on the given screen
- * %EGG_DESKTOP_FILE_LAUNCH_WORKSPACE: (int workspace)
- * causes the application to be launched on the given workspace
- * %EGG_DESKTOP_FILE_LAUNCH_DIRECTORY: (char *dir)
- * causes the application to be launched in the given directory
- * %EGG_DESKTOP_FILE_LAUNCH_TIME: (guint32 launch_time)
- * sets the "launch time" for the application. If the user
- * interacts with another window after @launch_time but before
- * the launched application creates its first window, the window
- * manager may choose to not give focus to the new application.
- * Passing 0 for @launch_time will explicitly request that the
- * application not receive focus.
- * %EGG_DESKTOP_FILE_LAUNCH_FLAGS (GSpawnFlags flags)
- * Sets additional #GSpawnFlags to use. See g_spawn_async() for
- * more details.
- * %EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC (GSpawnChildSetupFunc, gpointer)
- * Sets the child setup callback and the data to pass to it.
- * (See g_spawn_async() for more details.)
- *
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_PID (GPid **pid)
- * On a successful launch, sets *@pid to the PID of the launched
- * application.
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID (char **startup_id)
- * On a successful launch, sets *@startup_id to the Startup
- * Notification "startup id" of the launched application.
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE (int *fd)
- * On a successful launch, sets *@fd to the file descriptor of
- * a pipe connected to the application's stdin.
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE (int *fd)
- * On a successful launch, sets *@fd to the file descriptor of
- * a pipe connected to the application's stdout.
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE (int *fd)
- * On a successful launch, sets *@fd to the file descriptor of
- * a pipe connected to the application's stderr.
- *
- * The options should be terminated with a single %NULL.
- *
- * If @documents contains multiple documents, but
- * egg_desktop_file_accepts_multiple() returns %FALSE for
- * @desktop_file, then egg_desktop_file_launch() will actually launch
- * multiple instances of the application. In that case, the return
- * value (as well as any values passed via
- * %EGG_DESKTOP_FILE_LAUNCH_RETURN_PID, etc) will only reflect the
- * first instance of the application that was launched (but the
- * %EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC will be called for each
- * instance).
- *
- * Return value: %TRUE if the application was successfully launched.
- **/
-gboolean
-egg_desktop_file_launch (EggDesktopFile *desktop_file,
- GSList *documents, GError **error,
- ...)
-{
- va_list args;
- gboolean success;
- EggDesktopFile *app_desktop_file;
-
- switch (desktop_file->type)
- {
- case EGG_DESKTOP_FILE_TYPE_APPLICATION:
- va_start (args, error);
- success = egg_desktop_file_launchv (desktop_file, documents,
- args, error);
- va_end (args);
- break;
-
- case EGG_DESKTOP_FILE_TYPE_LINK:
- if (documents)
- {
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
- _("Can't pass document URIs to a 'Type=Link' desktop entry"));
- return FALSE;
- }
-
- if (!parse_link (desktop_file, &app_desktop_file, &documents, error))
- return FALSE;
-
- va_start (args, error);
- success = egg_desktop_file_launchv (app_desktop_file, documents,
- args, error);
- va_end (args);
-
- egg_desktop_file_free (app_desktop_file);
- free_document_list (documents);
- break;
-
- default:
- g_set_error (error, EGG_DESKTOP_FILE_ERROR,
- EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
- _("Not a launchable item"));
- success = FALSE;
- break;
- }
-
- return success;
-}
-
-
-GQuark
-egg_desktop_file_error_quark (void)
-{
- return g_quark_from_static_string ("egg-desktop_file-error-quark");
-}
-
-
-G_LOCK_DEFINE_STATIC (egg_desktop_file);
-static EggDesktopFile *egg_desktop_file;
-
-/**
- * egg_set_desktop_file:
- * @desktop_file_path: path to the application's desktop file
- *
- * Creates an #EggDesktopFile for the application from the data at
- * @desktop_file_path. This will also call g_set_application_name()
- * with the localized application name from the desktop file, and
- * gtk_window_set_default_icon_name() or
- * gtk_window_set_default_icon_from_file() with the application's
- * icon. Other code may use additional information from the desktop
- * file.
- *
- * Note that for thread safety reasons, this function can only
- * be called once.
- **/
-void
-egg_set_desktop_file (const char *desktop_file_path)
-{
- GError *error = NULL;
-
- G_LOCK (egg_desktop_file);
- if (egg_desktop_file)
- egg_desktop_file_free (egg_desktop_file);
-
- egg_desktop_file = egg_desktop_file_new (desktop_file_path, &error);
- if (error)
- {
- g_warning ("Could not load desktop file '%s': %s",
- desktop_file_path, error->message);
- g_error_free (error);
- }
-
- if (egg_desktop_file) {
- /* Set localized application name and default window icon */
- if (egg_desktop_file->name)
- g_set_application_name (egg_desktop_file->name);
- if (egg_desktop_file->icon)
- {
- if (g_path_is_absolute (egg_desktop_file->icon))
- gtk_window_set_default_icon_from_file (egg_desktop_file->icon, NULL);
- else
- gtk_window_set_default_icon_name (egg_desktop_file->icon);
- }
- }
-
- G_UNLOCK (egg_desktop_file);
-}
-
-/**
- * egg_get_desktop_file:
- *
- * Gets the application's #EggDesktopFile, as set by
- * egg_set_desktop_file().
- *
- * Return value: the #EggDesktopFile, or %NULL if it hasn't been set.
- **/
-EggDesktopFile *
-egg_get_desktop_file (void)
-{
- EggDesktopFile *retval;
-
- G_LOCK (egg_desktop_file);
- retval = egg_desktop_file;
- G_UNLOCK (egg_desktop_file);
-
- return retval;
-}
diff --git a/src/eggsmclient-osx.c b/src/eggsmclient-osx.c
deleted file mode 100644
index 6f3c4818..00000000
--- a/src/eggsmclient-osx.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (C) 2007 Novell, Inc.
- * Copyright (C) 2008 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* EggSMClientOSX
- *
- * For details on the OS X logout process, see:
- * http://developer.apple.com/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/BootProcess.html#//apple_ref/doc/uid/20002130-114618
- *
- * EggSMClientOSX registers for the kAEQuitApplication AppleEvent; the
- * handler we register (quit_requested()) will be invoked from inside
- * the quartz event-handling code (specifically, from inside
- * [NSApplication nextEventMatchingMask]) when an AppleEvent arrives.
- * We use AESuspendTheCurrentEvent() and AEResumeTheCurrentEvent() to
- * allow asynchronous / non-main-loop-reentering processing of the
- * quit request. (These are part of the Carbon framework; it doesn't
- * seem to be possible to handle AppleEvents asynchronously from
- * Cocoa.)
- */
-
-#include "config.h"
-
-#include "eggsmclient-private.h"
-#include <gdk/gdkquartz.h>
-#include <Carbon/Carbon.h>
-#include <CoreServices/CoreServices.h>
-
-#define EGG_TYPE_SM_CLIENT_OSX (egg_sm_client_osx_get_type ())
-#define EGG_SM_CLIENT_OSX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT_OSX, EggSMClientOSX))
-#define EGG_SM_CLIENT_OSX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT_OSX, EggSMClientOSXClass))
-#define EGG_IS_SM_CLIENT_OSX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT_OSX))
-#define EGG_IS_SM_CLIENT_OSX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT_OSX))
-#define EGG_SM_CLIENT_OSX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT_OSX, EggSMClientOSXClass))
-
-typedef struct _EggSMClientOSX EggSMClientOSX;
-typedef struct _EggSMClientOSXClass EggSMClientOSXClass;
-
-struct _EggSMClientOSX {
- EggSMClient parent;
-
- AppleEvent quit_event, quit_reply;
- gboolean quit_requested, quitting;
-};
-
-struct _EggSMClientOSXClass
-{
- EggSMClientClass parent_class;
-
-};
-
-static void sm_client_osx_startup (EggSMClient *client,
- const char *client_id);
-static void sm_client_osx_will_quit (EggSMClient *client,
- gboolean will_quit);
-static gboolean sm_client_osx_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation);
-
-static pascal OSErr quit_requested (const AppleEvent *, AppleEvent *, long);
-
-G_DEFINE_TYPE (EggSMClientOSX, egg_sm_client_osx, EGG_TYPE_SM_CLIENT)
-
-static void
-egg_sm_client_osx_init (EggSMClientOSX *osx)
-{
- ;
-}
-
-static void
-egg_sm_client_osx_class_init (EggSMClientOSXClass *klass)
-{
- EggSMClientClass *sm_client_class = EGG_SM_CLIENT_CLASS (klass);
-
- sm_client_class->startup = sm_client_osx_startup;
- sm_client_class->will_quit = sm_client_osx_will_quit;
- sm_client_class->end_session = sm_client_osx_end_session;
-}
-
-EggSMClient *
-egg_sm_client_osx_new (void)
-{
- return g_object_new (EGG_TYPE_SM_CLIENT_OSX, NULL);
-}
-
-static void
-sm_client_osx_startup (EggSMClient *client,
- const char *client_id)
-{
- AEInstallEventHandler (kCoreEventClass, kAEQuitApplication,
- NewAEEventHandlerUPP (quit_requested),
- (long)GPOINTER_TO_SIZE (client), false);
-}
-
-static gboolean
-idle_quit_requested (gpointer client)
-{
- egg_sm_client_quit_requested (client);
- return FALSE;
-}
-
-static pascal OSErr
-quit_requested (const AppleEvent *aevt, AppleEvent *reply, long refcon)
-{
- EggSMClient *client = GSIZE_TO_POINTER ((gsize)refcon);
- EggSMClientOSX *osx = GSIZE_TO_POINTER ((gsize)refcon);
-
- g_return_val_if_fail (!osx->quit_requested, userCanceledErr);
-
- /* FIXME AEInteractWithUser? */
-
- osx->quit_requested = TRUE;
- AEDuplicateDesc (aevt, &osx->quit_event);
- AEDuplicateDesc (reply, &osx->quit_reply);
- AESuspendTheCurrentEvent (aevt);
-
- /* Don't emit the "quit_requested" signal immediately, since we're
- * called from a weird point in the guts of gdkeventloop-quartz.c
- */
- g_idle_add (idle_quit_requested, client);
- return noErr;
-}
-
-static pascal OSErr
-quit_requested_resumed (const AppleEvent *aevt, AppleEvent *reply, long refcon)
-{
- EggSMClientOSX *osx = GSIZE_TO_POINTER ((gsize)refcon);
-
- osx->quit_requested = FALSE;
- return osx->quitting ? noErr : userCanceledErr;
-}
-
-static gboolean
-idle_will_quit (gpointer client)
-{
- EggSMClientOSX *osx = (EggSMClientOSX *)client;
-
- /* Resume the event with a new handler that will return a value to
- * the system.
- */
- AEResumeTheCurrentEvent (&osx->quit_event, &osx->quit_reply,
- NewAEEventHandlerUPP (quit_requested_resumed),
- (long)GPOINTER_TO_SIZE (client));
- AEDisposeDesc (&osx->quit_event);
- AEDisposeDesc (&osx->quit_reply);
-
- if (osx->quitting)
- egg_sm_client_quit (client);
- return FALSE;
-}
-
-static void
-sm_client_osx_will_quit (EggSMClient *client,
- gboolean will_quit)
-{
- EggSMClientOSX *osx = (EggSMClientOSX *)client;
-
- g_return_if_fail (osx->quit_requested);
-
- osx->quitting = will_quit;
-
- /* Finish in an idle handler since the caller might have called
- * egg_sm_client_will_quit() from inside the "quit_requested" signal
- * handler, but may not expect the "quit" signal to arrive during
- * the _will_quit() call.
- */
- g_idle_add (idle_will_quit, client);
-}
-
-static gboolean
-sm_client_osx_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation)
-{
- static const ProcessSerialNumber loginwindow_psn = { 0, kSystemProcess };
- AppleEvent event = { typeNull, NULL }, reply = { typeNull, NULL };
- AEAddressDesc target;
- AEEventID id;
- OSErr err;
-
- switch (style)
- {
- case EGG_SM_CLIENT_END_SESSION_DEFAULT:
- case EGG_SM_CLIENT_LOGOUT:
- id = request_confirmation ? kAELogOut : kAEReallyLogOut;
- break;
- case EGG_SM_CLIENT_REBOOT:
- id = request_confirmation ? kAEShowRestartDialog : kAERestart;
- break;
- case EGG_SM_CLIENT_SHUTDOWN:
- id = request_confirmation ? kAEShowShutdownDialog : kAEShutDown;
- break;
- }
-
- err = AECreateDesc (typeProcessSerialNumber, &loginwindow_psn,
- sizeof (loginwindow_psn), &target);
- if (err != noErr)
- {
- g_warning ("Could not create descriptor for loginwindow: %d", err);
- return FALSE;
- }
-
- err = AECreateAppleEvent (kCoreEventClass, id, &target,
- kAutoGenerateReturnID, kAnyTransactionID,
- &event);
- AEDisposeDesc (&target);
- if (err != noErr)
- {
- g_warning ("Could not create logout AppleEvent: %d", err);
- return FALSE;
- }
-
- err = AESend (&event, &reply, kAENoReply, kAENormalPriority,
- kAEDefaultTimeout, NULL, NULL);
- AEDisposeDesc (&event);
- if (err == noErr)
- AEDisposeDesc (&reply);
-
- return err == noErr;
-}
diff --git a/src/eggsmclient-private.h b/src/eggsmclient-private.h
deleted file mode 100644
index ccb10bfc..00000000
--- a/src/eggsmclient-private.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* eggsmclient-private.h
- * Copyright (C) 2007 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_SM_CLIENT_PRIVATE_H__
-#define __EGG_SM_CLIENT_PRIVATE_H__
-
-#include <gdkconfig.h>
-#include "eggsmclient.h"
-
-G_BEGIN_DECLS
-
-GKeyFile *egg_sm_client_save_state (EggSMClient *client);
-void egg_sm_client_quit_requested (EggSMClient *client);
-void egg_sm_client_quit_cancelled (EggSMClient *client);
-void egg_sm_client_quit (EggSMClient *client);
-
-#if defined (GDK_WINDOWING_X11)
-# ifdef EGG_SM_CLIENT_BACKEND_XSMP
-GType egg_sm_client_xsmp_get_type (void);
-EggSMClient *egg_sm_client_xsmp_new (void);
-# endif
-# ifdef EGG_SM_CLIENT_BACKEND_DBUS
-GType egg_sm_client_dbus_get_type (void);
-EggSMClient *egg_sm_client_dbus_new (void);
-# endif
-#elif defined (GDK_WINDOWING_WIN32)
-GType egg_sm_client_win32_get_type (void);
-EggSMClient *egg_sm_client_win32_new (void);
-#elif defined (GDK_WINDOWING_QUARTZ)
-GType egg_sm_client_osx_get_type (void);
-EggSMClient *egg_sm_client_osx_new (void);
-#endif
-
-G_END_DECLS
-
-
-#endif /* __EGG_SM_CLIENT_PRIVATE_H__ */
diff --git a/src/eggsmclient-win32.c b/src/eggsmclient-win32.c
deleted file mode 100644
index 91a25715..00000000
--- a/src/eggsmclient-win32.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Copyright (C) 2007 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* EggSMClientWin32
- *
- * For details on the Windows XP logout process, see:
- * http://msdn.microsoft.com/en-us/library/aa376876.aspx.
- *
- * Vista adds some new APIs which EggSMClient does not make use of; see
- * http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx
- *
- * When shutting down, Windows sends every top-level window a
- * WM_QUERYENDSESSION event, which the application must respond to
- * synchronously, saying whether or not it will quit. To avoid main
- * loop re-entrancy problems (and to avoid having to muck about too
- * much with the guts of the gdk-win32 main loop), we watch for this
- * event in a separate thread, which then signals the main thread and
- * waits for the main thread to handle the event. Since we don't want
- * to require g_thread_init() to be called, we do this all using
- * Windows-specific thread methods.
- *
- * After the application handles the WM_QUERYENDSESSION event,
- * Windows then sends it a WM_ENDSESSION event with a TRUE or FALSE
- * parameter indicating whether the session is or is not actually
- * going to end now. We handle this from the other thread as well.
- *
- * As mentioned above, Vista introduces several additional new APIs
- * that don't fit into the (current) EggSMClient API. Windows also has
- * an entirely separate shutdown-notification scheme for non-GUI apps,
- * which we also don't handle here.
- */
-
-#include "config.h"
-
-#include "eggsmclient-private.h"
-#include <gdk/gdk.h>
-
-#define WIN32_LEAN_AND_MEAN
-#define UNICODE
-#include <windows.h>
-#include <process.h>
-
-#define EGG_TYPE_SM_CLIENT_WIN32 (egg_sm_client_win32_get_type ())
-#define EGG_SM_CLIENT_WIN32(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT_WIN32, EggSMClientWin32))
-#define EGG_SM_CLIENT_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT_WIN32, EggSMClientWin32Class))
-#define EGG_IS_SM_CLIENT_WIN32(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT_WIN32))
-#define EGG_IS_SM_CLIENT_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT_WIN32))
-#define EGG_SM_CLIENT_WIN32_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT_WIN32, EggSMClientWin32Class))
-
-typedef struct _EggSMClientWin32 EggSMClientWin32;
-typedef struct _EggSMClientWin32Class EggSMClientWin32Class;
-
-struct _EggSMClientWin32 {
- EggSMClient parent;
-
- HANDLE message_event, response_event;
-
- volatile GSourceFunc event;
- volatile gboolean will_quit;
-};
-
-struct _EggSMClientWin32Class
-{
- EggSMClientClass parent_class;
-
-};
-
-static void sm_client_win32_startup (EggSMClient *client,
- const char *client_id);
-static void sm_client_win32_will_quit (EggSMClient *client,
- gboolean will_quit);
-static gboolean sm_client_win32_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation);
-
-static GSource *g_win32_handle_source_add (HANDLE handle, GSourceFunc callback,
- gpointer user_data);
-static gboolean got_message (gpointer user_data);
-static void sm_client_thread (gpointer data);
-
-G_DEFINE_TYPE (EggSMClientWin32, egg_sm_client_win32, EGG_TYPE_SM_CLIENT)
-
-static void
-egg_sm_client_win32_init (EggSMClientWin32 *win32)
-{
- ;
-}
-
-static void
-egg_sm_client_win32_class_init (EggSMClientWin32Class *klass)
-{
- EggSMClientClass *sm_client_class = EGG_SM_CLIENT_CLASS (klass);
-
- sm_client_class->startup = sm_client_win32_startup;
- sm_client_class->will_quit = sm_client_win32_will_quit;
- sm_client_class->end_session = sm_client_win32_end_session;
-}
-
-EggSMClient *
-egg_sm_client_win32_new (void)
-{
- return g_object_new (EGG_TYPE_SM_CLIENT_WIN32, NULL);
-}
-
-static void
-sm_client_win32_startup (EggSMClient *client,
- const char *client_id)
-{
- EggSMClientWin32 *win32 = (EggSMClientWin32 *)client;
-
- win32->message_event = CreateEvent (NULL, FALSE, FALSE, NULL);
- win32->response_event = CreateEvent (NULL, FALSE, FALSE, NULL);
- g_win32_handle_source_add (win32->message_event, got_message, win32);
- _beginthread (sm_client_thread, 0, client);
-}
-
-static void
-sm_client_win32_will_quit (EggSMClient *client,
- gboolean will_quit)
-{
- EggSMClientWin32 *win32 = (EggSMClientWin32 *)client;
-
- win32->will_quit = will_quit;
- SetEvent (win32->response_event);
-}
-
-static gboolean
-sm_client_win32_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation)
-{
- UINT uFlags = EWX_LOGOFF;
-
- switch (style)
- {
- case EGG_SM_CLIENT_END_SESSION_DEFAULT:
- case EGG_SM_CLIENT_LOGOUT:
- uFlags = EWX_LOGOFF;
- break;
- case EGG_SM_CLIENT_REBOOT:
- uFlags = EWX_REBOOT;
- break;
- case EGG_SM_CLIENT_SHUTDOWN:
- uFlags = EWX_POWEROFF;
- break;
- }
-
- /* There's no way to make ExitWindowsEx() show a logout dialog, so
- * we ignore @request_confirmation.
- */
-
-#ifdef SHTDN_REASON_FLAG_PLANNED
- ExitWindowsEx (uFlags, SHTDN_REASON_FLAG_PLANNED);
-#else
- ExitWindowsEx (uFlags, 0);
-#endif
-
- return TRUE;
-}
-
-
-/* callbacks from logout-listener thread */
-
-static gboolean
-emit_quit_requested (gpointer smclient)
-{
- gdk_threads_enter ();
- egg_sm_client_quit_requested (smclient);
- gdk_threads_leave ();
-
- return FALSE;
-}
-
-static gboolean
-emit_quit (gpointer smclient)
-{
- EggSMClientWin32 *win32 = smclient;
-
- gdk_threads_enter ();
- egg_sm_client_quit (smclient);
- gdk_threads_leave ();
-
- SetEvent (win32->response_event);
- return FALSE;
-}
-
-static gboolean
-emit_quit_cancelled (gpointer smclient)
-{
- EggSMClientWin32 *win32 = smclient;
-
- gdk_threads_enter ();
- egg_sm_client_quit_cancelled (smclient);
- gdk_threads_leave ();
-
- SetEvent (win32->response_event);
- return FALSE;
-}
-
-static gboolean
-got_message (gpointer smclient)
-{
- EggSMClientWin32 *win32 = smclient;
-
- win32->event (win32);
- return TRUE;
-}
-
-/* Windows HANDLE GSource */
-
-typedef struct {
- GSource source;
- GPollFD pollfd;
-} GWin32HandleSource;
-
-static gboolean
-g_win32_handle_source_prepare (GSource *source, gint *timeout)
-{
- *timeout = -1;
- return FALSE;
-}
-
-static gboolean
-g_win32_handle_source_check (GSource *source)
-{
- GWin32HandleSource *hsource = (GWin32HandleSource *)source;
-
- return hsource->pollfd.revents;
-}
-
-static gboolean
-g_win32_handle_source_dispatch (GSource *source, GSourceFunc callback, gpointer user_data)
-{
- return (*callback) (user_data);
-}
-
-static void
-g_win32_handle_source_finalize (GSource *source)
-{
- ;
-}
-
-GSourceFuncs g_win32_handle_source_funcs = {
- g_win32_handle_source_prepare,
- g_win32_handle_source_check,
- g_win32_handle_source_dispatch,
- g_win32_handle_source_finalize
-};
-
-static GSource *
-g_win32_handle_source_add (HANDLE handle, GSourceFunc callback, gpointer user_data)
-{
- GWin32HandleSource *hsource;
- GSource *source;
-
- source = g_source_new (&g_win32_handle_source_funcs, sizeof (GWin32HandleSource));
- hsource = (GWin32HandleSource *)source;
- hsource->pollfd.fd = (int)handle;
- hsource->pollfd.events = G_IO_IN;
- hsource->pollfd.revents = 0;
- g_source_add_poll (source, &hsource->pollfd);
-
- g_source_set_callback (source, callback, user_data, NULL);
- g_source_attach (source, NULL);
- return source;
-}
-
-/* logout-listener thread */
-
-LRESULT CALLBACK
-sm_client_win32_window_procedure (HWND hwnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
-{
- EggSMClientWin32 *win32 =
- (EggSMClientWin32 *)GetWindowLongPtr (hwnd, GWLP_USERDATA);
-
- switch (message)
- {
- case WM_QUERYENDSESSION:
- win32->event = emit_quit_requested;
- SetEvent (win32->message_event);
-
- WaitForSingleObject (win32->response_event, INFINITE);
- return win32->will_quit;
-
- case WM_ENDSESSION:
- if (wParam)
- {
- /* The session is ending */
- win32->event = emit_quit;
- }
- else
- {
- /* Nope, the session *isn't* ending */
- win32->event = emit_quit_cancelled;
- }
-
- SetEvent (win32->message_event);
- WaitForSingleObject (win32->response_event, INFINITE);
-
- return 0;
-
- default:
- return DefWindowProc (hwnd, message, wParam, lParam);
- }
-}
-
-static void
-sm_client_thread (gpointer smclient)
-{
- HINSTANCE instance;
- WNDCLASSEXW wcl;
- ATOM klass;
- HWND window;
- MSG msg;
-
- instance = GetModuleHandle (NULL);
-
- memset (&wcl, 0, sizeof (WNDCLASSEX));
- wcl.cbSize = sizeof (WNDCLASSEX);
- wcl.lpfnWndProc = sm_client_win32_window_procedure;
- wcl.hInstance = instance;
- wcl.lpszClassName = L"EggSmClientWindow";
- klass = RegisterClassEx (&wcl);
-
- window = CreateWindowEx (0, MAKEINTRESOURCE (klass),
- L"EggSmClientWindow", 0,
- 10, 10, 50, 50, GetDesktopWindow (),
- NULL, instance, NULL);
- SetWindowLongPtr (window, GWLP_USERDATA, (LONG_PTR)smclient);
-
- /* main loop */
- while (GetMessage (&msg, NULL, 0, 0))
- DispatchMessage (&msg);
-}
diff --git a/src/eggsmclient-xsmp.c b/src/eggsmclient-xsmp.c
deleted file mode 100644
index 81af7d2b..00000000
--- a/src/eggsmclient-xsmp.c
+++ /dev/null
@@ -1,1405 +0,0 @@
-/*
- * Copyright (C) 2007 Novell, Inc.
- *
- * Inspired by various other pieces of code including GsmClient (C)
- * 2001 Havoc Pennington, GnomeClient (C) 1998 Carsten Schaar, and twm
- * session code (C) 1998 The Open Group.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include "eggsmclient.h"
-#include "eggsmclient-private.h"
-
-#include "eggdesktopfile.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <X11/SM/SMlib.h>
-
-#include <gdk/gdk.h>
-
-#define EGG_TYPE_SM_CLIENT_XSMP (egg_sm_client_xsmp_get_type ())
-#define EGG_SM_CLIENT_XSMP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMP))
-#define EGG_SM_CLIENT_XSMP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass))
-#define EGG_IS_SM_CLIENT_XSMP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT_XSMP))
-#define EGG_IS_SM_CLIENT_XSMP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT_XSMP))
-#define EGG_SM_CLIENT_XSMP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass))
-
-typedef struct _EggSMClientXSMP EggSMClientXSMP;
-typedef struct _EggSMClientXSMPClass EggSMClientXSMPClass;
-
-/* These mostly correspond to the similarly-named states in section
- * 9.1 of the XSMP spec. Some of the states there aren't represented
- * here, because we don't need them. SHUTDOWN_CANCELLED is slightly
- * different from the spec; we use it when the client is IDLE after a
- * ShutdownCancelled message, but the application is still interacting
- * and doesn't know the shutdown has been cancelled yet.
- */
-typedef enum
-{
- XSMP_STATE_IDLE,
- XSMP_STATE_SAVE_YOURSELF,
- XSMP_STATE_INTERACT_REQUEST,
- XSMP_STATE_INTERACT,
- XSMP_STATE_SAVE_YOURSELF_DONE,
- XSMP_STATE_SHUTDOWN_CANCELLED,
- XSMP_STATE_CONNECTION_CLOSED
-} EggSMClientXSMPState;
-
-static const char *state_names[] = {
- "idle",
- "save-yourself",
- "interact-request",
- "interact",
- "save-yourself-done",
- "shutdown-cancelled",
- "connection-closed"
-};
-
-#define EGG_SM_CLIENT_XSMP_STATE(xsmp) (state_names[(xsmp)->state])
-
-struct _EggSMClientXSMP
-{
- EggSMClient parent;
-
- SmcConn connection;
- char *client_id;
-
- EggSMClientXSMPState state;
- char **restart_command;
- gboolean set_restart_command;
- int restart_style;
- char **discard_command;
- gboolean set_discard_command;
-
- guint idle;
-
- /* Current SaveYourself state */
- guint expecting_initial_save_yourself : 1;
- guint need_save_state : 1;
- guint need_quit_requested : 1;
- guint interact_errors : 1;
- guint shutting_down : 1;
-
- /* Todo list */
- guint waiting_to_set_initial_properties : 1;
- guint waiting_to_emit_quit : 1;
- guint waiting_to_emit_quit_cancelled : 1;
- guint waiting_to_save_myself : 1;
-
-};
-
-struct _EggSMClientXSMPClass
-{
- EggSMClientClass parent_class;
-
-};
-
-static void sm_client_xsmp_startup (EggSMClient *client,
- const char *client_id);
-static void sm_client_xsmp_set_restart_command (EggSMClient *client,
- int argc,
- const char **argv);
-static void sm_client_xsmp_set_discard_command (EggSMClient *client,
- int argc,
- const char **argv);
-static void sm_client_xsmp_will_quit (EggSMClient *client,
- gboolean will_quit);
-static gboolean sm_client_xsmp_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation);
-
-static void xsmp_save_yourself (SmcConn smc_conn,
- SmPointer client_data,
- int save_style,
- Bool shutdown,
- int interact_style,
- Bool fast);
-static void xsmp_die (SmcConn smc_conn,
- SmPointer client_data);
-static void xsmp_save_complete (SmcConn smc_conn,
- SmPointer client_data);
-static void xsmp_shutdown_cancelled (SmcConn smc_conn,
- SmPointer client_data);
-static void xsmp_interact (SmcConn smc_conn,
- SmPointer client_data);
-
-static SmProp *array_prop (const char *name,
- ...);
-static SmProp *ptrarray_prop (const char *name,
- GPtrArray *values);
-static SmProp *string_prop (const char *name,
- const char *value);
-static SmProp *card8_prop (const char *name,
- unsigned char value);
-
-static void set_properties (EggSMClientXSMP *xsmp, ...);
-static void delete_properties (EggSMClientXSMP *xsmp, ...);
-
-static GPtrArray *generate_command (char **argv,
- const char *client_id,
- const char *state_file);
-
-static void save_state (EggSMClientXSMP *xsmp);
-static void do_save_yourself (EggSMClientXSMP *xsmp);
-static void update_pending_events (EggSMClientXSMP *xsmp);
-
-static void ice_init (void);
-static gboolean process_ice_messages (IceConn ice_conn);
-static void smc_error_handler (SmcConn smc_conn,
- Bool swap,
- int offending_minor_opcode,
- unsigned long offending_sequence,
- int error_class,
- int severity,
- SmPointer values);
-
-G_DEFINE_TYPE (EggSMClientXSMP, egg_sm_client_xsmp, EGG_TYPE_SM_CLIENT)
-
-static void
-egg_sm_client_xsmp_init (EggSMClientXSMP *xsmp)
-{
- xsmp->state = XSMP_STATE_CONNECTION_CLOSED;
- xsmp->connection = NULL;
- xsmp->restart_style = SmRestartIfRunning;
-}
-
-static void
-egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass)
-{
- EggSMClientClass *sm_client_class = EGG_SM_CLIENT_CLASS (klass);
-
- sm_client_class->startup = sm_client_xsmp_startup;
- sm_client_class->set_restart_command = sm_client_xsmp_set_restart_command;
- sm_client_class->set_discard_command = sm_client_xsmp_set_discard_command;
- sm_client_class->will_quit = sm_client_xsmp_will_quit;
- sm_client_class->end_session = sm_client_xsmp_end_session;
-}
-
-EggSMClient *
-egg_sm_client_xsmp_new (void)
-{
- if (!g_getenv ("SESSION_MANAGER"))
- return NULL;
-
- return g_object_new (EGG_TYPE_SM_CLIENT_XSMP, NULL);
-}
-
-static gboolean
-sm_client_xsmp_set_initial_properties (gpointer user_data)
-{
- EggSMClientXSMP *xsmp = user_data;
- EggDesktopFile *desktop_file;
- GPtrArray *clone, *restart;
- char pid_str[64];
-
- if (xsmp->idle)
- {
- g_source_remove (xsmp->idle);
- xsmp->idle = 0;
- }
- xsmp->waiting_to_set_initial_properties = FALSE;
-
- if (egg_sm_client_get_mode () == EGG_SM_CLIENT_MODE_NO_RESTART)
- xsmp->restart_style = SmRestartNever;
-
- /* Parse info out of desktop file */
- desktop_file = egg_get_desktop_file ();
- if (desktop_file)
- {
- GError *err = NULL;
- char *cmdline, **argv;
- int argc;
-
- if (xsmp->restart_style == SmRestartIfRunning)
- {
- if (egg_desktop_file_get_boolean (desktop_file,
- "X-GNOME-AutoRestart", NULL))
- xsmp->restart_style = SmRestartImmediately;
- }
-
- if (!xsmp->set_restart_command)
- {
- cmdline = egg_desktop_file_parse_exec (desktop_file, NULL, &err);
- if (cmdline && g_shell_parse_argv (cmdline, &argc, &argv, &err))
- {
- egg_sm_client_set_restart_command (EGG_SM_CLIENT (xsmp),
- argc, (const char **)argv);
- g_strfreev (argv);
- }
- else
- {
- g_warning ("Could not parse Exec line in desktop file: %s",
- err->message);
- g_error_free (err);
- }
- g_free (cmdline);
- }
- }
-
- if (!xsmp->set_restart_command)
- xsmp->restart_command = g_strsplit (g_get_prgname (), " ", -1);
-
- clone = generate_command (xsmp->restart_command, NULL, NULL);
- restart = generate_command (xsmp->restart_command, xsmp->client_id, NULL);
-
- g_debug ("Setting initial properties");
-
- /* Program, CloneCommand, RestartCommand, and UserID are required.
- * ProcessID isn't required, but the SM may be able to do something
- * useful with it.
- */
- g_snprintf (pid_str, sizeof (pid_str), "%lu", (gulong) getpid ());
- set_properties (xsmp,
- string_prop (SmProgram, g_get_prgname ()),
- ptrarray_prop (SmCloneCommand, clone),
- ptrarray_prop (SmRestartCommand, restart),
- string_prop (SmUserID, g_get_user_name ()),
- string_prop (SmProcessID, pid_str),
- card8_prop (SmRestartStyleHint, xsmp->restart_style),
- NULL);
- g_ptr_array_free (clone, TRUE);
- g_ptr_array_free (restart, TRUE);
-
- if (desktop_file)
- {
- set_properties (xsmp,
- string_prop ("_GSM_DesktopFile", egg_desktop_file_get_source (desktop_file)),
- NULL);
- }
-
- update_pending_events (xsmp);
- return FALSE;
-}
-
-/* This gets called from two different places: xsmp_die() (when the
- * server asks us to disconnect) and process_ice_messages() (when the
- * server disconnects unexpectedly).
- */
-static void
-sm_client_xsmp_disconnect (EggSMClientXSMP *xsmp)
-{
- SmcConn connection;
-
- if (!xsmp->connection)
- return;
-
- g_debug ("Disconnecting");
-
- connection = xsmp->connection;
- xsmp->connection = NULL;
- SmcCloseConnection (connection, 0, NULL);
- xsmp->state = XSMP_STATE_CONNECTION_CLOSED;
-
- xsmp->waiting_to_save_myself = FALSE;
- update_pending_events (xsmp);
-}
-
-static void
-sm_client_xsmp_startup (EggSMClient *client,
- const char *client_id)
-{
- EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
- SmcCallbacks callbacks;
- char *ret_client_id;
- char error_string_ret[256];
-
- xsmp->client_id = g_strdup (client_id);
-
- ice_init ();
- SmcSetErrorHandler (smc_error_handler);
-
- callbacks.save_yourself.callback = xsmp_save_yourself;
- callbacks.die.callback = xsmp_die;
- callbacks.save_complete.callback = xsmp_save_complete;
- callbacks.shutdown_cancelled.callback = xsmp_shutdown_cancelled;
-
- callbacks.save_yourself.client_data = xsmp;
- callbacks.die.client_data = xsmp;
- callbacks.save_complete.client_data = xsmp;
- callbacks.shutdown_cancelled.client_data = xsmp;
-
- client_id = NULL;
- error_string_ret[0] = '\0';
- xsmp->connection =
- SmcOpenConnection (NULL, xsmp, SmProtoMajor, SmProtoMinor,
- SmcSaveYourselfProcMask | SmcDieProcMask |
- SmcSaveCompleteProcMask |
- SmcShutdownCancelledProcMask,
- &callbacks,
- xsmp->client_id, &ret_client_id,
- sizeof (error_string_ret), error_string_ret);
-
- if (!xsmp->connection)
- {
- g_warning ("Failed to connect to the session manager: %s\n",
- error_string_ret[0] ?
- error_string_ret : "no error message given");
- xsmp->state = XSMP_STATE_CONNECTION_CLOSED;
- return;
- }
-
- /* We expect a pointless initial SaveYourself if either (a) we
- * didn't have an initial client ID, or (b) we DID have an initial
- * client ID, but the server rejected it and gave us a new one.
- */
- if (!xsmp->client_id ||
- (ret_client_id && strcmp (xsmp->client_id, ret_client_id) != 0))
- xsmp->expecting_initial_save_yourself = TRUE;
-
- if (ret_client_id)
- {
- g_free (xsmp->client_id);
- xsmp->client_id = g_strdup (ret_client_id);
- free (ret_client_id);
-
- gdk_threads_enter ();
- gdk_set_sm_client_id (xsmp->client_id);
- gdk_threads_leave ();
-
- g_debug ("Got client ID \"%s\"", xsmp->client_id);
- }
-
- xsmp->state = XSMP_STATE_IDLE;
-
- /* Do not set the initial properties until we reach the main loop,
- * so that the application has a chance to call
- * egg_set_desktop_file(). (This may also help the session manager
- * have a better idea of when the application is fully up and
- * running.)
- */
- xsmp->waiting_to_set_initial_properties = TRUE;
- xsmp->idle = g_idle_add (sm_client_xsmp_set_initial_properties, client);
-}
-
-static void
-sm_client_xsmp_set_restart_command (EggSMClient *client,
- int argc,
- const char **argv)
-{
- EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
- int i;
-
- g_strfreev (xsmp->restart_command);
-
- xsmp->restart_command = g_new (char *, argc + 1);
- for (i = 0; i < argc; i++)
- xsmp->restart_command[i] = g_strdup (argv[i]);
- xsmp->restart_command[i] = NULL;
-
- xsmp->set_restart_command = TRUE;
-}
-
-static void
-sm_client_xsmp_set_discard_command (EggSMClient *client,
- int argc,
- const char **argv)
-{
- EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
- int i;
-
- g_strfreev (xsmp->discard_command);
-
- xsmp->discard_command = g_new (char *, argc + 1);
- for (i = 0; i < argc; i++)
- xsmp->discard_command[i] = g_strdup (argv[i]);
- xsmp->discard_command[i] = NULL;
-
- xsmp->set_discard_command = TRUE;
-}
-
-static void
-sm_client_xsmp_will_quit (EggSMClient *client,
- gboolean will_quit)
-{
- EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
-
- if (xsmp->state == XSMP_STATE_CONNECTION_CLOSED)
- {
- /* The session manager has already exited! Schedule a quit
- * signal.
- */
- xsmp->waiting_to_emit_quit = TRUE;
- update_pending_events (xsmp);
- return;
- }
- else if (xsmp->state == XSMP_STATE_SHUTDOWN_CANCELLED)
- {
- /* We received a ShutdownCancelled message while the application
- * was interacting; Schedule a quit_cancelled signal.
- */
- xsmp->waiting_to_emit_quit_cancelled = TRUE;
- update_pending_events (xsmp);
- return;
- }
-
- g_return_if_fail (xsmp->state == XSMP_STATE_INTERACT);
-
- g_debug ("Sending InteractDone(%s)", will_quit ? "False" : "True");
- SmcInteractDone (xsmp->connection, !will_quit);
-
- if (will_quit && xsmp->need_save_state)
- save_state (xsmp);
-
- g_debug ("Sending SaveYourselfDone(%s)", will_quit ? "True" : "False");
- SmcSaveYourselfDone (xsmp->connection, will_quit);
- xsmp->state = XSMP_STATE_SAVE_YOURSELF_DONE;
-}
-
-static gboolean
-sm_client_xsmp_end_session (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation)
-{
- EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
- int save_type;
-
- /* To end the session via XSMP, we have to send a
- * SaveYourselfRequest. We aren't allowed to do that if anything
- * else is going on, but we don't want to expose this fact to the
- * application. So we do our best to patch things up here...
- *
- * In the worst case, this method might block for some length of
- * time in process_ice_messages, but the only time that code path is
- * honestly likely to get hit is if the application tries to end the
- * session as the very first thing it does, in which case it
- * probably won't actually block anyway. It's not worth gunking up
- * the API to try to deal nicely with the other 0.01% of cases where
- * this happens.
- */
-
- while (xsmp->state != XSMP_STATE_IDLE ||
- xsmp->expecting_initial_save_yourself)
- {
- /* If we're already shutting down, we don't need to do anything. */
- if (xsmp->shutting_down)
- return TRUE;
-
- switch (xsmp->state)
- {
- case XSMP_STATE_CONNECTION_CLOSED:
- return FALSE;
-
- case XSMP_STATE_SAVE_YOURSELF:
- /* Trying to log out from the save_state callback? Whatever.
- * Abort the save_state.
- */
- SmcSaveYourselfDone (xsmp->connection, FALSE);
- xsmp->state = XSMP_STATE_SAVE_YOURSELF_DONE;
- break;
-
- case XSMP_STATE_INTERACT_REQUEST:
- case XSMP_STATE_INTERACT:
- case XSMP_STATE_SHUTDOWN_CANCELLED:
- /* Already in a shutdown-related state, just ignore
- * the new shutdown request...
- */
- return TRUE;
-
- case XSMP_STATE_IDLE:
- if (xsmp->waiting_to_set_initial_properties)
- sm_client_xsmp_set_initial_properties (xsmp);
-
- if (!xsmp->expecting_initial_save_yourself)
- break;
- /* else fall through */
-
- case XSMP_STATE_SAVE_YOURSELF_DONE:
- /* We need to wait for some response from the server.*/
- process_ice_messages (SmcGetIceConnection (xsmp->connection));
- break;
-
- default:
- /* Hm... shouldn't happen */
- return FALSE;
- }
- }
-
- /* xfce4-session will do the wrong thing if we pass SmSaveGlobal and
- * the user chooses to save the session. But gnome-session will do
- * the wrong thing if we pass SmSaveBoth and the user chooses NOT to
- * save the session... Sigh.
- */
- if (!strcmp (SmcVendor (xsmp->connection), "xfce4-session"))
- save_type = SmSaveBoth;
- else
- save_type = SmSaveGlobal;
-
- g_debug ("Sending SaveYourselfRequest(SmSaveGlobal, Shutdown, SmInteractStyleAny, %sFast)", request_confirmation ? "!" : "");
- SmcRequestSaveYourself (xsmp->connection,
- save_type,
- True, /* shutdown */
- SmInteractStyleAny,
- !request_confirmation, /* fast */
- True /* global */);
- return TRUE;
-}
-
-static gboolean
-idle_do_pending_events (gpointer data)
-{
- EggSMClientXSMP *xsmp = data;
- EggSMClient *client = data;
-
- gdk_threads_enter ();
-
- xsmp->idle = 0;
-
- if (xsmp->waiting_to_emit_quit)
- {
- xsmp->waiting_to_emit_quit = FALSE;
- egg_sm_client_quit (client);
- goto out;
- }
-
- if (xsmp->waiting_to_emit_quit_cancelled)
- {
- xsmp->waiting_to_emit_quit_cancelled = FALSE;
- egg_sm_client_quit_cancelled (client);
- xsmp->state = XSMP_STATE_IDLE;
- }
-
- if (xsmp->waiting_to_save_myself)
- {
- xsmp->waiting_to_save_myself = FALSE;
- do_save_yourself (xsmp);
- }
-
- out:
- gdk_threads_leave ();
- return FALSE;
-}
-
-static void
-update_pending_events (EggSMClientXSMP *xsmp)
-{
- gboolean want_idle =
- xsmp->waiting_to_emit_quit ||
- xsmp->waiting_to_emit_quit_cancelled ||
- xsmp->waiting_to_save_myself;
-
- if (want_idle)
- {
- if (xsmp->idle == 0)
- xsmp->idle = g_idle_add (idle_do_pending_events, xsmp);
- }
- else
- {
- if (xsmp->idle != 0)
- g_source_remove (xsmp->idle);
- xsmp->idle = 0;
- }
-}
-
-static void
-fix_broken_state (EggSMClientXSMP *xsmp, const char *message,
- gboolean send_interact_done,
- gboolean send_save_yourself_done)
-{
- g_warning ("Received XSMP %s message in state %s: client or server error",
- message, EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- /* Forget any pending SaveYourself plans we had */
- xsmp->waiting_to_save_myself = FALSE;
- update_pending_events (xsmp);
-
- if (send_interact_done)
- SmcInteractDone (xsmp->connection, False);
- if (send_save_yourself_done)
- SmcSaveYourselfDone (xsmp->connection, True);
-
- xsmp->state = send_save_yourself_done ? XSMP_STATE_SAVE_YOURSELF_DONE : XSMP_STATE_IDLE;
-}
-
-/* SM callbacks */
-
-static void
-xsmp_save_yourself (SmcConn smc_conn,
- SmPointer client_data,
- int save_type,
- Bool shutdown,
- int interact_style,
- Bool fast)
-{
- EggSMClientXSMP *xsmp = client_data;
- gboolean wants_quit_requested;
-
- g_debug ("Received SaveYourself(%s, %s, %s, %s) in state %s",
- save_type == SmSaveLocal ? "SmSaveLocal" :
- save_type == SmSaveGlobal ? "SmSaveGlobal" : "SmSaveBoth",
- shutdown ? "Shutdown" : "!Shutdown",
- interact_style == SmInteractStyleAny ? "SmInteractStyleAny" :
- interact_style == SmInteractStyleErrors ? "SmInteractStyleErrors" :
- "SmInteractStyleNone", fast ? "Fast" : "!Fast",
- EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- if (xsmp->state != XSMP_STATE_IDLE &&
- xsmp->state != XSMP_STATE_SHUTDOWN_CANCELLED)
- {
- fix_broken_state (xsmp, "SaveYourself", FALSE, TRUE);
- return;
- }
-
- if (xsmp->waiting_to_set_initial_properties)
- sm_client_xsmp_set_initial_properties (xsmp);
-
- /* If this is the initial SaveYourself, ignore it; we've already set
- * properties and there's no reason to actually save state too.
- */
- if (xsmp->expecting_initial_save_yourself)
- {
- xsmp->expecting_initial_save_yourself = FALSE;
-
- if (save_type == SmSaveLocal &&
- interact_style == SmInteractStyleNone &&
- !shutdown && !fast)
- {
- g_debug ("Sending SaveYourselfDone(True) for initial SaveYourself");
- SmcSaveYourselfDone (xsmp->connection, True);
- /* As explained in the comment at the end of
- * do_save_yourself(), SAVE_YOURSELF_DONE is the correct
- * state here, not IDLE.
- */
- xsmp->state = XSMP_STATE_SAVE_YOURSELF_DONE;
- return;
- }
- else
- g_warning ("First SaveYourself was not the expected one!");
- }
-
- /* Even ignoring the "fast" flag completely, there are still 18
- * different combinations of save_type, shutdown and interact_style.
- * We interpret them as follows:
- *
- * Type Shutdown Interact Interpretation
- * G F A/E/N do nothing (1)
- * G T N do nothing (1)*
- * G T A/E quit_requested (2)
- * L/B F A/E/N save_state (3)
- * L/B T N save_state (3)*
- * L/B T A/E quit_requested, then save_state (4)
- *
- * 1. Do nothing, because the SM asked us to do something
- * uninteresting (save open files, but then don't quit
- * afterward) or rude (save open files without asking the user
- * for confirmation).
- *
- * 2. Request interaction and then emit ::quit_requested. This
- * perhaps isn't quite correct for the SmInteractStyleErrors
- * case, but we don't care.
- *
- * 3. Emit ::save_state. The SmSaveBoth SaveYourselfs in these
- * rows essentially get demoted to SmSaveLocal, because their
- * Global halves correspond to "do nothing".
- *
- * 4. Request interaction, emit ::quit_requested, and then emit
- * ::save_state after interacting. This is the SmSaveBoth
- * equivalent of #2, but we also promote SmSaveLocal shutdown
- * SaveYourselfs to SmSaveBoth here, because we want to give
- * the user a chance to save open files before quitting.
- *
- * (* It would be nice if we could do something useful when the
- * session manager sends a SaveYourself with shutdown True and
- * SmInteractStyleNone. But we can't, so we just pretend it didn't
- * even tell us it was shutting down. The docs for ::quit mention
- * that it might not always be preceded by ::quit_requested.)
- */
-
- /* As an optimization, we don't actually request interaction and
- * emit ::quit_requested if the application isn't listening to the
- * signal.
- */
- wants_quit_requested = g_signal_has_handler_pending (xsmp, g_signal_lookup ("quit_requested", EGG_TYPE_SM_CLIENT), 0, FALSE);
-
- xsmp->need_save_state = (save_type != SmSaveGlobal);
- xsmp->need_quit_requested = (shutdown && wants_quit_requested &&
- interact_style != SmInteractStyleNone);
- xsmp->interact_errors = (interact_style == SmInteractStyleErrors);
-
- xsmp->shutting_down = shutdown;
-
- do_save_yourself (xsmp);
-}
-
-static void
-do_save_yourself (EggSMClientXSMP *xsmp)
-{
- if (xsmp->state == XSMP_STATE_SHUTDOWN_CANCELLED)
- {
- /* The SM cancelled a previous SaveYourself, but we haven't yet
- * had a chance to tell the application, so we can't start
- * processing this SaveYourself yet.
- */
- xsmp->waiting_to_save_myself = TRUE;
- update_pending_events (xsmp);
- return;
- }
-
- if (xsmp->need_quit_requested)
- {
- xsmp->state = XSMP_STATE_INTERACT_REQUEST;
-
- g_debug ("Sending InteractRequest(%s)",
- xsmp->interact_errors ? "Error" : "Normal");
- SmcInteractRequest (xsmp->connection,
- xsmp->interact_errors ? SmDialogError : SmDialogNormal,
- xsmp_interact,
- xsmp);
- return;
- }
-
- if (xsmp->need_save_state)
- {
- save_state (xsmp);
-
- /* Though unlikely, the client could have been disconnected
- * while the application was saving its state.
- */
- if (!xsmp->connection)
- return;
- }
-
- g_debug ("Sending SaveYourselfDone(True)");
- SmcSaveYourselfDone (xsmp->connection, True);
-
- /* The client state diagram in the XSMP spec says that after a
- * non-shutdown SaveYourself, we go directly back to "idle". But
- * everything else in both the XSMP spec and the libSM docs
- * disagrees.
- */
- xsmp->state = XSMP_STATE_SAVE_YOURSELF_DONE;
-}
-
-static void
-save_state (EggSMClientXSMP *xsmp)
-{
- GKeyFile *state_file;
- char *state_file_path, *data;
- EggDesktopFile *desktop_file;
- GPtrArray *restart, *discard;
- int offset, fd;
-
- /* We set xsmp->state before emitting save_state, but our caller is
- * responsible for setting it back afterward.
- */
- xsmp->state = XSMP_STATE_SAVE_YOURSELF;
-
- state_file = egg_sm_client_save_state ((EggSMClient *)xsmp);
- if (!state_file)
- {
- restart = generate_command (xsmp->restart_command, xsmp->client_id, NULL);
- set_properties (xsmp,
- ptrarray_prop (SmRestartCommand, restart),
- NULL);
- g_ptr_array_free (restart, TRUE);
-
- if (xsmp->set_discard_command)
- {
- discard = generate_command (xsmp->discard_command, NULL, NULL);
- set_properties (xsmp,
- ptrarray_prop (SmDiscardCommand, discard),
- NULL);
- g_ptr_array_free (discard, TRUE);
- }
- else
- delete_properties (xsmp, SmDiscardCommand, NULL);
-
- return;
- }
-
- desktop_file = egg_get_desktop_file ();
- if (desktop_file)
- {
- GKeyFile *merged_file;
- char *desktop_file_path;
-
- merged_file = g_key_file_new ();
- desktop_file_path =
- g_filename_from_uri (egg_desktop_file_get_source (desktop_file),
- NULL, NULL);
- if (desktop_file_path &&
- g_key_file_load_from_file (merged_file, desktop_file_path,
- G_KEY_FILE_KEEP_COMMENTS |
- G_KEY_FILE_KEEP_TRANSLATIONS, NULL))
- {
- guint g, k, i;
- char **groups, **keys, *value, *exec;
-
- groups = g_key_file_get_groups (state_file, NULL);
- for (g = 0; groups[g]; g++)
- {
- keys = g_key_file_get_keys (state_file, groups[g], NULL, NULL);
- for (k = 0; keys[k]; k++)
- {
- value = g_key_file_get_value (state_file, groups[g],
- keys[k], NULL);
- if (value)
- {
- g_key_file_set_value (merged_file, groups[g],
- keys[k], value);
- g_free (value);
- }
- }
- g_strfreev (keys);
- }
- g_strfreev (groups);
-
- g_key_file_free (state_file);
- state_file = merged_file;
-
- /* Update Exec key using "--sm-client-state-file %k" */
- restart = generate_command (xsmp->restart_command,
- NULL, "%k");
- for (i = 0; i < restart->len; i++)
- restart->pdata[i] = g_shell_quote (restart->pdata[i]);
- g_ptr_array_add (restart, NULL);
- exec = g_strjoinv (" ", (char **)restart->pdata);
- g_strfreev ((char **)restart->pdata);
- g_ptr_array_free (restart, FALSE);
-
- g_key_file_set_string (state_file, EGG_DESKTOP_FILE_GROUP,
- EGG_DESKTOP_FILE_KEY_EXEC,
- exec);
- g_free (exec);
- }
- else
- desktop_file = NULL;
-
- g_free (desktop_file_path);
- }
-
- /* Now write state_file to disk. (We can't use mktemp(), because
- * that requires the filename to end with "XXXXXX", and we want
- * it to end with ".desktop".)
- */
-
- data = g_key_file_to_data (state_file, NULL, NULL);
- g_key_file_free (state_file);
-
- offset = 0;
- while (1)
- {
- state_file_path = g_strdup_printf ("%s%csession-state%c%s-%ld.%s",
- g_get_user_config_dir (),
- G_DIR_SEPARATOR, G_DIR_SEPARATOR,
- g_get_prgname (),
- (long)time (NULL) + offset,
- desktop_file ? "desktop" : "state");
-
- fd = open (state_file_path, O_WRONLY | O_CREAT | O_EXCL, 0644);
- if (fd == -1)
- {
- if (errno == EEXIST)
- {
- offset++;
- g_free (state_file_path);
- continue;
- }
- else if (errno == ENOTDIR || errno == ENOENT)
- {
- char *sep = strrchr (state_file_path, G_DIR_SEPARATOR);
-
- *sep = '\0';
- if (g_mkdir_with_parents (state_file_path, 0755) != 0)
- {
- g_warning ("Could not create directory '%s'",
- state_file_path);
- g_free (state_file_path);
- state_file_path = NULL;
- break;
- }
-
- continue;
- }
-
- g_warning ("Could not create file '%s': %s",
- state_file_path, g_strerror (errno));
- g_free (state_file_path);
- state_file_path = NULL;
- break;
- }
-
- close (fd);
- g_file_set_contents (state_file_path, data, -1, NULL);
- break;
- }
- g_free (data);
-
- restart = generate_command (xsmp->restart_command, xsmp->client_id,
- state_file_path);
- set_properties (xsmp,
- ptrarray_prop (SmRestartCommand, restart),
- NULL);
- g_ptr_array_free (restart, TRUE);
-
- if (state_file_path)
- {
- set_properties (xsmp,
- array_prop (SmDiscardCommand,
- "/bin/rm", "-rf", state_file_path,
- NULL),
- NULL);
- g_free (state_file_path);
- }
-}
-
-static void
-xsmp_interact (SmcConn smc_conn,
- SmPointer client_data)
-{
- EggSMClientXSMP *xsmp = client_data;
- EggSMClient *client = client_data;
-
- g_debug ("Received Interact message in state %s",
- EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- if (xsmp->state != XSMP_STATE_INTERACT_REQUEST)
- {
- fix_broken_state (xsmp, "Interact", TRUE, TRUE);
- return;
- }
-
- xsmp->state = XSMP_STATE_INTERACT;
- egg_sm_client_quit_requested (client);
-}
-
-static void
-xsmp_die (SmcConn smc_conn,
- SmPointer client_data)
-{
- EggSMClientXSMP *xsmp = client_data;
- EggSMClient *client = client_data;
-
- g_debug ("Received Die message in state %s",
- EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- sm_client_xsmp_disconnect (xsmp);
- egg_sm_client_quit (client);
-}
-
-static void
-xsmp_save_complete (SmcConn smc_conn,
- SmPointer client_data)
-{
- EggSMClientXSMP *xsmp = client_data;
-
- g_debug ("Received SaveComplete message in state %s",
- EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- if (xsmp->state == XSMP_STATE_SAVE_YOURSELF_DONE)
- xsmp->state = XSMP_STATE_IDLE;
- else
- fix_broken_state (xsmp, "SaveComplete", FALSE, FALSE);
-}
-
-static void
-xsmp_shutdown_cancelled (SmcConn smc_conn,
- SmPointer client_data)
-{
- EggSMClientXSMP *xsmp = client_data;
- EggSMClient *client = client_data;
-
- g_debug ("Received ShutdownCancelled message in state %s",
- EGG_SM_CLIENT_XSMP_STATE (xsmp));
-
- xsmp->shutting_down = FALSE;
-
- if (xsmp->state == XSMP_STATE_SAVE_YOURSELF_DONE)
- {
- /* We've finished interacting and now the SM has agreed to
- * cancel the shutdown.
- */
- xsmp->state = XSMP_STATE_IDLE;
- egg_sm_client_quit_cancelled (client);
- }
- else if (xsmp->state == XSMP_STATE_SHUTDOWN_CANCELLED)
- {
- /* Hm... ok, so we got a shutdown SaveYourself, which got
- * cancelled, but the application was still interacting, so we
- * didn't tell it yet, and then *another* SaveYourself arrived,
- * which we must still be waiting to tell the app about, except
- * that now that SaveYourself has been cancelled too! Dizzy yet?
- */
- xsmp->waiting_to_save_myself = FALSE;
- update_pending_events (xsmp);
- }
- else
- {
- g_debug ("Sending SaveYourselfDone(False)");
- SmcSaveYourselfDone (xsmp->connection, False);
-
- if (xsmp->state == XSMP_STATE_INTERACT)
- {
- /* The application is currently interacting, so we can't
- * tell it about the cancellation yet; we will wait until
- * after it calls egg_sm_client_will_quit().
- */
- xsmp->state = XSMP_STATE_SHUTDOWN_CANCELLED;
- }
- else
- {
- /* The shutdown was cancelled before the application got a
- * chance to interact.
- */
- xsmp->state = XSMP_STATE_IDLE;
- }
- }
-}
-
-/* Utilities */
-
-/* Create a restart/clone/Exec command based on @restart_command.
- * If @client_id is non-%NULL, add "--sm-client-id @client_id".
- * If @state_file is non-%NULL, add "--sm-client-state-file @state_file".
- *
- * None of the input strings are g_strdup()ed; the caller must keep
- * them around until it is done with the returned GPtrArray, and must
- * then free the array, but not its contents.
- */
-static GPtrArray *
-generate_command (char **argv, const char *client_id,
- const char *state_file)
-{
- GPtrArray *cmd;
- int i;
-
- cmd = g_ptr_array_new ();
- g_ptr_array_add (cmd, argv[0]);
-
- if (client_id)
- {
- g_ptr_array_add (cmd, "--sm-client-id");
- g_ptr_array_add (cmd, (char *)client_id);
- }
-
- if (state_file)
- {
- g_ptr_array_add (cmd, "--sm-client-state-file");
- g_ptr_array_add (cmd, (char *)state_file);
- }
-
- for (i = 1; argv[i]; i++)
- g_ptr_array_add (cmd, argv[i]);
-
- return cmd;
-}
-
-/* Takes a NULL-terminated list of SmProp * values, created by
- * array_prop, ptrarray_prop, string_prop, card8_prop, sets them, and
- * frees them.
- */
-static void
-set_properties (EggSMClientXSMP *xsmp, ...)
-{
- GPtrArray *props;
- SmProp *prop;
- va_list ap;
- guint i;
-
- props = g_ptr_array_new ();
-
- va_start (ap, xsmp);
- while ((prop = va_arg (ap, SmProp *)))
- g_ptr_array_add (props, prop);
- va_end (ap);
-
- if (xsmp->connection)
- {
- SmcSetProperties (xsmp->connection, props->len,
- (SmProp **)props->pdata);
- }
-
- for (i = 0; i < props->len; i++)
- {
- prop = props->pdata[i];
- g_free (prop->vals);
- g_free (prop);
- }
- g_ptr_array_free (props, TRUE);
-}
-
-/* Takes a NULL-terminated list of property names and deletes them. */
-static void
-delete_properties (EggSMClientXSMP *xsmp, ...)
-{
- GPtrArray *props;
- char *prop;
- va_list ap;
-
- if (!xsmp->connection)
- return;
-
- props = g_ptr_array_new ();
-
- va_start (ap, xsmp);
- while ((prop = va_arg (ap, char *)))
- g_ptr_array_add (props, prop);
- va_end (ap);
-
- SmcDeleteProperties (xsmp->connection, props->len,
- (char **)props->pdata);
-
- g_ptr_array_free (props, TRUE);
-}
-
-/* Takes an array of strings and creates a LISTofARRAY8 property. The
- * strings are neither dupped nor freed; they need to remain valid
- * until you're done with the SmProp.
- */
-static SmProp *
-array_prop (const char *name, ...)
-{
- SmProp *prop;
- SmPropValue pv;
- GArray *vals;
- char *value;
- va_list ap;
-
- prop = g_new (SmProp, 1);
- prop->name = (char *)name;
- prop->type = SmLISTofARRAY8;
-
- vals = g_array_new (FALSE, FALSE, sizeof (SmPropValue));
-
- va_start (ap, name);
- while ((value = va_arg (ap, char *)))
- {
- pv.length = strlen (value);
- pv.value = value;
- g_array_append_val (vals, pv);
- }
-
- prop->num_vals = vals->len;
- prop->vals = (SmPropValue *)vals->data;
-
- g_array_free (vals, FALSE);
-
- return prop;
-}
-
-/* Takes a GPtrArray of strings and creates a LISTofARRAY8 property.
- * The array contents are neither dupped nor freed; they need to
- * remain valid until you're done with the SmProp.
- */
-static SmProp *
-ptrarray_prop (const char *name, GPtrArray *values)
-{
- SmProp *prop;
- SmPropValue pv;
- GArray *vals;
- guint i;
-
- prop = g_new (SmProp, 1);
- prop->name = (char *)name;
- prop->type = SmLISTofARRAY8;
-
- vals = g_array_new (FALSE, FALSE, sizeof (SmPropValue));
-
- for (i = 0; i < values->len; i++)
- {
- pv.length = strlen (values->pdata[i]);
- pv.value = values->pdata[i];
- g_array_append_val (vals, pv);
- }
-
- prop->num_vals = vals->len;
- prop->vals = (SmPropValue *)vals->data;
-
- g_array_free (vals, FALSE);
-
- return prop;
-}
-
-/* Takes a string and creates an ARRAY8 property. The string is
- * neither dupped nor freed; it needs to remain valid until you're
- * done with the SmProp.
- */
-static SmProp *
-string_prop (const char *name, const char *value)
-{
- SmProp *prop;
-
- prop = g_new (SmProp, 1);
- prop->name = (char *)name;
- prop->type = SmARRAY8;
-
- prop->num_vals = 1;
- prop->vals = g_new (SmPropValue, 1);
-
- prop->vals[0].length = strlen (value);
- prop->vals[0].value = (char *)value;
-
- return prop;
-}
-
-/* Takes a char and creates a CARD8 property. */
-static SmProp *
-card8_prop (const char *name, unsigned char value)
-{
- SmProp *prop;
- char *card8val;
-
- /* To avoid having to allocate and free prop->vals[0], we cheat and
- * make vals a 2-element-long array and then use the second element
- * to store value.
- */
-
- prop = g_new (SmProp, 1);
- prop->name = (char *)name;
- prop->type = SmCARD8;
-
- prop->num_vals = 1;
- prop->vals = g_new (SmPropValue, 2);
- card8val = (char *)(&prop->vals[1]);
- card8val[0] = value;
-
- prop->vals[0].length = 1;
- prop->vals[0].value = card8val;
-
- return prop;
-}
-
-/* ICE code. This makes no effort to play nice with anyone else trying
- * to use libICE. Fortunately, no one uses libICE for anything other
- * than SM. (DCOP uses ICE, but it has its own private copy of
- * libICE.)
- *
- * When this moves to gtk, it will need to be cleverer, to avoid
- * tripping over old apps that use GnomeClient or that use libSM
- * directly.
- */
-
-#include <X11/ICE/ICElib.h>
-#include <fcntl.h>
-
-static void ice_error_handler (IceConn ice_conn,
- Bool swap,
- int offending_minor_opcode,
- unsigned long offending_sequence,
- int error_class,
- int severity,
- IcePointer values);
-static void ice_io_error_handler (IceConn ice_conn);
-static void ice_connection_watch (IceConn ice_conn,
- IcePointer client_data,
- Bool opening,
- IcePointer *watch_data);
-
-static void
-ice_init (void)
-{
- IceSetIOErrorHandler (ice_io_error_handler);
- IceSetErrorHandler (ice_error_handler);
- IceAddConnectionWatch (ice_connection_watch, NULL);
-}
-
-static gboolean
-process_ice_messages (IceConn ice_conn)
-{
- IceProcessMessagesStatus status;
-
- gdk_threads_enter ();
- status = IceProcessMessages (ice_conn, NULL, NULL);
- gdk_threads_leave ();
-
- switch (status)
- {
- case IceProcessMessagesSuccess:
- return TRUE;
-
- case IceProcessMessagesIOError:
- sm_client_xsmp_disconnect (IceGetConnectionContext (ice_conn));
- return FALSE;
-
- case IceProcessMessagesConnectionClosed:
- return FALSE;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-static gboolean
-ice_iochannel_watch (GIOChannel *channel,
- GIOCondition condition,
- gpointer client_data)
-{
- return process_ice_messages (client_data);
-}
-
-static void
-ice_connection_watch (IceConn ice_conn,
- IcePointer client_data,
- Bool opening,
- IcePointer *watch_data)
-{
- guint watch_id;
-
- if (opening)
- {
- GIOChannel *channel;
- int fd = IceConnectionNumber (ice_conn);
-
- fcntl (fd, F_SETFD, fcntl (fd, F_GETFD, 0) | FD_CLOEXEC);
- channel = g_io_channel_unix_new (fd);
- watch_id = g_io_add_watch (channel, G_IO_IN | G_IO_ERR,
- ice_iochannel_watch, ice_conn);
- g_io_channel_unref (channel);
-
- *watch_data = GUINT_TO_POINTER (watch_id);
- }
- else
- {
- watch_id = GPOINTER_TO_UINT (*watch_data);
- g_source_remove (watch_id);
- }
-}
-
-static void
-ice_error_handler (IceConn ice_conn,
- Bool swap,
- int offending_minor_opcode,
- unsigned long offending_sequence,
- int error_class,
- int severity,
- IcePointer values)
-{
- /* Do nothing */
-}
-
-static void
-ice_io_error_handler (IceConn ice_conn)
-{
- /* Do nothing */
-}
-
-static void
-smc_error_handler (SmcConn smc_conn,
- Bool swap,
- int offending_minor_opcode,
- unsigned long offending_sequence,
- int error_class,
- int severity,
- SmPointer values)
-{
- /* Do nothing */
-}
diff --git a/src/eggsmclient.c b/src/eggsmclient.c
deleted file mode 100644
index 85aaee4e..00000000
--- a/src/eggsmclient.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * Copyright (C) 2007 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-
-#include "eggsmclient.h"
-#include "eggsmclient-private.h"
-
-static void egg_sm_client_debug_handler (const char *log_domain,
- GLogLevelFlags log_level,
- const char *message,
- gpointer user_data);
-
-enum {
- SAVE_STATE,
- QUIT_REQUESTED,
- QUIT_CANCELLED,
- QUIT,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-struct _EggSMClientPrivate {
- GKeyFile *state_file;
-};
-
-#define EGG_SM_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EGG_TYPE_SM_CLIENT, EggSMClientPrivate))
-
-G_DEFINE_TYPE (EggSMClient, egg_sm_client, G_TYPE_OBJECT)
-
-static EggSMClient *global_client;
-static EggSMClientMode global_client_mode = EGG_SM_CLIENT_MODE_NORMAL;
-
-static void
-egg_sm_client_init (EggSMClient *client)
-{
- ;
-}
-
-static void
-egg_sm_client_class_init (EggSMClientClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (EggSMClientPrivate));
-
- /**
- * EggSMClient::save_state:
- * @client: the client
- * @state_file: a #GKeyFile to save state information into
- *
- * Emitted when the session manager has requested that the
- * application save information about its current state. The
- * application should save its state into @state_file, and then the
- * session manager may then restart the application in a future
- * session and tell it to initialize itself from that state.
- *
- * You should not save any data into @state_file's "start group"
- * (ie, the %NULL group). Instead, applications should save their
- * data into groups with names that start with the application name,
- * and libraries that connect to this signal should save their data
- * into groups with names that start with the library name.
- *
- * Alternatively, rather than (or in addition to) using @state_file,
- * the application can save its state by calling
- * egg_sm_client_set_restart_command() during the processing of this
- * signal (eg, to include a list of files to open).
- **/
- signals[SAVE_STATE] =
- g_signal_new ("save_state",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EggSMClientClass, save_state),
- NULL, NULL,
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE,
- 1, G_TYPE_POINTER);
-
- /**
- * EggSMClient::quit_requested:
- * @client: the client
- *
- * Emitted when the session manager requests that the application
- * exit (generally because the user is logging out). The application
- * should decide whether or not it is willing to quit (perhaps after
- * asking the user what to do with documents that have unsaved
- * changes) and then call egg_sm_client_will_quit(), passing %TRUE
- * or %FALSE to give its answer to the session manager. (It does not
- * need to give an answer before returning from the signal handler;
- * it can interact with the user asynchronously and then give its
- * answer later on.) If the application does not connect to this
- * signal, then #EggSMClient will automatically return %TRUE on its
- * behalf.
- *
- * The application should not save its session state as part of
- * handling this signal; if the user has requested that the session
- * be saved when logging out, then ::save_state will be emitted
- * separately.
- *
- * If the application agrees to quit, it should then wait for either
- * the ::quit_cancelled or ::quit signals to be emitted.
- **/
- signals[QUIT_REQUESTED] =
- g_signal_new ("quit_requested",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EggSMClientClass, quit_requested),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
-
- /**
- * EggSMClient::quit_cancelled:
- * @client: the client
- *
- * Emitted when the session manager decides to cancel a logout after
- * the application has already agreed to quit. After receiving this
- * signal, the application can go back to what it was doing before
- * receiving the ::quit_requested signal.
- **/
- signals[QUIT_CANCELLED] =
- g_signal_new ("quit_cancelled",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EggSMClientClass, quit_cancelled),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
-
- /**
- * EggSMClient::quit:
- * @client: the client
- *
- * Emitted when the session manager wants the application to quit
- * (generally because the user is logging out). The application
- * should exit as soon as possible after receiving this signal; if
- * it does not, the session manager may choose to forcibly kill it.
- *
- * Normally a GUI application would only be sent a ::quit if it
- * agreed to quit in response to a ::quit_requested signal. However,
- * this is not guaranteed; in some situations the session manager
- * may decide to end the session without giving applications a
- * chance to object.
- **/
- signals[QUIT] =
- g_signal_new ("quit",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EggSMClientClass, quit),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0);
-}
-
-static gboolean sm_client_disable = FALSE;
-static char *sm_client_state_file = NULL;
-static char *sm_client_id = NULL;
-static char *sm_config_prefix = NULL;
-
-static gboolean
-sm_client_post_parse_func (GOptionContext *context,
- GOptionGroup *group,
- gpointer data,
- GError **error)
-{
- EggSMClient *client = egg_sm_client_get ();
-
- if (sm_client_id == NULL)
- {
- const gchar *desktop_autostart_id;
-
- desktop_autostart_id = g_getenv ("DESKTOP_AUTOSTART_ID");
-
- if (desktop_autostart_id != NULL)
- sm_client_id = g_strdup (desktop_autostart_id);
- }
-
- /* Unset DESKTOP_AUTOSTART_ID in order to avoid child processes to
- * use the same client id. */
- g_unsetenv ("DESKTOP_AUTOSTART_ID");
-
- if (EGG_SM_CLIENT_GET_CLASS (client)->startup)
- EGG_SM_CLIENT_GET_CLASS (client)->startup (client, sm_client_id);
- return TRUE;
-}
-
-/**
- * egg_sm_client_get_option_group:
- *
- * Creates a %GOptionGroup containing the session-management-related
- * options. You should add this group to the application's
- * %GOptionContext if you want to use #EggSMClient.
- *
- * Return value: the %GOptionGroup
- **/
-GOptionGroup *
-egg_sm_client_get_option_group (void)
-{
- const GOptionEntry entries[] = {
- { "sm-client-disable", 0, 0,
- G_OPTION_ARG_NONE, &sm_client_disable,
- N_("Disable connection to session manager"), NULL },
- { "sm-client-state-file", 0, 0,
- G_OPTION_ARG_FILENAME, &sm_client_state_file,
- N_("Specify file containing saved configuration"), N_("FILE") },
- { "sm-client-id", 0, 0,
- G_OPTION_ARG_STRING, &sm_client_id,
- N_("Specify session management ID"), N_("ID") },
- /* GnomeClient compatibility option */
- { "sm-disable", 0, G_OPTION_FLAG_HIDDEN,
- G_OPTION_ARG_NONE, &sm_client_disable,
- NULL, NULL },
- /* GnomeClient compatibility option. This is a dummy option that only
- * exists so that sessions saved by apps with GnomeClient can be restored
- * later when they've switched to EggSMClient. See bug #575308.
- */
- { "sm-config-prefix", 0, G_OPTION_FLAG_HIDDEN,
- G_OPTION_ARG_STRING, &sm_config_prefix,
- NULL, NULL },
- { NULL }
- };
- GOptionGroup *group;
-
- /* Use our own debug handler for the "EggSMClient" domain. */
- g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,
- egg_sm_client_debug_handler, NULL);
-
- group = g_option_group_new ("sm-client",
- _("Session management options:"),
- _("Show session management options"),
- NULL, NULL);
- g_option_group_add_entries (group, entries);
- g_option_group_set_parse_hooks (group, NULL, sm_client_post_parse_func);
-
- return group;
-}
-
-/**
- * egg_sm_client_set_mode:
- * @mode: an #EggSMClient mode
- *
- * Sets the "mode" of #EggSMClient as follows:
- *
- * %EGG_SM_CLIENT_MODE_DISABLED: Session management is completely
- * disabled. The application will not even connect to the session
- * manager. (egg_sm_client_get() will still return an #EggSMClient,
- * but it will just be a dummy object.)
- *
- * %EGG_SM_CLIENT_MODE_NO_RESTART: The application will connect to
- * the session manager (and thus will receive notification when the
- * user is logging out, etc), but will request to not be
- * automatically restarted with saved state in future sessions.
- *
- * %EGG_SM_CLIENT_MODE_NORMAL: The default. #EggSMCLient will
- * function normally.
- *
- * This must be called before the application's main loop begins.
- **/
-void
-egg_sm_client_set_mode (EggSMClientMode mode)
-{
- global_client_mode = mode;
-}
-
-/**
- * egg_sm_client_get_mode:
- *
- * Gets the global #EggSMClientMode. See egg_sm_client_set_mode()
- * for details.
- *
- * Return value: the global #EggSMClientMode
- **/
-EggSMClientMode
-egg_sm_client_get_mode (void)
-{
- return global_client_mode;
-}
-
-/**
- * egg_sm_client_get:
- *
- * Returns the master #EggSMClient for the application.
- *
- * On platforms that support saved sessions (ie, POSIX/X11), the
- * application will only request to be restarted by the session
- * manager if you call egg_set_desktop_file() to set an application
- * desktop file. In particular, if the desktop file contains the key
- * "X
- *
- * Return value: the master #EggSMClient.
- **/
-EggSMClient *
-egg_sm_client_get (void)
-{
- if (!global_client)
- {
- if (global_client_mode != EGG_SM_CLIENT_MODE_DISABLED &&
- !sm_client_disable)
- {
-#if defined (GDK_WINDOWING_WIN32)
- global_client = egg_sm_client_win32_new ();
-#elif defined (GDK_WINDOWING_QUARTZ)
- global_client = egg_sm_client_osx_new ();
-#else
- /* If both D-Bus and XSMP are compiled in, try XSMP first
- * (since it supports state saving) and fall back to D-Bus
- * if XSMP isn't available.
- */
-# ifdef EGG_SM_CLIENT_BACKEND_XSMP
- global_client = egg_sm_client_xsmp_new ();
-# endif
-# ifdef EGG_SM_CLIENT_BACKEND_DBUS
- if (!global_client)
- global_client = egg_sm_client_dbus_new ();
-# endif
-#endif
- }
-
- /* Fallback: create a dummy client, so that callers don't have
- * to worry about a %NULL return value.
- */
- if (!global_client)
- global_client = g_object_new (EGG_TYPE_SM_CLIENT, NULL);
- }
-
- return global_client;
-}
-
-/**
- * egg_sm_client_is_resumed:
- * @client: the client
- *
- * Checks whether or not the current session has been resumed from
- * a previous saved session. If so, the application should call
- * egg_sm_client_get_state_file() and restore its state from the
- * returned #GKeyFile.
- *
- * Return value: %TRUE if the session has been resumed
- **/
-gboolean
-egg_sm_client_is_resumed (EggSMClient *client)
-{
- g_return_val_if_fail (client == global_client, FALSE);
-
- return sm_client_state_file != NULL;
-}
-
-/**
- * egg_sm_client_get_state_file:
- * @client: the client
- *
- * If the application was resumed by the session manager, this will
- * return the #GKeyFile containing its state from the previous
- * session.
- *
- * Note that other libraries and #EggSMClient itself may also store
- * state in the key file, so if you call egg_sm_client_get_groups(),
- * on it, the return value will likely include groups that you did not
- * put there yourself. (It is also not guaranteed that the first
- * group created by the application will still be the "start group"
- * when it is resumed.)
- *
- * Return value: the #GKeyFile containing the application's earlier
- * state, or %NULL on error. You should not free this key file; it
- * is owned by @client.
- **/
-GKeyFile *
-egg_sm_client_get_state_file (EggSMClient *client)
-{
- EggSMClientPrivate *priv = EGG_SM_CLIENT_GET_PRIVATE (client);
- char *state_file_path;
- GError *err = NULL;
-
- g_return_val_if_fail (client == global_client, NULL);
-
- if (!sm_client_state_file)
- return NULL;
- if (priv->state_file)
- return priv->state_file;
-
- if (!strncmp (sm_client_state_file, "file://", 7))
- state_file_path = g_filename_from_uri (sm_client_state_file, NULL, NULL);
- else
- state_file_path = g_strdup (sm_client_state_file);
-
- priv->state_file = g_key_file_new ();
- if (!g_key_file_load_from_file (priv->state_file, state_file_path, 0, &err))
- {
- g_warning ("Could not load SM state file '%s': %s",
- sm_client_state_file, err->message);
- g_clear_error (&err);
- g_key_file_free (priv->state_file);
- priv->state_file = NULL;
- }
-
- g_free (state_file_path);
- return priv->state_file;
-}
-
-/**
- * egg_sm_client_set_restart_command:
- * @client: the client
- * @argc: the length of @argv
- * @argv: argument vector
- *
- * Sets the command used to restart @client if it does not have a
- * .desktop file that can be used to find its restart command.
- *
- * This can also be used when handling the ::save_state signal, to
- * save the current state via an updated command line. (Eg, providing
- * a list of filenames to open when the application is resumed.)
- **/
-void
-egg_sm_client_set_restart_command (EggSMClient *client,
- int argc,
- const char **argv)
-{
- g_return_if_fail (EGG_IS_SM_CLIENT (client));
-
- if (EGG_SM_CLIENT_GET_CLASS (client)->set_restart_command)
- EGG_SM_CLIENT_GET_CLASS (client)->set_restart_command (client, argc, argv);
-}
-
-/**
- * egg_sm_client_set_discard_command:
- * @client: the client
- * @argc: the length of @argv
- * @argv: argument vector
- *
- * Sets the command used to discard a custom state file if using
- * egg_sm_client_set_restart_command(), which must be called before
- * using this function.
- **/
-void
-egg_sm_client_set_discard_command (EggSMClient *client,
- int argc,
- const char **argv)
-{
- g_return_if_fail (EGG_IS_SM_CLIENT (client));
-
- if (EGG_SM_CLIENT_GET_CLASS (client)->set_discard_command)
- EGG_SM_CLIENT_GET_CLASS (client)->set_discard_command (client, argc, argv);
-}
-
-/**
- * egg_sm_client_will_quit:
- * @client: the client
- * @will_quit: whether or not the application is willing to quit
- *
- * This MUST be called in response to the ::quit_requested signal, to
- * indicate whether or not the application is willing to quit. The
- * application may call it either directly from the signal handler, or
- * at some later point (eg, after asynchronously interacting with the
- * user).
- *
- * If the application does not connect to ::quit_requested,
- * #EggSMClient will call this method on its behalf (passing %TRUE
- * for @will_quit).
- *
- * After calling this method, the application should wait to receive
- * either ::quit_cancelled or ::quit.
- **/
-void
-egg_sm_client_will_quit (EggSMClient *client,
- gboolean will_quit)
-{
- g_return_if_fail (EGG_IS_SM_CLIENT (client));
-
- if (EGG_SM_CLIENT_GET_CLASS (client)->will_quit)
- EGG_SM_CLIENT_GET_CLASS (client)->will_quit (client, will_quit);
-}
-
-/**
- * egg_sm_client_end_session:
- * @style: a hint at how to end the session
- * @request_confirmation: whether or not the user should get a chance
- * to confirm the action
- *
- * Requests that the session manager end the current session. @style
- * indicates how the session should be ended, and
- * @request_confirmation indicates whether or not the user should be
- * given a chance to confirm the logout/reboot/shutdown. Both of these
- * flags are merely hints though; the session manager may choose to
- * ignore them.
- *
- * Return value: %TRUE if the request was sent; %FALSE if it could not
- * be (eg, because it could not connect to the session manager).
- **/
-gboolean
-egg_sm_client_end_session (EggSMClientEndStyle style,
- gboolean request_confirmation)
-{
- EggSMClient *client = egg_sm_client_get ();
-
- g_return_val_if_fail (EGG_IS_SM_CLIENT (client), FALSE);
-
- if (EGG_SM_CLIENT_GET_CLASS (client)->end_session)
- {
- return EGG_SM_CLIENT_GET_CLASS (client)->end_session (client, style,
- request_confirmation);
- }
- else
- return FALSE;
-}
-
-/* Signal-emitting callbacks from platform-specific code */
-
-GKeyFile *
-egg_sm_client_save_state (EggSMClient *client)
-{
- GKeyFile *state_file;
- char *group;
-
- g_return_val_if_fail (client == global_client, NULL);
-
- state_file = g_key_file_new ();
-
- g_debug ("Emitting save_state");
- g_signal_emit (client, signals[SAVE_STATE], 0, state_file);
- g_debug ("Done emitting save_state");
-
- group = g_key_file_get_start_group (state_file);
- if (group)
- {
- g_free (group);
- return state_file;
- }
- else
- {
- g_key_file_free (state_file);
- return NULL;
- }
-}
-
-void
-egg_sm_client_quit_requested (EggSMClient *client)
-{
- g_return_if_fail (client == global_client);
-
- if (!g_signal_has_handler_pending (client, signals[QUIT_REQUESTED], 0, FALSE))
- {
- g_debug ("Not emitting quit_requested because no one is listening");
- egg_sm_client_will_quit (client, TRUE);
- return;
- }
-
- g_debug ("Emitting quit_requested");
- g_signal_emit (client, signals[QUIT_REQUESTED], 0);
- g_debug ("Done emitting quit_requested");
-}
-
-void
-egg_sm_client_quit_cancelled (EggSMClient *client)
-{
- g_return_if_fail (client == global_client);
-
- g_debug ("Emitting quit_cancelled");
- g_signal_emit (client, signals[QUIT_CANCELLED], 0);
- g_debug ("Done emitting quit_cancelled");
-}
-
-void
-egg_sm_client_quit (EggSMClient *client)
-{
- g_return_if_fail (client == global_client);
-
- g_debug ("Emitting quit");
- g_signal_emit (client, signals[QUIT], 0);
- g_debug ("Done emitting quit");
-
- /* FIXME: should we just call gtk_main_quit() here? */
-}
-
-static void
-egg_sm_client_debug_handler (const char *log_domain,
- GLogLevelFlags log_level,
- const char *message,
- gpointer user_data)
-{
- static int debug = -1;
-
- if (debug < 0)
- debug = (g_getenv ("EGG_SM_CLIENT_DEBUG") != NULL);
-
- if (debug)
- g_log_default_handler (log_domain, log_level, message, NULL);
-}
diff --git a/src/eggsmclient.h b/src/eggsmclient.h
deleted file mode 100644
index f13bcecc..00000000
--- a/src/eggsmclient.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* eggsmclient.h
- * Copyright (C) 2007 Novell, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_SM_CLIENT_H__
-#define __EGG_SM_CLIENT_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_SM_CLIENT (egg_sm_client_get_type ())
-#define EGG_SM_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT, EggSMClient))
-#define EGG_SM_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT, EggSMClientClass))
-#define EGG_IS_SM_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT))
-#define EGG_IS_SM_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT))
-#define EGG_SM_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT, EggSMClientClass))
-
-typedef struct _EggSMClient EggSMClient;
-typedef struct _EggSMClientClass EggSMClientClass;
-typedef struct _EggSMClientPrivate EggSMClientPrivate;
-
-typedef enum {
- EGG_SM_CLIENT_END_SESSION_DEFAULT,
- EGG_SM_CLIENT_LOGOUT,
- EGG_SM_CLIENT_REBOOT,
- EGG_SM_CLIENT_SHUTDOWN
-} EggSMClientEndStyle;
-
-typedef enum {
- EGG_SM_CLIENT_MODE_DISABLED,
- EGG_SM_CLIENT_MODE_NO_RESTART,
- EGG_SM_CLIENT_MODE_NORMAL
-} EggSMClientMode;
-
-struct _EggSMClient
-{
- GObject parent;
-
-};
-
-struct _EggSMClientClass
-{
- GObjectClass parent_class;
-
- /* signals */
- void (*save_state) (EggSMClient *client,
- GKeyFile *state_file);
-
- void (*quit_requested) (EggSMClient *client);
- void (*quit_cancelled) (EggSMClient *client);
- void (*quit) (EggSMClient *client);
-
- /* virtual methods */
- void (*startup) (EggSMClient *client,
- const char *client_id);
- void (*set_restart_command) (EggSMClient *client,
- int argc,
- const char **argv);
- void (*set_discard_command) (EggSMClient *client,
- int argc,
- const char **argv);
- void (*will_quit) (EggSMClient *client,
- gboolean will_quit);
- gboolean (*end_session) (EggSMClient *client,
- EggSMClientEndStyle style,
- gboolean request_confirmation);
-
- /* Padding for future expansion */
- void (*_egg_reserved1) (void);
- void (*_egg_reserved2) (void);
- void (*_egg_reserved3) (void);
- void (*_egg_reserved4) (void);
-};
-
-GType egg_sm_client_get_type (void) G_GNUC_CONST;
-
-GOptionGroup *egg_sm_client_get_option_group (void);
-
-/* Initialization */
-void egg_sm_client_set_mode (EggSMClientMode mode);
-EggSMClientMode egg_sm_client_get_mode (void);
-EggSMClient *egg_sm_client_get (void);
-
-/* Resuming a saved session */
-gboolean egg_sm_client_is_resumed (EggSMClient *client);
-GKeyFile *egg_sm_client_get_state_file (EggSMClient *client);
-
-/* Alternate means of saving state */
-void egg_sm_client_set_restart_command (EggSMClient *client,
- int argc,
- const char **argv);
-void egg_sm_client_set_discard_command (EggSMClient *client,
- int argc,
- const char **argv);
-
-/* Handling "quit_requested" signal */
-void egg_sm_client_will_quit (EggSMClient *client,
- gboolean will_quit);
-
-/* Initiate a logout/reboot/shutdown */
-gboolean egg_sm_client_end_session (EggSMClientEndStyle style,
- gboolean request_confirmation);
-
-G_END_DECLS
-
-
-#endif /* __EGG_SM_CLIENT_H__ */
diff --git a/src/gtkentryaction.c b/src/gtkentryaction.c
deleted file mode 100644
index 25378762..00000000
--- a/src/gtkentryaction.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (C) 2003, 2004 Marco Pesenti Gritti
- * Copyright (C) 2003, 2004 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 "config.h"
-
-#include "gtkentryaction.h"
-
-#include <gtk/gtk.h>
-
-#define GTK_ENTRY_ACTION_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), GTK_TYPE_ENTRY_ACTION, GtkEntryActionPrivate))
-
-struct _GtkEntryActionPrivate
-{
- char *text;
- gboolean editable;
- GtkWidget *entry_widget;
-};
-
-static void gtk_entry_action_init (GtkEntryAction *action);
-static void gtk_entry_action_class_init (GtkEntryActionClass *class);
-static void changed_cb (GtkEntry *entry,
- GtkEntryAction *action);
-
-enum
-{
- PROP_0,
- PROP_TEXT,
- PROP_EDITABLE,
-};
-
-static GObjectClass *parent_class = NULL;
-
-GType
-gtk_entry_action_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0))
- {
- static const GTypeInfo type_info =
- {
- sizeof (GtkEntryActionClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) gtk_entry_action_class_init,
- (GClassFinalizeFunc) NULL,
- NULL,
- sizeof (GtkEntryAction),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gtk_entry_action_init,
- };
-
- type = g_type_register_static (GTK_TYPE_ACTION,
- "GtkEntryAction",
- &type_info, 0);
- }
-
- return type;
-}
-
-static GtkWidget *
-gtk_entry_action_create_tool_item (GtkAction *action)
-{
- GtkToolItem *tool_item;
- GtkWidget *entry;
- GtkWidget *box;
- GtkWidget *label;
- GtkEntryAction *action_cast = (GtkEntryAction *)action;
-
- tool_item = gtk_tool_item_new ();
- box = gtk_hbox_new (FALSE, 6);
- label = gtk_label_new ("");
- entry = gtk_entry_new ();
- action_cast->priv->entry_widget = entry;
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
- gtk_container_add (GTK_CONTAINER (tool_item), box);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);
- gtk_widget_show (entry);
- gtk_widget_show (box);
-
- g_object_set_data (G_OBJECT (tool_item), "label", label);
- g_object_set_data (G_OBJECT (tool_item), "entry", entry);
-
- return GTK_WIDGET (tool_item);
-}
-
-static gboolean
-check_widget (GtkWidget *widget)
-{
- return GTK_IS_TOOL_ITEM (widget) &&
- GTK_IS_LABEL (g_object_get_data (G_OBJECT (widget), "label")) &&
- GTK_IS_ENTRY (g_object_get_data (G_OBJECT (widget), "entry"));
-}
-
-static void
-sync_label (GtkAction *gaction,
- GParamSpec *pspec,
- GtkWidget *proxy)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (gaction);
- GtkToolItem *item = GTK_TOOL_ITEM (proxy);
- GtkLabel *label = GTK_LABEL (g_object_get_data (G_OBJECT (item), "label"));
- char *text = NULL;
-
- g_object_get (action, "label", &text, NULL);
- gtk_label_set_text_with_mnemonic (label, text);
- if (text && *text)
- gtk_widget_show (GTK_WIDGET (label));
- else
- gtk_widget_hide (GTK_WIDGET (label));
- g_free (text);
-}
-
-static void
-sync_text (GtkAction *gaction,
- GParamSpec *pspec,
- GtkWidget *proxy)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (gaction);
- GtkToolItem *item = GTK_TOOL_ITEM (proxy);
- GtkEntry *entry = GTK_ENTRY (g_object_get_data (G_OBJECT (item), "entry"));
-
- g_signal_handlers_block_by_func (entry, G_CALLBACK (changed_cb), action);
- gtk_entry_set_text (entry, action->priv->text);
- g_signal_handlers_unblock_by_func (entry, G_CALLBACK (changed_cb), action);
-}
-
-static void
-sync_editable (GtkAction *gaction,
- GParamSpec *pspec,
- GtkWidget *proxy)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (gaction);
- GtkToolItem *item = GTK_TOOL_ITEM (proxy);
- GtkEntry *entry = GTK_ENTRY (g_object_get_data (G_OBJECT (item), "entry"));
-
- gtk_editable_set_editable (GTK_EDITABLE (entry), action->priv->editable);
-}
-
-static void
-changed_cb (GtkEntry *entry, GtkEntryAction *action)
-{
- const char *text;
- GtkWidget *proxy = GTK_WIDGET (entry)->parent;
-
- text = gtk_entry_get_text (entry);
-
- g_signal_handlers_block_by_func (action, G_CALLBACK (sync_text), proxy);
- gtk_entry_action_set_text (action, text);
- g_signal_handlers_unblock_by_func (action, G_CALLBACK (sync_text), proxy);
-}
-
-
-
-static void
-connect_proxy (GtkAction *action, GtkWidget *proxy)
-{
- if (check_widget (proxy))
- {
- GtkToolItem *item = GTK_TOOL_ITEM (proxy);
- GtkEntry *entry = GTK_ENTRY (g_object_get_data (G_OBJECT (item), "entry"));
-
- sync_label (action, NULL, proxy);
- g_signal_connect_object (action, "notify::label",
- G_CALLBACK (sync_label), proxy, 0);
- sync_text (action, NULL, proxy);
- g_signal_connect_object (action, "notify::text",
- G_CALLBACK (sync_text), proxy, 0);
- sync_editable (action, NULL, proxy);
- g_signal_connect_object (action, "notify::editable",
- G_CALLBACK (sync_editable), proxy, 0);
-
- g_signal_connect_object (entry, "activate",
- G_CALLBACK (gtk_action_activate), action,
- G_CONNECT_SWAPPED);
- g_signal_connect_object (entry, "changed",
- G_CALLBACK (changed_cb), action, 0);
- }
-
- GTK_ACTION_CLASS (parent_class)->connect_proxy (action, proxy);
-}
-
-static void
-disconnect_proxy (GtkAction *action, GtkWidget *proxy)
-{
- GTK_ACTION_CLASS (parent_class)->disconnect_proxy (action, proxy);
-
- if (check_widget (proxy))
- {
- GtkToolItem *item = GTK_TOOL_ITEM (proxy);
- GtkEntry *entry = GTK_ENTRY (g_object_get_data (G_OBJECT (item), "entry"));
-
- g_signal_handlers_disconnect_matched (action, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, proxy);
- g_signal_handlers_disconnect_matched (entry, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, action);
- }
-}
-
-static void
-gtk_entry_action_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (object);
-
- switch (prop_id)
- {
- case PROP_TEXT:
- gtk_entry_action_set_text (action, g_value_get_string (value));
- break;
- case PROP_EDITABLE:
- action->priv->editable = g_value_get_boolean (value);
- break;
- }
-}
-
-static void
-gtk_entry_action_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (object);
-
- switch (prop_id)
- {
- case PROP_TEXT:
- g_value_set_string (value, gtk_entry_action_get_text (action));
- break;
- case PROP_EDITABLE:
- g_value_set_boolean (value, action->priv->editable);
- break;
- }
-}
-
-static void
-gtk_entry_action_finalize (GObject *object)
-{
- GtkEntryAction *action = GTK_ENTRY_ACTION (object);
- GtkEntryActionPrivate *priv = action->priv;
-
- g_free (priv->text);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gtk_entry_action_class_init (GtkEntryActionClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
- GtkActionClass *action_class = GTK_ACTION_CLASS (class);
-
- parent_class = g_type_class_peek_parent (class);
-
- object_class->finalize = gtk_entry_action_finalize;
- object_class->get_property = gtk_entry_action_get_property;
- object_class->set_property = gtk_entry_action_set_property;
-
- action_class->create_tool_item = gtk_entry_action_create_tool_item;
- action_class->connect_proxy = connect_proxy;
- action_class->disconnect_proxy = disconnect_proxy;
-
- g_object_class_install_property (object_class,
- PROP_TEXT,
- g_param_spec_string ("text",
- "Text",
- "The text",
- "",
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_EDITABLE,
- g_param_spec_boolean ("editable",
- "Editable",
- "Editable",
- TRUE,
- G_PARAM_READWRITE));
-
- g_type_class_add_private (object_class, sizeof (GtkEntryActionPrivate));
-}
-
-static void
-gtk_entry_action_init (GtkEntryAction *action)
-{
- action->priv = GTK_ENTRY_ACTION_GET_PRIVATE (action);
-
- action->priv->text = g_strdup ("");
- action->priv->editable = TRUE;
-}
-
-GtkAction *
-gtk_entry_action_new (const gchar *name,
- const gchar *label,
- const gchar *tooltip,
- const gchar *stock_id)
-{
- GtkAction *action;
-
- action = g_object_new (GTK_TYPE_ENTRY_ACTION,
- "name", name,
- "label", label,
- "tooltip", tooltip,
- "stock_id", stock_id,
- NULL);
-
- return action;
-}
-
-const char *
-gtk_entry_action_get_text (GtkEntryAction *action)
-{
- g_return_val_if_fail (GTK_IS_ENTRY_ACTION (action), "");
-
- return action->priv->text;
-}
-
-void
-gtk_entry_action_set_text (GtkEntryAction *action,
- const char *text)
-{
- char *old_text;
- g_return_if_fail (GTK_IS_ENTRY_ACTION (action));
-
- old_text = action->priv->text;
- action->priv->text = g_strdup (text);
- g_free (old_text);
- g_object_notify (G_OBJECT (action), "text");
-}
-
-gboolean
-gtk_entry_action_has_focus (GtkEntryAction *action)
-{
- g_return_val_if_fail (GTK_IS_ENTRY_ACTION (action), FALSE);
-
- return (GTK_WIDGET_HAS_FOCUS (action->priv->entry_widget));
-
-}
diff --git a/src/gtkentryaction.h b/src/gtkentryaction.h
deleted file mode 100644
index 413fea60..00000000
--- a/src/gtkentryaction.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2003 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, 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 GTK_ENTRY_ACTION_H
-#define GTK_ENTRY_ACTION_H
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_ENTRY_ACTION (gtk_entry_action_get_type ())
-#define GTK_ENTRY_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY_ACTION, GtkEntryAction))
-#define GTK_ENTRY_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY_ACTION, GtkEntryActionClass))
-#define GTK_IS_ENTRY_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY_ACTION))
-#define GTK_IS_ENTRY_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), GTK_TYPE_ENTRY_ACTION))
-#define GTK_ENTRY_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_ENTRY_ACTION, GtkEntryActionClass))
-
-typedef struct _GtkEntryAction GtkEntryAction;
-typedef struct _GtkEntryActionPrivate GtkEntryActionPrivate;
-typedef struct _GtkEntryActionClass GtkEntryActionClass;
-
-struct _GtkEntryAction
-{
- GtkAction parent;
-
- /*< private >*/
- GtkEntryActionPrivate *priv;
-};
-
-struct _GtkEntryActionClass
-{
- GtkActionClass parent_class;
-};
-
-GType gtk_entry_action_get_type (void);
-
-GtkAction *gtk_entry_action_new (const gchar *name,
- const gchar *label,
- const gchar *tooltip,
- const gchar *stock_id);
-
-const char *gtk_entry_action_get_text (GtkEntryAction *action);
-
-void gtk_entry_action_set_text (GtkEntryAction *action,
- const char *text);
-
-gboolean gtk_entry_action_has_focus (GtkEntryAction *action);
-G_END_DECLS
-
-#endif
diff --git a/src/yelp-application.c b/src/yelp-application.c
index dda2214f..375e43c7 100644
--- a/src/yelp-application.c
+++ b/src/yelp-application.c
@@ -24,10 +24,15 @@
#include <config.h>
#endif
+#define G_SETTINGS_ENABLE_BACKEND
+
#include <dbus/dbus-glib-bindings.h>
#include <dbus/dbus-glib.h>
+#include <gio/gio.h>
+#include <gio/gsettingsbackend.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
#include "yelp-settings.h"
#include "yelp-view.h"
@@ -40,6 +45,12 @@
static gboolean editor_mode = FALSE;
+enum {
+ BOOKMARKS_CHANGED,
+ LAST_SIGNAL
+};
+static gint signals[LAST_SIGNAL] = { 0 };
+
static const GOptionEntry entries[] = {
{"editor-mode", 0, 0, G_OPTION_ARG_NONE, &editor_mode, N_("Turn on editor mode"), NULL},
{ NULL }
@@ -48,7 +59,7 @@ static const GOptionEntry entries[] = {
typedef struct _YelpApplicationLoad YelpApplicationLoad;
struct _YelpApplicationLoad {
YelpApplication *app;
- guint timestamp;
+ guint32 timestamp;
gboolean new;
};
@@ -57,12 +68,21 @@ static void yelp_application_class_init (YelpApplicationClass *k
static void yelp_application_dispose (GObject *object);
static void yelp_application_finalize (GObject *object);
+static void application_setup (YelpApplication *app);
static void application_uri_resolved (YelpUri *uri,
YelpApplicationLoad *data);
static gboolean application_window_deleted (YelpWindow *window,
GdkEvent *event,
YelpApplication *app);
+GSettings * application_get_doc_settings (YelpApplication *app,
+ const gchar *doc_uri);
static gboolean application_maybe_quit (YelpApplication *app);
+static void application_adjust_font (GtkAction *action,
+ YelpApplication *app);
+static void application_set_font_sensitivity (YelpApplication *app);
+
+static gboolean window_resized (YelpWindow *window,
+ YelpApplication *app);
G_DEFINE_TYPE (YelpApplication, yelp_application, G_TYPE_OBJECT);
#define GET_PRIV(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_APPLICATION, YelpApplicationPrivate))
@@ -72,22 +92,35 @@ struct _YelpApplicationPrivate {
DBusGConnection *connection;
GSList *windows;
-
GHashTable *windows_by_document;
- gboolean show_text_cursor;
- gboolean map_show_text_cursor;
+ GtkActionGroup *action_group;
+
+ gchar *gsettings_context; /* static, do not free */
+ GSettings *gsettings;
+ GHashTable *docsettings;
+};
+
+static const GtkActionEntry action_entries[] = {
+ { "LargerText", GTK_STOCK_ZOOM_IN,
+ N_("_Larger Text"),
+ "<Control>plus",
+ N_("Increase the size of the text"),
+ G_CALLBACK (application_adjust_font) },
+ { "SmallerText", GTK_STOCK_ZOOM_OUT,
+ N_("_Smaller Text"),
+ "<Control>minus",
+ N_("Descrease the size of the text"),
+ G_CALLBACK (application_adjust_font) }
};
static void
yelp_application_init (YelpApplication *app)
{
YelpApplicationPrivate *priv = GET_PRIV (app);
-
- priv->windows_by_document = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- NULL);
+ priv->docsettings = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) g_object_unref);
}
static void
@@ -98,6 +131,14 @@ yelp_application_class_init (YelpApplicationClass *klass)
object_class->dispose = yelp_application_dispose;
object_class->finalize = yelp_application_finalize;
+ signals[BOOKMARKS_CHANGED] =
+ g_signal_new ("bookmarks-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
dbus_g_object_type_install_info (YELP_TYPE_APPLICATION,
&dbus_glib_yelp_object_info);
@@ -114,6 +155,16 @@ yelp_application_dispose (GObject *object)
priv->connection = NULL;
}
+ if (priv->action_group) {
+ g_object_unref (priv->action_group);
+ priv->action_group = NULL;
+ }
+
+ if (priv->gsettings) {
+ g_object_unref (priv->gsettings);
+ priv->gsettings = NULL;
+ }
+
G_OBJECT_CLASS (yelp_application_parent_class)->dispose (object);
}
@@ -123,69 +174,100 @@ yelp_application_finalize (GObject *object)
YelpApplicationPrivate *priv = GET_PRIV (object);
g_hash_table_destroy (priv->windows_by_document);
+ g_hash_table_destroy (priv->docsettings);
G_OBJECT_CLASS (yelp_application_parent_class)->finalize (object);
}
-/******************************************************************************/
-
-void
-yelp_application_adjust_font (YelpApplication *app,
- gint adjust)
+static void
+application_setup (YelpApplication *app)
{
- GSList *cur;
- YelpSettings *settings = yelp_settings_get_default ();
- GParamSpec *spec = g_object_class_find_property ((GObjectClass *) YELP_SETTINGS_GET_CLASS (settings),
- "font-adjustment");
- gint adjustment = yelp_settings_get_font_adjustment (settings);
YelpApplicationPrivate *priv = GET_PRIV (app);
+ YelpSettings *settings = yelp_settings_get_default ();
+ GtkAction *action;
- if (!G_PARAM_SPEC_INT (spec)) {
- g_warning ("Expcected integer param spec for font-adjustment");
- return;
+ priv->windows_by_document = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ NULL);
+ /* FIXME: is there a better way to see if there's a real backend in use? */
+ if (g_getenv ("GSETTINGS_BACKEND") == NULL) {
+ gchar *keyfile = g_build_filename (g_get_user_config_dir (),
+ "yelp", "yelp.cfg",
+ NULL);
+ g_settings_backend_setup_keyfile ("yelp", keyfile);
+ priv->gsettings_context = "yelp";
+ priv->gsettings = g_settings_new_with_context ("org.gnome.yelp",
+ priv->gsettings_context);
+ g_free (keyfile);
}
+ else {
+ priv->gsettings = g_settings_new ("org.gnome.yelp");
+ }
+ g_settings_bind (priv->gsettings, "show-cursor",
+ settings, "show-text-cursor",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->gsettings, "font-adjustment",
+ settings, "font-adjustment",
+ G_SETTINGS_BIND_DEFAULT);
+
+ priv->action_group = gtk_action_group_new ("ApplicationActions");
+ gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (priv->action_group,
+ action_entries, G_N_ELEMENTS (action_entries),
+ app);
+ action = (GtkAction *) gtk_toggle_action_new ("ShowTextCursor",
+ _("Show Text _Cursor"),
+ NULL, NULL);
+ gtk_action_group_add_action_with_accel (priv->action_group,
+ action, "F7");
+ g_settings_bind (priv->gsettings, "show-cursor",
+ action, "active",
+ G_SETTINGS_BIND_DEFAULT);
+ g_object_unref (action);
+ application_set_font_sensitivity (app);
+}
- adjustment += adjust;
- yelp_settings_set_font_adjustment (settings, adjustment);
-
- for (cur = priv->windows; cur != NULL; cur = cur->next) {
- YelpWindow *win = (YelpWindow *) cur->data;
- GtkActionGroup *group = yelp_window_get_action_group (win);
- GtkAction *larger, *smaller;
-
- larger = gtk_action_group_get_action (group, "LargerText");
- gtk_action_set_sensitive (larger, adjustment < ((GParamSpecInt *) spec)->maximum);
+/******************************************************************************/
- smaller = gtk_action_group_get_action (group, "SmallerText");
- gtk_action_set_sensitive (smaller, adjustment > ((GParamSpecInt *) spec)->minimum);
- }
+GtkActionGroup *
+yelp_application_get_action_group (YelpApplication *app)
+{
+ YelpApplicationPrivate *priv = GET_PRIV (app);
+ return priv->action_group;
}
-void
-yelp_application_set_show_text_cursor (YelpApplication *app,
- gboolean show)
+static void
+application_adjust_font (GtkAction *action,
+ YelpApplication *app)
{
- GSList *cur;
- YelpSettings *settings = yelp_settings_get_default ();
YelpApplicationPrivate *priv = GET_PRIV (app);
+ gint adjustment = g_settings_get_int (priv->gsettings, "font-adjustment");
+ gint adjust = g_str_equal (gtk_action_get_name (action), "LargerText") ? 1 : -1;
- /* We get callbacks in the loop. Ignore them. */
- if (priv->map_show_text_cursor)
- return;
+ adjustment += adjust;
+ g_settings_set_int (priv->gsettings, "font-adjustment", adjustment);
- priv->show_text_cursor = show;
- yelp_settings_set_show_text_cursor (settings, show);
- priv->map_show_text_cursor = TRUE;
- for (cur = priv->windows; cur != NULL; cur = cur->next) {
- YelpWindow *win = (YelpWindow *) cur->data;
- GtkActionGroup *group = yelp_window_get_action_group (win);
- GtkAction *action;
+ application_set_font_sensitivity (app);
+}
- action = gtk_action_group_get_action (group, "ShowTextCursor");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), show);
+static void
+application_set_font_sensitivity (YelpApplication *app)
+{
+ YelpApplicationPrivate *priv = GET_PRIV (app);
+ YelpSettings *settings = yelp_settings_get_default ();
+ GParamSpec *spec = g_object_class_find_property ((GObjectClass *) YELP_SETTINGS_GET_CLASS (settings),
+ "font-adjustment");
+ gint adjustment = g_settings_get_int (priv->gsettings, "font-adjustment");
+ if (!G_PARAM_SPEC_INT (spec)) {
+ g_warning ("Expcected integer param spec for font-adjustment");
+ return;
}
- priv->map_show_text_cursor = FALSE;
+ gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group, "LargerText"),
+ adjustment < ((GParamSpecInt *) spec)->maximum);
+ gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group, "SmallerText"),
+ adjustment > ((GParamSpecInt *) spec)->minimum);
}
/******************************************************************************/
@@ -287,6 +369,8 @@ yelp_application_run (YelpApplication *app,
"/org/gnome/Yelp",
G_OBJECT (app));
+ application_setup (app);
+
yelp_settings_set_editor_mode (yelp_settings_get_default (), editor_mode);
yelp_application_load_uri (app, uri, gtk_get_current_event_time (), NULL);
@@ -299,7 +383,7 @@ yelp_application_run (YelpApplication *app,
gboolean
yelp_application_load_uri (YelpApplication *app,
const gchar *uri,
- guint timestamp,
+ guint32 timestamp,
GError **error)
{
YelpApplicationLoad *data;
@@ -308,6 +392,7 @@ yelp_application_load_uri (YelpApplication *app,
data = g_new (YelpApplicationLoad, 1);
data->app = app;
data->timestamp = timestamp;
+ data->new = FALSE;
yuri = yelp_uri_new (uri);
@@ -323,19 +408,26 @@ void
yelp_application_new_window (YelpApplication *app,
const gchar *uri)
{
- YelpApplicationLoad *data;
YelpUri *yuri;
+ yuri = yelp_uri_new (uri ? uri : DEFAULT_URI);
+
+ yelp_application_new_window_uri (app, yuri);
+}
+
+void
+yelp_application_new_window_uri (YelpApplication *app,
+ YelpUri *uri)
+{
+ YelpApplicationLoad *data;
data = g_new (YelpApplicationLoad, 1);
data->app = app;
+ data->timestamp = gtk_get_current_event_time ();
data->new = TRUE;
-
- yuri = yelp_uri_new (uri ? uri : DEFAULT_URI);
-
- g_signal_connect (yuri, "resolved",
+ g_signal_connect (uri, "resolved",
G_CALLBACK (application_uri_resolved),
data);
- yelp_uri_resolve (yuri);
+ yelp_uri_resolve (uri);
}
static void
@@ -355,22 +447,22 @@ application_uri_resolved (YelpUri *uri,
window = g_hash_table_lookup (priv->windows_by_document, doc_uri);
if (window == NULL) {
- GtkActionGroup *group;
- GtkAction *action;
+ gint width, height;
+ GSettings *settings = application_get_doc_settings (data->app, doc_uri);
+
+ g_settings_get (settings, "geometry", "(ii)", &width, &height);
window = yelp_window_new (data->app);
+ gtk_window_set_default_size (GTK_WINDOW (window), width, height);
+ g_signal_connect (window, "resized", G_CALLBACK (window_resized), data->app);
priv->windows = g_slist_prepend (priv->windows, window);
- group = yelp_window_get_action_group (window);
- action = gtk_action_group_get_action (group, "ShowTextCursor");
- priv->map_show_text_cursor = TRUE;
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
- priv->show_text_cursor);
- priv->map_show_text_cursor = FALSE;
-
if (!data->new) {
g_hash_table_insert (priv->windows_by_document, doc_uri, window);
g_object_set_data (G_OBJECT (window), "doc_uri", doc_uri);
}
+ else {
+ g_free (doc_uri);
+ }
g_signal_connect (window, "delete-event",
G_CALLBACK (application_window_deleted), data->app);
}
@@ -387,11 +479,43 @@ application_uri_resolved (YelpUri *uri,
if (gdk_window)
gdk_x11_window_move_to_current_desktop (gdk_window);
- gtk_window_present_with_time (GTK_WINDOW (window), GDK_CURRENT_TIME);
+ /* Ensure we actually present the window when invoked from the command
+ * line. This is somewhat evil, but the minor evil of Yelp stealing
+ * focus (after you requested it) is outweighed for me by the major
+ * evil of no help window appearing when you click Help.
+ */
+ if (data->timestamp == 0)
+ data->timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window)));
+
+ gtk_window_present_with_time (GTK_WINDOW (window), data->timestamp);
g_free (data);
}
+GSettings *
+application_get_doc_settings (YelpApplication *app, const gchar *doc_uri)
+{
+ YelpApplicationPrivate *priv = GET_PRIV (app);
+ GSettings *settings = g_hash_table_lookup (priv->docsettings, doc_uri);
+ if (settings == NULL) {
+ gchar *tmp;
+ gchar *settings_path;
+ tmp = g_uri_escape_string (doc_uri, "", FALSE);
+ settings_path = g_strconcat ("/apps/yelp/documents/", tmp, "/", NULL);
+ g_free (tmp);
+ if (priv->gsettings_context)
+ settings = g_settings_new_with_context_and_path ("org.gnome.yelp.documents",
+ priv->gsettings_context,
+ settings_path);
+ else
+ settings = g_settings_new_with_path ("org.gnome.yelp.document",
+ settings_path);
+ g_hash_table_insert (priv->docsettings, g_strdup (doc_uri), settings);
+ g_free (settings_path);
+ }
+ return settings;
+}
+
static gboolean
application_window_deleted (YelpWindow *window,
GdkEvent *event,
@@ -455,6 +579,97 @@ packages_installed (DBusGProxy *proxy,
}
void
+yelp_application_add_bookmark (YelpApplication *app,
+ const gchar *doc_uri,
+ const gchar *page_id,
+ const gchar *icon,
+ const gchar *title)
+{
+ GSettings *settings;
+
+ settings = application_get_doc_settings (app, doc_uri);
+
+ if (settings) {
+ GVariantBuilder builder;
+ GVariantIter *iter;
+ gchar *this_id, *this_icon, *this_title;
+ gboolean broken = FALSE;
+ g_settings_get (settings, "bookmarks", "a(sss)", &iter);
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sss)"));
+ while (g_variant_iter_loop (iter, "(&s&s&s)", &this_id, &this_icon, &this_title)) {
+ if (g_str_equal (page_id, this_id)) {
+ /* Already have this bookmark */
+ broken = TRUE;
+ break;
+ }
+ g_variant_builder_add (&builder, "(sss)", this_id, this_icon, this_title);
+ }
+ g_variant_iter_free (iter);
+
+ if (!broken) {
+ GVariant *value;
+ g_variant_builder_add (&builder, "(sss)", page_id, icon, title);
+ value = g_variant_builder_end (&builder);
+ g_settings_set_value (settings, "bookmarks", value);
+ g_signal_emit (app, signals[BOOKMARKS_CHANGED], 0, doc_uri);
+ }
+ }
+}
+
+void
+yelp_application_update_bookmarks (YelpApplication *app,
+ const gchar *doc_uri,
+ const gchar *page_id,
+ const gchar *icon,
+ const gchar *title)
+{
+ GSettings *settings;
+
+ settings = application_get_doc_settings (app, doc_uri);
+
+ if (settings) {
+ GVariantBuilder builder;
+ GVariantIter *iter;
+ gchar *this_id, *this_icon, *this_title;
+ gboolean updated = FALSE;
+ g_settings_get (settings, "bookmarks", "a(sss)", &iter);
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sss)"));
+ while (g_variant_iter_loop (iter, "(&s&s&s)", &this_id, &this_icon, &this_title)) {
+ if (g_str_equal (page_id, this_id)) {
+ if (icon && !g_str_equal (icon, this_icon)) {
+ this_icon = (gchar *) icon;
+ updated = TRUE;
+ }
+ if (title && !g_str_equal (title, this_title)) {
+ this_title = (gchar *) title;
+ updated = TRUE;
+ }
+ if (!updated)
+ break;
+ }
+ g_variant_builder_add (&builder, "(sss)", this_id, this_icon, this_title);
+ }
+ g_variant_iter_free (iter);
+
+ if (updated) {
+ GVariant *value;
+ value = g_variant_builder_end (&builder);
+ g_settings_set_value (settings, "bookmarks", value);
+ g_signal_emit (app, signals[BOOKMARKS_CHANGED], 0, doc_uri);
+ }
+ }
+}
+
+GVariant *
+yelp_application_get_bookmarks (YelpApplication *app,
+ const gchar *doc_uri)
+{
+ GSettings *settings = application_get_doc_settings (app, doc_uri);
+
+ return g_settings_get_value (settings, "bookmarks");
+}
+
+void
yelp_application_install_package (YelpApplication *app,
const gchar *pkg,
const gchar *alt)
@@ -475,3 +690,28 @@ yelp_application_install_package (YelpApplication *app,
G_TYPE_STRING, "",
G_TYPE_INVALID, G_TYPE_INVALID);
}
+
+static gboolean
+window_resized (YelpWindow *window,
+ YelpApplication *app)
+{
+ YelpApplicationPrivate *priv = GET_PRIV (app);
+ YelpUri *uri;
+ gchar *doc_uri;
+ GSettings *settings;
+
+ uri = yelp_window_get_uri (window);
+ doc_uri = yelp_uri_get_document_uri (uri);
+ settings = g_hash_table_lookup (priv->docsettings, doc_uri);
+
+ if (settings) {
+ gint width, height;
+ yelp_window_get_geometry (window, &width, &height);
+ g_settings_set (settings, "geometry", "(ii)", width, height);
+ }
+
+ g_free (doc_uri);
+ g_object_unref (uri);
+
+ return FALSE;
+}
diff --git a/src/yelp-application.h b/src/yelp-application.h
index ed48bb00..bf664a95 100644
--- a/src/yelp-application.h
+++ b/src/yelp-application.h
@@ -25,6 +25,8 @@
#include <glib-object.h>
+#include "yelp-uri.h"
+
#define YELP_TYPE_APPLICATION (yelp_application_get_type ())
#define YELP_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), YELP_TYPE_APPLICATION, YelpApplication))
#define YELP_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), YELP_TYPE_APPLICATION, YelpApplicationClass))
@@ -44,23 +46,32 @@ struct _YelpApplicationClass
GObjectClass parent_class;
};
-GType yelp_application_get_type (void);
-YelpApplication* yelp_application_new (void);
-gint yelp_application_run (YelpApplication *app,
- gint argc,
- gchar **argv);
-gboolean yelp_application_load_uri (YelpApplication *app,
- const gchar *uri,
- guint timestamp,
- GError **error);
-void yelp_application_new_window (YelpApplication *app,
- const gchar *uri);
-
-void yelp_application_adjust_font (YelpApplication *app,
- gint adjust);
-
-void yelp_application_set_show_text_cursor (YelpApplication *app,
- gboolean show);
+GType yelp_application_get_type (void);
+YelpApplication* yelp_application_new (void);
+gint yelp_application_run (YelpApplication *app,
+ gint argc,
+ gchar **argv);
+gboolean yelp_application_load_uri (YelpApplication *app,
+ const gchar *uri,
+ guint timestamp,
+ GError **error);
+void yelp_application_new_window (YelpApplication *app,
+ const gchar *uri);
+void yelp_application_new_window_uri (YelpApplication *app,
+ YelpUri *uri);
+GtkActionGroup * yelp_application_get_action_group (YelpApplication *app);
+void yelp_application_add_bookmark (YelpApplication *app,
+ const gchar *doc_uri,
+ const gchar *page_id,
+ const gchar *icon,
+ const gchar *title);
+void yelp_application_update_bookmarks (YelpApplication *app,
+ const gchar *doc_uri,
+ const gchar *page_id,
+ const gchar *icon,
+ const gchar *title);
+GVariant * yelp_application_get_bookmarks (YelpApplication *app,
+ const gchar *doc_uri);
void yelp_application_install_package (YelpApplication *app,
const gchar *pkg,
const gchar *alt);
diff --git a/src/yelp-base.c b/src/yelp-base.c
deleted file mode 100644
index c702a996..00000000
--- a/src/yelp-base.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001-2002 Mikael Hallendal <micke@imendio.com>
- *
- * 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: Mikael Hallendal <micke@imendio.com>
- */
-
-#include <config.h>
-
-#include <dbus/dbus-glib-bindings.h>
-#include <gdk/gdkx.h>
-#define SN_API_NOT_YET_FROZEN
-#include <libsn/sn-launchee.h>
-
-#include <string.h>
-
-#include "yelp-window.h"
-#include "yelp-settings.h"
-#include "yelp-toc.h"
-#include "yelp-base.h"
-#include "yelp-bookmarks.h"
-#include "server-bindings.h"
-
-gboolean main_running;
-
-#define YELP_BASE_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_BASE, YelpBasePriv))
-
-struct _YelpBasePriv {
- GNode *toc_tree;
- gboolean private_session;
-
- GList *index;
- GSList *windows;
-};
-
-static void yelp_base_init (YelpBase *base);
-static void yelp_base_class_init (YelpBaseClass *klass);
-static void yelp_base_register_dbus (YelpBase *base);
-static void yelp_base_new_window_cb (YelpWindow *window,
- const gchar *uri,
- YelpBase *base);
-static void yelp_base_window_finalized_cb (YelpBase *base,
- YelpWindow *window);
-
-
-#define PARENT_TYPE G_TYPE_OBJECT
-static GObjectClass *parent_class;
-
-GType
-yelp_base_get_type (void)
-{
- static GType base_type = 0;
-
- if (!base_type) {
- static const GTypeInfo base_info = {
- sizeof (YelpBaseClass),
- NULL,
- NULL,
- (GClassInitFunc) yelp_base_class_init,
- NULL,
- NULL,
- sizeof (YelpBase),
- 0,
- (GInstanceInitFunc) yelp_base_init,
- };
-
- base_type = g_type_register_static (G_TYPE_OBJECT,
- "YelpBase",
- &base_info, 0);
- }
-
- return base_type;
-}
-
-static void
-yelp_base_init (YelpBase *base)
-{
- YelpBasePriv *priv;
-
- base->priv = priv = YELP_BASE_GET_PRIVATE (base);
- priv->toc_tree = g_node_new (NULL);
- priv->index = NULL;
- priv->windows = NULL;
- yelp_bookmarks_init ();
- yelp_settings_init ();
- /* Init here to start processing before
- * we even start the window */
- yelp_toc_new();
-
-}
-
-static void
-yelp_base_class_init (YelpBaseClass *klass)
-{
- parent_class = g_type_class_peek (PARENT_TYPE);
-
- main_running = TRUE;
-
- g_type_class_add_private (klass, sizeof (YelpBasePriv));
-}
-
-gboolean
-server_new_window (YelpBase *base, gchar *url, gchar *timestamp,
- GError **error)
-{
- GtkWidget *new_window;
-
- new_window = yelp_base_new_window (base, url, timestamp);
- gtk_widget_show (new_window);
- return TRUE;
-}
-
-gboolean
-server_get_url_list (YelpBase *server, gchar **urls, GError **error)
-{
- gint len, i;
- GSList *node;
- const gchar *uri;
- YelpBasePriv *priv;
-
- priv = server->priv;
-
- len = g_slist_length (priv->windows);
-
- node = priv->windows;
-
- uri = yelp_window_get_uri ((YelpWindow *) node->data);
- *urls = g_strdup (uri);
- node = node->next;
-
- for (i = 0; node; node = node->next, i++) {
- gchar *list;
- uri = yelp_window_get_uri ((YelpWindow *) node->data);
-
- list = g_strconcat (uri, ";", *urls, NULL);
- g_free (*urls);
- *urls = g_strdup (list);
- g_free (list);
- }
- return TRUE;
-}
-
-static void
-yelp_base_new_window_cb (YelpWindow *window, const gchar *uri,
- YelpBase *base)
-{
- GtkWidget *new_window;
-
- g_return_if_fail (YELP_IS_WINDOW (window));
- g_return_if_fail (YELP_IS_BASE (base));
-
- new_window = yelp_base_new_window (base, uri, NULL);
-
- gtk_widget_show (new_window);
-}
-
-static void
-yelp_base_window_finalized_cb (YelpBase *base, YelpWindow *window)
-{
- YelpBasePriv *priv;
-
- g_return_if_fail (YELP_IS_BASE (base));
-
- priv = base->priv;
-
- priv->windows = g_slist_remove (priv->windows, window);
-
- if (g_slist_length (priv->windows) == 0) {
- main_running = FALSE;
- gtk_main_quit ();
- }
-}
-
-YelpBase *
-yelp_base_new (gboolean priv)
-{
- YelpBase *base;
-
- base = g_object_new (YELP_TYPE_BASE, NULL);
- if (!priv)
- yelp_base_register_dbus (base);
- base->priv->private_session = priv;
-
- return base;
-}
-
-static void
-sn_error_trap_push (SnDisplay *display,
- Display *xdisplay)
-{
- gdk_error_trap_push ();
-}
-
-static void
-sn_error_trap_pop (SnDisplay *display,
- Display *xdisplay)
-{
- gdk_error_trap_pop ();
-}
-
-GtkWidget *
-yelp_base_new_window (YelpBase *base, const gchar *uri, const gchar *startup_id)
-{
- YelpBasePriv *priv;
- GtkWidget *window;
- SnDisplay *sn_display = NULL;
- GdkScreen *screen = NULL;
- GdkDisplay *display = NULL;
- SnLauncheeContext *context = NULL;
-
- g_return_val_if_fail (YELP_IS_BASE (base), NULL);
-
- priv = base->priv;
-
- window = yelp_window_new (priv->toc_tree, priv->index);
- gtk_widget_realize (GTK_WIDGET (window));
-
- if (startup_id) {
- screen = gtk_window_get_screen (GTK_WINDOW (window));
- display = gdk_screen_get_display (screen);
-
- sn_display =
- sn_display_new (gdk_x11_display_get_xdisplay (display),
- sn_error_trap_push, sn_error_trap_pop);
- context = sn_launchee_context_new (sn_display,
- gdk_screen_get_number (screen),
- startup_id);
- if (strncmp (sn_launchee_context_get_startup_id (context),
- "_TIME", 5) != 0)
- sn_launchee_context_setup_window (context,
- GDK_WINDOW_XWINDOW (window->window));
-
- if (sn_launchee_context_get_id_has_timestamp (context)) {
- gulong time;
-
- time = sn_launchee_context_get_timestamp (context);
- gdk_x11_window_set_user_time (window->window, time);
- }
- }
-
- priv->windows = g_slist_prepend (priv->windows, window);
-
- g_object_weak_ref (G_OBJECT (window),
- (GWeakNotify) yelp_base_window_finalized_cb,
- base);
-
- g_signal_connect (window, "new_window_requested",
- G_CALLBACK (yelp_base_new_window_cb),
- base);
-
- gtk_widget_show (window);
-
- if (uri && uri[0] != '\0')
- yelp_window_load (YELP_WINDOW (window), uri);
- else
- yelp_window_load (YELP_WINDOW (window), "x-yelp-toc:");
-
- if (context) {
- sn_launchee_context_complete (context);
- sn_launchee_context_unref (context);
- sn_display_unref (sn_display);
- }
-
- return window;
-}
-
-static void
-yelp_base_register_dbus (YelpBase *base)
-{
- GError *error = NULL;
- DBusGProxy *driver_proxy;
- YelpBaseClass *klass = YELP_BASE_GET_CLASS (base);
- guint request_ret;
- YelpBasePriv *priv;
-
- priv = base->priv;
-
- klass->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (klass->connection == NULL) {
- g_warning("Unable to connect to dbus: %s", error->message);
- g_error_free (error);
- return;
- }
-
- dbus_g_object_type_install_info (YELP_TYPE_BASE,
- &dbus_glib_server_object_object_info);
-
- dbus_g_connection_register_g_object (klass->connection,
- "/org/gnome/YelpService",
- G_OBJECT (base));
-
- driver_proxy = dbus_g_proxy_new_for_name (klass->connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
-
- if(!org_freedesktop_DBus_request_name (driver_proxy,
- "org.gnome.YelpService",
- 0, &request_ret,
- &error)) {
- g_warning("Unable to register service: %s", error->message);
- g_error_free (error);
- }
- g_object_unref (driver_proxy);
-
-}
diff --git a/src/yelp-base.h b/src/yelp-base.h
deleted file mode 100644
index e5ac0e7c..00000000
--- a/src/yelp-base.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001 Mikael Hallendal <micke@imendio.com>
- *
- * 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: Mikael Hallendal <micke@imendio.com>
- */
-
-#ifndef __YELP_BASE_H__
-#define __YELP_BASE_H__
-
-#include <dbus/dbus-glib.h>
-
-
-typedef struct _YelpBase YelpBase;
-typedef struct _YelpBaseClass YelpBaseClass;
-typedef struct _YelpBasePriv YelpBasePriv;
-
-#define YELP_TYPE_BASE (yelp_base_get_type ())
-#define YELP_BASE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_BASE, YelpBase))
-#define YELP_BASE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_BASE, YelpBaseClass))
-#define YELP_IS_BASE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_BASE))
-#define YELP_IS_BASE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_BASE))
-#define YELP_BASE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_BASE, YelpBaseClass))
-
-
-struct _YelpBase {
- GObject parent;
-
- YelpBasePriv *priv;
-};
-
-struct _YelpBaseClass {
- GObjectClass parent_class;
-
- DBusGConnection *connection;
-};
-
-GType yelp_base_get_type (void);
-YelpBase * yelp_base_new (gboolean priv);
-
-GtkWidget * yelp_base_new_window (YelpBase *base,
- const gchar *uri,
- const gchar *timestamp);
-gboolean server_new_window (YelpBase *server,
- gchar *url,
- gchar *timestamp,
- GError **error);
-gboolean server_get_url_list (YelpBase *server,
- gchar **urls,
- GError **error);
-
-#endif /* __YELP_BASE_H__ */
diff --git a/src/yelp-bookmarks.c b/src/yelp-bookmarks.c
deleted file mode 100644
index de66c1b9..00000000
--- a/src/yelp-bookmarks.c
+++ /dev/null
@@ -1,1154 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2003 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "yelp-bookmarks.h"
-#include "yelp-utils.h"
-#include "yelp-window.h"
-#include "yelp-debug.h"
-
-#include <string.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <libxml/parser.h>
-#include <libxml/parserInternals.h>
-#include <libxml/xpath.h>
-#include <libxml/xpathInternals.h>
-#include <libxml/xmlwriter.h>
-
-#define COL_NAME 0
-#define COL_LABEL 1
-#define COL_EDIT 2
-#define COL_HEADER 3
-#define TOC_PATH "ui/menubar/BookmarksMenu/BookmarksTOC"
-#define DOC_PATH "ui/menubar/BookmarksMenu/BookmarksDOC"
-#define BK_CONFIG_BK_GROUP "Bookmarks"
-#define BK_CONFIG_WIDTH "width"
-#define BK_CONFIG_HEIGHT "height"
-#define BK_CONFIG_WIDTH_DEFAULT 360
-#define BK_CONFIG_HEIGHT_DEFAULT 360
-
-static GSList *windows;
-static GtkTreeStore *actions_store;
-static gchar *dup_title;
-
-static GtkWidget *bookmarks_dialog = NULL;
-static GtkWidget *edit_open_button = NULL;
-static GtkWidget *edit_rename_button = NULL;
-static GtkWidget *edit_remove_button = NULL;
-
-
-static gboolean have_toc = FALSE;
-static gboolean have_doc = FALSE;
-static GtkTreeIter toc_iter;
-static GtkTreeIter doc_iter;
-
-typedef struct _YelpWindowData YelpWindowData;
-struct _YelpWindowData {
- YelpWindow *window;
- guint merge_id;
- GtkActionGroup *toc_actions;
- GtkActionGroup *doc_actions;
-};
-
-static const char ui_description[] =
- "<ui>"
- " <popup>"
- " <menuitem action='OpenName'/>"
- " <separator/>"
- " <menuitem action='EditName'/>"
- " <menuitem action='DeleteName'/>"
- " </popup>"
- "</ui>";
-
-static void window_add_bookmark (YelpWindowData *window,
- gchar *name,
- const gchar *label);
-static void bookmarks_add_bookmark (const gchar *uri,
- const gchar *title,
- gboolean save);
-static void bookmark_add_response_cb (GtkDialog *dialog,
- gint id,
- gchar *uri);
-static void window_remove_bookmark_menu(YelpWindowData *data);
-static void window_remove_action (YelpWindowData *data,
- gchar *name);
-static gboolean bookmarks_unregister (YelpWindow *window,
- GdkEvent *event,
- gpointer user_data);
-static void action_activated_cb (GtkActionGroup *group,
- GtkAction *action,
- YelpWindowData *data);
-static void bookmarks_rebuild_menus (void);
-static void bookmarks_key_event_cb (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data);
-static void bookmarks_open_button_cb (GtkWidget *widget,
- GtkTreeView *view);
-static void bookmarks_rename_button_cb (GtkWidget *widget,
- GtkTreeView *view);
-static void bookmarks_remove_button_cb (GtkWidget *widget,
- GtkTreeView *view);
-static void bookmarks_ensure_valid (void);
-static gboolean bookmarks_read (const gchar *filename);
-
-static gboolean bookmarks_dup_finder (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data);
-static void bookmarks_open_cb (GtkTreeView *view,
- GtkTreePath *path,
- GtkTreeViewColumn *col,
- gpointer user_data);
-static void bookmarks_cell_edited_cb (GtkCellRendererText *cell,
- const gchar *path_string,
- const gchar *new_title,
- gpointer user_data);
-static void bookmarks_popup_menu (GtkWidget *widget,
- GdkEventButton *event);
-static void bookmarks_menu_edit_cb (GtkAction *action,
- GtkWidget *widget);
-static void bookmarks_menu_remove_cb (GtkAction *action,
- GtkWidget *widget);
-static void bookmarks_menu_open_cb (GtkAction *action,
- GtkWidget *widget);
-static gboolean bookmarks_button_press_cb (GtkWidget *widget,
- GdkEventButton *event);
-static gboolean bookmarks_configure_cb (GtkWidget *widget,
- GdkEventConfigure *event,
- gpointer data);
-static void selection_changed_cb (GtkTreeSelection *selection,
- gpointer data);
-
-static const GtkActionEntry popup_entries[] = {
- { "OpenName", GTK_STOCK_OPEN,
- N_("Open Bookmark in New Window"),
- NULL, NULL,
- G_CALLBACK (bookmarks_menu_open_cb)},
- { "EditName", NULL,
- N_("Rename Bookmark"),
- NULL, NULL,
- G_CALLBACK (bookmarks_menu_edit_cb)},
- { "DeleteName", GTK_STOCK_REMOVE,
- N_("Remove Bookmark"),
- NULL, NULL,
- G_CALLBACK (bookmarks_menu_remove_cb)}
-};
-
-
-void
-yelp_bookmarks_init (void)
-{
- gchar *filename = NULL;
- const gchar *override;
-
- windows = NULL;
- actions_store = gtk_tree_store_new (4,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN);
-
- override = g_getenv ("GNOME22_USER_DIR");
-
- if (override)
- filename = g_build_filename (override, "yelp-bookmarks.xbel", NULL);
- else
- filename = g_build_filename (g_get_home_dir (), ".gnome2",
- "yelp-bookmarks.xbel", NULL);
-
- if (g_file_test (filename, G_FILE_TEST_EXISTS))
- bookmarks_read (filename);
-
- g_free (filename);
-}
-
-void
-yelp_bookmarks_register (YelpWindow *window)
-{
- GtkUIManager *ui_manager;
- YelpWindowData *data;
- GtkTreeIter top_iter, sub_iter;
- gboolean top_valid, sub_valid;
-
- ui_manager = yelp_window_get_ui_manager (window);
-
- g_signal_connect (window, "delete-event",
- G_CALLBACK (bookmarks_unregister), NULL);
-
- data = g_new0 (YelpWindowData, 1);
- data->window = window;
- data->toc_actions = gtk_action_group_new ("BookmarksTOC");
- data->doc_actions = gtk_action_group_new ("BookmarksDOC");
- data->merge_id = gtk_ui_manager_new_merge_id(ui_manager);
-
- gtk_ui_manager_insert_action_group (ui_manager, data->toc_actions, 1);
- gtk_ui_manager_insert_action_group (ui_manager, data->doc_actions, 2);
-
- g_signal_connect (data->toc_actions,
- "post-activate",
- G_CALLBACK (action_activated_cb),
- data);
- g_signal_connect (data->doc_actions,
- "post-activate",
- G_CALLBACK (action_activated_cb),
- data);
-
- top_valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (actions_store),
- &top_iter);
- while (top_valid) {
- if (gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &top_iter)) {
- sub_valid = gtk_tree_model_iter_children (GTK_TREE_MODEL (actions_store),
- &sub_iter, &top_iter);
- while (sub_valid) {
- gchar *label, *name;
- gtk_tree_model_get (GTK_TREE_MODEL (actions_store), &sub_iter,
- COL_NAME, &name,
- COL_LABEL, &label,
- -1);
- window_add_bookmark (data, name, label);
- g_free (name);
- g_free (label);
-
- sub_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &sub_iter);
- }
- }
- top_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &top_iter);
- }
-
- windows = g_slist_append (windows, data);
-}
-
-static void
-bookmarks_ensure_valid (void)
-{
- if (have_toc &&
- !gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &toc_iter)) {
- gtk_tree_store_remove (actions_store, &toc_iter);
- have_toc = FALSE;
- }
- if (have_doc &&
- !gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &doc_iter)) {
- gtk_tree_store_remove (actions_store, &doc_iter);
- have_doc = FALSE;
- }
-}
-
-static gboolean
-bookmarks_dup_finder (GtkTreeModel *model, GtkTreePath *path,
- GtkTreeIter *iter, gpointer data)
-{
- gchar *uri = data;
- gchar *current_uri;
-
- gtk_tree_model_get (model, iter,
- COL_NAME, &current_uri,
- -1);
-
- if (current_uri && g_str_equal (current_uri, uri)) {
- gtk_tree_model_get (model, iter,
- COL_LABEL, &dup_title,
- -1);
- g_free (current_uri);
- return TRUE;
- }
-
- g_free (current_uri);
- return FALSE;
-}
-
-
-void
-yelp_bookmarks_add (const gchar *uri, YelpWindow *window)
-{
- GtkBuilder *builder;
- GError *error = NULL;
- GtkWidget *dialog;
- GtkEntry *entry;
- gchar *title;
- gchar *dup_uri;
-
- title = (gchar *) gtk_window_get_title (GTK_WINDOW (window));
- dup_uri = g_strdup (uri);
-
- if (dup_title)
- g_free (dup_title);
- dup_title = NULL;
- gtk_tree_model_foreach (GTK_TREE_MODEL (actions_store),
- bookmarks_dup_finder, dup_uri);
- if (dup_title) {
- char *escaped_title, *markup;
-
- dialog = gtk_message_dialog_new_with_markup
- (GTK_WINDOW (window),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_OK,
- NULL);
-
- escaped_title = g_markup_printf_escaped
- ("<b>%s</b>", dup_title);
- markup = g_strdup_printf
- (_("A bookmark titled %s already exists for this page."),
- escaped_title);
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), markup);
- g_free (markup);
- g_free (escaped_title);
-
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
- g_free (dup_title);
- dup_title = NULL;
- return;
- }
-
- builder = gtk_builder_new ();
- if (!gtk_builder_add_from_file (builder,
- DATADIR "/yelp/ui/yelp-bookmarks-add.ui",
- &error)) {
- g_warning ("Could not load builder file: %s", error->message);
- g_error_free(error);
- return;
- }
-
- dialog = GTK_WIDGET (gtk_builder_get_object (builder, "add_bookmark_dialog"));
- entry = GTK_ENTRY (gtk_builder_get_object (builder, "bookmark_title_entry"));
- gtk_entry_set_text (entry, title);
- gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
-
- g_object_set_data (G_OBJECT (dialog), "title_entry", entry);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (bookmark_add_response_cb),
- dup_uri);
-
- gtk_window_present (GTK_WINDOW (dialog));
-}
-
-static void
-bookmark_add_response_cb (GtkDialog *dialog, gint id, gchar *uri)
-{
- GtkEntry *entry;
- gchar *title;
-
- if (id == GTK_RESPONSE_OK) {
- entry = GTK_ENTRY (g_object_get_data (G_OBJECT (dialog), "title_entry"));
- title = (gchar *) gtk_entry_get_text (entry);
-
- bookmarks_add_bookmark (uri, title, TRUE);
- }
-
- g_free (uri);
- gtk_widget_destroy (GTK_WIDGET (dialog));
-}
-
-static void
-bookmarks_add_bookmark (const gchar *uri,
- const gchar *title,
- gboolean save)
-{
- GtkTreeIter iter;
- GSList *cur;
- gboolean tocQ;
-
- if (dup_title)
- g_free (dup_title);
- dup_title = NULL;
- gtk_tree_model_foreach (GTK_TREE_MODEL (actions_store),
- bookmarks_dup_finder, (gpointer) uri);
- if (dup_title) {
- GtkWidget *dialog;
- dialog = gtk_message_dialog_new_with_markup
- (NULL,
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("A bookmark titled <b>%s</b> already exists for this page."),
- dup_title);
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- g_free (dup_title);
- dup_title = NULL;
- return;
- }
-
- tocQ = g_str_has_prefix (uri, "x-yelp-toc:");
- if (tocQ) {
- if (!have_toc) {
- gchar *label = g_markup_printf_escaped ("<b>%s</b>",
- _("Help Topics"));
- gtk_tree_store_prepend (actions_store, &toc_iter, NULL);
- gtk_tree_store_set (actions_store, &toc_iter,
- COL_NAME, "",
- COL_LABEL, label,
- COL_EDIT, FALSE,
- COL_HEADER, TRUE,
- -1);
- have_toc = TRUE;
- g_free (label);
- }
- gtk_tree_store_append (actions_store, &iter, &toc_iter);
- } else {
- if (!have_doc) {
- gchar *label = g_markup_printf_escaped ("<b>%s</b>",
- _("Document Sections"));
- gtk_tree_store_append (actions_store, &doc_iter, NULL);
- gtk_tree_store_set (actions_store, &doc_iter,
- COL_NAME, "",
- COL_LABEL, label,
- COL_EDIT, FALSE,
- COL_HEADER, TRUE,
- -1);
- have_doc = TRUE;
- g_free (label);
- }
- gtk_tree_store_append (actions_store, &iter, &doc_iter);
- }
-
- gtk_tree_store_set (actions_store, &iter,
- COL_NAME, uri,
- COL_LABEL, title,
- COL_EDIT, TRUE,
- COL_HEADER, FALSE,
- -1);
- if (save) {
- for (cur = windows; cur != NULL; cur = cur->next) {
- window_add_bookmark ((YelpWindowData *) cur->data, (gchar *) uri,
- title);
- }
- yelp_bookmarks_write ();
- }
-}
-
-static void
-window_remove_bookmark_menu (YelpWindowData *data)
-{
- GtkUIManager *ui_manager;
-
- ui_manager = yelp_window_get_ui_manager (data->window);
-
- gtk_ui_manager_remove_ui (ui_manager, data->merge_id);
-
- data->merge_id = gtk_ui_manager_new_merge_id (ui_manager);
-
- gtk_ui_manager_ensure_update (ui_manager);
-}
-
-static void
-window_remove_action (YelpWindowData *data, gchar *name)
-{
- GtkAction *action = gtk_action_group_get_action (data->toc_actions, name);
- if (action) {
- gtk_action_group_remove_action (data->toc_actions, action);
- }
- else {
- action = gtk_action_group_get_action (data->doc_actions, name);
- if (action) {
- gtk_action_group_remove_action (data->doc_actions, action);
- }
- }
-}
-
-static void
-bookmarks_rebuild_menus (void)
-{
- GSList *cur;
- GtkTreeIter top_iter, sub_iter;
- gboolean top_valid, sub_valid;
-
- for (cur = windows; cur != NULL; cur = cur->next) {
- window_remove_bookmark_menu ((YelpWindowData *) cur->data);
- }
-
- top_valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (actions_store),
- &top_iter);
- while (top_valid) {
- if (gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &top_iter)) {
- sub_valid = gtk_tree_model_iter_children (GTK_TREE_MODEL (actions_store),
- &sub_iter, &top_iter);
- while (sub_valid) {
- gchar *name, *label;
- gtk_tree_model_get (GTK_TREE_MODEL (actions_store), &sub_iter,
- COL_NAME, &name,
- COL_LABEL, &label,
- -1);
- for (cur = windows; cur != NULL; cur = cur->next) {
- window_remove_action (cur->data, name);
- window_add_bookmark (cur->data, name, label);
- }
- g_free (name);
- g_free (label);
-
- sub_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &sub_iter);
- }
- }
- top_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &top_iter);
- }
-
- yelp_bookmarks_write ();
-}
-
-static void
-bookmarks_key_event_cb (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data)
-{
- GtkTreeView *view = GTK_TREE_VIEW (widget);
- GtkTreePath *path;
- GtkTreeSelection *sel;
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- model = gtk_tree_view_get_model (view);
- sel = gtk_tree_view_get_selection (view);
-
- if (gtk_tree_selection_get_selected (sel, &model, &iter)) {
- path = gtk_tree_model_get_path (model, &iter);
-
- switch (event->keyval) {
- case GDK_BackSpace:
- case GDK_Delete:
- if (!gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &iter)) {
- gtk_tree_store_remove (actions_store, &iter);
- bookmarks_ensure_valid ();
- bookmarks_rebuild_menus ();
- }
- break;
- case GDK_Return:
- case GDK_KP_Enter:
- bookmarks_open_cb (view, path, NULL, NULL);
- break;
- case GDK_Up:
- gtk_tree_path_prev (path);
- gtk_tree_selection_select_path (sel, path);
- break;
- case GDK_Down:
- gtk_tree_path_next (path);
- gtk_tree_selection_select_path (sel, path);
- break;
- default:
- break;
- }
- }
-}
-
-static void
-bookmarks_open_cb (GtkTreeView *view, GtkTreePath *path,
- GtkTreeViewColumn *col, gpointer user_data)
-{
- GtkTreeIter iter;
- gchar *name;
- gchar *title;
- GSList *cur;
- YelpWindowData *data;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (actions_store), &iter, path);
- if (!gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &iter)) {
- gtk_tree_model_get (GTK_TREE_MODEL (actions_store), &iter,
- COL_NAME, &name,
- COL_LABEL, &title, -1);
-
- cur = windows;
- data = cur->data;
-
- g_signal_emit_by_name (data->window, "new_window_requested", name, NULL);
- }
-}
-
-
-static void
-bookmarks_cell_edited_cb (GtkCellRendererText *cell, const gchar *path_string,
- const gchar *new_title, gpointer user_data)
-{
- GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
- GtkTreeIter it;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (actions_store), &it, path);
-
- gtk_tree_store_set (actions_store, &it,
- COL_LABEL, new_title, -1);
- bookmarks_rebuild_menus ();
-
-}
-
-void
-yelp_bookmarks_edit (void)
-{
- GtkBuilder *builder;
- GError *error = NULL;
- GtkTreeView *view;
- GtkTreeSelection *select;
- GtkCellRenderer *renderer;
- gint width, height;
- GKeyFile *keyfile;
- GError *config_error = NULL;
- gchar *config_path;
- const gchar *override;
-
- if (!bookmarks_dialog) {
- builder = gtk_builder_new ();
- if (!gtk_builder_add_from_file (builder,
- DATADIR "/yelp/ui/yelp-bookmarks.ui",
- &error)) {
- g_warning ("Could not load builder file: %s", error->message);
- g_error_free(error);
- return;
- }
-
- bookmarks_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "bookmarks_dialog"));
- view = GTK_TREE_VIEW (gtk_builder_get_object (builder, "bookmarks_view"));
- keyfile = g_key_file_new();
- override = g_getenv ("GNOME22_USER_DIR");
- if (override)
- config_path = g_build_filename (override, "yelp", NULL);
- else
- config_path = g_build_filename (g_get_home_dir(),
- ".gnome2", "yelp", NULL);
-
- if( !g_key_file_load_from_file (keyfile, config_path,
- G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS,
- &config_error) ) {
- g_warning ("Failed to load config file: %s\n", config_error->message);
- g_error_free (config_error);
-
- width = BK_CONFIG_WIDTH_DEFAULT;
- height = BK_CONFIG_HEIGHT_DEFAULT;
- } else {
- width = g_key_file_get_integer (keyfile, BK_CONFIG_BK_GROUP,
- BK_CONFIG_WIDTH, NULL);
- height = g_key_file_get_integer (keyfile, BK_CONFIG_BK_GROUP,
- BK_CONFIG_HEIGHT, NULL);
-
- if (width == 0)
- width = BK_CONFIG_WIDTH_DEFAULT;
- if (height == 0)
- height = BK_CONFIG_HEIGHT_DEFAULT;
- }
-
- g_free (config_path);
- g_key_file_free (keyfile);
- gtk_window_set_default_size (GTK_WINDOW (bookmarks_dialog),
- width, height);
-
- g_signal_connect (G_OBJECT (bookmarks_dialog), "response",
- G_CALLBACK (gtk_widget_hide), NULL);
- g_signal_connect (G_OBJECT (bookmarks_dialog), "delete_event",
- G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-
- renderer = gtk_cell_renderer_text_new ();
-
- gtk_tree_view_insert_column_with_attributes
- (view, -1,
- NULL, renderer,
- "markup", COL_LABEL,
- "editable", COL_EDIT,
- NULL);
- gtk_tree_view_set_model (view, GTK_TREE_MODEL (actions_store));
-
- select = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-
- gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
- gtk_tree_view_expand_all (GTK_TREE_VIEW (view));
-
- g_signal_connect (G_OBJECT (view), "row-activated",
- G_CALLBACK (bookmarks_open_cb),
- NULL);
- g_signal_connect (G_OBJECT (view), "key-press-event",
- G_CALLBACK (bookmarks_key_event_cb),
- NULL);
- g_signal_connect (G_OBJECT (renderer), "edited",
- G_CALLBACK (bookmarks_cell_edited_cb), NULL);
-
- edit_open_button = GTK_WIDGET (gtk_builder_get_object (builder, "open_button"));
- g_signal_connect (G_OBJECT (edit_open_button), "clicked",
- G_CALLBACK (bookmarks_open_button_cb),
- view);
- edit_rename_button = GTK_WIDGET (gtk_builder_get_object (builder, "rename_button"));
- g_signal_connect (G_OBJECT (edit_rename_button), "clicked",
- G_CALLBACK (bookmarks_rename_button_cb),
- view);
- edit_remove_button = GTK_WIDGET (gtk_builder_get_object (builder, "remove_button"));
- g_signal_connect (G_OBJECT (edit_remove_button), "clicked",
- G_CALLBACK (bookmarks_remove_button_cb),
- view);
- g_signal_connect (G_OBJECT (select), "changed",
- G_CALLBACK (selection_changed_cb),
- NULL);
- g_signal_connect (G_OBJECT (view), "button-press-event",
- G_CALLBACK (bookmarks_button_press_cb),
- NULL);
- g_signal_connect (G_OBJECT (bookmarks_dialog), "configure-event",
- G_CALLBACK (bookmarks_configure_cb),
- NULL);
- }
-
- gtk_window_present (GTK_WINDOW (bookmarks_dialog));
-}
-
-static gboolean
-bookmarks_configure_cb (GtkWidget *widget, GdkEventConfigure *event,
- gpointer data)
-{
- gint width, height;
- GKeyFile *keyfile;
- gchar *config_path, *sdata;
- GError *config_error = NULL;
- gsize config_size;
- const gchar *override;
-
- gtk_window_get_size (GTK_WINDOW (widget), &width, &height);
-
- keyfile = g_key_file_new ();
- override = g_getenv ("GNOME22_USER_DIR");
- if (override)
- config_path = g_build_filename (override, "yelp", NULL);
- else
- config_path = g_build_filename (g_get_home_dir (),
- ".gnome2", "yelp", NULL);
-
- g_key_file_set_integer (keyfile, BK_CONFIG_BK_GROUP,
- BK_CONFIG_WIDTH, width);
- g_key_file_set_integer (keyfile, BK_CONFIG_BK_GROUP,
- BK_CONFIG_HEIGHT, height);
-
- sdata = g_key_file_to_data (keyfile, &config_size, NULL);
-
- if ( !g_file_set_contents (config_path, sdata, config_size,
- &config_error) ) {
- g_warning ("Failed to save config file: %s\n", config_error->message);
- g_error_free (config_error);
- }
-
- g_free (sdata);
- g_free (config_path);
- g_key_file_free (keyfile);
-
- return FALSE;
-}
-
-static void
-selection_changed_cb (GtkTreeSelection *selection, gpointer data)
-{
- GtkTreeIter iter;
- if (gtk_tree_selection_get_selected (selection, NULL, &iter) &&
- !gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &iter)) {
- /*A row is highlighted - sensitise the various widgets*/
- gtk_widget_set_sensitive (GTK_WIDGET (edit_open_button), TRUE);
- gtk_widget_set_sensitive (GTK_WIDGET (edit_rename_button), TRUE);
- gtk_widget_set_sensitive (GTK_WIDGET (edit_remove_button), TRUE);
- }
- else {
- /*No row is highlighted - desensitise the various widgets*/
- gtk_widget_set_sensitive (GTK_WIDGET (edit_open_button), FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (edit_rename_button), FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (edit_remove_button), FALSE);
-
- }
-}
-
-
-static void
-bookmarks_open_button_cb (GtkWidget *widget, GtkTreeView *view)
-{
- GtkTreeIter iter;
- GtkTreePath *path;
- GtkTreeModel *model;
- GtkTreeSelection *select;
-
- model = gtk_tree_view_get_model (view);
-
- select = gtk_tree_view_get_selection (view);
- if (gtk_tree_selection_get_selected (select, NULL, &iter)) {
- path = gtk_tree_model_get_path (model, &iter);
-
- bookmarks_open_cb (view, path, NULL, NULL);
-
- gtk_tree_path_free (path);
- }
-}
-
-static void
-bookmarks_rename_button_cb (GtkWidget *widget, GtkTreeView *view)
-{
- GtkTreePath *path;
- GtkTreeSelection *sel;
- GtkTreeIter iter;
- GtkTreeViewColumn *col;
- GtkTreeModel *model = GTK_TREE_MODEL (actions_store);
- gboolean selection;
-
- sel = gtk_tree_view_get_selection (view);
- selection = gtk_tree_selection_get_selected (sel, &model, &iter);
- if (selection) {
- path = gtk_tree_model_get_path (model, &iter);
- col = gtk_tree_view_get_column (view, 0);
-
- gtk_tree_view_set_cursor (view, path, col, TRUE);
- }
-}
-
-static void
-bookmarks_remove_button_cb (GtkWidget *widget, GtkTreeView *view)
-{
- GtkTreeIter iter;
- GtkTreeSelection *select;
-
- select = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
- if (gtk_tree_selection_get_selected (select, NULL, &iter)) {
-
- gtk_tree_store_remove (actions_store, &iter);
- bookmarks_ensure_valid ();
- bookmarks_rebuild_menus ();
- }
-}
-
-static void
-bookmarks_popup_menu (GtkWidget *widget,GdkEventButton *event)
-{
- GtkWidget *menu;
- gint button, event_time;
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
- GError *error;
-
- action_group = gtk_action_group_new ("PopupActions");
- gtk_action_group_set_translation_domain (action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions (action_group, popup_entries,
- G_N_ELEMENTS (popup_entries), widget);
-
- ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-
- if (!gtk_ui_manager_add_ui_from_string (ui_manager,
- ui_description, -1, &error)) {
- g_message ("Building menus failed: %s", error->message);
- g_error_free (error);
- exit (EXIT_FAILURE);
- }
- menu = gtk_ui_manager_get_widget (ui_manager, "/popup");
-
- if (event) {
- button = event->button;
- event_time = event->time;
- } else {
- button = 0;
- event_time = gtk_get_current_event_time ();
- }
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
- button, event_time);
-
-}
-
-static void
-bookmarks_menu_edit_cb (GtkAction *action, GtkWidget *widget)
-{
- GtkTreeView *view = GTK_TREE_VIEW (widget);
- GtkTreePath *path;
- GtkTreeSelection *sel;
- GtkTreeIter iter;
- GtkTreeViewColumn *col;
- GtkTreeModel *model = GTK_TREE_MODEL (actions_store);
-
- sel = gtk_tree_view_get_selection (view);
- if (gtk_tree_selection_get_selected (sel, &model, &iter)) {
- path = gtk_tree_model_get_path (model, &iter);
- col = gtk_tree_view_get_column (view, 0);
-
- gtk_tree_view_set_cursor (view, path, col, TRUE);
- }
-}
-
-static void
-bookmarks_menu_remove_cb (GtkAction *action, GtkWidget *widget)
-{
- GtkTreeView *view = GTK_TREE_VIEW (widget);
- GtkTreeSelection *sel;
- GtkTreeIter iter;
-
- sel = gtk_tree_view_get_selection (view);
- if (gtk_tree_selection_get_selected (sel, NULL, &iter)) {
-
- gtk_tree_store_remove (actions_store, &iter);
- bookmarks_ensure_valid ();
- bookmarks_rebuild_menus ();
- }
-}
-
-static void
-bookmarks_menu_open_cb (GtkAction *action, GtkWidget *widget)
-{
- GtkTreeView *view = GTK_TREE_VIEW (widget);
- GtkTreeSelection *sel = gtk_tree_view_get_selection (view);
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL (actions_store);
- GtkTreePath *path;
-
- if (gtk_tree_selection_get_selected (sel, &model, &iter)) {
- path = gtk_tree_model_get_path (model, &iter);
-
- bookmarks_open_cb (view, path, NULL, NULL);
- }
-}
-
-static gboolean
-bookmarks_button_press_cb (GtkWidget *widget, GdkEventButton *event)
-{
- GtkTreeView *view = GTK_TREE_VIEW (widget);
- GtkTreeSelection *sel = gtk_tree_view_get_selection (view);
- gboolean selection;
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL (actions_store);
- gboolean editable;
-
- selection = gtk_tree_selection_get_selected (sel,
- &model,
- &iter);
- if (selection) {
- gtk_tree_model_get (GTK_TREE_MODEL (actions_store), &iter,
- COL_EDIT, &editable, -1);
- if (event->button == 3 && event->type == GDK_BUTTON_PRESS &&
- editable) {
- bookmarks_popup_menu (widget, event);
- return TRUE;
- }
- }
- return FALSE;
-}
-
-
-void
-yelp_bookmarks_write (void)
-{
- xmlTextWriterPtr file;
- GtkTreeIter top_iter, sub_iter;
- gboolean top_valid, sub_valid;
- gchar *filename;
- const gchar *override;
-
- override = g_getenv ("GNOME22_USER_DIR");
-
- if (override)
- filename = g_build_filename (override, "yelp-bookmarks.xbel", NULL);
- else
- filename = g_build_filename (g_get_home_dir (), ".gnome2",
- "yelp-bookmarks.xbel", NULL);
-
- file = xmlNewTextWriterFilename (filename,
- 0);
- if(!file) {
- g_warning ("Could not create bookmark file %s", filename);
- return;
- }
-
- xmlTextWriterStartDocument (file, NULL, NULL, NULL);
- xmlTextWriterStartElement (file, BAD_CAST "xbel");
- xmlTextWriterWriteAttribute(file, BAD_CAST "version",
- BAD_CAST "1.0");
-
- xmlTextWriterStartElement (file, BAD_CAST "info");
- xmlTextWriterStartElement (file, BAD_CAST "metadata");
- xmlTextWriterWriteAttribute(file, BAD_CAST "owner",
- BAD_CAST "http://live.gnome.org/Yelp");
- xmlTextWriterEndElement (file);
- xmlTextWriterEndElement (file);
-
- top_valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (actions_store),
- &top_iter);
-
- while (top_valid) {
- if (gtk_tree_model_iter_has_child (GTK_TREE_MODEL (actions_store),
- &top_iter)) {
- sub_valid = gtk_tree_model_iter_children (GTK_TREE_MODEL (actions_store),
- &sub_iter, &top_iter);
- while (sub_valid) {
- gchar *name;
- gchar *label;
- gtk_tree_model_get (GTK_TREE_MODEL (actions_store), &sub_iter,
- COL_NAME, &name,
- COL_LABEL, &label,
- -1);
- xmlTextWriterStartElement (file, BAD_CAST "bookmark");
- xmlTextWriterWriteAttribute (file, BAD_CAST "href",
- BAD_CAST name);
-
- xmlTextWriterWriteElement (file,
- BAD_CAST "title",
- BAD_CAST label);
-
- xmlTextWriterStartElement (file, BAD_CAST "info");
- xmlTextWriterStartElement (file, BAD_CAST "metadata");
- xmlTextWriterWriteAttribute
- (file, BAD_CAST "owner",
- BAD_CAST "http://live.gnome.org/Yelp");
- xmlTextWriterEndElement (file); /* metadata */
- xmlTextWriterEndElement (file); /* info */
- xmlTextWriterEndElement (file); /* bookmark */
-
- g_free (name);
- g_free (label);
-
- sub_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &sub_iter);
- }
- }
- top_valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (actions_store),
- &top_iter);
- }
-
- xmlTextWriterEndDocument(file);
- xmlFreeTextWriter(file);
- g_free (filename);
- return;
-}
-
-static gboolean
-bookmarks_read (const gchar *filename)
-{
- xmlParserCtxtPtr parser;
- xmlXPathContextPtr xpath;
- xmlXPathObjectPtr obj;
- xmlDocPtr doc;
-
- gboolean ret = TRUE;
- gint i;
-
- parser = xmlNewParserCtxt ();
- doc = xmlCtxtReadFile (parser, filename, NULL,
- XML_PARSE_NOBLANKS | XML_PARSE_NOCDATA |
- XML_PARSE_NOENT | XML_PARSE_NOERROR |
- XML_PARSE_NONET );
-
- if (doc == NULL) {
- if (parser)
- xmlFreeParserCtxt (parser);
- return FALSE;
- }
-
- xpath = xmlXPathNewContext (doc);
- obj = xmlXPathEvalExpression (BAD_CAST "/xbel/bookmark", xpath);
- for (i = 0; i < obj->nodesetval->nodeNr; i++) {
- xmlNodePtr node = obj->nodesetval->nodeTab[i];
- gchar *uri;
- uri = (gchar *) xmlGetProp (node, BAD_CAST "href");
- if (uri) {
- xmlXPathObjectPtr title_obj;
- xpath->node = node;
- title_obj = xmlXPathEvalExpression (BAD_CAST "string(title[1])",
- xpath);
- xpath->node = NULL;
-
- if (title_obj->stringval)
- bookmarks_add_bookmark ((const gchar *) uri,
- (const gchar *) title_obj->stringval,
- FALSE);
-
- xmlXPathFreeObject (title_obj);
- xmlFree (uri);
- }
- }
-
- if (obj)
- xmlXPathFreeObject (obj);
- if (xpath)
- xmlXPathFreeContext (xpath);
- if (parser)
- xmlFreeParserCtxt (parser);
- if (doc)
- xmlFreeDoc (doc);
- return ret;
-}
-
-static void
-window_add_bookmark (YelpWindowData *data,
- gchar *name,
- const gchar *label)
-{
- GtkUIManager *ui_manager;
- GtkAction *action;
- gboolean tocQ;
-
- tocQ = g_str_has_prefix (name, "x-yelp-toc:");
- ui_manager = yelp_window_get_ui_manager (data->window);
- action = gtk_action_new (name, label, label, NULL);
-
- gtk_action_group_add_action (tocQ ? data->toc_actions : data->doc_actions,
- action);
-
- gtk_ui_manager_add_ui (ui_manager,
- data->merge_id,
- tocQ ? TOC_PATH : DOC_PATH,
- label, name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
- g_object_unref (action);
-}
-
-static gboolean
-bookmarks_unregister (YelpWindow *window,
- GdkEvent *event,
- gpointer user_data)
-{
- GSList *cur;
-
- for (cur = windows; cur != NULL; cur = cur->next) {
- YelpWindowData *data = (YelpWindowData *) cur->data;;
- if (data->window == window) {
- g_object_unref (data->toc_actions);
- g_object_unref (data->doc_actions);
- g_free (data);
- windows = g_slist_delete_link (windows, cur);
- break;
- }
- }
-
- return FALSE;
-}
-
-static void
-action_activated_cb (GtkActionGroup *group,
- GtkAction *action,
- YelpWindowData *data)
-{
- gchar *uri;
-
- g_object_get (action, "name", &uri, NULL);
- yelp_window_load (data->window, uri);
-
- g_free (uri);
-}
diff --git a/src/yelp-bookmarks.h b/src/yelp-bookmarks.h
deleted file mode 100644
index e3d73b7f..00000000
--- a/src/yelp-bookmarks.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2003 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org>
- */
-
-#ifndef __YELP_BOOKMARKS_H__
-#define __YELP_BOOKMARKS_H__
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include "yelp-window.h"
-
-void yelp_bookmarks_init (void);
-void yelp_bookmarks_register (YelpWindow *window);
-void yelp_bookmarks_add (const gchar *uri,
- YelpWindow *window);
-void yelp_bookmarks_edit (void);
-void yelp_bookmarks_write (void);
-
-#endif /* __YELP_BOOKMARKS_H__ */
diff --git a/src/yelp-error.c b/src/yelp-error.c
deleted file mode 100644
index 63bd7748..00000000
--- a/src/yelp-error.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2002 Mikael Hallendal <micke@imendio.com>
- * Copyright (C) 2007 Shaun McCance <shaunm@gnome.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 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.
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include "yelp-error.h"
-
-struct _YelpError {
- gchar *title;
- gchar *message;
-};
-
-static YelpError *
-yelp_error_new_valist (gchar *title, gchar *format, va_list args)
-{
- YelpError *error;
-
- error = g_slice_new (YelpError);
- error->title = g_strdup (title);
- error->message = g_strdup_vprintf (format, args);
-
- return error;
-}
-
-YelpError *
-yelp_error_new (gchar *title, gchar *format, ...)
-{
- YelpError *error;
- va_list args;
-
- va_start (args, format);
- error = yelp_error_new_valist (title, format, args);
- va_end (args);
-
- return error;
-}
-
-void
-yelp_error_set (YelpError **error, gchar *title, gchar *format, ...)
-{
- YelpError *new;
- va_list args;
-
- va_start (args, format);
- new = yelp_error_new_valist (title, format, args);
- va_end (args);
-
- if (*error == NULL)
- *error = new;
- else
- g_warning
- ("YelpError set over the top of a previous YelpError or uninitialized\n"
- "memory. This indicates a bug in someone's code. You must ensure an\n"
- "error is NULL before it's set. The overwriting error message was:\n"
- "%s",
- new->message);
-}
-
-YelpError *
-yelp_error_copy (YelpError *error)
-{
- YelpError *new;
-
- new = g_slice_new (YelpError);
- new->title = g_strdup (error->title);
- new->message = g_strdup (error->message);
-
- return new;
-}
-
-const gchar *
-yelp_error_get_title (YelpError *error)
-{
- g_return_val_if_fail (error != NULL, NULL);
- return error->title;
-}
-
-const gchar *
-yelp_error_get_message (YelpError *error)
-{
- g_return_val_if_fail (error != NULL, NULL);
- return error->message;
-}
-
-void
-yelp_error_free (YelpError *error)
-{
- g_return_if_fail (error != NULL);
- g_free (error->title);
- g_free (error->message);
- g_slice_free (YelpError, error);
-}
-
-/******************************************************************************/
-
-GQuark
-yelp_gerror_quark (void)
-{
- static GQuark q = 0;
-
- if (q == 0)
- q = g_quark_from_static_string ("yelp-error-quark");
-
- return q;
-}
-
-const gchar *
-yelp_gerror_get_title (GError *error)
-{
- if (!error || error->domain != YELP_GERROR)
- return _("Unknown Error");
-
- switch (error->code) {
- case YELP_GERROR_IO:
- return _("Could Not Read File");
- }
-
- return _("Unknown Error");
-}
-
-const gchar *
-yelp_gerror_get_message (GError *error)
-{
- if (!error || !error->message)
- return _("No information is available about this error.");
- else
- return error->message;
-}
diff --git a/src/yelp-error.h b/src/yelp-error.h
deleted file mode 100644
index 91a5bda2..00000000
--- a/src/yelp-error.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2002 Mikael Hallendal <micke@imendio.com>
- * Copyright (C) 2007 Shaun McCance <shaunm@gnome.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 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.
- */
-
-#ifndef __YELP_ERROR_H__
-#define __YELP_ERROR_H__
-
-#include <glib.h>
-
-typedef struct _YelpError YelpError;
-
-YelpError * yelp_error_new (gchar *title,
- gchar *format,
- ...);
-void yelp_error_set (YelpError **error,
- gchar *title,
- gchar *format,
- ...);
-YelpError * yelp_error_copy (YelpError *error);
-
-const gchar * yelp_error_get_title (YelpError *error);
-const gchar * yelp_error_get_message (YelpError *error);
-
-void yelp_error_free (YelpError *error);
-
-
-#define YELP_GERROR yelp_gerror_quark ()
-
-enum {
- YELP_GERROR_IO
-};
-
-GQuark yelp_gerror_quark (void) G_GNUC_CONST;
-const gchar * yelp_gerror_get_title (GError *error);
-const gchar * yelp_gerror_get_message (GError *error);
-
-#endif /* __YELP_ERROR_H__ */
diff --git a/src/yelp-html.c b/src/yelp-html.c
deleted file mode 100644
index bc07c37b..00000000
--- a/src/yelp-html.c
+++ /dev/null
@@ -1,587 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2004 Marco Pesenti Gritti
- * Copyright (C) 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 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 <config.h>
-#include "yelp-marshal.h"
-#include "yelp-settings.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"
-
-
-#define YELP_HTML_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_HTML, YelpHtmlPriv))
-
-struct _YelpHtmlPriv {
- gchar *content;
- gchar *mime;
- gchar *find_string;
- gboolean initialised;
- gchar *base_uri;
- gchar *anchor;
- gboolean frames_enabled;
- guint timeout;
-};
-
-static void html_set_fonts (YelpHtml *html);
-static void html_set_colors (YelpHtml *html);
-static void html_set_a11y (YelpHtml *html);
-
-enum {
- URI_SELECTED,
- FRAME_SELECTED,
- TITLE_CHANGED,
- POPUPMENU_REQUESTED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-static GObjectClass *parent_class = NULL;
-
-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;
-
- debug_print (DB_FUNCTION, "entering\n");
- debug_print (DB_ARG, " uri = \"%s\"\n", uri);
-
- /* 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;
- }
-
- real_uri = g_strdup (uri);
-
- /* 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);
-
- if (uri[length] == '#') {
- gchar *question_mark = g_strrstr (real_uri, "?");
- gchar *tmp = real_uri;
-
- *question_mark = '\0';
- real_uri = g_strdup_printf ("%s?%s", tmp, uri + length + 1);
-
- g_free (tmp);
- }
- }
-
- if (!html->priv->frames_enabled) {
- g_signal_emit (html, signals[URI_SELECTED], 0, real_uri, FALSE);
- } else {
- g_signal_emit (html, signals[FRAME_SELECTED], 0, real_uri, FALSE, &block_load);
- }
-
- g_free (real_uri);
- webkit_web_policy_decision_ignore (decision);
- return TRUE;
-}
-
-#ifdef HAVE_GECKO_1_9
-static void
-html_reset_accessible_parent (GtkWidget *widget)
-{
- AtkObject * html_acc = gtk_widget_get_accessible (widget);
- AtkObject * parent_acc = gtk_widget_get_accessible (widget->parent);
- if (html_acc && parent_acc) {
- atk_object_set_parent (html_acc, parent_acc);
- }
-}
-#endif
-
-static void
-html_realize (GtkWidget *widget)
-{
-#ifdef HAVE_GECKO_1_9
- /* When Gecko accessibility module init, it will overwrite
- * atk_class->get_root.
- * But the top level accessible of yelp is not controlled by Gecko.
- * So we need to restore the callback. See Bug #545162.
- * It only need to do once.
- * We do it here because Gecko a11y module inits when it is actually used,
- * we call gtk_widget_get_accessible to pull the trigger. */
-
- static gboolean gail_get_root_restored = FALSE;
- static AtkObject * (*gail_get_root) (void);
- static AtkUtilClass * atk_class = NULL;
- if (!gail_get_root_restored) {
- gpointer data;
- data = g_type_class_peek (ATK_TYPE_UTIL);
- if (data) {
- atk_class = ATK_UTIL_CLASS (data);
- gail_get_root = atk_class->get_root;
- }
- }
-#endif
-
- YelpHtml *html = YELP_HTML (widget);
-
- GTK_WIDGET_CLASS (parent_class)->realize (widget);
-
-}
-
-static void
-html_init (YelpHtml *html)
-{
- YelpHtmlPriv *priv;
- YelpHtmlClass *klass;
-
- html->priv = priv = YELP_HTML_GET_PRIVATE (html);
-
- priv->base_uri = NULL;
- priv->anchor = NULL;
- priv->timeout = 0;
- priv->content = NULL;
- priv->mime = NULL;
- priv->initialised = FALSE;
-
- 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,
- html);
- html_set_fonts (html);
- }
- if (!klass->color_handler) {
- klass->color_handler =
- yelp_settings_notify_add (YELP_SETTINGS_INFO_COLOR,
- (GHookFunc) 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,
- html);
- html_set_a11y (html);
- }
-
- g_signal_connect (html, "navigation-policy-decision-requested",
- G_CALLBACK (html_open_uri), NULL);
-}
-
-static void
-html_dispose (GObject *object)
-{
- YelpHtml *html = YELP_HTML (object);
-
- parent_class->dispose (object);
-}
-
-static void
-html_finalize (GObject *object)
-{
- YelpHtml *html = YELP_HTML (object);
- YelpHtmlPriv *priv = html->priv;
-
-
- 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);
-}
-
-static void
-html_class_init (YelpHtmlClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- WebKitWebViewClass* wc_class = WEBKIT_WEB_VIEW_CLASS (klass);
-
- parent_class = (GObjectClass *) g_type_class_peek_parent (klass);
-
- object_class->finalize = html_finalize;
- object_class->dispose = html_dispose;
-
- widget_class->realize = html_realize;
-
-
- klass->font_handler = 0;
- klass->color_handler = 0;
- klass->a11y_handler = 0;
-
- signals[URI_SELECTED] =
- g_signal_new ("uri_selected",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (YelpHtmlClass,
- uri_selected),
- NULL, NULL,
- yelp_marshal_VOID__POINTER_BOOLEAN,
- G_TYPE_NONE,
- 2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
-
- signals[FRAME_SELECTED] =
- g_signal_new ("frame_selected",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (YelpHtmlClass,
- frame_selected),
- g_signal_accumulator_true_handled, NULL,
- yelp_marshal_BOOLEAN__POINTER_BOOLEAN,
- G_TYPE_BOOLEAN,
- 2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
-
-
- signals[POPUPMENU_REQUESTED] =
- g_signal_new ("popupmenu_requested",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (YelpHtmlClass,
- popupmenu_requested),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1, G_TYPE_STRING);
-
- g_type_class_add_private (klass, sizeof (YelpHtmlPriv));
-}
-
-GType
-yelp_html_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo info = {
- sizeof (YelpHtmlClass),
- NULL,
- NULL,
- (GClassInitFunc) html_class_init,
- NULL,
- NULL,
- sizeof (YelpHtml),
- 0,
- (GInstanceInitFunc) html_init,
- };
-
- type = g_type_register_static (WEBKIT_TYPE_WEB_VIEW,
- "YelpHtml",
- &info, (GTypeFlags) 0);
- }
-
- return type;
-}
-
-YelpHtml *
-yelp_html_new (void)
-{
- YelpHtml *html;
-
- html = YELP_HTML (g_object_new (YELP_TYPE_HTML, NULL));
-
- return html;
-}
-
-void
-yelp_html_set_base_uri (YelpHtml *html, const gchar *uri)
-{
- YelpHtmlPriv *priv;
-
- g_return_if_fail (YELP_IS_HTML (html));
-
- debug_print (DB_FUNCTION, "entering\n");
- debug_print (DB_ARG, " uri = \"%s\"\n", uri);
-
- priv = html->priv;
-
- if (priv->base_uri)
- g_free (priv->base_uri);
-
- if (uri[0] == '/')
- priv->base_uri = g_strdup_printf ("file://%s", uri);
- else
- priv->base_uri = g_strdup (uri);
-}
-
-void
-yelp_html_open_stream (YelpHtml *html, const gchar *mime)
-{
- debug_print (DB_FUNCTION, "entering\n");
-
- html->priv->frames_enabled = FALSE;
- g_free (html->priv->content);
- 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)
-{
- 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);
-
- if (html->priv->content) {
- tmp = g_strjoin (NULL, html->priv->content, data, NULL);
- g_free (html->priv->content);
- html->priv->content = tmp;
- } else {
- html->priv->content = g_strdup (data);
- }
-}
-
-void
-yelp_html_frames (YelpHtml *html, gboolean enable)
-{
- html->priv->frames_enabled = enable;
-
-
-}
-
-void
-yelp_html_printf (YelpHtml *html, char *format, ...)
-{
- va_list args;
- gchar *string;
-
- g_return_if_fail (format != NULL);
-
- va_start (args, format);
- string = g_strdup_vprintf (format, args);
- va_end (args);
-
- yelp_html_write (html, string, -1);
-
- g_free (string);
-}
-
-
-void
-yelp_html_close (YelpHtml *html)
-{
- debug_print (DB_FUNCTION, "entering\n");
-
- 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,
- html->priv->mime,
- NULL,
- html->priv->base_uri);
- g_free (html->priv->content);
- html->priv->content = NULL;
- g_free (html->priv->mime);
- html->priv->mime = NULL;
-}
-
-gboolean
-yelp_html_find (YelpHtml *html,
- const gchar *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 webkit_web_view_search_text (WEBKIT_WEB_VIEW (html),
- html->priv->find_string,
- FALSE,
- forward, TRUE);
-}
-
-void
-yelp_html_set_find_props (YelpHtml *html,
- const char *str,
- gboolean match_case,
- gboolean wrap)
-{
- /* Empty */
-}
-
-void
-yelp_html_jump_to_anchor (YelpHtml *html,
- gchar *anchor)
-{
- YelpHtmlPriv *priv;
-
- g_return_if_fail (html != NULL);
-
- priv = html->priv;
-
- g_free (priv->anchor);
- priv->anchor = g_strdup (anchor);
-}
-
-void
-yelp_html_copy_selection (YelpHtml *html)
-{
- webkit_web_view_copy_clipboard (WEBKIT_WEB_VIEW (html));
-}
-
-void
-yelp_html_select_all (YelpHtml *html)
-{
- webkit_web_view_select_all (WEBKIT_WEB_VIEW (html));
-}
-
-void
-yelp_html_print (YelpHtml *html)
-{
- webkit_web_view_execute_script (WEBKIT_WEB_VIEW (html), "print();");
-}
-
-static 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);
-
- /* 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);
-
- 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 (YelpHtml *html)
-{
- /* TODO: No Webkit equivalent ... */
- /* See https://bugs.webkit.org/show_bug.cgi?id=19486 */
-
-}
-
-static void
-html_set_a11y (YelpHtml *html)
-{
- gboolean caret;
-
- caret = yelp_settings_get_caret ();
- /* TODO Webkit version */
-}
-
-gboolean
-yelp_html_initialize (void)
-{
- return TRUE;
-}
-
-void
-yelp_html_shutdown (void)
-{
- /* Empty */
-}
diff --git a/src/yelp-html.h b/src/yelp-html.h
deleted file mode 100644
index 82235991..00000000
--- a/src/yelp-html.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001-2002 Mikael Hallendal <micke@imendio.com>
- *
- * 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: Mikael Hallendal <micke@imendio.com>
- */
-
-#ifndef __YELP_HTML_H__
-#define __YELP_HTML_H__
-
-#include <config.h>
-#include <webkit/webkit.h>
-
-G_BEGIN_DECLS
-
-#define YELP_TYPE_HTML (yelp_html_get_type ())
-#define YELP_HTML(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_HTML, YelpHtml))
-#define YELP_HTML_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_HTML, YelpHtmlClass))
-#define YELP_IS_HTML(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_HTML))
-#define YELP_IS_HTML_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_HTML))
-#define YELP_HTML_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_HTML, YelpHtmlClass))
-
-typedef struct _YelpHtml YelpHtml;
-typedef struct _YelpHtmlClass YelpHtmlClass;
-typedef struct _YelpHtmlPriv YelpHtmlPriv;
-
-struct _YelpHtml {
- WebKitWebView parent;
- YelpHtmlPriv *priv;
-};
-
-struct _YelpHtmlClass {
- WebKitWebViewClass parent;
- guint font_handler;
- guint color_handler;
- guint a11y_handler;
-
- /* Signals */
- void (*uri_selected) (YelpHtml *view,
- gchar *uri,
- gboolean handled);
- gboolean (*frame_selected) (YelpHtml *view,
- gchar *uri,
- gboolean handled);
- void (*title_changed) (YelpHtml *view,
- const gchar *new_title);
- void (*popupmenu_requested) (YelpHtml *view,
- const gchar *link);
-
-};
-
-GType yelp_html_get_type (void);
-YelpHtml * yelp_html_new (void);
-
-void yelp_html_set_base_uri (YelpHtml *html,
- const gchar *uri);
-void yelp_html_open_stream (YelpHtml *html,
- const gchar *mime);
-void yelp_html_write (YelpHtml *html,
- const gchar *data,
- gint len);
-void yelp_html_printf (YelpHtml *html,
- char *format,
- ...) G_GNUC_PRINTF (2,3);
-void yelp_html_close (YelpHtml *html);
-
-void yelp_html_frames (YelpHtml *html,
- gboolean enable);
-
-gboolean yelp_html_find (YelpHtml *html,
- const gchar *str);
-
-gboolean yelp_html_find_again (YelpHtml *html,
- gboolean forward);
-
-void yelp_html_set_find_props (YelpHtml *html,
- const char *str,
- gboolean match_case,
- gboolean wrap);
-
-void yelp_html_jump_to_anchor (YelpHtml *html,
- gchar *anchor);
-
-void yelp_html_copy_selection (YelpHtml *html);
-
-void yelp_html_select_all (YelpHtml *html);
-
-void yelp_html_print (YelpHtml *html);
-gboolean yelp_html_initialize (void);
-void yelp_html_shutdown (void);
-
-G_END_DECLS
-
-#endif /* __YELP_HTML_H__ */
diff --git a/src/yelp-info.c b/src/yelp-info.c
deleted file mode 100644
index 17a95c6c..00000000
--- a/src/yelp-info.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2007 Don Scorgie <dscorgie@svn.gnome.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 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: Don Scorgie <dscorgie@svn.gnome.org>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <libxml/tree.h>
-
-#include "yelp-error.h"
-#include "yelp-info.h"
-#include "yelp-info-parser.h"
-#include "yelp-transform.h"
-#include "yelp-debug.h"
-#include "yelp-settings.h"
-
-#define STYLESHEET DATADIR"/yelp/xslt/info2html.xsl"
-
-#define YELP_INFO_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_INFO, YelpInfoPriv))
-
-typedef enum {
- INFO_STATE_BLANK, /* Brand new, run transform as needed */
- INFO_STATE_PARSING, /* Parsing/transforming document, please wait */
- INFO_STATE_PARSED, /* All done, if we ain't got it, it ain't here */
- INFO_STATE_STOP /* Stop everything now, object to be disposed */
-} InfoState;
-
-struct _YelpInfoPriv {
- gchar *filename;
- InfoState state;
-
- GMutex *mutex;
- GThread *thread;
-
- xmlDocPtr xmldoc;
- GtkTreeModel *sections;
-
- gboolean process_running;
- gboolean transform_running;
-
- YelpTransform *transform;
-};
-
-
-static void info_class_init (YelpInfoClass *klass);
-static void info_init (YelpInfo *info);
-static void info_try_dispose (GObject *object);
-static void info_dispose (GObject *object);
-
-/* YelpDocument */
-static void info_request (YelpDocument *document,
- gint req_id,
- gboolean handled,
- gchar *page_id,
- YelpDocumentFunc func,
- gpointer user_data);
-
-/* YelpTransform */
-static void transform_func (YelpTransform *transform,
- YelpTransformSignal signal,
- gpointer func_data,
- YelpInfo *info);
-static void transform_page_func (YelpTransform *transform,
- gchar *page_id,
- YelpInfo *info);
-static void transform_final_func (YelpTransform *transform,
- YelpInfo *info);
-static gpointer info_get_sections (YelpDocument *document);
-
-/* Threaded */
-static void info_process (YelpInfo *info);
-
-static YelpDocumentClass *parent_class;
-
-GType
-yelp_info_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof (YelpInfoClass),
- NULL, NULL,
- (GClassInitFunc) info_class_init,
- NULL, NULL,
- sizeof (YelpInfo),
- 0,
- (GInstanceInitFunc) info_init,
- };
- type = g_type_register_static (YELP_TYPE_DOCUMENT,
- "YelpInfo",
- &info, 0);
- }
- return type;
-}
-
-static void
-info_class_init (YelpInfoClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- YelpDocumentClass *document_class = YELP_DOCUMENT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- object_class->dispose = info_try_dispose;
-
- document_class->request = info_request;
- document_class->cancel = NULL;
- document_class->get_sections = info_get_sections;
-
- g_type_class_add_private (klass, sizeof (YelpInfoPriv));
-}
-
-static void
-info_init (YelpInfo *info)
-{
- YelpInfoPriv *priv;
-
- priv = info->priv = YELP_INFO_GET_PRIVATE (info);
-
- priv->state = INFO_STATE_BLANK;
-
- priv->xmldoc = NULL;
-
- priv->mutex = g_mutex_new ();
-}
-
-static void
-info_try_dispose (GObject *object)
-{
- YelpInfoPriv *priv;
-
- g_assert (object != NULL && YELP_IS_INFO (object));
- priv = YELP_INFO (object)->priv;
-
- g_mutex_lock (priv->mutex);
- if (priv->process_running || priv->transform_running) {
- priv->state = INFO_STATE_STOP;
- g_idle_add ((GSourceFunc) info_try_dispose, object);
- g_mutex_unlock (priv->mutex);
- } else {
- g_mutex_unlock (priv->mutex);
- info_dispose (object);
- }
-}
-
-static void
-info_dispose (GObject *object)
-{
- YelpInfo *info = YELP_INFO (object);
-
- g_free (info->priv->filename);
-
- if (info->priv->xmldoc)
- xmlFreeDoc (info->priv->xmldoc);
-
- g_mutex_free (info->priv->mutex);
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-/******************************************************************************/
-
-YelpDocument *
-yelp_info_new (gchar *filename)
-{
- YelpInfo *info;
-
- g_return_val_if_fail (filename != NULL, NULL);
-
- info = (YelpInfo *) g_object_new (YELP_TYPE_INFO, NULL);
- info->priv->filename = g_strdup (filename);
-
- debug_print (DB_FUNCTION, "entering\n");
- debug_print (DB_ARG, " filename = \"%s\"\n", filename);
-
- yelp_document_add_page_id (YELP_DOCUMENT (info), "x-yelp-index", "index");
-
- return (YelpDocument *) info;
-}
-
-
-/******************************************************************************/
-/** YelpDocument **************************************************************/
-
-static void
-info_request (YelpDocument *document,
- gint req_id,
- gboolean handled,
- gchar *page_id,
- YelpDocumentFunc func,
- gpointer user_data)
-{
- YelpInfo *info;
- YelpInfoPriv *priv;
- YelpError *error;
-
- debug_print (DB_FUNCTION, "entering\n");
- debug_print (DB_ARG, " req_id = %i\n", req_id);
- debug_print (DB_ARG, " page_id = \"%s\"\n", page_id);
-
- g_assert (document != NULL && YELP_IS_INFO (document));
-
- if (handled)
- return;
-
- info = YELP_INFO (document);
- priv = info->priv;
-
- g_mutex_lock (priv->mutex);
-
- switch (priv->state) {
- case INFO_STATE_BLANK:
- priv->state = INFO_STATE_PARSING;
- priv->process_running = TRUE;
- priv->thread = g_thread_create ((GThreadFunc) info_process, info, FALSE, NULL);
- break;
- case INFO_STATE_PARSING:
- break;
- case INFO_STATE_PARSED:
- case INFO_STATE_STOP:
- error = yelp_error_new (_("Page not found"),
- _("The page %s was not found in the document %s."),
- page_id, priv->filename);
- yelp_document_error_request (document, req_id, error);
- break;
- }
-
- g_mutex_unlock (priv->mutex);
-}
-
-
-/******************************************************************************/
-/** YelpTransform *************************************************************/
-
-static void
-transform_func (YelpTransform *transform,
- YelpTransformSignal signal,
- gpointer func_data,
- YelpInfo *info)
-{
- YelpInfoPriv *priv;
-
- debug_print (DB_FUNCTION, "entering\n");
-
- g_assert (info != NULL && YELP_IS_INFO (info));
-
- priv = info->priv;
-
- g_assert (transform == priv->transform);
-
- if (priv->state == INFO_STATE_STOP) {
- switch (signal) {
- case YELP_TRANSFORM_CHUNK:
- g_free (func_data);
- break;
- case YELP_TRANSFORM_ERROR:
- yelp_error_free ((YelpError *) func_data);
- break;
- case YELP_TRANSFORM_FINAL:
- break;
- }
- yelp_transform_release (transform);
- priv->transform = NULL;
- priv->transform_running = FALSE;
- return;
- }
-
- switch (signal) {
- case YELP_TRANSFORM_CHUNK:
- transform_page_func (transform, (gchar *) func_data, info);
- break;
- case YELP_TRANSFORM_ERROR:
- yelp_document_error_pending (YELP_DOCUMENT (info), (YelpError *) func_data);
- yelp_transform_release (transform);
- priv->transform = NULL;
- priv->transform_running = FALSE;
- break;
- case YELP_TRANSFORM_FINAL:
- transform_final_func (transform, info);
- break;
- }
-}
-
-static void
-transform_page_func (YelpTransform *transform,
- gchar *page_id,
- YelpInfo *info)
-{
- YelpInfoPriv *priv;
- gchar *content;
-
- debug_print (DB_FUNCTION, "entering\n");
-
- priv = info->priv;
- g_mutex_lock (priv->mutex);
-
- content = yelp_transform_eat_chunk (transform, page_id);
-
- yelp_document_add_page (YELP_DOCUMENT (info), page_id, content);
-
- g_free (page_id);
-
- g_mutex_unlock (priv->mutex);
-}
-
-static void
-transform_final_func (YelpTransform *transform, YelpInfo *info)
-{
- YelpError *error;
- YelpInfoPriv *priv = info->priv;
-
- debug_print (DB_FUNCTION, "entering\n");
-
- g_mutex_lock (priv->mutex);
-
- error = yelp_error_new (_("Page not found"),
- _("The requested page was not found in the document %s."),
- priv->filename);
- yelp_document_final_pending (YELP_DOCUMENT (info), error);
-
- yelp_transform_release (transform);
- priv->transform = NULL;
- priv->transform_running = FALSE;
- priv->state = INFO_STATE_PARSED;
-
- if (priv->xmldoc)
- xmlFreeDoc (priv->xmldoc);
- priv->xmldoc = NULL;
-
- g_mutex_unlock (priv->mutex);
-}
-
-
-/******************************************************************************/
-/** Threaded ******************************************************************/
-
-static void
-info_process (YelpInfo *info)
-{
- YelpInfoPriv *priv;
- YelpError *error = NULL;
- YelpDocument *document;
- GtkTreeModel *model;
-
- gint params_i = 0;
- gint params_max = 10;
- gchar **params = NULL;
-
-
- debug_print (DB_FUNCTION, "entering\n");
-
- g_assert (info != NULL && YELP_IS_INFO (info));
- g_object_ref (info);
- priv = info->priv;
- document = YELP_DOCUMENT (info);
-
- if (!g_file_test (priv->filename, G_FILE_TEST_IS_REGULAR)) {
- error = yelp_error_new (_("File not found"),
- _("The file ‘%s’ does not exist."),
- priv->filename);
- yelp_document_error_pending (document, error);
- goto done;
- }
-
- priv->sections = (GtkTreeModel *) yelp_info_parser_parse_file (priv->filename);
- if (!model) {
- /* TODO: Handle errors - exit out somehow */
- }
-
- priv->xmldoc = yelp_info_parser_parse_tree ((GtkTreeStore *) priv->sections);
-
- if (priv->xmldoc == NULL) {
- error = yelp_error_new (_("Could not parse file"),
- _("The file ‘%s’ could not be parsed because it is"
- " not a well-formed info page."),
- priv->filename);
- yelp_document_error_pending (document, error);
- }
-
- g_mutex_lock (priv->mutex);
- if (priv->state == INFO_STATE_STOP) {
- g_mutex_unlock (priv->mutex);
- goto done;
- }
-
- priv->transform = yelp_transform_new (STYLESHEET,
- (YelpTransformFunc) transform_func,
- info);
- priv->transform_running = TRUE;
-
- params = g_new0 (gchar *, params_max);
- yelp_settings_params (&params, &params_i, &params_max);
-
- params[params_i] = NULL;
-
-
- yelp_transform_start (priv->transform,
- priv->xmldoc,
- params);
- g_strfreev (params);
- g_mutex_unlock (priv->mutex);
-
- done:
- priv->process_running = FALSE;
- g_object_unref (info);
-}
-
-static gpointer
-info_get_sections (YelpDocument *document)
-{
- YelpInfo *info = (YelpInfo *) document;
-
- return (gpointer) (info->priv->sections);
-}
diff --git a/src/yelp-info.h b/src/yelp-info.h
deleted file mode 100644
index d592dd72..00000000
--- a/src/yelp-info.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/*
- * Copyright (C) 2007 Don Scorgie <dscorgie@svn.gnome.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 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: Don Scorgie <dscorgie@svn.gnome.org>
- */
-
-#ifndef __YELP_INFO_H__
-#define __YELP_INFO_H__
-
-#include <glib-object.h>
-
-#include "yelp-document.h"
-
-#define YELP_TYPE_INFO (yelp_info_get_type ())
-#define YELP_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_INFO, YelpInfo))
-#define YELP_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_INFO, YelpInfoClass))
-#define YELP_IS_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_INFO))
-#define YELP_IS_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_INFO))
-#define YELP_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_INFO, YelpInfoClass))
-
-typedef struct _YelpInfo YelpInfo;
-typedef struct _YelpInfoClass YelpInfoClass;
-typedef struct _YelpInfoPriv YelpInfoPriv;
-
-struct _YelpInfo {
- YelpDocument parent;
- YelpInfoPriv *priv;
-};
-
-struct _YelpInfoClass {
- YelpDocumentClass parent_class;
-};
-
-GType yelp_info_get_type (void);
-YelpDocument * yelp_info_new (gchar *uri);
-
-#endif /* __YELP_INFO_H__ */
diff --git a/src/yelp-infos.xml b/src/yelp-infos.xml
deleted file mode 100644
index 18462b61..00000000
--- a/src/yelp-infos.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<node name="/org/gnome/YelpService">
- <interface name="org.gnome.YelpService">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="server"/>
- <method name="new_window">
- <arg type="s" name="url" direction="in" />
- <arg type="s" name="timestamp" direction="in" />
- </method>
- <method name="get_url_list">
- <arg type="s" name="urls" direction="out" />
- </method>
- <!-- Add more methods/signals if you want -->
- </interface>
-</node>
diff --git a/src/yelp-main.c b/src/yelp-main.c
deleted file mode 100644
index c88f26f4..00000000
--- a/src/yelp-main.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001-2003 Mikael Hallendal <micke@imendio.com>
- *
- * 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: Mikael Hallendal <micke@imendio.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <dbus/dbus-glib-bindings.h>
-#include <string.h>
-#include <stdlib.h>
-#include <libxslt/xslt.h>
-
-#ifdef WITH_SMCLIENT
-#include "eggsmclient.h"
-#endif /* WITH_SMCLIENT */
-#include "client-bindings.h"
-#include "yelp-window.h"
-#include "yelp-base.h"
-#include "yelp-html.h"
-
-static gchar *cache_dir;
-static gchar *open_urls;
-static gchar *startup_id;
-static gchar **files;
-static gboolean private = FALSE;
-static YelpBase *priv_base = NULL;
-
-static DBusGConnection *connection;
-
-/*structure defining command line option.*/
-enum {
- OPTION_OPEN_URLS = 1,
- OPTION_CACHE_DIR
-};
-
-static void main_start (const gchar *url);
-static DBusGProxy * main_dbus_get_proxy (void);
-static gboolean main_is_running (void);
-static gboolean main_slave_start (gchar *url);
-
-#ifdef WITH_SMCLIENT
-static int main_save_session (EggSMClient *client,
- gpointer cdata);
-
-static void main_client_die (EggSMClient *client,
- gpointer cdata);
-#endif /* WITH_SMCLIENT */
-
-static gboolean main_restore_session (void);
-static Time slowly_and_stupidly_obtain_timestamp (Display *xdisplay);
-
-
-static const GOptionEntry options[] = {
- {
- "open-urls",
- '\0',
- G_OPTION_FLAG_HIDDEN,
- G_OPTION_ARG_STRING,
- &open_urls,
- NULL, NULL,
- },
- {
- "private-session",
- 'p',
- 0, G_OPTION_ARG_NONE,
- &private,
- N_("Use a private session"),
- NULL,
- },
- {
- "with-cache-dir",
- '\0',
- 0,
- G_OPTION_ARG_STRING,
- &cache_dir,
- N_("Define which cache directory to use"),
- NULL,
- },
- { G_OPTION_REMAINING,
- 0, 0, G_OPTION_ARG_FILENAME_ARRAY,
- &files, NULL, NULL },
- { NULL}
-};
-
-static void
-main_start (const gchar *url)
-{
- YelpBase *base;
- GError *error = NULL;
-
- base = yelp_base_new (private);
-
- server_new_window (base, (gchar *) url, startup_id, &error);
- priv_base = base;
-
- gtk_main ();
-
- return;
-}
-
-
-static gboolean
-main_slave_start (gchar *url)
-{
- DBusGProxy *proxy = NULL;
- GError *error = NULL;
-
- proxy = main_dbus_get_proxy ();
-
- if (!proxy)
- g_error ("Cannot connect to dbus\n");
-
- if (!org_gnome_YelpService_new_window (proxy, url, startup_id,
- &error))
- g_error ("%s\n", error->message);
-
- return FALSE;
-}
-
-
-#ifdef WITH_SMCLIENT
-static gint
-main_save_session (EggSMClient *client,
- gpointer cdata)
-{
- gchar **argv;
- gchar *open_windows = NULL;
- gint i=1;
- gint arg_len = 1;
- gboolean store_open_urls = FALSE;
- /* DBusGProxy *proxy = NULL; */
- GError *error = NULL;
-
- /*proxy = main_dbus_get_proxy ();
- if (!proxy) {
- g_warning ("Unable to connect to bus again\n");*/
-
-
- if (!server_get_url_list (priv_base, &open_windows,
- &error))
- g_warning ("Cannot recieve window list - %s\n", error->message);
-
- if (open_windows != NULL) {
- store_open_urls = TRUE;
- arg_len++;
- }
-
- if (cache_dir) {
- arg_len++;
- }
-
- argv = g_malloc0 (sizeof (gchar *) * arg_len);
-
- /* Program name */
- argv[0] = g_strdup ("yelp");
-
- if (cache_dir) {
- argv[1] = g_strdup_printf ("--with-cache-dir=\"%s\"",
- cache_dir);
- }
-
- if (store_open_urls) {
- argv[arg_len - 1] = g_strdup_printf ("--open-urls=\"%s\"",
- open_windows);
- }
-
- egg_sm_client_set_restart_command (client, arg_len, (const char **) argv);
-
- for (i = 0; i < arg_len; ++i) {
- g_free (argv[i]);
- }
- g_free (argv);
-
- return TRUE;
-}
-
-static void
-main_client_die (EggSMClient *client,
- gpointer cdata)
-{
- gtk_main_quit ();
-}
-#endif /* WITH_SMCLIENT */
-
-static gboolean
-main_restore_session (void)
-{
- YelpBase *yelp_base;
-
- yelp_base = yelp_base_new (private);
- priv_base = yelp_base;
-
- if (!yelp_base) {
- g_error ("Couldn't activate YelpBase");
- }
- g_print ("restoring session\n");
- if (open_urls) {
- gchar **urls = g_strsplit_set (open_urls, ";\"", -1);
- gchar *url;
- gint i = 0;
- GError *error = NULL;
-
- while ((url = urls[i]) != NULL) {
- if (*url != '\0')
- server_new_window (yelp_base, url,
- startup_id, &error);
- ++i;
- }
-
- g_strfreev (urls);
- }
- gtk_main ();
- return FALSE;
-
-}
-
-/* Copied from libnautilus/nautilus-program-choosing.c; Needed in case
- * we have no DESKTOP_STARTUP_ID (with its accompanying timestamp).
- */
-static Time
-slowly_and_stupidly_obtain_timestamp (Display *xdisplay)
-{
- Window xwindow;
- XEvent event;
-
- {
- XSetWindowAttributes attrs;
- Atom atom_name;
- Atom atom_type;
- gchar* name;
-
- attrs.override_redirect = True;
- attrs.event_mask = PropertyChangeMask | StructureNotifyMask;
-
- xwindow =
- XCreateWindow (xdisplay,
- RootWindow (xdisplay, 0),
- -100, -100, 1, 1,
- 0,
- CopyFromParent,
- CopyFromParent,
- CopyFromParent,
- CWOverrideRedirect | CWEventMask,
- &attrs);
-
- atom_name = XInternAtom (xdisplay, "WM_NAME", TRUE);
- g_assert (atom_name != None);
- atom_type = XInternAtom (xdisplay, "STRING", TRUE);
- g_assert (atom_type != None);
-
- name = "Fake Window";
- XChangeProperty (xdisplay,
- xwindow, atom_name,
- atom_type,
- 8, PropModeReplace, (guchar *) name, strlen (name));
- }
-
- XWindowEvent (xdisplay,
- xwindow,
- PropertyChangeMask,
- &event);
-
- XDestroyWindow(xdisplay, xwindow);
-
- return event.xproperty.time;
-}
-
-DBusGProxy *
-main_dbus_get_proxy (void)
-{
- if (!connection)
- return NULL;
-
- return dbus_g_proxy_new_for_name (connection,
- "org.gnome.YelpService",
- "/org/gnome/YelpService",
- "org.gnome.YelpService");
-}
-
-gboolean
-main_is_running (void)
-{
- DBusGProxy *proxy = NULL;
- gboolean instance = TRUE;
- GError * error = NULL;
-
- if (!connection)
- return TRUE;
-
- proxy = dbus_g_proxy_new_for_name (connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
-
- if (!dbus_g_proxy_call (proxy, "NameHasOwner", &error,
- G_TYPE_STRING, "org.gnome.YelpService",
- G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &instance,
- G_TYPE_INVALID)) {
- g_error ("Cannot connect to DBus - %s\n", error->message);
- exit (2);
- }
- return instance;
-}
-
-
-int
-main (int argc, char **argv)
-{
- gchar *url = NULL;
-#ifdef WITH_SMCLIENT
- EggSMClient *sm_client;
- GError *error = NULL;
-#endif /* WITH_SMCLIENT */
- gboolean retval;
- gboolean session_started = FALSE;
- gchar *local_id;
- GOptionContext *context;
-
- g_thread_init(NULL);
-
- bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain(GETTEXT_PACKAGE);
- xsltInit ();
-
- local_id = (gchar *) g_getenv ("DESKTOP_STARTUP_ID");
-
- if (local_id != NULL && *local_id != '\0') {
- startup_id = g_strdup (local_id);
- putenv ("DESKTOP_STARTUP_ID=");
- }
-
- /* Commandline parsing is done here */
- context = g_option_context_new (N_(" GNOME Help Browser"));
-
- g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE);
-
- g_option_context_add_group (context, gtk_get_option_group (TRUE));
-
-#ifdef WITH_SMCLIENT
- g_option_context_add_group (context, egg_sm_client_get_option_group ());
-#endif /* WITH_SMCLIENT */
-
- g_option_context_set_translation_domain(context, GETTEXT_PACKAGE);
-
- gtk_window_set_auto_startup_notification(FALSE);
-
- retval = g_option_context_parse (context, &argc, &argv, &error);
- g_option_context_free (context);
- if (!retval) {
- g_print ("%s", error->message);
- g_error_free (error);
- exit (1);
- }
-
- dbus_g_thread_init();
-
- if (!startup_id) {
- Time tmp;
- tmp = slowly_and_stupidly_obtain_timestamp (gdk_display);
- startup_id = g_strdup_printf ("_TIME%lu", tmp);
- }
- g_set_application_name (_("Help"));
- gtk_window_set_default_icon_name ("help-browser");
-
- if (!private) {
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
- if (!connection) {
- g_warning ("Cannot find dbus bus\n");
- private = TRUE;
- }
- }
-
- if (!yelp_html_initialize ()) {
- g_printerr ("Could not initialize HTML component\n");
- exit (1);
- }
-
- if (files != NULL && files[0] != NULL) {
- url = g_strdup (files[0]);
- g_strfreev (files);
- }
-
-#ifdef WITH_SMCLIENT
- sm_client = egg_sm_client_get ();
- g_signal_connect (sm_client, "save-state",
- G_CALLBACK (main_save_session), NULL);
- g_signal_connect (sm_client, "quit",
- G_CALLBACK (main_client_die), NULL);
- session_started = egg_sm_client_is_resumed(sm_client);
-#endif /* WITH_SMCLIENT */
-
- if (private || !main_is_running ()) {
- const gchar *env;
-
- xsltInit ();
- if (session_started) {
- main_restore_session ();
- } else {
- main_start (url);
- }
- } else {
- main_slave_start (url);
- }
-
- yelp_html_shutdown ();
-
-#ifdef WITH_SMCLIENT
- g_signal_handlers_disconnect_matched (sm_client, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, NULL);
-#endif /* WITH_SMCLIENT */
-
- return 0;
-}
diff --git a/src/yelp-marshal.list b/src/yelp-marshal.list
deleted file mode 100644
index 7501fd3a..00000000
--- a/src/yelp-marshal.list
+++ /dev/null
@@ -1,6 +0,0 @@
-VOID:POINTER,BOOLEAN
-VOID:STRING
-VOID:VOID
-VOID:STRING,INT
-VOID:POINTER
-BOOLEAN:POINTER,BOOLEAN
diff --git a/src/yelp-toc.c b/src/yelp-toc.c
index 201cabb4..085c47c7 100644
--- a/src/yelp-toc.c
+++ b/src/yelp-toc.c
@@ -553,7 +553,7 @@ xml_trim_titles (xmlNodePtr node, xmlChar * nodetype)
if (!xmlStrcmp (cur->name, nodetype)) {
xmlChar *cur_lang = NULL;
int cur_pri = INT_MAX;
- cur_lang = xmlNodeGetLang (cur);
+ cur_lang = xmlGetNsProp(cur, BAD_CAST "lang", XML_XML_NAMESPACE);
if (cur_lang) {
for (j = 0; langs[j]; j++) {
if (g_str_equal (cur_lang, langs[j])) {
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 990b2bdc..14a126a7 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -24,6 +24,8 @@
#include <config.h>
#endif
+#include <math.h>
+
#include <gdk/gdkkeysyms.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
@@ -49,27 +51,67 @@ static void yelp_window_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
+static void window_construct (YelpWindow *window);
static void window_new (GtkAction *action,
YelpWindow *window);
+static gboolean window_configure_event (YelpWindow *window,
+ GdkEventConfigure *event,
+ gpointer user_data);
+static void window_drag_received (YelpWindow *window,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ gpointer userdata);
+static gboolean window_resize_signal (YelpWindow *window);
static void window_close (GtkAction *action,
YelpWindow *window);
+static void window_add_bookmark (GtkAction *action,
+ YelpWindow *window);
+static void window_load_bookmark (GtkAction *action,
+ YelpWindow *window);
+static void window_find_in_page (GtkAction *action,
+ YelpWindow *window);
+static void window_start_search (GtkAction *action,
+ YelpWindow *window);
static void window_open_location (GtkAction *action,
YelpWindow *window);
-static void window_font_adjustment (GtkAction *action,
+
+static void app_bookmarks_changed (YelpApplication *app,
+ const gchar *doc_uri,
YelpWindow *window);
-static void window_show_text_cursor (GtkToggleAction *action,
+static void window_set_bookmarks (YelpWindow *window,
+ const gchar *doc_uri);
+static void window_set_bookmark_action (YelpWindow *window);
+static void window_set_bookmark_icons (YelpWindow *window);
+static gboolean find_animate_open (YelpWindow *window);
+static gboolean find_animate_close (YelpWindow *window);
+static gboolean find_entry_focus_out (GtkEntry *entry,
+ GdkEventFocus *event,
YelpWindow *window);
-static void window_go_back (GtkAction *action,
+static gboolean find_entry_key_press (GtkEntry *entry,
+ GdkEventKey *event,
YelpWindow *window);
-static void window_go_forward (GtkAction *action,
+static void find_entry_changed (GtkEntry *entry,
YelpWindow *window);
+static void entry_bookmark_clicked (YelpLocationEntry *entry,
+ YelpWindow *window);
static void entry_location_selected (YelpLocationEntry *entry,
YelpWindow *window);
+static gint entry_completion_sort (GtkTreeModel *model,
+ GtkTreeIter *iter1,
+ GtkTreeIter *iter2,
+ gpointer user_data);
static void entry_completion_selected (YelpLocationEntry *entry,
GtkTreeModel *model,
GtkTreeIter *iter,
YelpWindow *window);
+static gboolean entry_focus_in (GtkEntry *entry,
+ GdkEventFocus *event,
+ YelpWindow *window);
static gboolean entry_focus_out (YelpLocationEntry *entry,
GdkEventFocus *event,
YelpWindow *window);
@@ -77,6 +119,9 @@ static gboolean entry_focus_out (YelpLocationEntry *entry,
static void view_external_uri (YelpView *view,
YelpUri *uri,
YelpWindow *window);
+static void view_new_window (YelpView *view,
+ YelpUri *uri,
+ YelpWindow *window);
static void view_loaded (YelpView *view,
YelpWindow *window);
static void view_uri_selected (YelpView *view,
@@ -107,243 +152,155 @@ enum {
PROP_APPLICATION
};
+enum {
+ RESIZE_EVENT,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
G_DEFINE_TYPE (YelpWindow, yelp_window, GTK_TYPE_WINDOW);
#define GET_PRIV(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_WINDOW, YelpWindowPrivate))
+static GHashTable *completions;
+
enum {
- COL_TITLE,
- COL_DESC,
- COL_ICON,
- COL_URI,
- COL_FLAGS,
- COL_TERMS
+ HISTORY_COL_TITLE,
+ HISTORY_COL_DESC,
+ HISTORY_COL_ICON,
+ HISTORY_COL_URI,
+ HISTORY_COL_DOC,
+ HISTORY_COL_PAGE,
+ HISTORY_COL_FLAGS,
+ HISTORY_COL_TERMS
};
-typedef struct _YelpBackEntry YelpBackEntry;
-struct _YelpBackEntry {
- YelpUri *uri;
- gchar *title;
- gchar *desc;
+enum {
+ COMPLETION_COL_TITLE,
+ COMPLETION_COL_DESC,
+ COMPLETION_COL_ICON,
+ COMPLETION_COL_PAGE,
+ COMPLETION_COL_FLAGS
};
-static void
-back_entry_free (YelpBackEntry *back)
-{
- if (back == NULL)
- return;
- g_object_unref (back->uri);
- g_free (back->title);
- g_free (back->desc);
- g_free (back);
-}
+
+static const gchar *YELP_UI =
+ "<ui>"
+ "<menubar>"
+ "<menu action='PageMenu'>"
+ "<menuitem action='NewWindow'/>"
+ "<menuitem action='Find'/>"
+ "<separator/>"
+ "<menuitem action='YelpViewPrint'/>"
+ "<separator/>"
+ "<menuitem action='CloseWindow'/>"
+ "</menu>"
+ "<menu action='ViewMenu'>"
+ "<menuitem action='LargerText'/>"
+ "<menuitem action='SmallerText'/>"
+ "<separator/>"
+ "<menuitem action='ShowTextCursor'/>"
+ "</menu>"
+ "<menu action='GoMenu'>"
+ "<menuitem action='YelpViewGoBack'/>"
+ "<menuitem action='YelpViewGoForward'/>"
+ "<separator/>"
+ "<menuitem action='YelpViewGoPrevious'/>"
+ "<menuitem action='YelpViewGoNext'/>"
+ "</menu>"
+ "<menu action='BookmarksMenu'>"
+ "<menuitem action='AddBookmark'/>"
+ "<separator/>"
+ "<placeholder name='Bookmarks'/>"
+ "</menu>"
+ "</menubar>"
+ "<accelerator action='Find'/>"
+ "<accelerator action='Search'/>"
+ "<accelerator action='OpenLocation'/>"
+ "</ui>";
typedef struct _YelpWindowPrivate YelpWindowPrivate;
struct _YelpWindowPrivate {
GtkListStore *history;
- GtkListStore *completion;
+ GtkUIManager *ui_manager;
GtkActionGroup *action_group;
YelpApplication *application;
/* no refs on these, owned by containers */
YelpView *view;
+ GtkWidget *vbox;
GtkWidget *hbox;
- GtkWidget *back_button;
- GtkWidget *forward_button;
YelpLocationEntry *entry;
GtkWidget *hidden_entry;
+ GtkWidget *find_entry;
+ GtkWidget *find_label;
/* refs because we dynamically add & remove */
+ GtkWidget *find_bar;
GtkWidget *align_location;
GtkWidget *align_hidden;
- GList *back_list;
- GList *back_cur;
- gboolean back_load;
-
gulong entry_location_selected;
+
+ gchar *doc_uri;
+
+ GtkActionGroup *bookmark_actions;
+ guint bookmarks_merge_id;
+
+ guint resize_signal;
+ gint width;
+ gint height;
+
+ guint entry_color_animate;
+ gfloat entry_color_step;
+
+ guint find_animate;
+ gint find_cur_height;
+ gint find_entry_height;
+ gint find_bar_height;
};
static const GtkActionEntry entries[] = {
{ "PageMenu", NULL, N_("_Page") },
{ "ViewMenu", NULL, N_("_View") },
{ "GoMenu", NULL, N_("_Go") },
+ { "BookmarksMenu", NULL, N_("_Bookmarks") },
- { "NewWindow", GTK_STOCK_NEW,
+ { "NewWindow", NULL,
N_("_New Window"),
"<Control>N",
NULL,
G_CALLBACK (window_new) },
- { "CloseWindow", GTK_STOCK_CLOSE,
+ { "CloseWindow", NULL,
N_("_Close"),
"<Control>W",
NULL,
G_CALLBACK (window_close) },
+ { "AddBookmark", NULL,
+ N_("_Add Bookmark"),
+ "<Control>D",
+ NULL,
+ G_CALLBACK (window_add_bookmark) },
+ { "Find", NULL,
+ N_("Find in Page..."),
+ "<Control>F",
+ NULL,
+ G_CALLBACK (window_find_in_page) },
+ { "Search", NULL,
+ N_("Search..."),
+ "<Control>S",
+ NULL,
+ G_CALLBACK (window_start_search) },
{ "OpenLocation", NULL,
N_("Open Location"),
"<Control>L",
NULL,
- G_CALLBACK (window_open_location) },
- { "LargerText", NULL,
- N_("_Larger Text"),
- "<Control>plus",
- NULL,
- G_CALLBACK (window_font_adjustment) },
- { "SmallerText", NULL,
- N_("_Smaller Text"),
- "<Control>minus",
- NULL,
- G_CALLBACK (window_font_adjustment) },
- {"GoBack", GTK_STOCK_GO_BACK,
- N_("_Back"),
- "<Alt>Left",
- NULL,
- G_CALLBACK (window_go_back) },
- {"GoForward", GTK_STOCK_GO_FORWARD,
- N_("_Forward"),
- "<Alt>Right",
- NULL,
- G_CALLBACK (window_go_forward) }
+ G_CALLBACK (window_open_location) }
};
static void
yelp_window_init (YelpWindow *window)
{
- GtkWidget *vbox, *scroll;
- GtkUIManager *ui_manager;
- GtkAction *action;
- GError *error = NULL;
- GtkTreeIter iter;
- YelpWindowPrivate *priv = GET_PRIV (window);
-
- gtk_window_set_icon_name (GTK_WINDOW (window), "help-browser");
- gtk_window_set_default_size (GTK_WINDOW (window), 520, 580);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), vbox);
-
- priv->action_group = gtk_action_group_new ("MenuActions");
- gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (priv->action_group,
- entries, G_N_ELEMENTS (entries),
- window);
- action = (GtkAction *) gtk_toggle_action_new ("ShowTextCursor",
- _("Show Text _Cursor"),
- NULL, NULL);
- g_signal_connect (action, "activate",
- G_CALLBACK (window_show_text_cursor), window);
- gtk_action_group_add_action_with_accel (priv->action_group,
- action, "F7");
-
- ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (ui_manager, priv->action_group, 0);
- gtk_window_add_accel_group (GTK_WINDOW (window),
- gtk_ui_manager_get_accel_group (ui_manager));
- if (!gtk_ui_manager_add_ui_from_file (ui_manager,
- DATADIR "/yelp/ui/yelp-ui.xml",
- &error)) {
- GtkWidget *dialog = gtk_message_dialog_new (NULL, 0,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- "%s", _("Cannot create window"));
- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), "%s",
- error->message);
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- g_error_free (error);
- }
- gtk_box_pack_start (GTK_BOX (vbox),
- gtk_ui_manager_get_widget (ui_manager, "/ui/menubar"),
- FALSE, FALSE, 0);
-
- priv->hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), priv->hbox, FALSE, FALSE, 0);
-
- action = gtk_action_group_get_action (priv->action_group, "GoBack");
- priv->back_button = gtk_action_create_tool_item (action);
- gtk_box_pack_start (GTK_BOX (priv->hbox),
- priv->back_button,
- FALSE, FALSE, 0);
- action = gtk_action_group_get_action (priv->action_group, "GoForward");
- priv->forward_button = gtk_action_create_tool_item (action);
- gtk_box_pack_start (GTK_BOX (priv->hbox),
- priv->forward_button,
- FALSE, FALSE, 0);
-
- priv->history = gtk_list_store_new (6,
- G_TYPE_STRING, /* title */
- G_TYPE_STRING, /* desc */
- G_TYPE_STRING, /* icon */
- G_TYPE_STRING, /* uri */
- G_TYPE_INT, /* flags */
- G_TYPE_STRING /* search terms */
- );
- gtk_list_store_append (priv->history, &iter);
- gtk_list_store_set (priv->history, &iter,
- COL_FLAGS, YELP_LOCATION_ENTRY_IS_SEPARATOR,
- -1);
- gtk_list_store_append (priv->history, &iter);
- gtk_list_store_set (priv->history, &iter,
- COL_ICON, "system-search",
- COL_TITLE, _("Search..."),
- COL_FLAGS, YELP_LOCATION_ENTRY_IS_SEARCH,
- -1);
- priv->completion = gtk_list_store_new (4,
- G_TYPE_STRING, /* title */
- G_TYPE_STRING, /* desc */
- G_TYPE_STRING, /* icon */
- G_TYPE_STRING /* uri */
- );
- priv->entry = (YelpLocationEntry *)
- yelp_location_entry_new_with_model (GTK_TREE_MODEL (priv->history),
- COL_TITLE,
- COL_DESC,
- COL_ICON,
- COL_FLAGS);
- g_signal_connect (priv->entry, "focus-out-event",
- G_CALLBACK (entry_focus_out), window);
-
- yelp_location_entry_set_completion_model (YELP_LOCATION_ENTRY (priv->entry),
- GTK_TREE_MODEL (priv->completion),
- COL_TITLE,
- COL_DESC,
- COL_ICON);
- g_signal_connect (priv->entry, "completion-selected",
- G_CALLBACK (entry_completion_selected), window);
-
- priv->entry_location_selected = g_signal_connect (priv->entry, "location-selected",
- G_CALLBACK (entry_location_selected), window);
- priv->align_location = g_object_ref_sink (gtk_alignment_new (0.0, 0.5, 1.0, 0.0));
- gtk_box_pack_start (GTK_BOX (priv->hbox),
- GTK_WIDGET (priv->align_location),
- TRUE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (priv->align_location), GTK_WIDGET (priv->entry));
-
- priv->hidden_entry = gtk_entry_new ();
- priv->align_hidden = g_object_ref_sink (gtk_alignment_new (0.0, 0.5, 1.0, 0.0));
- gtk_container_add (GTK_CONTAINER (priv->align_hidden), GTK_WIDGET (priv->hidden_entry));
-
- g_signal_connect (priv->hidden_entry, "activate",
- G_CALLBACK (hidden_entry_activate), window);
- g_signal_connect_swapped (priv->hidden_entry, "focus-out-event",
- G_CALLBACK (hidden_entry_hide), window);
- g_signal_connect (priv->hidden_entry, "key-press-event",
- G_CALLBACK (hidden_key_press), window);
-
- scroll = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_box_pack_end (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
-
- priv->view = (YelpView *) yelp_view_new ();
- g_signal_connect (priv->view, "external-uri", G_CALLBACK (view_external_uri), window);
- g_signal_connect (priv->view, "loaded", G_CALLBACK (view_loaded), window);
- g_signal_connect (priv->view, "notify::yelp-uri", G_CALLBACK (view_uri_selected), window);
- g_signal_connect (priv->view, "notify::root-title", G_CALLBACK (view_root_title), window);
- g_signal_connect (priv->view, "notify::page-title", G_CALLBACK (view_page_title), window);
- g_signal_connect (priv->view, "notify::page-desc", G_CALLBACK (view_page_desc), window);
- g_signal_connect (priv->view, "notify::page-icon", G_CALLBACK (view_page_icon), window);
- gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (priv->view));
- gtk_widget_grab_focus (GTK_WIDGET (priv->view));
+ g_signal_connect (window, "configure-event", G_CALLBACK (window_configure_event), NULL);
}
static void
@@ -356,6 +313,8 @@ yelp_window_class_init (YelpWindowClass *klass)
object_class->get_property = yelp_window_get_property;
object_class->set_property = yelp_window_set_property;
+ completions = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+
g_object_class_install_property (object_class,
PROP_APPLICATION,
g_param_spec_object ("application",
@@ -366,6 +325,14 @@ yelp_window_class_init (YelpWindowClass *klass)
G_PARAM_READWRITE | G_PARAM_STATIC_NAME |
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+ signals[RESIZE_EVENT] =
+ g_signal_new ("resized",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
g_type_class_add_private (klass, sizeof (YelpWindowPrivate));
}
@@ -384,6 +351,11 @@ yelp_window_dispose (GObject *object)
priv->action_group = NULL;
}
+ if (priv->bookmark_actions) {
+ g_object_unref (priv->bookmark_actions);
+ priv->bookmark_actions = NULL;
+ }
+
if (priv->align_location) {
g_object_unref (priv->align_location);
priv->align_location = NULL;
@@ -394,9 +366,19 @@ yelp_window_dispose (GObject *object)
priv->align_hidden = NULL;
}
- while (priv->back_list) {
- back_entry_free ((YelpBackEntry *) priv->back_list->data);
- priv->back_list = g_list_delete_link (priv->back_list, priv->back_list);
+ if (priv->find_bar) {
+ g_object_unref (priv->find_bar);
+ priv->find_bar = NULL;
+ }
+
+ if (priv->find_animate != 0) {
+ g_source_remove (priv->find_animate);
+ priv->find_animate = 0;
+ }
+
+ if (priv->entry_color_animate != 0) {
+ g_source_remove (priv->entry_color_animate);
+ priv->entry_color_animate = 0;
}
G_OBJECT_CLASS (yelp_window_parent_class)->dispose (object);
@@ -405,6 +387,8 @@ yelp_window_dispose (GObject *object)
static void
yelp_window_finalize (GObject *object)
{
+ YelpWindowPrivate *priv = GET_PRIV (object);
+ g_free (priv->doc_uri);
G_OBJECT_CLASS (yelp_window_parent_class)->finalize (object);
}
@@ -435,6 +419,7 @@ yelp_window_set_property (GObject *object,
switch (prop_id) {
case PROP_APPLICATION:
priv->application = g_value_get_object (value);
+ window_construct ((YelpWindow *) object);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -442,6 +427,170 @@ yelp_window_set_property (GObject *object,
}
}
+static void
+window_construct (YelpWindow *window)
+{
+ GtkWidget *scroll;
+ GtkActionGroup *view_actions;
+ GtkAction *action;
+ GtkWidget *button;
+ GtkTreeIter iter;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ gtk_window_set_icon_name (GTK_WINDOW (window), "help-browser");
+
+ priv->view = (YelpView *) yelp_view_new ();
+
+ priv->vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), priv->vbox);
+
+ priv->action_group = gtk_action_group_new ("WindowActions");
+ gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (priv->action_group,
+ entries, G_N_ELEMENTS (entries),
+ window);
+
+ priv->bookmark_actions = gtk_action_group_new ("BookmarkActions");
+ gtk_action_group_set_translate_func (priv->bookmark_actions, NULL, NULL, NULL);
+
+ priv->ui_manager = gtk_ui_manager_new ();
+ gtk_ui_manager_insert_action_group (priv->ui_manager, priv->action_group, 0);
+ gtk_ui_manager_insert_action_group (priv->ui_manager, priv->bookmark_actions, 1);
+ gtk_ui_manager_insert_action_group (priv->ui_manager,
+ yelp_application_get_action_group (priv->application),
+ 2);
+ view_actions = yelp_view_get_action_group (priv->view);
+ gtk_ui_manager_insert_action_group (priv->ui_manager, view_actions, 3);
+ gtk_window_add_accel_group (GTK_WINDOW (window),
+ gtk_ui_manager_get_accel_group (priv->ui_manager));
+ gtk_ui_manager_add_ui_from_string (priv->ui_manager, YELP_UI, -1, NULL);
+ gtk_box_pack_start (GTK_BOX (priv->vbox),
+ gtk_ui_manager_get_widget (priv->ui_manager, "/ui/menubar"),
+ FALSE, FALSE, 0);
+
+ priv->bookmarks_merge_id = gtk_ui_manager_new_merge_id (priv->ui_manager);
+ g_signal_connect (priv->application, "bookmarks-changed", G_CALLBACK (app_bookmarks_changed), window);
+
+ priv->hbox = gtk_hbox_new (FALSE, 0);
+ g_object_set (priv->hbox, "border-width", 2, NULL);
+ gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, FALSE, FALSE, 0);
+
+ action = gtk_action_group_get_action (view_actions, "YelpViewGoBack");
+ button = gtk_action_create_tool_item (action);
+ gtk_box_pack_start (GTK_BOX (priv->hbox),
+ button,
+ FALSE, FALSE, 0);
+ action = gtk_action_group_get_action (view_actions, "YelpViewGoForward");
+ button = gtk_action_create_tool_item (action);
+ gtk_box_pack_start (GTK_BOX (priv->hbox),
+ button,
+ FALSE, FALSE, 0);
+
+ priv->history = gtk_list_store_new (8,
+ G_TYPE_STRING, /* title */
+ G_TYPE_STRING, /* desc */
+ G_TYPE_STRING, /* icon */
+ G_TYPE_STRING, /* uri */
+ G_TYPE_STRING, /* doc */
+ G_TYPE_STRING, /* page */
+ G_TYPE_INT, /* flags */
+ G_TYPE_STRING /* search terms */
+ );
+ gtk_list_store_append (priv->history, &iter);
+ gtk_list_store_set (priv->history, &iter,
+ HISTORY_COL_FLAGS, YELP_LOCATION_ENTRY_IS_SEPARATOR,
+ -1);
+ gtk_list_store_append (priv->history, &iter);
+ gtk_list_store_set (priv->history, &iter,
+ HISTORY_COL_ICON, "system-search",
+ HISTORY_COL_TITLE, _("Search..."),
+ HISTORY_COL_FLAGS, YELP_LOCATION_ENTRY_IS_SEARCH,
+ -1);
+
+ priv->entry = (YelpLocationEntry *)
+ yelp_location_entry_new_with_model (GTK_TREE_MODEL (priv->history),
+ HISTORY_COL_TITLE,
+ HISTORY_COL_DESC,
+ HISTORY_COL_ICON,
+ HISTORY_COL_FLAGS);
+ g_signal_connect (gtk_bin_get_child (GTK_BIN (priv->entry)), "focus-in-event",
+ G_CALLBACK (entry_focus_in), window);
+ g_signal_connect (priv->entry, "focus-out-event",
+ G_CALLBACK (entry_focus_out), window);
+
+ g_signal_connect (priv->entry, "completion-selected",
+ G_CALLBACK (entry_completion_selected), window);
+ g_signal_connect (priv->entry, "bookmark-clicked",
+ G_CALLBACK (entry_bookmark_clicked), window);
+
+ priv->entry_location_selected = g_signal_connect (priv->entry, "location-selected",
+ G_CALLBACK (entry_location_selected), window);
+ priv->align_location = g_object_ref_sink (gtk_alignment_new (0.0, 0.5, 1.0, 0.0));
+ gtk_box_pack_start (GTK_BOX (priv->hbox),
+ GTK_WIDGET (priv->align_location),
+ TRUE, TRUE, 0);
+ gtk_container_add (GTK_CONTAINER (priv->align_location), GTK_WIDGET (priv->entry));
+
+ priv->hidden_entry = gtk_entry_new ();
+ priv->align_hidden = g_object_ref_sink (gtk_alignment_new (0.0, 0.5, 1.0, 0.0));
+ gtk_container_add (GTK_CONTAINER (priv->align_hidden), GTK_WIDGET (priv->hidden_entry));
+
+ g_signal_connect (priv->hidden_entry, "activate",
+ G_CALLBACK (hidden_entry_activate), window);
+ g_signal_connect_swapped (priv->hidden_entry, "focus-out-event",
+ G_CALLBACK (hidden_entry_hide), window);
+ g_signal_connect (priv->hidden_entry, "key-press-event",
+ G_CALLBACK (hidden_key_press), window);
+
+ scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll),
+ GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (priv->vbox), scroll, TRUE, TRUE, 0);
+
+ priv->find_bar = g_object_ref_sink (gtk_hbox_new (FALSE, 6));
+ g_object_set (priv->find_bar, "border-width", 2, NULL);
+
+ priv->find_entry = gtk_entry_new ();
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->find_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "edit-find");
+ g_signal_connect (priv->find_entry, "changed",
+ G_CALLBACK (find_entry_changed), window);
+ g_signal_connect (priv->find_entry, "key-press-event",
+ G_CALLBACK (find_entry_key_press), window);
+ g_signal_connect (priv->find_entry, "focus-out-event",
+ G_CALLBACK (find_entry_focus_out), window);
+ g_object_set (priv->find_entry, "width-request", 300, NULL);
+ gtk_box_pack_start (GTK_BOX (priv->find_bar), priv->find_entry, FALSE, FALSE, 0);
+
+ priv->find_label = gtk_label_new ("");
+ g_object_set (priv->find_label, "xalign", 0.0, NULL);
+ gtk_box_pack_start (GTK_BOX (priv->find_bar), priv->find_label, FALSE, FALSE, 0);
+
+ g_signal_connect (priv->view, "external-uri", G_CALLBACK (view_external_uri), window);
+ g_signal_connect (priv->view, "new-view-requested", G_CALLBACK (view_new_window), window);
+ g_signal_connect (priv->view, "loaded", G_CALLBACK (view_loaded), window);
+ g_signal_connect (priv->view, "notify::yelp-uri", G_CALLBACK (view_uri_selected), window);
+ g_signal_connect_swapped (priv->view, "notify::page-id",
+ G_CALLBACK (window_set_bookmark_action), window);
+ g_signal_connect (priv->view, "notify::root-title", G_CALLBACK (view_root_title), window);
+ g_signal_connect (priv->view, "notify::page-title", G_CALLBACK (view_page_title), window);
+ g_signal_connect (priv->view, "notify::page-desc", G_CALLBACK (view_page_desc), window);
+ g_signal_connect (priv->view, "notify::page-icon", G_CALLBACK (view_page_icon), window);
+ gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (priv->view));
+ gtk_widget_grab_focus (GTK_WIDGET (priv->view));
+
+ gtk_drag_dest_set (GTK_WIDGET (window),
+ GTK_DEST_DEFAULT_ALL,
+ NULL, 0,
+ GDK_ACTION_COPY);
+ gtk_drag_dest_add_uri_targets (GTK_WIDGET (window));
+ g_signal_connect (window, "drag-data-received",
+ G_CALLBACK (window_drag_received), NULL);
+}
/******************************************************************************/
@@ -464,12 +613,23 @@ yelp_window_load_uri (YelpWindow *window,
yelp_view_load_uri (priv->view, uri);
}
-GtkActionGroup *
-yelp_window_get_action_group (YelpWindow *window)
+YelpUri *
+yelp_window_get_uri (YelpWindow *window)
{
+ YelpUri *uri;
YelpWindowPrivate *priv = GET_PRIV (window);
+ g_object_get (G_OBJECT (priv->view), "yelp-uri", &uri, NULL);
+ return uri;
+}
- return priv->action_group;
+void
+yelp_window_get_geometry (YelpWindow *window,
+ gint *width,
+ gint *height)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ *width = priv->width;
+ *height = priv->height;
}
/******************************************************************************/
@@ -477,15 +637,64 @@ yelp_window_get_action_group (YelpWindow *window)
static void
window_new (GtkAction *action, YelpWindow *window)
{
+ YelpUri *yuri;
gchar *uri = NULL;
YelpWindowPrivate *priv = GET_PRIV (window);
- if (priv->back_list && priv->back_list->data)
- uri = yelp_uri_get_document_uri (((YelpBackEntry *) priv->back_list->data)->uri);
+ g_object_get (priv->view, "yelp-uri", &yuri, NULL);
+ uri = yelp_uri_get_document_uri (yuri);
yelp_application_new_window (priv->application, uri);
g_free (uri);
+ g_object_unref (yuri);
+}
+
+static void
+window_drag_received (YelpWindow *window,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ gpointer userdata)
+{
+ gchar **uris = gtk_selection_data_get_uris (data);
+ if (uris && uris[0]) {
+ YelpUri *uri = yelp_uri_new (uris[0]);
+ yelp_window_load_uri (window, uri);
+ g_object_unref (uri);
+ g_strfreev (uris);
+ gtk_drag_finish (context, TRUE, FALSE, time);
+ }
+ gtk_drag_finish (context, FALSE, FALSE, time);
+}
+
+static gboolean
+window_configure_event (YelpWindow *window,
+ GdkEventConfigure *event,
+ gpointer user_data)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ priv->width = event->width;
+ priv->height = event->height;
+ if (priv->resize_signal > 0)
+ g_source_remove (priv->resize_signal);
+ priv->resize_signal = g_timeout_add (200,
+ (GSourceFunc) window_resize_signal,
+ window);
+ g_object_set (priv->find_entry, "width-request", 2 * priv->width / 3, NULL);
+ return FALSE;
+}
+
+static gboolean
+window_resize_signal (YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ g_signal_emit (window, signals[RESIZE_EVENT], 0);
+ priv->resize_signal = 0;
+ return FALSE;
}
static void
@@ -497,10 +706,285 @@ window_close (GtkAction *action, YelpWindow *window)
}
static void
+window_add_bookmark (GtkAction *action,
+ YelpWindow *window)
+{
+ YelpUri *uri;
+ gchar *doc_uri, *page_id, *icon, *title;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ g_object_get (priv->view,
+ "yelp-uri", &uri,
+ "page-id", &page_id,
+ "page-icon", &icon,
+ "page-title", &title,
+ NULL);
+ doc_uri = yelp_uri_get_document_uri (uri);
+ yelp_application_add_bookmark (priv->application, doc_uri, page_id, icon, title);
+ g_free (doc_uri);
+ g_free (page_id);
+ g_free (icon);
+ g_free (title);
+ g_object_unref (uri);
+}
+
+static void
+window_load_bookmark (GtkAction *action,
+ YelpWindow *window)
+{
+ YelpUri *base, *uri;
+ gchar *xref;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ /* Bookmark action names are prefixed with 'LoadBookmark-' */
+ xref = g_strconcat ("xref:", gtk_action_get_name (action) + 13, NULL);
+ g_object_get (priv->view, "yelp-uri", &base, NULL);
+ uri = yelp_uri_new_relative (base, xref);
+
+ yelp_view_load_uri (priv->view, uri);
+
+ g_object_unref (base);
+ g_object_unref (uri);
+ g_free (xref);
+}
+
+static void
+app_bookmarks_changed (YelpApplication *app,
+ const gchar *doc_uri,
+ YelpWindow *window)
+{
+ YelpUri *uri;
+ gchar *this_doc_uri;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ g_object_get (priv->view, "yelp-uri", &uri, NULL);
+ this_doc_uri = yelp_uri_get_document_uri (uri);
+
+ if (g_str_equal (this_doc_uri, doc_uri))
+ window_set_bookmarks (window, doc_uri);
+
+ g_free (this_doc_uri);
+ g_object_unref (uri);
+}
+
+typedef struct _YelpMenuEntry YelpMenuEntry;
+struct _YelpMenuEntry {
+ gchar *page_id;
+ gchar *icon;
+ gchar *title;
+};
+
+static gint
+entry_compare (YelpMenuEntry *a, YelpMenuEntry *b)
+{
+ gint ret = yelp_settings_cmp_icons (a->icon, b->icon);
+ if (ret != 0)
+ return ret;
+
+ if (a->title && b->title)
+ return g_utf8_collate (a->title, b->title);
+ else if (b->title == NULL)
+ return -1;
+ else if (a->title == NULL)
+ return 1;
+
+ return 0;
+}
+
+static void
+window_set_bookmarks (YelpWindow *window,
+ const gchar *doc_uri)
+{
+ GVariant *value;
+ GVariantIter *iter;
+ gchar *page_id, *icon, *title;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ GSList *entries = NULL;
+
+ gtk_ui_manager_remove_ui (priv->ui_manager, priv->bookmarks_merge_id);
+
+ value = yelp_application_get_bookmarks (priv->application, doc_uri);
+ g_variant_get (value, "a(sss)", &iter);
+ while (g_variant_iter_loop (iter, "(&s&s&s)", &page_id, &icon, &title)) {
+ YelpMenuEntry *entry = g_new0 (YelpMenuEntry, 1);
+ entry->page_id = page_id;
+ entry->icon = icon;
+ entry->title = title;
+ entries = g_slist_insert_sorted (entries, entry, (GCompareFunc) entry_compare);
+ }
+ for ( ; entries != NULL; entries = g_slist_delete_link (entries, entries)) {
+ GSList *cur;
+ GtkAction *bookmark;
+ YelpMenuEntry *entry = (YelpMenuEntry *) entries->data;
+ gchar *action_id = g_strconcat ("LoadBookmark-", entry->page_id, NULL);
+
+ bookmark = gtk_action_group_get_action (priv->bookmark_actions, action_id);
+ if (bookmark == NULL) {
+ bookmark = gtk_action_new (action_id, entry->title, NULL, NULL);
+ g_signal_connect (bookmark, "activate",
+ G_CALLBACK (window_load_bookmark), window);
+ gtk_action_set_icon_name (bookmark, entry->icon);
+ gtk_action_group_add_action (priv->bookmark_actions, bookmark);
+ }
+ gtk_ui_manager_add_ui (priv->ui_manager,
+ priv->bookmarks_merge_id,
+ "ui/menubar/BookmarksMenu/Bookmarks",
+ action_id, action_id,
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
+ gtk_ui_manager_ensure_update (priv->ui_manager);
+ for (cur = gtk_action_get_proxies (bookmark); cur != NULL; cur = cur->next) {
+ if (GTK_IS_IMAGE_MENU_ITEM (cur->data))
+ g_object_set (cur->data, "always-show-image", TRUE, NULL);
+ }
+ g_free (action_id);
+ g_free (entry);
+ }
+
+ window_set_bookmark_icons (window);
+
+ g_variant_iter_free (iter);
+ g_variant_unref (value);
+}
+
+static void
+window_set_bookmark_action (YelpWindow *window)
+{
+ YelpUri *uri;
+ gchar *doc_uri, *page_id;
+ gchar *curpage;
+ GVariant *value;
+ GVariantIter *viter;
+ GtkAction *action;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ action = gtk_action_group_get_action (priv->action_group, "AddBookmark");
+
+ g_object_get (priv->view,
+ "yelp-uri", &uri,
+ "page-id", &page_id,
+ NULL);
+ if (page_id == NULL) {
+ gtk_action_set_sensitive (action, FALSE);
+ if (uri)
+ g_object_unref (uri);
+ return;
+ }
+ gtk_action_set_sensitive (action, TRUE);
+
+ doc_uri = yelp_uri_get_document_uri (uri);
+ value = yelp_application_get_bookmarks (priv->application, doc_uri);
+ g_variant_get (value, "a(sss)", &viter);
+ while (g_variant_iter_loop (viter, "(&s&s&s)", &curpage, NULL, NULL)) {
+ if (g_str_equal (page_id, curpage)) {
+ gtk_action_set_sensitive (action, FALSE);
+ break;
+ }
+ }
+ g_variant_iter_free (viter);
+ g_variant_unref (value);
+
+ g_free (page_id);
+ g_free (doc_uri);
+ g_object_unref (uri);
+}
+
+static void
+window_set_bookmark_icons (YelpWindow *window)
+{
+ YelpUri *uri;
+ gchar *doc_uri;
+ GVariant *value;
+ GVariantIter *viter;
+ gboolean cont;
+ GtkTreeIter iter;
+ gchar *page_id;
+ GHashTable *bookmarks;
+ GtkTreeModel *completion;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ g_object_get (priv->view, "yelp-uri", &uri, NULL);
+ doc_uri = yelp_uri_get_document_uri (uri);
+
+ bookmarks = g_hash_table_new (g_str_hash, g_str_equal);
+ value = yelp_application_get_bookmarks (priv->application, doc_uri);
+ g_variant_get (value, "a(sss)", &viter);
+ while (g_variant_iter_loop (viter, "(&s&s&s)", &page_id, NULL, NULL))
+ g_hash_table_insert (bookmarks, page_id, page_id);
+ g_variant_iter_free (viter);
+ g_variant_unref (value);
+
+ cont = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &iter);
+ while (cont) {
+ gchar *iter_doc, *iter_page;
+ gint iter_flags;
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->history), &iter,
+ HISTORY_COL_DOC, &iter_doc,
+ HISTORY_COL_PAGE, &iter_page,
+ HISTORY_COL_FLAGS, &iter_flags,
+ -1);
+ iter_flags &= ~YELP_LOCATION_ENTRY_CAN_BOOKMARK;
+ iter_flags &= ~YELP_LOCATION_ENTRY_IS_BOOKMARKED;
+
+ if (iter_flags & (YELP_LOCATION_ENTRY_IS_SEPARATOR | YELP_LOCATION_ENTRY_IS_SEARCH)) {
+ }
+ else if (iter_doc && g_str_equal (iter_doc, doc_uri)) {
+ if (iter_page && g_hash_table_lookup (bookmarks, iter_page))
+ iter_flags |= YELP_LOCATION_ENTRY_IS_BOOKMARKED;
+ else if (iter_page)
+ iter_flags |= YELP_LOCATION_ENTRY_CAN_BOOKMARK;
+ }
+
+ g_free (iter_doc);
+ g_free (iter_page);
+ gtk_list_store_set (priv->history, &iter, HISTORY_COL_FLAGS, iter_flags, -1);
+ cont = gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->history), &iter);
+ }
+
+ completion = (GtkTreeModel *) g_hash_table_lookup (completions, doc_uri);
+ if (completion) {
+ gchar *page_id;
+ gint flags;
+ completion = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (completion));
+ cont = gtk_tree_model_get_iter_first (completion, &iter);
+ while (cont) {
+ gtk_tree_model_get (completion, &iter,
+ COMPLETION_COL_PAGE, &page_id,
+ COMPLETION_COL_FLAGS, &flags,
+ -1);
+ if (page_id && g_hash_table_lookup (bookmarks, page_id)) {
+ flags |= YELP_LOCATION_ENTRY_IS_BOOKMARKED;
+ }
+ else {
+ flags &= ~YELP_LOCATION_ENTRY_IS_BOOKMARKED;
+ }
+ gtk_list_store_set (GTK_LIST_STORE (completion), &iter,
+ COMPLETION_COL_FLAGS, flags,
+ -1);
+ cont = gtk_tree_model_iter_next (completion, &iter);
+ }
+ }
+
+ g_hash_table_destroy (bookmarks);
+ g_free (doc_uri);
+ g_object_unref (uri);
+}
+
+
+static void
+window_start_search (GtkAction *action, YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ yelp_location_entry_start_search (priv->entry);
+}
+
+static void
window_open_location (GtkAction *action, YelpWindow *window)
{
+ YelpUri *yuri = NULL;
gchar *uri = NULL;
- const GdkColor yellow;
+ GdkColor yellow;
gchar *color;
YelpWindowPrivate *priv = GET_PRIV (window);
@@ -523,8 +1007,11 @@ window_open_location (GtkAction *action, YelpWindow *window)
}
g_free (color);
- if (priv->back_cur && priv->back_cur->data)
- uri = yelp_uri_get_canonical_uri (((YelpBackEntry *) priv->back_list->data)->uri);
+ g_object_get (priv->view, "yelp-uri", &yuri, NULL);
+ if (yuri) {
+ uri = yelp_uri_get_canonical_uri (yuri);
+ g_object_unref (yuri);
+ }
if (uri) {
gchar *c;
gtk_entry_set_text (GTK_ENTRY (priv->hidden_entry), uri);
@@ -537,60 +1024,193 @@ window_open_location (GtkAction *action, YelpWindow *window)
}
}
-static void
-window_font_adjustment (GtkAction *action,
- YelpWindow *window)
-{
+static gboolean
+find_animate_open (YelpWindow *window) {
YelpWindowPrivate *priv = GET_PRIV (window);
- yelp_application_adjust_font (priv->application,
- g_str_equal (gtk_action_get_name (action), "LargerText") ? 1 : -1);
+ priv->find_cur_height += 2;
+ if (priv->find_cur_height >= priv->find_bar_height) {
+ priv->find_cur_height = priv->find_bar_height;
+ g_object_set (priv->find_bar, "height-request", -1, NULL);
+ g_object_set (priv->find_entry, "height-request", -1, NULL);
+ priv->find_animate = 0;
+ gtk_editable_select_region (GTK_EDITABLE (priv->find_entry), 0, -1);
+ return FALSE;
+ }
+ else {
+ if (priv->find_cur_height >= 12)
+ find_entry_changed (GTK_ENTRY (priv->find_entry), window);
+ g_object_set (priv->find_bar, "height-request", priv->find_cur_height, NULL);
+ g_object_set (priv->find_entry, "height-request",
+ MIN(priv->find_cur_height, priv->find_entry_height),
+ NULL);
+ return TRUE;
+ }
}
-static void
-window_show_text_cursor (GtkToggleAction *action,
- YelpWindow *window)
-{
+static gboolean
+find_animate_close (YelpWindow *window) {
YelpWindowPrivate *priv = GET_PRIV (window);
- yelp_application_set_show_text_cursor (priv->application,
- gtk_toggle_action_get_active (action));
+ priv->find_cur_height -= 2;
+ if (priv->find_cur_height <= 0) {
+ priv->find_cur_height = 0;
+ g_object_set (priv->find_bar, "height-request", -1, NULL);
+ g_object_set (priv->find_entry, "height-request", -1, NULL);
+ gtk_container_remove (GTK_CONTAINER (priv->vbox), priv->find_bar);
+ priv->find_animate = 0;
+ return FALSE;
+ }
+ else {
+ if (priv->find_cur_height < 12)
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->find_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ NULL);
+ g_object_set (priv->find_bar, "height-request", priv->find_cur_height, NULL);
+ g_object_set (priv->find_entry, "height-request",
+ MIN(priv->find_cur_height, priv->find_entry_height),
+ NULL);
+ return TRUE;
+ }
}
static void
-window_go_back (GtkAction *action,
- YelpWindow *window)
+window_find_in_page (GtkAction *action,
+ YelpWindow *window)
{
+ GtkRequisition req;
YelpWindowPrivate *priv = GET_PRIV (window);
- if (priv->back_cur == NULL || priv->back_cur->next == NULL)
+ if (priv->find_animate != 0)
return;
- priv->back_cur = priv->back_cur->next;
-
- if (priv->back_cur == NULL || priv->back_cur->data == NULL)
+ if (gtk_widget_get_parent (priv->find_bar) != NULL) {
+ gtk_widget_grab_focus (priv->find_entry);
return;
+ }
+
+ g_object_set (priv->find_entry, "width-request", 2 * priv->width / 3, NULL);
+
+ gtk_box_pack_end (GTK_BOX (priv->vbox), priv->find_bar, FALSE, FALSE, 0);
+ g_object_set (priv->find_bar, "height-request", -1, NULL);
+ g_object_set (priv->find_entry, "height-request", -1, NULL);
+ gtk_widget_show_all (priv->find_bar);
+ gtk_widget_grab_focus (priv->find_entry);
- priv->back_load = TRUE;
- yelp_window_load_uri (window, ((YelpBackEntry *) priv->back_cur->data)->uri);
+ gtk_widget_size_request (priv->find_bar, &req);
+ priv->find_bar_height = req.height;
+ gtk_widget_size_request (priv->find_entry, &req);
+ priv->find_entry_height = req.height;
+
+ priv->find_cur_height = 2;
+
+ g_object_set (priv->find_bar, "height-request", 2, NULL);
+ g_object_set (priv->find_entry, "height-request", 2, NULL);
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->find_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ NULL);
+ priv->find_animate = g_timeout_add (2, (GSourceFunc) find_animate_open, window);
+}
+
+static gboolean
+find_entry_key_press (GtkEntry *entry,
+ GdkEventKey *event,
+ YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ if (priv->find_animate != 0)
+ return TRUE;
+
+ if (event->keyval == GDK_Escape) {
+ gtk_widget_grab_focus (GTK_WIDGET (priv->view));
+ return TRUE;
+ }
+
+ if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) {
+ gchar *text = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
+ webkit_web_view_search_text (WEBKIT_WEB_VIEW (priv->view),
+ text, FALSE, TRUE, TRUE);
+ g_free (text);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+find_entry_focus_out (GtkEntry *entry,
+ GdkEventFocus *event,
+ YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ webkit_web_view_unmark_text_matches (WEBKIT_WEB_VIEW (priv->view));
+ webkit_web_view_set_highlight_text_matches (WEBKIT_WEB_VIEW (priv->view), FALSE);
+ priv->find_cur_height = priv->find_bar_height;
+ priv->find_animate = g_timeout_add (2, (GSourceFunc) find_animate_close, window);
+ return FALSE;
}
static void
-window_go_forward (GtkAction *action,
- YelpWindow *window)
+find_entry_changed (GtkEntry *entry,
+ YelpWindow *window)
{
+ gchar *text;
+ gint count;
YelpWindowPrivate *priv = GET_PRIV (window);
- if (priv->back_cur == NULL || priv->back_cur->prev == NULL)
- return;
+ webkit_web_view_unmark_text_matches (WEBKIT_WEB_VIEW (priv->view));
- priv->back_cur = priv->back_cur->prev;
+ text = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
- if (priv->back_cur == NULL || priv->back_cur->data == NULL)
+ if (text[0] == '\0') {
+ gtk_widget_modify_base (priv->find_entry, GTK_STATE_NORMAL, NULL);
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "edit-find");
+ gtk_label_set_text (GTK_LABEL (priv->find_label), "");
return;
+ }
- priv->back_load = TRUE;
- yelp_window_load_uri (window, ((YelpBackEntry *) priv->back_cur->data)->uri);
+ count = webkit_web_view_mark_text_matches (WEBKIT_WEB_VIEW (priv->view),
+ text, FALSE, 0);
+ if (count > 0) {
+ gchar *label = g_strdup_printf (ngettext ("%i match", "%i matches", count), count);
+ gtk_widget_modify_base (priv->find_entry, GTK_STATE_NORMAL, NULL);
+ webkit_web_view_set_highlight_text_matches (WEBKIT_WEB_VIEW (priv->view), TRUE);
+ webkit_web_view_search_text (WEBKIT_WEB_VIEW (priv->view),
+ text, FALSE, TRUE, TRUE);
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "edit-find");
+ gtk_label_set_text (GTK_LABEL (priv->find_label), label);
+ g_free (label);
+ }
+ else {
+ gchar *color;
+ GdkColor gdkcolor;
+
+ color = yelp_settings_get_color (yelp_settings_get_default (),
+ YELP_SETTINGS_COLOR_RED_BASE);
+ if (gdk_color_parse (color, &gdkcolor))
+ gtk_widget_modify_base (priv->find_entry, GTK_STATE_NORMAL, &gdkcolor);
+ g_free (color);
+
+ webkit_web_view_set_highlight_text_matches (WEBKIT_WEB_VIEW (priv->view), FALSE);
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "dialog-warning");
+ gtk_label_set_text (GTK_LABEL (priv->find_label), _("No matches"));
+ }
+
+ g_free (text);
+}
+
+static void
+entry_bookmark_clicked (YelpLocationEntry *entry,
+ YelpWindow *window)
+{
+ window_add_bookmark (NULL, window);
}
static void
@@ -603,12 +1223,44 @@ entry_location_selected (YelpLocationEntry *entry,
gtk_combo_box_get_active_iter (GTK_COMBO_BOX (priv->entry), &iter);
gtk_tree_model_get (GTK_TREE_MODEL (priv->history), &iter,
- COL_URI, &uri,
+ HISTORY_COL_URI, &uri,
-1);
yelp_view_load (priv->view, uri);
g_free (uri);
}
+static gint
+entry_completion_sort (GtkTreeModel *model,
+ GtkTreeIter *iter1,
+ GtkTreeIter *iter2,
+ gpointer user_data)
+{
+ gint ret = 0;
+ gchar *key1, *key2;
+
+ gtk_tree_model_get (model, iter1, COMPLETION_COL_ICON, &key1, -1);
+ gtk_tree_model_get (model, iter2, COMPLETION_COL_ICON, &key2, -1);
+ ret = yelp_settings_cmp_icons (key1, key2);
+ g_free (key1);
+ g_free (key2);
+
+ if (ret)
+ return ret;
+
+ gtk_tree_model_get (model, iter1, COMPLETION_COL_TITLE, &key1, -1);
+ gtk_tree_model_get (model, iter2, COMPLETION_COL_TITLE, &key2, -1);
+ if (key1 && key2)
+ ret = g_utf8_collate (key1, key2);
+ else if (key2 == NULL)
+ return -1;
+ else if (key1 == NULL)
+ return 1;
+ g_free (key1);
+ g_free (key2);
+
+ return ret;
+}
+
static void
entry_completion_selected (YelpLocationEntry *entry,
GtkTreeModel *model,
@@ -619,8 +1271,8 @@ entry_completion_selected (YelpLocationEntry *entry,
gchar *page, *xref;
YelpWindowPrivate *priv = GET_PRIV (window);
- base = ((YelpBackEntry *) priv->back_cur->data)->uri;
- gtk_tree_model_get (model, iter, COL_URI, &page, -1);
+ g_object_get (priv->view, "yelp-uri", &base, NULL);
+ gtk_tree_model_get (model, iter, COMPLETION_COL_PAGE, &page, -1);
xref = g_strconcat ("xref:", page, NULL);
uri = yelp_uri_new_relative (base, xref);
@@ -630,11 +1282,60 @@ entry_completion_selected (YelpLocationEntry *entry,
g_free (page);
g_free (xref);
g_object_unref (uri);
+ g_object_unref (base);
gtk_widget_grab_focus (GTK_WIDGET (priv->view));
}
static gboolean
+entry_color_animate (YelpWindow *window) {
+ gchar *color;
+ GdkColor yellow, base;
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ color = yelp_settings_get_color (yelp_settings_get_default (),
+ YELP_SETTINGS_COLOR_YELLOW_BASE);
+ gdk_color_parse (color, &yellow);
+ g_free (color);
+
+ color = yelp_settings_get_color (yelp_settings_get_default (),
+ YELP_SETTINGS_COLOR_BASE);
+ gdk_color_parse (color, &base);
+ g_free (color);
+
+ yellow.red = priv->entry_color_step * yellow.red + (1.0 - priv->entry_color_step) * base.red;
+ yellow.green = priv->entry_color_step * yellow.green + (1.0 - priv->entry_color_step) * base.green;
+ yellow.blue = priv->entry_color_step * yellow.blue + (1.0 - priv->entry_color_step) * base.blue;
+
+ gtk_widget_modify_base (gtk_bin_get_child (GTK_BIN (priv->entry)), GTK_STATE_NORMAL, &yellow);
+
+ priv->entry_color_step -= 0.05;
+
+ if (priv->entry_color_step < 0.0) {
+ priv->entry_color_animate = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+entry_focus_in (GtkEntry *entry,
+ GdkEventFocus *event,
+ YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+
+ if (priv->entry_color_animate != 0)
+ return FALSE;
+
+ priv->entry_color_step = 1.0;
+ priv->entry_color_animate = g_timeout_add (40, (GSourceFunc) entry_color_animate, window);
+
+ return FALSE;
+}
+
+static gboolean
entry_focus_out (YelpLocationEntry *entry,
GdkEventFocus *event,
YelpWindow *window)
@@ -662,36 +1363,106 @@ view_external_uri (YelpView *view,
}
static void
+view_new_window (YelpView *view,
+ YelpUri *uri,
+ YelpWindow *window)
+{
+ YelpWindowPrivate *priv = GET_PRIV (window);
+ yelp_application_new_window_uri (priv->application, uri);
+}
+
+static void
view_loaded (YelpView *view,
YelpWindow *window)
{
gchar **ids;
gint i;
+ GtkTreeIter iter;
+ gint flags;
+ YelpUri *uri;
+ gchar *doc_uri, *page_id, *icon, *title;
+ GtkTreeModel *completion;
YelpWindowPrivate *priv = GET_PRIV (window);
YelpDocument *document = yelp_view_get_document (view);
- ids = yelp_document_list_page_ids (document);
-
- gtk_list_store_clear (priv->completion);
- for (i = 0; ids[i]; i++) {
- GtkTreeIter iter;
- gchar *title, *desc, *icon;
- gtk_list_store_insert (GTK_LIST_STORE (priv->completion), &iter, 0);
- title = yelp_document_get_page_title (document, ids[i]);
- desc = yelp_document_get_page_desc (document, ids[i]);
- icon = yelp_document_get_page_icon (document, ids[i]);
- gtk_list_store_set (priv->completion, &iter,
- COL_TITLE, title,
- COL_DESC, desc,
- COL_ICON, icon,
- COL_URI, ids[i],
- -1);
- g_free (icon);
- g_free (desc);
- g_free (title);
+
+ gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &iter);
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->history), &iter,
+ HISTORY_COL_FLAGS, &flags,
+ -1);
+ if (flags & YELP_LOCATION_ENTRY_IS_LOADING) {
+ flags = flags & ~YELP_LOCATION_ENTRY_IS_LOADING;
+ gtk_list_store_set (priv->history, &iter, HISTORY_COL_FLAGS, flags, -1);
}
- g_strfreev (ids);
- g_object_unref (document);
+ g_object_get (view,
+ "yelp-uri", &uri,
+ "page-id", &page_id,
+ "page-icon", &icon,
+ "page-title", &title,
+ NULL);
+ doc_uri = yelp_uri_get_document_uri (uri);
+ gtk_list_store_set (priv->history, &iter,
+ HISTORY_COL_DOC, doc_uri,
+ HISTORY_COL_PAGE, page_id,
+ -1);
+ yelp_application_update_bookmarks (priv->application,
+ doc_uri,
+ page_id,
+ icon,
+ title);
+ g_free (page_id);
+ g_free (icon);
+ g_free (title);
+
+ completion = (GtkTreeModel *) g_hash_table_lookup (completions, doc_uri);
+ if (completion == NULL) {
+ GtkListStore *base = gtk_list_store_new (5,
+ G_TYPE_STRING, /* title */
+ G_TYPE_STRING, /* desc */
+ G_TYPE_STRING, /* icon */
+ G_TYPE_STRING, /* uri */
+ G_TYPE_INT /* flags */
+ );
+ completion = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (base));
+ gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (completion),
+ entry_completion_sort,
+ NULL, NULL);
+ g_hash_table_insert (completions, doc_uri, completion);
+ ids = yelp_document_list_page_ids (document);
+ for (i = 0; ids[i]; i++) {
+ GtkTreeIter iter;
+ gchar *title, *desc, *icon;
+ gtk_list_store_insert (GTK_LIST_STORE (base), &iter, 0);
+ title = yelp_document_get_page_title (document, ids[i]);
+ desc = yelp_document_get_page_desc (document, ids[i]);
+ icon = yelp_document_get_page_icon (document, ids[i]);
+ gtk_list_store_set (base, &iter,
+ COMPLETION_COL_TITLE, title,
+ COMPLETION_COL_DESC, desc,
+ COMPLETION_COL_ICON, icon,
+ COMPLETION_COL_PAGE, ids[i],
+ -1);
+ g_free (icon);
+ g_free (desc);
+ g_free (title);
+ }
+ g_object_unref (base);
+ g_strfreev (ids);
+ }
+ else {
+ g_free (doc_uri);
+ }
+
+ yelp_location_entry_set_completion_model (YELP_LOCATION_ENTRY (priv->entry),
+ GTK_TREE_MODEL (completion),
+ COMPLETION_COL_TITLE,
+ COMPLETION_COL_DESC,
+ COMPLETION_COL_ICON,
+ COMPLETION_COL_FLAGS);
+
+ window_set_bookmark_icons (window);
+
+ g_object_unref (uri);
}
static void
@@ -703,71 +1474,21 @@ view_uri_selected (YelpView *view,
gchar *iter_uri;
gboolean cont;
YelpUri *uri;
- gchar *struri;
- YelpBackEntry *back;
- GtkAction *action;
+ gchar *struri, *doc_uri;
YelpWindowPrivate *priv = GET_PRIV (window);
g_object_get (G_OBJECT (view), "yelp-uri", &uri, NULL);
if (uri == NULL)
return;
- back = g_new0 (YelpBackEntry, 1);
- back->uri = g_object_ref (uri);
- if (!priv->back_load) {
- while (priv->back_list != priv->back_cur) {
- back_entry_free ((YelpBackEntry *) priv->back_list->data);
- priv->back_list = g_list_delete_link (priv->back_list, priv->back_list);
- }
- priv->back_list = g_list_prepend (priv->back_list, back);
- priv->back_cur = priv->back_list;
- }
- priv->back_load = FALSE;
-
- action = gtk_action_group_get_action (priv->action_group, "GoBack");
- gtk_action_set_sensitive (action, FALSE);
- gtk_widget_set_tooltip_text (priv->back_button, "");
- if (priv->back_cur->next && priv->back_cur->next->data) {
- gchar *tooltip = "";
- YelpBackEntry *back = priv->back_cur->next->data;
-
- gtk_action_set_sensitive (action, TRUE);
- if (back->title && back->desc) {
- gchar *color;
- color = yelp_settings_get_color (yelp_settings_get_default (),
- YELP_SETTINGS_COLOR_TEXT_LIGHT);
- tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>",
- back->title, color, back->desc);
- g_free (color);
- }
- else if (back->title)
- tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>",
- back->title);
- /* Can't seem to use markup on GtkAction tooltip */
- gtk_widget_set_tooltip_markup (priv->back_button, tooltip);
- }
-
- action = gtk_action_group_get_action (priv->action_group, "GoForward");
- gtk_action_set_sensitive (action, FALSE);
- gtk_widget_set_tooltip_text (priv->forward_button, "");
- if (priv->back_cur->prev && priv->back_cur->prev->data) {
- gchar *tooltip = "";
- YelpBackEntry *back = priv->back_cur->prev->data;
-
- gtk_action_set_sensitive (action, TRUE);
- if (back->title && back->desc) {
- gchar *color;
- color = yelp_settings_get_color (yelp_settings_get_default (),
- YELP_SETTINGS_COLOR_TEXT_LIGHT);
- tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>",
- back->title, color, back->desc);
- g_free (color);
- }
- else if (back->title)
- tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>",
- back->title);
- /* Can't seem to use markup on GtkAction tooltip */
- gtk_widget_set_tooltip_markup (priv->forward_button, tooltip);
+ doc_uri = yelp_uri_get_document_uri (uri);
+ if (priv->doc_uri == NULL || !g_str_equal (priv->doc_uri, doc_uri)) {
+ window_set_bookmarks (window, doc_uri);
+ g_free (priv->doc_uri);
+ priv->doc_uri = doc_uri;
+ }
+ else {
+ g_free (doc_uri);
}
struri = yelp_uri_get_canonical_uri (uri);
@@ -775,7 +1496,7 @@ view_uri_selected (YelpView *view,
cont = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &iter);
while (cont) {
gtk_tree_model_get (GTK_TREE_MODEL (priv->history), &iter,
- COL_URI, &iter_uri,
+ HISTORY_COL_URI, &iter_uri,
-1);
if (iter_uri && g_str_equal (struri, iter_uri)) {
g_free (iter_uri);
@@ -796,9 +1517,10 @@ view_uri_selected (YelpView *view,
GtkTreeIter last;
gtk_list_store_prepend (priv->history, &iter);
gtk_list_store_set (priv->history, &iter,
- COL_TITLE, _("Loading"),
- COL_ICON, "help-contents",
- COL_URI, struri,
+ HISTORY_COL_TITLE, _("Loading"),
+ HISTORY_COL_ICON, "help-contents",
+ HISTORY_COL_URI, struri,
+ HISTORY_COL_FLAGS, YELP_LOCATION_ENTRY_IS_LOADING,
-1);
/* Limit to 15 entries. There are two extra for the search entry and
* the separator above it.
@@ -811,6 +1533,7 @@ view_uri_selected (YelpView *view,
gtk_list_store_remove (priv->history, &last);
}
}
+ window_set_bookmark_icons (window);
}
g_signal_handler_block (priv->entry,
priv->entry_location_selected);
@@ -846,7 +1569,6 @@ view_page_title (YelpView *view,
GtkTreeIter first;
gchar *title, *frag;
YelpUri *uri;
- YelpBackEntry *back = NULL;
YelpWindowPrivate *priv = GET_PRIV (window);
g_object_get (view, "page-title", &title, NULL);
@@ -856,32 +1578,19 @@ view_page_title (YelpView *view,
g_object_get (view, "yelp-uri", &uri, NULL);
frag = yelp_uri_get_frag_id (uri);
- if (priv->back_cur)
- back = priv->back_cur->data;
-
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &first);
if (frag) {
gchar *tmp = g_strdup_printf ("%s (#%s)", title, frag);
gtk_list_store_set (priv->history, &first,
- COL_TITLE, tmp,
+ HISTORY_COL_TITLE, tmp,
-1);
- if (back) {
- g_free (back->title);
- back->title = tmp;
- }
- else {
- g_free (tmp);
- }
+ g_free (tmp);
g_free (frag);
}
else {
gtk_list_store_set (priv->history, &first,
- COL_TITLE, title,
+ HISTORY_COL_TITLE, title,
-1);
- if (back) {
- g_free (back->title);
- back->title = g_strdup (title);
- }
}
g_free (title);
@@ -895,25 +1604,16 @@ view_page_desc (YelpView *view,
{
GtkTreeIter first;
gchar *desc;
- YelpBackEntry *back = NULL;
YelpWindowPrivate *priv = GET_PRIV (window);
g_object_get (view, "page-desc", &desc, NULL);
if (desc == NULL)
return;
- if (priv->back_cur)
- back = priv->back_cur->data;
-
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &first);
gtk_list_store_set (priv->history, &first,
- COL_DESC, desc,
+ HISTORY_COL_DESC, desc,
-1);
- if (back) {
- g_free (back->desc);
- back->desc = g_strdup (desc);
- }
-
g_free (desc);
}
@@ -932,7 +1632,7 @@ view_page_icon (YelpView *view,
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->history), &first);
gtk_list_store_set (priv->history, &first,
- COL_ICON, icon,
+ HISTORY_COL_ICON, icon,
-1);
g_free (icon);
}
diff --git a/src/yelp-window.h b/src/yelp-window.h
index 58084dcc..6231e169 100644
--- a/src/yelp-window.h
+++ b/src/yelp-window.h
@@ -46,11 +46,13 @@ struct _YelpWindowClass
GtkWindowClass parent_class;
};
-GType yelp_window_get_type (void);
-YelpWindow * yelp_window_new (YelpApplication *app);
-void yelp_window_load_uri (YelpWindow *window,
- YelpUri *uri);
-
-GtkActionGroup * yelp_window_get_action_group (YelpWindow *window);
+GType yelp_window_get_type (void);
+YelpWindow * yelp_window_new (YelpApplication *app);
+void yelp_window_load_uri (YelpWindow *window,
+ YelpUri *uri);
+YelpUri * yelp_window_get_uri (YelpWindow *window);
+void yelp_window_get_geometry (YelpWindow *window,
+ gint *width,
+ gint *height);
#endif /* __YELP_WINDOW_H__ */
diff --git a/stylesheets/Makefile.am b/stylesheets/Makefile.am
index d8f0b58b..996b0d07 100644
--- a/stylesheets/Makefile.am
+++ b/stylesheets/Makefile.am
@@ -12,4 +12,11 @@ xsl_DATA = \
toc2html.xsl \
yelp-common.xsl
-EXTRA_DIST=$(xsl_DATA) db2html.xsl.in db-title.xsl.in mal2html.xsl.in toc2html.xsl.in yelp-common.xsl.in
+EXTRA_DIST= \
+ $(xsl_DATA) \
+ db2html.xsl.in \
+ db-title.xsl.in \
+ info2html.xsl.in \
+ mal2html.xsl.in \
+ toc2html.xsl.in \
+ yelp-common.xsl.in
diff --git a/stylesheets/info2html.xsl b/stylesheets/info2html.xsl
deleted file mode 100644
index d8340fa8..00000000
--- a/stylesheets/info2html.xsl
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:yelp="http://www.gnome.org/yelp/ns"
- xmlns="http://www.w3.org/1999/xhtml"
- extension-element-prefixes="yelp"
- version="1.0">
-
-<xsl:param name="stylesheet_path" select="''"/>
-
-<xsl:param name="yelp.icon.blockquote"/>
-<xsl:param name="yelp.icon.caution"/>
-<xsl:param name="yelp.icon.important"/>
-<xsl:param name="yelp.icon.note"/>
-<xsl:param name="yelp.icon.programlisting"/>
-<xsl:param name="yelp.icon.tip"/>
-<xsl:param name="yelp.icon.warning"/>
-
-<xsl:param name="theme.color.text"/>
-<xsl:param name="theme.color.background"/>
-<xsl:param name="theme.color.text_light"/>
-<xsl:param name="theme.color.link"/>
-<xsl:param name="theme.color.link_visited"/>
-<xsl:param name="theme.color.gray_background"/>
-<xsl:param name="theme.color.gray_border"/>
-<xsl:param name="theme.color.blue_background"/>
-<xsl:param name="theme.color.blue_border"/>
-<xsl:param name="theme.color.red_background"/>
-<xsl:param name="theme.color.red_border"/>
-<xsl:param name="theme.color.yellow_background"/>
-<xsl:param name="theme.color.yellow_border"/>
-
-<xsl:template match="/Info">
- <xsl:apply-templates select="Section"/>
-</xsl:template>
-
-<xsl:template match="Section">
- <yelp:document href="{@id}">
- <html>
- <head>
- <title>
- <xsl:value-of select="@name"/>
- </title>
- <style type="text/css">
- <xsl:call-template name="html.css"/>
- </style>
- </head>
- <body>
- <pre class="body">
- <xsl:apply-templates select="node()[not(self::Section)]"/>
- </pre>
- </body>
- </html>
- </yelp:document>
- <xsl:apply-templates select="Section"/>
-</xsl:template>
-
-<xsl:template match="para">
- <xsl:value-of select="node()"/>
- <xsl:text>
- </xsl:text>
-</xsl:template>
-
-<xsl:template match="para1">
- <xsl:value-of select="node()"/>
-</xsl:template>
-
-<xsl:template match="spacing">
- <xsl:value-of select="node()"/>
-</xsl:template>
-
-<xsl:template match="a">
- <xsl:element name="a">
- <xsl:attribute name="href"> <xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="node()"/>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="img">
- <xsl:element name="a">
- <xsl:attribute name="href"> <xsl:value-of select="@src"/></xsl:attribute>
- <xsl:element name="img">
- <xsl:attribute name="src"> <xsl:value-of select="@src"/></xsl:attribute>
- </xsl:element>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="menuholder">
- <xsl:apply-templates select="node()[not(self::menuholder)]"/>
-</xsl:template>
-
-<xsl:template match="noteholder">
- <xsl:apply-templates select="node()[not(self::noteholder)]"/>
-</xsl:template>
-
-<xsl:template name="html.css"><xsl:text>
-h1 { font-size: 1.6em; font-weight: bold; }
-h2 { font-size: 1.4em; font-weight: bold; }
-h3 { font-size: 1.2em; font-weight: bold; }
-
-h1, h2, h3, h4, h5, h6, h7 { color: </xsl:text>
-<xsl:value-of select="$theme.color.text"/><xsl:text>; }
-
-body { margin: 0em; padding: 0em; }
-pre[class~="body"] {
-margin-left: 0.8em;
-margin-right: 0.8em;
-margin-bottom: 1.6em;
-}
-
-p, div { margin: 0em; }
-p + *, div + * { margin-top: 1em; }
-
-dl { margin: 0em; }
-dl dd + dt { margin-top: 1em; }
-dl dd {
- margin-top: 0.5em;
- margin-left: 2em;
- margin-right: 1em;
-}
-ol { margin-left: 2em; }
-ul { margin-left: 2em; }
-ul li { margin-right: 1em; }
-img { border: none; }
-</xsl:text></xsl:template>
-
-</xsl:stylesheet>
diff --git a/stylesheets/info2html.xsl.in b/stylesheets/info2html.xsl.in
new file mode 100644
index 00000000..9482aa2c
--- /dev/null
+++ b/stylesheets/info2html.xsl.in
@@ -0,0 +1,167 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:yelp="http://www.gnome.org/yelp/ns"
+ xmlns="http://www.w3.org/1999/xhtml"
+ extension-element-prefixes="yelp"
+ version="1.0">
+
+<xsl:import href="@XSL_GETTEXT@"/>
+<xsl:import href="@XSL_THEME_COLORS@"/>
+<xsl:import href="@XSL_THEME_ICONS@"/>
+<xsl:import href="@XSL_THEME_HTML@"/>
+<xsl:include href="yelp-common.xsl"/>
+
+<xsl:template name="linktrails">
+ <xsl:param name="up" select="@up"/>
+ <xsl:variable name="upnode" select="/Info//Section[@id = $up]"/>
+ <xsl:if test="$upnode/@up">
+ <xsl:call-template name="linktrails">
+ <xsl:with-param name="up" select="$upnode/@up"/>
+ </xsl:call-template>
+ </xsl:if>
+ <a href="xref:{$upnode/@id}">
+ <xsl:value-of select="$upnode/@name"/>
+ </a>
+ <xsl:text>&#x00A0;» </xsl:text>
+</xsl:template>
+
+<xsl:template match="/Info">
+ <xsl:apply-templates select="Section"/>
+</xsl:template>
+
+<xsl:template match="Section">
+ <yelp:document href="{@id}">
+ <html>
+ <head>
+ <title>
+ <xsl:value-of select="@name"/>
+ </title>
+ <style type="text/css">
+ <xsl:call-template name="html.css"/>
+ </style>
+ </head>
+ <body>
+ <div class="head">
+ <xsl:if test="@up">
+ <div class="trails">
+ <div class="trail">
+ <xsl:call-template name="linktrails"/>
+ </div>
+ </div>
+ </xsl:if>
+ </div>
+ <div class="body">
+ <div class="navbar">
+ <xsl:variable name="preceding" select="preceding::Section[1]"/>
+ <xsl:variable name="following" select="(Section[1] | following::Section[1])[1]"/>
+ <xsl:if test="$preceding">
+ <a class="navbar-prev" href="xref:{$preceding/@id}">
+ <xsl:value-of select="$preceding/@name"/>
+ </a>
+ </xsl:if>
+ <xsl:if test="$preceding and $following">
+ <xsl:text>&#x00A0;&#x00A0;|&#x00A0;&#x00A0;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$following">
+ <a class="navbar-next" href="xref:{$following/@id}">
+ <xsl:value-of select="$following/@name"/>
+ </a>
+ </xsl:if>
+ </div>
+ <xsl:apply-templates select="node()[not(self::Section)]"/>
+ </div>
+ <div class="foot"/>
+ </body>
+ </html>
+ </yelp:document>
+ <xsl:apply-templates select="Section"/>
+</xsl:template>
+
+<xsl:template match="para">
+ <xsl:value-of select="node()"/>
+ <xsl:text>
+ </xsl:text>
+</xsl:template>
+
+<xsl:template match="para1">
+ <xsl:value-of select="node()"/>
+</xsl:template>
+
+<xsl:template match="spacing">
+ <xsl:value-of select="node()"/>
+</xsl:template>
+
+<xsl:template match="a">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@href"/>
+ </xsl:attribute>
+ <xsl:value-of select="node()"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="img">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@src"/>
+ </xsl:attribute>
+ <xsl:element name="img">
+ <xsl:attribute name="src"> <xsl:value-of select="@src"/></xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="menuholder">
+ <xsl:apply-templates select="node()[not(self::menuholder)]"/>
+</xsl:template>
+
+<xsl:template match="noteholder">
+ <xsl:apply-templates select="node()[not(self::noteholder)]"/>
+</xsl:template>
+
+<xsl:template name="html.css">
+ <xsl:param name="direction">
+ <xsl:call-template name="l10n.direction"/>
+ </xsl:param>
+ <xsl:param name="left">
+ <xsl:call-template name="l10n.align.start">
+ <xsl:with-param name="direction" select="$direction"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:param name="right">
+ <xsl:call-template name="l10n.align.end">
+ <xsl:with-param name="direction" select="$direction"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:call-template name="theme.html.css">
+ <xsl:with-param name="direction" select="$direction"/>
+ <xsl:with-param name="left" select="$left"/>
+ <xsl:with-param name="right" select="$right"/>
+ </xsl:call-template>
+ <xsl:text>
+div.body { white-space: pre; font-family: monospace; }
+<!-- navbar from mal2html, possibly move to theme-html -->
+div.navbar {
+ margin: 0;
+ float: right;
+ font-family: sans-serif;
+}
+a.navbar-prev::before {
+ content: '</xsl:text><xsl:choose>
+ <xsl:when test="$left = 'left'"><xsl:text>&#x25C0;&#x00A0;&#x00A0;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>&#x25B6;&#x00A0;&#x00A0;</xsl:text></xsl:otherwise>
+ </xsl:choose><xsl:text>';
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+a.navbar-next::after {
+ content: '</xsl:text><xsl:choose>
+ <xsl:when test="$left = 'left'"><xsl:text>&#x00A0;&#x00A0;&#x25B6;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>&#x00A0;&#x00A0;&#x25C0;</xsl:text></xsl:otherwise>
+ </xsl:choose><xsl:text>';
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/yelp-common.xsl.in b/stylesheets/yelp-common.xsl.in
index 8645b602..143c5af4 100644
--- a/stylesheets/yelp-common.xsl.in
+++ b/stylesheets/yelp-common.xsl.in
@@ -18,8 +18,6 @@ body {
padding: 0;
background-color: </xsl:text><xsl:value-of select="$theme.color.background"/><xsl:text>;
max-width: 100%;
- border-top: solid 1px </xsl:text>
- <xsl:value-of select="$theme.color.gray_border"/><xsl:text>;
}
div.head {
max-width: 100%;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 02f1d98a..260955ae 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -6,25 +6,34 @@ YELP_COMMON_CFLAGS = \
-I$(top_srcdir)/libyelp
YELP_COMMON_LDADD = \
$(YELP_LIBS) \
- $(Z_LIBS) \
- $(BZ_LIBS) \
- $(LZMADEC_LIBS) \
$(top_builddir)/libyelp/libyelp.la
check_PROGRAMS = \
- test-io-channel \
test-location-entry \
+ test-magic \
test-settings \
test-transform \
test-uri \
test-view
-test_io_channel_CFLAGS = $(YELP_COMMON_CFLAGS)
-test_io_channel_LDADD = $(YELP_COMMON_LDADD)
+if ENABLE_LZMA
+check_PROGRAMS += test-lzma
+test_lzma_CFLAGS = $(YELP_COMMON_CFLAGS)
+test_lzma_LDADD = $(YELP_COMMON_LDADD)
+endif
+
+if ENABLE_BZ2
+check_PROGRAMS += test-bz2
+test_bz2_CFLAGS = $(YELP_COMMON_CFLAGS)
+test_bz2_LDADD = $(YELP_COMMON_LDADD)
+endif
test_location_entry_CFLAGS = $(YELP_COMMON_CFLAGS)
test_location_entry_LDADD = $(YELP_COMMON_LDADD)
+test_magic_CFLAGS = $(YELP_COMMON_CFLAGS)
+test_magic_LDADD = $(YELP_COMMON_LDADD)
+
test_settings_CFLAGS = $(YELP_COMMON_CFLAGS)
test_settings_LDADD = $(YELP_COMMON_LDADD)
diff --git a/tests/test-io-channel.c b/tests/test-bz2.c
index f2e1dbce..a2da96cb 100644
--- a/tests/test-io-channel.c
+++ b/tests/test-bz2.c
@@ -24,27 +24,37 @@
#include <stdio.h>
#include <string.h>
-#include <glib.h>
+#include <gio/gio.h>
-#include "yelp-io-channel.h"
+#include "yelp-bz2-decompressor.h"
int
main (int argc, char **argv)
{
- GIOChannel *channel;
- gchar *str;
- gint len;
-
- g_log_set_always_fatal (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL);
+ GConverter *converter;
+ GFile *file;
+ GFileInputStream *file_stream;
+ GInputStream *stream;
+ gchar buf[1024];
+ gssize bytes;
if (argc < 2) {
- g_printerr ("Usage: test-io-channel FILE\n");
- return 1;
+ g_printerr ("Usage: test-bz2 FILE\n");
+ return 1;
}
- channel = yelp_io_channel_new_file (argv[1], NULL);
- g_io_channel_read_to_end (channel, &str, &len, NULL);
- printf ("%s\n", str);
+ g_type_init ();
+
+ file = g_file_new_for_path (argv[1]);
+ file_stream = g_file_read (file, NULL, NULL);
+ converter = yelp_bz2_decompressor_new ();
+ stream = g_converter_input_stream_new (file_stream, converter);
+
+ while ((bytes = g_input_stream_read (stream, buf, 1024, NULL, NULL)) > 0) {
+ gchar *out = g_strndup (buf, bytes);
+ puts (out);
+ g_free (out);
+ }
return 0;
}
diff --git a/tests/test-lzma.c b/tests/test-lzma.c
new file mode 100644
index 00000000..76af37d8
--- /dev/null
+++ b/tests/test-lzma.c
@@ -0,0 +1,60 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org
+ */
+
+#include <config.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <gio/gio.h>
+
+#include "yelp-lzma-decompressor.h"
+
+int
+main (int argc, char **argv)
+{
+ GConverter *converter;
+ GFile *file;
+ GFileInputStream *file_stream;
+ GInputStream *stream;
+ gchar buf[1024];
+ gssize bytes;
+
+ if (argc < 2) {
+ g_printerr ("Usage: test-lzma FILE\n");
+ return 1;
+ }
+
+ g_type_init ();
+
+ file = g_file_new_for_path (argv[1]);
+ file_stream = g_file_read (file, NULL, NULL);
+ converter = yelp_lzma_decompressor_new ();
+ stream = g_converter_input_stream_new (file_stream, converter);
+
+ while ((bytes = g_input_stream_read (stream, buf, 1024, NULL, NULL)) > 0) {
+ gchar *out = g_strndup (buf, bytes);
+ puts (out);
+ g_free (out);
+ }
+
+ return 0;
+}
diff --git a/tests/test-magic.c b/tests/test-magic.c
new file mode 100644
index 00000000..9a937991
--- /dev/null
+++ b/tests/test-magic.c
@@ -0,0 +1,60 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Shaun McCance <shaunm@gnome.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 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: Shaun McCance <shaunm@gnome.org
+ */
+
+#include <config.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <gio/gio.h>
+
+#include "yelp-magic-decompressor.h"
+
+int
+main (int argc, char **argv)
+{
+ GConverter *converter;
+ GFile *file;
+ GFileInputStream *file_stream;
+ GInputStream *stream;
+ gchar buf[1024];
+ gssize bytes;
+
+ if (argc < 2) {
+ g_printerr ("Usage: test-magic FILE\n");
+ return 1;
+ }
+
+ g_type_init ();
+
+ file = g_file_new_for_path (argv[1]);
+ file_stream = g_file_read (file, NULL, NULL);
+ converter = yelp_magic_decompressor_new ();
+ stream = g_converter_input_stream_new (file_stream, converter);
+
+ while ((bytes = g_input_stream_read (stream, buf, 1024, NULL, NULL)) > 0) {
+ gchar *out = g_strndup (buf, bytes);
+ puts (out);
+ g_free (out);
+ }
+
+ return 0;
+}
diff --git a/tests/test-transform.c b/tests/test-transform.c
index efda9b8e..141a4ce1 100644
--- a/tests/test-transform.c
+++ b/tests/test-transform.c
@@ -147,10 +147,8 @@ main (gint argc, gchar **argv)
params[5] = "2";
params[6] = NULL;
- transform = yelp_transform_new ();
+ transform = yelp_transform_new (stylesheet);
g_object_weak_ref ((GObject *) transform, transform_destroyed, NULL);
- if (!yelp_transform_set_stylesheet (transform, stylesheet, NULL))
- return 1;
g_signal_connect (transform, "chunk-ready", (GCallback) transform_chunk, NULL);
g_signal_connect (transform, "finished", (GCallback) transform_finished, NULL);
diff --git a/tests/test-uri.c b/tests/test-uri.c
index 869d9b1c..d2889999 100644
--- a/tests/test-uri.c
+++ b/tests/test-uri.c
@@ -35,7 +35,7 @@ static void
print_uri (gchar *orig, YelpUri *uri, GOutputStream *stream)
{
GFile *file;
- gchar *type, *tmp, **tmpv, *out;
+ gchar *type = NULL, *tmp, **tmpv, *out;
g_output_stream_write (stream, orig, strlen (orig), NULL, NULL);
g_output_stream_write (stream, "\n", 1, NULL, NULL);
@@ -199,7 +199,7 @@ run_all_tests (int argc, char **argv)
G_FILE_ATTRIBUTE_STANDARD_NAME);
if (!g_str_has_suffix (name, ".test"))
continue;
- list = g_list_insert_sorted (list, name, strcmp);
+ list = g_list_insert_sorted (list, (gchar *) name, (GCompareFunc) strcmp);
}
while (list) {