referencer-1.2.1/0000775000175000017500000000000012150643002010627 500000000000000referencer-1.2.1/INSTALL0000664000175000017500000003633212042420323011606 00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. referencer-1.2.1/config.h.in0000664000175000017500000000451012150643001012571 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Define to compile with python support */ #undef ENABLE_PYTHON /* GETTEXT_PACKAGE */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the header file. */ #undef HAVE_BOOST_REGEX_HPP /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the `boost_regex' library (-lboost_regex). */ #undef HAVE_LIBBOOST_REGEX /* Define to 1 if you have the `boost_regex-mt' library (-lboost_regex-mt). */ #undef HAVE_LIBBOOST_REGEX_MT /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION referencer-1.2.1/intltool-merge.in0000664000175000017500000000000012127517024014036 00000000000000referencer-1.2.1/configure.ac0000664000175000017500000001344112150642764013056 00000000000000dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.13) dnl ============================================================================ dnl Package name and version number (user defined) dnl ============================================================================ AC_INIT([referencer], [1.2.1], [referencer@icculus.org]) AC_CONFIG_SRCDIR([src/RefWindow.C]) AM_CONFIG_HEADER([config.h]) dnl ============================================================================ dnl -Wno-portablity: We do not want 'automake' to print out a lot of portability dnl warning messages (since 'gnome-doc-utils.make' uses GNU extensions a lot). dnl ============================================================================ AM_INIT_AUTOMAKE([-Wno-portability]) AC_CONFIG_MACRO_DIR([m4]) GNOME_COMMON_INIT GNOME_DOC_INIT AC_LANG_CPLUSPLUS dnl ============================================================================ dnl Checks for programs. dnl ============================================================================ AC_PROG_CXX AC_PROG_RANLIB dnl ============================================================================ dnl Checks for libraries. dnl ============================================================================ PKG_CHECK_MODULES(DEPS, [ gtkmm-2.4 >= 2.22.0 dnl TODO: make dbus-glib and tracker optional dnl dbus-glib-1 >= 0.74 dnl tracker >= 0.6.3 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 ]) AC_CHECK_LIB(boost_regex, [main], , [ AC_CHECK_LIB(boost_regex-mt, [main], , AC_MSG_ERROR([boost_regex not found. Stopped])) ]) AC_CHECK_HEADERS(boost/regex.hpp) AC_SUBST(DEPS_CFLAGS) AC_SUBST(DEPS_LIBS) LIBS="$LIBS $DEPS_LIBS" dnl ============================================================================ dnl I18n dnl ============================================================================ GETTEXT_PACKAGE=$PACKAGE AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",GETTEXT_PACKAGE) AC_SUBST(GETTEXT_PACKAGE) AM_GLIB_GNU_GETTEXT AC_PROG_INTLTOOL dnl ============================================================================ dnl Add flag to disable updating of mime database dnl ============================================================================ AC_ARG_ENABLE(update-mime-database, AC_HELP_STRING([--disable-update-mime-database], [do not run the update-mime-database utility (mostly useful for package maintainers) ])) if test "$enable_update_mime_database" == "no"; then AC_MSG_NOTICE([Disabling update mime database.]) fi AM_CONDITIONAL(UPDATE_MIME_DATABASE, test "$enable_update_mime_database" != "no") dnl ============================================================================ dnl Add flag telling us whether we are in the 'maintainer' mode. dnl ============================================================================ AC_ARG_ENABLE(maintainer-mode, AC_HELP_STRING([--enable-maintainer-mode], [indicates whether the build system should be set up for maintainer mode])) if test "$enable_maintainer_mode" == "yes"; then AC_MSG_NOTICE([Setting up the build system for maintainer mode.]) fi AM_CONDITIONAL(MAINTAINER_MODE, test "$enable_maintainer_mode" == "yes") dnl ================================================================ dnl Python dnl ================================================================ AC_MSG_CHECKING([whether Python support is requested]) AC_ARG_ENABLE([python], AS_HELP_STRING([--enable-python],[Enable python support]), [enable_python=$enableval have_python=$enableval], [enable_python=autodetect have_python=yes]) AC_MSG_RESULT([$enable_python]) if test "x$have_python" != "xno"; then AM_PATH_PYTHON([2.3],[],[no]) if test "x$PYTHON" = "x:"; then have_python=no fi fi if test "x$have_python" != "xno"; then AM_CHECK_PYTHON_HEADERS([],[have_python=no]) fi if test "x$have_python" != "xno"; then PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'` PY_EXEC_PREFIX=`$PYTHON -c 'import sys ; print sys.exec_prefix'` PYTHON_LIBS="-lpython$PYTHON_VERSION" PYTHON_LIB_LOC="-L$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config" PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION" PYTHON_MAKEFILE="$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config/Makefile" if test -f "$PYTHON_MAKEFILE"; then PYTHON_LOCALMODLIBS=`sed -n -e 's/^LOCALMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_BASEMODLIBS=`sed -n -e 's/^BASEMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_OTHER_LIBS=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_EXTRA_LIBS="$PYTHON_LOCALMODLIBS $PYTHON_BASEMODLIBS $PYTHON_OTHER_LIBS" else PYTHON_EXTRA_LIBS="" fi AC_SUBST([PYTHON_LIBS]) AC_SUBST([PYTHON_LIB_LOC]) AC_SUBST([PYTHON_CFLAGS]) AC_SUBST([PYTHON_EXTRA_LIBS]) fi if test "x$have_python" != "xyes"; then if test "x$enable_python" = "xyes"; then AC_MSG_ERROR([Python not found]) elif test "x$enable_python" = "xautodetect"; then enable_python=no AC_MSG_WARN([Python not found, disabling python support]) fi fi if test "x$have_python" != "xno" -a "x$enable_python" != "xno"; then enable_python=yes AC_DEFINE([ENABLE_PYTHON],[1],[Define to compile with python support]) fi AM_CONDITIONAL([ENABLE_PYTHON],[test "x$enable_python" = "xyes"]) dnl ============================================================================ dnl This allows the bug-report script to know whether python has been enabled dnl ============================================================================ AC_SUBST(enable_python) dnl ============================================================================ dnl Create makefiles dnl ============================================================================ AC_CONFIG_FILES( Makefile libbibutils/Makefile src/Makefile data/Makefile data/referencer.desktop.in plugins/Makefile help/Makefile devhelp/Makefile po/Makefile.in referencer.spec ) AC_OUTPUT referencer-1.2.1/devhelp/0000775000175000017500000000000012150643002012256 500000000000000referencer-1.2.1/devhelp/Makefile.in0000664000175000017500000010472212150642771014265 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # gnome-doc-utils.make - make magic for building documentation # Copyright (C) 2004-2005 Shaun McCance # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. ################################################################################ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/gnome-doc-utils.make subdir = devhelp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header) _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS)) _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \ $(filter $(LINGUAS),$(DOC_LINGUAS)), \ $(DOC_LINGUAS)) _DOC_ABS_SRCDIR = @abs_srcdir@ _xml2po_mode = $(if $(DOC_ID),mallard,docbook) @ENABLE_SK_TRUE@_ENABLE_SK = true ################################################################################ GDU_V_XML2PO = $(GDU__v_XML2PO_$(V)) GDU__v_XML2PO_ = $(GDU__v_XML2PO_$(AM_DEFAULT_VERBOSITY)) GDU__v_XML2PO_0 = @echo " XML2PO" $@; GDU_V_MSGFMT = $(GDU__v_MSGFMT_$(V)) GDU__v_MSGFMT_ = $(GDU__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) GDU__v_MSGFMT_0 = @echo " MSGFMT" $@; GDU_V_DB2OMF = $(GDU__v_DB2OMF_$(V)) GDU__v_DB2OMF_ = $(GDU__v_DB2OMF_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2OMF_0 = @echo " DB2OMF" $@; GDU_V_DB2HTM = $(GDU__v_DB2HTM_$(V)) GDU__v_DB2HTM_ = $(GDU__v_DB2HTM_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2HTM_0 = @echo " DB2HTM" $@; ################################################################################ db2omf_args = \ --stringparam db2omf.basename $(DOC_MODULE) \ --stringparam db2omf.format $(3) \ --stringparam db2omf.dtd \ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \ --stringparam db2omf.omf_dir "$(OMF_DIR)" \ --stringparam db2omf.help_dir "$(HELP_DIR)" \ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \ $(if $(_ENABLE_SK), \ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \ $(_db2omf) $(2) _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in)) _DOC_OMF_DB = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf)) _DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf)) # FIXME _DOC_OMF_ALL = \ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML)) ################################################################################ _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml) _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page)) _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent)) _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc)) _DOC_C_DOCS = \ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) $(_DOC_C_MODULE) _DOC_C_DOCS_NOENT = \ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) _DOC_C_FIGURES = $(if $(DOC_FIGURES), \ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png))) # FIXME: probably have to shell escape to determine the file names _DOC_C_HTML = $(foreach f, \ $(shell xsltproc --xinclude \ --stringparam db.chunk.basename "$(DOC_MODULE)" \ $(_chunks) "C/$(DOC_MODULE).xml"), \ C/$(f).xhtml) ############################################################################### _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po)) _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES)) _DOC_LC_MODULES = $(if $(DOC_MODULE), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml)) _DOC_LC_PAGES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \ $(lc)/$(notdir $(page)) )) _DOC_LC_INCLUDES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \ $(lc)/$(notdir $(inc)) )) # FIXME: probably have to shell escape to determine the file names _DOC_LC_HTML = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \ $(lc)/$(notdir $(doc)) )) _DOC_LC_DOCS = \ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML)) _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) ) _DOC_SRC_FIGURES = \ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) )) _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot,$(if $(DOC_ID),$(DOC_ID).pot)) ################################################################################ _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \ $(_DOC_C_HTML) $(_DOC_LC_HTML)) _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml) _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf) _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk) _clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc) _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir) _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE)) #The name of the help document to build. # This is the filename without the .xml extension. DOC_MODULE = referencer-plugins #List any files included in the help document using system entities # Example: DOC_ENTITIES = legal.xml #List any files that are included in the Xinclude specification DOC_INCLUDES = #List of all the figures that are referenced in the help document DOC_FIGURES = #List of all the language codes for the languages in which the # document is translated DOC_LINGUAS = de all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gnome-doc-utils.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu devhelp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu devhelp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/gnome-doc-utils.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-local pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ dist-hook distclean distclean-generic distclean-local distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-local DOC_H_FILE ?= DOC_H_DOCS ?= $(DOC_H_FILE): $(DOC_H_DOCS); @rm -f $@.tmp; touch $@.tmp; echo 'const gchar* documentation_credits[] = {' >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ xsltproc --path "$$xmlpath" $(_credits) $$doc; \ done | sort | uniq \ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp echo ' NULL' >> $@.tmp echo '};' >> $@.tmp echo >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \ echo $$xmlpath; \ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \ for id in $$ids; do \ echo '#define HELP_'`echo $$docid`'_'`echo $$id \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \ done; \ echo >> $@.tmp; \ done; cp $@.tmp $@ && rm -f $@.tmp dist-check-gdu: @HAVE_GNOME_DOC_UTILS_FALSE@ @echo "*** GNOME Doc Utils must be installed in order to make dist" @HAVE_GNOME_DOC_UTILS_FALSE@ @false .PHONY: dist-doc-header dist-doc-header: $(DOC_H_FILE) @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)"; doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header) .PHONY: clean-doc-header clean-local: $(_clean_doc_header) distclean-local: $(_clean_doc_header) mostlyclean-local: $(_clean_doc_header) maintainer-clean-local: $(_clean_doc_header) clean-doc-header: rm -f $(DOC_H_FILE) all: $(DOC_H_FILE) ################################################################################ DOC_MODULE ?= DOC_ID ?= DOC_PAGES ?= DOC_ENTITIES ?= DOC_INCLUDES ?= DOC_FIGURES ?= DOC_FORMATS ?= docbook DOC_LINGUAS ?= ################################################################################ _xml2po ?= `which xml2po` _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils` _db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils` _chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl @ENABLE_SK_TRUE@_skpkgdatadir ?= `scrollkeeper-config --pkgdatadir` @ENABLE_SK_TRUE@_sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir` @ENABLE_SK_TRUE@_skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml $(_DOC_OMF_DB) : $(_DOC_OMF_IN) $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist." >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; } $(_DOC_OMF_HTML) : $(_DOC_OMF_IN) $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml @ENABLE_SK_TRUE@ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ @ENABLE_SK_TRUE@ echo "The file '$(_skcontentslist)' does not exist" >&2; \ @ENABLE_SK_TRUE@ echo "Please check your ScrollKeeper installation." >&2; \ @ENABLE_SK_TRUE@ exit 1; } $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; } .PHONY: omf omf: $(_DOC_OMF_ALL) .PHONY: po po: $(_DOC_POFILES) .PHONY: mo mo: $(_DOC_MOFILES) $(_DOC_POFILES): @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi @if test ! -f $@ -a -f $(srcdir)/$@; then \ echo "cp $(srcdir)/$@ $@"; \ cp "$(srcdir)/$@" "$@"; \ fi; @docs=; \ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \ done; \ if ! test -f $@; then \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \ else \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \ fi $(_DOC_MOFILES): %.mo: %.po $(AM_V_at)if ! test -d $(dir $@); then mkdir "$(dir $@)"; fi $(GDU_V_MSGFMT)msgfmt -o $@ $< # FIXME: fix the dependancy # FIXME: hook xml2po up $(_DOC_LC_DOCS) : $(_DOC_MOFILES) $(_DOC_LC_DOCS) : $(_DOC_C_DOCS) $(AM_V_at)if ! test -d $(dir $@); then mkdir $(dir $@); fi $(GDU_V_XML2PO)if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp) .PHONY: pot pot: $(_DOC_POT) $(_DOC_POT): $(_DOC_C_DOCS_NOENT) $(GDU_V_XML2PO)$(_xml2po) -m $(_xml2po_mode) -e -o $@ $^ $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@) ################################################################################ all: \ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) $(_DOC_POFILES) ################################################################################ .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML) clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML) clean-doc-lc: rm -f $(_DOC_LC_DOCS) rm -f $(_DOC_MOFILES) @list='$(_DOC_POFILES)'; for po in $$list; do \ if ! test "$$po" -ef "$(srcdir)/$$po"; then \ echo "rm -f $$po"; \ rm -f "$$po"; \ fi; \ done # .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc/.xml2po.mo"; then \ echo "rm -f $$lc/.xml2po.mo"; \ rm -f "$$lc/.xml2po.mo"; \ fi; \ done clean-doc-dir: clean-doc-lc @for lc in C $(_DOC_REAL_LINGUAS); do \ for dir in `find $$lc -depth -type d`; do \ if ! test $$dir -ef $(srcdir)/$$dir; then \ echo "rmdir $$dir"; \ rmdir "$$dir"; \ fi; \ done; \ done clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) distclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) mostlyclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) maintainer-clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) ################################################################################ .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk doc-dist-hook: \ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \ $(if $(_DOC_C_FIGURES),dist-doc-figs) \ $(if $(_DOC_OMF_IN),dist-doc-omf) # $(if $(_DOC_DSK_IN),dist-doc-dsk) dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES) @for lc in C $(_DOC_REAL_LINGUAS); do \ echo " $(mkinstalldirs) $(distdir)/$$lc"; \ $(mkinstalldirs) "$(distdir)/$$lc"; \ done @list='$(_DOC_C_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_POFILES)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done dist-doc-figs: $(_DOC_SRC_FIGURES) @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \ for fig in $$list; do \ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$fig"; then \ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$figdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \ $(mkinstalldirs) "$(distdir)/$$figdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \ fi; \ done; dist-doc-omf: @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))" dist-doc-dsk: @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))" ################################################################################ .PHONY: check-doc-docs check-doc-omf check: \ $(if $(DOC_MODULE),check-doc-docs) \ $(if $(DOC_ID),check-doc-pages) \ $(if $(_DOC_OMF_IN),check-doc-omf) check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \ done check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES) for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ for page in $(DOC_PAGES); do \ echo "xmllint --noout --noent --path $$xmlpath --xinclude $$d$$lc/$$page"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude "$$d$$lc/$$page"; \ done; \ done check-doc-omf: $(_DOC_OMF_ALL) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \ done ################################################################################ .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk install-data-local: \ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \ $(if $(_DOC_HTML_ALL),install-doc-html) \ $(if $(_DOC_C_FIGURES),install-doc-figs) \ $(if $(_DOC_OMF_IN),install-doc-omf) # $(if $(_DOC_DSK_IN),install-doc-dsk) install-doc-docs: @for lc in C $(_DOC_REAL_LINGUAS); do \ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \ done @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done install-doc-figs: @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \ for lc in C $(_DOC_REAL_LINGUAS); do \ figsymlink=false; \ if test -f "$$lc/$$fig"; then \ figfile="$$lc/$$fig"; \ elif test -f "$(srcdir)/$$lc/$$fig"; then \ figfile="$(srcdir)/$$lc/$$fig"; \ else \ figsymlink=true; \ fi; \ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \ if ! test -d "$$figdir"; then \ echo "$(mkinstalldirs) $$figdir"; \ $(mkinstalldirs) "$$figdir"; \ fi; \ figbase=`echo $$fig | sed -e 's/^.*\///'`; \ if $$figsymlink; then \ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \ else \ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \ fi; \ done; \ done install-doc-html: echo install-html install-doc-omf: $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \ done @if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ fi; install-doc-dsk: echo install-dsk ################################################################################ .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk uninstall-local: \ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \ $(if $(_DOC_OMF_IN),uninstall-doc-omf) # $(if $(_DOC_DSK_IN),uninstall-doc-dsk) uninstall-doc-docs: @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done uninstall-doc-figs: @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ done; uninstall-doc-omf: @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ fi; \ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ done dist-hook: doc-dist-hook # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/devhelp/C/0000775000175000017500000000000012150643002012440 500000000000000referencer-1.2.1/devhelp/C/legal.xml0000644000175000017500000000054512150643002014170 00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License Version 2. You can find a copy of the GPL at this link or in the file COPYING distributed with this manual. referencer-1.2.1/devhelp/C/referencer-plugins.xml0000644000175000017500000004037712150643002016712 00000000000000 &appname;"> ]>
&app; Plugin Writing Guide V&manrevision; Referencer is a tool to help you manage your collection of documents, and to use them to generate a bibliography. This guide describes the plugin API of Referencer. 2009 John Spray &appname; Development Team &legal; John Spray
jcspray@icculus.org
Referencer Plugin Writing Guide V 1.1.6 2009-06-18 John Spray This is the Plugin Writing Guide version &appversion; of &appname;. Feedback To report a bug or make a suggestion regarding the &app; application or this manual, please visit the &app; home page.
Introduction The &app; plugin API provides a relatively painless way of adding functionality. Plugins can either add user interface entries to menus and toolbars (action plugins), or provide hooks for downloading metadata for documents (metadata plugins). At the time of writing, the plugin interface is new and not widely tested. Although it is not gratuitously broken there may be issues. You can ask at the mailing list. This document is written for &app; v1.1.6. Installing Plugins Plugins are python scripts. They don't have to be executable, but they do have to have a filename ending .py. At startup, &app; searches several locations for plugins: ./plugins, $PREFIX/lib/referencer, and ~/.referencer/plugins. Common API Plugin info dictionary All plugins must contain a dictionary at file scope capped referencer_plugin_info. This provides a number of fields describing the plugin. All plugins must provide the following fields, further optional fields are listed in following sections. Plugins Plugin Name Description author Author's name, or comma separated list. eg. "Bob Dole" version A version string for the plugin. eg. "1.3.2" longname The plugin's purpose. eg. "Format author initials"
The plugin info structure might be defined like this: referencer_plugin_info = { "author": "John Spray", "version": "1.1.2", "longname": _("Generate keys from metadata") }
Utility functions Import the module referencer to access the following functions: referencer.download(short desc, long desc, url) Web download convenience function. Returns a string containing the contents of the downloaded file, or an empty string on errors. Example: referencer.download("Downloading tripe", "Downloading page from slashdot.org", "http://www.slashdot.org") As well as being convenient, this function inherits the user's gnome-vfs proxy settings so is in general preferable where more complex http functionality is not required. In any error case, the function returns an empty string. referencer._(text) Translation function. You probably want to do "from referencer import _" in order to support localisation of user-visible strings. Any user-visible string should be expressed as _("Some text") referencer.pref_get(key) Load a persistent configuration string. If the key is not found an empty string is returned. To avoid conflicting with other plugins, each plugin should use key names prefixed with the name of the plugin. These configuration items are stored in the GConf database along with &app;'s native configuration. referencer.pref_set(key, value) Set a persistent configuration string. <varname>document</varname> class &app; exposes individual documents with the document class. This supports a limited number of getter/setter methods: get_field(key) Retrieve a (case-insensitive) field such as "author". Builtin fields are doi, title, volume, number, journal, author, year and pages. Other arbitrarily named fields may or may not exist for a document. Getting a non-existent field returns an empty string. set_field(key, value) Set a field. get_key() Get the key of a document. This is the short ID the user would use to reference a document in a latex paper. set_key(value) Set the key. get_filename() Get the URI (eg "file:///home/me/A_File.pdf") of the file associated with the document. set_filename(value) Set a document's file URI to value. parse_bibtex(value) Parse value as plain-text BibTex and set the document's fields accordingly. Configuration dialog Plugins can provide a configuration user interface invoked from the preferences dialog. The configuration button in the preferences dialog is enabled if the referencer_config() plugin includes a function.
Action Plugins Three things are required to insert actions into the &app; UI: a description of the action, a string describing location of UI elements, and a function implementing the action. An action is defined as a dictionary with the following fields: Actions Field Description name Author's name, or comma separated list. eg. "Bob Dole" label A version string for the plugin. eg. "1.3.2" tooltip Long description icon Filename or stock eg. "foo.png", eg. "_stock:gtk-edit". callback Action Function sensitivity (optional) Sensitivity policy function accelerator (optional) Shortcut key, eg "]]>q"
An action definition might look like this: action = { "name":"_plugin_genkey_genkey", "label":_("Generate Key"), "tooltip":_("Generate keys for the selected documents from their metadata"), "icon":"_stock:gtk-edit", "callback":"do_genkey", "sensitivity":"sensitivity_genkey", "accelerator":"]]>g" } The plugin should also create a list called referencer_plugin_actions containing all actions: referencer_plugin_actions = [action] To place the actions in the user interface, the field "ui" must be added to the referencer_plugin_info dictionary. The ui value is a piece of GtkUIManager XML. This specifies UI elements as children of existing structures such as menus and toolbars. The parent structure is defined as src/referencer_ui.h in the &app; source code. Here's an example of creating menu items in the Document menu and in the toolbar: ]]> The functions referenced as "callback" and "sensitivity" in the action dictionary both have the prototype myfunction(library, documents) where documents is a list of referencer.document and library is a unused. For example: def sensitivity_genkey (library, documents): pass def do_genkey (library, documents): pass Some plugin actions may wish to display arbitrary UI such as dialogs: this can be done using PyGTK. A detailed explanation of PyGTK would be outside the scope of this document: there are many tutorials on writing PyGTK applications. Note that GTK is already initialised by &app;, so a plugin must not do any GTK initialisation or finalisation. For example, the following code would stand entirely alone: import gobject import gtk dialog = gtk.Dialog (buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) label = gtk.Label ("Hello World") dialog.vbox.pack_start (label) dialog.show_all () response = dialog.run () dialog.hide () For an example of an action plugin, have a look at plugins/genkey.py in the &app; source code tree.
Metadata Plugins Metadata plugins provide a function to fill out a document's metadata fields based on a document identifier. To describe which identifier formats are supported, the plugin should create a list of strings called referencer_plugin_capabilities. At time of writing, the possible capabilities are "doi", "pubmed" and "arxiv". To do the lookup, a function resolve_metadata(doc, method) should be created. doc is the referencer.document whose fields should be filled out, and method is one of the capability strings listed in referencer_plugin_capabilities. For an example of a metadata plugin, have a look at plugins/pubmed.py in the &app; source code. About &app; &app; and this Plugin Writing guide were written by John Spray (jcspray@icculus.org). Some contributions to this guide came from Mario Blättermann (mariobl@gnome.org. To find more information about &app; and the most recent documentation, please visit the project page. This program is distributed 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. A copy of this license is included with this documentation; another can be found in the file COPYING included with the source code of this program.
referencer-1.2.1/devhelp/Makefile.am0000664000175000017500000000113212042412720014230 00000000000000include $(top_srcdir)/gnome-doc-utils.make dist-hook: doc-dist-hook #The name of the help document to build. # This is the filename without the .xml extension. DOC_MODULE = referencer-plugins #List any files included in the help document using system entities # Example: DOC_ENTITIES = legal.xml #List any files that are included in the Xinclude specification DOC_INCLUDES = #List of all the figures that are referenced in the help document DOC_FIGURES = #List of all the language codes for the languages in which the # document is translated DOC_LINGUAS = de referencer-1.2.1/devhelp/de/0000775000175000017500000000000012150643002012646 500000000000000referencer-1.2.1/devhelp/de/referencer-plugins.xml0000644000175000017500000004373312150643002017117 00000000000000 &appname;"> ]>
<application>Referencer</application> Plugin-Leitfaden V 1.1.6 Referencer ist ein Werkzeug, das Ihnen bei der Verwaltung Ihrer Dokumentensammlung hilft und aus Ihren Dokumenten eine Bibliografie erstellt. Dieser Leitfaden beschreibt die Plugin-Schnittstelle von Referencer. 2009 John Spray 2009Mario Blättermann (mariobl@gnome.org) Referencer Development Team Das vorliegende Dokument kann gemäß den Bedingungen der GNU General Public License (GPL), Version 2 kopiert, verteilt und/oder modifiziert werden. Eine Kopie der GPL finden Sie unter diesem Link oder in der mit diesem Handbuch gelieferten Datei COPYING. John Spray
jcspray@icculus.org
Referencer Plugin-Leitfaden V 1.1.6 18. Juni 2009 John Spray This is the Plugin Writing Guide version 1.1.6 of Referencer. Rückmeldungen Um Fehler zu melden oder einen Vorschlag zur Anwendung Referencer oder zu diesem Handbuch zu machen, besuchen Sie bitte die
Einführung Die Plugin-Schnittstelle von Referencer stellt einen relativ schmerzlosen Weg zum Hinzufügen neuer Funktionalität bereit. Plugins können entweder weitere Einträge zu Menüs und Werkzeugleisten der Benutzeroberfläche hinzufügen (Aktionen-Plugins) oder Hilfsfunktionen zum Herunterladen von Metadaten für Dokument bereitstellen (Metadaten-Plugins). Zum Zeitpunkt der Erstellung dieses Leitfadens ist die Plugin-Schnittstelle noch neu und noch nicht ausreichend getestet. Obwohl nicht völlig unbrauchbar, gibt es doch Schwachstellen. Informieren Sie sich darüber in der Mailingliste. Dieses Dokument bezieht sich auf die Version 1.1.6 von Referencer. Installieren von Plugins Plugins sind Python-Skripte. Diese müssen nicht ausführbar sein, jedoch ist die Dateiendung .py zwingend notwendig. Beim Start sucht Referencer an verschiedenen Orten nach Plugins: ./plugins, $PREFIX/lib/referencer, und ~/.referencer/plugins. Allgemeine API Informative Beschreibung des Plugins Alle Plugins müssen eine Beschreibungsdatei im Dateiabschnitt referencer_plugin_info enthalten. Diese stellt eine Anzahl von Feldern bereit, die das Plugin beschreiben. Alle Plugins müssen zwingend die folgenden Felder bereitstellen, weitere optionale Felder werden in den folgenden Abschnitten beschrieben. Plugins Plugin-Name Beschreibung author Name des Autors oder durch Kommata getrennte Liste, z.B. "Hans Schmidt" version Eine Zeichenkette für die Version des Plugins, z.B. "1.3.2" longname Der Zweck des Plugins, z.B. "Format author initials"
Die Struktur der Plugin-Informationen könnte folgendermaßen definiert werden: referencer_plugin_info = { "author": "John Spray", "version": "1.1.2", "longname": _("Generate keys from metadata") }
Hilfsfunktionen Importieren Sie das Modul referencer, um auf folgende Funktionen zugreifen zu können: referencer.download(Kurzbeschreibung, Langbeschreibung, Adresse) Funktion zur Vereinfachung von Web-Downloads. Gibt eine Zeichenkette zurück, die den Inhalt der heruntergeladenen Datei enthält, oder eine leere Zeichenkette bei Fehlern. Beispiel: referencer.download("Downloading tripe", "Downloading page from slashdot.org", "http://www.slashdot.org") Um die Einfachheit zu gewährleisten, übernimmt diese Funktion die Proxy-Einstellungen von gnome-vfs, so dass sie bevorzugt werden sollte, falls keine komplexe HTTP-Funktionalität gefordert ist. Im Falle eines Fehlers gibt die Funktion stets eine leere Zeichenkette zurück. referencer._(Text) Übersetzungsfunktion. Um die Übersetzbarkeit aller für den Benutzer sichtbaren Zeichenketten zu gewährleisten, sollten Sie "from referencer import _" benutzen. Jede sichtbare Zeichenkette sollte als _("Etwas Text") ausgedrückt werden. referencer.pref_get(Schlüssel) Lädt eine persistente Konfigurationszeichenkette. Falls der Schlüssel nicht gefunden wurde, wird eine leere Zeichenkette zurückgegeben. Um Konflikte mit anderen Plugins zu vermeiden, sollte jedes Plugin Schlüsselnamen verwenden, die den Namen des Plugins als Präfix enthalten. Diese Konfigurationseinträge werden in der GConf-Datenbank zusammen mit der originalen Konfiguration von Referencer gespeichert. referencer.pref_set(Schlüssel, Wert) Setzt eine persistente Konfigurationszeichenkette. Die <varname>document</varname>-Klasse Referencer präsentiert individuelle Dokumente über die document-Klasse. Eine begrenzte Anzahl von Getter/Setter-Methoden werden unterstützt: get_field(Schlüssel) Holt ein Feld wie z.B. »author«. Groß-/Kleinschreibung wird nicht berücksichtigt. Eingebaute Felder sind »doi«, »title«, »volume«, »number«, »journal«, »author«, »year« und »pages«. Weitere Felddefinitionen können, müssen aber für ein Dokument nicht existieren. Das Holen eines nicht existierenden Feldes gibt eine leere Zeichenkette zurück. set_field(Schlüssel, Wert) Legt ein Feld fest. get_key() Holt den Schlüssel des Dokuments. Dies ist die Kennung, die der Benutzer zur Referenzierung eines Dokuments in einem Latex-Dokument verwendet. set_key(Wert) Legt den Schlüssel fest. get_filename() Holt die Adresse (z.B. »file:///home/ich/Eine_Datei.pdf«) der einem Dokument zugeordneten Datei. set_filename(Wert) Setzt die Adresse des Dokuments auf Wert. parse_bibtex(Wert) Liest den Wert als Klartext-BibTex ein und füllt die Felder des Dokuments entsprechend aus. Konfigurationsdialog Plugins können eine Konfigurationsschnittstelle anbieten, die über den Einstellungsdialog aufgerufen werden kann. Der Konfigurationsknopf im Einstellungsdialog ist aktiviert, wenn das Plugin referencer_config() eine Funktion einschließt.
Aktionen-Plugins Drei Dinge sind zum Einfügen von Aktionen in die Benutzeroberfläche von Referencer notwendig: eine Beschreibung der Aktion, eine den Ort der Steuerelemente beschreibende Zeichenkette sowie eine Funktion, welche die Aktion implementiert. Eine Aktion wird in einer Beschreibung mit den folgenden Feldern definiert: Aktionen Feld Beschreibung name Name des Autors oder durch Kommata getrennte Liste, z.B. "Hans Schmidt" label Eine Zeichenkette für die Version des Plugins, z.B. "1.3.2" tooltip Ausführliche Beschreibung icon Dateiname oder Stock-Name, z.B. »foo.png«, oder »_stock:gtk-edit«. callback Funktion der Aktion sensitivity (optional) Funktion zur Regelung der Empfindlichkeit accelerator (optional) Tastenkürzel, z.B. "]]>q"
Die Definition einer Aktion könnte etwa so aussehen: action = { "name":"_plugin_genkey_genkey", "label":_("Generate Key"), "tooltip":_("Generate keys for the selected documents from their metadata"), "icon":"_stock:gtk-edit", "callback":"do_genkey", "sensitivity":"sensitivity_genkey", "accelerator":"]]>g" } Das Plugin sollte auch eine Liste namens referencer_plugin_actions erzeugen, die alle Aktionen enthält: referencer_plugin_actions = [action] Um die Aktionen in der Benutzeroberfläche zu platzieren, muss das Feld »ui« zur Beschreibung in referencer_plugin_info hinzugefügt werden. Der Wert von »ui« ist ein Stück GtkUIManager-XML. Dies legt Elemente der Benutzerschnittstelle als Kind-Elemente existierender Strukturen wie Menüs oder Werkzeugleisten fest. Die Eltern-Struktur wird als src/referencer_ui.h im Referencer-Quellcode definiert. Hier ein Beispiel für die Erzeugung von Menueinträgen im Menü Dokument und in der Werkzeugleiste: ]]> Die als »callback« und »sensitivity« in der Aktionsbeschreibung referenzierten Funktionen haben beide den Prototypen Meine_Funktion(Bibliothek, Dokumente), wobei Dokumente eine Liste für referencer.document ist und Bibliothek ungenutzt bleibt. Beispiel: def sensitivity_genkey (library, documents): pass def do_genkey (library, documents): pass Einige Plugin-Aktionen erfordern die Anzeige zusätzlicher Elemente der Benutzeroberfläche wie beispielsweise Dialoge. Dies kann mittels PyGTK realisiert werden. Eine ausführliche Beschreibung von PyGTK würde den Rahmen dieses Dokuments sprengen. Es gibt zahlreiche Schritt-für-Schritt-Anleitungen zum Schreiben von PyGTK-Anwendungen. Beachten Sie, dass GTK bereits von Referencer initialisiert wird, daher muss sich ein Plugin nicht um die Initialisierung oder Finalisierung von GTK sorgen. Beispielsweise könnte der folgende Code vollständig allein stehen: import gobject import gtk dialog = gtk.Dialog (buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) label = gtk.Label ("Hello World") dialog.vbox.pack_start (label) dialog.show_all () response = dialog.run () dialog.hide () Ein Beispiel eines Aktionen-Plugins finden Sie in der Datei plugins/genkey.py im Quellcode von Referencer.
Metadaten-Plugins Metadaten-Plugins stellen eine Funktion zum Ausfüllen der Metadaten-Felder eines Dokuments bereit, basierend auf dem Bezeichner des Dokuments. Um anzugeben, welche Bezeichnerformate unterstützt werden, sollte das Plugin eine Liste von Zeichenketten namens referencer_plugin_capabilities erzeugen. Zum Zeitpunkt der Erstellung dieses Leitfadens sind folgende Werte möglich: »doi«, »pubmed« und »arxiv«. Um die Suche auszuführen, sollte eine Funktion resolve_metadata(Dokument, Methode) erzeugt werden. Dokument ist das referencer.document, dessen Felder ausgefüllt werden sollen, und Methode ist eine der in referencer_plugin_capabilities aufgelisteten die Fähigkeiten beschreibenden Zeichenketten. Ein Beispiel eines Metadaten-Plugins finden Sie in der Datei plugins/pubmed.py im Quellcode von Referencer. Info zu <application>Referencer</application> Referencer und dieser Plugin-Leifaden wurden von John Spray (jcspray@icculus.org) geschrieben. Einige Beiträge zu diesem Handbuch kamen von Mario Blättermann (mariobl@gnome.org. Weitere Informationen über Referencer sowie die aktuellste Dokumentation finden Sie auf der Projekt-Website. Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Eine Kopie dieser Lizenz ist in dieser Dokumentation enthalten, eine weitere in der Datei COPYING, die im Quellcode dieses Programms enthalten ist.
referencer-1.2.1/devhelp/de/de.po0000644000175000017500000007367112150643002013532 00000000000000# German translation of the Referencer Plugin Writing Guide. # Mario Blättermann , 2009. # msgid "" msgstr "" "Project-Id-Version: referencer-plugins\n" "POT-Creation-Date: 2009-06-21 11:59+0200\n" "PO-Revision-Date: 2009-06-21 12:01+0100\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" "X-Poedit-Country: GERMANY\n" #: legal.xml:2(para) msgid "" "Permission is granted to copy, distribute and/or modify this document under " "the terms of the GNU General Public License Version 2. You can find a copy of " "the GPL at this link or in the " "file COPYING distributed with this manual." msgstr "" "Das vorliegende Dokument kann gemäß den Bedingungen der GNU General Public " "License (GPL), Version 2 kopiert, verteilt und/oder modifiziert werden. Eine " "Kopie der GPL finden Sie unter diesem Link oder in der mit diesem Handbuch gelieferten Datei COPYING." #: referencer-plugins.xml:18(title) msgid "Referencer Plugin Writing Guide V1.1.6" msgstr "Referencer Plugin-Leitfaden V 1.1.6" #: referencer-plugins.xml:20(para) msgid "" "Referencer is a tool to help you manage your collection of documents, and to " "use them to generate a bibliography. This guide describes the plugin API of " "Referencer." msgstr "" "Referencer ist ein Werkzeug, das Ihnen bei der Verwaltung Ihrer " "Dokumentensammlung hilft und aus Ihren Dokumenten eine Bibliografie erstellt. " "Dieser Leitfaden beschreibt die Plugin-Schnittstelle von Referencer." #: referencer-plugins.xml:26(year) msgid "2009" msgstr "2009" #: referencer-plugins.xml:27(holder) referencer-plugins.xml:48(para) msgid "John Spray" msgstr "John Spray" #: referencer-plugins.xml:30(publishername) msgid "Referencer Development Team" msgstr "Referencer-Entwicklerteam" #: referencer-plugins.xml:35(firstname) msgid "John" msgstr "John" #: referencer-plugins.xml:35(surname) msgid "Spray" msgstr "Spray" #: referencer-plugins.xml:38(email) msgid "jcspray@icculus.org" msgstr "jcspray@icculus.org" #: referencer-plugins.xml:45(revnumber) msgid "Referencer Plugin Writing Guide V 1.1.6" msgstr "Referencer Plugin-Leitfaden V 1.1.6" #: referencer-plugins.xml:46(date) msgid "2009-06-18" msgstr "18. Juni 2009" #: referencer-plugins.xml:53(releaseinfo) msgid "" "This is the Plugin Writing Guide version 1.1.6 of Referencer." msgstr "" "Dies ist der Plugin-Leitfaden V 1.1.6 von Referencer." #: referencer-plugins.xml:56(title) msgid "Feedback" msgstr "Rückmeldungen" #: referencer-plugins.xml:57(para) msgid "" "To report a bug or make a suggestion regarding the Referencer application or this manual, please visit the Referencer " "home page." msgstr "" "Um Fehler zu melden oder einen Vorschlag zur Anwendung " "Referencer oder zu diesem Handbuch zu machen, " "besuchen Sie bitte die Referencer-Website." #: referencer-plugins.xml:65(title) msgid "Introduction" msgstr "Einführung" #: referencer-plugins.xml:66(para) msgid "" "The Referencer plugin API provides a relatively " "painless way of adding functionality. Plugins can either add user interface " "entries to menus and toolbars (action plugins), or provide hooks for " "downloading metadata for documents (metadata plugins)." msgstr "" "Die Plugin-Schnittstelle von Referencer stellt " "einen relativ schmerzlosen Weg zum Hinzufügen neuer Funktionalität bereit. " "Plugins können entweder weitere Einträge zu Menüs und Werkzeugleisten der " "Benutzeroberfläche hinzufügen (Aktionen-Plugins) oder Hilfsfunktionen zum " "Herunterladen von Metadaten für Dokument bereitstellen (Metadaten-Plugins)." #: referencer-plugins.xml:72(para) msgid "" "At the time of writing, the plugin interface is new and not widely tested. " "Although it is not gratuitously broken there may be issues. You can ask at " "the mailing list." msgstr "" "Zum Zeitpunkt der Erstellung dieses Leitfadens ist die Plugin-Schnittstelle " "noch neu und noch nicht ausreichend getestet. Obwohl nicht völlig " "unbrauchbar, gibt es doch Schwachstellen. Informieren Sie sich darüber in der " "Mailingliste." #: referencer-plugins.xml:77(para) msgid "" "This document is written for Referencer v1.1.6." msgstr "" "Dieses Dokument bezieht sich auf die Version 1.1.6 von " "Referencer." #: referencer-plugins.xml:83(title) msgid "Installing Plugins" msgstr "Installieren von Plugins" #: referencer-plugins.xml:84(para) msgid "" "Plugins are python scripts. They don't have to be executable, but they do " "have to have a filename ending .py. At startup, Referencer searches several locations for plugins: ./plugins, $PREFIX/lib/" "referencer, and ~/.referencer/plugins." msgstr "" "Plugins sind Python-Skripte. Diese müssen nicht ausführbar sein, jedoch ist " "die Dateiendung .py zwingend notwendig. Beim Start sucht " "Referencer an verschiedenen Orten nach Plugins: ./" "plugins, $PREFIX/lib/referencer, und ~/.referencer/plugins." #: referencer-plugins.xml:91(title) msgid "Common API" msgstr "Allgemeine API" #: referencer-plugins.xml:93(title) msgid "Plugin info dictionary" msgstr "Informative Beschreibung des Plugins" #: referencer-plugins.xml:94(para) msgid "" "All plugins must contain a dictionary at file scope capped " "referencer_plugin_info. This provides a number of fields " "describing the plugin. All plugins must provide the following fields, further " "optional fields are listed in following sections." msgstr "" "Alle Plugins müssen eine Beschreibungsdatei im Dateiabschnitt " "referencer_plugin_info enthalten. Diese stellt eine Anzahl " "von Feldern bereit, die das Plugin beschreiben. Alle Plugins müssen zwingend " "die folgenden Felder bereitstellen, weitere optionale Felder werden in den " "folgenden Abschnitten beschrieben." #: referencer-plugins.xml:102(title) msgid "Plugins" msgstr "Plugins" #: referencer-plugins.xml:106(entry) msgid "Plugin Name" msgstr "Plugin-Name" #: referencer-plugins.xml:107(entry) referencer-plugins.xml:316(entry) msgid "Description" msgstr "Beschreibung" #: referencer-plugins.xml:112(entry) msgid "author" msgstr "author" #: referencer-plugins.xml:113(entry) referencer-plugins.xml:322(entry) msgid "Author's name, or comma separated list. eg. \"Bob Dole\"" msgstr "" "Name des Autors oder durch Kommata getrennte Liste, z.B. \"Hans Schmidt\"" #: referencer-plugins.xml:118(entry) msgid "version" msgstr "version" #: referencer-plugins.xml:119(entry) referencer-plugins.xml:328(entry) msgid "A version string for the plugin. eg. \"1.3.2\"" msgstr "Eine Zeichenkette für die Version des Plugins, z.B. \"1.3.2\"" #: referencer-plugins.xml:124(entry) msgid "longname" msgstr "longname" #: referencer-plugins.xml:125(entry) msgid "The plugin's purpose. eg. \"Format author initials\"" msgstr "Der Zweck des Plugins, z.B. \"Format author initials\"" #: referencer-plugins.xml:133(para) msgid "The plugin info structure might be defined like this:" msgstr "" "Die Struktur der Plugin-Informationen könnte folgendermaßen definiert werden:" #: referencer-plugins.xml:136(programlisting) #, no-wrap msgid "" "\n" "\treferencer_plugin_info =\n" "\t {\n" "\t \"author\": \"John Spray\",\n" "\t \"version\": \"1.1.2\",\n" "\t\"longname\": _(\"Generate keys from metadata\")\n" "\t}\n" "\t" msgstr "" "\n" "\treferencer_plugin_info =\n" "\t {\n" "\t \"author\": \"John Spray\",\n" "\t \"version\": \"1.1.2\",\n" "\t\"longname\": _(\"Generate keys from metadata\")\n" "\t}\n" "\t" #: referencer-plugins.xml:146(title) msgid "Utility functions" msgstr "Hilfsfunktionen" #: referencer-plugins.xml:147(para) msgid "" "Import the module referencer to access the following " "functions:" msgstr "" "Importieren Sie das Modul referencer, um auf folgende " "Funktionen zugreifen zu können:" #: referencer-plugins.xml:153(term) msgid "" "referencer.download(short desc, long desc, url)" msgstr "" "referencer.download(Kurzbeschreibung, Langbeschreibung, Adresse)" #: referencer-plugins.xml:155(para) msgid "" "Web download convenience function. Returns a string containing the contents " "of the downloaded file, or an empty string on errors. Example:" msgstr "" "Funktion zur Vereinfachung von Web-Downloads. Gibt eine Zeichenkette zurück, " "die den Inhalt der heruntergeladenen Datei enthält, oder eine leere " "Zeichenkette bei Fehlern. Beispiel:" #: referencer-plugins.xml:160(programlisting) #, no-wrap msgid "" "\n" "referencer.download(\"Downloading tripe\", \"Downloading page from\n" "slashdot.org\", \"http://www.slashdot.org\")\n" "\t\t" msgstr "" "\n" "referencer.download(\"Downloading tripe\", \"Downloading page from\n" "slashdot.org\", \"http://www.slashdot.org\")\n" "\t\t" #: referencer-plugins.xml:165(para) msgid "" "As well as being convenient, this function inherits the user's " "gnome-vfs proxy settings so is in general " "preferable where more complex http functionality is not required. In any " "error case, the function returns an empty string." msgstr "" "Um die Einfachheit zu gewährleisten, übernimmt diese Funktion die Proxy-" "Einstellungen von gnome-vfs, so dass sie bevorzugt " "werden sollte, falls keine komplexe HTTP-Funktionalität gefordert ist. Im " "Falle eines Fehlers gibt die Funktion stets eine leere Zeichenkette zurück." #: referencer-plugins.xml:175(term) msgid "referencer._(text)" msgstr "referencer._(Text)" #: referencer-plugins.xml:177(para) msgid "" "Translation function. You probably want to do \"from referencer import _\" in " "order to support localisation of user-visible strings. Any user-visible " "string should be expressed as _(\"Some text\")" msgstr "" "Übersetzungsfunktion. Um die Übersetzbarkeit aller für den Benutzer " "sichtbaren Zeichenketten zu gewährleisten, sollten Sie \"from referencer " "import _\" benutzen. Jede sichtbare Zeichenkette sollte als _(\"Etwas Text\") " "ausgedrückt werden." #: referencer-plugins.xml:186(term) msgid "referencer.pref_get(key)" msgstr "referencer.pref_get(Schlüssel)" #: referencer-plugins.xml:188(para) msgid "" "Load a persistent configuration string. If the key is not found an empty " "string is returned. To avoid conflicting with other plugins, each plugin " "should use key names prefixed with the name of the plugin. These " "configuration items are stored in the GConf database along with " "Referencer's native configuration." msgstr "" "Lädt eine persistente Konfigurationszeichenkette. Falls der Schlüssel nicht " "gefunden wurde, wird eine leere Zeichenkette zurückgegeben. Um Konflikte mit " "anderen Plugins zu vermeiden, sollte jedes Plugin Schlüsselnamen verwenden, " "die den Namen des Plugins als Präfix enthalten. Diese Konfigurationseinträge " "werden in der GConf-Datenbank zusammen mit der originalen Konfiguration von " "Referencer gespeichert." #: referencer-plugins.xml:199(term) msgid "referencer.pref_set(key, value)" msgstr "referencer.pref_set(Schlüssel, Wert)" #: referencer-plugins.xml:201(para) msgid "Set a persistent configuration string." msgstr "Setzt eine persistente Konfigurationszeichenkette." #: referencer-plugins.xml:209(title) msgid "document class" msgstr "Die document-Klasse" #: referencer-plugins.xml:210(para) msgid "" "Referencer exposes individual documents with the " "document class. This supports a limited number of getter/setter methods:" msgstr "" "Referencer präsentiert individuelle Dokumente über " "die document-Klasse. Eine begrenzte Anzahl von Getter/Setter-Methoden werden " "unterstützt:" #: referencer-plugins.xml:217(term) msgid "get_field(key)" msgstr "get_field(Schlüssel)" #: referencer-plugins.xml:219(para) msgid "" "Retrieve a (case-insensitive) field such as \"author\". Builtin fields are " "doi, title, volume, number, journal, author, year and pages. Other " "arbitrarily named fields may or may not exist for a document. Getting a non-" "existent field returns an empty string." msgstr "" "Holt ein Feld wie z.B. »author«. Groß-/Kleinschreibung wird nicht " "berücksichtigt. Eingebaute Felder sind »doi«, »title«, »volume«, »number«, " "»journal«, »author«, »year« und »pages«. Weitere Felddefinitionen können, müssen " "aber für ein Dokument nicht existieren. Das Holen eines nicht existierenden " "Feldes gibt eine leere Zeichenkette zurück." #: referencer-plugins.xml:229(term) msgid "set_field(key, value)" msgstr "set_field(Schlüssel, Wert)" #: referencer-plugins.xml:231(para) msgid "Set a field." msgstr "Legt ein Feld fest." #: referencer-plugins.xml:238(term) msgid "get_key()" msgstr "get_key()" #: referencer-plugins.xml:240(para) msgid "" "Get the key of a document. This is the short ID the user would use to " "reference a document in a latex paper." msgstr "" "Holt den Schlüssel des Dokuments. Dies ist die Kennung, die der Benutzer zur " "Referenzierung eines Dokuments in einem Latex-Dokument verwendet." #: referencer-plugins.xml:248(term) msgid "set_key(value)" msgstr "set_key(Wert)" #: referencer-plugins.xml:250(para) msgid "Set the key." msgstr "Legt den Schlüssel fest." #: referencer-plugins.xml:257(term) msgid "get_filename()" msgstr "get_filename()" #: referencer-plugins.xml:259(para) msgid "" "Get the URI (eg \"file:///home/me/A_File.pdf\") of the file associated with " "the document." msgstr "" "Holt die Adresse (z.B. »file:///home/ich/Eine_Datei.pdf«) der einem Dokument " "zugeordneten Datei." #: referencer-plugins.xml:267(term) msgid "set_filename(value)" msgstr "set_filename(Wert)" #: referencer-plugins.xml:269(para) msgid "Set a document's file URI to value." msgstr "Setzt die Adresse des Dokuments auf Wert." #: referencer-plugins.xml:276(term) msgid "parse_bibtex(value)" msgstr "parse_bibtex(Wert)" #: referencer-plugins.xml:278(para) msgid "" "Parse value as plain-text BibTex and set the document's fields accordingly." msgstr "" "Liest den Wert als Klartext-BibTex ein und füllt die Felder des Dokuments " "entsprechend aus." #: referencer-plugins.xml:289(title) msgid "Configuration dialog" msgstr "Konfigurationsdialog" #: referencer-plugins.xml:290(para) msgid "" "Plugins can provide a configuration user interface invoked from the " "preferences dialog. The configuration button in the preferences dialog is " "enabled if the referencer_config() plugin includes a " "function." msgstr "" "Plugins können eine Konfigurationsschnittstelle anbieten, die über den " "Einstellungsdialog aufgerufen werden kann. Der Konfigurationsknopf im " "Einstellungsdialog ist aktiviert, wenn das Plugin referencer_config()" " eine Funktion einschließt." #: referencer-plugins.xml:300(title) msgid "Action Plugins" msgstr "Aktionen-Plugins" #: referencer-plugins.xml:301(para) msgid "" "Three things are required to insert actions into the Referencer UI: a description of the action, a string describing location of " "UI elements, and a function implementing the action." msgstr "" "Drei Dinge sind zum Einfügen von Aktionen in die Benutzeroberfläche von " "Referencer notwendig: eine Beschreibung der " "Aktion, eine den Ort der Steuerelemente beschreibende Zeichenkette sowie eine " "Funktion, welche die Aktion implementiert." #: referencer-plugins.xml:306(para) msgid "An action is defined as a dictionary with the following fields:" msgstr "" "Eine Aktion wird in einer Beschreibung mit den folgenden Feldern definiert:" #: referencer-plugins.xml:311(title) msgid "Actions" msgstr "Aktionen" #: referencer-plugins.xml:315(entry) msgid "Field" msgstr "Feld" #: referencer-plugins.xml:321(entry) msgid "name" msgstr "name" #: referencer-plugins.xml:327(entry) msgid "label" msgstr "label" #: referencer-plugins.xml:333(entry) msgid "tooltip" msgstr "tooltip" #: referencer-plugins.xml:334(entry) msgid "Long description" msgstr "Ausführliche Beschreibung" #: referencer-plugins.xml:339(entry) msgid "icon" msgstr "icon" #: referencer-plugins.xml:340(entry) msgid "Filename or stock eg. \"foo.png\", eg. \"_stock:gtk-edit\"." msgstr "Dateiname oder Stock-Name, z.B. »foo.png«, oder »_stock:gtk-edit«." #: referencer-plugins.xml:345(entry) msgid "callback" msgstr "callback" #: referencer-plugins.xml:346(entry) msgid "Action Function" msgstr "Funktion der Aktion" #: referencer-plugins.xml:351(entry) msgid "sensitivity (optional)" msgstr "sensitivity (optional)" #: referencer-plugins.xml:352(entry) msgid "Sensitivity policy function" msgstr "Funktion zur Regelung der Empfindlichkeit" #: referencer-plugins.xml:357(entry) msgid "accelerator (optional)" msgstr "accelerator (optional)" #: referencer-plugins.xml:358(entry) msgid "Shortcut key, eg \"]]>q\"" msgstr "Tastenkürzel, z.B. \"]]>q\"" #: referencer-plugins.xml:366(para) msgid "An action definition might look like this:" msgstr "Die Definition einer Aktion könnte etwa so aussehen:" #: referencer-plugins.xml:370(programlisting) #, no-wrap msgid "" "\n" "action =\n" " {\n" " \"name\":\"_plugin_genkey_genkey\",\n" " \"label\":_(\"Generate Key\"),\n" " \"tooltip\":_(\"Generate keys for the selected documents from their metadata\"),\n" " \"icon\":\"_stock:gtk-edit\",\n" " \"callback\":\"do_genkey\",\n" " \"sensitivity\":\"sensitivity_genkey\",\n" " \"accelerator\":\"]]>g\"\n" " }\n" "\t " msgstr "" "\n" "action =\n" " {\n" " \"name\":\"_plugin_genkey_genkey\",\n" " \"label\":_(\"Generate Key\"),\n" " \"tooltip\":_(\"Generate keys for the selected documents from their metadata\"),\n" " \"icon\":\"_stock:gtk-edit\",\n" " \"callback\":\"do_genkey\",\n" " \"sensitivity\":\"sensitivity_genkey\",\n" " \"accelerator\":\"]]>g\"\n" " }\n" "\t " #: referencer-plugins.xml:383(para) msgid "" "The plugin should also create a list called " "referencer_plugin_actions containing all actions:" msgstr "" "Das Plugin sollte auch eine Liste namens referencer_plugin_actions erzeugen, die alle Aktionen enthält:" #: referencer-plugins.xml:388(programlisting) #, no-wrap msgid "" "\n" "referencer_plugin_actions = [action]\n" "\t " msgstr "" "\n" "referencer_plugin_actions = [action]\n" "\t " #: referencer-plugins.xml:392(para) msgid "" "To place the actions in the user interface, the field \"ui\" must be added to " "the referencer_plugin_info dictionary. The ui value is a " "piece of GtkUIManager XML. This specifies UI elements as children of existing " "structures such as menus and toolbars. The parent structure is defined as " "src/referencer_ui.h in the Referencer source code. Here's an " "example of creating menu items in the Document menu and in " "the toolbar:" msgstr "" "Um die Aktionen in der Benutzeroberfläche zu platzieren, muss das Feld »ui« " "zur Beschreibung in referencer_plugin_info hinzugefügt " "werden. Der Wert von »ui« ist ein Stück GtkUIManager-XML. Dies legt Elemente " "der Benutzerschnittstelle als Kind-Elemente existierender Strukturen wie " "Menüs oder Werkzeugleisten fest. Die Eltern-Struktur wird als src/" "referencer_ui.h im Referencer-Quellcode definiert. Hier " "ein Beispiel für die Erzeugung von Menueinträgen im Menü Dokument und in der Werkzeugleiste:" #: referencer-plugins.xml:428(programlisting) #, no-wrap msgid "" "\n" "def sensitivity_genkey (library, documents):\n" " pass\n" "\n" "def do_genkey (library, documents):\n" " pass\n" "\t " msgstr "" "\n" "def sensitivity_genkey (library, documents):\n" " pass\n" "\n" "def do_genkey (library, documents):\n" " pass\n" "\t " #: referencer-plugins.xml:423(para) msgid "" "The functions referenced as \"callback\" and \"sensitivity\" in the action " "dictionary both have the prototype myfunction(library, documents) where " "documents is a list of referencer." "document and library is a unused. For " "example: " msgstr "" "Die als »callback« und »sensitivity« in der Aktionsbeschreibung referenzierten " "Funktionen haben beide den Prototypen Meine_Funktion(Bibliothek, Dokumente), " "wobei Dokumente eine Liste für referencer." "document ist und Bibliothek ungenutzt " "bleibt. Beispiel: " #: referencer-plugins.xml:436(para) msgid "" "Some plugin actions may wish to display arbitrary UI such as dialogs: this " "can be done using PyGTK. A detailed explanation of " "PyGTK would be outside the scope of this document: " "there are many tutorials on writing PyGTK " "applications. Note that GTK is already initialised " "by Referencer, so a plugin must not do any " "GTK initialisation or finalisation. For example, " "the following code would stand entirely alone:" msgstr "" "Einige Plugin-Aktionen erfordern die Anzeige zusätzlicher Elemente der " "Benutzeroberfläche wie beispielsweise Dialoge. Dies kann mittels " "PyGTK realisiert werden. Eine ausführliche " "Beschreibung von PyGTK würde den Rahmen dieses " "Dokuments sprengen. Es gibt zahlreiche Schritt-für-Schritt-Anleitungen zum " "Schreiben von PyGTK-Anwendungen. Beachten Sie, " "dass GTK bereits von Referencer initialisiert wird, daher muss sich ein Plugin nicht um die " "Initialisierung oder Finalisierung von GTK sorgen. " "Beispielsweise könnte der folgende Code vollständig allein stehen:" #: referencer-plugins.xml:446(programlisting) #, no-wrap msgid "" "\n" "import gobject\n" "import gtk\n" "dialog = gtk.Dialog (buttons=(\n" " gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,\n" " gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))\n" "label = gtk.Label (\"Hello World\")\n" "dialog.vbox.pack_start (label)\n" "dialog.show_all ()\n" "response = dialog.run ()\n" "dialog.hide ()\n" "\t " msgstr "" "\n" "import gobject\n" "import gtk\n" "dialog = gtk.Dialog (buttons=(\n" " gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,\n" " gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))\n" "label = gtk.Label (\"Hello World\")\n" "dialog.vbox.pack_start (label)\n" "dialog.show_all ()\n" "response = dialog.run ()\n" "dialog.hide ()\n" "\t " #: referencer-plugins.xml:459(para) msgid "" "For an example of an action plugin, have a look at plugins/genkey." "py in the Referencer source code tree." msgstr "" "Ein Beispiel eines Aktionen-Plugins finden Sie in der Datei plugins/" "genkey.py im Quellcode von " "Referencer." #: referencer-plugins.xml:467(title) msgid "Metadata Plugins" msgstr "Metadaten-Plugins" #: referencer-plugins.xml:468(para) msgid "" "Metadata plugins provide a function to fill out a document's metadata fields " "based on a document identifier." msgstr "" "Metadaten-Plugins stellen eine Funktion zum Ausfüllen der Metadaten-Felder " "eines Dokuments bereit, basierend auf dem Bezeichner des Dokuments." #: referencer-plugins.xml:472(para) msgid "" "To describe which identifier formats are supported, the plugin should create " "a list of strings called referencer_plugin_capabilities. " "At time of writing, the possible capabilities are \"doi\", \"pubmed\" and " "\"arxiv\"." msgstr "" "Um anzugeben, welche Bezeichnerformate unterstützt werden, sollte das Plugin " "eine Liste von Zeichenketten namens referencer_plugin_capabilities erzeugen. Zum Zeitpunkt der Erstellung dieses Leitfadens sind " "folgende Werte möglich: »doi«, »pubmed« und »arxiv«." #: referencer-plugins.xml:477(para) msgid "" "To do the lookup, a function resolve_metadata" "(doc, method) should be created. doc is the referencer.document whose fields " "should be filled out, and method is one of the " "capability strings listed in referencer_plugin_capabilities." msgstr "" "Um die Suche auszuführen, sollte eine Funktion resolve_metadata(Dokument, Methode) erzeugt werden. " "Dokument ist das referencer.document, dessen Felder ausgefüllt werden sollen, und Methode ist eine der in referencer_plugin_capabilities aufgelisteten die Fähigkeiten beschreibenden Zeichenketten." #: referencer-plugins.xml:483(para) msgid "" "For an example of a metadata plugin, have a look at plugins/pubmed." "py in the Referencer source code." msgstr "" "Ein Beispiel eines Metadaten-Plugins finden Sie in der Datei " "plugins/pubmed.py im Quellcode von " "Referencer." #: referencer-plugins.xml:491(title) msgid "About Referencer" msgstr "Info zu Referencer" #: referencer-plugins.xml:493(para) msgid "" "Referencer and this Plugin Writing guide were " "written by John Spray (jcspray@icculus.org). Some " "contributions to this guide came from Mario Blättermann (mariobl@gnome." "org. To find more information about Referencer and the most recent documentation, please visit the project page." msgstr "" "Referencer und dieser Plugin-Leifaden wurden von " "John Spray (jcspray@icculus.org) geschrieben. Einige Beiträge " "zu diesem Handbuch kamen von Mario Blättermann (mariobl@gnome.org. Weitere Informationen über Referencer " "sowie die aktuellste Dokumentation finden Sie auf der Projekt-Website." #: referencer-plugins.xml:500(para) msgid "" "This program is distributed 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. A copy of this license is included with this " "documentation; another can be found in the file COPYING included with the " "source code of this program." msgstr "" "Dieses Programm ist freie Software. Sie können es unter den Bedingungen der " "GNU General Public License, wie von der Free Software " "Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß " "Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Eine " "Kopie dieser Lizenz ist in " "dieser Dokumentation enthalten, eine weitere in der Datei COPYING, die im " "Quellcode dieses Programms enthalten ist." #. Put one translator per line, in the form of NAME , YEAR1, YEAR2. #: referencer-plugins.xml:0(None) msgid "translator-credits" msgstr "Mario Blättermann , 2009" #~ msgid "Referencer Development Team" #~ msgstr "Referencer-Entwicklerteam" #~ msgid "referencer._(text)" #~ msgstr "referencer._(text)" #~ msgid "referencer.pref_get(key)" #~ msgstr "referencer.pref_get(Schlüssel)" #~ msgid "get_field(key)" #~ msgstr "get_field(key)" #~ msgid "set_key(value)" #~ msgstr "set_key(value)" #~ msgid "set_filename(value)" #~ msgstr "set_filename(value)" #~ msgid "parse_bibtex(value)" #~ msgstr "parse_bibtex(value)" referencer-1.2.1/devhelp/referencer-plugins.omf.in0000644000175000017500000000044512150643002017106 00000000000000 manual referencer-1.2.1/Makefile.in0000664000175000017500000006155512150642772012645 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/referencer.spec.in $(top_srcdir)/configure AUTHORS \ COPYING ChangeLog INSTALL NEWS TODO depcomp install-sh missing \ mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = referencer.spec CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = -I m4 ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = --disable-update-mime-database --disable-scrollkeeper DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = po data libbibutils src plugins help devhelp EXTRA_DIST = \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ referencer.spec.in \ referencer.spec \ gnome-doc-utils.make \ m4 \ libsexymm DISTCLEANFILES = \ intltool-extract \ intltool-merge \ gnome-doc-utils.make \ intltool-update all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 referencer.spec: $(top_builddir)/config.status $(srcdir)/referencer.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/data/0000775000175000017500000000000012150643001011537 500000000000000referencer-1.2.1/data/introduction.html0000664000175000017500000002070712042412720015076 00000000000000 Introduction to Referencer

Introduction to Referencer

Author: John Spray

Overview

Referencer is a tool to help you manage your collection of documents, and to use them to generate a bibliography. It is designed with the scientist/researcher in mind, and "document" may be taken to mean "paper" in general, although Referencer can deal with any kind of document that BibTeX can.

At it's most basic, Referencer may be used for editing your documents and bibliography data (library). However, it also includes useful time-saving features. Chief amongst these is the automatic acquisition of bibliographic information (metadata) for some kinds of document. When you add a PDF file to your Referencer library, it will automatically be searched for key identifiers such as a DOI code or arXiv identifier. If either of these is found, Referencer uses your internet connection to retrieve the metadata for the document. If you've got a collection of already-downloaded PDFs of papers, this can save you a lot of typing!

Referencer also uses its knowledge of papers to provide handy functions such as opening the web page associated with the article, or opening the document itself. Additionally, you can attach tags to documents to catgorise them, and then browse documents more easily by filtering them by tag.

Referencer is intended to be extremely user-friendly, but to help you get up and running as smoothly as possible, the following sections explain how to use Referencer in more detail.

How do I...

use Referencer with BibTeX?

Referencer maintains its own library of your documents, rather than loading and editing a BibTeX file. As such, when you're ready to use your library in your LaTeX document, you can have Referencer generate a BibTeX file (Library->Export to BibTeX). By default this will include all documents in your library: if you would rather only export some documents then you can use the Selection: field in the export dialog to restrict the export to certain documents. Rather than repeatedly exporting when you make changes, you can tell Referencer to write the BibTeX file every time you change your library (Library->Manage BibTeX File).

Referencer will automatically handle conversion of special characters (e.g. ß) to their LaTeX equivalents (e.g. \ss). Depending on the BibTeX style you are using in your work, capitalisation of text in your latex output may differ from that in your Referencer library. This is to allow publishers to impose their own capitalisation schemes. If you want text to be capitalised in your work exactly as it is in your library, then you can use the Protect capitalization option in the BibTeX export dialog.

If you already have a BibTeX file, you can import it into Referencer (Library->Import...). Importing and then exporting a bibtex file is not guaranteed (or intended) to produce exactly the same file as went in: Referencer is not a BibTeX editor. Information such as document filenames and tags is not included in BibTeX files. You should always use your Referencer library file as the authoritative copy.

add documents?

  • By file/folder: Documents->Add File...
    If you have some document files you'd like Referencer to know about, you can add one or more files, or a whole folder (Documents->Add Folder..), and Referencer will create entries for each file. PDF files will be read, and Referencer will do its best to fill out the metadata for you.

    Note: when adding a folder of files, files named ".svn", "CVS", files with the extension ".bib" or ".reflib" and files with names starting "." are automatically skipped. These files can still be added individually.

  • By DOI code: Documents->Add Document with DOI...
    If you have the DOI code for a paper, you can save yourself the effort of inputting its metadata by simply giving Referencer the DOI and letting it look up the metadata for you.

  • By hand: Documents->Add Empty Reference...
    As a last resort, Referencer provides a simple interface for manually creating a document and inputting metadata. A document with no information is created, and the properties window is opened for you to enter a name for the document and some metadata.

  • From a BibTeX/EndNote/Refer file: Library->Import...
    Your existing bibliography files, or snippets from websites can be imported. Items from these files will be loaded and added to the currently open library.

  • By copy/paste: Edit->Paste BibTeX
    To conveniently import references from the web, or particular references from an existing BibTeX file, you can simply copy and past BibTeX markup into referencer, where these references will be added as if you had imported them from a file.

use different document types/fields?

Referencer's user interface is optimised for dealing with scientific papers. As such, the document type is "Article" by default and fields such as Title, Authors, Journal and Volume are shown. Other types of document may be selected in the properties window (Documents->Properties...). If you don't see the BibTeX type you want, simply type it in and it will be passed through verbatim when exporting to your BibTeX file. Some document types may require additional metadata fields, for example "Book" documents should have an "Editor" field. You can add this by expanding the Extra Fields section of the properties window, and clicking the New icon. To enter some data into your new field, select it and click the Edit icon.

Tagging and Searching

Tagging allows you to categorise your documents. Unlike a traditional hierarchical directory type organisation, a tag-based system allows a document to belong to multiple overlapping categories. For instance, you might have tags called "Physics" and "Biology", and another called "Exciting papers". If these were directories, you would have to make arbitrary choices about which to put a paper into. As it is, you can just assign both "Physics" and "Exciting papers" to a document, and when you're not excited any more just remove the "Exciting papers" tag.

Once you've created a tag (Tags->Create Tag...), a checkbox for the tag will appear in the bottom half of the Tag Pane (shown or hidden using View->Show Tag Pane). Once you've selected one or more documents, you can set or unset this tag for the group by clicking the checkbox.

Once you've tagged some documents, you may want to filter your view by tag. You can do this by clicking on a tag in the list in the top half of the Tag Pane. To include more tags in the view, hold Ctrl while clicking to select more than one tag.

To complement the tagging system, a search box is provided above the document view. Entering text into the search box will cause only those documents featuring the search text to be shown. The search only considers the Title, Authors and Key fields of the documents.

Plugins

Additional functionality can be added to Referencer using the versatile Python language. As of version 1.1, two kinds of plugin are supported: Metadata fetcher plugins, and Document action plugins. The former might be a script that looks up metadata for a DOI code in an internet database, while the latter might be something that manipulates the metadata of an existing document in some way.

Interested developers should download the referencer source code and look in the plugins/ directory for examples and in plugins/README for a brief guide.

referencer-1.2.1/data/main.css0000664000175000017500000000377412042412720013132 00000000000000 div#main { background-color:#EEEEFF; margin: 0 auto; } div#logo { float:left; margin-right:15px; } body { background-color:white; color:black; width: 780px; /*font: small Lucida Grande, Trebuchet MS, sans-serif;*/ padding:0px; /* border-bottom: 1px solid black; border-right: 1px solid black; border-left: 1px solid black; border-top: 1px solid black; */ margin: 0 auto; margin-top: 10px; } a.title { margin: 0; padding: 3px; display: block; text-decoration: none; color: black; background-color: inherit; border-width: 0px; } h1.maintitle{ font-weight: bold; margin-bottom:0px; } div#titlebar { background-color:#EEEEFF; border-width: 0px; padding:10px; } div#footer { border-width: 0px; padding: 10px; padding-top: 100px; width: 800px; float:left; } div#footer p { text-align: center; font-size: 50%; } div.menubox { float: right; width: 150px; background-color: #EEEEFF; margin-top:15px; /* border-top:1px solid black; border-bottom:1px solid black; border-left: 1px solid #54482e; border-right: 1px solid #54482e; */ } div.menubox h2 { margin-top:10px; padding-left: 3px; padding-top:1px; padding-bottom:1px; padding-right:2px; font-size: 130%; } div.menubox div { margin-bottom: 5px; } div.menubox p { margin-bottom: 0px; margin-left: 5px; } div.textbox { float: left; width: 610px; background-color:#EEEEFF; padding-top: 10px; padding-left: 10px; padding-right: 0px; padding-bottom: 10px; margin-top: 0px; margin-left: 0px; margin-top: 15px; margin:right: 0px; } div.textbox p { padding-right: 10px; } div.textbox ul { padding-right: 10px; } div.textbox div { /* margin-top: 15px;*/ } div#screenshots p { margin-bottom:35px; } h1, h2, h3, h4, h5, h6 { font-family: Trebuchet MS, Lucida Grande, sans-serif; } h3.subtitle{ padding-left: 20px; margin-top:5px; font-style: italic; } h2 { margin-top:0px; padding-left: 3px; padding-top:1px; padding-bottom:1px; background-color: #CCCCEE; } referencer-1.2.1/data/crossref.ui0000664000175000017500000002407712100335106013655 00000000000000 False Crossref Configuration False dialog True False True False end gtk-close True True True False True False False 0 False True end 0 True False 12 4 3 6 6 True False 0 Username: 1 2 1 2 GTK_FILL True False 0 Password: 1 2 2 3 GTK_FILL True False 0 <b>CrossRef Plugin</b> True 2 GTK_FILL True False 12 True False gtk-dialog-info 6 False False 0 True False True False The CrossRef OpenURL interface requires a username and password. True False False 0 http://www.crossref.org/requestaccount/ True True True True none http://www.crossref.org/requestaccount/ True True 1 False False 1 1 3 3 4 GTK_FILL GTK_FILL True True False False 2 3 1 2 True True False False False 2 3 2 3 True True 1 closebutton2 referencer-1.2.1/data/libraryfolder.ui0000664000175000017500000003274312042420323014667 00000000000000 1 True Library Folder Properties GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False False True False 0 True GTK_BUTTONBOX_END True True True gtk-close True GTK_RELIEF_NORMAL True 0 False True GTK_PACK_END 12 True False 0 True <b>Library Folder</b> False True GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0.5 0.5 1 1 6 0 12 0 True 3 3 False 6 6 True _Automatically add documents True GTK_RELIEF_NORMAL True False False True 1 2 1 2 fill True Location: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Select A File GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER True False False -1 1 2 0 1 fill True False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 2 3 fill 0 True True True False 0 gtk-dialog-info 6 0.5 0.5 0 0 0 False True Documents downloaded from the internet will be place into this folder, and it is optionally monitored for new documents. False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True 0 True True closebutton2 referencer-1.2.1/data/Makefile.in0000664000175000017500000004514312150642771013550 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/referencer.desktop.in.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = referencer.desktop.in CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(icondir)" \ "$(DESTDIR)$(mimedir)" "$(DESTDIR)$(mimeicondir)" \ "$(DESTDIR)$(resourcesdir)" DATA = $(desktop_DATA) $(icon_DATA) $(mime_DATA) $(mimeicon_DATA) \ $(resources_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ resourcesdir = $(pkgdatadir) resources_DATA = \ documentproperties.ui \ preferences.ui \ search.ui \ introduction.html \ main.css \ thumbnail_frame.png \ referencer.svg \ tag.svg \ unknown-document.png \ crossref.ui \ libraryfolder.ui desktopdir = $(datadir)/applications desktop_in_files = referencer.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) mimedir = $(datadir)/mime/packages mime_DATA = referencer.xml mimeicondir = $(datadir)/icons/hicolor/48x48/mimetypes mimeicon_DATA = gnome-mime-application-x-referencer.png icondir = $(datadir)/pixmaps icon_DATA = referencer.svg EXTRA_DIST = \ $(resources_DATA) \ $(desktop_in_files) \ $(mime_DATA) \ $(mimeicon_DATA) \ gnome-mime-application-x-referencer.svg \ $(icon_DATA) CLEANFILES = \ $(desktop_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): referencer.desktop.in: $(top_builddir)/config.status $(srcdir)/referencer.desktop.in.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-iconDATA: @$(NORMAL_UNINSTALL) @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) install-mimeDATA: $(mime_DATA) @$(NORMAL_INSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimedir)" || exit $$?; \ done uninstall-mimeDATA: @$(NORMAL_UNINSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimedir)'; $(am__uninstall_files_from_dir) install-mimeiconDATA: $(mimeicon_DATA) @$(NORMAL_INSTALL) @list='$(mimeicon_DATA)'; test -n "$(mimeicondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimeicondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimeicondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimeicondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimeicondir)" || exit $$?; \ done uninstall-mimeiconDATA: @$(NORMAL_UNINSTALL) @list='$(mimeicon_DATA)'; test -n "$(mimeicondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimeicondir)'; $(am__uninstall_files_from_dir) install-resourcesDATA: $(resources_DATA) @$(NORMAL_INSTALL) @list='$(resources_DATA)'; test -n "$(resourcesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(resourcesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(resourcesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(resourcesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(resourcesdir)" || exit $$?; \ done uninstall-resourcesDATA: @$(NORMAL_UNINSTALL) @list='$(resources_DATA)'; test -n "$(resourcesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(resourcesdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(mimedir)" "$(DESTDIR)$(mimeicondir)" "$(DESTDIR)$(resourcesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-desktopDATA install-iconDATA install-mimeDATA \ install-mimeiconDATA install-resourcesDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-desktopDATA uninstall-iconDATA \ uninstall-mimeDATA uninstall-mimeiconDATA \ uninstall-resourcesDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: install-am install-data-am install-strip uninstall-am .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook install-desktopDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-iconDATA install-info install-info-am \ install-man install-mimeDATA install-mimeiconDATA install-pdf \ install-pdf-am install-ps install-ps-am install-resourcesDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-desktopDATA uninstall-hook uninstall-iconDATA \ uninstall-mimeDATA uninstall-mimeiconDATA \ uninstall-resourcesDATA @INTLTOOL_DESKTOP_RULE@ @UPDATE_MIME_DATABASE_TRUE@install-data-hook: @UPDATE_MIME_DATABASE_TRUE@ -update-mime-database "$(DESTDIR)${datadir}/mime" @UPDATE_MIME_DATABASE_TRUE@uninstall-hook: @UPDATE_MIME_DATABASE_TRUE@ -update-mime-database "$(DESTDIR)${datadir}/mime" @UPDATE_MIME_DATABASE_FALSE@install-data-hook: @UPDATE_MIME_DATABASE_FALSE@ true @UPDATE_MIME_DATABASE_FALSE@uninstall-hook: @UPDATE_MIME_DATABASE_FALSE@ true # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/data/referencer.xml0000664000175000017500000000063212042412720014324 00000000000000 Referencer Library referencer-1.2.1/data/thumbnail_frame.png0000664000175000017500000000161412042412720015326 00000000000000PNG  IHDR@@iqgAMA cHRMz%%m_l<XՒfIDATxl1 .EL ᒒPh%i؅0h71x~=oߑ:H3oP4D޽{ch@M` ኑ  f@l b#-L`@#5 F| *S@@)h 43H,* Fj Fb@.h$J!@#5) Fz0H&@#9 !x@#= 0HO4%H0@ 2HL(e@@iH @24 Fz0H AQ&h @(#4r `P4 Fj@2; @#1hxH AQY; @#9 @@Y'@#5` #@B Fb @HL(e@,@#1 )4SJ; PRp(Gs (8 ;)A;*!T +0c#Fq|j* 1 v@ Bzcԟ 4@=m7]ĊٍlBpPǷ_&P4`[əĘ&qG>l a@xxh'MIENDB`referencer-1.2.1/data/preferences.ui0000664000175000017500000014644012042420323014330 00000000000000 65535 0 10 1 10 80 525 400 Preferences GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False False True False 0 True GTK_BUTTONBOX_END True True True gtk-close True GTK_RELIEF_NORMAL True 0 False True GTK_PACK_END True True True True GTK_POS_TOP False False 12 True False 6 True False 12 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True False 6 True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-go-up 4 0.5 0.5 0 0 0 False False True Move _up True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-go-down 4 0.5 0.5 0 0 0 False False True Move _down True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False 0 False True 0 False False 0 True True True False 6 True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-preferences 4 0.5 0.5 0 0 0 False False True C_onfigure... True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-about 4 0.5 0.5 0 0 0 False False True _About... True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False 0 False False 6 False 0 True gtk-dialog-info 6 0.5 0.5 0 0 0 False False True <i>Plugins nearer the top of the list are tried first when looking up metadata.</i> False True GTK_JUSTIFY_LEFT True False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False True False True True Plugins False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 12 True False 0 True 7 3 False 6 6 True <b>Proxy</b> False True GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 3 0 1 fill True True Use web proxy True GTK_RELIEF_NORMAL True False False True 1 3 1 2 fill True False 6 True Host: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True True 0 True False 0 True True True Port: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True 1 0 True GTK_UPDATE_ALWAYS False False adjustment1 0 True True 1 3 2 3 fill fill True True Use authentication True GTK_RELIEF_NORMAL True False False True 1 3 3 4 fill True Username: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 4 5 fill True Password: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 5 6 fill True True True True 0 True False 2 3 4 5 True True True False 0 True False 2 3 5 6 True False 12 True gtk-dialog-info 6 0.5 0.5 0 0 0 False False True <i>These proxy settings apply desktop-wide to all Gnome applications. Auto-configuration URLs are not supported.</i> False True GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True 1 3 6 7 fill 0 False False False True True Network False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True closebutton1 referencer-1.2.1/data/referencer.desktop.in.in0000664000175000017500000000034412064511407016215 00000000000000[Desktop Entry] Name=Referencer Comment=Document organiser Exec=referencer %F TryExec=referencer Icon=referencer Terminal=false Type=Application Categories=GTK;GNOME;Office; StartupNotify=true MimeType=application/x-referencer; referencer-1.2.1/data/Makefile.am0000664000175000017500000000207512042420323013517 00000000000000resourcesdir = $(pkgdatadir) resources_DATA = \ documentproperties.ui \ preferences.ui \ search.ui \ introduction.html \ main.css \ thumbnail_frame.png \ referencer.svg \ tag.svg \ unknown-document.png \ crossref.ui \ libraryfolder.ui desktopdir = $(datadir)/applications desktop_in_files = referencer.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ mimedir = $(datadir)/mime/packages mime_DATA = referencer.xml mimeicondir = $(datadir)/icons/hicolor/48x48/mimetypes mimeicon_DATA = gnome-mime-application-x-referencer.png icondir = $(datadir)/pixmaps icon_DATA = referencer.svg if UPDATE_MIME_DATABASE install-data-hook: -update-mime-database "$(DESTDIR)${datadir}/mime" uninstall-hook: -update-mime-database "$(DESTDIR)${datadir}/mime" else install-data-hook: true uninstall-hook: true endif EXTRA_DIST = \ $(resources_DATA) \ $(desktop_in_files) \ $(mime_DATA) \ $(mimeicon_DATA) \ gnome-mime-application-x-referencer.svg \ $(icon_DATA) CLEANFILES = \ $(desktop_DATA) referencer-1.2.1/data/referencer.desktop.in0000664000175000017500000000034412150643000015577 00000000000000[Desktop Entry] Name=Referencer Comment=Document organiser Exec=referencer %F TryExec=referencer Icon=referencer Terminal=false Type=Application Categories=GTK;GNOME;Office; StartupNotify=true MimeType=application/x-referencer; referencer-1.2.1/data/documentproperties.ui0000664000175000017500000006442012146750625015777 00000000000000 False Document Properties False dialog True False True False end gtk-cancel False True True True False False True False True 0 gtk-save False True True True False False True False True 1 False True end 0 True False 12 6 True False 0 <b>Document</b> True False False 0 True False 12 True False 12 False True True False False True False False False 0 True False 2 4 6 6 True False 0 _Key: True Key GTK_FILL True True True 1 4 True False 0 File: File 1 2 GTK_FILL True False False False Select A File 1 4 1 2 GTK_FILL True True 1 False True 1 True False True False 0 <b>Metadata</b> True False False 0 True False 6 False True True False Clear metadata False True False gtk-clear False False end 0 False True True False Fill out metadata from BibTeX on clipboard False True False 0 0 True False 2 True False gtk-paste False False 0 True False _Paste BibTeX True False False 1 False False end 1 False True True False Attempt to look up metadata for this document online False True False 0 0 True False 2 True False gtk-connect False False 0 True False _Look Up True False False 1 False False end 2 True True 1 False True 2 True False 12 True False False True 3 True True True True False True False vertical icons False False True False Add a field False gtk-new False True False True False Delete this field False gtk-delete False True False True False Rename this field False gtk-edit False True False False 0 True True in True True True True 1 True False <b>E_xtra Fields</b> True True False True 4 True True 1 cancelbutton2 okbutton2 referencer-1.2.1/data/gnome-mime-application-x-referencer.png0000664000175000017500000000650612042412720021114 00000000000000PNG  IHDR00WsBIT|dtEXtSoftwarewww.inkscape.org< IDATh՚]l\us?v޻R$Ilٖ'hЪp6@>iv_ #@ /)P0 ?2 MqȉElɢDQD.ޙr$Hsfܙ?̙sgWhu&=zk}0Mh?BtxPJ_belxݲ}@hy饗JN[U2oHmb'Nb( )w?<#Kp;44DVAv[k%`haawyZxc5?,ha4Mכڝ,z X,:99Rt駟'xE߬ތn˲Fd2aϞ=l6{w<gM)6拀0 bH4ٵkW$8_xKMHg1,LIJ,,bxx#G^{Z]oO1/^-``v`D&Ϝg۶ٻwcƿ9rdh;Q Vg&mIhU%f]Ë/g"L C0D)^]c[՞h:ZSE+ܶߤ 3,Wf:oCd6S5 nVݝ4zۻm[4_;@ZU*۹r~;ߐ߉"cl N0z `){3 !<ѿgiߩ?FzYRG ﲧ]+/W^[VY]_[b:B'P&!(chr}=t+4 e60o3*|MnyVŶɧ>2=J.'.%/'.1uBƳX\2e7r3S?: FKK7DZ߱] 0Op\+Kwb F3(K\mOF?R9gԮ3_Ebre6Po+[P7++T\]yK5 b\$iw)5aP 4(F3ٙ1af `B+h6f|̏ӟ>Aĉџ+sj"7%L^-c0={YLd)Fxo D8t;v0|QkÇ/l FZo ӓ8tT:eY ࣉaz3ܷy).3u&MOA+CR#BJE2vJga!=>?[OM֮F ?.aeC#CI : s~Sh%9wyea8uGGx)o5 bD,MTbyyf=ЎBBpyԚ1_94LT\- j 08/Xئpynbj=BJT\+ -7"gS tasL0ԗ&nK&?~O( €n.TX 7C5P1TV]hV]#Rx^')v.)Ss5(x\fGcc~pfjwόR4AM?`؋֚a),U盇GƚS$|v/5atC0 IeRĽxOkMVCM0zafpr^j f?/~ Ӈtg'TU)%\T.O2"s![DRL.C'@7!d7r۠#v\iH)V+ EQZ#v ӤrO+V6/ΦI$k0hK`㈹C T|T*5sq lZ!J)![Ț0,N|v;D"e.^eJ1 p.vխwK\ b9ɩOI2"V9}&ZA"P(088H" zvBif #w/HHs6SB%Ԗe u7Jl9Bvm {7Js70k: P4[}QMSO-x004VfVRTJZkcb^UB! P+EZ+J!R image/svg+xml Ulisse Perusin Dictionary dictionary translation referencer-1.2.1/data/search.ui0000664000175000017500000005432712042420323013276 00000000000000 True Document Search GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 600 400 True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False False True False 0 True GTK_BUTTONBOX_END True True gtk-close True GTK_RELIEF_NORMAL True 0 False True GTK_PACK_END 6 True False 6 True 3 3 False 6 6 True True True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-find 4 0.5 0.5 0 0 0 False False True _Search True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 2 3 0 1 fill True False True 1 3 1 2 True True True True True 0 True True 1 2 0 1 fill True Query: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Database: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 2 2 3 fill True True gtk-cancel True GTK_RELIEF_NORMAL True 2 3 2 3 fill 0 False True True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True True False 0 True False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-add 4 0.5 0.5 0 0 0 False False True _Add Selected Document to Library True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False 0 False False 0 True True Close referencer-1.2.1/data/unknown-document.png0000664000175000017500000003353312042412720015511 00000000000000PNG  IHDR}xMsBIT|d pHYs$$P$tEXtSoftwarewww.inkscape.org< IDATxw$}yi~ p,KIHP@u E(@N=F(1U;`$Xrx=ӾwdeuVu]PEdeVڗ~K!dgQBBU")%NmFomR~UJ̟ٟ(>FO(=379 p+kk5ǎ#sP5*|V{_kuVǶrF]v^x˲R&^f;6`Ovv4۽V|8r{| xo;+5;fd2'ATMd&ezjFƳƶjTJI,CUUo7N-ˢR8ϩH4PU׋0oEmT%VѶ.mֺv+o}vu^vףV+`.- 6l8v&ꛟFc*v~'fϽ,NoEVm<}=t[fpG\f.1?2qm;*jҐJRk6r|tΐ(wR) )I_=uY}GtvN`kq?}3'a'T$.TDڣc~:bkK<}D;  ^zgN9ҹuh UyX.e}[b#ǶrViz=76dKL;}eô]MS #0hXO, allRLTl|?{?{OG" Ѷ晾:M}[|o/rB}_ <4vB~Υߖ~aX,,8}7d4]ZK±]w{5{m#~{ 6x8~8^ndP&EjնM!zTWWkϣ+ݻt9\ŅK' }/VG?q.۵~O޸@ow;?84܁*̦J̦/q‰b!#U^8sy^=7I"aH3͒N YKt/tz_$aYh4'~$@|TT6CoO zF)G#gI/ M**CLb HBBlrc&M3;=džyq^{{'T,ރmg:}.ۋP|clW`O޽Ỽ} .]_!B9mU*m+O=Uӂw {lɹw*<*a\(xGFS#1"BXu +R8"EKbm%Ko\Ny9+Jw[_v>[/qJWO<@(] m$]j_?x'?pU,Y,aL++,'_EÁ+  QbQ(M\!tl ^bsmh) ڶ`![Eӟ_o^䧞mtnFokuş~94R]SIe&&W'+\~rt+Z" /#i)He1(=F{AJ㨊E j"@Ԗm\6&<{fdh˯1{?b~eμ;*rViK>yD, zT"dfRrc:a$961{]Q&| }݉ҿl@J!L%fj1Az qydU-Em;A\)N|zť8`!c%Fwn P ]KS (^~iEI?D2iꋘO`!Sf.]rpBWeD2cI8u׸2apv>tx+=8fW| 8ؾGQu'&ur/D<̯|D^eK" |0BѸ>5l[0AT y~sÊ3w5UyH <|x2 |S$IJjDOP"\~x*Ͻ]၃]೟|?߿E";=Ȍ—8Npo6EjGuSO_u]m D|kOtaZ~M= A:N{KW,%n ϓ+BGQaoZ gBS`Wsܻ?"jD8uƣcw芞&=P*xIe#{xѓŷ:\ia"f1Z$uXۋmN4O=}GBO<(:#(΍.b_gwBk%uQ!! Hwmҙx/28CA!(P@SJ{ɱb^vtnN!/ホ4zdf.yunUdFOmWP3}?rL׃*\XBZdo)Uuy?'Wbp﾿'{R$:K s EnXp}L.=@$`__Dس"G9IuAYf% N̦ K"#ID?ʼn?&+yqz{ژMgld޴AEJf k;%{.x`&13{{0p73 <13s439$ʤ2e&S \06W`PES}m~v*2ALm U_QnqmRIf~3O2p/BBË4g[\˷xu_~] UPaFch^xw/7~R6"70O=}/@ǧ82n\3I`uvu=tK/A,ϳ|`2YL\ī+ a/G"Ē[s ܵ2sKO,xXm3o.2'^>e]f1CabRsӚAI197Zxm@|#}:K WƓVsOܣrdQONHϻg߰㧍oږ+7g̦K(B0Ж '-{]+4e+?zr걇 m$Gn >OG ײ_wh AbޚX´$%L)WM:uɗ鍽fR?*9seAR5xyTs !}A`V6}p9mQ /%bhb)bY#qW:EҞjGc= tk\pī {4 Y_$Vs%Il=j7ɕ)}‚r508e`դE#_JP(v?@yWWVZʅ%UGBcq| ݌_᧞:z9ֻ@4 @2IEk *72v(ҕH|]D2,.޼xJ"|i]͐-StIuJ+ޢj8}s vGM]b-|/=F:y㭫\Or81J0E);f:{ii w[O݋,C1RL%R 4T(WӘwȧ7pҍ-e hunn946Z=*f:Ӌ 81C]7YȼR01dH)YNSHKGSuj=/qzIoG\DY+< NU !4,*un27;a OBJ|޶q 1)vPy⯑̌EN0ITaڒֲ&ARiIE}x>~4^\k;ñQ6 _`_DJzg5*ly_W3yTE02hKb0Ui <8UeJBR2M 0%ތ%^Kzģ Ĩ5¾ %Œ?|W)VP* ,9)5!k\ mx5A$}WΧS K!.ғ0>psT>*MɢJ]r4F+.2'ddo26cS/QmщbfScT+%4aP5* t@(PƼ|˻3CASf tF.7=H`Z~&f!pH''W(U8,-d]8" s7MvXOgr9\[p`HTM-*,0T\d?db.z7b I[,]fM/Q4O0UӬI gJ`8jK٘kr=KJr 4UFU}T ?,Ce8喔*UB,) T,K(,;OmxULq*%(x0 V-*VKP\Cם9A,K6 ~:_#쟧-rѹϣ*8PcT*Eʅ,ƺHE|/H)*ˬMv`p%w* |J,8aTϟ"SʓɓupXR/VbQhNrYKE& 2蚂kT Jڠ @Qt|LJeYIXȢ(Y_ r ˥mչVcAKJJ2@,!|glhk22[aZkA["Ԏ*YgoF #EUV^ZJor9ȭ¾zh5U%Z'j*Yf0>O;\MtrQ*FӪ78;(^m9kj o^xr8=_6kkPQtQAh^nkiʹ%1Lޙ_f") T[Oǃ)%73XR2u4c) F2՚w)Bąi$g@Jd]/sOT7rV:ߤX 3< H Û /\6q!i\,$B4L^+Fg~j|o4O}dnѢ+zu 'W2p5gҲ:&Tdo &cY2NGM R,R@w$A's7~#ۍ#Cg"a 2 Z[%+XP(ျfjOd%,iYeL΍uP*^GQ1BܘZخ1x{ ˇߓ\ c LS戅<:!WjHr*QoLǮ7y:G*K+2>O'U3_7s{O*׃"J{˓1op?蚊ԳgC6J^/8QZ|%-|n7`S^ [XXaz!NDY^T5IDAT5Wͩ H`ɥwZrv+"Ņ[wqzh L rNZH ݺ-xb0g+)ge B7`ǻ+9SБ8IoQYC]M慎\6Y\w{qM;P:>ϑ-eDlwmz>\PfTLol;| =tAƿ0ъZ|G~;zޫ,lR e2T140B:cc9I$&yqt%aR>ZJ=Zkˆ]C]~L }GG8 I ^P~^\aܭ Խ5lNT*UjHĖEv$. PFJ.EqCStA8Ô ]{{$%WxoxxB"|^x "(WL.J),,}û^'zr1 'xd)w\aPp6ɓ?dhҀ+$3%fSFc^Ӹힶ I4@Gdlx_G9ڠ׶EH)G6pi>Jϲ.o<{5R"\(05UnbDі o'ǯ#0^ʑ'-;dfqy !  o+L ӑ EJ3T R ^ 2}E0.Ke-a2Mju7c=1H)ALӠy`UUQƆt'#r~K᧞=)r1> %MWT?GR&5kZPXxMe1 kz| .rHb`ZcMWhC"}uQj\^/^j?6f'pwkkp;/[:`!n9yٚr~Ż"5ϗ|ϲjyܙI,9C#uݫ+J#IvSK?]*v3/f9>7iZ D2=VRzrA=aILK&\K+_uLʦkbߚ9ܵ*}!B~ťSSs|:'6;kjFgh޿ۥY4@zw[/2졳W8{;yԊCvƠe ;IFb` 'gdl30$];iruθolqXˮay;v37uY5Ms{Ž\Ar7p8Lwwl@_pPrN)ƾkGh/z+s-9=LM-qe0vDMKِ8 V-O#Z'߽Hc,-eIxy`o:;UUw܈xwp7 `?W-h]UUt]/mxqqG\v͊nWV'_|WP{8UU4alp8qzM;S/ӖQ:x5LKo Nw[ zXq"^T4~l}3yG!'ɗxkHKP>۸\6Do3KY_w}ks oCJ\r Xقg;z7ڟҨ צaN]NGz*jqߞ @xk;W#tZWmKUt<66(w|a^ 7AX)ūiqw*U/ϟ}kcAξ8T٫Keu>_cffPs,mmm7$_RҍUZϽrlDɽ̦~ǐ KOt.Xx[pk&/P.3EY kSJTҵ^m_.o}ا8Wipro'^;q޹q?'vJ2M;M#fpm7'R|"|} aeJ@~nabr 㯝#`O c3>pEt't'(bptU?6Zl ↌̀,߱Z7Jn Zi6YN(Ns?/\gzvC{h88 S06![XgIhm k %5Iʥ2?î aֹm 9Zu>!4V^Z.6qtH冥5>Bj~/GIeK$zvWWGjL'z}Bg Ըȩn&7L:b+nН(BEE#j:;@ͦk㛪9}'yff-ba/˲IeJe*>L~F<#IK\1Rڞթ;cQUQ81RaEi[%g;ށ(wDRt4#A~V׮ukɩ9z x< u3Nd *Ua|qpdMU5ggh*h$KG  ptЏ(nilDG6'T:t)%juGƲAw+KA,KŞP !!\ ]Ji 0XG8aں' 邏 s^\dY&&gQT1:":^{pcjaڗE~wL&_b.|\ny#xh|h.ΆՍ,ٷ޽6Csfu}i*WU! V׽5j*)lاQ/\3>g22[`~nEQDB>σWzu ]S1R5)RR.W(dyi:pʞ.]&7l73 -BӴ #$\{7W@cʺqpϚHt*!\nm䰣ո~-НwYnLiRl. 5m&F˺u֭jֵs?R:нT\NE:N嫭GNyr8ơ&R,&/P8wI39쬛+UCh%9}F^sg|NcZ7SGļCPTeu|uh΃ԬM {nNr“Hj-Nhlg=!NrS~UU):uwwUV] ou*RzQT(TU^o!7B ǽn^HujC*jo#1C"WYuIq… Q!r(x<<7z57MeP#[WW͙wT*秚7 z˰B 7Bq˲}Q~ݯt|VݮFq'u0s)gqtt;4A#FRJ،(uHbG~w}4nkuEs5MӼ>)R[֡Z$qB !b0;;;Ͳ^Wj@mkq i ܸG̸};!M[mPiqsx=%w,V?7`󏜾1Z twMAR|ùCNW;Cu\nRrBoI7fVbG52;[n67\-^?}[Aj% X l/wo;w0I6m7Vb|5QW image/svg+xml referencer-1.2.1/data/gnome-mime-application-x-referencer.svg0000664000175000017500000023530512042412720021130 00000000000000 image/svg+xml Ulisse Perusin Dictionary dictionary translation referencer-1.2.1/plugins/0000775000175000017500000000000012150643002012310 500000000000000referencer-1.2.1/plugins/lyx.py0000664000175000017500000000521012042412720013415 00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Add quote in lyx using lyxclient import os import referencer from referencer import _ referencer_plugin_info = { "longname": _("Cite in LyX"), "author": "Aurélien Naldi", "ui": """ """ } referencer_plugin_actions = [ { "name": "_plugin_lyx_cite", "label": _("Cite in LyX"), "tooltip": _("Cite the selected documents in LyX"), "icon": "lyx.png", "callback": "do_cite", "accelerator": "d" } ] LYXPIPE = None HOME = os.environ.get("HOME") LYXPREFS = os.path.join(HOME, ".lyx/preferences") DEFAULTPIPE = os.path.join(HOME, ".lyxpipe.in") # read the path to the lyx pipe from the lyx configuration file if os.path.exists(LYXPREFS): try: p = open(LYXPREFS, "r") while True: l = p.readline() if not l: break if l.startswith("\\serverpipe "): LYXPIPE = l.split('"')[1] + ".in" break p.close() except: # Fall through to lyxclient pass # Locate lyxclient lyxClientBinary = None for dir in os.environ['PATH'].split (os.pathsep): exe = os.path.join (dir, "lyxclient") if (os.path.exists(exe)): lyxClientBinary = exe print "\tFound lyxclient at %s\n" % exe break def do_cite (library, documents): empty = True keys = "" for document in documents: if not empty: keys += "," keys += document.get_key() empty = False if empty: raise "No keys" return False existing_lyxpipe = None if LYXPIPE and os.path.exists(LYXPIPE): existing_lyxpipe = LYXPIPE elif os.path.exists(DEFAULTPIPE): existing_lyxpipe = DEFAULTPIPE if existing_lyxpipe is not None: try: print "using lyx pipe: "+existing_lyxpipe p = open(existing_lyxpipe, 'a') p.write("LYXCMD:referencer:citation-insert:" + keys + "\n") p.close() return True except: print "Error using the lyx pipe" elif lyxClientBinary is not None: # Compose citation insertion command cmdStr = "LYXCMD:citation-insert " + keys + "\n" try: retval = os.system ("%s -c \"%s\"" % (lyxClientBinary, cmdStr)) except: return False if retval != 0: raise "LyXClient failed, is LyX running?" else: raise "Couldn't find lyxclient" #return False return True referencer-1.2.1/plugins/genkey.py0000664000175000017500000000652612100335000014064 00000000000000#!/usr/bin/env python # Generate Bob08 Alice99 Alice99b type keys import os import referencer from referencer import _ import gobject import gtk referencer_plugin_info = { "author": "John Spray", "version": "1.1.2", "longname": _("Generate keys from metadata"), "ui": """ """ } referencer_plugin_actions = [] action = { "name":"_plugin_genkey_genkey", "label":_("Generate Key"), "tooltip":_("Generate keys for the selected documents from their metadata"), "icon":"_stock:gtk-edit", "callback":"do_genkey", "sensitivity":"sensitivity_genkey", "accelerator":"g" } referencer_plugin_actions.append (action) def sensitivity_genkey (library, documents): if (len(documents) > 0): return True else: return False # library is always Nil, it's only there for future proofing # documents is a list of referencer.document def do_genkey (library, documents): empty = True s = "" assigned_keys = {} format = referencer.pref_get ("genkey_format") if (len(format)==0): format = "%a%y" # Prompt the user for the key format dialog = gtk.Dialog (buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) dialog.set_has_separator (False) dialog.vbox.set_spacing (6) dialog.set_default_response(gtk.RESPONSE_ACCEPT) hbox = gtk.HBox (spacing=6) label = gtk.Label ("Key format:") entry = gtk.Entry () entry.set_text (format) entry.set_activates_default(True) dialog.vbox.pack_start (hbox) hbox.pack_start (label) hbox.pack_start (entry) label = gtk.Label ("Markers:\n\t%y = two-digit year\n\t%Y = four-digit year\n\t%a = first author's surname\n\t%t = title without spaces\n\t%w = first meaningful word of title") dialog.vbox.pack_start (label) dialog.show_all () response = dialog.run () dialog.hide () if (response == gtk.RESPONSE_REJECT): return False format = entry.get_text () for document in documents: author = document.get_field ("author") author = author.split("and")[0].split(",")[0].split(" ")[0] year = document.get_field ("year") title = document.get_field ("title") for c in ":-[]{},+/*.?": title = title.replace(c, '') title_capitalized = "".join([w[0].upper()+w[1:] for w in title.split()]) first_word = [w for w in title.split() if w.lower() not in ('a', 'an', 'the')][0] title = title.replace(' ', '') shortYear = year if len(year) == 4: shortYear = year[2:4] key = format key = key.replace ("%y", shortYear) key = key.replace ("%Y", year) key = key.replace ("%a", author) key = key.replace ("%t", title) key = key.replace ("%T", title_capitalized) key = key.replace ("%w", first_word) # Make the key unique within this document set append = "b" if assigned_keys.has_key (key): key += append # Assumes <26 identical keys while assigned_keys.has_key (key): append = chr(ord(append[0]) + 1) key = key[0:len(key) - 1] key += append print key assigned_keys[key] = True document.set_key (key) referencer.pref_set ("genkey_format", format) return True referencer-1.2.1/plugins/google-books.py0000664000175000017500000000227212043674552015213 00000000000000import gtk import re import referencer from referencer import _ # A referencer plugin to get bibtex info for a book from Google Books # # Copyright 2011 Phoenix87 # Copyright 2012 Mads Chr. Olesen referencer_plugin_info = { "author": "Phoenix87", "version": "0.2", "longname": _("Fetch BiBTeX metadata from Google Books") } referencer_plugin_capabilities = ["url"] pattern = r'http://books[.]google[.](.+?)/books.+?id=([a-zA-Z0-9_]+)' def can_resolve_metadata (doc): url = doc.get_field("url") if not url: return -1 res = re.match(pattern, url) if res: return 90 return -1 def resolve_metadata(doc, method): url = doc.get_field("url") res = re.match(pattern, url) url = r'http://books.google.%s/books?id=%s' % (res.group(1), res.group(2)) doc.set_field("url", url) bibtex_url = r'http://books.google.%s/books?id=%s&output=bibtex' % (res.group(1), res.group(2)) #print "url: ", repr(bibtex_url) bib = referencer.download("Fetching BiBTeX data", "Downloading BiBTeX metadata for the book...", bibtex_url) #print "bib:", repr(bib) doc.parse_bibtex(bib) doc.set_type("book") return True referencer-1.2.1/plugins/Makefile.in0000664000175000017500000003273512150642771014323 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = plugins DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(plugindir)" DATA = $(plugin_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugindir = $(pkglibdir) plugin_DATA = \ ads.py \ dblp.py \ genkey.py \ google-books.py \ isi-plugin.py \ lyx.py \ lyx.png \ pubmed.py EXTRA_DIST = \ $(plugin_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu plugins/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pluginDATA: $(plugin_DATA) @$(NORMAL_INSTALL) @list='$(plugin_DATA)'; test -n "$(plugindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(plugindir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(plugindir)" || exit $$?; \ done uninstall-pluginDATA: @$(NORMAL_UNINSTALL) @list='$(plugin_DATA)'; test -n "$(plugindir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(plugindir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pluginDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pluginDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pluginDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-pluginDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/plugins/pubmed.py0000775000175000017500000001704612043447210014075 00000000000000#!/usr/bin/env python # Simple script to query pubmed for a DOI # (c) Simon Greenhill, 2007 # http://simon.net.nz/ # Modified for integration with referencer by John Spray, 2007 import urllib import referencer from referencer import _ from xml.dom import minidom referencer_plugin_info = { "longname": _("PubMed DOI resolver"), "author": "Simon Greenhill, John Spray" } referencer_plugin_capabilities = ["doi", "pubmed"] # Encoding: every PyUnicode that minidom gives us gets # encoded as utf-8 into a PyString, this is what PyString_AsString on the C++ # side will expect def get_field (doc, field): value = doc.getElementsByTagName(field) if len(value) == 0: return "" else: if (len(value[0].childNodes) == 0): return "" else: return value[0].childNodes[0].data.encode("utf-8") def text_output(xml): """Makes a simple text output from the XML returned from efetch""" print "pubmed.text_output: calling parseString on ", len(xml) , " characters" print "pubmed.text_output: calling parseString on ", xml xmldoc = minidom.parseString(xml) print "pubmed.text_output: made it out of parseString" if len(xmldoc.getElementsByTagName("PubmedArticle")) == 0: raise "pubmed.text_output: PubmedArticle not found" output = [] pmid = get_field (xmldoc, "PMID") output.append (["pmid", pmid]) articleidlist = xmldoc.getElementsByTagName('ArticleIdList') if (len(articleidlist) > 0): articleids = articleidlist[0].getElementsByTagName('ArticleId') for articleid in articleids: idtype = articleid.attributes.get("IdType").value if "doi" == idtype and len(articleid.childNodes) != 0: output.append (["doi", articleid.childNodes[0].data.encode("utf-8")]) title = get_field (xmldoc, "ArticleTitle") output.append (["title", title]) abstract = get_field (xmldoc, "AbstractText") authors = xmldoc.getElementsByTagName('AuthorList')[0] authors = authors.getElementsByTagName('Author') authorlist = [] for author in authors: LastName = get_field (author, "LastName") ForeName = get_field (author, "ForeName") if ForeName == None or ForeName == "": print "pubmed.text_output: Fallback on initials" ForeName = get_field (author, "Initials") author = '%s, %s' % (LastName, ForeName) authorlist.append(author) authorstring = "" for author in authorlist: if (len(authorstring) > 0): authorstring += " and " authorstring += author if (len(authorstring) > 0): output.append (["author", authorstring]) journalinfo = xmldoc.getElementsByTagName('Journal') if len(journalinfo) > 0: journal = get_field (journalinfo[0], "ISOAbbreviation") if len(journal) == 0: journal = get_field (journalinfo[0], "Title") output.append (["journal", journal]) journalinfo = journalinfo[0].getElementsByTagName('JournalIssue') if len(journalinfo) > 0: volume = get_field (journalinfo[0], "Volume") issue = get_field (journalinfo[0], "Issue") year = get_field (journalinfo[0], "Year") output.append (["volume", volume]) output.append (["number", issue]) output.append (["year", year]) pages = get_field (xmldoc, "MedlinePgn") output.append (["pages", pages]) output2 = [] for pair in output: if len(pair[1]) > 0: output2.append(pair) return output2 def referencer_search_TEST (search_text): email='referencer@icculus.org' tool='Referencer' database='pubmed' retmax = 100 params = { 'db':database, 'tool':tool, 'email':email, 'term':search_text, 'usehistory':'y', 'retmax':retmax } # try to resolve the PubMed ID of the DOI url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?' + urllib.urlencode(params) data = referencer.download (_("Searching pubmed"), _("Searching pubmed for '%s'") % search_text , url); # parse XML output from PubMed... print data xmldoc = minidom.parseString(data) ids = xmldoc.getElementsByTagName('Id') # nothing found, exit # FIXME: not really an error if len(ids) == 0: raise "pubmed.referencer_search: no results" webenv = xmldoc.getElementsByTagName('WebEnv') if len(webenv) == 0: raise "pubmed.referencer_search: no webenv" webenv = webenv[0].childNodes[0].data query_key = xmldoc.getElementsByTagName('QueryKey') if len(query_key) == 0: raise "pubmed.referencer_search: no query_key" query_key = query_key[0].childNodes[0].data params = { 'db':database, 'tool':tool, 'email':email, 'webenv':webenv, 'query_key':query_key, 'retmax':retmax } url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?' + urllib.urlencode(params) data = referencer.download (_("Retrieving pubmed summaries"), _("Retrieving summaries for '%s'") % search_text , url); xmldoc = minidom.parseString(data) results = [] for docsum in xmldoc.getElementsByTagName('DocSum'): title = "" author = "" pmid = "" id = docsum.getElementsByTagName("Id") if len(id) !=0: pmid = id[0].childNodes[0].data else: raise "pubmed.referencer_search: docsum without id" for childnode in docsum.getElementsByTagName("Item"): if childnode.getAttribute("Name") == "Title": title = childnode.childNodes[0].data if childnode.getAttribute("Name") == "Author": author = childnode.childNodes[0].data results.append ({"token":pmid,"title":title,"author":author}) print results return results def referencer_search_result_TEST (token): data = get_citation_from_pmid(token) fields = text_output(data) print "referencer_search_result: token = ", token print "referencer_search_result: fields = ", fields dict = {} for field in fields: dict[field[0]] = field[1] return dict def get_citation_from_doi(query, email='referencer@icculus.org', tool='Referencer', database='pubmed'): params = { 'db':database, 'tool':tool, 'email':email, 'term':query + "[doi]", 'usehistory':'y', 'retmax':1 } # try to resolve the PubMed ID of the DOI url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?' + urllib.urlencode(params) data = referencer.download (_("Resolving DOI"), _("Finding PubMed ID from DOI %s") % query , url); # parse XML output from PubMed... xmldoc = minidom.parseString(data) ids = xmldoc.getElementsByTagName('Id') # nothing found, exit if len(ids) == 0: raise "pubmed.get_citation_from_doi: DOI not found" # get ID id = ids[0].childNodes[0].data print "pubmed.get_citation_from_doi: DOI ", query, " has PubMed ID ", id return get_citation_from_pmid (id) def get_citation_from_pmid (pmid, email='referencer@icculus.org', tool='Referencer', database='pubmed'): params = { 'db':database, 'tool':tool, 'email':email, 'id':pmid, 'retmode':'xml' } # get citation info: url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?' + urllib.urlencode(params) data = referencer.download (_("Resolving PubMed ID"), _("Fetching metadata from NCBI for PubMed ID %s") % pmid, url); return data def can_resolve_metadata (doc): if doc.get_field ("pmid"): return 90 elif doc.get_field ("doi"): return 50 return -1 def resolve_metadata (doc, method): try: if (method == "doi"): xml = get_citation_from_doi (doc.get_field ("doi")) elif (method == "pubmed"): xml = get_citation_from_pmid (doc.get_field ("pmid")) except: print "pubmed.resolve_metadata: Got no metadata" # Couldn't get any metadata return False try: items = text_output (xml) except: print "pubmed.resolve_metadata: Couldn't parse metadata" # Couldn't parse XML return False itemCount = 0 for item in items: print "pubmed.resolve_metadata: Setting %s:%s\n" % (item[0], item[1]) if (len(item[1]) > 0): doc.set_field (item[0], item[1]) itemCount = itemCount + 1 return itemCount > 0 referencer-1.2.1/plugins/lyx.png0000664000175000017500000001445712042412720013566 00000000000000PNG  IHDR@@iqbKGD pHYs  tIME &tEXtCommentCreated with The GIMPd%nIDATxy\Wu;\U=wK,Yey#~Cb{'b H Y?p  q.)N*]?(z.>~} m!̹"H:Rukm tD# pj%0LI[u'B Jƕ-jA=֫Ҏn#(B+iVLY4 B'+d||k׮"`?\ crv:yԤ0h=Ocx!'~~铻J7H){1֚D"A7A\ngWM@6~bꇃw8ӯVGOPsw_{9ơ},^~rxRtO 5l9-[yZԴt];ƹ&]] ^V>aŗeేOɷWw)w͈ʍG,^ٰ;8+gX *=yj<\_=|q~tӠ &'~  )0yOe۶ٺRO}$r3"iqҐiK9MkIphhC/-J׃ B4e:zxQmۥq7۷뾷WNF CE%\GTS`aϾ^vAZCS3H&zig%=E.YnTꠍU7@BO'uhTb"seokD-vbuCĒDS0uGn3}.FC2J ɳ]:_Gm,"cTufʆo}v(4p!ټXCY|VW9y %z _i/dy<;}:KncTdAYd<obHI 6XyXG(19DPxx `43H !%sB!b43]$a=f'ZEC&eICR)leo|{|?޴[w2 !DU&N[~ 0( ϜOk9YZ T9Ҳ:L&^3atF22e5$\x˙?|e># +'/(&;$|F A86k4<w뷱iF9*)E;SC~_WLG$D胲CUu/ :|j8$3ypE)Z]T}L=qÏZ4QBBYmci*'{-9J6T{P+ CaF)倛7NjCfg}Mm>w(ɦݒᤙ7kȘ[l"BK9hCD%7R)eq~z\(4r=2T uC}q^t%VRJ)t['2&䞈P %ʦb3j-&%Gϼጝm0ܹ k+jK$L?r~.\JNuX6bbt=MC(V(|abñ@Ej#لf:fBՒG%( Δ=NgS8v{{76šے=V/KjsǺ峝hZZ צR%J*UP׋cgRWK88,=\ٿI1{SCGTJ4Nd!{֡#m7-d!92r]ڵ4۲ 6yEoT͛n-iYY1/2$Q2,i>zNaPu1یyw(rr´&oˎL& ܤ$:n6yh[9vxo}s_1^@e HHC;rZ.m;َFcxXd 2u kC/ξdyN-qqꏈGAğ}2ͼČ)iX,F̎B5ޞɶ[fNm(=`v]<O/jt'mvszR8fT? {7LHLLJt2C}e=#HZ~lz:$LO8vul|lNSh _-teL~^( &ˊ+?+H}]ۄijvZ8Kc&ab quI%d6 4#2&z)gC f ㄁GEDa^ʒ(Kbٳ`+r/ɤk;|.4vΥS=5]*c4IJmcr2rIAyZ8*L$L9IC֗rUo:T=11 'C nb8a>B6N9&Gs]$5Q8Mzti~s?~4nLmnGN2+Mtu^Fi[SlkЦdwNɥy h9jl{H\I۩X;.p'mWMJdE,0鎫=e'nM<̋1̵5fnyљ|F^$)%j7=cVl\45˟/mT7 ˨fg]%㊮ތX؇. 1ԊP)-DLY>!R,Y?xbs2}Uk ϡ{m/X> ^1cL\_]{`"M&M$+Xܷ@gʡ)g '=/(f'nDSs>Gr&0 4OqV\=+1 qhmHuvE5 63Én9cͩ۟C_ó`Lwl -"a #RƄ̊ŒxRP4[4H3yqڧkU4FPK:8⌔69 .1H l "1 -Ljƀ0LnIu)d#Ceb>|sxR蟮 I0Gk}^Jw%n2/;'>;b3vZ71csdž?k1!i"Qlh(a0๬! 6ycd) o=}+R6%XiB\Kp X`"Ch?t󳫌zmk7d\@7jj-<)FJuYvHDŽo8$GK*e.ᄀiT >^HGzњ-4=hL lvoJSM\R}T=]y*q <g&Z 1xŞI¨]:`><%Bw2R.jqʥHrT !RƦf}Z7g꨻dEQ зT#u7~oCi*˗J-^!)-FǛJM3=34Y&*DzXDzȾZ1)dY"2mH<0W'w  RRt` 6K.ictuSz"zQ:4lXJPh埶)Wz"%vJ+3rI9-v1=S5"lAVKdS]"%2JB2eVp-|KͿ}җ; @sl~m@CMqw_5ц˜h+ԲӳVk޶ݭc&o?RE٪{Y\^˓Dٸh<[VjG5Z5./Uai6Kvwz3DSe|w4e$l*A;[BhJJXr\=͊nٿ_J$D;_-\rYg۾BªMw7s/"!n8_엦yT*y ^@Z\Il7bóf^0i~uy@s#ozl hqyZ m/*`$:u?7 {0h+iIENDB`referencer-1.2.1/plugins/isi-plugin.py0000644000175000017500000004573112043720321014673 00000000000000#!/usr/bin/env python # A referencer plugin to get document info from ISI Web of Science using # the Title/Author/Year fields of the document (any or all of them) # # Copyright 2008 Mario Castro, Yoav Avitzour # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os import referencer from referencer import _ import sys, urllib2, urllib import gobject import gtk from xml.dom import minidom try: from titlecase import titlecase UseTitlecase = True except ImportError: UseTitlecase = False DEFAULTMAXRECORDS = 10 referencer_plugin_info = { "author": "Mario Castro, Yoav Avitzour", "version": "0.1", "ui": """ """, "longname": _("ISI Web of Science resolver (requires subscription)"), "action": _("Get metadata from ISI Web of Science"), "tooltip": _("ISI Web of Science resolver (requires subscription)")} referencer_plugin_actions = [{ "name":"_plugin_isi", "label":_("ISI Info"), "tooltip":_("Retrieve metadata for the selected documents from ISI Web of Science"), "icon":"_stock:gtk-edit", "callback":"do_action", "sensitivity":"sensitivity_genkey", "accelerator":"i" }] referencer_plugin_capabilities = ["resolve_metadata"] def can_resolve_metadata (doc): if doc.get_field ("title"): return 10 elif doc.get_field ("author") and doc.get_field("year"): return 5 return -1 def resolve_metadata (document, method=None): #do search try: searchres = do_search(document) except: return False #throw exception on server error: probably because IP is not allowed err = get_field(searchres,"ERROR") if err: serverExcDia = serverException(err) response = serverExcDia.run() serverExcDia.destroy() return False nrecs = int(get_field(searchres,"COUNT")) isi_recs = searchres.getElementsByTagName("REC") if nrecs>1: rec = choose_record(document, nrecs, isi_recs) if rec is not False: rec.set_document_from_record(document) else: return False elif nrecs == 1: rec = isiRec(isi_recs[0]) rec.set_document_from_record(document) elif nrecs == 0: noRec = noRecordFound(document) response = noRec.run() noRec.destroy() return False return True class isiRec: def __init__(self, isi_rec): self.authors='' self.abstract='' self.keywords='' self.journal='' self.doi='' self.pages='' self.title='' self.year='' self.volume='' self.isi_rec = isi_rec self.set_fields_from_data(self.isi_rec) def set_fields_from_data(self,isi_rec): """ xmlrec is a xml node """ xmldoc = isi_rec self.authors=get_fields(xmldoc,"AuCollectiveName",' and ') #self.authors = capitalize_authors(self.authors) self.abstract=get_field(xmldoc,"abstract") self.keywords=get_fields(xmldoc,"keyword",', ') self.journal=get_field(xmldoc,"source_title") if self.journal.isupper(): if UseTitlecase: self.journal = titlecase(self.journal.lower()) else: self.journal = self.journal.title() doi=get_last_field(xmldoc,"article_no") if len(doi) > 0: self.doi = doi[4:] else: self.doi = doi self.pages=get_field(xmldoc,"bib_pages") if self.pages == '-': artn = get_field(xmldoc,"article_no") self.pages = artn[4:] self.title=get_field(xmldoc,"item_title") if self.title.isupper(): if UseTitlecase: self.title = titlecase(self.title.lower()) else: self.title = self.title.title() self.year=get_attribute_from_field(xmldoc,"bib_issue","year") self.volume=get_attribute_from_field(xmldoc,"bib_issue","vol") def set_document_from_record(self,document): if (len(self.year)>0): document.set_field("year",self.year) if (len(self.volume)>0): document.set_field("volume",self.volume) if (len(self.title)>0): document.set_field("title",self.title) if (len(self.authors)>0): document.set_field("author",self.authors) if (len(self.doi)>0): document.set_field("doi",self.doi) if (len(self.journal)>0): document.set_field("journal",self.journal) if (len(self.pages)>0): document.set_field("pages",self.pages) if (len(self.abstract)>0): document.set_field("abstract",self.abstract) if (len(self.keywords)>0): document.set_field("keywords",self.keywords) return document class preferencesDialog(gtk.Dialog): def __init__(self, parent = None): gtk.Dialog.__init__(self,"ISI plugin preferences", parent, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_OK)) hbox = gtk.HBox() label = gtk.Label("Maximum no. of records to retreive from ISI") adjustment = gtk.Adjustment(value=get_MAXRECORDS(), lower=0, upper=100, step_incr=1, page_incr=1) self.MaxRecords = gtk.SpinButton(adjustment,1) hbox.pack_start(label) hbox.pack_start(self.MaxRecords) self.vbox.pack_start(hbox,padding=3) hbox = gtk.HBox() text = """The ISI plugin uses the Title, Author and Year to find a matching record in the ISI database. If there is more than one match, a Record Chooser dialog opens. Set here the maximum number of records to retrieve for such cases.""" label = gtk.Label(text) label.set_line_wrap(True) image = gtk.Image() image.set_from_stock(gtk.STOCK_DIALOG_INFO,gtk.ICON_SIZE_DIALOG) hbox.pack_start(image) hbox.pack_start(label) self.vbox.pack_start(hbox,padding=3) self.vbox.show_all() class documentDisplay(gtk.Window): def __init__(self,document = None, parent = None): gtk.Window.__init__(self) self.set_title("Current document properties") self.myparent = parent self.set_transient_for(parent) self.set_destroy_with_parent(True) self.vbox = gtk.VBox() self.add(self.vbox) if document is not None: fields = ['title','author','journal','year','pages'] table = gtk.Table(len(fields),2) row = 0 for field in fields: label = gtk.Label() label.set_markup(""+field.title()+": "+"") label.set_alignment(0.0, 0.5) value = gtk.Label(document.get_field(field)) value.set_line_wrap(True) value.set_alignment(0.0, 0.5) table.attach(label,0,1,row,row+1,gtk.FILL) table.attach(value,1,2,row,row+1,gtk.EXPAND|gtk.FILL) row += 1 self.vbox.pack_start(table) self.vbox.show_all() def set_position(self): (xp,yp) = self.myparent.get_position() (wp,hp) = self.get_size() x = xp y = yp - hp - 30 self.move(x,y) class serverException(gtk.Dialog): def __init__(self, err, parent=None): gtk.Dialog.__init__(self,"ISI plugin", parent, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_OK)) text = """ ISI Error The server returned an error: "%s" Your current IP address probably does not have access to the ISI webservice. """ % (err) label = gtk.Label() label.set_markup(text) self.vbox.pack_start(label) self.vbox.show_all() class noRecordFound(gtk.Dialog): def __init__(self, document = None, parent = None): gtk.Dialog.__init__(self,"ISI plugin", parent, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_OK)) text = """ ISI query did not find any matching records You may try one of the following: * Remove words representing symbols from the title (such as alpha, \\alpha, etc.) * Remove hyphened words from the title * Remember that the ISI database does not contain records earlier than 1975 """ label = gtk.Label() label.set_markup(text) self.vbox.pack_start(label) self.vbox.show_all() self.showdoc = gtk.Button("Show document") self.showdoc.connect("clicked",self.show_document_details) self.showdoc.show() label = gtk.Label() label.show() self.action_area.pack_start(self.showdoc) self.action_area.pack_start(label,True,True) self.action_area.reorder_child(self.showdoc,0) self.action_area.reorder_child(label,1) self.docDisp = documentDisplay(document,self) def show_document_details(self, *args): if self.docDisp.get_property("visible") == True: self.docDisp.hide() self.showdoc.set_label("Show document") else: self.docDisp.set_position() self.docDisp.show() self.showdoc.set_label("Hide document") class recordChooser(gtk.Dialog): def __init__(self,document, nrecs, records, parent = None): gtk.Dialog.__init__(self,"ISI record chooser dialog", parent, gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_OK)) self.document = document self.records = records label = gtk.Label("Found %d records, showing first %d" % (nrecs, len(records))) self.vbox.pack_start(label,False,False,0) self.recTree = gtk.TreeStore(bool,str,str,bool) self.treeview = gtk.TreeView(self.recTree) self.tvcolumn0 = gtk.TreeViewColumn() self.tvcolumn1 = gtk.TreeViewColumn() self.tvcolumn2 = gtk.TreeViewColumn() scwindow = gtk.ScrolledWindow() scwindow.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) scwindow.add_with_viewport(self.treeview) self.vbox.pack_start(scwindow,True,True,0) self.treeview.append_column(self.tvcolumn0) self.treeview.append_column(self.tvcolumn1) self.treeview.append_column(self.tvcolumn2) self.tcell = gtk.CellRendererText() self.bcell = gtk.CellRendererToggle() self.bcell.set_radio(True) self.bcell.connect("toggled", self.toggled_cb, (self.recTree, 3)) self.bcell.set_property('activatable',True) self.tvcolumn0.pack_start(self.bcell, True) self.tvcolumn0.add_attribute(self.bcell, 'visible', 0) self.tvcolumn0.add_attribute(self.bcell, 'active', 3) self.tvcolumn1.pack_start(self.tcell, True) self.tvcolumn1.add_attribute(self.tcell, 'text', 1) self.tvcolumn2.pack_start(self.tcell, True) self.tvcolumn2.add_attribute(self.tcell, 'text', 2) self.fields = ['authors','title','journal','volume','pages','year'] if records is not None: self.add_records() self.current_record = 0 self.treeview.expand_all() self.resize(400,300) self.vbox.show_all() self.showdoc = gtk.Button("Show document") self.showdoc.connect("clicked",self.show_document_details) self.showdoc.show() label = gtk.Label() label.show() self.action_area.pack_start(self.showdoc) self.action_area.pack_start(label,True,True) self.action_area.reorder_child(self.showdoc,0) self.action_area.reorder_child(label,1) self.docDisp = documentDisplay(self.document,self) def add_records(self): outerrow = 0 for rec in self.records: outeriter = self.recTree.insert(None,outerrow) if outerrow == 0: isactive = True else: isactive = False self.recTree.set(outeriter,0,True, 1,'Record '+str(outerrow+1),3,isactive) for innerrow in range(len(self.fields)): self.recTree.set(self.recTree.insert(outeriter,innerrow), 0,False, 1,self.fields[innerrow], 2,eval('rec.'+self.fields[innerrow]), 3,False) outerrow += 1 def toggled_cb(self, cell, path, user_data): model, column = user_data for row in model: row[column] = False model[path][column] = True self.current_record = path return def show_document_details(self, *args): if self.docDisp.get_property("visible") == True: self.docDisp.hide() self.showdoc.set_label("Show document") else: self.docDisp.set_position() self.docDisp.show() self.showdoc.set_label("Hide document") def capitalize_authors(authors): spltau = authors.split() nau = (len(spltau)+1)/3 for i in range(nau): spltau[3*i] = spltau[3*i].capitalize() spltau[3*i+1] = spltau[3*i+1].upper() return ' '.join(spltau) def get_fields (doc, field, separator): value = doc.getElementsByTagName(field) output='' if len(value) == 0: return "" else: length=len(value) if (len(value[0].childNodes) == 0): return "" else: #for items in value: for index in range(length-1): output+=value[index].childNodes[0].data.encode("utf-8")+separator return output+value[length-1].childNodes[0].data.encode("utf-8") def get_last_field (doc, field): value = doc.getElementsByTagName(field) if len(value) == 0: return "" else: if (len(value[0].childNodes) == 0): return "" else: for items in value: last=items.childNodes[0].data.encode("utf-8") return last def getText(nodelist): """ Recursively traverse the nodelist for any text nodes. Needed for situations like: Swans and bees and the like """ rc = [] for node in nodelist: if node.nodeType == node.TEXT_NODE: rc.append(node.data) elif node.nodeType == node.ELEMENT_NODE: rc.append(getText(node.childNodes)) return u''.join(rc).strip() def get_field (doc, field): value = doc.getElementsByTagName(field) if len(value) == 0: return "" else: if (len(value[0].childNodes) == 0): return "" else: return getText(value[0].childNodes) def get_attribute_from_field (doc, field, attr): value = doc.getElementsByTagName(field) return value[0].getAttribute(attr) def do_search (document): title = document.get_field("title") year = document.get_field ("year") author= document.get_field ("author") url0='http://estipub.isiknowledge.com/esti/cgi?action=search&viewType=xml&mode=GeneralSearch&product=WOS&ServiceName=GeneralSearch&filter=&Start=&End=%d&DestApp=WOS' % (get_MAXRECORDS()) url0+= "&" + get_query(document) print "isi query url:", url0 if False: #debugging #data0 = open("plugins/isi-plugin-testdata.txt").read() data0 = open("plugins/isi-plugin-testdata2.txt").read() else: data0 = referencer.download( _("Obtaining data from ISI-WebOfScience"), _("Querying for %s/%s/%s") % (author,title,year), url0) print data0 xmldoc0 = minidom.parseString(data0) return xmldoc0 def get_query(document): query = {} title = document.get_field("title") title = remove_non_ascii_chars(title) if len(title) > 0: query['topic'] = title year = document.get_field ("year") if len(year)>0: query['year'] = year author= document.get_field ("author") author = remove_non_ascii_chars(author) if len(author)>0: query['author'] = author return urllib.urlencode(query) def remove_non_ascii_chars(si): for s in si: if ord(s)>126 or ord(s) < 32 or s in "?!.,()": si = si.replace(s,'',1) return si #>-- Start the record chooser dialog in case more than one matching #>-- record was found def choose_record(document,nrecs,isi_recs): records = [] for isi_rec in isi_recs: irec = isiRec(isi_rec) records.append(irec) recChoose = recordChooser(document,nrecs,records) response = recChoose.run() if response == int(gtk.RESPONSE_OK): currentrec = recChoose.current_record currentrec = records[int(currentrec)] else: currentrec = False recChoose.destroy() return currentrec def get_MAXRECORDS(): maxrecords = referencer.pref_get ("isi_maxrecords") if (len(maxrecords)==0): maxrecords = DEFAULTMAXRECORDS return int(maxrecords) def set_MAXRECORDS(maxrecords): referencer.pref_set ("isi_maxrecords", str(maxrecords)) #>-- Main referencer function def do_action(library,documents): empty = True s = "" assigned_keys = {} for document in documents: resolve_metadata(document) return True #>-- Main referencer preferences function def referencer_config(): prefs = preferencesDialog() response = prefs.run() if response == int(gtk.RESPONSE_OK): set_MAXRECORDS(prefs.MaxRecords.get_value_as_int()) prefs.destroy() referencer-1.2.1/plugins/Makefile.am0000664000175000017500000000026312052352644014277 00000000000000plugindir = $(pkglibdir) plugin_DATA = \ ads.py \ dblp.py \ genkey.py \ google-books.py \ isi-plugin.py \ lyx.py \ lyx.png \ pubmed.py EXTRA_DIST = \ $(plugin_DATA) referencer-1.2.1/plugins/README0000664000175000017500000000471012042412720013113 00000000000000 Referencer Python Plugin Interface ================================== Last updated 2008-01-05 by jcspray Info list ----------- Every plugin must create a python list called referencer_plugin_info, which contains [key, value] lists for keys including the following: "longname" - Mandatory for all plugins: a description, such as "Martian cat farmer" "action" - Mandatory for document_action plugins, a UI item eg "Farm this cat" "tooltip" - Mandatory for document_action plugins, a description of the UI item eg "Farms the selected cat" "icon" - Optional for document_action plugins, such as "cat_shovel.png" Icons are looked for in the referencer data directory. If the icon is not specified or not found then a default icon is used instead. Capability list --------------- Every plugin must create a python list called referencer_plugin_capabilities which contains strings including: "doi" "pubmed" "arxiv" - The above three are metadata fetchers. A fetcher plugin can have more than one of them. For instance, pubmed.py supports both doi and pubmed. "document_action" - A document action plugin Metadata plugins ---------------- Implement a function called resolve_metadata (doc, method) which returns a boolean. Args: doc: a referencer.document, use get_field and set_field methods to get ID codes and fill out the metadata method: a string indicating what kind of ID should be tried, from the list of capabilities that the plugin listed in referencer_plugin_info Return true if the metadata was retrieved successfully, otherwise false. See pubmed.py for an example. Document action plugins ----------------------- Implement a function called do_action (docs) which returns a boolean. Args: docs: a python list of referencer.document instances, where the action is to be performed on each of them. Return true if the action completed without problems, otherwise false. See lyx.py for an example. Exceptions ---------- Passing an exception up to the caller on the C++ is taken as a sign that something really unexpected has happened that the user needs to know about. For instance, if a DOI can't be resolved to metadata, DO NOT throw an exception, simply return false from resolve_metadata. However, if the user invokes a document action that's somehow impossible (for example trying to cite something in lyx while lyx isn't running), that can be an exception the propagates all the way to the C++ side and the user. referencer-1.2.1/plugins/dblp.py0000664000175000017500000001555412052120545013540 00000000000000#!/usr/bin/env python # A referencer plugin to get bibtex info for a document from DBLP # http://dblp.org - The DBLP Computer Science Bibliography # # Copyright 2012 Mads Chr. Olesen # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import urllib try: import referencer from referencer import _ except: #for doctesting referencer = None _ = lambda x: x from xml.dom import minidom referencer_plugin_info = { "longname": _("DBLP resolver"), "version": "0.1", "author": "Mads Chr. Olesen " } referencer_plugin_capabilities = ["resolve_metadata"] def can_resolve_metadata (doc): author = doc.get_field ("author") #let's pretend this is an easter egg ;-) if author and "Mads" in author and "Olesen" in author: return 80 elif "DBLP" in str(doc.get_field("bibsource")): return 80 elif doc.get_field ("title"): return 20 elif author and doc.get_field("year"): #this can be searched for, but will result in too many hits for now #could be re-enabled when some GUI comes in return -1 return -1 def get_first_author (authors): if not authors: return "" if authors.find(" and") > 0: return authors[:authors.find(" and")] else: return authors def parse_hits_get_urls(data): """ >>> data = '\\r\\n\\r\\nChip and PIN is Broken 2010\\r\\nOK\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n<![CDATA[<dblp:authors><dblp:author>Steven J. Murdoch</dblp:author><dblp:author>Saar Drimer</dblp:author><dblp:author>Ross J. Anderson</dblp:author><dblp:author>Mike Bond</dblp:author></dblp:authors><dblp:title ee="http://doi.ieeecomputersociety.org/10.1109/SP.2010.33">Chip and PIN is Broken. </dblp:title><dblp:venue url="db/conf/sp/sp2010.html#MurdochDAB10" conference="IEEE Symposium on Security and Privacy" year="2010" pages="433-446">IEEE Symposium on Security and Privacy 2010:433-446</dblp:venue><dblp:year>2010</dblp:year><dblp:type>inproceedings</dblp:type>]]>\\r\\nhttp://www.dblp.org/rec/bibtex/conf/sp/MurdochDAB10\\r\\n\\r\\n\\r\\n\\r\\n' >>> parse_hits_get_urls(data) [u'http://www.dblp.org/rec/bibtex/conf/sp/MurdochDAB10'] """ urls = [] xmldoc = minidom.parseString(data) xmlhits = xmldoc.getElementsByTagName("hit") for xmlhit in xmlhits: xmlurls = xmlhit.getElementsByTagName("url") if len(xmlurls) == 1: urls += [xmlurls[0].childNodes[0].nodeValue] return urls def get_bibtex_xml_from_url(url): url = url + ".xml" data = referencer.download (_("Searching DBLP"), _("Fetching metadata from DBLP for url '%s'") % url, url); return data def bibtex_xml_to_bibtex(data): """ >>> data = '\\n\\n\\nSteven J. Murdoch\\nSaar Drimer\\nRoss J. Anderson\\nMike Bond\\nChip and PIN is Broken.\\n433-446\\n2010\\nIEEE Symposium on Security and Privacy\\nhttp://doi.ieeecomputersociety.org/10.1109/SP.2010.33\\nconf/sp/2010\\ndb/conf/sp/sp2010.html#MurdochDAB10\\n\\n\\n' >>> bibtex_xml_to_bibtex(data) u'@inproceedings{conf/sp/MurdochDAB10,\\nauthor = {Steven J. Murdoch and Saar Drimer and Ross J. Anderson and Mike Bond},\\ntitle = {Chip and PIN is Broken.},\\nbooktitle = {IEEE Symposium on Security and Privacy},\\nyear = {2010},\\npages = {433-446},\\nee = {http://doi.ieeecomputersociety.org/10.1109/SP.2010.33},\\nbibsource = {DBLP, http://dblp.uni-trier.de},\\nurl = {http://dblp.org/db/conf/sp/sp2010.html#MurdochDAB10},\\n}' """ keys = ["author", "title", "booktitle", "year", "pages", "ee", "bibsource", "url"] entry = {} xmldoc = minidom.parseString(data) for k in keys: try: entry[k] = xmldoc.getElementsByTagName(k)[0].childNodes[0].nodeValue except: entry[k] = "" authors = [] for a in xmldoc.getElementsByTagName("author"): authors += [a.childNodes[0].nodeValue] entry["author"] = " and ".join(authors) entry["bibsource"] = "DBLP, http://dblp.uni-trier.de" entry["url"] = "http://dblp.org/" + entry["url"] if entry["title"][-1] == ".": entry["title"] = entry["title"][:-1] xmlentry = [x for x in xmldoc.getElementsByTagName("dblp")[0].childNodes if x.nodeType == x.ELEMENT_NODE][0] doctype = xmlentry.tagName key = xmlentry.getAttribute("key") toret = ["@%s{%s," % (doctype, key)] for k in keys: toret += ["%s = {%s}," % (k, entry[k])] toret += ["}"] return "\n".join(toret) def resolve_metadata (doc, method=None): # try with title, otherwise try with author + year title = doc.get_field("title") if title: searchTerms = [title] else: searchTerms = [get_first_author(doc.get_field("author"))] searchTerms += [doc.get_field("year")] searchTerm = " ".join(searchTerms) for c in "(),.{}!\"':=#%$/&[]+": searchTerm = searchTerm.replace(c, "") searchTerm = searchTerm.replace("-", " ") while searchTerm.find(" ") > 0: #remove double spaces searchTerm = searchTerm.replace(" ", " ") #print "DBLP:searchTerm:", repr(searchTerm) url = "http://www.dblp.org/search/api/?%s&h=1000&c=0&f=0&format=xml" % (urllib.urlencode({'q': searchTerm})) print "DBLP:url:", repr(url) data = referencer.download (_("Searching DBLP"), _("Fetching metadata from DBLP for search query '%s'") % searchTerm, url); if not data: return False hits = parse_hits_get_urls(data) print "DBLP:hits:", hits if len(hits) != 1: #XXX, display UI? print "DBLP: Not exactly one hit, giving up" return False bibtex_xml = get_bibtex_xml_from_url(hits[0]) #print bibtex_xml bibtex = bibtex_xml_to_bibtex(bibtex_xml) #print bibtex doc.parse_bibtex(bibtex) return True referencer-1.2.1/plugins/ads.py0000775000175000017500000000503612133217160013363 00000000000000#!/usr/bin/env python # ADS metadata scraper, Copyright 2008 John Spray import urllib import referencer from referencer import _ from xml.dom import minidom referencer_plugin_info = { "author": "John Spray", "longname": _("NASA Astrophysics Data System DOI resolver") } referencer_plugin_capabilities = ["doi"] # Encoding: every PyUnicode that minidom gives us gets # encoded as utf-8 into a PyString, this is what PyString_AsString on the C++ # side will expect def get_field (doc, field): value = doc.getElementsByTagName(field) print "get_field: value = ", value if len(value) == 0: return "" else: return value[0].childNodes[0].data.encode("utf-8") def can_resolve_metadata (doc): if doc.get_field("doi"): return 50 return -1 def resolve_metadata (doc, method): if method != "doi": return False doi = doc.get_field("doi") params = { 'data_type':"XML", 'doi':doi } url = "http://adsabs.harvard.edu/cgi-bin/nph-bib_query?" + urllib.urlencode (params) data = referencer.download (_("Resolving DOI"), _("Fetching metadata from NASA ADS for DOI %s") % doi, url); if data.find ("retrieved=\"1\"") == -1: print "Couldn't get info from ADS" return False fields = [] try: xmldoc = minidom.parseString (data) fields.append (["journal", get_field(xmldoc, "journal")]) fields.append (["title", get_field(xmldoc, "title")]) fields.append (["volume", get_field(xmldoc, "volume")]) fields.append (["issue", get_field(xmldoc, "issue")]) fields.append (["year", get_field(xmldoc, "pubdate").partition(' ')[2]]) fields.append (["Month", str.lower(get_field(xmldoc, "pubdate").partition(' ')[0])]) fields.append (["Adsurl", xmldoc.getElementsByTagName('url')[-1].childNodes[0].data.encode("utf-8")]) fields.append (["Adsbibcode", get_field(xmldoc, "bibcode")]) authors = xmldoc.getElementsByTagName('author') authorString = "" first = True for author in authors: name = author.childNodes[0].data.encode("utf-8") if (first == False): authorString += " and " print "got author", name authorString += name first = False fields.append (["author", authorString]) print "appended authors" pages = get_field (xmldoc, "page") print "getting lastPage" lastPage = get_field (xmldoc, "lastpage") if (len(lastPage) > 0): pages += "-" pages += lastPage print "got pages " , pages fields.append (["pages", pages]) print "appended pages" except: print "exception" return False for field in fields: if len(field[1]) > 0: doc.set_field(field[0], field[1]) return True referencer-1.2.1/install-sh0000755000175000017500000003325612042420505012563 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: referencer-1.2.1/gnome-doc-utils.make0000644000175000017500000006120212127517024014423 00000000000000# gnome-doc-utils.make - make magic for building documentation # Copyright (C) 2004-2005 Shaun McCance # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. ################################################################################ ## @@ Generating Header Files ## @ DOC_H_FILE ## The name of the header file to generate DOC_H_FILE ?= ## @ DOC_H_DOCS ## The input DocBook files for generating the header file DOC_H_DOCS ?= $(DOC_H_FILE): $(DOC_H_DOCS); @rm -f $@.tmp; touch $@.tmp; echo 'const gchar* documentation_credits[] = {' >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ xsltproc --path "$$xmlpath" $(_credits) $$doc; \ done | sort | uniq \ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp echo ' NULL' >> $@.tmp echo '};' >> $@.tmp echo >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \ echo $$xmlpath; \ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \ for id in $$ids; do \ echo '#define HELP_'`echo $$docid`'_'`echo $$id \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \ done; \ echo >> $@.tmp; \ done; cp $@.tmp $@ && rm -f $@.tmp dist-check-gdu: if !HAVE_GNOME_DOC_UTILS @echo "*** GNOME Doc Utils must be installed in order to make dist" @false endif .PHONY: dist-doc-header dist-doc-header: $(DOC_H_FILE) @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)"; doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header) .PHONY: clean-doc-header _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header) clean-local: $(_clean_doc_header) distclean-local: $(_clean_doc_header) mostlyclean-local: $(_clean_doc_header) maintainer-clean-local: $(_clean_doc_header) clean-doc-header: rm -f $(DOC_H_FILE) all: $(DOC_H_FILE) ################################################################################ ## @@ Generating Documentation Files ## @ DOC_MODULE ## The name of the document being built DOC_MODULE ?= ## @ DOC_ID ## The unique identifier for a Mallard document DOC_ID ?= ## @ DOC_PAGES ## Page files in a Mallard document DOC_PAGES ?= ## @ DOC_ENTITIES ## Files included with a SYSTEM entity DOC_ENTITIES ?= ## @ DOC_INCLUDES ## Files included with XInclude DOC_INCLUDES ?= ## @ DOC_FIGURES ## Figures and other external data DOC_FIGURES ?= ## @ DOC_FORMATS ## The default formats to be built and installed DOC_FORMATS ?= docbook _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS)) ## @ DOC_LINGUAS ## The languages this document is translated into DOC_LINGUAS ?= _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \ $(filter $(LINGUAS),$(DOC_LINGUAS)), \ $(DOC_LINGUAS)) _DOC_ABS_SRCDIR = @abs_srcdir@ ################################################################################ ## Variables for Bootstrapping _xml2po ?= `which xml2po` _xml2po_mode = $(if $(DOC_ID),mallard,docbook) _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils` _db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils` _chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl if ENABLE_SK _ENABLE_SK = true _skpkgdatadir ?= `scrollkeeper-config --pkgdatadir` _sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir` _skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml endif ################################################################################ ## Support for automake silent-rules GDU_V_XML2PO=$(GDU__v_XML2PO_$(V)) GDU__v_XML2PO_=$(GDU__v_XML2PO_$(AM_DEFAULT_VERBOSITY)) GDU__v_XML2PO_0=@echo " XML2PO" $@; GDU_V_MSGFMT=$(GDU__v_MSGFMT_$(V)) GDU__v_MSGFMT_=$(GDU__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) GDU__v_MSGFMT_0=@echo " MSGFMT" $@; GDU_V_DB2OMF=$(GDU__v_DB2OMF_$(V)) GDU__v_DB2OMF_=$(GDU__v_DB2OMF_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2OMF_0=@echo " DB2OMF" $@; GDU_V_DB2HTM=$(GDU__v_DB2HTM_$(V)) GDU__v_DB2HTM_=$(GDU__v_DB2HTM_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2HTM_0=@echo " DB2HTM" $@; ################################################################################ ## @@ Rules for OMF Files db2omf_args = \ --stringparam db2omf.basename $(DOC_MODULE) \ --stringparam db2omf.format $(3) \ --stringparam db2omf.dtd \ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \ --stringparam db2omf.omf_dir "$(OMF_DIR)" \ --stringparam db2omf.help_dir "$(HELP_DIR)" \ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \ $(if $(_ENABLE_SK), \ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \ $(_db2omf) $(2) ## @ _DOC_OMF_IN ## The OMF input file _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in)) ## @ _DOC_OMF_DB ## The OMF files for DocBook output _DOC_OMF_DB = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf)) $(_DOC_OMF_DB) : $(_DOC_OMF_IN) $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist." >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; } ## @ _DOC_OMF_HTML ## The OMF files for HTML output _DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf)) $(_DOC_OMF_HTML) : $(_DOC_OMF_IN) $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml if ENABLE_SK @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist" >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } endif $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; } ## @ _DOC_OMF_ALL ## All OMF output files to be built # FIXME _DOC_OMF_ALL = \ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML)) .PHONY: omf omf: $(_DOC_OMF_ALL) ################################################################################ ## @@ C Locale Documents ## @ _DOC_C_MODULE ## The top-level documentation file in the C locale _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml) ## @ _DOC_C_PAGES ## Page files in a Mallard document in the C locale _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page)) ## @ _DOC_C_ENTITIES ## Files included with a SYSTEM entity in the C locale _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent)) ## @ _DOC_C_XINCLUDES ## Files included with XInclude in the C locale _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc)) ## @ _DOC_C_DOCS ## All documentation files in the C locale _DOC_C_DOCS = \ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) $(_DOC_C_MODULE) ## @ _DOC_C_DOCS_NOENT ## All documentation files in the C locale, ## except files included with a SYSTEM entity _DOC_C_DOCS_NOENT = \ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) ## @ _DOC_C_FIGURES ## All figures and other external data in the C locale _DOC_C_FIGURES = $(if $(DOC_FIGURES), \ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png))) ## @ _DOC_C_HTML ## All HTML documentation in the C locale # FIXME: probably have to shell escape to determine the file names _DOC_C_HTML = $(foreach f, \ $(shell xsltproc --xinclude \ --stringparam db.chunk.basename "$(DOC_MODULE)" \ $(_chunks) "C/$(DOC_MODULE).xml"), \ C/$(f).xhtml) ############################################################################### ## @@ Other Locale Documentation ## @ _DOC_POFILES ## The .po files used for translating the document _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po)) .PHONY: po po: $(_DOC_POFILES) ## @ _DOC_MOFILES ## The .mo files used for translating the document _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES)) .PHONY: mo mo: $(_DOC_MOFILES) ## @ _DOC_LC_MODULES ## The top-level documentation files in all other locales _DOC_LC_MODULES = $(if $(DOC_MODULE), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml)) ## @ _DOC_LC_PAGES ## Page files in a Mallard document in all other locales _DOC_LC_PAGES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \ $(lc)/$(notdir $(page)) )) ## @ _DOC_LC_XINCLUDES ## Files included with XInclude in all other locales _DOC_LC_INCLUDES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \ $(lc)/$(notdir $(inc)) )) ## @ _DOC_LC_HTML ## All HTML documentation in all other locales # FIXME: probably have to shell escape to determine the file names _DOC_LC_HTML = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \ $(lc)/$(notdir $(doc)) )) ## @ _DOC_LC_DOCS ## All documentation files in all other locales _DOC_LC_DOCS = \ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML)) ## @ _DOC_LC_FIGURES ## All figures and other external data in all other locales _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) ) _DOC_SRC_FIGURES = \ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) )) $(_DOC_POFILES): @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi @if test ! -f $@ -a -f $(srcdir)/$@; then \ echo "cp $(srcdir)/$@ $@"; \ cp "$(srcdir)/$@" "$@"; \ fi; @docs=; \ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \ done; \ if ! test -f $@; then \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \ else \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \ fi $(_DOC_MOFILES): %.mo: %.po $(AM_V_at)if ! test -d $(dir $@); then mkdir "$(dir $@)"; fi $(GDU_V_MSGFMT)msgfmt -o $@ $< # FIXME: fix the dependancy # FIXME: hook xml2po up $(_DOC_LC_DOCS) : $(_DOC_MOFILES) $(_DOC_LC_DOCS) : $(_DOC_C_DOCS) $(AM_V_at)if ! test -d $(dir $@); then mkdir $(dir $@); fi $(GDU_V_XML2PO)if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp) ## @ _DOC_POT ## A pot file _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot,$(if $(DOC_ID),$(DOC_ID).pot)) .PHONY: pot pot: $(_DOC_POT) $(_DOC_POT): $(_DOC_C_DOCS_NOENT) $(GDU_V_XML2PO)$(_xml2po) -m $(_xml2po_mode) -e -o $@ $^ ################################################################################ ## @@ All Documentation ## @ _DOC_HTML_ALL ## All HTML documentation, only if it's built _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \ $(_DOC_C_HTML) $(_DOC_LC_HTML)) _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml) $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@) ################################################################################ ## All all: \ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) $(_DOC_POFILES) ################################################################################ ## Clean .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML) clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML) clean-doc-lc: rm -f $(_DOC_LC_DOCS) rm -f $(_DOC_MOFILES) @list='$(_DOC_POFILES)'; for po in $$list; do \ if ! test "$$po" -ef "$(srcdir)/$$po"; then \ echo "rm -f $$po"; \ rm -f "$$po"; \ fi; \ done # .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc/.xml2po.mo"; then \ echo "rm -f $$lc/.xml2po.mo"; \ rm -f "$$lc/.xml2po.mo"; \ fi; \ done clean-doc-dir: clean-doc-lc @for lc in C $(_DOC_REAL_LINGUAS); do \ for dir in `find $$lc -depth -type d`; do \ if ! test $$dir -ef $(srcdir)/$$dir; then \ echo "rmdir $$dir"; \ rmdir "$$dir"; \ fi; \ done; \ done _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf) _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk) _clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc) _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir) clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) distclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) mostlyclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) maintainer-clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) ################################################################################ ## Dist .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk doc-dist-hook: \ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \ $(if $(_DOC_C_FIGURES),dist-doc-figs) \ $(if $(_DOC_OMF_IN),dist-doc-omf) # $(if $(_DOC_DSK_IN),dist-doc-dsk) dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES) @for lc in C $(_DOC_REAL_LINGUAS); do \ echo " $(mkinstalldirs) $(distdir)/$$lc"; \ $(mkinstalldirs) "$(distdir)/$$lc"; \ done @list='$(_DOC_C_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_POFILES)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done dist-doc-figs: $(_DOC_SRC_FIGURES) @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \ for fig in $$list; do \ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$fig"; then \ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$figdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \ $(mkinstalldirs) "$(distdir)/$$figdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \ fi; \ done; dist-doc-omf: @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))" dist-doc-dsk: @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))" ################################################################################ ## Check .PHONY: check-doc-docs check-doc-omf check: \ $(if $(DOC_MODULE),check-doc-docs) \ $(if $(DOC_ID),check-doc-pages) \ $(if $(_DOC_OMF_IN),check-doc-omf) check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \ done check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES) for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ for page in $(DOC_PAGES); do \ echo "xmllint --noout --noent --path $$xmlpath --xinclude $$d$$lc/$$page"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude "$$d$$lc/$$page"; \ done; \ done check-doc-omf: $(_DOC_OMF_ALL) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \ done ################################################################################ ## Install .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE)) install-data-local: \ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \ $(if $(_DOC_HTML_ALL),install-doc-html) \ $(if $(_DOC_C_FIGURES),install-doc-figs) \ $(if $(_DOC_OMF_IN),install-doc-omf) # $(if $(_DOC_DSK_IN),install-doc-dsk) install-doc-docs: @for lc in C $(_DOC_REAL_LINGUAS); do \ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \ done @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done install-doc-figs: @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \ for lc in C $(_DOC_REAL_LINGUAS); do \ figsymlink=false; \ if test -f "$$lc/$$fig"; then \ figfile="$$lc/$$fig"; \ elif test -f "$(srcdir)/$$lc/$$fig"; then \ figfile="$(srcdir)/$$lc/$$fig"; \ else \ figsymlink=true; \ fi; \ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \ if ! test -d "$$figdir"; then \ echo "$(mkinstalldirs) $$figdir"; \ $(mkinstalldirs) "$$figdir"; \ fi; \ figbase=`echo $$fig | sed -e 's/^.*\///'`; \ if $$figsymlink; then \ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \ else \ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \ fi; \ done; \ done install-doc-html: echo install-html install-doc-omf: $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \ done @if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ fi; install-doc-dsk: echo install-dsk ################################################################################ ## Uninstall .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk uninstall-local: \ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \ $(if $(_DOC_OMF_IN),uninstall-doc-omf) # $(if $(_DOC_DSK_IN),uninstall-doc-dsk) uninstall-doc-docs: @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done uninstall-doc-figs: @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ done; uninstall-doc-omf: @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ fi; \ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ done referencer-1.2.1/intltool-extract.in0000664000175000017500000000000012127517024014411 00000000000000referencer-1.2.1/referencer.spec0000664000175000017500000000322412150643000013542 00000000000000Summary: Referencer Name: referencer Version: 1.2.1 Release: 1%{?dist} Source0: %{name}-%{version}.tar.gz License: GPL Group: Applications/Office BuildRoot: %{_builddir}/%{name} # no debug package %define debug_package %{nil} Requires: gtkmm24 Requires: libgnomeuimm26 Requires: gnome-vfsmm26 Requires: poppler Requires: libgnomemm26 Requires: libgnomeuimm26 Requires: gconfmm26 Requires: libglademm24 %description A document organiser and bibliography manager for GNOME. Referencer is a GNOME application to organise documents or references, and ultimately generate a BibTeX bibliography file. Referencer includes a number of features to make this process easier: * Automatic metadata retrieval If you show Referencer a PDF which has either a DOI code (found in most recently published papers) or ArXiV ID, Referencer will retrieve the metadata for this document over the internet. * Smart web links Referencer uses documents' ID codes to provide handy links to the document's web location — no need to maintain your own bookmarks. * Import from BibTeX, Reference Manager and EndNote No need to start from scratch — Referencer will import your existing bibliography files using the BibUtils library. * Tagging No need to organise your documents into rigid directory trees — with Referencer you can use tags to categorise your documents. %prep %setup -q %build %configure --disable-update-mime-database make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %install make DESTDIR=$RPM_BUILD_ROOT install %clean rm -rf $RPM_BUILD_ROOT %post update-mime-database %{_datadir}/mime %files %defattr(-,root,root) %doc COPYING AUTHORS README NEWS TODO %{_prefix} referencer-1.2.1/help/0000775000175000017500000000000012150643002011557 500000000000000referencer-1.2.1/help/referencer.omf.in0000644000175000017500000000044212150643002014725 00000000000000 manual referencer-1.2.1/help/Makefile.in0000664000175000017500000010475412150642771013573 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # gnome-doc-utils.make - make magic for building documentation # Copyright (C) 2004-2005 Shaun McCance # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. ################################################################################ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/gnome-doc-utils.make ChangeLog subdir = help ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ _clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header) _DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS)) _DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \ $(filter $(LINGUAS),$(DOC_LINGUAS)), \ $(DOC_LINGUAS)) _DOC_ABS_SRCDIR = @abs_srcdir@ _xml2po_mode = $(if $(DOC_ID),mallard,docbook) @ENABLE_SK_TRUE@_ENABLE_SK = true ################################################################################ GDU_V_XML2PO = $(GDU__v_XML2PO_$(V)) GDU__v_XML2PO_ = $(GDU__v_XML2PO_$(AM_DEFAULT_VERBOSITY)) GDU__v_XML2PO_0 = @echo " XML2PO" $@; GDU_V_MSGFMT = $(GDU__v_MSGFMT_$(V)) GDU__v_MSGFMT_ = $(GDU__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) GDU__v_MSGFMT_0 = @echo " MSGFMT" $@; GDU_V_DB2OMF = $(GDU__v_DB2OMF_$(V)) GDU__v_DB2OMF_ = $(GDU__v_DB2OMF_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2OMF_0 = @echo " DB2OMF" $@; GDU_V_DB2HTM = $(GDU__v_DB2HTM_$(V)) GDU__v_DB2HTM_ = $(GDU__v_DB2HTM_$(AM_DEFAULT_VERBOSITY)) GDU__v_DB2HTM_0 = @echo " DB2HTM" $@; ################################################################################ db2omf_args = \ --stringparam db2omf.basename $(DOC_MODULE) \ --stringparam db2omf.format $(3) \ --stringparam db2omf.dtd \ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \ --stringparam db2omf.omf_dir "$(OMF_DIR)" \ --stringparam db2omf.help_dir "$(HELP_DIR)" \ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \ $(if $(_ENABLE_SK), \ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \ $(_db2omf) $(2) _DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in)) _DOC_OMF_DB = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf)) _DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf)) # FIXME _DOC_OMF_ALL = \ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML)) ################################################################################ _DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml) _DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page)) _DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent)) _DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc)) _DOC_C_DOCS = \ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) $(_DOC_C_MODULE) _DOC_C_DOCS_NOENT = \ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \ $(_DOC_C_PAGES) _DOC_C_FIGURES = $(if $(DOC_FIGURES), \ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png))) # FIXME: probably have to shell escape to determine the file names _DOC_C_HTML = $(foreach f, \ $(shell xsltproc --xinclude \ --stringparam db.chunk.basename "$(DOC_MODULE)" \ $(_chunks) "C/$(DOC_MODULE).xml"), \ C/$(f).xhtml) ############################################################################### _DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po)) _DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES)) _DOC_LC_MODULES = $(if $(DOC_MODULE), \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml)) _DOC_LC_PAGES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \ $(lc)/$(notdir $(page)) )) _DOC_LC_INCLUDES = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \ $(lc)/$(notdir $(inc)) )) # FIXME: probably have to shell escape to determine the file names _DOC_LC_HTML = \ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \ $(lc)/$(notdir $(doc)) )) _DOC_LC_DOCS = \ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML)) _DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) ) _DOC_SRC_FIGURES = \ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) )) _DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot,$(if $(DOC_ID),$(DOC_ID).pot)) ################################################################################ _DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \ $(_DOC_C_HTML) $(_DOC_LC_HTML)) _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml) _clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf) _clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk) _clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc) _clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir) _doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE)) #The name of the help document to build. # This is the filename without the .xml extension. DOC_MODULE = referencer #List any files included in the help document using system entities # Example: DOC_ENTITIES = legal.xml #List any files that are included in the Xinclude specification DOC_INCLUDES = #List of all the figures that are referenced in the help document DOC_FIGURES = \ figures/referencer_window.png #List of all the language codes for the languages in which the # document is translated DOC_LINGUAS = de all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gnome-doc-utils.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu help/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu help/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/gnome-doc-utils.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-local pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ dist-hook distclean distclean-generic distclean-local distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-local DOC_H_FILE ?= DOC_H_DOCS ?= $(DOC_H_FILE): $(DOC_H_DOCS); @rm -f $@.tmp; touch $@.tmp; echo 'const gchar* documentation_credits[] = {' >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ xsltproc --path "$$xmlpath" $(_credits) $$doc; \ done | sort | uniq \ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp echo ' NULL' >> $@.tmp echo '};' >> $@.tmp echo >> $@.tmp list='$(DOC_H_DOCS)'; for doc in $$list; do \ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \ echo $$xmlpath; \ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \ for id in $$ids; do \ echo '#define HELP_'`echo $$docid`'_'`echo $$id \ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \ done; \ echo >> $@.tmp; \ done; cp $@.tmp $@ && rm -f $@.tmp dist-check-gdu: @HAVE_GNOME_DOC_UTILS_FALSE@ @echo "*** GNOME Doc Utils must be installed in order to make dist" @HAVE_GNOME_DOC_UTILS_FALSE@ @false .PHONY: dist-doc-header dist-doc-header: $(DOC_H_FILE) @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)"; doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header) .PHONY: clean-doc-header clean-local: $(_clean_doc_header) distclean-local: $(_clean_doc_header) mostlyclean-local: $(_clean_doc_header) maintainer-clean-local: $(_clean_doc_header) clean-doc-header: rm -f $(DOC_H_FILE) all: $(DOC_H_FILE) ################################################################################ DOC_MODULE ?= DOC_ID ?= DOC_PAGES ?= DOC_ENTITIES ?= DOC_INCLUDES ?= DOC_FIGURES ?= DOC_FORMATS ?= docbook DOC_LINGUAS ?= ################################################################################ _xml2po ?= `which xml2po` _db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils` _db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils` _chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl _credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl _ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl @ENABLE_SK_TRUE@_skpkgdatadir ?= `scrollkeeper-config --pkgdatadir` @ENABLE_SK_TRUE@_sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir` @ENABLE_SK_TRUE@_skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml $(_DOC_OMF_DB) : $(_DOC_OMF_IN) $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ echo "The file '$(_skcontentslist)' does not exist." >&2; \ echo "Please check your ScrollKeeper installation." >&2; \ exit 1; } $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; } $(_DOC_OMF_HTML) : $(_DOC_OMF_IN) $(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml @ENABLE_SK_TRUE@ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \ @ENABLE_SK_TRUE@ echo "The file '$(_skcontentslist)' does not exist" >&2; \ @ENABLE_SK_TRUE@ echo "Please check your ScrollKeeper installation." >&2; \ @ENABLE_SK_TRUE@ exit 1; } $(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; } .PHONY: omf omf: $(_DOC_OMF_ALL) .PHONY: po po: $(_DOC_POFILES) .PHONY: mo mo: $(_DOC_MOFILES) $(_DOC_POFILES): @if ! test -d $(dir $@); then \ echo "mkdir $(dir $@)"; \ mkdir "$(dir $@)"; \ fi @if test ! -f $@ -a -f $(srcdir)/$@; then \ echo "cp $(srcdir)/$@ $@"; \ cp "$(srcdir)/$@" "$@"; \ fi; @docs=; \ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \ done; \ if ! test -f $@; then \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \ else \ echo "(cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \ fi $(_DOC_MOFILES): %.mo: %.po $(AM_V_at)if ! test -d $(dir $@); then mkdir "$(dir $@)"; fi $(GDU_V_MSGFMT)msgfmt -o $@ $< # FIXME: fix the dependancy # FIXME: hook xml2po up $(_DOC_LC_DOCS) : $(_DOC_MOFILES) $(_DOC_LC_DOCS) : $(_DOC_C_DOCS) $(AM_V_at)if ! test -d $(dir $@); then mkdir $(dir $@); fi $(GDU_V_XML2PO)if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \ (cd $(dir $@) && \ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp) .PHONY: pot pot: $(_DOC_POT) $(_DOC_POT): $(_DOC_C_DOCS_NOENT) $(GDU_V_XML2PO)$(_xml2po) -m $(_xml2po_mode) -e -o $@ $^ $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@) ################################################################################ all: \ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) $(_DOC_POFILES) ################################################################################ .PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML) clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML) clean-doc-lc: rm -f $(_DOC_LC_DOCS) rm -f $(_DOC_MOFILES) @list='$(_DOC_POFILES)'; for po in $$list; do \ if ! test "$$po" -ef "$(srcdir)/$$po"; then \ echo "rm -f $$po"; \ rm -f "$$po"; \ fi; \ done # .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc/.xml2po.mo"; then \ echo "rm -f $$lc/.xml2po.mo"; \ rm -f "$$lc/.xml2po.mo"; \ fi; \ done clean-doc-dir: clean-doc-lc @for lc in C $(_DOC_REAL_LINGUAS); do \ for dir in `find $$lc -depth -type d`; do \ if ! test $$dir -ef $(srcdir)/$$dir; then \ echo "rmdir $$dir"; \ rmdir "$$dir"; \ fi; \ done; \ done clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) distclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) mostlyclean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) maintainer-clean-local: \ $(_clean_omf) $(_clean_dsk) \ $(_clean_lc) $(_clean_dir) ################################################################################ .PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk doc-dist-hook: \ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \ $(if $(_DOC_C_FIGURES),dist-doc-figs) \ $(if $(_DOC_OMF_IN),dist-doc-omf) # $(if $(_DOC_DSK_IN),dist-doc-dsk) dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES) @for lc in C $(_DOC_REAL_LINGUAS); do \ echo " $(mkinstalldirs) $(distdir)/$$lc"; \ $(mkinstalldirs) "$(distdir)/$$lc"; \ done @list='$(_DOC_C_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done @list='$(_DOC_POFILES)'; \ for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$docdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \ $(mkinstalldirs) "$(distdir)/$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \ done dist-doc-figs: $(_DOC_SRC_FIGURES) @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \ for fig in $$list; do \ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$fig"; then \ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ if ! test -d "$(distdir)/$$figdir"; then \ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \ $(mkinstalldirs) "$(distdir)/$$figdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \ fi; \ done; dist-doc-omf: @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))" dist-doc-dsk: @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))" ################################################################################ .PHONY: check-doc-docs check-doc-omf check: \ $(if $(DOC_MODULE),check-doc-docs) \ $(if $(DOC_ID),check-doc-pages) \ $(if $(_DOC_OMF_IN),check-doc-omf) check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) @for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \ done check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES) for lc in C $(_DOC_REAL_LINGUAS); do \ if test -f "$$lc"; \ then d=; \ xmlpath="$$lc"; \ else \ d="$(srcdir)/"; \ xmlpath="$$lc:$(srcdir)/$$lc"; \ fi; \ for page in $(DOC_PAGES); do \ echo "xmllint --noout --noent --path $$xmlpath --xinclude $$d$$lc/$$page"; \ xmllint --noout --noent --path "$$xmlpath" --xinclude "$$d$$lc/$$page"; \ done; \ done check-doc-omf: $(_DOC_OMF_ALL) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \ done ################################################################################ .PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk install-data-local: \ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \ $(if $(_DOC_HTML_ALL),install-doc-html) \ $(if $(_DOC_C_FIGURES),install-doc-figs) \ $(if $(_DOC_OMF_IN),install-doc-omf) # $(if $(_DOC_DSK_IN),install-doc-dsk) install-doc-docs: @for lc in C $(_DOC_REAL_LINGUAS); do \ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \ done @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \ if ! test -d "$$docdir"; then \ echo "$(mkinstalldirs) $$docdir"; \ $(mkinstalldirs) "$$docdir"; \ fi; \ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \ done install-doc-figs: @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \ for lc in C $(_DOC_REAL_LINGUAS); do \ figsymlink=false; \ if test -f "$$lc/$$fig"; then \ figfile="$$lc/$$fig"; \ elif test -f "$(srcdir)/$$lc/$$fig"; then \ figfile="$(srcdir)/$$lc/$$fig"; \ else \ figsymlink=true; \ fi; \ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \ if ! test -d "$$figdir"; then \ echo "$(mkinstalldirs) $$figdir"; \ $(mkinstalldirs) "$$figdir"; \ fi; \ figbase=`echo $$fig | sed -e 's/^.*\///'`; \ if $$figsymlink; then \ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \ else \ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \ fi; \ done; \ done install-doc-html: echo install-html install-doc-omf: $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir) @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \ done @if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \ fi; install-doc-dsk: echo install-dsk ################################################################################ .PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk uninstall-local: \ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \ $(if $(_DOC_OMF_IN),uninstall-doc-omf) # $(if $(_DOC_DSK_IN),uninstall-doc-dsk) uninstall-doc-docs: @list='$(_DOC_C_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done @list='$(_DOC_LC_DOCS)'; for doc in $$list; do \ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \ done uninstall-doc-figs: @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \ done; uninstall-doc-omf: @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \ if test "x$(_ENABLE_SK)" = "xtrue"; then \ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ fi; \ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \ done dist-hook: doc-dist-hook # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/help/C/0000775000175000017500000000000012150643002011741 500000000000000referencer-1.2.1/help/C/legal.xml0000644000175000017500000000054512150643002013471 00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License Version 2. You can find a copy of the GPL at this link or in the file COPYING distributed with this manual. referencer-1.2.1/help/C/figures/0000775000175000017500000000000012150643002013405 500000000000000referencer-1.2.1/help/C/figures/referencer_window.png0000644000175000017500000007451412150643002017553 00000000000000PNG  IHDRk asBIT|dtEXtSoftwaregnome-screenshot> IDATxw|E)H$I$I$5hU4#ʴ+ԛ$I$I$I Y'Bqw`T@ʌaX;٧xВ$I$I$U NQ\o3W}}ze0njMt"'EtTb;Ete$I$I$!etLJtx_ucο;wg^\>C:;}fNi lvO%.bQ[+OaqWי k+"I$I$IM[XF^Q);.ot~#`Fgܟ:Q``lYο; wG^TLJ/[;5 dzvi)vF56e5tO$I$I$5F~v_ӧkdyvg7zZa~]@E<wg޷CSo +ӮxP?'m8Ys%QrOGhR?'#3]$I$I$5bLv.a7':,ص~#&0_H>ɔ^e}?RCPPV2Jd⨳b sfjXJ(" +#IRݏ:aTڋbk[u~\MhkbڛĐKp;嘵Fs*Ô$IjQ!FF"[EV5X5,[yWV[YX١x9e.O  K2qCǻ2\Σ(j Z13'`gD)*%Ƒ$i s#^{]nw/uBxO @V:8,й}=6{S(oomdĐw[.'ßb$Tcݨ`~O?^9u;oa׬-k̚2mUbUμzZ# vsX!1/aO.㓕3;z-eϑTHNlX Fi$IPgUk-Cye bSzPᄇy ! ak^$kU-0MM(rp zGpp0 9%N@HJDl~bn>;mH/4n+Wn_a+NaDUoFs8߆)zc;qzi`kQS+d kVoaD1%[͘R<)۶>5kQ0t{\[ ! ; ԅfehjlEkEv%]SՓԫޜtYK=PWYXл|jCoH}j[508yً hX1c$IXm# +Weȷb"̬~][:F~| C5XU'}Dols#3×+{K %2̊~dGzHF[ E&rSR Sپ4HOm~ewtcq\3g-9m<}1O/?#[ylQR뭧'+{=K=q^%;ow_].$޼?>7>7ZF@H4x%PB@h2o=߈%N'`ݏq1 ؓWne<@ϡhw<ӈԷ`LZZJ€1l/aȠlܺ?e[B(8KroƒѡqUAj_C]ׇƖa#Sq[Ȱ!k-z\^Zp\%l!,<8g<АP @u38$^Z|UIڇ O24"Œ)؁)(gQoQpA@<|LU5ʸ{f7:a0t)-.'6@eAѨx7o9W m?Ьpٲjzjty7g8:ֵKX] ɽGRgǮ`߸\g٦zۭzl smuiNPoܿbfET$_Y+x!eC?xЀSq*J}F+bl?~¢JKK б(/+rVk QQQfTG &;?= *.T92Lf U0LhFiqI34TE@SMNUoH>Ù8*Diɦ-2h7rrx1&XjTυGW@QAkh08pbMA*eڴef؇?w:uƉNakr7LESQ]5Y]BHMiST/Y ۭFl smuojÙh h٬r%Ij‚vLv.%F;w|qօuY_# PV(۩?p4ϻЗ/q؜.USQLp"ݝ.W4¥` LA!Z8?sokt$I~rҏ׎ "R6U$ b6,3!"ej K+μˠܯ0)ԉ(&O ܟ( %E>\FIPEp￿Ån\E$ Km0e,s2o;\~_[G9ѽ5s%IH %%≨b$IYIY9!uōcw()+_jݯ7I$I$IjU9%&kԧ咟Z$I$I$I'54eHWH/&/7Sg$I$I$xdf+G I$I$I\s=H$I$I$\ !G%I$I$zI$I$IjI$I$IjH$I$I$s-6RcY5Mʊ՛Ɵ'п*z IZi=3q_zRq̟:\Tz7|4{l+756۷o9KҖyy]ewq3-kHmMoI$IWԟt2ufnMMTͩoy=gnsdA_8[k17˸3H'߆QxI$I~7q U/~ZfLİ⸭JO̙gp_{1s&S3|ߚ_g=o7\υSVc˹hiL>[Te=r6ej_+f$-?G+o;'4]-Z0睗3etLIc7CVK08  .>6dphEfYeY2.p8*#L;S2ixfw:N8_û~ɻeKoמ˘ iL?s}}@<~ㅌ?4ξmyq |⟙u 2'`w0k6xXzԛcXY֝{;d5szcu +.>s$I$I k eJ̓=ؿfΚ&;ݷ-|}w_oS9!ejM;^,ڦj"c{qa擾7mϦ^,YFKsb>>]U[ Yݲm$$s#4N|k/W,_5lw {[=Q}No"{Ʊ_^!{q .Fo])cۉ+>=;|sl0;oVYV)OK/`wϞ}.+.`gXJ PSq]oR|]R>oRt-μv}NW1X| _.N y'{SԎژ{n$I$~|Mu@QxdӳTI[tp 0k }s,]yxgoH抏oWWӋafe}y 2K7[i,VkGW%MG@g>Wr/W2ֽ`}%|7cX^ӓ~#|7O #4l4Smܪvp^'Tj1Sqbcw| gX%ڬqik^yxs)O^Rj-NMO/yY{6=q7IcQ`wI:a<ݎ{rag9W3[<;Wp%opsx3<>42F2?z?PgzfCf1O\+cuM)I$Ij7CYQذifl?|qYGO[;^ʕ'Iϩ4y3WM.SN3%<+/I/j?5y*V|97G}ГbEYn3n3=92N\9H}=&iySc}=/IǓ2JTRpHbB-ԩ@Qpa%+ycvc'=rB{M^񻟲0v[{_nnbn>hV X)kǖ)I$IRjf{_~v{FuV=2'mH+Lџ .]aIsbffu$I8ҿ_eRm@ywNR#,sn!_t㓯Hu ZnP,ԥ8͖ bxolGg(I$I-rlfƑfkI,[E_zTMQ_,?gCwKohRjOkw$-~8"]$INB_(+I$I$IR˒zI$I$IjZtzI$I$IZ_:8$I$I$I<ԏ?K$I$Ite团Q&,I$I$IRJ$I$IR;';$I$Io$I$I$#$I$IN$I$I$sS/I$I$I\sle޳YG1- J||)Hj>Wc3ufD$I15ndIrB`(A!vfq9PIxX"B1`k*/K.9ؘN70f̘}PWJoTEE7 t ]vDaa))=>=})Fjk?gW{>ϿVZZ5M${emi׽I[5VI/躁(8N (14HG!"P+y#XPaP NO?vRc{߾L<.4C8]l6Bul޴cc=X(T|s( BEeBppߓ_͕O`k!}ط{7MbR/ Dtݜ=m,o7$e˖g>&Oo߾m$I/{u @#P4ʱ[>kPPd|wD` GNmQSիe{٩EQ(**ݡPpO tOϋlZo}E/!""y8/[0N$z! aT\J[JY2UTɧ(DwGPAG٩/-ph.yyW=g **'o[&!ǏnNY9 BǿTZNy~~ny"#M|P{.vUUQ?/[{z!HYY)!~Dj>^5T{'}a0*IEG^ AŀM6v)^7Pzލ #,2.YmiPf?}k׬ĉ!Ii2rh 'u^ϑzOq h/lXRBѢk/s E1!Dx+Fz|}iӦzrMѕ[=O^ 1!s9"8HdAt:>R/ADP\g̖pb\t. km_q:dff?0} :'vRbݩI]NjΩ O^(haSE{JJ`PB!p2T~58dȐFY/Ӊi!fIb. UQ󰝺 0:l!"" ;Ni'5TΩW̩C/̩m }v!0* ˱Yg.?Ũǒ<>ݔE tO͵#1/0Bx筄 S_f֙лwoCBd^:e&%_r(//ovY~:R_I|((JJE!mF;H=/--  !:yw$΍!*:RߑOT.d.:q9r099taGUU%LNn6aٻ(hd_OQ7SWk.u):Cs+mܴE4U47f**3c_t[mGf'h)?‘.e\)0j(ݺ?cqh0 "66VvV#9cYGO9~=^SUӱQ(DR;E H8) @Pmd=LtTaSixoєz/ڂ;+࣠`:c9r('APVVFbBW ]xGa`r:1z;UJTŵ cH[T^*..;j7?W Llܸ EUQUQ1(˜1c+ hObOG̋ aUE xzѳA| ~S\#Igs+ߨZ1ZT| pPFQr1D '殃"U! HhʜbNr7?hp-ƞیb $ !EBlgj $ JQQvP]wafY官RiJGFFԥ6^ydbԨQhU:~𡹝6_MbllA Q9|${JXux/k'?w\NK2N;60zH.b>s~^~}ru׶qv+jeiYQJ 0!D0֍ hJBoz q;gΜip`+w`{aT1tӁ50'}& ktj8NBCu]ױlXVf3NNd=Btt'rrb`2ipTL1X,lem]ߝH5!B~~>r˶gT,cN{bu]|aLfAGg Rэ "촒(Ia {<ݻ`szFa5u5!EEE,nE2M&]l223 )׸ e[9EQ}."A\ #4StuWYÃl2pwEEG4/.]ta{nS躁@vlDDFt:%""R'a %>.Pt]n~ VTTDTTSg6ZKhh(5>t))=}wS*Qygjո̥\MoǫcD3n-gӪ ;BlTOpEl޲?X"#8xp63];w~V&EXH +V~Mq(˞gN}]zbE,J*zUhBP^nGwG=R^ިXawu6nGDEEJrOLf|+OAPPPuCPlE%.ݭ3W!HqcT7a{%U=~oIs_heC?siɨN#2OWAlGٗݱ1kMYǎKr龱rRZV^ZIi1. f"#3-C~'WRmeOy}h,N.2@NLqN⮎^uaG%eDF(8,``` cio}]wyi3VViRҩY2VVLW,/i/4֬^j?~c/5lf 0cU6,Rx,0x6o@CU|4UaWK),,$G7,0:`թJ5(#eW|nF%<䫘Iq@k -sgPP}#*]T̝λDX3q:u  HníbLdfd`2z !!LAA!NAAN~ښ/ "}{ߥ.!P7lSө].&ͨ`4ǏwUUשW*p%ȰpLF XAxFxD8IE@̣Yh&R LMLpp0ׯL2+aJ3npþLJ !ؗXK]ym+lܸ`wv^D{0 PQ*.TU h`%XIJJ\3;e3K]7 0 BCC`VQI}m<V+'WRns"q[+Wnh:>(,(dgп@M¨Q#1iAA|r%y98%DSzr999`JfQi40Bi:άNNNnfLL4;o?fFrrr릦iSVZZoܒ900Pv HDDӖTU;u8l&$$Xl6{i`~.+0P.(;wqY3سg bI0%m2;f⤱lݺ}n96\/]LL {]yLf3111C`X4h?|PgȲw =StL&AAAV+=wtzWTQ|+b6wo}ګڎ(fL&KZIݺucܘQ}L{< `;Ғ ٳg7vu\93yyn6ZnzLRזXjv2;b;f-|S-h'A( ּöw{UjYCVVUh !رsѣG/(jÈwࣩn^$I$ɟ=c5^ʣ{5C$٩$I$IjCԻd25FZMǠ ީ&4MĄ 3+ym_s`_Y/uZC_${a95m*֬ınV,[Ҥƚ~aobl30l_}V~b?3%an崦NqLƤɓ5>؜wegZ(4Fc*iks3e7m un?̬^ז68NJY+73s'Nfә|U|%Zmg߲)oMOMgR,{7R{n}7n>.m},_~^UO&_ePTGvL԰IU0t;b-GA:v3ddcB`a VMzb:Œsx1(4E?`U.S*\ȣ(V Mᗍ6i#NoҙF-)7r""(@z: |VX~_͓*gq_"1gǰ9 giEΊbs?;ّᾘIf BB҃Z1_j+^i敳`q΁Hǜ9㚚^1kkFQ?M8q*Ie ;.F>ӯ jtoez@d8s,pwWۿ%M̺Mv} P;y,J_Ptϸf~|j+v Hg͢/ #888bB Ĥ02%0 gaYq`tI6B()r(څ#=;S͑kOcU엃G;9ˮ35>[ANEp9(sMk))X4߱a[.NY)2C,Y%I]"g{v\!t8'g#G:.u}pbK#iG2-IL {ئEdʸL*rT 0d[gy-(ks-i=d8ި.S-|xo{#BIjIYgCrrJi_NG߸W>½^#ˏ}F?U:Й),a㙠E6/.ⵙ>y{K85|Xqwت|Ux|F73I no''f!~O!&2a/)"?7{ג;aW o݀)Pp8l 'VؕMThF) =s?ߌ_N"K58Y5"W:8}r/L" XR\CD rݝ]B8BkwſGA8Cw8z,g}sQ_q9!u<\PTGaQg8N B?t~u<./ZZۜ ﮵Ɯk0sP7SCu bs{ ]}үXbh}u''w9&@^}mݦ^ ['9r*IQ?E+>|_owhl{ljgn|j!F6O;ܤ1+0-,Qnakwυ޸՘n >v8HR Wμ/pN@ e/|s4"&zI5iSNО{suWb9!X׏K=*Z( N[30e>]QkfiZdOnxl^-5dPϊbe_=L=_Y?$Ij?`{_~.gg-5N\Bggɵ}FDa1kYVpQZT3g '<$%XC"9q,˛։ ǰUNń@rSXT޺< Z@0!AJe۔R4@1NIu X;pd1):EyދR >4fK$ZWOvYN'o嶺FtFΉ|hLljW@/(aQX4㮞6:'zڻf]k>ֶ43Gu(`2?gfy߯^}GQtBGBADDQςz)'WT,gNgvvvEᔢI iɒ`ʦ|w_#3ߙn}g E4%z\!S͵{W7ˋUL\%uRUIv{kX%E*iP;]jlؿHOR5bRO+v5%5Lz_~oG_P75r/Y5P#޻m7z:QWigrzf-7hw'GJ%]~eeu >qƕ0:)Ӧ7m%'hHc11Yx/>RSTZ6+֐f}5xclz۵h Lmi(+vP^@jFM0OB}P~:L|?C@Gwv]D<5za{lrwu%d.=s\;E;l4/8Qwb]C]4Xrz]Mᮽl}rRRRRhUOD K#}?w=FGQJJjJѣD^ ^7 K/1pUduQ7F}6:,jxu5TcZZ!!o5:U_I<۪:k_g\s׶mUHg?Q?WLlS}N/…7w7yLZb 7Hҏ>kb^Ϧͯ_ ]1_+N!N@XNOƐcV_&_ =H׼3YmQW|zr}5F3Gm']zJS^r"z}rͭ}%tR;$ٶnd1{yzmslq1BU;=vX.5-]mᓎ$Ә<iصĺ,\x.!X> ͼl69Ss][g[g \v:z >p饍Wt1:b0}|.s&M|aő{^MvVN{Xwrj|#s4q$FG( )*\AU!hO41YZVj_g<\ss45apehΝw>Pumxf-?F\ڴ"^=mkߛjc۶~]EnVb1<ɎWVVHzv?oϛYC+w.֝h!]usmn;^E>Y3<sr;,U䯑't55%Q6{e5 uNwn>o23TSgӯ|=eL)ŷǩ*[%jU1F\u5Ii =T^k VW\B!H~;w71Whcߩ 24*lktK@@IvG`jv0ݖTUPrJBUU:jȘ^@,?+u拟j=*T^kj>!S?|uZ\"lY㗔# ]m;tK;C^Wޡk_-|Q0K^p& ;@2UW\?=Kv-[S~#IYnCY旚mM]+1w;f}F6Z~@Й蟮KRꥬ I 5R{\UJv;_ϻ^FY4JM:Xk}]C]#ԣh{lס-Y9c[u2tg.&zD׬PG0QYO]=N:ȑ|qEuFڡ;]sszfF?}RTm?Ui[$Ɵg}ፒ/IOb-nWPK@ +YTs/xTr9,U -HN5ϯoQƋ{Γ/-F'I/JuPz{P9IvXՏ` t}pP=4͖d5_cB􏗖SsCt3_E:r9*}V[/$I]?KokNDt]jdߍKSC̳|D+/Q@ޣgƴgO'OQϩ^~E ?y2{fjQKZmo9;s4`̹r^imGUCHN?;ui4 {UԡޝvnyK7oc}Bx =OvŞIG陷>CҖw;KfǴE E /QYqZ-שCROp•ڭctzI)=/e4{[;hN},5{y2vYC-Pt:ۣZzpzpzpͮG;hFù:DZzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzpzp:;a00000000000000000000000000000000000;N% G G G G G G G G G G G G G G G G G G G 3;hF1 L##'wzC)?z s̴FS^^VcC @!'o7 H}  7C @a>P~ CM 0R`(?C @&P~O0B} P~`(?'o>P~(I0F 7P`(?$o# CO0o 7C @!'o7 H}  7C @a>P~ CMiǝ@ 'wzCӦdz3Q~`(?'f?'f?C @&P~O0B} P~`(?'o>P~(I0F ٶ͛P(R8m%@;"@m[=kӦ  B{cz3m++9)I ֫R`PphzC5ƍTYY-WGw~f>KtOP߾$I:/j=4]5.I{gzcwdռ.`@s{RCe4ozꩧ4jͳ@|`ǝ}MVYE\q$F _pc.W))]u$ d #ǂAr{Srye*s!{zcUC ٳgK?2-˒eYs@s UT}vS׬o?99u 9xYN/A UNW{ziw4b!ڞ_('ϧ$_ɶBsP8 q, !k cv'S}QJJҕ*'I PqwTVV> >xrsk˖/T^Z"#_RRRRr` B=ġ`ޭ[7RJjV|. )dk»4vlBȌ75 CM=j;ڄ-˒Vr{*˥k ںe֭[Cp');fbeYꞓ+-=] Ѯ]EիW***+G`PpXMS X%!ۭd%''W=ͪoV뜳/xO~_K+$"(8TS_kf1rJJey|ꕑ) `8B=ĩt:z,K^WmrpzHerpDՌ\zH etpY0A ## ; r LA G G G ]P;hFq,NY#1RPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP՜e-H=`8B=`8B=`f˶۩ZYHt>k^M UڲerBHw*%ánR’\哔)<zr{c&ʲ:p\+hÆQjj"A>S % ԣĝ6Qv7IEŅ m[pXaTrn۵Mnve RT( NWFzYWܧ#PXeJmW/Y-&cu[,vH%,_}SnM n7vh~8H].%Cֶ#%,'I\U#IIi_RtH(m>naIRW`K aȕ,3A~E]D W{"vzm\e|-nϺ䪝"AE:NKk$Sﱛ:V,;cIP31kozRs%!goeY ۥ]%~ɶS尺xa3zsz%7ᲔLWj-=- L28y^BgpUd hM+/z Lm>M͍#8=ep$Y`ꟃpպeC.='^~(۵†=3՗>PPVMt@H{gH_ZnC1љgb83t+kٰ_of@}e9dYVt,Yd)SFV,J)[!I.rM?:nzgM VHtw6ؗ~M[F㎸M^S~HOZ?}9:}ګv}:Sϥ'_{cŢ]_ucu_zõ$mqzw} n5}tQuCzDڒ,~ VRGnsc@_Z=Ӻc5v;_RzUrHV;7-0`&@WZ#mۮIpOh) WD9'5@˴ߗOEWTZiמ˾qpٔ^.n@ 1tiY."#VdުŶdWVt_nbӦ#~_ݵv p@&Vmk5#G~_^osMC}aaSo/yN]]r}^g$ޖmGLKMSL*''GGfM,4@UUU8n[YYYz m:U}[ѝ@;( `ߢ0000\n -H=`8B=`8B=`}-`$Q0\B}k#}QQV^Sg#kض 7jV=T\\Zvvo߾JNJJ(? nȑm[.K)))JKKՊ$I=ztWnݔ^]J;wj͚4hrrzr) ʶm_^v)--]={T^TPP\!~}J|AJOOoq]n]f ,ǫB![***Tq.UVVL3G)rݲm[iiz5%$v+IJJVEENNw;vvT]UUU%˲%1 2-t*-=C ۶<^dYJNIQRrBz%y,K q>^qH}jJvKF#7a\.ٶ$ٶP($˲TZZP($/)9XR$YÛ}WVr|c:r1]:? c׶, ̥wW[r8R4|-:&P]B}=_PPYYn,+2e0R8$BcH***RNMg* J*vm֧o!/s_uۛlw4TVVk 9Z],=Su-;f.7fgeiݺuZrz(###RRc {n.aC!( ʒԷOWTX3eW ?ߢ!WY $k7/ɖJՀ_lѶ[Xo( Gkb;v?wŖjal9L="*(*k?vC4j@ғܪ*ۨ%o2_w8M:7n=r}[^įv ÒT.󩢢RPHJJJRjjvءTٶtUTT$K#IRTSKl+TTPPRgXf!|sUTٲ,)/WjpUkSyPPN}$mhkx.pXY%%GJIIQ0VEE\.Gd>Zjc5\UUlK-[RXR)EXVVhX厚A!^xYlEj}.JzhzV-m|ћeSSS#G$;y<қp8,9:EvR40ۧVװܤH*-PjT[RE!,JwjϫF/ɥ[4-UH<Cpe9r9rvMn9%/Gjm[oz f8R"}(6|?UݏRa3 ,B:f! է_/m֪ϗ[.ɲ >Z~S3| ^BPܖ^rJp(R$7b?iuٷ%YP*K TᏄjrW5 %y\e˒``U4yJj=pwU)[ mߐL=Hyd(#+;Vph6=Y]2U3VWR88t6z>2`UP.3Z3r:t:Ƕ1*"71o/)3ݐ JJ#-TP>8|PsDЦ>G眗$kFC=*nG~z}X ޾9z23$Y-tBm:-r8d9JIMՆԭ[7m[WpX궶 u*)i@eee|rr8^P :tp(vgϞھcvȗUjjB`$ܒ222$Ié@J .zr\( ouX,C[R^T\\*.ڥPP`ݙqNNvT.3DoP6Ҳ,\.9\.y>uC53WZ%۶SY<,6t.KR|y!uko{mz,}pzpzpͪ_nM{@ _|:/b SMWjjZ{l1ԗn~U_sqǛ6n_|‚Lt:UÆ ~}vh_7O>2:o|Gwġ]Em۶׀P~%;#9NC!xӳOC[mV}5?@{O4$%Ss^u'hqwX?omڶcr>}uZ),,P>}%*,vlWa}gZv֮Y]:sruJB!Y%+2J"ԣBP]~uC۷F%F[ 7AtˍJJN҉3Oиqt2dh;Oӈ15v2N֢vF7|sGwPw{WtI'wճ2һ(%%E[qIz>uB mk3|_: $+Wj鲥ziKә*Ж-??GoEǾUZp,9%IN||zۗo[ أ?ζ`Z-88;AF{'jdM8AǞ`t#gewwZӦLCGEK5m rn\96خ[朮IGI'~7ut1}_Ii3$I'Nĉ\I4a$^v̯+:K@[US]ᅲ~V\ɗӧ},Rv8R*ݵxcW@vF{l)ەK˵=;C%zӞ-IzꌙdmdȈ.\ k^et5o3v3֛w $F|(Z/2@%?^>^9[oFMwv{$I%[qs̜ujoUotӔp8$ $m۾MEE{暷$9m^S{$If\/>kN9(%EBlkOM~[viA>g(T57D~nݦ5kj֭x|I|,ZmE:_4ٮo6Iw$UH*^j=Tw:N]uUUK//zYm}*( thmͮ^WυZKn>,gL`7~ NṡD`tԲ֖ߴ9 ) ֻB! zfDͽbnZxztъ_&+(WVVSbXDF[[9u![sZV>by- :TIei4n„[Rrӡ7&c/PΝ B%t*kW3F99=lKM~Wwkt~U?P_/~UKHRzzQ%+')ϚǾ;$%UV/KeFmEH$9z=T$%gԾfޖ/W޹v5/S3P$.ʼn4kFC?ׄ}&,55Y=,6R__a&,-k;D[L759f &appname;"> ]>
&app; Manual V&manrevision; Referencer is a tool to help you manage your collection of documents, and to use them to generate a bibliography. 2008 John Spray Referencer Development Team &legal; John Spray
jcspray@icculus.org
Referencer Manual V 1.1.6 2008-10-22 John Spray This manual describes version &appversion; of &appname;. Feedback To report a bug or make a suggestion regarding the &app; application or this manual, please visit the Referencer home page.
Introduction &app; is a tool to help you manage your collection of documents, and to use them to generate a bibliography. It is designed with the scientist/researcher in mind, and "document" may be taken to mean "paper" in general, although &app; can deal with any kind of document that BibTeX can. Getting Started Starting &app; You can start &app; in the following ways: Applications menu Choose Office Referencer. Command line To start &app; from a command line, type the following command, then press Return: referencer When You Start &app; When you start &app;, the following window is displayed.
&app; Start Up Window Shows &app; main window.
The &app; window contains the following elements: Menubar The menus on the menubar contain all of the commands that you need to work with files in &app;. Toolbar The toolbar provides quick access to some frequently used menu items. Document list The document list shows the documents in the library being worked on. It can be used in either List View or Icon View. Tag pane The tag pane provides a list of tags which can be applied to documents, as well as buttons for creatings and deleting tags. The document list can be filtered to certain tags by selecting them in the tag pane.
Usage At it's most basic, &app; may be used for editing your documents and bibliography data (library). However, it also includes useful time-saving features. Chief amongst these is the automatic acquisition of bibliographic information (metadata) for some kinds of document. When you add a PDF file to your &app; library, it will automatically be searched for key identifiers such as a DOI code or arXiv identifier. If either of these is found, &app; uses your internet connection to retrieve the metadata for the document. If you've got a collection of already-downloaded PDFs of papers, this can save you a lot of typing! &app; also uses its knowledge of papers to provide handy functions such as opening the web page associated with the article, or opening the document itself. Additionally, you can attach tags to documents to catgorise them, and then browse documents more easily by filtering them by tag. &app; is intended to be extremely user-friendly, but to help you get up and running as smoothly as possible, the following subsections explain how to use &app;. To use &app; with BibTex &app; maintains its own library of your documents, rather than loading and editing a BibTeX file. As such, when you're ready to use your library in your LaTeX document, you can have &app; generate a BibTeX file (by choosing Library Export to BibTex). By default this will include all documents in your library: if you would rather only export some documents then you can use the Selection: field in the export dialog to restrict the export to certain documents. Rather than repeatedly exporting when you make changes, you can tell &app; to write the BibTeX file every time you change your library (Library Manage BibTex File). &app; will automatically handle conversion of special characters (e.g. ß) to their LaTex equivalents (e.g. \ss). Depending on the BibTeX style you are using in your work, capitalization of text in your LaTex output may differ from that in your &app; library. This is to allow publishers to impose their own capitalization schemes. If you want text to be capitalized in your work exactly as it is in your library, then you can use the Protect capitalization option in the BibTeX export dialog. If you already have a BibTeX file, you can import it into &app; by choosing LibraryImport... from the menubar. Importing and then exporting a BibTex file is not guaranteed (or intended) to produce exactly the same file as went in: &app; is not a BibTeX editor! Information such as document filenames and tags is not included in BibTeX files. You should always use your &app; library file as the authoritative copy. To add documents To add documents by file/folder Choose Documents Add file … from the menubar. If you have some document files you'd like Referencer to know about, you can add one or more files, or a whole folder (by choosing Documents Add folder …), and &app; will create entries for each file. PDF files will be read, and &app; will do its best to fill out the metadata for you. When adding a folder of files, files named ".svn", "CVS", files with the extension ".bib" or ".reflib" and files with names starting "." are automatically skipped. These files can still be added individually. To add documents by DOI code Choose Documents Add document with DOI … from the menubar. If you have the DOI code for a paper, you can save yourself the effort of inputting its metadata by simply giving &app; the DOI and letting it look up the metadata for you. To add documents by hand Choose Documents Add empty reference … from the menubar. As a last resort, &app; provides a simple interface for manually creating a document and inputting metadata. A document with no information is created, and the properties window is opened for you to enter a name for the document and some metadata. To add documents from a BibTeX/EndNote/Refer file Choose Library Import … from the menubar. Your existing bibliography files, or snippets from websites can be imported. Items from these files will be loaded and added to the currently open library. To add documents by Copy/Paste Choose Edit Paste BibTex from the menubar. To conveniently import references from the web, or particular references from an existing BibTeX file, you can simply copy and past BibTeX markup into referencer, where these references will be added as if you had imported them from a file. To use different document types/fields Referencer's user interface is optimized for dealing with scientific papers. As such, the document type is "Article" by default and fields such as Title, Authors, Journal and Volume are shown. Other types of document may be selected in the properties window. To open this, choose Documents Properties from the menubar. If you don't see the BibTeX type you want, simply type it in and it will be passed through verbatim when exporting to your BibTeX file. Some document types may require additional metadata fields, for example "Book" documents should have an "Editor" field. You can add this by expanding the Extra Fields section of the properties window, and clicking the New icon. To enter some data into your new field, select it and click the Edit icon. Tagging And Searching Tagging allows you to categorize your documents. Unlike a traditional hierarchical directory type organisation, a tag-based system allows a document to belong to multiple overlapping categories. For instance, you might have tags called "Physics" and "Biology", and another called "Exciting papers". If these were directories, you would have to make arbitrary choices about which to put a paper into. As it is, you can just assign both "Physics" and "Exciting papers" to a document, and when you're not excited any more just remove the "Exciting papers" tag. Once you've created a tag (by choosing Tags Create Tag …), a checkbox for the tag will appear in the bottom half of the Tag Pane (shown or hidden using View Show Tag Pane). Once you've selected one or more documents, you can set or unset this tag for the group by clicking the checkbox. Once you've tagged some documents, you may want to filter your view by tag. You can do this by clicking on a tag in the list in the top half of the Tag Pane. To include more tags in the view, hold Ctrl while clicking to select more than one tag. To complement the tagging system, a search box is provided above the document view. Entering text into the search box will cause only those documents featuring the search text to be shown. The search only considers the Title, Authors and Key fields of the documents. Plugins Additional functionality can be added to &app; using the versatile Python language. As of version 1.1, two kinds of plugin are supported: Metadata fetcher plugins, and Document action plugins. The former might be a script that looks up metadata for a DOI code in an internet database, while the latter might be something that manipulates the metadata of an existing document in some way. Interested developers should download the &app; source code and look in the plugins/ directory for examples and in plugins/README for a brief guide. About &app; &app; and this manual were written by John Spray (jcspray@icculus.org). Some contributions to the manual came from Mario Blättermann (mario.blaettermann@t-online.de. To find more information about &app; and the most recent documentation, please visit the project page. This program is distributed 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. A copy of this license is included with this documentation; another can be found in the file COPYING included with the source code of this program.
referencer-1.2.1/help/Makefile.am0000664000175000017500000000116312042412720013535 00000000000000include $(top_srcdir)/gnome-doc-utils.make dist-hook: doc-dist-hook #The name of the help document to build. # This is the filename without the .xml extension. DOC_MODULE = referencer #List any files included in the help document using system entities # Example: DOC_ENTITIES = legal.xml #List any files that are included in the Xinclude specification DOC_INCLUDES = #List of all the figures that are referenced in the help document DOC_FIGURES = \ figures/referencer_window.png #List of all the language codes for the languages in which the # document is translated DOC_LINGUAS = de referencer-1.2.1/help/ChangeLog0000664000175000017500000000167312042412720013261 000000000000002008-10-22 Mario Blättermann * C/Makefile.am: Created initial makefile * C/legal.xml: Added license file * C/referencer.xml: Created initial help manual from HTML files * C: Created directory to contain English help manual files * de: Created directory to contain German help manual files * C/figures: Created directory to contain images for manual * C/figures: Created directory to contain images for German manual * de/de.po: Initial German translation * referencer.omf.in: Created base Object Metadata Framework file * Makefile.am: Created top level makefile * ChangeLog: Created ChangeLog file to track Referencer Manual changes - ************************************ Prepare for future Referencer Manual ************************************ - See "Migrating to GNOME Documentation Build Utilities" http://library.gnome.org/devel/gnome-doc-make/0.12/migrating.html.en referencer-1.2.1/help/de/0000775000175000017500000000000012150643002012147 500000000000000referencer-1.2.1/help/de/figures/0000775000175000017500000000000012150643002013613 500000000000000referencer-1.2.1/help/de/figures/referencer_window.png0000644000175000017500000007756612150643002017773 00000000000000PNG  IHDRk asBIT|dtEXtSoftwaregnome-screenshot> IDATxw|Wt*%ے{q7nmL = - jhI SBfq`pݖmɖޮӝ;$˒,~t;͛ٽoD"H$D"H$D"H$D"H$D"H$D"H$?M6mD"H$D"i"~+2&H$D"HZb @o؂\e[z Oow%D"H$Imwq;Z |ze(. XI9*:h$H8H$D"H$-QZYK[NXѠѥe]}d`2@Nk?G:^6`cE"!v euS`_^9))=\D"H$5VQVUˎKB3d\..8]Iֱ +s(zݙyाk|>OWzԩ.&&PR8!d|of˾5 UUC.D"H$D UVJ*jص~)g^>TΒ>bi9DŽwiYx8ngס7:Azeh%hu-w'$9(>!҈aPԒ {+=łH$D"H$tkR>ĘpJ*m-I gi9ZqBEЁY^Ey|(nJeE(}l"gef\j'\5՝D86":[,D"i;Wfִ -;UX~+Nb.dW&: V 93~ d}՜BE O>e[_> nao !.{(n65! MzrB4{Ʋ,Z٢sgO Iw) Mz{l&6L0&HAHKEsg.gZC3 /EH$ֳ5|䥜{Ltߩ x33,h,ELϪ݇;2<(@, ?.^#d.劎 ?ml>|b =[pCiy~@$k#F !?MWE"N>וt[sz;ٜ/58+wr}d53Xיݚ덌$w0l9l+aц,& z;v%,~i { ddNk4h|z-_/nI@Vbm;qf"cS9VSƹ3 RRЇ0CzC.U0Ef2j@ Wehz<6̀aH0-=mP̘2]΁(u`$3zP_o֤\-|Zf$RPnݛBtYK6b٬@B"p{4|kW+zӯݰ}ij y{PVcD<dO> C-уzbjszs 0 b5/;Iݬ +x4}j$S' A쭪}#Qh6m{l_#FJ^"igTzUnES~C0Yл|6~Zt&KE;Y{#vD^M@9 !48$I;~ʵ|<=78?}Ɉ-nKJޝ~;B;mvnǬs31ՌPTUw7Q=cE!5Ii1P jl剅ʒ=|,$B3E yaYS}՝ع .F;^ċ1Zm/[6n93}J%tmsnj`#n:<2oUV'b NҭsQM珏~ÀA}Ip7 dr;ެ\_ wfg0`=WŤ`ILgPf4kJcSJwq?d >y;Nƈfd~ qq^#0Kz d`n͸Ϥv &4F/vK}Cg_>!e; p8j6:p$Ts|#zNS `#c=hkI@ )HZoDw&UUes&jƀZ5q&yOqWV#6 kJ(DGG;>PnCi=?DF_7iQ{RP"A^jFɆ [0YF#jXK21oG-#fM@o+?0I fC7c棽5.CE%>PBFbf90j`6n]O~NMkVmYb A6ܶ+R /od5% ƍc32na=tvNX\N'j\<_?#0d{tΚ/<57},+yp#6f//`o{.eKRo%^``ON态r;ƍͷ@uj@6*R@4wmJ$a44146gܘ],_67r3nHu=3>8=R`XHOO'..!م:\jgT_ބ EdN%HڀIQFcƉP#B PEà=!@hs7-xnQ#:߾3aciE&rܠ7e!: Rr9jtJYDdfT t֯YERA6OK[Je{ʸ~X1wPkD;b(*~0Ol?D۟[HAe#hG: 5O èQk.v[㈫ Cw)TY6mm33jx@YL zh7QKdT_BLLl,)T'Q躎iYdT$6X DrFMyl.L7;0F$-m| &,(qr͠H߶c2bL=_"LtMa,j&# 7cCpʸfp$/lM ۅ҃ si3rM6V}KwfR OLwB_j^w[&ER$MZ 2£:܍Н$!U$] $BH#ͷq_#.FMϥ"+d-ӿ=Wb͙/n1?F)6H}Xboz燎®e߲oʅ*%7Rm㡹w"r%IіoBCs n~aM-Hb&,, ѣGMu k[ ˉA5`dBuThDrHU\8*JxbkkSLׯs+"tPTd%$˳1T+\{%b ׅӥ￿̾`MHȉ!dW铝M!.# }Xr2.w^~>K׸\I(O9W}#ݧPTT{5c}aΦN} ةO˪7q| ;Njyc[q~aa?ѯסvvVfa>J mRGm IDҮ$D2mTXCgwW|{%UuiYYŀj}>[[N^ihN ՉQ *ӥODtl$"*p3ym!L"|tg ˒x^芁l?8Лxs)^~D"H$n"#,*M".ic+*k8Gf}1NNmKvq K;KvoFQ? W iu?Q#T B$ b$IǢ;K˯BADž NuJ$D0LFK(3'/msriiSOD66ol4gc3{1Mfm9[}SR8%}st6|囙KNn.3gLn?KNv_쁫{Lfͽm%7Mnr m;iN},]K]W69yk9۴S?a6*6=n݅q#ls̶ƴ}ήz͵9LYmmdtb,^ey3xdV]*I6חh}Vk$H$tWU`/%5]9332egҴfL}V<rrg;഑SWtQ*rg!77YķuM.}2&!lӒ>߾gInN_[˽RR[83wٷsylȦ fWpSW8y߱ι͇ɝ<1m*_>x $''s}7ωr',xwx[׆Kzա/ig3x+OwwY3`),zvΚ._)m]r,gg̡Vӹ\x!U"H$&:P6'7?\ș^BW#9ٱ<{l ?2,E\|;lU\O3'K/ ><o2;s-?7>޵ λ(_Ǻyem~mZҧg]|uy"U?aԅpg?{ _=^Jمm5- fb/_ߏegh_|5bwr׮wB.Biۊ>O6 ImNC)D"HN=low2e%8-wyHMɑbOK,&Sz0I&YBFL L<43o$l@s&Yl p~D ֳ/EH$rlZ{xK_7Ln'j9m~s҅ɠc> ze:t8cSs j`6o+',FĴx>wùpxFH|l)۰ -_>m#C@D$]Ҫ;Py }%fblPA(J \D"H:6e/73G GwSmWzo1AK48 Gr{rӓa$mlq_gs9XGhl) "7{hlmJ6پ~ k׬fլY%aG upqSڷ&wb2^Zǥ/ IִPH8]6?MNir-m P: ѝK׸[Z!pyN1N~5|:]::i-]]?D""2klB?y&hڹփ{Eٗ>{o3?y?}TΙ98׿YYsx/fHIn8n^/yy#. ;E9۴Ͽ_͜A|Z:w}yw.4v9Ta6Z?~!{;&O{HBd_+W}7TS2n5౶o|rסYf’<˞zt}+ȥ&N.}D"HFH}v{j%H$D"D NBޫE?-ީM)خ2©]^p-H$hPM)خ2©]^p-H$8ie%D"H$I zD"H$]穗H$D"H$OHNy'[D"H$D 2yBrLjD"H$xo !9uu,H$D"H:9PV"H$D"9őND"H$Dr#gH$D"HNqd^"H$D"9őND"H$Dr#zD"H$'>tp:k줨{nbш1 qq =P0"t CH$D"H:ʞl-szg0etEE/ťaPg-"0IiDEvY@JkYg|Apݯ?~<:5ؽwgcUWʊӇYHMM=IN~۳M;8;A#D"9-R2u +Kq\!u]Ԡp&LĚJz Ju&1(j Հ>rEjW>c.<;vW^I:Z**i. tdg 9}^޾=ٿ#rSoX,}\Jワ^'kED" t7( N!D@E9A@P8Iw IDAT^)C( ͙o /m&99;4?x-|sܙ\yŕͦv͎jn㞭 y&Ns}TVV(ԿSP!~%P\˯bbtžݛi3SIsٓx)dStnoh"G <ՑH~tIO3/N=EC9r83p )|G<>E9TU5!XG1żbɲ%?=^rJ( UUzw@wSNrBTo}ֳl'?^B\\(}J936z+iӹJP^^?9hbbS/t"]O:O.R-Dd/l)J Cj=T99P9VJ)+_:xqh̙ɪU;n; !GnۂE3ۡÇQc8, MutݵZS7( q~yS[S]\Ӌs^uܝ8U#`۶9rKs瞲eH]3Ry Q(zʃ&lY A 0$kyU]W !,,4TUEuv4OF/`6J%**CtGQ?`VFйpb"LHj{3!ЅuU4B56mDUU%QQ؍UkFZBhl5[!p88l{L&0-NSR}WEC=n{0_FQ].D'S7ƎyyyiyMݸf#::k޻˻_UU| }7]쁄[©%* LMEHbG}dmu!w@vynu|Gw?lgT{3M{Ͽfk),5m5uV+v;ib0HNIf9MO~5#yq B1`Lu<.CbUb50(F@;@>7mL73gL ($&$RYUIfFoTlwP!"#Bh4bw4FH1BEEC߀($$$xl_NuucXRF?K;i$}'z~ԗa ";0cqŠ9p9\XlՃt8(,<̊2g\z0%])?ȲeKHу̌I5; BX@D ;r-GD!Dn8KGZpԨQ!L؝D5Bnpz_;5&S|L\\.;.aCgЧ^%.ӧSh ̼}?Yvut]׿=+BSzAuM&x}|6ǭc4L_cJN笳cDFEI^r$%5}-nfYV;ꊂD^T*ARaBX)@ܠcںh,=7}wB{kmޤ\. P4Rzr葂a8;( \.FcT~2({!>nzů-WWW7Reх^߇aMkQT0o TeuqR Uլ*4…a+䗷poRc+@M| w[ܽb+qug,B9rdK:YY).:rtz> HG!jQolB 8ؕ @Dm[@bB1S7EQ syhM˩ڗ;0 ~QPu*l2$", HO@ׄ7 ,t0ӉWw ZOzi*S_BZ8?Qvq#|e7***QEU4irP`c0g}e6m"YًjN3}9Dу9ƌ]̚y5a7G71C(J)Ĕ1!P*+b-IԻ?lV~sSs8?|2TN'f!tN'aa.Ғ{Rt%0 UUTVV۟CQT4ͅLfN*5wKIFh d=F&LA5T?`0Ǫ9xs|%Ѫ< %J̱SʂQόqZhO[ 8~û5b4 2z~CE 4=x>{,'AuR%J>}\q1X]vCAUU,^Dmu%%=c&YDEqr.!.6VF%'vk2]QTqA!*Q(h@,B`Huաn95kxy&@n];eeGpiN ]U=Ni:NDEe%cPne+J\|[J4L-ro&DCJe(,,-A皉âu i֭s+((ڟ~N\@ Sl$>NHr6<>Cs$'$Pw꛷l%--GŮXq+ӦN &*W˸72u|$9ytIoӧ>C{♱޻{۝@fGԻg{q4ͽO_vDB"%AQ!6a}64> vE%.K]hְ8H)1oTՀkpTgT//ߵZ ,dBF3_qG aW=ǵ9BZZ2Y}3عӽrR[WV?ZMm5.TYKzsM(ZTJ3= Na8.\.6[xx۸4݁VRwq88݁}^ s5g08nNҚ.%gYk<k5'_V^+`0Xz u8uTc/,&ӧNcذa]VYpNc2[na߾۸=5tg/]RR 坥mM&C`61b'=g@h$""bзONw&%~7Y#l2u=݁`S]J>`20Oiݛ)NGfӥs%$2y55Ugnv]\.***֓2*Y~]'k-tyM&;\j:F& S;/6K$'EQ0ڶ:lw&SY~*޻?))`]FII EEEWTuƒS߀Fkr"3f|RD"H$]'{>1<D"ǑU=WZycrWWp{_s[ϨTU"H$^Y2CI[k:0SO=U0 r3IᙲD -Rm}^ȵ}u>e[_fu y3ؽ}%\sL[Ft~X պkV6ٱf3 cf11#kv*!b:?aq T6G2%ǎ<$+m֔e D'`P>z:A&yˆq;gBsq18De4z؉D'`OeJ1}1ՕՁ<I]mM=ִ֗+_NJK`;c.K~S5?{zKz!DS0%l*($Ψx{*iNm-G |6\rm$.~SO=ݿ}cAsLTT4 K$9?i='p mlŷ{r"|{otQNz tJ@zuHNI#|w%qs?0{p|sy?g y&3rr<ߗ%}>\Ϟ|{f`y;*`@j Ep0O e80EBV;;scCoq_fΚNױW;0``̈GȖǰ\KVK7ZȁϲE02;&ZK[E;q=K&zEZ{PqUy_mДYMX'?9Ÿ>ď1,L,8(XZ_WEe\.8+ZN@pdZc8mx?J:Q) \kWmhBo9O{wت*1k 1[*O9)M l;'?|Ǭps+3KLW`KΘMsYyO^?߄E\{8ʠi7{u佳-׷'Ok=~7@wU0hشfO ?;({zF dU{5ny]{K8zȫ籣Gxifq/.߇|v+䩧hB?``DQ%h=蒟aO}{~Y MQY|r9Xx1G[dgzBp57?v '`%$zxwٷٗT7Cɽgf`y;a٩Y1Q1DFFBJR4 VQf,RŒ 8t-kOcTleXArN5q;ʑMkNlŒ*. $pP&LyaxڵQzGn6V @uϱLjj"Kf|v1#Zz3bsvC)wBnLfV[󺫊Mwkl'SUZ'K5݋aΙxThu mUyi.@Bq`J*2}0" N/]AufMlP(޾ J9}T7vmj<~f: 9#MuZvKPc,=rs~,y;[ 7ޟoGt[.\W.{e[4r5CgV=]"skConrLm]mܠѼt%;oѬ|B&qM\gLbϲn? iUd61p &3_}}Ż DҞ RSR9nq}o#]_=6S A^g䪦N2jGc=1B:i}UT4<jU۷n( uDŝx5R]ՇѨ*4Je\[C8G5ؽy=izg{d~*U:8}f**Sa߹ع􂵻کq%O`ْ]̸/\W BGe >!^\:3?3. z6s~#dz:yoZ1ϟo/o~/>xJֲd`x np X;a6)xPw]) 0Æw\$] ]q8 ~$bE~]^k-U7(7% pMz(o#w T](;b9̊B~u[7"},L@G~ZN=-[Vn<@3HXw?3yHBЁGvĜɜqu:BVƤ%Z[p4?;_>Bsrڏ emשo#-c֕d@~LH>sB~nTw#;'O|`X1^//{?|_7ɆmV;7/mk[=dw]io\.8ȩDґ):p=߼7b;=:'7>6~nc{O1v~5k_r\~=*+۳.&ޒZQ[ \t]nQQ|1<ƫצ`-ك1W~Il9Hyi e% /+!Z IDATǽy=iͬQ9~e8_mI^kI|vMm+S)AT#ףŰz&|3딠zogwIOG^Gy#MU!8m {deXb~؎>m3kw,ݵN|GkPۃ•73q?~S.|77+{̲?]̗:d=kc&ܘË!E\w[t7r/0屻{Ϩ|nϔ>`?s7A|}!wv&y&~~~.Jۀ;GHq ǽ\#`ĉ, ٳfk9ZWsbi`ۋc9gՀbbؤq+Gz6Q23tt; , L:} *,X2+wmvVF1s@[uJуXf5r'ޖ6,F fw_r5DMу98/ ,sT4ЬsLXv'&minaUt cdc' Ew6̢݅j`TNn}C8ѣҧM;w8bK<449_VI_!xWz fņ>4p;p/dڳir awveF(6n >Z'g7R!_7M*hqF^U[0<e1Iq}~+=#87n-vu%@|y7x/SV?tH&/q M%]VU`w /]ϯZf#E;T"bb;?~2 v}Z֭Eb_}mk[K.nuWpZDQ (;z~L2d`&dޯse,y0L<|2eʐBe;]`Ox^CJqdʔs~ Ҽ Quu٠ND%f?=1m-.7uFy/"xuli/+.Zw(];҆ꭷދ,ԐC$-{vsOH8sj?:&zDy[PC}ku^B=o4iR@P~vwY˭^R'NkZ au ԣ}8Yv867T;약Qnp<|5Z@g}ء:ؚiKf~/9K(ԹFԶˡli o|Y8YcNqc5r8]:yzzFƏ<ƶ g'h JOψ<2}8Z_a9?&|?oe0v|xw72Wҟ6Dm=6lN͜[saVk'Ծ[Q/#Z=<$)XS5_bo}ч2M35Z<~xŻY˖ݤ_.Ys즛$كmηKnU#Ӝ-">߃&)-mNk^CK4q<+KSS}zȯ-RR_GL?\έ;u _҃tm~=m}ҧ#m)5jdNyz\=^&LЬs:/ӜjG/mwuW?KM9Z'NԸ1uƵ-ݭ/;]'Oĉ4魝U1w<9u$iĉ0qTzXXXX:lMZ즸_h;:sF'-|tSԶo{=83AFԜ ?nM;V'\2^6}N&hd]CK4i&Vs\wo*?(tI_s{9UWז8$_æ~|iGt0$5{Dd?ΜUgΖ!0BoWs_y]sY.IR.O\۞pGyt$So|ʅcPo/h[vKsA$|3tR} ɸFFMg v+_^g72%bB!=׬[x[U~bz8>}p$I{Uj.Q2o$)yˮi>0]|%:}8=Is&k;Z~㾶{%)+hmmɒ$I7|~IRIII8nkuNμ[6C{r->,Y5ƕz ͺ~1C҅}U/W1^ۚ) ^{=qœ+B}#jc'Vky2c3z}ݺ7ɞ*utOd߳񬾹J[elJ?l^zpAmGzݗꌓ:|/$=%Tۮ8MKr8 {96Ii) hЄ^o4߹X8u7z#[hůi9G~!]6'kC"IZt2~۸%4MB= z!ԣ]yں CGrʙu O PXC}Ϟ=Zl a-j;h,ۛ?˗;SYcСgϞzWԓNи'w*t J47wE4w\͙5Sg,j[/׼'E;`oݢ@(j?/݋.Мל3u=}S$GgϞmA~JKU18q=ȶ{D/:D[ӰcO<^-hĉh3sr%I߾cN^sW_9"꼡@nZrrzg?Pُ$}DSN^ys={FヷÇߞp$)߹_ os={|忉W -٣Zfh}Spޟ8U3?/_{{r]oݷ.WOv:>K.NvK;Ff"49GvU(P}j'q`ӜiG .1M/ b6YG<{/~=ސʖ$}⸎/SwkI<`ofe(oݽxcm:SfC?w:My+|rG?/yԩ{' y7:nŚ;v__֞_/ќi 7ޭ3f)m׃/ެ6X:;3폽;w6m?6&o۟n׍Zp\pz#O.{@wI:u|Ԛ7,>RlX##G,PX\gw[&M]КOLMv5,PX&lX##G,PX8B=`qz#G,PX8G[wbuz#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qP F#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qz#G,PX8B=`qz#G,ma8B=`qz#G,PX8B=`qz#G,PX8B=`qz9ں@4;`9G,PX8B=`q~voztx !#;a^hnEym۶&Rh9 $Is>YV}$l'@ SW?rgDd LSNn_]w_$ H8+]TUQYO>Ǝy{H,F0`] W)y.«oT7bވ{H>I p(==GٹfOUUU~E#G3b H= 9S2p iK5bO=p>J +JOW :%U'^~_gNB=34iʱ4i&ϽHo4߃܋N&iI?v;5?z]ة3-vWq9U߽k@ ԎDFN2Yj7;e*ِ&IR =|Cl'Siy2_u ПA7:LSW7=A'\79WE]K_e蓾WjՓaHϜ;[ 8XT:zR\Wk~ƒo{`;K>u;/}K/__?=Wo[<0p^kʿ}H]_wk@oj6`" 4dP{ׇlJ#e~~Uڱqrs{H-)%Ҷ3h]uf\ӝQ.-X+ i7T]QҾPG>FyK&G-]Sy[/+)vgXн &kezwQ_ߟ6i$I]&&{I$IY[@K76V;Zo('vddy X!R2r!̐謲 I#e~9*ͺ}=}濺NG+/RNV8s~ oW<Z<[hR{vPH)3]dJ4[vf~$|em6[d쵏ђ1H2P0گCe-e=4}ҭZtպmr2MտWdZ+NO3vi]uxE7<`~j8w%kÿ_!ޱ)zr4kڿl`}dQۚ8Ιm7zðf{{m$ejFh*Ә%c*3Ȩz}Oݴ@??NSM׽YW]O]`I §yKּkI=fnotސQ?v&MI? s$;8v/y5n,j4qۘk1FqW)2M25%)@%~P^"i֥{fpL5ejT|㼖\otW粯}\{l(D mWhn 0T[FcGQ7/iȬ[ȱ\ '#^Wyy]iF px&^ij-_^W)))?8%4f^*1kKn"ϣFMfx̌LdwRqqe%|CIhՐA[ԎTnn.CBgqO߾-Nn\ԷG,PX&(Zzk/Z 5)Է4җo6F8prss[2pJJiںmԭ[7@6mVAadtPZ-ԗHEucƌir8JOOWffl*׫/}!I֭tСJ߻w6nܤA)?LԖ-[TZZ,u]=zPQQz@ (ϫ/\#Сʍ7n԰aCr)4xTRRRԨJut9N W_}qc6CJߤ#!ݮz]@n[NCԩ~ Ð۝$;@7$ݮ̬lT+drHt* (%%EݦԔ!Ou|>& M*Q6#=]QZZr&ۭΝsE]vUNN\NTVV 9&oꃏD۱f_KKmU+?UB}nT\T$ͦjBOVٲܒPB[$I]vkR;fې7A:F&J hersyf_^󕝝.1C rݪP(R(TYy I}io<<[0uLVaUՎHw} ; 4;lg:%IU\mUr]{H{6і,>@ç_oPaW)ÑC `2mް^EU̐ym=9w=?ֺ- ((=rS[*8[\ڵK۶m0LSi d~RSS}~Uʘ5P6Wj|}վ)y4v@RWmkooaS&$ģRK Iw>RYj?Mt~9JSPӦ1i|ٵSUYSeil}&SД}MG9YS%S{r<*-i矪p͜4P)559C*-Hvd Ӹ#okomԑFTߊ5ncоj7lrrU*Vuu=JMMUFF !4fU_ {G?jkT7eRQFQ),$#X1+xQ.#4ȁr+Zj\uyw>Mqr-m_}U\QNjZe*=;[9?m.iAr*[:﫢+K"UrVjV jsmXo2MaaJqI r:f GJmf.w'UސJ1_YԣlgasT8Ի CE5잫5Eeה&!ISGMhuR]6{c93dʣ#'!UjqKƏ<,F9VP(aH%ހLL68бhZF7)-0t:!{66[8l6\.v^Pm*Ws"EM6oT^~|%凵k+ گ#gjxG~^ayn}nJH{ mVe=%[+3jLS!Gdr;eHtriՆ~ o *7`hp(~n69v99H~) #E{P[*_t_S_}IM j3tnU_G nVV^cHjDl|F>r鿛PP<0L!nL5P17t4I6baH^:fDXZ_o 4MA|K0zn3 yԭs8i* ze(mCaڌYi婬<`}F!xx3RdC u|6ShjleTZ\rȔ)C yѷ~;-M 9FGfg+a *)dבnjSN\lIF>F"ǚ2z9 gmXo #!3)Sg߶1)SQXSy8"U2枦J5P#FhZS "sKӱg`p_]n%tS Mںmt颐iNQ0bJTWsngvy+}an2 pKhfS(T}A NQFF@Dې%I.ϯ )';[)))r8ͺQ8$FYaȰr:e3 Ceee*/PYIBhlvv.:tRNNvy7iĔ)- ÐfPJ[]vS̕a4TuKxh`Kkyp)NSf# 8p_2ڸc$ͮ@0~.Y_wK{ vUų5jĘh ?T ͐\.v9 HSG՟~Nj~$l֑FUuZO>rrS hC۶PH|MѦTRV?GNN `0(0pGzP0l;U۷Ǝh JnfCgTZz3T\\$O*aяw*ŬV;~ {;Zrha2 Cf(#tϮ>gn^6p˭kin%|u駞^G^QzzF[wz{V~>J{\?m]Ǽ޻zw__1Sygwzmm3 %%{zcz镗tNZvgkVO>Ym-4%Iv~mx~#?7.PIK4Oc&)jEҦ=34߫Rn^uw\͚_ٮ7B͞7vF Ѵ35m걚~On~mBWK;{$ii:uzm ߊ7^k/lQޥoNNK{R=uYgɝV뭑2%osSӟsR"SrWzex<$$IY?SѪgH2?g?9&/U};W8}%zcX~ʿ{PCf_6=T}SzA5j̉і5F_s̾RKO|F<u{o )٢[{9sSZjB>RSS=*)7׼!fKxO[%nZUZ̅9KfOT蜇O'}[N"IsőY.~^Ky[+// +[9i [ee&iQֆ _* (S`0aÆ&jߌfOqR~$yK˕3 GE+JrF:gtWUpuu B ,K\l򞀤X_ȱGx@tig"qsh|ƍ/Or*޽G7nݻrdȐd0 6W/e~^?z7iqׂ{YdL]"2&z4~ZN߭)/w٧d _6z$Y=^7T"T/>&cv"[N6-SNU~#Iz?՟jI**.R0aH]7#}^]uNOnJc.п1SNLi6DL~?7^ѓ~T(klshg‡+5{/isS떺b:LeY#}{@k.ڤvEX3H,^?H/ h=~KHfW<Z(AIENDB`referencer-1.2.1/help/de/referencer.xml0000644000175000017500000005025612150643002014737 00000000000000 &appname;"> ]>
<application>Referencer</application>-Handbuch V1.1.6 Referencer ist ein Werkzeug, das Ihnen bei der Verwaltung Ihrer Dokumentensammlung hilft und aus Ihren Dokumenten eine Bibliografie erstellt. 2008 John Spray 2008Mario Blättermann (mariobl@gnome.org) Referencer-Entwickler-Team Das vorliegende Dokument kann gemäß den Bedingungen der GNU General Public License (GPL), Version 2 kopiert, verteilt und/oder modifiziert werden. Eine Kopie der GPL finden Sie unter diesem Link oder in der mit diesem Handbuch gelieferten Datei COPYING. John Spray
jcspray@icculus.org
Referencer-Handbuch V 1.1.6 22. Oktober 2008 John Spray This manual describes version 1.1.6 of Referencer. Rückmeldungen Um Fehler zu melden oder einen Vorschlag zur Anwendung Referencer oder zu diesem Handbuch zu machen, besuchen Sie bitte die Referencer-Website.
Einführung Referencer ist ein Werkzeug, das Ihnen bei der Verwaltung Ihrer Dokumentensammlung hilft und aus Ihren Dokumenten eine Bibliografie erstellt. Es wurde für die Anforderungen des Wissenschaftlers und Forschers entwickelt, wobei »Dokument« sich auf »Papier« im Allgemeinen bezieht, obgleich Referencer mit allen von BibTex verarbeitbaren Dokumenten umgehen kann. Erste Schritte <application>Referencer</application> starten Sie können Referencer auf folgende Arten starten: Menü Anwendungen Wählen Sie BüroanwendungenReferencer. Befehlszeile Um Referencer aus einer Befehlszeile zu starten, geben Sie folgenden Befehl ein und drücken dann die Eingabetaste: referencer Beim Start von <application>Referencer</application> Wenn Sie Referencer starten, wird folgendes Fenster angezeigt.
<application>Referencer</application>-Startfenster Shows Referencer main window.
Das Referencer-Fenster enthält folgende Elemente: Menüleiste Die Menüs in der Menüleiste enthalten alle Befehle, die Sie zum Arbeiten mit Dateien in Referencer benötigen. Werkzeugleiste Die Werkzeugleiste ermöglicht Ihnen den schnellen Zugriff auf häufig benutzte Menüeinträge. Dokumentenliste Die Dokumentenliste zeigt eine Liste der Dokumente der Bibliothek an, in welcher Sie gegenwärtig arbeiten. Die Anzeige ist entweder in der Listenansicht oder in der Symbolansicht möglich. Markenleiste Die Markenleiste stellt eine Liste von Marken bereit, die zu Dokumenten hinzugefügt werden können, und zwar in Form von Knöpfen zum Hinzufügen und Entfernen von Marken. Die Dokumentenliste kann anhand bestimmter Marken gefiltert werden, indem Sie die entsprechenden Marken in der Markenleiste auswählen.
Benutzung Das grundlegende Anwendungsgebiet von Referencer ist das Bearbeiten von Dokumenten und bibliografischen Daten (Bibliotheken). Allerdings bietet die Anwendung auch einige zeitsparende Funktionen. Die wichtigste davon ist das automatische Ergänzen bibliografischer Informationen (Metadaten) für einige Dokumenttypen. Wenn Sie eine PDF-Datei zu Ihrer Referencer-Bibliothek hinzufügen, wird diese Datei automatisch nach Schlüsseln wie dem DOI-Code oder arXiv-Kennungen durchsucht. Falls eines davon gefunden wird, benutzt Referencer Ihre Internetverbindung, um die Metadaten für dieses Dokument zu holen. Falls Sie bereits über eine Sammlung bereits heruntergeladener PDF-Dateien oder Papiere verfügen, erspart Ihnen dies eine Menge Tipparbeit! Referencer benutzt auch seine Kenntnisse im Umgang mit Papieren zur Bereitstellung praktischer Funktionen wie dem Öffnen einer mit dem Artikel verbundenen Website, oder dem Öffnen des Dokuments selbst. Zusätzlich können Sie zur Kategorisierung der Dokumente Marken hinzufügen. Dadurch lässt sich die Dokumentenbibliothek leichter durchsuchen, indem sie anhand der Marken gefiltert wird. Referencer ist extrem benutzerfreundlich angelegt, aber um Ihnen den Einstieg so unkompliziert wie möglich zu gestalten, beschreiben die folgenden Unterabschnitte, wie Sie Referencer benutzen. Verwendung von <application>Referencer</application> mit BibTex Referencer lädt nicht nur BibTex-Dateien und bearbeitet diese, sondern verwaltet seine eigene Dokumentenbibliothek. Wenn Sie Ihre Bibliothek in einem LaTex-Dokument verwenden wollen, können Sie durch Referencer eine BibTex-Datei erzeugen lassen. Wählen Sie hierzu BibliothekBibTex exportieren. Standardmäßig schließt dies alle Dokumente in Ihrer Bibliothek ein. Falls Sie nur einige Dokumente exportieren wollen, können Sie das Feld Auswahl: im Exportdialog verwenden, um den Export auf bestimmte Dokumente zu beschränken. Um immer wiederkehrendes Exportieren nach Änderungen zu vermeiden, können Sie Referencer anweisen, nach jeder Änderung die BibTex-Datei neu zu speichern. Wählen Sie hierzu BibliothekBibTex-Datei verwalten Referencer wandelt automatisch spezielle Zeichen (z.B. ß) in die LaTex-Entsprechungen um (im genannten Fall \ss). Abhängig von dem in Ihren Arbeiten verwendeten BibTex-Stil könnte sich die Großschreibung im Text der LaTex-Ausgabe von der in Ihrer Referencer-Bibliothek unterscheiden, weil das den Veröffentlichern ermöglicht, ihre eigenen Großschreibungs-Schemen durchzusetzen. Falls Sie die Großschreibung in Ihren Arbeiten exakt so erhalten möchten wie in Ihrer Bibliothek, dann können Sie dazu die Option Großschreibung schützen im BibTex-Exportdialog verwenden. Falls sie bereits über eine BibTex-Datei verfügen, können Sie diese durch Referencer importieren lassen. Wählen Sie BibliothekImportieren... aus der Menüleiste. Das Importieren und anschließende Exportieren als BibTex-Datei garantiert (oder beabsichtigt) nicht, dass Sie exakt die gleiche Datei erhalten wie vor dem Import: Referencer ist kein BibTex-Editor! Informationen wie die Dateinamen der Dokumente und die Markierungen sind in den BibTex-Dateien nicht enthalten. Sie sollten stets Ihre Referencer-Bibliotheksdatei als maßgebende Kopie verwenden. Hinzufügen von Dokumenten Hinzufügen von Dokumenten nach Datei oder Ordner Wählen Sie DokumenteDatei hinzufügen… aus der Menüleiste. Falls Sie Referencer über vorhandene Dokumentdateien in Kenntnis setzen wollen, können Sie eine oder mehrere Dateien oder auch einen ganzen Ordner hinzufügen. Wählen Sie DokumenteOrdner hinzufügen …, und Referencer erstellt Einträge für jede Datei. PDF-Dateien werden gelesen, und Referencer tut sein bestes, um die Metadaten für Sie hinzuzufügen. Wenn Sie einen Ordner oder Dateien hinzufügen, werden Objekte namens ».svn«, »CVS«, Dateien mit den Erweiterungen ».bib« oder ».reflib» sowie Dateien, deren Namen mit ».« beginnen, automatisch übersprungen. Diese Dateien können jedoch individuell hinzugefügt werden. Hinzufügen von Dokumenten anhand des DOI-Codes Wählen Sie DokumenteDokument mit DOI hinzufügen… aus der Menüleiste. Falls Sie über den DOI-Code für ein Papier verfügen, können Sie sich die Mühe der Eingabe der Metadaten ersparen, indem Sie Referencer anhand des DOI-Codes für Sie nach den Metadaten suchen lassen. Manuelles Hinzufügen von Dokumenten Wählen Sie DokumenteLeere Referenz hinzufügen… aus der Menüleiste. Nicht zuletzt stellt Referencer auch eine einfache Oberfläche für das manuelle Erzeugen eines Dokuments und die Eingabe der Metadaten bereit. Ein Dokument ohne Informationen wird erzeugt und ein Eigenschaftsdialog geöffnet, in dem Sie einen Namen für das Dokument und einige Metadaten eingeben können. Hinzufügen von Dokumenten aus einer BibTeX/EndNote/Refer-Datei Wählen Sie BibliothekImportieren… aus der Menüleiste. Ihre vorhandenen Bibliografie-Dateien und auch Schnipsel aus Websites können importiert werden. Die Objekte aus solchen Dateien werden geladen und zur gegenwärtig geöffneten Bibliothek hinzugefügt. Hinzufügen von Dokumenten mittels Kopieren und Einfügen Choose Edit Paste BibTex from the menubar. Um bequem Referenzen aus dem Web oder Referenzen aus einer vorhandenen BibTex-Datei zu importieren, können Sie diese einfach kopieren und in Referencer einfügen. Diese Referenzen werden auf die gleiche Weise hinzugefügt, als wären sie aus einer Datei importiert worden. Verwendung verschiedener Dokumenttypen und -felder Die Benutzeroberfläche von Referencer ist für den Umgang mit wissenschaftlichen Papieren optimiert. Daher ist der vorgegebene Dokumenttyp »Article« und Felder wie Title, Authors, Journal und Volume werden angezeigt. Andere Dokumenttypen können im Eigenschaftsdialog gewählt werden. Um diesen zu öffnen, wählen Sie DokumenteEigenschaften aus der Menüleiste. Falls nicht der von Ihnen gewünschte BibTex-Typ angezeigt wird, geben Sie ihn einfach ein und er wird unverändert beim Exportieren Ihrer BibTex-Datei übernommen. Einige Dokumenttypen erfordern zusätzliche Metadatenfelder, beispielsweise sollten »Book«-Dokumente über ein »Editor«-Feld verfügen. Diese können Sie durch Ausklappen des Abschnitts Zusätzliche Felder im Eigenschaftsdialog und Anklicken des Symbols Neu hinzufügen. Um Daten in das neue Feld einzugeben, wählen Sie es aus und klicken Sie auf das Symbol Bearbeiten. Markieren und Suchen Das Markieren ermöglicht Ihnen die Kategorisierung Ihrer Dokumente. Im Gegensatz zur traditionellen hierarchischen Ordnerstruktur erlaubt ein auf Markierungen basierendes System, ein Dokument mehreren einander überlappenden Kategorien zuzuordnen. Beispielsweise verfügen Sie über Marken wie »Physik« und »Biologie« sowie eine weitere namens »Wichtige Papiere«. Falls es sich dabei um Ordner handelt, müssen Sie willkürlich festlegen, wo Sie ein Papier einordnen wollen. Hier jedoch können Sie sowohl »Physik« als auch »Wichtige Papiere« verwenden, und wenn die Wichtigkeit nicht mehr gegeben ist, dann entfernen Sie einfach die Marke »Wichtige Papiere«. Sobald Sie durch MarkenMarke erzeugen … eine Marke erzeugt haben, erscheint in der unteren Hälfte der Markenleiste ein Kontrollkästchen. Die Markenleiste können Sie aktivieren oder deaktivieren, indem Sie die Option AnsichtMarkenleiste anzeigen wählen. Nach der Auswahl eines oder mehrerer Dokumente setzen oder entfernen Sie eine Marke, indem Sie in das Kontrollkästchen klicken. Wenn Sie einige Dokumente markiert haben, möchten Sie vielleicht die Ansicht nach Marken filtern. Klicken Sie dazu auf eine Marke in der Liste in der oberen Hälfte der Markenleiste. Um mehrere Marken auszuwählen, halten Sie dazu die Strg-Taste gedrückt. Als Ergänzung des Marken-Systems wird oberhalb der Dokumentenansicht ein Suchfeld angezeigt. Wenn Sie hier Text eingeben, werden nur Dokumente angezeigt, die diesen Text enthalten. Die Suche berücksichtigt nur die Felder Title, Authors und Key des Dokuments. Plugins Zusätzliche Funktionalität kann Referencer mit Hilfe der vielseitigen Skriptsprache Python verliehen werden. Seit Version 1.1 werden zwei Arten von Plugins unterstützt: Metadata fetcher-Plugins und Document action-Plugins. Das erstere ist ein Skript, das nach Metadaten des DOI-Codes in einer Internet-Datenbank sucht, das letztere dient zur Bearbeitung der Metadaten eines vorhandenen Dokuments auf verschiedene Weise. Interessierte Entwickler sollten den Referencer-Quellcode herunterladen. Im Ordner plugins/ befinden sich Beispiele sowie in plugins/README eine Kurzanleitung. Info zu <application>Referencer</application> Referencer und dieses Handbuch wurden von John Spray (jcspray@icculus.org) geschrieben. Einige Beiträge zu diesem Handbuch kamen von Mario Blättermann (mario.blaettermann@t-online.de. Weitere Informationen über Referencer sowie die aktuellste Dokumentation finden Sie auf der Projekt-Website. Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Eine Kopie dieser Lizenz ist in dieser Dokumentation enthalten, eine weitere in der Datei COPYING, die im Quellcode dieses Programms enthalten ist.
referencer-1.2.1/help/de/de.po0000644000175000017500000011466712150643002013034 00000000000000# German translation of the Referencer manual. # Mario Blättermann , 2008. # msgid "" msgstr "" "Project-Id-Version: Referencer\n" "POT-Creation-Date: 2008-12-31 14:21+0100\n" "PO-Revision-Date: 2008-12-31 14:27+0100\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" "X-Poedit-Country: GERMANY\n" #. When image changes, this message will be marked fuzzy or untranslated for you. #. It doesn't matter what you translate it to: it's not used at all. #: ../C/referencer.xml:118(None) msgid "" "@@image: 'figures/referencer_window.png'; md5=f74411d3c605160d5a38b5db1e3b7281" msgstr "translated" #: ../C/referencer.xml:18(title) msgid "Referencer Manual V1.1.6" msgstr "Referencer-Handbuch V1.1.6" #: ../C/referencer.xml:20(para) msgid "" "Referencer is a tool to help you manage your collection of documents, and to " "use them to generate a bibliography." msgstr "" "Referencer ist ein Werkzeug, das Ihnen bei der Verwaltung Ihrer " "Dokumentensammlung hilft und aus Ihren Dokumenten eine Bibliografie erstellt." #: ../C/referencer.xml:25(year) msgid "2008" msgstr "2008" #: ../C/referencer.xml:26(holder) ../C/referencer.xml:47(para) msgid "John Spray" msgstr "John Spray" #: ../C/referencer.xml:29(publishername) msgid "Referencer Development Team" msgstr "Referencer-Entwickler-Team" #: ../C/referencer.xml:34(firstname) msgid "John" msgstr "John" #: ../C/referencer.xml:34(surname) msgid "Spray" msgstr "Spray" #: ../C/referencer.xml:37(email) msgid "jcspray@icculus.org" msgstr "jcspray@icculus.org" #: ../C/referencer.xml:44(revnumber) msgid "Referencer Manual V 1.1.6" msgstr "Referencer-Handbuch V 1.1.6" #: ../C/referencer.xml:45(date) msgid "2008-10-22" msgstr "22. Oktober 2008" #: ../C/referencer.xml:52(releaseinfo) msgid "" "This manual describes version 1.1.6 of Referencer." msgstr "" "Dieses Handbuch beschreibt Version 1.1.6 von Referencer." #: ../C/referencer.xml:55(title) msgid "Feedback" msgstr "Rückmeldungen" #: ../C/referencer.xml:56(para) msgid "" "To report a bug or make a suggestion regarding the Referencer application or this manual, please visit the Referencer home page." msgstr "" "Um Fehler zu melden oder einen Vorschlag zur Anwendung " "Referencer oder zu diesem Handbuch zu machen, " "besuchen Sie bitte die Referencer-Website." #: ../C/referencer.xml:64(title) msgid "Introduction" msgstr "Einführung" #: ../C/referencer.xml:65(para) msgid "" "Referencer is a tool to help you manage your " "collection of documents, and to use them to generate a bibliography. It is " "designed with the scientist/researcher in mind, and \"document\" may be taken " "to mean \"paper\" in general, although Referencer " "can deal with any kind of document that BibTeX can." msgstr "" "Referencer ist ein Werkzeug, das Ihnen bei der " "Verwaltung Ihrer Dokumentensammlung hilft und aus Ihren Dokumenten eine " "Bibliografie erstellt. Es wurde für die Anforderungen des Wissenschaftlers " "und Forschers entwickelt, wobei »Dokument« sich auf »Papier« im Allgemeinen " "bezieht, obgleich Referencer mit allen von BibTex " "verarbeitbaren Dokumenten umgehen kann." #: ../C/referencer.xml:80(title) msgid "Getting Started" msgstr "Erste Schritte" #: ../C/referencer.xml:83(title) msgid "Starting Referencer" msgstr "Referencer starten" #: ../C/referencer.xml:84(para) msgid "" "You can start Referencer in the following ways:" msgstr "" "Sie können Referencer auf folgende Arten starten:" #: ../C/referencer.xml:88(term) msgid "Applications menu" msgstr "Menü Anwendungen" #: ../C/referencer.xml:90(para) msgid "" "Choose OfficeReferencer." msgstr "" "Wählen Sie BüroanwendungenReferencer." #: ../C/referencer.xml:98(term) msgid "Command line" msgstr "Befehlszeile" #: ../C/referencer.xml:100(para) msgid "" "To start Referencer from a command line, type the " "following command, then press Return:" msgstr "" "Um Referencer aus einer Befehlszeile zu starten, " "geben Sie folgenden Befehl ein und drücken dann die Eingabetaste:" #: ../C/referencer.xml:104(command) msgid "referencer" msgstr "referencer" #: ../C/referencer.xml:111(title) msgid "When You Start Referencer" msgstr "Beim Start von Referencer" #: ../C/referencer.xml:112(para) msgid "" "When you start Referencer, the following window is " "displayed." msgstr "" "Wenn Sie Referencer starten, wird folgendes " "Fenster angezeigt." #: ../C/referencer.xml:115(title) msgid "Referencer Start Up Window" msgstr "Referencer-Startfenster" #: ../C/referencer.xml:119(phrase) msgid "Shows Referencer main window." msgstr "Zeigt das Startfenster von Referencer." #: ../C/referencer.xml:124(para) msgid "" "The Referencer window contains the following " "elements:" msgstr "" "Das Referencer-Fenster enthält folgende Elemente:" #: ../C/referencer.xml:128(term) msgid "Menubar" msgstr "Menüleiste" #: ../C/referencer.xml:130(para) msgid "" "The menus on the menubar contain all of the commands that you need to work " "with files in Referencer." msgstr "" "Die Menüs in der Menüleiste enthalten alle Befehle, die Sie zum Arbeiten mit " "Dateien in Referencer benötigen." #: ../C/referencer.xml:137(term) msgid "Toolbar" msgstr "Werkzeugleiste" #: ../C/referencer.xml:139(para) msgid "The toolbar provides quick access to some frequently used menu items." msgstr "" "Die Werkzeugleiste ermöglicht Ihnen den schnellen Zugriff auf häufig benutzte " "Menüeinträge." #: ../C/referencer.xml:146(term) msgid "Document list" msgstr "Dokumentenliste" #: ../C/referencer.xml:148(para) msgid "" "The document list shows the documents in the library being worked on. It can " "be used in either List View or Icon " "View." msgstr "" "Die Dokumentenliste zeigt eine Liste der Dokumente der Bibliothek an, in " "welcher Sie gegenwärtig arbeiten. Die Anzeige ist entweder in der " "Listenansicht oder in der " "Symbolansicht möglich." #: ../C/referencer.xml:157(term) msgid "Tag pane" msgstr "Markenleiste" #: ../C/referencer.xml:159(para) msgid "" "The tag pane provides a list of tags which can be applied to documents, as " "well as buttons for creatings and deleting tags. The document list can be " "filtered to certain tags by selecting them in the tag pane." msgstr "" "Die Markenleiste stellt eine Liste von Marken bereit, die zu Dokumenten " "hinzugefügt werden können, und zwar in Form von Knöpfen zum Hinzufügen und " "Entfernen von Marken. Die Dokumentenliste kann anhand bestimmter Marken " "gefiltert werden, indem Sie die entsprechenden Marken in der Markenleiste " "auswählen." #: ../C/referencer.xml:171(title) msgid "Usage" msgstr "Benutzung" #: ../C/referencer.xml:173(para) msgid "" "At it's most basic, Referencer may be used for " "editing your documents and bibliography data (library). However, it also " "includes useful time-saving features. Chief amongst these is the automatic " "acquisition of bibliographic information (metadata) for some kinds of " "document." msgstr "" "Das grundlegende Anwendungsgebiet von Referencer " "ist das Bearbeiten von Dokumenten und bibliografischen Daten (Bibliotheken). " "Allerdings bietet die Anwendung auch einige zeitsparende Funktionen. Die " "wichtigste davon ist das automatische Ergänzen bibliografischer Informationen " "(Metadaten) für einige Dokumenttypen." #: ../C/referencer.xml:175(para) msgid "" "When you add a PDF file to your Referencer " "library, it will automatically be searched for key identifiers such as a DOI " "code or arXiv identifier. If either of these is found, " "Referencer uses your internet connection to " "retrieve the metadata for the document." msgstr "" "Wenn Sie eine PDF-Datei zu Ihrer Referencer-" "Bibliothek hinzufügen, wird diese Datei automatisch nach Schlüsseln wie dem " "DOI-Code oder arXiv-Kennungen durchsucht. Falls eines davon gefunden wird, " "benutzt Referencer Ihre Internetverbindung, um die " "Metadaten für dieses Dokument zu holen." #: ../C/referencer.xml:177(note) msgid "" "If you've got a collection of already-downloaded PDFs of papers, this can " "save you a lot of typing!" msgstr "" "Falls Sie bereits über eine Sammlung bereits heruntergeladener PDF-Dateien " "oder Papiere verfügen, erspart Ihnen dies eine Menge Tipparbeit!" #: ../C/referencer.xml:179(para) msgid "" "Referencer also uses its knowledge of papers to " "provide handy functions such as opening the web page associated with the " "article, or opening the document itself. Additionally, you can attach tags to " "documents to catgorise them, and then browse documents more easily by " "filtering them by tag." msgstr "" "Referencer benutzt auch seine Kenntnisse im Umgang " "mit Papieren zur Bereitstellung praktischer Funktionen wie dem Öffnen einer " "mit dem Artikel verbundenen Website, oder dem Öffnen des Dokuments selbst. " "Zusätzlich können Sie zur Kategorisierung der Dokumente Marken hinzufügen. " "Dadurch lässt sich die Dokumentenbibliothek leichter durchsuchen, indem sie " "anhand der Marken gefiltert wird." #: ../C/referencer.xml:181(para) msgid "" "Referencer is intended to be extremely user-" "friendly, but to help you get up and running as smoothly as possible, the " "following subsections explain how to use Referencer." msgstr "" "Referencer ist extrem benutzerfreundlich angelegt, " "aber um Ihnen den Einstieg so unkompliziert wie möglich zu gestalten, " "beschreiben die folgenden Unterabschnitte, wie Sie Referencer benutzen." #: ../C/referencer.xml:186(title) msgid "To use Referencer with BibTex" msgstr "Verwendung von Referencer mit BibTex" #: ../C/referencer.xml:187(para) msgid "" "Referencer maintains its own library of your " "documents, rather than loading and editing a BibTeX file. As such, when " "you're ready to use your library in your LaTeX document, you can have " "Referencer generate a BibTeX file (by choosing " "LibraryExport to BibTex). By default this will include all documents in " "your library: if you would rather only export some documents then you can use " "the Selection: field in the export dialog to restrict " "the export to certain documents. Rather than repeatedly exporting when you " "make changes, you can tell Referencer to write the " "BibTeX file every time you change your library " "(LibraryManage BibTex File)." msgstr "" "Referencer lädt nicht nur BibTex-Dateien und " "bearbeitet diese, sondern verwaltet seine eigene Dokumentenbibliothek. Wenn " "Sie Ihre Bibliothek in einem LaTex-Dokument verwenden wollen, können Sie " "durch Referencer eine BibTex-Datei erzeugen " "lassen. Wählen Sie hierzu BibliothekBibTex exportieren. " "Standardmäßig schließt dies alle Dokumente in Ihrer Bibliothek ein. Falls Sie " "nur einige Dokumente exportieren wollen, können Sie das Feld " "Auswahl: im Exportdialog verwenden, um den Export auf " "bestimmte Dokumente zu beschränken. Um immer wiederkehrendes Exportieren nach " "Änderungen zu vermeiden, können Sie Referencer " "anweisen, nach jeder Änderung die BibTex-Datei neu zu speichern. Wählen Sie " "hierzu BibliothekBibTex-" "Datei verwalten" #: ../C/referencer.xml:191(para) msgid "" "Referencer will automatically handle conversion of " "special characters (e.g. ß) to their LaTex equivalents (e.g. \\ss). Depending on the " "BibTeX style you are using in your work, capitalization of text in your LaTex " "output may differ from that in your Referencer " "library. This is to allow publishers to impose their own capitalization " "schemes. If you want text to be capitalized in your work exactly as it is in " "your library, then you can use the Protect capitalization option in the BibTeX export dialog." msgstr "" "Referencer wandelt automatisch spezielle Zeichen " "(z.B. ß) in die LaTex-" "Entsprechungen um (im genannten Fall \\ss). Abhängig von " "dem in Ihren Arbeiten verwendeten BibTex-Stil könnte sich die Großschreibung " "im Text der LaTex-Ausgabe von der in Ihrer Referencer-Bibliothek unterscheiden, weil das den Veröffentlichern " "ermöglicht, ihre eigenen Großschreibungs-Schemen durchzusetzen. Falls Sie die " "Großschreibung in Ihren Arbeiten exakt so erhalten möchten wie in Ihrer " "Bibliothek, dann können Sie dazu die Option Großschreibung " "schützen im BibTex-Exportdialog verwenden." #: ../C/referencer.xml:193(para) msgid "" "If you already have a BibTeX file, you can import it into " "Referencer by choosing " "LibraryImport... from the menubar." msgstr "" "Falls sie bereits über eine BibTex-Datei verfügen, können Sie diese durch " "Referencer importieren lassen. Wählen Sie " "BibliothekImportieren... aus der Menüleiste." #: ../C/referencer.xml:195(note) msgid "" "Importing and then exporting a BibTex file is not guaranteed (or intended) to " "produce exactly the same file as went in: Referencer is not a BibTeX editor!" msgstr "" "Das Importieren und anschließende Exportieren als BibTex-Datei garantiert " "(oder beabsichtigt) nicht, dass Sie exakt die gleiche Datei erhalten wie vor " "dem Import: Referencer ist kein BibTex-Editor!" #: ../C/referencer.xml:197(para) msgid "" "Information such as document filenames and tags is not included in BibTeX " "files. You should always use your Referencer " "library file as the authoritative copy." msgstr "" "Informationen wie die Dateinamen der Dokumente und die Markierungen sind in " "den BibTex-Dateien nicht enthalten. Sie sollten stets Ihre " "Referencer-Bibliotheksdatei als maßgebende Kopie " "verwenden." #: ../C/referencer.xml:201(title) msgid "To add documents" msgstr "Hinzufügen von Dokumenten" #: ../C/referencer.xml:204(title) msgid "To add documents by file/folder" msgstr "Hinzufügen von Dokumenten nach Datei oder Ordner" #: ../C/referencer.xml:205(para) msgid "" "Choose DocumentsAdd file … from the menubar." msgstr "" "Wählen Sie DokumenteDatei " "hinzufügen… aus der Menüleiste." #: ../C/referencer.xml:207(para) msgid "" "If you have some document files you'd like Referencer to know about, you can " "add one or more files, or a whole folder (by choosing " "DocumentsAdd folder …), and Referencer will " "create entries for each file. PDF files will be read, and " "Referencer will do its best to fill out the " "metadata for you." msgstr "" "Falls Sie Referencer über vorhandene Dokumentdateien in Kenntnis setzen " "wollen, können Sie eine oder mehrere Dateien oder auch einen ganzen Ordner " "hinzufügen. Wählen Sie DokumenteOrdner hinzufügen …, und " "Referencer erstellt Einträge für jede Datei. PDF-" "Dateien werden gelesen, und Referencer tut sein " "bestes, um die Metadaten für Sie hinzuzufügen." #: ../C/referencer.xml:209(note) msgid "" "When adding a folder of files, files named \".svn\", \"CVS\", files with the " "extension \".bib\" or \".reflib\" and files with names starting \".\" are " "automatically skipped. These files can still be added individually." msgstr "" "Wenn Sie einen Ordner oder Dateien hinzufügen, werden Objekte namens ».svn«, " "»CVS«, Dateien mit den Erweiterungen ».bib« oder ».reflib» sowie Dateien, deren " "Namen mit ».« beginnen, automatisch übersprungen. Diese Dateien können jedoch " "individuell hinzugefügt werden." #: ../C/referencer.xml:212(title) msgid "To add documents by DOI code" msgstr "Hinzufügen von Dokumenten anhand des DOI-Codes" #: ../C/referencer.xml:213(para) msgid "" "Choose DocumentsAdd " "document with DOI … from the menubar." msgstr "" "Wählen Sie DokumenteDokument mit DOI hinzufügen… aus der Menüleiste." #: ../C/referencer.xml:216(para) msgid "" "If you have the DOI code for a paper, you can save yourself the effort of " "inputting its metadata by simply giving Referencer " "the DOI and letting it look up the metadata for you." msgstr "" "Falls Sie über den DOI-Code für ein Papier verfügen, können Sie sich die Mühe " "der Eingabe der Metadaten ersparen, indem Sie Referencer anhand des DOI-Codes für Sie nach den Metadaten suchen lassen." #: ../C/referencer.xml:220(title) msgid "To add documents by hand" msgstr "Manuelles Hinzufügen von Dokumenten" #: ../C/referencer.xml:221(para) msgid "" "Choose DocumentsAdd empty " "reference … from the menubar." msgstr "" "Wählen Sie DokumenteLeere " "Referenz hinzufügen… aus der Menüleiste." #: ../C/referencer.xml:224(para) msgid "" "As a last resort, Referencer provides a simple " "interface for manually creating a document and inputting metadata. A document " "with no information is created, and the properties window is opened for you " "to enter a name for the document and some metadata." msgstr "" "Nicht zuletzt stellt Referencer auch eine einfache " "Oberfläche für das manuelle Erzeugen eines Dokuments und die Eingabe der " "Metadaten bereit. Ein Dokument ohne Informationen wird erzeugt und ein " "Eigenschaftsdialog geöffnet, in dem Sie einen Namen für das Dokument und " "einige Metadaten eingeben können." #: ../C/referencer.xml:228(title) msgid "To add documents from a BibTeX/EndNote/Refer file" msgstr "Hinzufügen von Dokumenten aus einer BibTeX/EndNote/Refer-Datei" #: ../C/referencer.xml:229(para) msgid "" "Choose LibraryImport … from the menubar." msgstr "" "Wählen Sie BibliothekImportieren… aus der " "Menüleiste." #: ../C/referencer.xml:232(para) msgid "" "Your existing bibliography files, or snippets from websites can be imported. " "Items from these files will be loaded and added to the currently open library." msgstr "" "Ihre vorhandenen Bibliografie-Dateien und auch Schnipsel aus Websites können " "importiert werden. Die Objekte aus solchen Dateien werden geladen und zur " "gegenwärtig geöffneten Bibliothek hinzugefügt." #: ../C/referencer.xml:236(title) msgid "To add documents by Copy/Paste" msgstr "Hinzufügen von Dokumenten mittels Kopieren und Einfügen" #: ../C/referencer.xml:239(para) msgid "" "To conveniently import references from the web, or particular references from " "an existing BibTeX file, you can simply copy and past BibTeX markup into " "referencer, where these references will be added as if you had imported them " "from a file." msgstr "" "Um bequem Referenzen aus dem Web oder Referenzen aus einer vorhandenen BibTex-" "Datei zu importieren, können Sie diese einfach kopieren und in Referencer " "einfügen. Diese Referenzen werden auf die gleiche Weise hinzugefügt, als " "wären sie aus einer Datei importiert worden." #: ../C/referencer.xml:237(para) msgid "" "Choose EditPaste BibTex from the menubar. " msgstr "" "Wählen Sie BearbeitenBibTex " "einfügen aus der Menüleiste. " #: ../C/referencer.xml:246(title) msgid "To use different document types/fields" msgstr "Verwendung verschiedener Dokumenttypen und -felder" #: ../C/referencer.xml:247(para) msgid "" "Referencer's user interface is optimized for " "dealing with scientific papers. As such, the document type is \"Article\" by " "default and fields such as Title, Authors, Journal and Volume are " "shown. Other types of document may be selected in the properties window. To " "open this, choose DocumentsProperties from the " "menubar." msgstr "" "Die Benutzeroberfläche von Referencer ist für den " "Umgang mit wissenschaftlichen Papieren optimiert. Daher ist der vorgegebene " "Dokumenttyp »Article« und Felder wie Title, " "Authors, Journal und " "Volume werden angezeigt. Andere Dokumenttypen können im " "Eigenschaftsdialog gewählt werden. Um diesen zu öffnen, wählen Sie " "DokumenteEigenschaften aus der Menüleiste." #: ../C/referencer.xml:250(para) msgid "" "If you don't see the BibTeX type you want, simply type it in and it will be " "passed through verbatim when exporting to your BibTeX file. Some document " "types may require additional metadata fields, for example \"Book\" documents " "should have an \"Editor\" field. You can add this by expanding the " "Extra Fields section of the properties window, and " "clicking the New icon. To enter some data into your new " "field, select it and click the Edit icon." msgstr "" "Falls nicht der von Ihnen gewünschte BibTex-Typ angezeigt wird, geben Sie ihn " "einfach ein und er wird unverändert beim Exportieren Ihrer BibTex-Datei " "übernommen. Einige Dokumenttypen erfordern zusätzliche Metadatenfelder, " "beispielsweise sollten »Book«-Dokumente über ein »Editor«-Feld verfügen. Diese " "können Sie durch Ausklappen des Abschnitts Zusätzliche Felder im Eigenschaftsdialog und Anklicken des Symbols Neu hinzufügen. Um Daten in das neue Feld einzugeben, wählen Sie es aus " "und klicken Sie auf das Symbol Bearbeiten." #: ../C/referencer.xml:257(title) msgid "Tagging And Searching" msgstr "Markieren und Suchen" #: ../C/referencer.xml:258(para) msgid "" "Tagging allows you to categorize your documents. Unlike a traditional " "hierarchical directory type organisation, a tag-based system allows a " "document to belong to multiple overlapping categories. For instance, you " "might have tags called \"Physics\" and \"Biology\", and another called " "\"Exciting papers\". If these were directories, you would have to make " "arbitrary choices about which to put a paper into. As it is, you can just " "assign both \"Physics\" and \"Exciting papers\" to a document, and when " "you're not excited any more just remove the \"Exciting papers\" tag." msgstr "" "Das Markieren ermöglicht Ihnen die Kategorisierung Ihrer Dokumente. Im " "Gegensatz zur traditionellen hierarchischen Ordnerstruktur erlaubt ein auf " "Markierungen basierendes System, ein Dokument mehreren einander überlappenden " "Kategorien zuzuordnen. Beispielsweise verfügen Sie über Marken wie »Physik« " "und »Biologie« sowie eine weitere namens »Wichtige Papiere«. Falls es sich " "dabei um Ordner handelt, müssen Sie willkürlich festlegen, wo Sie ein Papier " "einordnen wollen. Hier jedoch können Sie sowohl »Physik« als auch »Wichtige " "Papiere« verwenden, und wenn die Wichtigkeit nicht mehr gegeben ist, dann " "entfernen Sie einfach die Marke »Wichtige Papiere«." #: ../C/referencer.xml:260(para) msgid "" "Once you've created a tag (by choosing TagsCreate Tag …), a checkbox " "for the tag will appear in the bottom half of the Tag Pane (shown or hidden " "using ViewShow Tag Pane). Once you've selected one or more documents, you " "can set or unset this tag for the group by clicking the checkbox." msgstr "" "Sobald Sie durch MarkenMarke erzeugen … eine " "Marke erzeugt haben, erscheint in der unteren Hälfte der Markenleiste ein " "Kontrollkästchen. Die Markenleiste können Sie aktivieren oder deaktivieren, " "indem Sie die Option AnsichtMarkenleiste anzeigen " "wählen. Nach der Auswahl eines oder mehrerer Dokumente setzen oder entfernen " "Sie eine Marke, indem Sie in das Kontrollkästchen klicken." #: ../C/referencer.xml:264(para) msgid "" "Once you've tagged some documents, you may want to filter your view by tag. " "You can do this by clicking on a tag in the list in the top half of the Tag " "Pane. To include more tags in the view, hold Ctrl while " "clicking to select more than one tag." msgstr "" "Wenn Sie einige Dokumente markiert haben, möchten Sie vielleicht die Ansicht " "nach Marken filtern. Klicken Sie dazu auf eine Marke in der Liste in der " "oberen Hälfte der Markenleiste. Um mehrere Marken auszuwählen, halten Sie " "dazu die Strg-Taste gedrückt." #: ../C/referencer.xml:266(para) msgid "" "To complement the tagging system, a search box is provided above the document " "view. Entering text into the search box will cause only those documents " "featuring the search text to be shown. The search only considers the " "Title, Authors and Key fields of the documents." msgstr "" "Als Ergänzung des Marken-Systems wird oberhalb der Dokumentenansicht ein " "Suchfeld angezeigt. Wenn Sie hier Text eingeben, werden nur Dokumente " "angezeigt, die diesen Text enthalten. Die Suche berücksichtigt nur die Felder " "Title, Authors und Key des Dokuments." #: ../C/referencer.xml:272(title) msgid "Plugins" msgstr "Plugins" #: ../C/referencer.xml:273(para) msgid "" "Additional functionality can be added to Referencer using the versatile Python language. As of version 1.1, two kinds of plugin are " "supported: Metadata fetcher plugins, and " "Document action plugins. The former might be a " "script that looks up metadata for a DOI code in an internet database, while " "the latter might be something that manipulates the metadata of an existing " "document in some way." msgstr "" "Zusätzliche Funktionalität kann Referencer mit " "Hilfe der vielseitigen Skriptsprache Python verliehen werden. Seit Version 1.1 werden zwei " "Arten von Plugins unterstützt: Metadata fetcher-" "Plugins und Document action-Plugins. Das erstere " "ist ein Skript, das nach Metadaten des DOI-Codes in einer Internet-Datenbank " "sucht, das letztere dient zur Bearbeitung der Metadaten eines vorhandenen " "Dokuments auf verschiedene Weise." #: ../C/referencer.xml:275(para) msgid "" "Interested developers should download the Referencer source code and look in the plugins/ directory for examples and " "in plugins/README for a brief guide." msgstr "" "Interessierte Entwickler sollten den Referencer-" "Quellcode herunterladen. Im Ordner plugins/ befinden sich Beispiele sowie in " "plugins/README eine Kurzanleitung." #: ../C/referencer.xml:287(title) msgid "About Referencer" msgstr "Info zu Referencer" #: ../C/referencer.xml:289(para) msgid "" "Referencer and this manual were written by John " "Spray (jcspray@icculus.org). Some contributions to the manual " "came from Mario Blättermann (mario.blaettermann@t-online.de. " "To find more information about Referencer and the " "most recent documentation, please visit the project page." msgstr "" "Referencer und dieses Handbuch wurden von John " "Spray (jcspray@icculus.org) geschrieben. Einige Beiträge zu " "diesem Handbuch kamen von Mario Blättermann (mario.blaettermann@t-" "online.de. Weitere Informationen über Referencer sowie die aktuellste Dokumentation finden Sie auf der Projekt-Website." #: ../C/referencer.xml:296(para) msgid "" "This program is distributed 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. A copy of this license is included with this " "documentation; another can be found in the file COPYING included with the " "source code of this program." msgstr "" "Dieses Programm ist freie Software. Sie können es unter den Bedingungen der " "GNU General Public License, wie von der Free Software " "Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß " "Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Eine " "Kopie dieser Lizenz ist in " "dieser Dokumentation enthalten, eine weitere in der Datei COPYING, die im " "Quellcode dieses Programms enthalten ist." #: ../C/legal.xml:2(para) msgid "" "Permission is granted to copy, distribute and/or modify this document under " "the terms of the GNU General Public License Version 2. You can find a copy of " "the GPL at this link or in the " "file COPYING distributed with this manual." msgstr "" "Das vorliegende Dokument kann gemäß den Bedingungen der GNU General Public " "License (GPL), Version 2 kopiert, verteilt und/oder modifiziert werden. Eine " "Kopie der GPL finden Sie unter diesem Link oder in der mit diesem Handbuch gelieferten Datei COPYING." #. Put one translator per line, in the form of NAME , YEAR1, YEAR2. #: ../C/legal.xml:0(None) msgid "translator-credits" msgstr "Mario Blättermann , 2008" #~ msgid "" #~ "This manual is part of a collection of GNOME manuals distributed under the " #~ "GFDL. If you want to distribute this manual separately from the " #~ "collection, you can do so by adding a copy of the license to the manual, " #~ "as described in section 6 of the license." #~ msgstr "" #~ "Dieses Handbuch ist Teil einer Sammlung von GNOME-Handbüchern, die unter " #~ "der GFDL veröffentlicht werden. Wenn Sie dieses Handbuch getrennt von der " #~ "Sammlung weiterverbreiten möchten, können Sie das tun, indem Sie eine " #~ "Kopie der Lizenz zum Handbuch hinzufügen, wie es in Abschnitt 6 der Lizenz " #~ "beschrieben ist." #~ msgid "" #~ "Many of the names used by companies to distinguish their products and " #~ "services are claimed as trademarks. Where those names appear in any GNOME " #~ "documentation, and the members of the GNOME Documentation Project are made " #~ "aware of those trademarks, then the names are in capital letters or " #~ "initial capital letters." #~ msgstr "" #~ "Viele der Namen, die von Unternehmen verwendet werden, um ihre Produkte " #~ "und Dienstleistungen von anderen zu unterscheiden, sind eingetragene " #~ "Warenzeichen. An den Stellen, an denen diese Namen in einer GNOME-" #~ "Dokumentation erscheinen, werden die Namen in Großbuchstaben oder mit " #~ "einem großen Anfangsbuchstaben geschrieben, wenn das GNOME-" #~ "Dokumentationsprojekt auf diese Warenzeichen hingewiesen wird." #~ msgid "" #~ "DOCUMENT IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTY OF ANY KIND, " #~ "EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES " #~ "THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS " #~ "MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE " #~ "RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR " #~ "MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR " #~ "MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL " #~ "WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY " #~ "SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES " #~ "AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED " #~ "VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS " #~ "DISCLAIMER; AND" #~ msgstr "" #~ "DIESES DOKUMENT WIRD »WIE VORLIEGEND« GELIEFERT, OHNE GARANTIEN IRGENDEINER " #~ "ART, SOWOHL AUSDRÜCKLICH GENANNTE ALS AUCH ANGEDEUTETE. DIES BEZIEHT SICH " #~ "AUCH OHNE EINSCHRÄNKUNG AUF GARANTIEN, DASS DIESES DOKUMENT ODER " #~ "VERÄNDERTE FASSUNGEN DIESES DOKUMENTS FREI VON HANDELSDEFEKTEN, FÜR EINEN " #~ "BESTIMMTEN ZWECK GEEIGNET IST ODER DASS ES KEINE RECHTE DRITTER VERLETZT. " #~ "DAS VOLLE RISIKO WAS QUALITÄT, GENAUIGKEIT UND LEISTUNG DES DOKUMENTS ODER " #~ "VERÄNDERTE FASSUNGEN DES DOKUMENTS LIEGT BEI IHNEN. SOLLTE EIN DOKUMENT " #~ "ODER EINE VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN, " #~ "TRAGEN SIE (NICHT DER URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE " #~ "KOSTEN FÜR NOTWENDIGE DIENSTLEISTUNGEN, REPARATUREN ODER " #~ "FEHLERKORREKTUREN. DIESER HAFTUNGSAUSSCHLUSS IST EIN ESSENZIELLER TEIL " #~ "DIESER LIZENZ. DIE VERWENDUNG EINES DOKUMENTS ODER EINER VERÄNDERTEN " #~ "VERSION DES DOKUMENTS IST NICHT GESTATTET AUßER UNTER BEACHTUNG DIESES " #~ "HAFTUNGSAUSSCHLUSSES UND" #~ msgid "" #~ "UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT " #~ "(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL " #~ "WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED " #~ "VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE " #~ "TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR " #~ "CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, " #~ "DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR " #~ "MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR " #~ "RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, " #~ "EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH " #~ "DAMAGES." #~ msgstr "" #~ "UNTER KEINEN UMSTÄNDEN UND AUF BASIS KEINER RECHTSGRUNDLAGE, EGAL OB DURCH " #~ "UNERLAUBTEN HANDLUNGEN (EINSCHLIEßLICH FAHRLÄSSIGKEIT), VERTRAG ODER " #~ "ANDERWEITIG KANN DER AUTOR, URSPRUNGSAUTOR, EIN MITWIRKENDER ODER EIN " #~ "VERTRIEBSPARTNER DIESES DOKUMENTS ODER EINER VERÄNDERTEN FASSUNG DES " #~ "DOKUMENTS ODER EIN ZULIEFERER EINER DIESER PARTEIEN, HAFTBAR GEMACHT " #~ "WERDEN FÜR DIREKTE, INDIREKTE, SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN " #~ "JEGLICHER ART, EINSCHLIEßLICH UND OHNE EINSCHRÄNKUNGEN SCHÄDEN DURCH " #~ "VERLUST VON KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER " #~ "COMPUTERFEHLFUNKTIONEN ODER ALLE ANDEREN SCHÄDEN ODER VERLUSTE, DIE SICH " #~ "AUS ODER IN VERBINDUNG MIT DER VERWENDUNG DES DOKUMENTS UND VERÄNDERTER " #~ "FASSUNGEN DES DOKUMENTS ERGEBEN, AUCH WENN DIE OBEN GENANNTEN PARTEIEN " #~ "ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN INFORMIERT WAREN." #~ msgid "" #~ "DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE " #~ "TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING " #~ "THAT: " #~ msgstr "" #~ "DAS DOKUMENT UND VERÄNDERTE FASSUNGEN DES DOKUMENTS WERDEN UNTER DEN " #~ "BEDINGUNGEN DER GNU FREE DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT " #~ "DEM WEITERGEHENDEN VERSTÄNDNIS, DASS: " #~ msgid "Please add a short description!" #~ msgstr "Bitte eine Beschreibung hinzufügen!" #~ msgid "Sidebar" #~ msgstr "Seitenleiste" #~ msgid "List view" #~ msgstr "Listenansicht" referencer-1.2.1/m4/0000775000175000017500000000000012127517024011157 500000000000000referencer-1.2.1/m4/gnome-doc-utils.m40000644000175000017500000000357212127517024014354 00000000000000dnl Do not call GNOME_DOC_DEFINES directly. It is split out from dnl GNOME_DOC_INIT to allow gnome-doc-utils to bootstrap off itself. AC_DEFUN([GNOME_DOC_DEFINES], [ AC_ARG_WITH([help-dir], AC_HELP_STRING([--with-help-dir=DIR], [path to help docs]),, [with_help_dir='${datadir}/gnome/help']) HELP_DIR="$with_help_dir" AC_SUBST(HELP_DIR) AC_ARG_WITH([omf-dir], AC_HELP_STRING([--with-omf-dir=DIR], [path to OMF files]),, [with_omf_dir='${datadir}/omf']) OMF_DIR="$with_omf_dir" AC_SUBST(OMF_DIR) AC_ARG_WITH([help-formats], AC_HELP_STRING([--with-help-formats=FORMATS], [list of formats]),, [with_help_formats='']) DOC_USER_FORMATS="$with_help_formats" AC_SUBST(DOC_USER_FORMATS) AC_ARG_ENABLE([scrollkeeper], [AC_HELP_STRING([--disable-scrollkeeper], [do not make updates to the scrollkeeper database])],, enable_scrollkeeper=yes) AM_CONDITIONAL([ENABLE_SK],[test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"]) dnl disable scrollkeeper automatically for distcheck DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS" AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) AM_CONDITIONAL([HAVE_GNOME_DOC_UTILS],[test "$gdu_cv_have_gdu" = "yes"]) ]) # GNOME_DOC_INIT ([MINIMUM-VERSION],[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) # AC_DEFUN([GNOME_DOC_INIT], [AC_REQUIRE([AC_PROG_LN_S])dnl if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) ifelse([$1],,[gdu_cv_version_required=0.3.2],[gdu_cv_version_required=$1]) AC_MSG_CHECKING([gnome-doc-utils >= $gdu_cv_version_required]) PKG_CHECK_EXISTS([gnome-doc-utils >= $gdu_cv_version_required], [gdu_cv_have_gdu=yes],[gdu_cv_have_gdu=no]) if test "$gdu_cv_have_gdu" = "yes"; then AC_MSG_RESULT([yes]) ifelse([$2],,[:],[$2]) else AC_MSG_RESULT([no]) ifelse([$3],,[AC_MSG_ERROR([gnome-doc-utils >= $gdu_cv_version_required not found])],[$3]) fi GNOME_DOC_DEFINES ]) referencer-1.2.1/m4/python.m40000664000175000017500000000345212042420323012655 00000000000000## this one is commonly used with AM_PATH_PYTHONDIR ... dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) dnl Check if a module containing a given symbol is visible to python. AC_DEFUN([AM_CHECK_PYMOD], [AC_REQUIRE([AM_PATH_PYTHON]) py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ ifelse([$2],[], [prog=" import sys try: import $1 except ImportError: sys.exit(1) except: sys.exit(0) sys.exit(0)"], [prog=" import $1 $1.$2"]) if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi ]) py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then AC_MSG_RESULT(yes) ifelse([$3], [],, [$3 ])dnl else AC_MSG_RESULT(no) ifelse([$4], [],, [$4 ])dnl fi ]) dnl a macro to check for ability to create python extensions dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) dnl function also defines PYTHON_INCLUDES AC_DEFUN([AM_CHECK_PYTHON_HEADERS], [AC_REQUIRE([AM_PATH_PYTHON]) AC_MSG_CHECKING(for headers required to compile python extensions) dnl deduce PYTHON_INCLUDES py_prefix=`$PYTHON -c "import sys; print sys.prefix"` py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi AC_SUBST(PYTHON_INCLUDES) dnl check if the headers exist: save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" AC_TRY_CPP([#include ],dnl [AC_MSG_RESULT(found) $1],dnl [AC_MSG_RESULT(not found) $2]) CPPFLAGS="$save_CPPFLAGS" ]) referencer-1.2.1/m4/intltool.m40000644000175000017500000002772412127517024013217 00000000000000## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*- ## Copyright (C) 2001 Eazel, Inc. ## Author: Maciej Stachowiak ## Kenneth Christiansen ## ## 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. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) # serial 42 IT_PROG_INTLTOOL AC_DEFUN([IT_PROG_INTLTOOL], [ AC_PREREQ([2.50])dnl AC_REQUIRE([AM_NLS])dnl case "$am__api_version" in 1.[01234]) AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n "$1"; then AC_MSG_CHECKING([for intltool >= $1]) AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) fi AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update]) AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge]) AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract]) if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.]) fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " [$]@;' AC_SUBST(INTLTOOL_V_MERGE) AC_SUBST(INTLTOOL__v_MERGE_) AC_SUBST(INTLTOOL__v_MERGE_0) INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' AC_SUBST(INTLTOOL_V_MERGE_OPTIONS) AC_SUBST(intltool__v_merge_options_) AC_SUBST(intltool__v_merge_options_0) INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' _IT_SUBST(INTLTOOL_DESKTOP_RULE) _IT_SUBST(INTLTOOL_DIRECTORY_RULE) _IT_SUBST(INTLTOOL_KEYS_RULE) _IT_SUBST(INTLTOOL_PROP_RULE) _IT_SUBST(INTLTOOL_OAF_RULE) _IT_SUBST(INTLTOOL_PONG_RULE) _IT_SUBST(INTLTOOL_SERVER_RULE) _IT_SUBST(INTLTOOL_SHEET_RULE) _IT_SUBST(INTLTOOL_SOUNDLIST_RULE) _IT_SUBST(INTLTOOL_UI_RULE) _IT_SUBST(INTLTOOL_XAM_RULE) _IT_SUBST(INTLTOOL_KBD_RULE) _IT_SUBST(INTLTOOL_XML_RULE) _IT_SUBST(INTLTOOL_XML_NOMERGE_RULE) _IT_SUBST(INTLTOOL_CAVES_RULE) _IT_SUBST(INTLTOOL_SCHEMAS_RULE) _IT_SUBST(INTLTOOL_THEME_RULE) _IT_SUBST(INTLTOOL_SERVICE_RULE) _IT_SUBST(INTLTOOL_POLICY_RULE) # Check the gettext tools to make sure they are GNU AC_PATH_PROG(XGETTEXT, xgettext) AC_PATH_PROG(MSGMERGE, msgmerge) AC_PATH_PROG(MSGFMT, msgfmt) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi AC_PATH_PROG(INTLTOOL_PERL, perl) if test -z "$INTLTOOL_PERL"; then AC_MSG_ERROR([perl not found]) fi AC_MSG_CHECKING([for perl >= 5.8.1]) $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then AC_MSG_ERROR([perl 5.8.1 is required for intltool]) else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` AC_MSG_RESULT([$IT_PERL_VERSION]) fi if test "x$2" != "xno-xml"; then AC_MSG_CHECKING([for XML::Parser]) if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then AC_MSG_RESULT([ok]) else AC_MSG_ERROR([XML::Parser perl module is required for intltool]) fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile AC_SUBST(ALL_LINGUAS) # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then AC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr]])], [DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share dnl in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [DATADIRNAME=share], [DATADIRNAME=lib]) ;; *) [DATADIRNAME=lib] ;; esac]) fi AC_SUBST(DATADIRNAME) IT_PO_SUBDIR([po]) ]) # IT_PO_SUBDIR(DIRNAME) # --------------------- # All po subdirs have to be declared with this macro; the subdir "po" is # declared by IT_PROG_INTLTOOL. # AC_DEFUN([IT_PO_SUBDIR], [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. dnl dnl The following CONFIG_COMMANDS should be executed at the very end dnl of config.status. AC_CONFIG_COMMANDS_PRE([ AC_CONFIG_COMMANDS([$1/stamp-it], [ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.]) fi rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" >"$1/stamp-it.tmp" [sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" ] [sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r $1/POTFILES } ' "$1/Makefile.in" >"$1/Makefile"] rm -f "$1/Makefile.tmp" mv "$1/stamp-it.tmp" "$1/stamp-it" ]) ])dnl ]) # _IT_SUBST(VARIABLE) # ------------------- # Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST # AC_DEFUN([_IT_SUBST], [ AC_SUBST([$1]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) ] ) # deprecated macros AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) # A hint is needed for aclocal from Automake <= 1.9.4: # AC_DEFUN([AC_PROG_INTLTOOL], ...) referencer-1.2.1/Makefile.am0000664000175000017500000000104112042412720012600 00000000000000 ACLOCAL_AMFLAGS = -I m4 ## Process this file with automake to produce Makefile.in SUBDIRS = po data libbibutils src plugins help devhelp EXTRA_DIST = \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ referencer.spec.in \ referencer.spec \ gnome-doc-utils.make \ m4 \ libsexymm DISTCLEANFILES = \ intltool-extract \ intltool-merge \ gnome-doc-utils.make \ intltool-update ## Use this so distcheck doesn't cry about the mime cache DISTCHECK_CONFIGURE_FLAGS = --disable-update-mime-database --disable-scrollkeeper referencer-1.2.1/aclocal.m40000664000175000017500000020143712150642770012431 00000000000000# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_HEADER_STDC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) # gnome-common.m4 # # serial 3 # dnl GNOME_COMMON_INIT AU_DEFUN([GNOME_COMMON_INIT], [ dnl this macro should come after AC_CONFIG_MACRO_DIR AC_BEFORE([AC_CONFIG_MACRO_DIR], [$0]) dnl ensure that when the Automake generated makefile calls aclocal, dnl it honours the $ACLOCAL_FLAGS environment variable ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}" if test -n "$ac_macro_dir"; then ACLOCAL_AMFLAGS="-I $ac_macro_dir $ACLOCAL_AMFLAGS" fi AC_SUBST([ACLOCAL_AMFLAGS]) ], [[$0: This macro is deprecated. You should set put "ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}" in your top-level Makefile.am, instead, where "m4" is the macro directory set with AC_CONFIG_MACRO_DIR() in your configure.ac]]) AC_DEFUN([GNOME_DEBUG_CHECK], [ AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug], [turn on debugging]),, [enable_debug=no]) if test x$enable_debug = xyes ; then AC_DEFINE(GNOME_ENABLE_DEBUG, 1, [Enable additional debugging at the expense of performance and size]) fi ]) dnl GNOME_MAINTAINER_MODE_DEFINES () dnl define DISABLE_DEPRECATED dnl AC_DEFUN([GNOME_MAINTAINER_MODE_DEFINES], [ AC_REQUIRE([AM_MAINTAINER_MODE]) DISABLE_DEPRECATED="" if test $USE_MAINTAINER_MODE = yes; then DOMAINS="GCONF BONOBO BONOBO_UI GNOME LIBGLADE GNOME_VFS WNCK LIBSOUP" for DOMAIN in $DOMAINS; do DISABLE_DEPRECATED="$DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_SINGLE_INCLUDES" done fi AC_SUBST(DISABLE_DEPRECATED) ]) # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, # 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gnome-doc-utils.m4]) m4_include([m4/intltool.m4]) m4_include([m4/python.m4]) referencer-1.2.1/NEWS0000664000175000017500000000000112042412720011236 00000000000000 referencer-1.2.1/libsexymm/0000775000175000017500000000000012042412720012641 500000000000000referencer-1.2.1/libsexymm/private/0000775000175000017500000000000012042412720014313 500000000000000referencer-1.2.1/libsexymm/private/icon-entry_p.h0000664000175000017500000000241212042412720017011 00000000000000// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _LIBSEXYMM_ICON_ENTRY_P_H #define _LIBSEXYMM_ICON_ENTRY_P_H #include #include namespace Sexy { class IconEntry_Class : public Glib::Class { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef IconEntry CppObjectType; typedef SexyIconEntry BaseObjectType; typedef SexyIconEntryClass BaseClassType; typedef Gtk::Entry_Class CppClassParent; typedef GtkEntryClass BaseClassParent; friend class IconEntry; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ const Glib::Class& init(); static void class_init_function(void* g_class, void* class_data); static Glib::ObjectBase* wrap_new(GObject*); protected: //Callbacks (default signal handlers): //These will call the *_impl member methods, which will then call the existing default signal callbacks, if any. //You could prevent the original default signal handlers being called by overriding the *_impl method. static void icon_pressed_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos, int button); static void icon_released_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos, int button); //Callbacks (virtual functions): }; } // namespace Sexy #endif /* _LIBSEXYMM_ICON_ENTRY_P_H */ referencer-1.2.1/libsexymm/icon-entry.h0000664000175000017500000001015112042412720015017 00000000000000// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _LIBSEXYMM_ICON_ENTRY_H #define _LIBSEXYMM_ICON_ENTRY_H #include /** * @file libsexymm/icon-entry.h Icon entry widget * * @Copyright (C) 2004-2005 Christian Hammond. * * 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 #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _SexyIconEntry SexyIconEntry; typedef struct _SexyIconEntryClass SexyIconEntryClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Sexy { class IconEntry_Class; } // namespace Sexy namespace Sexy { /** @addtogroup libsexymmEnums Enums and Flags */ /** * @ingroup libsexymmEnums */ enum IconEntryPosition { ICON_ENTRY_PRIMARY, ICON_ENTRY_SECONDARY }; } // namespace Sexy #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Sexy { class IconEntry : public Gtk::Entry { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef IconEntry CppObjectType; typedef IconEntry_Class CppClassType; typedef SexyIconEntry BaseObjectType; typedef SexyIconEntryClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ virtual ~IconEntry(); #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class IconEntry_Class; static CppClassType iconentry_class_; // noncopyable IconEntry(const IconEntry&); IconEntry& operator=(const IconEntry&); protected: explicit IconEntry(const Glib::ConstructParams& construct_params); explicit IconEntry(SexyIconEntry* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GtkObject. SexyIconEntry* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GtkObject. const SexyIconEntry* gobj() const { return reinterpret_cast(gobject_); } public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: virtual void on_icon_pressed(IconEntryPosition icon_pos, int button); virtual void on_icon_released(IconEntryPosition icon_pos, int button); private: public: IconEntry(); void set_icon(IconEntryPosition icon_pos, Gtk::Image* icon); void set_icon(IconEntryPosition icon_pos, Gtk::Image& icon); const Gtk::Image* get_icon(IconEntryPosition icon_pos) const; void set_icon_highlight(IconEntryPosition icon_pos, bool highlight); bool get_icon_highlight(IconEntryPosition icon_pos); void add_clear_button(); Glib::SignalProxy2< void,IconEntryPosition,int > signal_icon_pressed(); Glib::SignalProxy2< void,IconEntryPosition,int > signal_icon_released(); }; } /* namespace Sexy */ // vim: syntax=cpp namespace Glib { /** @relates Sexy::IconEntry * @param object The C instance * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. */ Sexy::IconEntry* wrap(SexyIconEntry* object, bool take_copy = false); } #endif /* _LIBSEXYMM_ICON_ENTRY_H */ referencer-1.2.1/configure0000775000175000017500000073540312150642772012507 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for referencer 1.2.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: referencer@icculus.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='referencer' PACKAGE_TARNAME='referencer' PACKAGE_VERSION='1.2.1' PACKAGE_STRING='referencer 1.2.1' PACKAGE_BUGREPORT='referencer@icculus.org' PACKAGE_URL='' ac_unique_file="src/RefWindow.C" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS enable_python ENABLE_PYTHON_FALSE ENABLE_PYTHON_TRUE PYTHON_EXTRA_LIBS PYTHON_CFLAGS PYTHON_LIB_LOC PYTHON_LIBS PYTHON_INCLUDES pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE UPDATE_MIME_DATABASE_FALSE UPDATE_MIME_DATABASE_TRUE ALL_LINGUAS INTLTOOL_PERL MSGMERGE INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS XGETTEXT GMSGFMT MSGFMT_OPTS MSGFMT USE_NLS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC GETTEXT_PACKAGE EGREP GREP CXXCPP DEPS_LIBS DEPS_CFLAGS RANLIB am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX HAVE_GNOME_DOC_UTILS_FALSE HAVE_GNOME_DOC_UTILS_TRUE DISTCHECK_CONFIGURE_FLAGS ENABLE_SK_FALSE ENABLE_SK_TRUE DOC_USER_FORMATS OMF_DIR HELP_DIR PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG AM_DEFAULT_VERBOSITY LN_S ACLOCAL_AMFLAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_help_dir with_omf_dir with_help_formats enable_scrollkeeper enable_dependency_tracking enable_nls enable_update_mime_database enable_maintainer_mode enable_python ' ac_precious_vars='build_alias host_alias target_alias PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC DEPS_CFLAGS DEPS_LIBS CXXCPP CC CFLAGS PYTHON' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures referencer 1.2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/referencer] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of referencer 1.2.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-scrollkeeper do not make updates to the scrollkeeper database --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-nls do not use Native Language Support --disable-update-mime-database do not run the update-mime-database utility (mostly useful for package maintainers) --enable-maintainer-mode indicates whether the build system should be set up for maintainer mode --enable-python Enable python support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-help-dir=DIR path to help docs --with-omf-dir=DIR path to OMF files --with-help-formats=FORMATS list of formats Some influential environment variables: PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory DEPS_CFLAGS C compiler flags for DEPS, overriding pkg-config DEPS_LIBS linker flags for DEPS, overriding pkg-config CXXCPP C++ preprocessor CC C compiler command CFLAGS C compiler flags PYTHON the Python interpreter Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF referencer configure 1.2.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------- ## ## Report this to referencer@icculus.org ## ## ------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_cxx_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by referencer $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='referencer' VERSION='1.2.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}" if test -n "$ac_macro_dir"; then ACLOCAL_AMFLAGS="-I $ac_macro_dir $ACLOCAL_AMFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi gdu_cv_version_required=0.3.2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gnome-doc-utils >= $gdu_cv_version_required" >&5 $as_echo_n "checking gnome-doc-utils >= $gdu_cv_version_required... " >&6; } if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-doc-utils >= \$gdu_cv_version_required\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-doc-utils >= $gdu_cv_version_required") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then gdu_cv_have_gdu=yes else gdu_cv_have_gdu=no fi if test "$gdu_cv_have_gdu" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "gnome-doc-utils >= $gdu_cv_version_required not found" "$LINENO" 5 fi # Check whether --with-help-dir was given. if test "${with_help_dir+set}" = set; then : withval=$with_help_dir; else with_help_dir='${datadir}/gnome/help' fi HELP_DIR="$with_help_dir" # Check whether --with-omf-dir was given. if test "${with_omf_dir+set}" = set; then : withval=$with_omf_dir; else with_omf_dir='${datadir}/omf' fi OMF_DIR="$with_omf_dir" # Check whether --with-help-formats was given. if test "${with_help_formats+set}" = set; then : withval=$with_help_formats; else with_help_formats='' fi DOC_USER_FORMATS="$with_help_formats" # Check whether --enable-scrollkeeper was given. if test "${enable_scrollkeeper+set}" = set; then : enableval=$enable_scrollkeeper; else enable_scrollkeeper=yes fi if test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"; then ENABLE_SK_TRUE= ENABLE_SK_FALSE='#' else ENABLE_SK_TRUE='#' ENABLE_SK_FALSE= fi DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS" if test "$gdu_cv_have_gdu" = "yes"; then HAVE_GNOME_DOC_UTILS_TRUE= HAVE_GNOME_DOC_UTILS_FALSE='#' else HAVE_GNOME_DOC_UTILS_TRUE='#' HAVE_GNOME_DOC_UTILS_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DEPS" >&5 $as_echo_n "checking for DEPS... " >&6; } if test -n "$DEPS_CFLAGS"; then pkg_cv_DEPS_CFLAGS="$DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DEPS_CFLAGS=`$PKG_CONFIG --cflags " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DEPS_LIBS"; then pkg_cv_DEPS_LIBS="$DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DEPS_LIBS=`$PKG_CONFIG --libs " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 " 2>&1` else DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DEPS_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gtkmm-2.4 >= 2.22.0 gconfmm-2.6 >= 2.12.0 poppler-glib >= 0.16.0 libxml-2.0 >= 2.7.6 ) were not met: $DEPS_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DEPS_CFLAGS and DEPS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DEPS_CFLAGS and DEPS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else DEPS_CFLAGS=$pkg_cv_DEPS_CFLAGS DEPS_LIBS=$pkg_cv_DEPS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_regex" >&5 $as_echo_n "checking for main in -lboost_regex... " >&6; } if ${ac_cv_lib_boost_regex_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lboost_regex $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_boost_regex_main=yes else ac_cv_lib_boost_regex_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_regex_main" >&5 $as_echo "$ac_cv_lib_boost_regex_main" >&6; } if test "x$ac_cv_lib_boost_regex_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBOOST_REGEX 1 _ACEOF LIBS="-lboost_regex $LIBS" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_regex-mt" >&5 $as_echo_n "checking for main in -lboost_regex-mt... " >&6; } if ${ac_cv_lib_boost_regex_mt_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lboost_regex-mt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_boost_regex_mt_main=yes else ac_cv_lib_boost_regex_mt_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_regex_mt_main" >&5 $as_echo "$ac_cv_lib_boost_regex_mt_main" >&6; } if test "x$ac_cv_lib_boost_regex_mt_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBBOOST_REGEX_MT 1 _ACEOF LIBS="-lboost_regex-mt $LIBS" else as_fn_error $? "boost_regex not found. Stopped" "$LINENO" 5 fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in boost/regex.hpp do : ac_fn_cxx_check_header_mongrel "$LINENO" "boost/regex.hpp" "ac_cv_header_boost_regex_hpp" "$ac_includes_default" if test "x$ac_cv_header_boost_regex_hpp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BOOST_REGEX_HPP 1 _ACEOF fi done LIBS="$LIBS $DEPS_LIBS" GETTEXT_PACKAGE=$PACKAGE cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_header in locale.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_cxx_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_cxx_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_cxx_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_cxx_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_cxx_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n ""; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= " >&5 $as_echo_n "checking for intltool >= ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_cxx_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : DATADIRNAME=share else DATADIRNAME=lib fi ;; *) DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # Check whether --enable-update-mime-database was given. if test "${enable_update_mime_database+set}" = set; then : enableval=$enable_update_mime_database; fi if test "$enable_update_mime_database" == "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling update mime database." >&5 $as_echo "$as_me: Disabling update mime database." >&6;} fi if test "$enable_update_mime_database" != "no"; then UPDATE_MIME_DATABASE_TRUE= UPDATE_MIME_DATABASE_FALSE='#' else UPDATE_MIME_DATABASE_TRUE='#' UPDATE_MIME_DATABASE_FALSE= fi # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; fi if test "$enable_maintainer_mode" == "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Setting up the build system for maintainer mode." >&5 $as_echo "$as_me: Setting up the build system for maintainer mode." >&6;} fi if test "$enable_maintainer_mode" == "yes"; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Python support is requested" >&5 $as_echo_n "checking whether Python support is requested... " >&6; } # Check whether --enable-python was given. if test "${enable_python+set}" = set; then : enableval=$enable_python; enable_python=$enableval have_python=$enableval else enable_python=autodetect have_python=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python" >&5 $as_echo "$enable_python" >&6; } if test "x$have_python" != "xno"; then if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.3" >&5 $as_echo_n "checking whether $PYTHON version >= 2.3... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else as_fn_error $? "too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.3" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.3... " >&6; } if ${am_cv_pathless_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2 python3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then no else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if ${am_cv_python_version+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if ${am_cv_python_platform+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi if test "x$PYTHON" = "x:"; then have_python=no fi fi if test "x$have_python" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5 $as_echo_n "checking for headers required to compile python extensions... " >&6; } py_prefix=`$PYTHON -c "import sys; print sys.prefix"` py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } have_python=no fi rm -f conftest.err conftest.i conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" fi if test "x$have_python" != "xno"; then PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'` PY_EXEC_PREFIX=`$PYTHON -c 'import sys ; print sys.exec_prefix'` PYTHON_LIBS="-lpython$PYTHON_VERSION" PYTHON_LIB_LOC="-L$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config" PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION" PYTHON_MAKEFILE="$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config/Makefile" if test -f "$PYTHON_MAKEFILE"; then PYTHON_LOCALMODLIBS=`sed -n -e 's/^LOCALMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_BASEMODLIBS=`sed -n -e 's/^BASEMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_OTHER_LIBS=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE` PYTHON_EXTRA_LIBS="$PYTHON_LOCALMODLIBS $PYTHON_BASEMODLIBS $PYTHON_OTHER_LIBS" else PYTHON_EXTRA_LIBS="" fi fi if test "x$have_python" != "xyes"; then if test "x$enable_python" = "xyes"; then as_fn_error $? "Python not found" "$LINENO" 5 elif test "x$enable_python" = "xautodetect"; then enable_python=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python not found, disabling python support" >&5 $as_echo "$as_me: WARNING: Python not found, disabling python support" >&2;} fi fi if test "x$have_python" != "xno" -a "x$enable_python" != "xno"; then enable_python=yes $as_echo "#define ENABLE_PYTHON 1" >>confdefs.h fi if test "x$enable_python" = "xyes"; then ENABLE_PYTHON_TRUE= ENABLE_PYTHON_FALSE='#' else ENABLE_PYTHON_TRUE='#' ENABLE_PYTHON_FALSE= fi ac_config_files="$ac_config_files Makefile libbibutils/Makefile src/Makefile data/Makefile data/referencer.desktop.in plugins/Makefile help/Makefile devhelp/Makefile po/Makefile.in referencer.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${ENABLE_SK_TRUE}" && test -z "${ENABLE_SK_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GNOME_DOC_UTILS_TRUE}" && test -z "${HAVE_GNOME_DOC_UTILS_FALSE}"; then as_fn_error $? "conditional \"HAVE_GNOME_DOC_UTILS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${UPDATE_MIME_DATABASE_TRUE}" && test -z "${UPDATE_MIME_DATABASE_FALSE}"; then as_fn_error $? "conditional \"UPDATE_MIME_DATABASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PYTHON_TRUE}" && test -z "${ENABLE_PYTHON_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by referencer $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ referencer config.status 1.2.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "libbibutils/Makefile") CONFIG_FILES="$CONFIG_FILES libbibutils/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "data/referencer.desktop.in") CONFIG_FILES="$CONFIG_FILES data/referencer.desktop.in" ;; "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; "devhelp/Makefile") CONFIG_FILES="$CONFIG_FILES devhelp/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "referencer.spec") CONFIG_FILES="$CONFIG_FILES referencer.spec" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi referencer-1.2.1/po/0000775000175000017500000000000012150643001011244 500000000000000referencer-1.2.1/po/es.po0000664000175000017500000006420112042412720012140 00000000000000# Spanish translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-08-15 13:29+0000\n" "Last-Translator: Jose Ramon Peregrina \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Documento" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Campos Adicionales" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadatos" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Añadir campo" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Intentando revisar en linea metadatos de este documento" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Borrar metadatos" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Eliminar este campo" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propiedades del Documento" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Archivo:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Renombra este campo" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Seleccionar un Archivo" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "Palabra Clave:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Buscar" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Pegar BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Las extensiones más cercanas a la parte superior de la lista son probadas " "primero al buscar metadatos." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Esta configuración proxy se aplica en todo el\n" "Escritorio en todas las aplicaciones Gnome.\n" "Las direcciones de secuencias de configuración\n" "automáticas no están soportadas." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "C_onfigurar…" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Servidor:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "_Bajar" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "_Subir" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Red" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Contraseña:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Extensiones" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Puerto:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferencias" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Usar autenticación" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Usar conexión proxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nombre de Usuario:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Acerca de..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Resolviendo DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Encontrando PubMed ID desde DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Resolviendo PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Obteniendo metadatos desde NCBI para PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citar en LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citar los documentos seleccionados en LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Recibiendo metadatos" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Contactando citebase.org para recibir metados de '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Descargando metadatos" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Descargando metadatos" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Analizando BibTeX" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Credenciales CrossRef no encontradas" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Para usar el servicio CrossRef se requiere una cuenta gratuita. La " "información de acceso pueden establecerse en Preferencias, o la extensión " "CrossRef puede estar desactivada." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferencias" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Desactivar CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Contactando crossref.org para recibir metados de '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Sin Nombre" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Moviendo '%1' a '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Abriendo el archivo '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Leyendo el archivo '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Descomponiendo y Analizando la Importación." #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Extrayendo documento %1 desde la estructura de bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tipo:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "No se encontraron referencias en el Portapapeles\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Múltiples referencias encontradas en el portapapeles\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Título" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autores" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Diario" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Año" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volúmen" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Emisión" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Páginas" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mes" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Nota" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Palabra Clave" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Redactor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Editor" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Series" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Dirección" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Edición" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Título del libro" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organización" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Escuela" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institución" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Capítulo" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Tipo" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artículo" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Libro" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Misc" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Despublicado" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Tesis de maestría" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Tesis doctoral" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conferencia" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Folleto" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "En la colección" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manual" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Informe técnico" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Documentos descargados" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Obteniendo información del archivo '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Autor" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Analizando Biblioteca XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Abriendo %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Ambiguedad en la localizacion del documento" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "El Archivo '%1' existe en dos lugares:\n" "\tOriginal: %2\n" "\tNuevo: %3\n" "\n" "¿Quiere mantener el la ubicación original, o actualizarlo con la nueva " "ubicación?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Aplicar eleccion a todas las localizaciones ambiguas" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Mantener el Original" #: ../src/Library.C:274 msgid "Use _New" msgstr "Usar el Nuevo" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' no es un valor booleano válido" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "Enlace DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Enlace arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "Enlace URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Enlace PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Académico" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Finalizando debido a que se produjo una Excepción sin gestionar" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Habilitado" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Módulo" #: ../src/Preferences.C:189 msgid "Description" msgstr "Descripción" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Error en la extensión" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Excepción" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Explicación" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etiquetas" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "Bib_lioteca" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Abrir…" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Guardar _como…" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "Exportar como BibTeX" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "Administrar Archivo BibTeX..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importar…" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "Trabajar sin Conexión" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Editar" #: ../src/RefWindow.C:396 msgid "_View" msgstr "Vista" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importar referencias desde BibTeX en el Portapapeles" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copiar cita LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Copiar la clave seleccionada al Portapapeles como una cita LaTeX" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Usar vista de Lista" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Usar vista de Iconos" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Mostrar Panel de Etiquetas" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Mostrar panel de _notas" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "E_tiquetas" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Crear Etiqueta" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Adjuntar nueva etiqueta" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "Eliminar Etiqueta" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Renombrar Etiqueta" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documentos" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "Añadir Archivo..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Añadir _carpeta" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Añadir refere_ncia con ID" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Remover" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "Obtener Metadatos" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Eliminar archivo de la unidad" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Herramientas" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Exportar notas como HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "Ayuda" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introducción" #: ../src/RefWindow.C:640 msgid "All" msgstr "Todos" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Sin Etiqueta" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documentos (%2 seleccionados)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documentos" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Notas: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Múltiples documentos seleccionados" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Seleccionar un documento para ver y editar notas" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "¿Guardar los cambios en la biblioteca antes de cerrar?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Cerrar sin guardar" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Escribe una etiqueta" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Crear etiqueta" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Los nombres cortos de etiquetas fácilmente recordables le ayudan a organizar " "sus documentos" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Nombre" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "¿Esta seguro desea eliminar \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Cuando una etiqueta es eliminada es también permanentemente removida de " "todos los documentos con los que esta actualmente asociada." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exportar BibTe" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Archivo BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Todos los Archivos" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Selección:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Todos los documentos" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documentos Seleccionados" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Proteger la capitalización (rodear valores con {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Codificar usando Unicode (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Exportar notas" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "Archivos HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Biblioteca sin nombre." #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Examinar" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Administrar Archivo BibTeX" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Si elige un archivo aquí, este sera reemplazado al guardar la Biblioteca." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Archivo BibTeX:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Examinar…" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Abrir Biblioteca" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Bibliotecas en Referencer" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Grabar Bibliotecas como" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Emilio Gómez Fernández https://launchpad.net/~egofer\n" " Jose Ramon Peregrina https://launchpad.net/~jrperegrina\n" " Mariano Galán https://launchpad.net/~chinomng\n" " Mario César Señoranis https://launchpad.net/~mariocesar" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Mostrando '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Cancelado" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "Etiqueta añadida a los archivos" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "C_rear etiqueta" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Añadir Documentos" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Agregar Documentos" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Este proceso puede tomar mucho tiempo, puesto se esta revisando la " "información bibliográfica de cada documento." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Documento" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Obtener texto" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Obtener ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Obtener metadatos" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Resultado" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "Etiquetas _adjuntas" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 de %2 documentos" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Cancelado" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Terminado" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Añadir referencia con ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Añadir Documento" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Agregar Directorio" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "¿Esta seguro desea eliminar estos %1 documentos" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Todas las etiquetas asociadas para estos documentos se perderán de forma " "permanentemente." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "¿Esta seguro quiere eliminar '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Todas las etiquetas asociadas y los metadatos de este documento se perderán " "de forma permanentemente." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "¿Realmente desea renombrar este archivo a '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "¿Realmente desea renombrar %1 archivos a sus Palabras Claves?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Esta acción no puede ser deshecha" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Renombrar usando la Palabra Clave" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "¿Esta seguro quiere eliminar los archivos de estos %1 documentos?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Todas las etiquetas asociadas y los metadatos de estos documentos serán " "perdidos permanentemente, y los archivos a los que hagan referencias serán " "eliminados y no podrán recuperarse." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "¿Esta seguro quiere eliminar el archivo '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Todas las asociaciones de Etiquetas y metadatos para el documento serán " "perdidos permanentemente y el archivo al que hace referencia será borrado de " "forma definitiva." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Eliminando '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Intentando abrir el archivo '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Trabajando desconectado" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Trabajando conectado" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importar Referenciass" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Archivos Bibliograficos" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Formato:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Importar %1 referencias BibTeX" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "¿Trabajar desconectado?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Se ha producido un problema mientras se recuperaba los metadatos, ¿le " "gustaría\n" "trabajar desconectado? Si opta por trabajar sin conexión ninguna otra " "operación de red se intentará hasta que elija trabajar de nuevo con conexión " "en el cuadro de diálogo de Preferencias." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Desconectarse" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Descargando %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Abriendo URI '%1' en el servidor" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Leyendo URI '%1' en el servidor" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Cerrando URI '%1' en el servidor" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "La operación en curso fue: \"%1\"" referencer-1.2.1/po/pl.po0000664000175000017500000006131312042412720012145 00000000000000# Polish translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-09-18 10:49+0000\n" "Last-Translator: Jacek Szklarski \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "DokumentE_xtra Fields" msgstr "Do_datkowe Pola" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadane" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Dodaj pole" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Próba wyszukania metdanych dla tego dokumentu" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Usuń metadane" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Usuń pole" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Właściwości dokumentu" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Zmień nazwę pola" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Wybierz plik" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Wyszukaj" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Wstaw BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Serwer pośredniczący" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Pluginy umieszczone wyżej są używane najpierw przy pobieraniu " "metadanych." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "K_onfiguruj..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Host:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Przesuń w _dół" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Przesuń w _górę" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Sieć" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Hasło:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Wtyczki" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Właściwości" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Uwierzytelnianie" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nazwa użytkownika:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_O programie..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "Analizowanie DOI z PubMed" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Analizowanie DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Wyszukiwanie ID PubMed z DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Analizowanie ID PubMed" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Ściąganie metadanych z NCBI dla PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Zacytuj w LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Zacytuj wybrane dokumenty w LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Odbieranie metadanych" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Łączenie z citebase.org w celu ściągnięcia metadanych dla '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Ściąganie metadanych" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Ściąganie metadanych" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Parsowanie BibTexa" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Analizator arXiv.org ID" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Nie odnaleziono uwierzetylniania dla CrossRef" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Aby wykorzystywać serwis CrossReff, niezbędne jest założenie darmowego " "konta. Informacje o loginie można ustawić we Właściwościach (można też " "wyłączyć obsługę wtyczki CrossRef)." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferencje" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "Wyłącz CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Łączenie z crossref.org w celu pobrania metadanych dla '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Analizator DOI Crossref.org OpenURL" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Bez nazwy" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Przenoszenie '%1' do '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Otwieranie pliku '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Wczytywanie pliku '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "Konwertowanie pliku '%1' z latin1 (przypuszczalnie) do utf8" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Parsowanie importowania" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Wydobywanie dokumentu %1 ze struktury bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Rodzaj:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Nie znaleziono odnośników w schowku.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Znaleziono wielokrotne odnośniki w schowku.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Tytuł" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autorzy" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Czasopismo" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Rok" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Wolumin" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Wydanie" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Strony" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Miesiąc" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Notatka" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Edytor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Wydawca" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Seria" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adres" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Wydanie" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Tytuł książki" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organizacja" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Jak wydano" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Szkoła" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Instytucja" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Rozdział" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Typ" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artykuł" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Książka" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "W Proceedings" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Pozostałe" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Nieopublikowany" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Praca magisterska" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Praca doktorska" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Proceedings" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferencja" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "W książce" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Broszura" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "W kolekcji" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Podręcznik" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Raport techniczny" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Ściągnij dokumenty" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Pobieranie informacji dla tytułu '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Autor" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Parsowanie biblioteki XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Otwieranie %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Niejednoznaczna lokalizacja dokumentu" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Plik '%1' występuje w dwóch lokalizacjach:\n" "\tOryginalnej: %2\n" "\tNowej: %3\n" "\n" "Czy chcesz zachować oryginalną lokalizację, czy zmienić ją na nową?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Zastosuj do wszystkich niejednoznacznych lokalizacji" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Zachowaj _Oryginalną" #: ../src/Library.C:274 msgid "Use _New" msgstr "Użyj _Nowej" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' nie jest poprawną wartością logiczną" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "Link DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Link arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "Link URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Link PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Zakańczanie z powodu nieobsłużonego wyjątku" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Włączone" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Moduł" #: ../src/Preferences.C:189 msgid "Description" msgstr "Opis" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Błąd wtyczki" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Wyjątek" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Wyjaśnienie" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "Copy text \t\n" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Tagi" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Biblioteka" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Otwórz..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Z_apisz jako..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_ksportuj jako BibTeX" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Zarządzaj plikiem BibTeX" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importuj..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "Pracuj _Offline" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Edycja" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Widok" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Kopiuj cytowania LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Kopiuj wybrane klucze do schowka jako cytowania LaTeX" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Użyj widoku _listy" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Użyj widoku _ikon" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "Pokaż listwę z _Tagami" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Pokaż listwę z _Notatkami" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "E_tykiety" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "Stwórz etykietę" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Dodaj Nową Etykietę" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Usuń Etykietę" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "Zmień _Nazwę Etykiety" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokumenty" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "Dodaj _Plik" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Dodaj _Katalog" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Dodaj _Pusty Odnośnik" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Dodaj Odnośnik z _ID" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Usuń" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Pobietrz Metadane" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Usuń Plik z Napędu" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "Zmień _Nazwę Pliku z Klucza" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Narzędzia" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Eksportuj Notatki jako HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Pomoc" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Wprowadzenie" #: ../src/RefWindow.C:640 msgid "All" msgstr "Wszystko" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Bez Etykiety" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 dokumentów (%2 wybranych0" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 dokumentów" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Notatki %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Dokumenty zaznaczone wielokrotnie" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Wybierz dokument do przeglądania i edytuj notatki" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Zapisać zmiany do biblioteki przed zamknięciem?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Zamknij _bez zapisywania" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Wprowadź etykietę" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Utwórz etykietę" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Krótkie, łatwe do zapamiętania etykiety pomogają w organizcji Twoich " "dokumentów" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Nazwa" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Na pewno chcesz usunąć \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Kiedy etykieta jest skasowana, jest także ostatecznie usuwana ze wszystkich " "dokumentów aktualnie z nią skojarzonych." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Eksportuj BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Pliki BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Wszystkie pliki" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Zaznaczenie:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Wszystkie dokumenty" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Wybrane Dokumenty" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Zachowaj wielkość liter (otaczaj pola z {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Używaj kodowania Unicoe (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Eksportuj Notatki" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "Pliki HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Nienazwana Biblioteka" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Przeglądaj" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Zarządaj Plikiem BibTeX" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Jeśli wybierzesz tu plik, będzie on nadpisywany za każdym razem kiedy " "biblioteka jest zapisywana." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Plik BibTeX" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Przeglądaj..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Otwórz Bibliotekę" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Zapisz Bibliotekę Jako" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jacek Szklarski https://launchpad.net/~jszklar" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Pokazywanie '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Anulowanie" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "Etykietuj Dodane Pliki" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "UUtwórz Etykietę" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Dodaj Pliki Dokumentu" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Dodawanie plików dokumentu" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Ten proces może zabrać trochę czasu, informacje bibliograficzne są " "wyszukiwane dla każdego dokumentu." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Dokument" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Mam ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Mam metadane" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Wynik" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Dołącz etykiety" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 z %2 dokumentów" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Anulowano" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Zakończono" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Dodaj odniśnik z ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Dodaj Dokument" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Dodaj katalog" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Jesteś pewien, że chcesz usunąć te %1 dokumentów?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Wszystkie etykiety i metadane dla tych dokumentów będą ostatecznie skasowane." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Na pewno chcesz usunąć '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Wszystkie etykiety i metadane dla tego dokumenu będą ostatecznie skasowane." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Pobieranie metadanych" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Na pewno zmienić nazwę pliku na '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Ta operacja nie może zostać cofnięta." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Zmień nazwę z Klucza" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Na pewno chcesz usunąć pliki tych %1 dokumentów?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Usuwanie '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Próba otwarcia pliku '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Pracuj offline" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Pracuj online" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importuj Odnośniki" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Pliki Bibliografii" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Format:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Pobieranie %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Wykonywana była operacja: \"%1\"" referencer-1.2.1/po/gl.po0000664000175000017500000005421012042412720012132 00000000000000# Galician translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-03-26 10:24+0000\n" "Last-Translator: vifito \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Documento" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Campos E_xtra" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadatos" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Engadir un campo" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Tentar atopar metadatos en liña para o documento" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Limpar metadatos" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Eliminar este campo" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propiedades do Documento" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Ficheiro:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Renomear este campo" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Seleccionar un ficheiro" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Tecla:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Buscar" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Pegar BibTex" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Servidor:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Rede" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Contrasinal:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Complementos" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Porto:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferencias" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Usar autenticación" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Usar proxy web" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nome usuario:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Resolvendo DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Resolvendo PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citar en LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citar os documentos seleccionados en LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Recuperando metadatos" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Descargando Metadatos" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Parseando BibTeX" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Credenciais CrossRef non atopadas" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Para usar o servizo CrossRef, precísase unha conta. A información do acceso " "pode estar en Preferenzas, ou no complemento CrossRef podería estar " "deshabilitado." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferenzas" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "Deshabilitar CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" "Poñéndose en contacto con crossref.org para recuperar metadatos para '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Sen Nome" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Mevendo '%1' a '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Abrindo o ficheiro '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Lendo o ficheiro '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Extraendo documento %1 desde a estructura bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tipo:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Ningunha referenza atopada no portapapeis\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Multiples referencias atopadas no portapapeis.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Título" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autores" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Xornal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Ano" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Asunto" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Páxinas" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mes" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Nota" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Chave" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Editor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Editorial" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Serie" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Enderezo" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Edición" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Título do libro" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organización" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Como publicado" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Escola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institución" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Capítulo" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Tipo" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artigo" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Libro" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "En Actos" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Miscelánea" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Non publicado" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Tésis mestra" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Tese PhD" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Actos" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conferencia" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "No Libro" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Folleto" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "Na Colección" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manual" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Informe Técnico" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Documentos Descargados" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Recuperando información para o ficheiro '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Parseando Biblioteca XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Abrindo %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Manter _Orixinal" #: ../src/Library.C:274 msgid "Use _New" msgstr "Empregar _Novo" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' non é un valor booleano válido" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "ligazón DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Ligazón arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "ligazón URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Ligazón PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Habilitado" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Módulo" #: ../src/Preferences.C:189 msgid "Description" msgstr "Descrición" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Excepción" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Explicación" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etiquetas" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Biblioteca" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Abrir..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Gardar _como..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xportar como BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Xestionar Ficheiro BibTeX..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importar..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Traballar Desconectado" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Editar" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Ver" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importar referenzas desde BibTeX no portapapeis" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copiar cita LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Usar Vista _Listado" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Usar Vista _Iconos" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Amosar Panel Etiqueta" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Etiquetas" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Crear Etiqueta..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Eliminar Etiqueta" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Renomear Etiqueta" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documentos" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Engadir Ficheiro" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Engadir _Cartafol..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Engadir Referenza _Baleira" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Engadir Refere_nza con ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "Elimina_r" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Recuperar Metadatos" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Axuda" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introdución" #: ../src/RefWindow.C:640 msgid "All" msgstr "Todo" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Sen etiquetar" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documentos (%2 seleccionados)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documentos" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Pechar _sen gardar" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exportar BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Ficheiros BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Todos os Ficheiros" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Selección:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Todos os Documentos" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documentos Seleccionados" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " vifito https://launchpad.net/~vifito-gmail" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/nl.po0000664000175000017500000005030312042412720012140 00000000000000# Dutch translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-03-13 11:20+0000\n" "Last-Translator: Eric Spierings \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Verwijder metadata" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Plaats metadata uit BibTeX in Clipbord" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Opzoeken" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Plak BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Serveradres:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Netwerk" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Plugins" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Poort:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Voorkeuren" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Authenticatie gebruiken" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Gebruik web proxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Gebruikersnaam:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI opzoeker" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "DOI aan het opzoeken" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "PubMed ID aan het opzoeken" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Metadata aan het binnenhalen uit NCBI voor PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citeer in LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citeer de geselecteerde documenten in LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Metadata aan het binnenhalen" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "" #: ../src/RefWindow.C:396 msgid "_View" msgstr "" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "" #: ../src/RefWindow.C:640 msgid "All" msgstr "" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Eric Spierings https://launchpad.net/~ericspierings\n" " Harm Hilvers https://launchpad.net/~harmhilvers" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/LINGUAS0000664000175000017500000000021012042412720012204 00000000000000# list of translations, sorted alphabetically (please) ca da de es fa fi fr gl hr hu it ja ko nb nl pl pt_BR pt ru sr sv tr zh_CN zh_TW referencer-1.2.1/po/nb.po0000664000175000017500000005640712042412720012141 00000000000000# Norwegian Bokmal translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-08-29 13:12+0000\n" "Last-Translator: Akselsen Rune \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokument" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "E_kstra Felt" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Legg til et felt" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Forsøk å slå opp metadata for dette dokumentet på-nett" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Rydd metadata" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "slett dette feltet" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Dokument Egenskaper" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Fyll ut metadata fr BibTeX på utklippstavlen" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Endre dette feltnavnet" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Velg en fil" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Nøkkel:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Fullmakt" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "K_onfiguer..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Vert:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Flytt _ned" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Nettverk" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Passord:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Tillegg" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Alternativer:" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Benytt autentisering" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Use web fullmakt (proxy)" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOU oppløs" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Oppløsning DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Søking PubMed ID fra DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Oppløsning PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Gjenfinner metadata" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Kontakt citebase.org til å gjenfinne metadata for '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Laster ned Metadata" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Laster ned metadata" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Analyserer BibTex" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Brukervalg" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Deaktiver CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Uten navn" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Flytter '%1' til '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Åpner fil '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Leser fil '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "Konverterer fil %1 til utf8 fra (gjettet) latin1" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Pakker ut dokument %1 fra bibutils struktur" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Ingen referanser funnet på utklippstavlen.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Flerfoldige referanser funnet på utklippstavlen.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Tittel" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Forfattere" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Journal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "År" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Utgivelse" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Sider" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Måned" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organisasjon" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Hvordan publisere" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "I Forhandlinger" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Forskjellig" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "PhD avhandling" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Forhandlinger" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "I Bok" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Teknisk Rapport" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Lastet ned Dokumenter" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Få informasjon for fil '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Åpner %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Dokuments lokasjons tvetydighet" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Filen '%1' eksisterer i to lokasjoner:\n" "\tOriginal: %2\n" "\tNy: %3\n" "\n" "Vil du beholde original filen eller oppdatere den til Ny?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Behold _Original" #: ../src/Library.C:274 msgid "Use _New" msgstr "Bruk _Ny" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' er ikke en gyldig boolean verdi" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Aktivert" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Programtillegg feil" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Unntak" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Bibliotek" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Åpne" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_ksporter som BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Behandle BibTeX Fil..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importer ..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Arbeid frakoblet" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Redigér" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Visning" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Import referanser fra BibTeX på utklippstavlen" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Kopier LaTeX sitat" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Kopier valgte nøkler til utklippstavlen som LaTeX sitat" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Bruk _Liste Vis" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Bruk _Ikon Vis" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "Vi_s Merke Rute" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Vis Rute _Notater" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Merker" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Lag Merker..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Slett Merke" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "End_re Merke Navn" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokumenter" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "Legg til Fil..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Legg til _Mappe..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Legg til To_m Referanser..." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Leg till Refera_nser med ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Hent Metadata" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "Endr_e Fil fra Nøkkel" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Eksporter Notater som HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Hjelp" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introduksjon" #: ../src/RefWindow.C:640 msgid "All" msgstr "Alt" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Umerket" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 dokument" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Notater: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Velg et dokument til å vise og rediger notater" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Lagre endringer til bibliotek før lukking" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Skriv et merke" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Lag merke" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Kort og uforglemmelig merkenavn hjelper deg å organisere dine dokumenter" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Er du sikker at du vil slette \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Eksport BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTeX Filer" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Alle Filer" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Merking:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Alle dokumenter" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Ut ValgteDokumenter" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Beskytt skriving med store bokstaver (omgi verdier med { })" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Bruke Unicode (UTF8) encoding" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Eksporter Notater" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "HTML Filer" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Navløs Bibliotek" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Bla igjennom" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Behandl BibTeX Fil" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Hvis du velge en fil her, den vil overskrives uansett når dette biblioteket " "er lagret." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTeX fil:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Åpne Bibliotek" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Henviser til Biblioteker" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Lagre Bibliotek Som" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Akselsen Rune https://launchpad.net/~runeakselsen\n" " Daniel Høyer Iversen https://launchpad.net/~dahoiv" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Visning '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Kansellering" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "L_ag Merke..." #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Tilføy Dokument Filer" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Tilføyd dokument filer" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Fått tekst" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Fått ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Fått metadata" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 av %2 dokumenter" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Kansellert" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Fullført" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Legg til Referanse med ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Legg til Dokument" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Legg til mappe" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Er du sikker på at du vil fjerne disse %1 dokumenter?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Er du sikker i å fjerne '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Vil du virkelig omdøpe den filen til '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Denne handling kan ikke bli ugjort." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Endre navn fra Nøkkel" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Er du sikker på at du vil slette filene av disse %1 dokumenter?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Er du sikker på at du vil slette filen '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Sletting '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Prøver å åpne fil '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Arbeider frakoblet" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Arbeider tilkoblet" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Omport Referanser" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Bibliografi Filer" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Format:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Importert %1 BibTeX referanser" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Arbeid frakoblet?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Forbli Tilkoblet" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Bytt til Frakoblet" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Åpner URI '%1' på tjener" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Leser URI '%1' på tjener" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Lukker URI '%1' på tjener" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Operasjonen underveis var: \"%1\"" referencer-1.2.1/po/hr.po0000664000175000017500000006364712042412720012157 00000000000000# Croatian translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-09-11 12:45+0000\n" "Last-Translator: Ivo P. \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokument" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "_Dodatna polja" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metapodaci" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Dodaj polje" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Pokušaj pronaći metapodatke za ovaj dokument na Internetu" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Izbriši metapodatke" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Izbriši ovo polje" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Svojstva dokumenta" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Popuni metapodacima iz BibTeX-a u međuspremniku" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Preimenuj ovo polje" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Izaberite datoteku" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Ključ" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Potraži" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Ulijepi BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Metapodaci se pokušavaju dobiti redom od dodataka bliže vrhu popisa." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Postavke za proxy primijenit će se na sve \n" "Gnome programe. Samopodešavajući URL-ovi\n" "nisu podržani.\n" "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "P_odesi..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Poslužitelj" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Pomakni _dolje" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Pomakni _gore" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Mreža" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Lozinka:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Dodaci" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Postavke" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Provjeri identitet" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Koristi mrežni proxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Korisničko ime:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_O programu..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI resolver" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Tražim DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Tražim PubMed-ov ID iz DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Tražim PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Dohvaćam metapodatke od NCBI za PubMed-ov ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citiraj u LyX-u" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citiraj izabrane dokumente u LyX-u" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Dohvaćam metapodatke" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Šaljem upit za metapodatke za '%1' od citebase.org" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Preuzimam metapodatke" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Preuzimam metapodatke" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Analiziram BibTeX" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "ArXiv-ID od arXiv.org" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Nisu pronađene vjerodajnice za CrossRef" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Za upotrebu CrossRef usluge potreban je besplatni korisnički račun. U " "Postavkama namjestite podatke za prijavu ili onemogućite CrossRef dodatak." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Postavke" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Onemogući CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Šaljem upit za metapodatke za '%1' od crossref.org" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "OpenURL DOI od crossref.org" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Bez imena" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Mijenjam '%1' u '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Otvaram '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Čitam '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "Prebacujem u utf8 iz (pretpostavljenog) latin1 datoteku %1" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Analiziram uvezene podatke" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Vadim dokument %1 iz bibutils strukture" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Vrsta:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "U međuspremniku nisu nađene reference.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "U međuspremniku su višestruke reference.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Naslov" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autori" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Časopis" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Godina" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Godište" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Svezak" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Stranice" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mjesec" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Bilješka" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Ključ" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Urednik" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Izdavač" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Serija" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adresa" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Izdanje" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Naslov knjige" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organizacija" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Kako je objavljeno" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Škola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institucija" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Poglavlje" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Vrsta" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Članak" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Knjiga" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "U zborniku" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Razno" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Neobjavljeno" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Diplomski rad" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Doktorat" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Zbornik" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferencija" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "U knjizi" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Knjižica" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "U zbirci" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Priručnik" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Tehničko izvješće" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Dokumenti skinuti s mreže" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Tražim informaciju o '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Autor" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Analiziram XML zbirke" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Otvaram %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Višeznačan smještaj dokumenta" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Dokument '%1' se nalazi na dva mjesta:\n" "\tOriginalni: %2\n" "\tNovi: %3\n" "\n" "Želite li zadržati originalni smještaj ili ga zamijeniti novim?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Primijeni izbor na sve višeznačne razmještaje." #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Zadrži _Originalni" #: ../src/Library.C:274 msgid "Use _New" msgstr "Koristi _Novi" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' nije valjana logička vrijednost" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI poveznica" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "poveznica na arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL poveznica" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "poveznica na PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Završavam zbog nepoznate pogreške" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Uključeno" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modul" #: ../src/Preferences.C:189 msgid "Description" msgstr "Opis" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Pogreška u programu dodatka" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Pogreška" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Obrazloženje" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Oznake" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Zbirka" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Otvori..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Spremi _kao..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "Izvezi kao BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Rukovanje BibTeX datotekom..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Uvezi..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "Radi neumreženo" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Uredi" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Pogled" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Uvezi reference iz BibTeX-a u međuspremniku" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Kopiraj citat u LaTeX obliku" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Kopiraj izabrane ključeve u obliku LaTeX citata" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Prikaži kao _spisak" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Prikaži kao sliči_ce" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "Prikaži okvir s _oznakama" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Prikaži okvir s _bilješkama" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Oznake" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "Stvori _oznaku..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "Pridruži _novu oznaku" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Izbriši oznaku" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Preimenuj oznaku" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokumenti" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "Dodaj dato_teku..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Dodaj _mapu..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Dodaj _praznu referencu..." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Dodaj referencu pomoću _ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Ukloni" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "Dohvati _metapodatke" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Izbriši datoteku s diska" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "_Preimenuj datoteku prema njenom ključu" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Alati" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Izvezi bilješke u HTML obliku" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Pomoć" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Uvod" #: ../src/RefWindow.C:640 msgid "All" msgstr "Sve" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Neoznačeno" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" "\"%1 dokument (izabrano: %2)\" \"%1 dokumenta (izabrano: %2)\" \"%1 " "dokumenata (izabrano: %2)\"" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "\"%1 dokument\" \"%1 dokumenta\" \"%1 dokumenata\"" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Oznake: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Višestruk izbor dokumenata" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Izaberite dokument koji želite pogledati i mijenjati mu bilješke" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Želite li sačuvati promjene u zbirci prije zatvaranja?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "_Zatvori bez spremanja" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Upišite oznaku" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Stvori oznaku" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "Kratke smislene oznake pomažu vam u organizaciji dokumenata" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Naziv" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Jeste li sigurni da želite izbrisati \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Ovdje izbrisana oznaka uklonjena je za stalno i iz svih njoj pridruženih " "dokumenata." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Izvezi BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTeX datoteke" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Sve datoteke" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Izbor:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Svi dokumenti" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Izabrani dokumenti" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Zaštiti velika slova (okružujući ih vitičastim zagradama)" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Koristi Unicode (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Izvezi bilješke" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "HTML datoteke" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Neimenovana zbirka" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Pretraži" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Rukovanje BibTeX datotekom" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Datoteka koju ovdje izaberete bit će dopisana kad god sačuvate ovu zbirku." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTeX datoteka:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Pretraži..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Otvori zbirku" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referencer zbirke" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Sačuvaj zbirku kao" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ivo P. https://launchpad.net/~pirrip.philip" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Pokazujem '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Otkazujem" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "Dodanim datotekama pridruži oznaku" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "Stvori _oznaku..." #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Dodaj datoteke" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Dodajem datoteke" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Dohvaćanje bibliografskih podataka za sve dokumente može potrajati neko " "vrijeme." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Dokument" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Dohvaćen ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Dohvaćeni metapodaci" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Ishod" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Pridruži oznake..." #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" "\"%1 od jednog dokumenta\" \"%1 od %2 dokumenta\" \"%1 od %2 dokumenata\"" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Otkazano" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Završeno" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Dodaj referencu poznatog ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Dodaj dokument" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Dodaj mapu" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" "\"Jeste li sigurni da želite izbrisati ovaj dokument\" \"Jeste li sigurni da " "želite izbrisati ova %1 dokumenta\" \"Jeste li sigurni da želite izbrisati " "ovih %1 dokumenata\"" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Sve oznake i metapodaci pridruženi ovim dokumentima bit će zauvijek " "izbrisani." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Jeste li sigurni da želite izbrisati '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Sve oznake i metapodaci pridruženi dokumentu bit će zauvijek izbrisani." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Dohvaćam metapodatke" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Želite li zaista preimenovati ovu datoteku u '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" "\"Želite li zaista preimenovati ovu datoteku u pripadni joj ključ?\" " "\"Želite li zaista preimenovati ove %1 datoteke u pripadne im ključeve?\" " "\"Želite li zaista preimenovati ovih %1 datoteka u pripadne im ključeve?\"" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Ova operacija unosi nepovratne promjene." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Jeste li sigurni da želite izbrisati datoteke ovih %1 dokumenata?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Sve oznake i metapodaci kao i pripadne datoteke ovih dokumenata bit će " "bespovratno uništeni." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Jeste li sigurni da želite izbrisati datoteku pripadnu '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Sve oznake i metapodaci kao i pripadne datoteke ovog dokumenta bit će " "bespovratno uništeni." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Brišem '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Pokušavam otvoriti '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Radimo neumreženi" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Radimo umreženi" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Uvezi reference" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Format:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" "\"Uvezena je %1 BibTeX-ova referenca\" \"Uvezene su %1 BibTeX-ove " "reference\" \"Uvezeno je %1 BibTeX-ovih referenca\"" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Želite li raditi neumreženi?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Pojavio se problem prilikom dobave metapodataka. Želite li nastaviti \n" "raditi neumreženi? Izaberete li tu mogućnost, umreženi rad će biti moguć tek " "nakon što opciju promijenite u Postavkama." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "Ostani _umrežen" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Odi s mreže" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "%1 snimam s mreže" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Otvaram URI '%1' sa servera" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Čitam URI '%1' sa servera" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Zatvaram URI '%1'" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Tekuća operacija bila je: \"%1\"" referencer-1.2.1/po/it.po0000664000175000017500000007151612042412720012154 00000000000000# Italian translation of referencer. # Copyright (C) 2007 THE referencer'S COPYRIGHT HOLDER # This file is distributed under the same license as the referencer package. # Michele Mattioni , 2007. # , fuzzy # # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-09-18 18:56+0000\n" "Last-Translator: Michele Mattioni \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #~ msgid " " #~ msgstr "... " #~ msgid "DOI:" #~ msgstr "DOI:" #~ msgid "Issue:" #~ msgstr "Numero:" #~ msgid "Journal:" #~ msgstr "Giornale:" #~ msgid "Look up..." #~ msgstr "Ricerca..." #~ msgid "Pages:" #~ msgstr "Pagine:" #~ msgid "Type:" #~ msgstr "Tipo:" #~ msgid "Volume:" #~ msgstr "Volume:" #~ msgid "Year:" #~ msgstr "Anno:" #~ msgid "_Authors:" #~ msgstr "_Autori" #~ msgid "_Title:" #~ msgstr "_Titolo:" #~ msgid "Web services" #~ msgstr "Servizi Web" #~ msgid "" #~ "Use placeholder to represent the DOI code\n" #~ "in addresses, e.g. http://dx.doi.org/" #~ msgstr "" #~ "Sostituisci con il codice DOI nell'indirizzo\n" #~ "esempio: http://dx.doi.org/" #~ msgid "DOI launch URL:" #~ msgstr "DOI per lanciare l'URL:" #~ msgid "Metadata lookup URL:" #~ msgstr "URL di Ricerca per i Metadati" #~ msgid "Reset to Defaults" #~ msgstr "Riporta alle Impostazioni Originali" #~ msgid "Failing fatally" #~ msgstr "Errore fatale" #~ msgid "_Search:" #~ msgstr "_Ricerca:" #~ msgid "This Document" #~ msgstr "Questo Documento" #~ msgid "Year " #~ msgstr "Anno " #~ msgid "_Add Folder..." #~ msgstr "_Aggiungi Cartella" #~ msgid "_Add Empty Reference..." #~ msgstr "_Aggiungi Un Riferimento Vuoto" #~ msgid "_Add Reference with DOI..." #~ msgstr "_Aggiungi Riferimento DOI" #~ msgid "_Web Link..." #~ msgstr "_Collegamento Internet" #~ msgid "_Delete File from drive" #~ msgstr "_Rimuovi File dal Disco" #~ msgid "_Rename File from Key" #~ msgstr "_Rinomina File usando la Chiave" #~ msgid "New tag" #~ msgstr "Nuova etichetta" #~ msgid "Name:" #~ msgstr "Nome:" #~ msgid "Add Document with DOI" #~ msgstr "Aggiungi un Documento con un riferimento DOI" #~ msgid "Converting clipboard text to latin1" #~ msgstr "Converto il testo della clipboard in latin1" #~ msgid "" #~ "%1: %2\n" #~ "\n" #~ "%3 \"%4\"" #~ msgstr "" #~ "%1: %2\n" #~ "\n" #~ "%3 \"%4\"" #~ msgid "The operation underway was:" #~ msgstr "La corrente operazione era:" #~ msgid "" #~ "Parsing CrossRef XML. The DOI could be invalid, or not known to crossref.org" #~ msgstr "" #~ "Leggendo CrossRef XML. Il DOI potrebbe essere non valido, o sconosciuto su " #~ "crossref.org" #~ msgid "" #~ "%1\n" #~ "\n" #~ "%2 '%3'\n" #~ msgstr "" #~ "%1\n" #~ "\n" #~ "%2·'%3'\n" #~ msgid "Contacting crossref.org to retrieve metadata for" #~ msgstr "Contattando crossref.org per ottenere i metadati per" #~ msgid "Contacting citebase.org to retrieve metadata for" #~ msgstr "Contattando citabase.org per ottenere i metadati per" #~ msgid "Rename from Tag" #~ msgstr "Rinomina Etichetta" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Documento" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Campi F_acoltativi" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadati" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Aggiungi un campo" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Tentativo di ricercare i metadati di questo documento online" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Resetta i metadati" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Cancella questo campo" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Proprietà Documento" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "File:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Estrai i metadati da BibTex e copiali sugli appunti" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Rinomina questo campo" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Seleziona un File" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Chiave" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "Consu_lta" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Incolla BibTex" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "I Plugins in cima alla lista vengono provati per primi quando vengono " "ricercati i metadata. " #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Queste impostazioni per il proxy vengono\n" "applicate a tutte le applicazioni GNOME. L'Auto-configurazione\n" "delle URLs non è supportata." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "C_onfigura..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Host:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Sposta in _basso" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Sposta in _alto" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Rete" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Password:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Plugins" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Porta:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferenze" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Usa autenticazione" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Usa il proxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nome Utente:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Informazioni..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Ricercando il DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Trovando l'ID PubMed dal DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Ricercando PUbMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Ottengo i metadati dall NCBI per PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citalo in LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Cita i documenti selezionati in LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Ottienendo i metadati" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Contattando citebase.org per recuperare i metadati di '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Scaricando i metadati" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "scaricando i metadati" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Leggendo BibTex" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org ArXiv-ID resolver" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Dati CrossRef non trovati" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Per utilizzare il servizio CrossRef è necessario un nome utente gratuito. Le " "informazione per il login possono essere impostate in Preferenze, o il " "plugin per CrossRef puó essere disabilitato" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferenze" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Disabilita CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Contattando crossref.org per ottenere i metadati di '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "CrossRef.org OpenURL DOI resolver" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Non Etichettati" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "Nome della chiave in conflitto" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" "Il nome della chiave scelto è in conflitto con un altro già esistente. " "Sotituire '%1' con '%2'?" #: ../src/Document.C:102 msgid "_Ignore" msgstr "_Ignora" #: ../src/Document.C:106 msgid "_Replace" msgstr "_Sostituisci" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Spostando '%1' a '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Aprendo il file '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Leggendo il file '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "conversione file %1 a utf8 da (intuito) latin1" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Importando" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Estraendo il documento %1 dalla struttura bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tipo:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Nessuna riferimento trovato sulla clipboard.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Diverse referenze trovate nella clipboard\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Titolo" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autori" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Giornale" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Anno" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Problema" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Pagine" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mese" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Nota" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Chaive" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Editor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Pubblica" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Serie" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Indirizzo" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Edizione" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Titolo del libro" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organizzazione" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Come pubblicare" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Scuola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Istituzione" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Capitolo" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Tipo" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "DOI" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Articolo" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Libro" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "In Avanzamento" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Varie" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Non pubblicato" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Tesi Master" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Tesi Dottorato" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Avanzamento" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conferenza" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Nel Libro" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Libretto" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "Nella Collezione" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manuale" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Rapporto Tecnico" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Documenti Scaricati" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Ottenendo le informazioni per il file '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "Di %1" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Autore" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Leggendo la libreria XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Aprendo %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Documento con posizione ambigua" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Il file '%1' esiste in due posizioni:\n" " Originale: %2\n" " Nuovo: %3" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Applica scelta a tutte le posizioni ambigue" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Mantiene _Originale" #: ../src/Library.C:274 msgid "Use _New" msgstr "Usa _Nuovo" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' non è un valore booleano valido" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "Collegamento DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Collegamento arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "Collagemtno URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Collegamento PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Scolaro Google" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Chiusura dovuta ad un ecccezione non gestita" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Abilitato" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modulo" #: ../src/Preferences.C:189 msgid "Description" msgstr "Descrizione" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Errore del plugin" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Eccezione" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Spiegazione" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etichette" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Libreria" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Apri..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Salva _Come..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_sporta come BibTex" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Gestisci File BibTeX" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "Cartella _Libreria..." #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importa..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Lavora Disconnesso" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Modifica" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Visualizza" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "Disponi o_ggetti" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importa i riferimenti da BibTex sulla clipboard" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copia citazione LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" "Copia le chiavi correntemente selezionate sulla clipboard come citazioni " "LaTeX" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Vedi come _Elenco" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Vedi come _Icone" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Visualizza Pannello Etichette" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Mostra Pannello Annotazioni" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Etichette" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Crea Etichetta..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "Aggiungi Nuova Etichetta" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Rimuovi Etichetta" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Rinomina Etichetta" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documenti" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Aggiungi un File" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Aggiungi _Cartella..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Aggiungi N_uova Referenza.." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Aggiungi Refe_renza con ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Elimina" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Ottieni Metadati" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Elimina File dal Disco Fisso" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "R_inomina File da Chiave" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "S_trumenti" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Esporta Annotazioni come HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Aiuto" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introduzione" #: ../src/RefWindow.C:640 msgid "All" msgstr "Tutti" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Non Etichettati" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documenti (%2 selezionati)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documenti" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Annotazioni: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Diversi documenti selezionati" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Seleziona un documento per vedere ed editare le annotazioni" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Salvare i cambiamenti alla libreiria prima di chiudere" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Chiudi _Senza Salvare" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Digitare un'etichetta" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Crea etichetta" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Nomi di etichette corti e memorizzabili ti aiutano nell'organizzazione dei " "tuoi documenti" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Nome" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Sei sicuro di voler rimuovere \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Quando un'etichetta viene cancellata essa viene anche rimossa da tutti i " "documenti con cui era associata." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Esporta come BibTex" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "File BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Tutti i Files" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Selezione:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Tutti i Documenti" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documenti Selezionati" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Impedire la capitalizzazione (circondare I valori con {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Usa la codifica Unicode (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Esporta Annotazioni" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "File HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Libreria" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Sfoglia" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Gestisci File BibTeX" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "se scegli un file qui, questo verrà sovrascritto ognivolta che questa " "libreria viene salvata" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "File BibTeX:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Sfoglia..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Apri Libreria" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Libreria Referencer" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Salva come Libreria" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Michele Mattioni\n" "\n" "Launchpad Contributions:\n" " HdS619 https://launchpad.net/~hds619\n" " Luca Livraghi https://launchpad.net/~luca91\n" " Michele Mattioni https://launchpad.net/~mattions\n" " Nicola Piovesan https://launchpad.net/~piovesannicola" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Mostrando '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Cancellando" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "Etichetta i Files Aggiunti" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "C_rea Etichetta" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Aggiungi un Documento" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Aggiungere un Documento" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Ricerca delle informazioni bibliografiche on-line. Questo processo potrebbe " "richiedere del tempo." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Documento" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Ottieni testo" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Ottieni ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Metadata Ottenuti" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Risultato" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Aggiungi Etichetta" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 di %2 documenti" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Cancellato" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Finito" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Aggiungi Referenza con ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Aggiungi Documento" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Aggiungi Cartella" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Sei sicuro di voler rimuovere questi %1 documenti?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Tutte le etichette ed i metadati associati con questi documenti saranno " "persi per sempre." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Sei sicuro di voler rimuovere '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Tutte le etichette ed i metadati associati con questo documento verranno " "persi per sempre." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Scarico i metadata" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Rinominare questo file to '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Rinominarere questi files %1 come le loro chiavi?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Quest'azione non potrà essere annullata" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Rinomina usando la Chiave" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Sei sicuro di voler rimuovere i files di questi %1 documenti?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Tutte le etichette ed i metadati di questi documenti verranno cancellati per " "sempre ed i lor files verranno irrimediabilmente cancellati." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Sei sicuro di voler rimuovere il file di '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Tutte le etichette ed i metadati per questo documento verranno " "permanentemente cancellati e il file verrà irrimediabilmente cancellato." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Cancellando '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Aprendo il file '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Lavorando offline" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Lavorando online" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importa Riferimenti" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Files Bibliografici" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Formato:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Importato %1 di referenze BibTeX" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Lavoro offline?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "C'è stato un problema quando ho cercato di ottenere i metadata, preferisci \n" "lavorare fuori linea? Se decidi di lavorare fuorilinea, nessuna successiva " "operazione di rete sarà tentata finchè non deciderai di tornare in linea dal " "Menù delle Preferenze" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Stai Online" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Vai Offline" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Scaricamento di %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Aprendo URI '%1' sul server" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Leggendo URI '%1' sul server" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Chiudendo URI '%1' sul server" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1:%2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "L'operazione eseguita era: \"%1\"" referencer-1.2.1/po/hu.po0000664000175000017500000006321312042412720012147 00000000000000# Hungarian translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-06-27 11:35+0000\n" "Last-Translator: HORVATH, Akos \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokumentum" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "_További mezők" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metaadatok" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Mező hozzáadása" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "A dokumentum metaadatainak megkeresése az interneten" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Metaadatok törlése" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Mező törlése" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Dokumentum tulajdonságai" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Fájl:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Metaadatok kitöltése a vágólapon lévő BibTeX adatokkal" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Fájl átnevezése" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Válasszon egy fájlt" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Kulcs:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Keresés" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "BibTeX beillesztése" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Ezek a proxybeállítások vonatkoznak minden Gnome alkalmazásra. " "Automatikus beállítást nyújtó URL-ek nem működnek." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Gépnév:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Mozgatás _le" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Mozgatás _fel" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Hálózat" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Jelszó:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Bővítmények" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Beállítások" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Azonosítás használata" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "web-proxy használata" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Felhasználónév:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Névjegy…" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "%s DOI alapján PubMed ID keresése" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Hivatkozás LyXben" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "A kiválasztott dokumentumok hivatkozása LyXben" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Metaadatok beolvasása" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" "'%1' metaadatainak lekéréséhez kapcsolat építése a citebase.org honlappal" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Metaadat letöltése" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Metaadat letöltése" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "BibTeX feldolgozása" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "A CrossRef szolgáltatás használatához ingyenes fiók szükséges. A " "bejelentkezési adatok a Beállítások alatt adhatóak meg, vagy a CrossRef " "bővítményt le lehet tiltani." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Beállítások" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_CrossRef letiltása" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Crossref.org OpenURL DOI kereső" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Névtelen" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "'%1' mozgatása '%2' helyére" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "'%1' fájl megnyitása" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "'%1' fájl beolvasása folyamatban" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Importálás folyamatban" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "'%1' dokumentum betöltése a bibutils rendszerből" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Típus:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "A vágólapon hivatkozás nem található\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "A vágólapon több hivatkozás is található\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Cím" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Szerzők" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Folyóirat" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Év" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Kötet" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Szám" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Oldalak" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Hónap" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Megjegyzés" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Kulcs" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Szerkesztő" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Kiadó" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Sorozat" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Cím" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Kiadás" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Könyv címe" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Szervezet" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Kiadás módja" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Iskola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Intézmény" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Fejezet" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Típus" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Cikk" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Könyv" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "Előadássorozat" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Egyéb" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Kiadatlan" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Diplomamunka" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Doktori disszertáció" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Előadás" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferencia" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Könyvrész" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Füzet" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "Gyűjtemény" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Kézikönyv" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Letöltött dokumentumok" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "'%1' fájl információinak betöltése" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Szerző" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Könyvtár XML beolvasása" #: ../src/Library.C:164 msgid "Opening %1" msgstr "%1 megnyitása" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "A dokumentum elérhetősége nem egyértelmű" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "A '%1' file több helyen is elérhető\n" "\tEredeti: %2\n" "\tÚj: %3" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Választás alkalmazása minden többértelmű helyre" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Eredeti _megtartása" #: ../src/Library.C:274 msgid "Use _New" msgstr "_Új használata" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI link" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv link" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL link" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed link" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Kilépés kezeletlen kivétel miatt" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Bekapcsolva" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modul" #: ../src/Preferences.C:189 msgid "Description" msgstr "Leírás" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Hiba egy modulban" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Kivétel" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Magyarázat" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Címkék" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Könyvtár" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Megnyitás..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Men_tés másként..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xportálás BibTeXként..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_BibTeX fájl beállítása..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importálás..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "K_apcsolat nélküli munka" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Szerkesztés" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Nézet" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "BibTeX hivatkozások beemelése a vágólapról" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "LaTeX hivatkozás másolása" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "A kiválasztott dokumentumokat LaTeX idézetként a vágólapra másolja" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "_Lista nézet használata" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "_Ikonos nézet használata" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Címke panel mutatása" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Címkék" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "Címke _létrehozása..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "Címke _törlése" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "Címke _átnevezése" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokumentumok" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Fájl hozzáadása..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "_Könyvtár hozzáadása..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "_Üres hivatkozás hozzáadása" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "_DOI hivatkozás hozzáadása" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Eltávolítás" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Metaadatok lekérése" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "Fájl _átnevezése a kulcs alapján" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Súgó" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "" #: ../src/RefWindow.C:640 msgid "All" msgstr "Mind" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Nincs címke" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 dokumentum (%2 kijelölve)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 dokumentum" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Bezárás előtt mentse a változtatásokat?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Bezárás mentés _nélkül" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Adjon meg egy címkét" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Biztosan törölni szeretné a '%1' címkét?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Amikor egy címkét töröl, egyúttal minden dokumentumból is törli, amelyekhez " "jelenleg hozzá van rendelve." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "BibTeX exportálása" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTeX fájlok" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Minden fájl" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Választás:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Minden dokumentumot" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Kijelölt dokumentumok" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Nagybetűk védelme (az értékeket {} közé foglalja)" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Unicode (UTF-8) kódolás használata" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Névtelen könyvtár" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Tallózás" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "BibTeX fájl beállításai" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Amennyiben itt megad egy fájlt, akkor az a könyvtár elmentésekor " "automatikusan felül lesz írva." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTeX fájl" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Tallózás..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Könyvtár megnyitása" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referencer könyvtárak" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Könyvtár mentése másként" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " HORVATH, Akos https://launchpad.net/~akos-horvath\n" " ViktorNagy https://launchpad.net/~viktor-nagy" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "'%1' megmutatása" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Megszakítás" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Dokumentumok hozzáadása" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Dokumentumok hozzáadása folyamatban" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Ez a folyamat sokáig is eltarthat, miután a program minden dokumentum " "könyvtári információját megpróbálja felismerni." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Dokumentum" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Szöveg megjött" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "ID megjött" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Metaadatok megjöttek" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Végeredmény" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 a %2 dokumentumból" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Megszakítva" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Kész" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "ID-val rendelkező referencia hozzáadása" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Dokumentum hozzáadása" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Mappa hozzáadása" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Biztosan el szeretné távolítani ezt a %1 dokumentumot?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "A dokumentumok el fogják veszíteni a hozzájuk rendelt címkéket és a " "metaadataikat." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Biztosan el szeretné távolítani '%1' dokumentumot?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "A dokumentum el fogja veszíteni a hozzá rendelt címkéket és a metaadatait." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Metaadatok beolvasása" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Valóban át szeretné nevezni ezt a fájlt '%1' névre?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Valóban át szeretné ezt a %1 fájlt a kulcsra nevezni?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Ez a művelet nem fordítható vissza." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Átnevezés kulcs alapján" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Biztosan törölni szeretné ennek a %1 dokumentumnak a fájljait?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "A dokumentumok kapcsolódó címkéi és a metaadataik örökké el fognak veszni, " "és az általuk hivatkozott fájlok a visszaállítás lehetősége nélkül törölve " "lesznek." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Biztosan törölni szeretné '%1' fájlját?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "A dokumentum kapcsolódó címkéi és metaadatai örökké el fognak veszni, és az " "általa hivatkozott fájl a visszaállítás lehetősége nélkül törölve lesz." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "'%1' törlése folyamatban" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "'%1' fájl megnyitása folyamatban" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Kapcsolat nélküli munka" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Kapcsolódva" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Hivatkozások importálása" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Hivatkozásjegyzék fájlok" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Formátum:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "%1 BibTeX hivatkozás importálása megtörtént" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Kapcsolat nélkül dolgozzon?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "A metaadatok lekérése során valamilyen probléma lépett fel, Szeretne " "kapcsolat nélkül dolgozni? \n" "Ha a kapcsolat nélküli munkát választja, akkor a továbbiakban semmilyen " "hálózati szolgáltatással sem fog a program próbálkozni. A Beállítások " "párbeszédablakban kapcsolódhat majd újra." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Maradjon kapcsolódva" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Kapcsolódjon le" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Letöltés: %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "'%1' URI megnyitása a szerveren" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "'%1' URI beolvasása a szerverről" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "'%1' URI lezárása a szerveren" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "A végrehajtandó parancs '%1' volt" referencer-1.2.1/po/zh_TW.po0000664000175000017500000005005212042412720012563 00000000000000# Traditional Chinese translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-06-12 16:09+0000\n" "Last-Translator: Michael \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "文件" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "新增欄位" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "刪除此欄位" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "文件屬性" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "重新命名此欄位" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "選取一個檔案" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "檢索(_L)" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "貼上BibTex格式(_P)" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "代理伺服器" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "設定(_O)" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "密碼:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "連接埠:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "偏好設定" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "使用者名稱:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "關於(_A)..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "使用LyX做搜尋" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "使用LyX搜尋所選擇的文件" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "" #: ../src/RefWindow.C:396 msgid "_View" msgstr "" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "" #: ../src/RefWindow.C:640 msgid "All" msgstr "" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Michael https://launchpad.net/~michaelrchen" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/tr.po0000664000175000017500000005456612042412720012173 00000000000000# Turkish translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-08-02 00:48+0000\n" "Last-Translator: Umut Tekgüç \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Doküman" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "E_k Alan" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Üstveri" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Alan ekle" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "" "Bu dokümandaki üstverilere bakmak için çevirimiçi bağlantı girişiminde " "bulunuyor" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Üstveriyi temizle" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Bu alanı sil" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Belge Özellikleri" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Panodaki BibTeX'den üstveriyi doldur" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Bu alanın ismini değiştir" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Dosya Seç" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Anahtar" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Ara" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_BibTeXi Yapıştır" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Vekil Sunucu" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "Üstveriye bakarken listenin en üstündeki eklentidenbaşlanır." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Bu vekil ayarları tüm masaüstü\n" "Gnome uygulamalarında geçerli olur.\n" "Otomatik yapılanan URL'ler desteklenmiyor." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "_Yapılandır..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Sunucu:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "_Aşağa kaydır" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "_Yukarı kaydır" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Bilgisayar ağı" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Şifre" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Eklentiler" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Bağlantı Kapısı:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Ayarlar" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Kimlik doğrulamayı kullan" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Genel Ağproxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Kullanıcı Adı:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Hakkında..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI(Sayısal Nesne Tanımlayıcısı) belirleyici" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "DOI(Sayısal Nesne Tanımlayıcısı) belirleniyor" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "PubMed Numarası %s DOI'den bulunuyor" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "PubMed Numarası belirleniyor" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "PubMed Numarası %s için NCBI'dan üstveri çekiliyor" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "LyX'de kaynak göster" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "LyX'de seçilmiş dokümanları kaynak göster" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Üstveri çekiliyor" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "'%1' e üstveri elde etmek için Citebase.org ile temas kuruluyor" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Üstveri İndiriliyor" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Üstveri indiriliyor" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "BibTex İnceleniyor" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org ArXiv-ID çözücü" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "CrossRef sicili bulunamadı" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Ayarlar" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "CrossRef'i _Devre dışı bırak" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "'%1' e üstveri elde etmek için crossref.org ile temas kuruluyor" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Crossref.org OpenURL DOI çözücü" #: ../src/Document.C:38 msgid "Unnamed" msgstr "İsimsiz" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "'%1'i '%2'ye kaydırıyor" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "'%1' isimli dosya açılıyor" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "'%1' isimli dosya okunuyor" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "'%1' isimli dosya (tahminen)Latin1'den UTF8'e çeviriyor" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "İçeri aktarımı inceliyor" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "'%1' isimli dosyayı bibutils yapısından çıkarıyor" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tür:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Panoda kaynak bulunmadı.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Panoda birden fazla kaynak bulundu.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Başlık" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Yazarlar" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Dergi" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Yıl" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Cilt" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Sayı" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Sayfalar" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Ay" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Not" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Anahtar" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Düzenleyici" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Yayınevi" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Seriler" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adres" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Baskı" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Kitap adı" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organizasyon" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Nasıl Basıldı" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Okul" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Kurum" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Bölüm" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Türü" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Makale" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Kitap" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Çeşitli" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Yayımlanmamış" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Yüksek Lisans Tezi" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Doktora Tezi" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferans" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Kitaptan" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Kitapçık" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Kılavuz" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Teknik Rapor" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Dokümanları İndir" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "'%1' isimli dosya için bilgi alıyor" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Yazar" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "%1'i açıyor" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Orjinali _Tut" #: ../src/Library.C:274 msgid "Use _New" msgstr "_Yeni'yi Kullanın" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' geçerli bir değer değildir" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI Bağlantısı" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv Bağlantısı" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL Bağlantısı" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed Bağlantısı" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Akademik" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Etkin" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modül" #: ../src/Preferences.C:189 msgid "Description" msgstr "Açıklama" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Eklenti hatası" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "İstisna" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Açıklama" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etiketler" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Kütüphane" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Aç..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Farklı _Kaydet..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "BibTeX olarak _dışarı akatar..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "BibTex dosyasını düzenle..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_İçeri Aktar..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Çevrimdışı Çalış" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Düzenle" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Görünüm" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokümanlar" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Çıkar" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Araçlar" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Yardım" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Giriş" #: ../src/RefWindow.C:640 msgid "All" msgstr "Hepsi" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Kaydetmeden _Kapat" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "İsim" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Tüm Dosyalar" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Seçim:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Tüm dokümanlar" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "HTML Dosyaları" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Gözat" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Göz at..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Umut Tekgüç https://launchpad.net/~tekguc" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Doküman" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "İptal Edildi" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Tamamlandı" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Klasör Ekle" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Biçim:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "%1 İndiriliyor" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/sv.po0000664000175000017500000005316412042412720012167 00000000000000# Swedish translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-02-06 21:20+0000\n" "Last-Translator: nicke \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokument" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "E_xtra Fält" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadata" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Lägg till ett fält" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Försök att hämta metadata för detta dokument på nätet" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Töm metadata" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Ta bort detta fält" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Dokumentegenskaper" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Fil:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Döp om detta fält" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Välj en fil" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Tangent:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Slå upp" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Klistra in BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Värd:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Flytta _ner" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Flytta _upp" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Nätverk" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Lösenord:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Insticksmoduler" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Inställningar" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Använd autentisering" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Använd webbproxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Hämtar metadata" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Hämtar metadata" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Inställningar" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Avaktivera CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Kontaktar crossref.org för att hämta metadata för '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Namnlös" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Flyttar '%1' till '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Öppnar fil '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Läser fil '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Typ:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Titel" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Författare" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Journal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "År" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volym" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Sidor" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Månad" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Anteckning" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Nyckel" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Redigerare" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Förläggare" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adress" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Utgåva" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Boktitel" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organisation" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Skola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institution" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Kapitel" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Typ" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artikel" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Bok" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Diverse" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Opublicerad" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Examensarbete" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferens" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Broschyr" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Teknisk rapport" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Nedladdade dokument" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Hämtar information för fil '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Öppnar %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Applicera val på alla tvetydliga platser" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Behåll_Orginal" #: ../src/Library.C:274 msgid "Use _New" msgstr "Använda_Ny" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL Länk" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed Länk" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Aktiverad" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modul" #: ../src/Preferences.C:189 msgid "Description" msgstr "Beskrivning" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Undantag" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Förklaring" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Taggar" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Bibliotek" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Öppna..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Spara_Som..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xportera som BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importera..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Arbeta frånkopplat" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Redigera" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Visa" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Taggar" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Skapa Tagg..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokument" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Lägg till fil..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Lägg till_Katalog..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Lägg till T_om Referens" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Lägg till Refere_ns med ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Ta bort" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Hämta Metadata" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Hjälp" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introduktion" #: ../src/RefWindow.C:640 msgid "All" msgstr "Alla" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Otaggad" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 dokument (%2 valda)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" ": \t Copy text \t \n" "%1 dokument" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Avsluta _utan att spara" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exportera BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTex Filer" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Alla filer" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Markering:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Alla dokument" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Välda Dokument" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Bläddra" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTex fil:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Bläddra..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Öppna Bibliotek" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referens Bibliotek" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Spara Bibliotek Som" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " nicke https://launchpad.net/~niklas-aronsson" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" "Copy text \t \n" "Visar '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Lägg till Dokumentfiler" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Lägger till dokumentfiler" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Dokument" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Resultat" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 av %2 dokument" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Avbruten" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Färdig" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Lägg till Referens med ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Lägg till Dokument" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Lägg till mapp" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Är du säker på att du vill ta bort dessa %1 dokument?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Är du säker på att du vill ta bort '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Hämtar metadata" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/POTFILES.in0000664000175000017500000000206412052352255012754 00000000000000data/documentproperties.ui data/preferences.ui data/crossref.ui data/libraryfolder.ui data/search.ui plugins/ads.py plugins/dblp.py plugins/genkey.py plugins/google-books.py plugins/isi-plugin.py plugins/lyx.py plugins/pubmed.py src/ArxivPlugin.C src/ArxivPlugin.h src/BibData.C src/BibData.h src/BibUtils.C src/BibUtils.h src/CaseFoldCompare.h src/CrossRefPlugin.C src/CrossRefPlugin.h src/Document.C src/Document.h src/DocumentList.C src/DocumentList.h src/DocumentProperties.C src/DocumentProperties.h src/DocumentTypes.C src/DocumentTypes.h src/DocumentView.C src/DocumentView.h src/icon-entry.h src/Library.C src/Library.h src/Linker.C src/Linker.h src/main.C src/Plugin.h src/PluginManager.C src/PluginManager.h src/Preferences.C src/Preferences.h src/Progress.C src/Progress.h src/PythonDocument.C src/PythonDocument.h src/PythonPlugin.C src/PythonPlugin.h src/RefWindow.C src/RefWindow.h src/sexy-enum-types.h src/sexy-icon-entry.h src/TagList.C src/TagList.h src/ThumbnailGenerator.C src/ThumbnailGenerator.h src/Transfer.C src/Transfer.h src/Utility.C src/Utility.h referencer-1.2.1/po/pt.po0000664000175000017500000005554612042412720012170 00000000000000# Portuguese translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-04-04 16:51+0000\n" "Last-Translator: rgomesf \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #~ msgid " " #~ msgstr " " #~ msgid "Pages:" #~ msgstr "Páginas:" #~ msgid "Type:" #~ msgstr "Tipo:" #~ msgid "Year:" #~ msgstr "Ano:" #~ msgid "_Title:" #~ msgstr "_Título:" #~ msgid "_Search:" #~ msgstr "_Procura:" #~ msgid "This Document" #~ msgstr "Este Documento" #~ msgid "Year " #~ msgstr "Ano " #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Documento" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Campos E_xtra" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadados" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Adicionar um campo" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Tentativa de procurar online metadados para este documento" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Limpar metadados" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Apagar este campo" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propriedades do documento" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Ficheiro" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Renomear este campo" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Seleccionar um ficheiro" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Tecla:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Procurar" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Mover para _baixo" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Mover _para cima" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Rede" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Senha:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Extensões" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Porto:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferências" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Usar autenticação" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Usar proxy web" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nome de Utilizador:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Obtendo metadados" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Descarregar Metadados" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "A transferir metadados" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferências" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Sem Nome" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "A mover '%1' para '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "A abrir o ficheiro '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "A ler o ficheiro '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tipo:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Título" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autores" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Diário" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Ano" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Páginas" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mês" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Nota" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Editor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Editora" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Endereço" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Edição" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Título do livro" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Escola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Instituição" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Capítulo" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Tipo" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artigo" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Livro" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Não publicado" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conferência" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manual" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "A obter informação para o ficheiro '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "A abrir %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Aplicar a escolha a todas as localizações ambíguas" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Manter _Original" #: ../src/Library.C:274 msgid "Use _New" msgstr "Usar _Nova" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Activo" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Módulo" #: ../src/Preferences.C:189 msgid "Description" msgstr "Descrição" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Excepção" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Explicação" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etiquetas" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Livraria" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Abrir..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Gravar _Como..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importar..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Trabalhar Offline" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Editar" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Vista" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "E_tiquetas" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Criar Etiqueta..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Renomear Etiqueta" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documentos" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Adicionar Ficheiro..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Adicionar _Pasta" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Remover" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introdução" #: ../src/RefWindow.C:640 msgid "All" msgstr "Todas" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documentos (%2 seleccionados)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Escreva uma etiqueta" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Tem a certeza que pretende apagar \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Quando uma etiqueta é apagada, é também permanentemente removida de todos os " "documentos aos quais estiver actualmente associada." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exportar BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Ficheiros do BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Todos os Ficheiros" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Selecção:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Todos os Documentos" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documentos Seleccionados" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Biblioteca sem nome" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Ficheiro BibTeX:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Abrir Biblioteca" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Gravar Biblioteca Como" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ondreia https://launchpad.net/~a-terrapinto\n" " Tiago Silva https://launchpad.net/~tiagosilva\n" " VCarvalho https://launchpad.net/~v-carvalho\n" " rgomesf https://launchpad.net/~rgomesf" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "A Cancelar" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Este processo poderá levar algum tempo enquanto a informação bibliográfica " "para cada documento for procurada." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Documento" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Resultado" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 de %2 documentos" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Cancelado" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Terminado" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Adicionar Documento" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Adicionar Pasta" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Todas as etiquetas associadas e metadados destes documentos serão " "permanentemente perdidos." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Tem a certeza que pretende remover '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Todas as associações de etiquetas e metadados para este documento serão " "permanentemente perdidos." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Quer mesmo renomear este documento para '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Esta acção não pode ser desfeita." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" "Tem a certeza que pretende apagar estes ficheiros destes %1 documentos?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Todas as associações de etiquetas e metadados para este documento serão " "permanentemente perdidos e os ficheiros aos quais se referem serão " "irremediavelmente apagados." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Tem a certeza que quer apagar o ficheiro de '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Todas as associações de etiquetas e metadados para este documento serão " "permanentemente perdidos e o ficheiro a que se refere será irremediavelmente " "apagado." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "A apagar '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "A tentar abrir o ficheiro '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importar Refernces" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Formato:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "A obter %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/ja.po0000664000175000017500000005426312042412720012132 00000000000000# Japanese translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-10-03 20:44+0000\n" "Last-Translator: LMJ \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "ドキュメント" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "エキストラフィールド" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "メタデータ" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "フィールドを追加する" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "このドキュメントのオンラインメタデータを探す" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "メタデータをクリアする" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "このフィールドを削除する" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "ドキュメントプロパティ" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "ファイル:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "クリップボード上のBibTeXデータでメタデータを埋める。" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "このフィールドの名前を変更する" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "ファイルを選択" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "キー(_K):" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "検索(_L)" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "BibTeXを貼り付ける" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "プロキシ" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "メタデータを探すときに上のプラグインが先に試される。" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "これらのプロキシ設定はデスクトップの\n" "全Gnomeアプリに適用される。自動設定\n" " URLはサポートされていない。" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "設定(_O)..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "ホスト:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "下へ移動(_D)" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "上へ移動(_U)" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "ネットワーク" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "パスワード:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "プラグイン" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "ポート番号:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "設定" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "認証を使う" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Webプロキシを使う" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "ユーザ名:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "…について(_A)..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "メタデータをダウンロード中" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "メタデータをダウンロード中" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "環境設定(_P)" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "クロス参照を無効にする。" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "名称未設定" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "無視(_I)" #: ../src/Document.C:106 msgid "_Replace" msgstr "置換(_R)" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "%1を%2に移動する。" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "ファイル %1 を開く" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "ファイル %1 を読む" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "%1を(推測されている)Latin1からutf8に変換する。" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "タイプ(_T):" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "タイトル" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "著者" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "ジャーナル" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "年" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "巻" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "発行日" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "ページ" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "月" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "ノート" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "キー" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "エディター" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "出版者" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "叢書" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "住所" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "版" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "書名" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "組織" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "発行形態" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "学校" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "機関名" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "章" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "タイプ" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "DOI" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "論文" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "本" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "概要集" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "その他" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "未発表" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "修士論文" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "博士論文" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "概要集" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "学会" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "本" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "ブックレット" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "マニュアル" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "技術報告書" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "ダウンロードされたドキュメント" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "著者 %1" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "著者" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "%1を開く" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "オリジナルをキープする" #: ../src/Library.C:274 msgid "Use _New" msgstr "新しいのを使う%" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "%sが正しい論理値ではない" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOIリンク" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXivリンク" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URLリンク" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMedリンク" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "有効にする" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "モジュール" #: ../src/Preferences.C:189 msgid "Description" msgstr "説明" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "プラグインエラー" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "例外" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "説明" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "タグ" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "図書館" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "開く..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "別名で保存(_A)..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "BibTeXをエキスポート" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "インポート(_I)..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "オフラインで動作(_W)" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "編集(_E)" #: ../src/RefWindow.C:396 msgid "_View" msgstr "表示(_V)" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "アイテムを整理(_G)" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "タグ" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "タグを作成する" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "新しいタグを付ける" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "タグを削除する" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "タグ名変更" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "ドキュメント(_D)" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "ファイル追加" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "フォルダー追加" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "削除(_R)" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "ツール(_T)" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "ヘルプ(_H)" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "概要" #: ../src/RefWindow.C:640 msgid "All" msgstr "全部" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "保存せずに閉じる(_W)" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "名前" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "本当に%1を削除しますか" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "すべてのファイル" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "選択:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "全てのドキュメント" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "HTML ファイル" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "ブラウズ" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "ブラウズ(_B)..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " LMJ https://launchpad.net/~lu-nagaokaut" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "ドキュメント" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "キャンセルされた" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "終了した" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "フォルダを追加" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "書式:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "%1 をダウンロード中" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/Makefile.in.in0000644000175000017500000001604612127517024013654 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # Copyright (C) 2004-2008 Rodney Dawes # # This file may be copied and used freely without restrictions. It may # be used in projects which are not available under a GNU Public License, # but which still want to provide support for the GNU gettext functionality. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ DATADIRNAME = @DATADIRNAME@ itlocaledir = $(prefix)/$(DATADIRNAME)/locale subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS POTFILES = \ # This comment gets stripped out CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V)) INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@; .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< .po.gmo: $(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info ctags tags CTAGS TAGS ID: # Define this as empty until I found a useful application. install-exec installcheck: uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot rm -f missing notexist srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m if [ -r missing -o -r notexist ]; then \ exit 1; \ fi mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/po/fi.po0000664000175000017500000005767512042412720012150 00000000000000# Finnish translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # Ilkka Tuohela 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2007-09-15 23:54+0000\n" "Last-Translator: Ilkka Tuohela \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Asiakirja" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Lisäkentät" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metatiedot" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Lisää kenttä" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Yritä hakea tämän asiakirjan metatietoja verkosta" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Poista tämä kenttä" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Asiakirjan ominaisuudet" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Tiedosto:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Nimeä tämä kenttä uudelleen" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Valitse tiedosto" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Avain:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Liitä BibTex" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Välipalvelin" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Nämä välipalvelimen asetukset ovat yhteisiä\n" "kaikille Gnome-ohjelmille. Automaattisten asetusten\n" "URL:eja ei tueta." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Verkkonimi:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Salasana:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Portti" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Asetukset" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Käytä tunnistatumista" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Käytä välipalvelinta" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Käyttäjätunnus:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Noudetaan metadataa" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" "Otetaan yhteyttä palveluun citeabase.org \"%1\"-metadatan noutamiseksi" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Noudetaan metadataa" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Noudetaan metadataa" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Tulkitaan BibTeX-tietoja" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" "Otetaan yhteyttä palveluun crossref.org \"%1\"-metadatan noutamiseksi" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Nimeämätön" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Siirretään \"%s\" kohtaan \"%s\"" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Avataan tiedostoa \"%1\"" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Luetaan tiedostoa \"%1\"" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Tulkitaan tuontia" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Puretaan asiakirja %1 bibutils-rakenteesta" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Leikepöydältä ei löytynyt viitteitä.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Otsikko" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Kirjoittajat" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Avain" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Noudetaan asiakirjoja" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Luetaan tietoja tiedostosta \"%1\"" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Tulkitaan kirjaston XML-esitystä" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Avataan %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Asiakirjan sijainnin epäselvyys" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Tiedosto \"%1\" löytyi kahdesta eri paikasta:\n" "\tAlkuperäinen: %2\n" "\tUusi: %3\n" "\n" "Haluatko säilyttää alkuperäisen sijainnin vai päivittää sijainnin uuteen?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Toteuta valinta kaikille epäselville sijainneille" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Säilytä _alkuperäinen" #: ../src/Library.C:274 msgid "Use _New" msgstr "Käytä _uutta" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Keskeytetään käsittelemättömän poikkeuksen takia" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Poikkeus" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Merkinnät" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Kirjasto" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Avaa..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Tallenna _nimellä..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "Vie _BibTex-muodossa..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Hallitse BibTeX-tiedostoa..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Tuo..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Yhteydetön tila" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Muokkaa" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Näytä" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Tuo viitteitä BibTeX-tiedoista leikepöydällä" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Kopioi LaTeX-lainaus" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Valitse valitut avaimet leikepöydälle LaTeX-lainauksena" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "_Luettelonäkymä" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "_Kuvakenäkymä" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Näytä merkintäpaneeli" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Merkinnät" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Luo merkintä" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Poista merkintä" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "Ni_meä merkintä uudestaan" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Asiakirjat" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Lisää tiedosto..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Lisää _kansio..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Lisää _tyhjä lähdeviite..." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Poista" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Nouda metatiedot" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "_Nimeä tiedosto avaimen mukaan uudestaan" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "O_hje" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Esittely" #: ../src/RefWindow.C:640 msgid "All" msgstr "Kaikki" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Ei merkitty" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 asiakirjaa (%s valittu)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 asiakirjaa" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Tallennetaanko muutokset kirjastoon ennen sulkemista?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Sulje t_allentamatta" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Syötä merkintä" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Haluatko varmasti poistaa merkinnän \"%s\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Kun merkintä poistetaan, se poistetaa pysyvästi myös kaikista asiakirjoista, " "joihin se on nyt liitetty." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Vie BibTex" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTex-tiedostot" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Kaikki tiedostot" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Valinta:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Kaikki asiakirjat" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Valitut asiakirjat" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Suojaa kirjainkoko (ympäröi arvot {}-merkeillä)" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Käytä Unicode (UTF-8) -koodausta" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Nimeämätön kirjasto" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Selaa" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Hallitse BibTeX-tiedostoa" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Jos valitse tiedoston tästä, se ylikirjoitetaan aina, kun tämä kirjasto " "tallennetaan." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTex-tiedosto:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Selaa..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Avaa kirjasto" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referencer-kirjastot" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Tallenna kirjasto nimellä" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ilkka Tuohela https://launchpad.net/~hile" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Näytetään \"%1\"" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Lisää asiakirjatiedostoja" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Lisätään asiakirjoja" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Tämä saattaa kestää hetken, koska jokaisen asiakirjan lähdeviitetiedot " "etsitään." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1/%2 asiakirjaa" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Lisää asiakirja" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Lisää kansio" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Haluatko varmasti poistaa nämä %1 asiakirjaa?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Kaikki merkinnät ja metatiedot näille asiakirjoille hukataan pysyvästi." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Haluatko varmasti poistaa \"%1\"?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "Kaikki merkinnät ja metadata asiakirjalle hukataan pysyvästi." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Nimetäänkö tämä tiedosto uudelleen nimelle \"%s\"?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Nimetäänkö nämä %1 tiedostoa avainten mukaan?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Tätä toimintoa ei voi perua." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Nimeä uudestaan avaimen mukaan" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Haluatko varmasti poistaa kaikki näiden %1 asiakirjan tiedostot?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Kaikki näihin tiedostoihin liittyvät merkinnät ja metatieto hukataan " "pysyvästi ja kyseiset tiedostot poistetaan." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Haluatko varmasti poistaa kohteen \"%1\" tiedoston?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Kaikki tähän tiedostoon liittyvät merkinnät ja metatieto hukataan pysyvästi " "ja kyseinen tiedosto poistetaan." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Poistetaan \"%1\"" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Yritetään avata tiedostoa \"%1\"" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Tuo viitteet" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Kirjallisuusviitetiedostot" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Muoto:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Tuotiin %1 BibTex-viitettä" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Työskennellänkö yhteydettömässä tilassa?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Metatietoja noudettaessa tapahtui virhe. Haluatko jatkaa yhteydettömässä " "tilassa? Jos valitse yhteydettömän tilan, ei verkkotoimintoja yritetä " "käyttää, ennen kuin valitset yhteydellisen tilan asetusikkunasta." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Pysy yhteydellisessä tilassa" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Siirry yhteydelliseen tilaan" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Noudetaan %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Avataan URI:a \"%1\" palvelimelta" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Luetaan URI:a \"%1\" palvelimelta" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Suljetaan URIa \"%1\" palvelimella" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Käynnissä oleva toiminto oli: \"%1\"" referencer-1.2.1/po/ru.po0000664000175000017500000007375712042412720012177 00000000000000# Russian translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-08-17 18:44+0000\n" "Last-Translator: Sergey B Kirpichev \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Документ" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Д_ополнительные поля" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Метаданные" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Добавить поле" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Поиск метаданных для документа в интернете" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Очистить метаданные" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Удалить поле" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Сведения о документе" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Файл:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Заполнить метаданные из буфера обмена (в формате BibTeX)" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Переименовать поле" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Выберите файл" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Ключ" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "Получить" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "В_ставить BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Прокси" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Плагины в верхней части списка используются первыми при получении " "метаданных." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Эти настройки прокси общие для всех приложений Gnome. URL " "автоконфигурации не поддерживаются." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "_Настроить..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Адрес сервера:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Переместить в_низ" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Переместить _вверх" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Сеть" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Пароль:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Плагины" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Порт:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Настройки" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Использовать аутентификацию" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Использовать веб-прокси" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Пользователь:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_О программе" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI резольвер" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Расшифровка DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Поиск PubMed ID по DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Расшифровка PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Получение метаданных из NCBI для PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Цитировать в LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Цитировать выбранные документы в LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Получение метаданных" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Соединение с citebase.org для получения метаданных '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Загрузка метаданных" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Загрузка метаданных" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Анализ BibTeX записи" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org ArXiv-ID резольвер" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Реквизиты доступа для CrossRef не найдены" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Для использования сервиса CrossRef, необходим бесплатный аккаунт. Реквизиты " "доступа могут быть указаны в Настройках, либо CrossRef плагин может быть " "отключен." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Настройки" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Отключить CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Соединение с crossref.org для получения метаданных '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Безымянный" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Перемещение '%1' в '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Открытие файла '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Чтение файла '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "попытка конвертация файла %1 в utf8 из latin1" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Анализ импорта" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Извлечение информации о документе %1 из структуры bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Тип:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Никаких ссылок в буфере обмена найдено не было.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Множество ссылок найдено в буфере обмена.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Название" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Авторы" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Журнал" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Год" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Том" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Выпуск" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Страницы" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Месяц" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Заметка" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Ключ" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Редактор" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Издатель" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Серия" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Адрес" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Издание" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Название книги" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Организация" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Опубликовано как" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Школа" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Учреждение" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Глава" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Тип" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Статья" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Книга" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "В известиях" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Разное" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Не опубликовано" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Магистерская диссертация" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Диссертация" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Известия" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Конференция" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "В книге" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Буклет" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "В коллекции" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Руководство" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Технический отчет" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Загруженные документы" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Получение информации для файла '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Автор" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Анализ Library XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Открытие %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Неопределенное положение документа" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Файл '%1' существует в двух местах:\n" "\tОсновное: %2\n" "\tНовое: %3\n" "\n" "Вы хотите сохранить основное положение, или обновить на новое?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Применить выбор ко всем документам с неоднозначным положением" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Сохранить _Основное" #: ../src/Library.C:274 msgid "Use _New" msgstr "Использовать _Новый" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' не является логическим значением" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI ссылка" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv ссылка" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed ссылка" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Завершение из-за необработанного исключения" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Включен" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Модуль" #: ../src/Preferences.C:189 msgid "Description" msgstr "Описание" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Ошибка плагина" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Исключение" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Пояснение" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Метки" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Библиотека" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Открыть..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Сохранить _как..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "_Экспорт в BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Работа с BibTeX файлом..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Импорт..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "Работать _автономно" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Правка" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Вид" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Импортировать ссылки в формате BibTeX из буфера обмена" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Скопировать LaTeX цитирование" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Скопировать выделенные записи в буфер обмена как LaTeX цитирование" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Режим просмотра: _Список" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Режим просмотра: _Значки" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Показать панель \"меток\"" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Показать панель _заметок" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Метки" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Создать метку" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Пометить новой меткой" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Удалить метку" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Переименовать метку" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Документы" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "Добавить _файл" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Добавить _директорию" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Добавить _пустую запись..." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Добавить _запись с ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Удалить" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Извлечь метаданные" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "Уд_алить файл с диска" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "П_ереименовать файл по ключу" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Инструменты" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Экспортировать заметки как HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Справка" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Введение" #: ../src/RefWindow.C:640 msgid "All" msgstr "Все" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Непомеченные" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 документов (%2 выделенных)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 документов" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Заметки: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Отобрано несколько документов" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Выделите документ для просмотра и редактирования заметок" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Сохранить изменения в библиотеке перед закрытием?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "_Закрыть без сохранения" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Введите метку" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Создать метку" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "Короткие, запоминающиеся метки помогут организовать документы" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Имя" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Вы действительно хотите удалить \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Когда метка удаляется, будут удалены и все текущие ассоциации ее с " "документами." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Экспортировать в BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTeX файлы" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Все файлы" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Выделение:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Все документы" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Выделенные документы:" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Защитить заглавные буквы (окружить значение скобками {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Использовать UTF-8" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Экспортировать заметки" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "Документы HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Безымянная библиотека" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Просмотр" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Работа с BibTeX файлом" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Если Вы выберете файл здесь, то он будет перезаписан всякий раз, когда эта " "библиотека сохраняется." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Файл BibTeX:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Просмотреть..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Открыть библиотеку" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Библиотеки Referencer" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Сохранить библиотеку как..." #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Pavel V. Kulikov https://launchpad.net/~kulikovpv8256\n" " Sergey B Kirpichev https://launchpad.net/~skirpichev" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Показать '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Отмена" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" "Показать диалог с древовидным списком чекбоксов с метками и клавишей для " "создания меток" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "С_оздать метку" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Добавить файлы документов" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Добавить файлы документов" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Процесс может занять некоторое время, поскольку просматривается " "библиографическая информация для всех документов." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Документ" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Получен текст" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Получен ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Получены метаданные" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Итоги" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Пометить" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 из %2 документов" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Отменено" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Готово" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Добавить запись с ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Добавить документ" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Добавить директорию" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Вы уверены, что хотите удалить эти %1 документов?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Все связанные с документами метки и метаданные будут безвозвратно потеряны." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Вы уверены, что хотите удалить '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Все связанные с документом метки и метаданные будут безвозвратно потеряны." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Получение метаданных" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Действительно переименовать этот файл в '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Действительно переименовать файлы %1 как их ключи?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Это действие не может быть отменено." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Переименовать как ключ" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Вы уверены, что хотите удалить файлы этих %1 документов?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Все ассоциации с метками и метаданные для этих документов будут утрачены и " "файлы удалены." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Уверены, что хотите удалить файл для записи '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Все ассоциации с метками и метаданные для этих документов будут утрачены и " "файлы удалены." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Удаление '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Попытка открыть файл '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Работать автономно" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Работать online" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Импорт ссылок" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Файлы библиографий" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Формат:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "импортировано %1 BibTeX ссылок" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Работать автономно?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Была проблема при получении метаданных. Вы хотите\n" "работать автономно? Если Вы выберете этот вариант, никаких\n" "сетевых операций более не будет производиться, пока Вы не возобновите\n" "подключение в диалоге Настроек." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Оставаться online" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Автономная работа" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Загрузка %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Открытие URI '%1' на сервере" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Чтение URI '%1' на сервере" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Закрытие URI '%1' на сервере" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Прерванная операция: \"%1\"" referencer-1.2.1/po/fr.po0000664000175000017500000006707112042412720012150 00000000000000# French translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-09-19 06:45+0000\n" "Last-Translator: David Coeurjolly \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Document" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Champs _optionnels" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Métadonnées" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Ajouter un champ" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Tentative de recherche en ligne des métadonnées de ce document" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Effacer les métadonnées" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Supprimer ce champ" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propriétés du document" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Fichier :" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Remplir les métadonnées depuis BibTeX via le presse-papier" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Renommer ce champ" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Sélectionnez un Fichier" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Clefs :" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Rechercher" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Coller du BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Les greffons les plus proches du haut de la liste sont essayés en premier " "lors de la recherche de métadonnées." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Ces paramètres de serveur proxy s'appliquent\n" "à toutes les applications Gnome. Les URLs \n" "d'auto-configuration ne sont pas prises en charge. " #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "C_onfigurer..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Serveur :" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Déplacer vers le bas" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Déplacer vers le haut" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Réseau" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Mot de passe :" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Modules" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Préférences" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Utiliser l'authentification" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Utiliser un proxy web" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Identifiant :" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "À _propos..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "Résolveur PubMed DOI" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Résolution d'un DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Recherche d'un identifiant PubMed à partir du DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Résolution d'un identifiant PubMed" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" "Récupération des méta-données depuis NCBI à partir de l'identifiant PubMed %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citer dans LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citer les documents séléctionnés dans LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Récupération des métadonnées" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Connexion à citebase.org pour récupérer les métadonnées de '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Téléchargement des métadonnées" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Téléchargement des métadonnées" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Analyse du BibTeX" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Résolveur Arxiv.org ArXiv-ID" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Autorisations CrossRef non trouvées" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Pour utiliser le service CrossRef, un compte gratuit est nécessaire. Les " "informations d'authentification peuvent être mises dans les Préférences, " "sinon le module CrossRef peut être désactivé." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Préférences" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Désactiver CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Connexion à crossref.org pour récupérer les métadonnées de '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Résolveur OpenURL DOI de crossref.org" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Sans nom" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "Conflit dans le nom de la clé" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" "La clé choisie est en conflit avec une clé existante. Replacer '%1' par '%2' " "?" #: ../src/Document.C:102 msgid "_Ignore" msgstr "_Ignorer" #: ../src/Document.C:106 msgid "_Replace" msgstr "_Remplacer" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "'%1' en cours de déplacement vers '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Ouverture du fichier '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Lecture du fichier '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "conversion du fichier %1 de (supposé) latin1 à utf8" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Importation en cours" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Extraction du document %1 depuis la structure bibutils" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Type :" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Aucune référence trouvée dans le presse-papier.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Plusieurs références trouvées dans le presse-papier.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Titre" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Auteurs" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Journal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Année" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Numéro" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Pages" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mois" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Note" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Clé" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Éditeur" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Éditeur de la publication" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Série" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adresse" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Édition" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Titre de l'ouvrage" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organisation" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Mode de publication" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "École" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institution" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Chapitre" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Type" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "DOI" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Article" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Livre" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "Article dans des actes" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Divers" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Non publié" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Thèse de Master" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Thèse de Doctorat" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Actes de conférence" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conférence" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Article dans un livre" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Livret" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "Dans une collection" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manuel" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Rapport téchnique" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Documents téléchargés" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Récupération des informations sur le fichier '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "Par %1" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "Auteur" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Analyse de la bibliothèque XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Ouverture de %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Emplacement du document ambigü" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Le fichier '%1' existe en deux endroits :\n" "\tActuel : %2\n" "\tNouveau : %3\n" "\n" "Voulez-vous conserver l'emplacement actuel ou voulez-vous le mettre à jour " "vers le nouveau ?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Appliquer ce choix pour tous les emplacements ambigüs" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Garder l'_original" #: ../src/Library.C:274 msgid "Use _New" msgstr "Utiliser le _nouveau" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' n'est pas une valeur booléenne valide" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "Lien DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Lien arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "Lien URL" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Lien PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Terminaison du programme à cause d'une exception non traitée" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Activé" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Module" #: ../src/Preferences.C:189 msgid "Description" msgstr "Description" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Erreur de greffon" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1 : %2\n" "\n" "%3 : %4\n" "%5 : %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Exception" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Explication" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Mots-clés" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Bibliothèque" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Ouvrir ..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Enregistrer _sous..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xporter au format BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Gérer le fichier BibTeX..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "Répertoire de la bibliothèque" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importer ..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Travailler hors-ligne" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Editer" #: ../src/RefWindow.C:396 msgid "_View" msgstr "Affichage" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "Or_ganiser les éléments" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importer des références BibTeX dans le presse-papiers" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copier une citation LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" "Copier les clés sélectionnées vers le presse-papier comme des citations LaTeX" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Utiliser la vue _liste" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Utiliser la vue _icon" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Afficher le panneau latéral des étiquettes" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Montrer le volet des _notes" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "É_tiquettes" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Créer une étiquette..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Associer ne nouvelle étiquette..." #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Supprimer une étiquette" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Renommer une étiquette" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documents" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Ajouter un fichier" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Ajouter _répertoire" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Ajouter une référence _vide" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Ajouter une référence avec un ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Supprimer" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Obtenir les métadonnées" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Supprimer le fichier du disque" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "Renommer les fichiers à partir des clés" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Outils" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Exporter les notes en HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "Aid_e" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introduction" #: ../src/RefWindow.C:640 msgid "All" msgstr "Tous" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Non étiquetés" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documents (%2 sélectionnés)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documents" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Notes : %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Plusieurs documents selectionnés" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Sélectionnez un document pour visualiser et modifier les notes" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" "Voulez-vous enregistrer les modifications à la bibliothèque avant de fermer " "celle-ci ?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "_Fermer sans enregistrer" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Entrer une étiquette" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Créer une étiquette" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Des noms d'étiquette courts et mémorisables vous aident à organiser vos " "documents" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Nom" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Etes-vous certain de vouloir supprimer \"%1\" ?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Quand une étiquette est supprimée, elle est aussi enlevée définitivement de " "tous les documents auxquels elle était associée." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Export au format BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Fichiers BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Tous les Fichiers" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Sélection :" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Tous les documents" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documents séléctionnés" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Protéger les majuscules (entourer les valeurs avec {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Utiliser le codage Unicode (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Exporter les notes" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "Fichiers HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Bibliothèque sans nom" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Parcourir" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Gérer un fichier BibTeX" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Si vous sélectionnez un fichier ici, il sera écrasé à chaque fois que la " "bibliothèque sera sauvée." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Fichier BibTeX :" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Naviguer..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Ouvrire la bibliothèque" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Bibliothèques Referencer" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Enregistrer la bibliothèque sous" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Coeurjolly https://launchpad.net/~dcoeurjo\n" " Frédéric Grosshans https://launchpad.net/~fgrosshans\n" " Guillaume Lanquepin https://launchpad.net/~guyomel\n" " Jérôme Rousselot https://launchpad.net/~jerome-rousselot\n" " Mortimer https://launchpad.net/~mortimer-pa" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Affichage de '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Annulation" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "Étiquette ajoutée aux fichiers" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "C_réer une étiquette..." #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Ajouter des documents fichiers" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Ajout des fichiers de documents" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Ce processus peut prendre un certain temps car l'information bibliographique " "de chaque document est récupérée." #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Document" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Texte reçu" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "ID reçu" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Méta-données reçues" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Résultat" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Associer des étiquettes..." #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 of %2 documents" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Annulé" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Terminé" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Ajouter une référence à partir d'un ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Ajouter un document" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Ajouter un répertoire" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Etes-vous sûr de vouloir supprimer ces %1 documents ?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Toutes les associations d'étiquettes et toutes les métadonnées de ces " "documents seront définitivement perdues." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Etes-vous sûr de vouloir supprimer \"%1\" ?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Toutes les associations d'étiquettes et toutes les métadonnées de ce " "document seront définitivement perdues." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Chargement des méta-données" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Voulez-vous vraiment renommer ce fichier en '%1' ?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Voulez-vous vraiment renommer ces %1 fichiers selon leur clé ?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Cette action ne peut pas être annulée." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Renommer selon la clé" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" "Etes-vous certain de vouloir supprimer les fichiers de ces %1 documents ?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Toutes les associations d'étiquettes et toutes les métadonnées de ces " "documents seront définitivement perdues, et les fichiers auxquels ils font " "référence seront supprimés sans possibilité de revenir en arrière." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Etes-vous sûr de vouloir supprimer le fichier de '%1' ?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Toutes les associations d'étiquettes et de métadonnées pour ce document " "seront définitivement perdues et le fichier auquel il réfère sera " "irrémédiablement supprimé." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Suppression de '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Essai d'ouverture du fichier '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Travailler hors-ligne" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Travailler en ligne" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importation de références" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Fichiers de bibliographie" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Format :" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "%1 références BibTeX ont été importées" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Travailler hors-ligne ?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Il y a eu un problème lors de la recherche de méta-données, Voulez-vous\n" "travailler hors-ligne ? Dans ce cas, plus aucune opération réseau ne sera " "tentée jusqu'à ce que vous choisissiez de retravailler en ligne dans la " "boîte de dialogue Préférences." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Rester en ligne" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Passer hors-ligne" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Téléchargement de %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Ouverture de l'URI '%1' sur le serveur" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Lecture de l'URI '%1' sur le serveur" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Fermeture de l'URI '%1' sur le serveur" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "L'opération en cours était : \"%1\"" referencer-1.2.1/po/ChangeLog0000664000175000017500000000011612042412720012736 000000000000002007-03-13 Michele Mattioni * it.po: Initial version referencer-1.2.1/po/fa.po0000664000175000017500000005245612042412720012130 00000000000000# Persian translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-03-20 17:20+0000\n" "Last-Translator: Artin \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "سند" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "فوق داده" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "ویژگیهای سند" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "پرونده:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "یک پرونده انتخاب کنید" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_کلید:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "میزبان:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "شبکه" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "رمز عبور:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "افزونه‌ها" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "تنظیمات‌" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "نام کاربر:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_ترجیحات" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "بدون نام" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_نوع:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "عنوان" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "مؤلفان" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "یادداشت روزانه" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "سال" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "صفحه ها" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "ماه‌" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "یادداشت" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "کلید" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "ویرایشگر" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "مجموعه‌ها" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "نشانی" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "ویرایش" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "عنوان کتاب" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "سازمان" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "مدرسه" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "مؤسسه" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "فصل" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "نوع‌" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "مقاله" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "کتاب‌" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "متفرقه" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "منتشر نشده" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "در کتاب" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "کتابچه" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "دستی" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "گزارش فنی" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "در حال گرفتن اطلاعات برای پرونده '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "در حال باز کردن %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "فعال" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "مازول" #: ../src/Preferences.C:189 msgid "Description" msgstr "شرح" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "استثنا" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "شرح" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "برچسب‌ها" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_باز کردن..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "ذخیره به نام_..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_وارد کردن..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_کار به صورت منفصل" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_ویرایش" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_نما" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_برچسب‌ها" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_ساخت برچسب..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_نوشتارها" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_حذف" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_راهنما" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "مقدمه" #: ../src/RefWindow.C:640 msgid "All" msgstr "همه‌‌" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "بستن _بدون ذخیره کردن" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "یک برچسب تایپ کنید" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "آیا مطمئن به حذف \"%1\" هستید ؟" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "همه‌ی پرونده‌ها" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "گزینش:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "همهٔ نوشتارها" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "نوشتارهای انتخاب شده" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "کتابخانه نام گزاری نشده" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "مرور" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_مرور..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Artin https://launchpad.net/~artin" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "در حال نمایش '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "نوشتار" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "صرف نظر شد" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "تمام شد" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "افزودن نوشتار" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "افزودن پوشه" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "در حال حذف '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "قالب:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "بارگیری %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/ca.po0000664000175000017500000005107312042412720012117 00000000000000# Catalan translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2007-06-23 15:32+0000\n" "Last-Translator: Lluís Vilanova \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Document" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Camps E_xtres" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadades" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Afegeix un camp" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Prova de buscar les metadades d'aquest document a la xarxa" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Elimina aquest camp" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propietats del Document" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Fitxer:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Reanomena aquest camp" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Escolliu un fitxer" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Clau:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Enganxa BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Màquina:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferències" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Utilitza l'autenticació" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Utilitza un proxy web" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nom d'usuari/a:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Títol" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autors" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Clau" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Etiquetes" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Obre..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xporta com a BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importa..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Treballa desconnectat" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Edita" #: ../src/RefWindow.C:396 msgid "_View" msgstr "" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copia cita LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "E_tiquetes" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Crea Etiqueta..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Elimina Etiqueta" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Reanomena Etiqueta" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documents" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "Suprimei_x" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Obté Metadades" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "Ajuda" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introducció" #: ../src/RefWindow.C:640 msgid "All" msgstr "" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Sense etiqueta" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documents (%2 seleccionats)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documents" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Guarda els canvis a la biblioteca abans de tancar?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Tanca _sense desar" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Escriu una etiqueta" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exporta BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Fitxers BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Tots els fitxers" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Selecció:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Tots els documents" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documents seleccionats" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Lluís Vilanova https://launchpad.net/~xscript" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/zh_CN.po0000664000175000017500000006304112042412720012533 00000000000000# Simplified Chinese translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-09-19 15:54+0000\n" "Last-Translator: luojie-dune \n" "Language-Team: Simplified Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #~ msgid "This Document" #~ msgstr "本文档" #~ msgid "_Delete File from drive" #~ msgstr "从驱动器删除文件(_D)" #~ msgid "" #~ "%1\n" #~ "%2\n" #~ "%3" #~ msgstr "" #~ "%1\n" #~ "%2\n" #~ "%3" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "文档" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "更多字段(_x)" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "元数据" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "添加一个字段" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "尝试在线搜索本文档的元数据" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "清除元数据" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "删除该字段" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "文档属性" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "文件:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "按剪贴板中的 BibTeX 信息填写元数据" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "重命名该字段" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "选择一个文件" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "键值(_K):" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "在线查询(_L)" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "粘贴 BibTeX 信息(_P)" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "代理" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "搜索元数据时优先使用列表顶部的插件" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" " 这些代理设置在桌面范围内应用于所有的 Gnome 应用程序。\n" "不支持自动配置 URL。" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "配置(_O)..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "主机:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "下移(_d)" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "上移(_u)" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "网络" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "密码:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "插件" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "端口:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "设置" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "使用验证" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "使用代理" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "用户名:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "关于(_A)…" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI 解析器" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "解析 DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "从 DOI %s 查找 PubMed ID" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "解析 PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "从 NCBI 获取 PubMed ID %s 的元数据" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "在 LyX 中引用" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "在 LyX 中引用被选中的文档" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "检索元数据" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "联系 citebase.org 以检索 '%1' 的元数据" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "正在下载元数据" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "下载元数据" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "分析 BibTeX 信息" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org ArXiv-ID 解析" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "未发现 CrossRef 证书" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "需要一个免费帐号以便使用 CrossRef 服务。登录信息要通过设置来设定,否则 CrossRef 将被禁用。" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "设置(_P)" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "禁用 CrossRef(_D)" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "联系 crossref.org 以检索 '%1' 的元数据" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Crossref.org OpenURL DOI 解析" #: ../src/Document.C:38 msgid "Unnamed" msgstr "未命名的" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "键位命名重复" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "选中的键和已有的冲突。用 '%1' 代替 '%2'?" #: ../src/Document.C:102 msgid "_Ignore" msgstr "忽略(_I)" #: ../src/Document.C:106 msgid "_Replace" msgstr "替换(_R)" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "移动 '%1' 到 '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "打开文件 '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "读取文件 '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "文件编码从拉丁(猜测)转换为utf8" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "分析输入" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "从 bibutils 结构提取文档 %1" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "类型(_T):" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "剪贴板中未发现 references。\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "剪贴板中发现多个 references。\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "标题" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "作者" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "期刊" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "年" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "卷" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "辑" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "页" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "月" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "注释" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "键值" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "编者" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "出版者" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "系列" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "地址" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "版本" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "书名" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "组织" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "出版方式" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "学校" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "研究所" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "章" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "类型" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "DOI" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "文章" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "书籍" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "准备中" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "其他" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "未发表" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "硕士论文" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "博士论文" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "准备中" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "会议" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "书籍中" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "手册" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "文集中" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "手册指南" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "技术报告" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "已下载的文档" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "获取文件 '%1' 的信息" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "由 %1 制作" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "作者" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "分析 XML 库" #: ../src/Library.C:164 msgid "Opening %1" msgstr "打开 %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "文档路径模糊" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "文件 '%1' 存在于两个路径:\n" "\t原路径: %2\n" "\t新路径: %3\n" "\n" "是保持原路径,还是更新到新路径?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "应用选择于所有的模糊路径" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "保持原路径(_O)" #: ../src/Library.C:274 msgid "Use _New" msgstr "使用新路径(_N)" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' 不是有效的布尔值" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI 链接" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv 链接" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL 链接" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed 链接" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "因未处理的例外而终止" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "启用" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "模块" #: ../src/Preferences.C:189 msgid "Description" msgstr "说明" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "插件错误" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "例外" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "解释" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "标签" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "文库(_L)" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "打开(_O)" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "另存为...(_A)" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "以 BibTeX 格式导出...(_x)" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "管理 BibTeX 文件...(_M)" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "收藏文件夹(_L)..." #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "导入...(_I)" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "离线工作(_W)" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "编辑(_E)" #: ../src/RefWindow.C:396 msgid "_View" msgstr "查看(_V)" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "排列项目(_g)" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "从剪贴板中的 BibTeX 信息导入 references" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "复制 LaTeX 引用(_C)" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "复制当前选择的键值到剪贴板作为 LaTeX 引用" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "使用列表查看(_L)" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "使用图标查看(_I)" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "显示标签框(_S)" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "显示笔记(_N)面板" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "标签(_T)" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "创建标签...(_C)" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "增加(_A)新标签" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "删除标签(_D)" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "重命名标签(_R)" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "文档(_D)" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "添加文件...(_A)" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "添加文件夹...(_F)" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "添加空白 Reference...(_m)" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "按ID添加 Reference...(_n)" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "移除(_R)" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "获取元数据(_G)" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "从硬盘删除(_D)" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "按键值重命名文件(_e)" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "工具(_T)" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "导出笔记为HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "帮助(_H)" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "介绍" #: ../src/RefWindow.C:640 msgid "All" msgstr "全部" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "无标签的" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 个文档(%2 个被选中)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 个文档" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_速记: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "选择多个文件" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "关闭前保存更改到文库吗?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "关闭而不保存(_w)" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "输入一个标签" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "建立标签" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "简短易记的标签名可以方便组织您的文件" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "名称" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "确定删除 \"%1\" 吗?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "一个标签被删除后,该标签会从所有相关联文档中移除。" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "导出 BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTeX 文件" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "全部文件" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "选择:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "全部文档" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "选中的文档" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "保护大写(以 {} 包含)" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "使用 Unicode (UTF-8) 编码" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "导出笔记" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "HTML 文件" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "未命名的文库" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "浏览" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "管理 BibTeX 文件" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "如果在这里选择一个文件,它将被覆盖而无论文库是否被保存。" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTeX 文件:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "浏览(_B)..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "打开文库" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referencer 文库" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "保存文库为" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " huang https://launchpad.net/~zwhuang\n" "\n" "Launchpad Contributions:\n" " huang https://launchpad.net/~zwhuang\n" " luojie-dune https://launchpad.net/~luojie-dune\n" " rainofchaos https://launchpad.net/~rainofchaos\n" " yang https://launchpad.net/~totlab" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "显示 '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "取消" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "显示标签的树状选择对话框,以及建立标签按钮" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "建立(_r)标签" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "添加文档文件" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "添加文档文件" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "查询书目信息将要花费一些时间。" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "文档" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "获取文本" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "获取 ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "获取元数据" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "结果" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "附着(_A)标签" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%2 个文档中的 %1 个" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "已取消的" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "已完成的" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "以 ID 添加 Reference" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "添加文档" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "添加文件夹" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "确定要移除这 %1 个文档吗?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "所有和这些文档关联的标签和元数据将永久性地丢失。" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "确定要移除 '%1' 吗?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "所有和该文档关联的标签和元数据将永久性地丢失。" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "获取元数据" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "要重命名本文件为 '%1' 吗?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "要按键值重命名这 %1 个文件吗?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "本操作无法撤销。" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "按键值重命名" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "确定要删除这 %1 个文档的文件吗?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "所有与这些文档关联的标签和元数据将永久丢失,而且与之关联的文件将被不可挽回地删除。" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "确定要删除 '%1' 关联的文件文件吗?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "所有与该文档关联的标签和元数据将永久丢失,而且与之关联的文件将被不可挽回地删除。" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "删除 '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "尝试打开文件 '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "离线工作" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "在线工作" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "导入 References" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Bibliography 文件" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "格式:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "导入的 %1 个 BibTeX references" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "离线工作?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "检索元数据遇到问题,要离线工作吗?\n" "如果选择离线工作,将不会尝试进一步的网络操作,直到你在设置对话框中选择在线工作为止。" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "保持在线(_S)" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "切换离线(_G)" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "下载 %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "在服务器上打开 URI '%1'" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "在服务器上读取 URI '%1'" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "在服务器上关闭 URI '%1'" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "正在进行操作:\"%1\"" referencer-1.2.1/po/de.po0000664000175000017500000006760112042412720012130 00000000000000# German translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # # Launchpad Contributions: # Andreas Wagner https://launchpad.net/~a-wagner-stud # Ivo P. https://launchpad.net/~pirrip.philip # Joachim Sauer https://launchpad.net/~saua # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-12-31 15:09+0100\n" "PO-Revision-Date: 2008-12-31 15:13+0100\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokument" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "_Zusätzliche Felder" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadaten" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Feld hinzufügen" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Versuchen die Metadaten des Dokuments online abzurufen" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Metadaten löschen" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Dieses Feld entfernen" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Dokument-Eigenschaften" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Datei" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Metadaten mit BibTex-Daten aus der Zwischenablage auffüllen" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Feld umbenennen" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Datei auswählen" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Schlüssel:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Nachschlagen" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:407 msgid "_Paste BibTeX" msgstr "BibTex _einfügen" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Plugins am oberen Ende der Liste werden zuerst versucht, um Metadaten " "abzufragen." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Diese Proxy-Einstellungen gelten für alle\n" "Gnome-Anwendungen. URLs zur Auto-Konfiguration\n" " werden nicht unterstützt." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "_Konfigurieren …" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Server:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Nach _unten" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Nach _oben" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Netzwerk" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Passwort:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Plugins" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Einstellungen" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Legitimierung verwenden" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Netzwerk-Proxy verwenden" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Benutzername:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Info …" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI Auflösung" #: ../plugins/pubmed.py:131 msgid "Searching pubmed" msgstr "Pubmed suchen" #: ../plugins/pubmed.py:131 #, python-format msgid "Searching pubmed for '%s'" msgstr "Pubmed für »%s« wird gesucht" #: ../plugins/pubmed.py:162 msgid "Retrieving pubmed summaries" msgstr "Pubmed-Zusammenfassungen holen" #: ../plugins/pubmed.py:162 #, python-format msgid "Retrieving summaries for '%s'" msgstr "Zusammenfassungen für »%s« werden geholt" #: ../plugins/pubmed.py:215 msgid "Resolving DOI" msgstr "DOI wird aufgelöst" #: ../plugins/pubmed.py:215 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "PubMed-Kennung von DOI %s wird gesucht" #: ../plugins/pubmed.py:243 msgid "Resolving PubMed ID" msgstr "PubMed-Kennung wird aufgelöst" #: ../plugins/pubmed.py:243 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Metadaten für PubMed-Kennung %s werden von NCBI geholt" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "In LyX zitieren" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Die ausgewählten Dokumente in LyX zitieren" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Metadaten werden empfangen" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "citebase.org wird kontaktiert, um Metadaten für »%1« abzurufen" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Metadaten werden heruntergeladen" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:46 msgid "Downloading metadata" msgstr "Metadaten werden heruntergeladen" #: ../src/ArxivPlugin.C:100 ../src/Document.C:832 msgid "Parsing BibTeX" msgstr "BibTeX wird gelesen" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org-ArXiv-ID-Auflösung" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "CrossRef-Anmeldedaten nicht gefunden" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information may " "be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "Um den CrossRef-Dienst zu benutzen, ist ein kostenloses Benutzerkonto " "erforderlich. In den Einstellungen können die Anmeldedaten angegeben oder das " "CrossRef-Plugin deaktiviert werden." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Einstellungen" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "CrossRef _deaktivieren" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "crossref.org wird kontaktiert, um Metadaten für »%1« abzurufen." #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "CrossRef.org-OpenURL-DOI-Auflösung" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Unbenannt" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "Konflikt in der Schlüsselbenennung" #: ../src/Document.C:95 msgid "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" "Der gewählte Schlüssel steht mit einem bereits bestehenden in Konflikt. '%1' " "durch '%2' ersetzen?" #: ../src/Document.C:102 msgid "_Ignore" msgstr "_Ignorieren" #: ../src/Document.C:106 msgid "_Replace" msgstr "E_rsetzen" #: ../src/Document.C:662 msgid "Moving '%1' to '%2'" msgstr "»%1« wird nach »%2« verschoben" #: ../src/DocumentList.C:197 msgid "Opening file '%1'" msgstr "Datei »%1« wird geöffnet" #: ../src/DocumentList.C:216 msgid "Reading file '%1'" msgstr "Datei »%1« wird gelesen" #: ../src/DocumentList.C:237 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "Datei %1 zu UTF-8 von Latin1 konvertieren (empfohlen)" #: ../src/DocumentList.C:271 msgid "Parsing import" msgstr "Parsen der zu importierenden Daten" #: ../src/DocumentList.C:284 msgid "Extracting document %1 from bibutils structure" msgstr "Dokument %1 wird aus der Bibutils-Struktur entpackt" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Typ:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2741 msgid "No references found on clipboard.\n" msgstr "Keine Referenzen in der Zwischenablage gefunden.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Mehrere Referenzen in der Zwischenablage gefunden.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1521 msgid "Title" msgstr "Titel" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autoren" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Zeitschrift" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1523 msgid "Year" msgstr "Jahr" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Band" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Ausgabe" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Seiten" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Monat" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Anmerkung" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1520 msgid "Key" msgstr "Schlüssel" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Herausgeber" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Verlag" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Reihe" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adresse" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Auflage" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Buchtitel" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organisation" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Wie veröffentlicht" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Schule" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Einrichtung" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Kapitel" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Typ" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "DOI" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artikel" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Buch" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "Konferenzbeitrag" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Verschiedenes" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Unveröffentlicht" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Magisterarbeit" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Dissertation" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Konferenzakten" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konferenz" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Buchabschnitt" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Broschüre" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "Sammelband-Beitrag" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Handbuch" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Technischer Report" #: ../src/DocumentView.C:633 msgid "Document Download Folder" msgstr "Download-Odner für Dokumente" #: ../src/DocumentView.C:634 msgid "Download subsequent documents here without asking" msgstr "Zugehörige Dokumente ohne Nachfrage herunterladen" #: ../src/DocumentView.C:637 msgid "Download here" msgstr "Hier herunterladen" #: ../src/DocumentView.C:693 msgid "Getting info for file '%1'" msgstr "Informationen für Datei»'%1« werden abgefragt" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1076 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1437 msgid "By %1" msgstr "nach %1" #: ../src/DocumentView.C:1522 msgid "Author" msgstr "Author" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Bibliotheks-XML wird geparst" #: ../src/Library.C:171 msgid "Opening %1" msgstr "%1 wird geöffnet" #: ../src/Library.C:258 msgid "Document location ambiguity" msgstr "Ort des Dokuments ist mehrdeutig" #: ../src/Library.C:260 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Die Datei »%1« existiert an zwei Orten:\n" "\tOriginal: %2\n" "\tNeu: %3\n" "\n" "Wollen Sie den originalen Ort beibeihalten, oder auf den neuen aktualisieren?" #: ../src/Library.C:276 msgid "Apply choice to all ambiguous locations" msgstr "Entscheidung auf alle mehrdeutigen Orte anwenden" #: ../src/Library.C:280 msgid "Keep _Original" msgstr "_Original beibehalten" #: ../src/Library.C:281 msgid "Use _New" msgstr "_Neuen Ort verwenden" #: ../src/LibraryParser.h:95 #, c-format msgid "'%s' is not a valid boolean value" msgstr "»%s« is kein gültiger Boolescher Wert" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI-Verknüpfung" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv-Verknüpfung" #: ../src/Linker.C:118 msgid "URL Link" msgstr "UR- Verknüpfung" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed-Verknüpfung" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Aufgrund eines unbehandelten Ausnahmefehlers wird beendet" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Aktiviert" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:327 ../src/PythonPlugin.C:367 msgid "Module" msgstr "Modul" #: ../src/Preferences.C:189 msgid "Description" msgstr "Beschreibung" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Pluginfehler" #: ../src/PythonPlugin.C:324 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:325 ../src/PythonPlugin.C:365 ../src/Utility.C:260 msgid "Exception" msgstr "Ausnahme" #: ../src/PythonPlugin.C:329 ../src/PythonPlugin.C:369 msgid "Explanation" msgstr "Erklärung" #: ../src/PythonPlugin.C:364 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:257 msgid "Tags" msgstr "Marken" #: ../src/RefWindow.C:367 msgid "_Library" msgstr "_Bibliothek" #: ../src/RefWindow.C:372 msgid "_Open..." msgstr "Ö_ffnen …" #: ../src/RefWindow.C:378 msgid "Save _As..." msgstr "Speichern _unter …" #: ../src/RefWindow.C:381 msgid "E_xport as BibTeX..." msgstr "Als BibTeX e_xportieren …" #: ../src/RefWindow.C:384 msgid "_Manage BibTeX File..." msgstr "BibTeX-Datei verwalten …" #: ../src/RefWindow.C:387 msgid "_Properties..." msgstr "Eigenschaften …" #: ../src/RefWindow.C:390 msgid "_Import..." msgstr "_Importieren …" #: ../src/RefWindow.C:393 msgid "_Work Offline" msgstr "_Offline arbeiten" #: ../src/RefWindow.C:397 msgid "_Edit" msgstr "_Bearbeiten" #: ../src/RefWindow.C:399 msgid "_View" msgstr "_Ansicht" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:405 msgid "Arran_ge Items" msgstr "Objekte _anordnen" #: ../src/RefWindow.C:408 msgid "Import references from BibTeX on the clipboard" msgstr "BibTeX-Referenzen aus der Zwischenablage importieren" #: ../src/RefWindow.C:411 msgid "_Copy LaTeX citation" msgstr "LaTeX Zitat _kopieren" #: ../src/RefWindow.C:412 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" "Momentan ausgewählte Schlüsel als LaTeX-Zitat in die Zwischenablage kopieren" #: ../src/RefWindow.C:420 msgid "Use _List View" msgstr "_Listenansicht" #: ../src/RefWindow.C:422 msgid "Use _Icon View" msgstr "_Symbolansicht" #: ../src/RefWindow.C:424 msgid "_Show Tag Pane" msgstr "Markenleis_te anzeigen" #: ../src/RefWindow.C:426 msgid "Show _Notes Pane" msgstr "_Notizen anzeigen" #: ../src/RefWindow.C:428 ../src/RefWindow.C:470 msgid "_Tags" msgstr "_Marken" #: ../src/RefWindow.C:430 msgid "_Create Tag..." msgstr "Marke _erzeugen …" #: ../src/RefWindow.C:433 msgid "_Attach New Tag..." msgstr "Neue Marke _anhängen …" #: ../src/RefWindow.C:436 msgid "_Delete Tag" msgstr "Marke _löschen" #: ../src/RefWindow.C:439 msgid "_Rename Tag" msgstr "Marke _umbenennen" #: ../src/RefWindow.C:442 msgid "_Documents" msgstr "_Dokumente" #: ../src/RefWindow.C:444 msgid "_Add File..." msgstr "Datei _hinzufügen …" #: ../src/RefWindow.C:447 msgid "Add _Folder..." msgstr "_Ordner hinzufügen …" #: ../src/RefWindow.C:450 msgid "Add E_mpty Reference..." msgstr "_Leere Referenz hinzufügen …" #: ../src/RefWindow.C:453 msgid "Add Refere_nce with ID..." msgstr "Refere_nz mit Kennung hinzufügen" #: ../src/RefWindow.C:456 msgid "_Remove" msgstr "_Entfernen" #: ../src/RefWindow.C:460 msgid "_Open" msgstr "Ö_ffnen" #: ../src/RefWindow.C:467 msgid "Search..." msgstr "Suchen …" #: ../src/RefWindow.C:474 msgid "_Get Metadata" msgstr "Metadaten _holen" #: ../src/RefWindow.C:477 msgid "_Delete File from Drive" msgstr "_Datei vom Laufwerk löschen" #: ../src/RefWindow.C:481 msgid "R_ename File from Key" msgstr "Datei nach Schlüssel u_mbenennen" #: ../src/RefWindow.C:484 msgid "_Tools" msgstr "_Werkzeuge" #: ../src/RefWindow.C:486 msgid "Export Notes as HTML" msgstr "Notizen als HTML exportieren" #: ../src/RefWindow.C:489 msgid "_Help" msgstr "_Hilfe" #: ../src/RefWindow.C:491 msgid "Contents" msgstr "Inhalte" #: ../src/RefWindow.C:655 msgid "All" msgstr "Alle" #: ../src/RefWindow.C:660 msgid "Untagged" msgstr "Unmarkierte" #: ../src/RefWindow.C:926 msgid "%1 documents (%2 selected)" msgstr "%1 Dokumente (%2 ausgewählt)" #: ../src/RefWindow.C:930 msgid "%1 documents" msgstr "%1 Dokumente" #: ../src/RefWindow.C:967 msgid "_Notes: %1" msgstr "_Notizen: %1" #: ../src/RefWindow.C:970 msgid "Multiple documents selected" msgstr "Mehrere Dokumente sind ausgewählt" #: ../src/RefWindow.C:972 msgid "Select a document to view and edit notes" msgstr "Dokument zur Ansicht und Bearbeitung von Notizen" #: ../src/RefWindow.C:1034 msgid "Save changes to library before closing?" msgstr "Änderungen an der Bibliothek vor dem Schließen speichern?" #: ../src/RefWindow.C:1040 msgid "Close _without Saving" msgstr "Schließen _ohne zu speichern" #: ../src/RefWindow.C:1076 msgid "Type a tag" msgstr "Marke eintippen" #: ../src/RefWindow.C:1080 msgid "Create tag" msgstr "Marke erzeugen" #: ../src/RefWindow.C:1081 msgid "Short memorable tag names help you organise your documents" msgstr "" "Kurze, eingängige Markennamen helfen bei der Organisation von Dokumenten" #: ../src/RefWindow.C:1092 msgid "Name" msgstr "Name" #: ../src/RefWindow.C:1169 msgid "Are you sure you want to delete \"%1\"?" msgstr "Sine Sie sicher, dass Sie »%1« löschen wollen?" #: ../src/RefWindow.C:1176 msgid "" "When a tag is deleted it is also permanently removed from all documents it is " "currently associated with." msgstr "" "Wenn eine Marke entfernt wird, wird sie auch von allen Dokumenten entfernt, " "auf die sie angewandt wurde." #: ../src/RefWindow.C:1229 msgid "Export BibTeX" msgstr "BibTeX exportieren" #: ../src/RefWindow.C:1238 ../src/RefWindow.C:1421 ../src/RefWindow.C:2632 msgid "BibTeX Files" msgstr "BiBTeX-Dateien" #: ../src/RefWindow.C:1243 ../src/RefWindow.C:1324 ../src/RefWindow.C:1426 #: ../src/RefWindow.C:1594 ../src/RefWindow.C:1661 ../src/RefWindow.C:2619 msgid "All Files" msgstr "Alle Dateien" #: ../src/RefWindow.C:1254 ../src/RefWindow.C:1335 msgid "Selection:" msgstr "Auswahl:" #: ../src/RefWindow.C:1257 ../src/RefWindow.C:1338 msgid "All Documents" msgstr "Alle Dokumente" #: ../src/RefWindow.C:1258 ../src/RefWindow.C:1339 msgid "Selected Documents" msgstr "Ausgewählte Dokumente" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1264 ../src/RefWindow.C:1514 msgid "Protect capitalization (surround values with {})" msgstr "Groß-/Kleinschreibung schützen (Werte mit {} umgeben)" #: ../src/RefWindow.C:1266 ../src/RefWindow.C:1517 msgid "Use Unicode (UTF-8) encoding" msgstr "Unicode- (UTF-8) Kodierung benutzen" #: ../src/RefWindow.C:1310 msgid "Export Notes" msgstr "Notizen exportieren" #: ../src/RefWindow.C:1319 msgid "HTML Files" msgstr "HTML-Dateien" #: ../src/RefWindow.C:1382 ../src/RefWindow.C:2570 msgid "Unnamed Library" msgstr "Ungespeicherte Bibliothek" #: ../src/RefWindow.C:1414 msgid "Browse" msgstr "Durchsuchen" #: ../src/RefWindow.C:1454 ../src/RefWindow.C:1469 msgid "Manage BibTeX File" msgstr "BiBTeX-Datei verwalten" #: ../src/RefWindow.C:1470 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Wenn Sie hier eine Datei auswählen, wird diese bei jedem Speichern der " "Bibliothek überschrieben." #: ../src/RefWindow.C:1477 msgid "BibTeX file:" msgstr "BibTeX-Datei:" #: ../src/RefWindow.C:1498 msgid "_Browse..." msgstr "_Durchsuchen …" #: ../src/RefWindow.C:1572 msgid "Open Library" msgstr "Bibliothek öffnen" #: ../src/RefWindow.C:1589 ../src/RefWindow.C:1656 msgid "Referencer Libraries" msgstr "Referencer-Bibliotheken" #: ../src/RefWindow.C:1647 msgid "Save Library As" msgstr "Bibliothek speichern unter …" #. Translators: your name here! #: ../src/RefWindow.C:1708 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Andreas Wagner https://launchpad.net/~a-wagner-stud\n" " Ivo P. https://launchpad.net/~pirrip.philip\n" " Joachim Sauer https://launchpad.net/~saua" #: ../src/RefWindow.C:1724 msgid "Showing '%1'" msgstr "»%1« anzeigen" #: ../src/RefWindow.C:1733 msgid "Cancelling" msgstr "Abbrechen" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1778 msgid "Tag Added Files" msgstr "Hinzugefügte Dateien markieren" #. "Create tag" button #: ../src/RefWindow.C:1818 msgid "C_reate Tag..." msgstr "Ma_rke erzeugen …" #: ../src/RefWindow.C:1881 msgid "Add Document Files" msgstr "Dokument-Dateien hinzufügen" #: ../src/RefWindow.C:1888 msgid "Adding document files" msgstr "Dokument-Dateien werden hinzugefügt" #: ../src/RefWindow.C:1889 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Dieser Vorgang kann einige Zeit in Anspruch nehmen, da die bibliographischen " "Informationen für jedes Dokument gesucht werden." #: ../src/RefWindow.C:1914 msgid "Document" msgstr "Dokument" #: ../src/RefWindow.C:1915 msgid "Got text" msgstr "Text vorhanden" #: ../src/RefWindow.C:1916 msgid "Got ID" msgstr "Kennung vorhanden" #: ../src/RefWindow.C:1917 msgid "Got metadata" msgstr "Metadaten vorhanden" #: ../src/RefWindow.C:1918 msgid "Outcome" msgstr "Ergebnis" #: ../src/RefWindow.C:1935 msgid "_Attach tags..." msgstr "Marken _anhängen …" #: ../src/RefWindow.C:1963 msgid "%1 of %2 documents" msgstr "%1 von %2 Dokumenten" #: ../src/RefWindow.C:2052 ../src/RefWindow.C:2054 msgid "Cancelled" msgstr "Abgebrochen" #: ../src/RefWindow.C:2058 msgid "Finished" msgstr "Fertig" #: ../src/RefWindow.C:2100 msgid "Add Reference with ID" msgstr "Referenz mit Kennung hinzufügen" #: ../src/RefWindow.C:2194 msgid "Add Document" msgstr "Dokument hinzufügen" #: ../src/RefWindow.C:2225 msgid "Add Folder" msgstr "Ordner hinzufügen" #: ../src/RefWindow.C:2262 msgid "Are you sure you want to remove these %1 documents?" msgstr "Sind Sie sicher, dass Sie die %1 gewählten Dokumente entfernen wollen?" #: ../src/RefWindow.C:2264 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Alle Marken und Metdaten dieser Dokumente werden unwiderruflich gelöscht." #: ../src/RefWindow.C:2267 msgid "Are you sure you want to remove '%1'?" msgstr "Sind Sie sicher, dass sie »%1« entfernen wollen?" #: ../src/RefWindow.C:2269 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Alle Marken und Metadaten dieses Dokuments werden unwiderruflich gelöscht." #: ../src/RefWindow.C:2306 msgid "Fetching metadata" msgstr "Metadaten werden geholt" #: ../src/RefWindow.C:2336 msgid "Really rename this file to '%1'?" msgstr "Diese Datei wirklich in »%1« umbenennen?" #: ../src/RefWindow.C:2339 msgid "Really rename these %1 files to their keys?" msgstr "" "Sollen diese %1 Dateien wirklich entsprechend ihrer Schlüssel umbenannt " "werden?" #: ../src/RefWindow.C:2347 msgid "This action cannot be undone." msgstr "Diese Aktion kann nicht rückgängig gemacht werden." #: ../src/RefWindow.C:2350 msgid "Rename from Key" msgstr "Entsprechend Schlüssel umbenennen" #: ../src/RefWindow.C:2381 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" "Sind Sie sicher, dass die Dateien dieser %1 Dokumente dauerhaft gelöscht " "werden sollen?" #: ../src/RefWindow.C:2383 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Alle Marken und Metadaten für diese Dokumente werden entfernt. Die Dateien, " "auf die sie verweisen werden unwiderruflich gelöscht." #: ../src/RefWindow.C:2389 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Soll die Datei des Dokuments »%1« dauerhaft gelöscht werden?" #: ../src/RefWindow.C:2391 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Alle Marken und Metadaten für dieses Dokument werden entfernt. Die Datei, auf " "die es verweist wird unwiderruflich gelöscht." #: ../src/RefWindow.C:2419 msgid "Deleting '%1'" msgstr "»%1« wird gelöscht" #: ../src/RefWindow.C:2441 msgid "Trying to open file '%1'" msgstr "Datei »%1« wird versucht zu öffnen" #: ../src/RefWindow.C:2534 msgid "Working offline" msgstr "Offline arbeiten" #: ../src/RefWindow.C:2535 msgid "Working online" msgstr "Online arbeiten" #: ../src/RefWindow.C:2604 msgid "Import References" msgstr "Referenzen importieren" #: ../src/RefWindow.C:2627 msgid "Bibliography Files" msgstr "Bibliographie-Dateien" #: ../src/RefWindow.C:2638 msgid "Format:" msgstr "Format:" #: ../src/RefWindow.C:2735 msgid "Imported %1 BibTeX references" msgstr "%1 BibTeX-Referenzen importiert" #: ../src/RefWindow.C:3076 msgid "Searching..." msgstr "Suchen …" #: ../src/RefWindow.C:3101 msgid "Complete" msgstr "Abgeschlossen" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Offline arbeiten?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Es gab ein Problem bei der Abfrage der Metadaten, wollen Sie\n" "offline arbeiten? Dann werden keine weiteren Netzwerkoperationen vorgenommen, " "bis Sie in den Einstellungen wieder in den Online-Modus wechseln." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "Online _bleiben" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Offline arbeiten" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "%1 wird heruntergeladen" #: ../src/Transfer.C:290 msgid "Opening URI '%1' on server" msgstr "URI »%1« wird auf Server geöffnet" #: ../src/Transfer.C:315 msgid "Reading URI '%1' on server" msgstr "URI »%1« wird auf Server gelesen" #: ../src/Transfer.C:334 msgid "Closing URI '%1' on server" msgstr "URI »%1« wird auf Server geschlossen" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Die laufende Operation war: %1" #~ msgid "Downloaded Documents" #~ msgstr "Heruntergeladene Dokumente" #~ msgid "_Library Folder..." #~ msgstr "Bib_liotheksordner …" #~ msgid "Introduction" #~ msgstr "Einführung" referencer-1.2.1/po/ko.po0000664000175000017500000005221612042412720012145 00000000000000# Korean translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-10-13 10:10+0000\n" "Last-Translator: Youngtaek Oh \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "문서" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "기타" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "메타데이터" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "필드를 추가합니다." #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "이 문서에 관한 메타데이터를 인터넷에서 검색합니다." #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "메타데이터 삭제" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "이 필드를 지웁니다." #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "문서 속성" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "파일:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "클립보드에 있는 BibTeX로부터 메타데이터를 가져옵니다." #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "이 필드의 이름을 바꿉니다." #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "파일을 선택합니다" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "키(_K):" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "찾아보기(_L)" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "BibTeX으로 붙여넣기" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "프록시" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "메타데이터를 검색할 때 리스트의 맨 처음에 가까운 플러그인부터 사용됩니다." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "설정(C_)..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "호스트:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "아래로 이동" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "위로 이동" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "네트워크" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "암호:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "플러그인" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "포트:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "기본 설정" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "인증 사용" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "웹 프록시 사용" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "사용자명:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "프로그램 정보(_A)..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "DOI %s 로부터 PubMed ID를 사져오는 중" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "PubMed ID %s를 사용하여 NCBI로부터 메타데이터를 가져오는 중" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "LyX에서 인용" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "선택된 문서를 LyX에서 인용" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "메타데이터를 가져오는 중" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "'%1'의 메타데이터를 가져오기 위해 citebase.org에 접속하는 중" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "메타데이터 다운로드중" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "메타데이터 다운로드 중" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "BibTeX를 파싱하는 중" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "CrossRef 서비스를 사용하기 위해서는 무료 계정이 필요합니다. 로그인 정보를 '기본 설정'에서 설정하시거나 CrossRef " "플러그인을 비활성화 시키십시요." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "기본 설정" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "CrossRef 비활성화" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "'%1'의 메타데이터를 가져오기 위해 crossref.org에 접속하는 중" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "이름 없음" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "" #: ../src/RefWindow.C:396 msgid "_View" msgstr "" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "" #: ../src/RefWindow.C:640 msgid "All" msgstr "" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Youngtaek Oh https://launchpad.net/~youngtaek-oh" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/da.po0000664000175000017500000006237512042412720012127 00000000000000# Danish translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-04-30 11:10+0000\n" "Last-Translator: Andreas Dalsgaard \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Dokument" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "E_kstra Felter" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadata" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Tilføj et felt" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Forsøg at finde metadata for dette dokument online" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Fjern metadata" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Slet dette felt" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Dokument egenskaber" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Fil" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Udfyld metadata fra BibTex i udklipsholderen" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Omdøb dette felt" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Vælge en Fil" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Nøgle" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Slå op" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Indsæt BibTex" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" "Plugins nær toppen af listen bliver prøvet først når metadata hentes." #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Disse proxy indstillinger virker for alle gnome \n" "programmer. Auto-konfigurering af \n" "hjemmesideadresser er ikke understøttet." #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "K_onfigurér..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Vært:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Flyt _ned" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Flyt _op" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Netværk" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Adgangskode" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Udvidelsesmoduler" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Port:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Præferencer" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Brug identifikation" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Brug web proxy" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Brugernavn" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Om..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "PubMed DOI finder" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "Finder DOI" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "Finding PubMed ID from DOI %s" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "Finder PubMed ID" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Henter metadata fra NCBI for PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citeer i LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citeer den markerede tekst i LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "Henter metadata" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Kontakter citebase.org for at hente metadata for '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Downloader Metadata" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Downloader metadata" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Parser BibTex" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "Arxiv.org ArXiv-ID finder" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "CrossRef anbefalinger blev ikke fundet" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" "For at bruge CrossRef servicen skal der bruges en gratis brugerkonto. Login " "informationer kan sættes i Præferencer, eller CrossRef plugin'et kan " "deaktiveres." #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Præferencer" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "Slå CrossRef _fra" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Kontakter crossref.org for at hente metadata for '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "Crossref.org OpenURL DOI finder" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Unavngivet" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Flytter '%1' til '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Åbner filen '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Læser filen '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "Parser import" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "Udtrækker dokument %1 fra bibutils strukturen" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Type:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Ingen referencer fundet i udklipsholderen.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Mere end en referance blev fundet i udklipsholderen\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Titel:" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Forfattere" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Journal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "År" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "Issue" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Sider" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Måned" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Note" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Nøgle" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Redaktør" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Udgiver" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Serie" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Adresse" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Udgave" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Bogtitel" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organisation" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "Udgivet hvordan" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Skole" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Institution" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Kapitel" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Type" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artikel" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Bog" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "I referat" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Diverse" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Ikke udgivet" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Master afhandling" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "PhD afhandling" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "Referater" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Konference" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "I Bog" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Brochure" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "I Samling" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manual" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Teknisk Rapport" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "Downloadede Dokumenter" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Henter infor for filen '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" " \n" "%1\n" "%2\n" "%3\n" "%4" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "Parser Biblioteks XML" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Åbner %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "Dokument placering er tvetydig" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" "Filen '%1' eksistere to forskellige steder:\n" "\tOriginal: %2\n" "\tNy: %3\n" "\n" "Vil du beholde den orginaleplacering eller opdatere den til den nye?" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "Udfør valg til alle tvetydige placeringer" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Behold _Orginalen" #: ../src/Library.C:274 msgid "Use _New" msgstr "Brug Den _Nye" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' er ikke en gyldig boolsk værdi" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "DOI Link" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "arXiv Link" #: ../src/Linker.C:118 msgid "URL Link" msgstr "URL Link" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "PubMed Link" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "Google Scholar" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Afsluter pga. en uventet handling" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Aktiveret" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Modul" #: ../src/Preferences.C:189 msgid "Description" msgstr "Beskrivelse" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Undtagelse" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Forklaring" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Tags" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "_Bibliotek" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Åben" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Gem _som..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "_Eksporter af BibTex" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Administre BibTex Fil..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "Importér" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "_Arbejd frakoblet" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Redigér" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Vis" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importer referencer fra BibTex i udklipsholderen" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Kopier LaTex citering" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "Kopier de markerede nøgler til udklipsholderen som Latex citering" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Brug _Liste oversigt" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Brug _Ikon oversigt" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Vis Tag Vindue" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "_Tags" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Lav Tag..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Tilknyt Nyt Tag..." #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Slet Tag" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Omdøb Tag" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Dokumenter" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Tilføj File..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Tilføj _mappe" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Tilføj Tom Referance..." #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Tilføj Refere_nce med ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Fjern" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Hent Metadata" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Slet Fil fra Drev" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "_Omdøb File fra Nøgle" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Værktøjer" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Hjælp" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introduktion" #: ../src/RefWindow.C:640 msgid "All" msgstr "Alt" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Uden Tags" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 dokumenter (%2 markeret)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 dokumenter" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Gem ændringer til biblioteket før afslutning?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Luk _uden at gemme" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Indtast et tag" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Opret tag" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "Kort memorable tag navne hjælper til at organisere dine dokumenter" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Navn" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Er du sikker du ønsker at slette \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Når et tag slettes bliver det også permanent fjernet fra alle de dokumenter " "det er associeret med." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Eksporter BibTex" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "BibTex Filer" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Alle Filer" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Markering:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Alle dokumenter" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Markeret Dokument" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Beskyt kapitalisering (Omring værdier med {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Brug Unicode (UTF-8) enkodning" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Unavngivet Bibliotek" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Gennemse..." #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Administre BibTex Fil" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Hvis du vælger en fil her, så vil den blive overskrevet hver gang " "biblioteket gemmes." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "BibTex Fil:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Gennemse" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Åben Bibliotek" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "Referencer Biblioteker" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Gem Bibliotek Som" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Andreas Dalsgaard https://launchpad.net/~andreas-dalsgaard" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Visning %1" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Anullere" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "_Opret Tag..." #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Tilføj Dokument Filer" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Tilføjer dokument filer" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" "Denne proces kan tage nogle minutter mens de bibliografisk informationer for " "hvert dokument hentes" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Dokument" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Har tekst" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Har ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Har metadata" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Resultat" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Tilknyt tags..." #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 af %2 dokumenter" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Annulleret" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Fuldført" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Tilføj reference med ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Tilføj Dokument" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Tilføj mappe" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Er du sikker på du vil fjerne disse %1 dokumenter?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Alle tags tilknytninger og metadata for disse dokumenter vil blive slettet " "permanent." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Er du sikker på du vil fjerne '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Alle tags tilknytninger og metadata for dette dokument vil blive slettet " "permanent." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Henter metadata" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Ønsker du virkelig at omdøbe denne fil til '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Ønsker du virkelig at disse filer skal navngives efter deres nøgler?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Denne handling kan ikke fortrydes." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Omdøb udfra nøglen" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Er du sikker på du vil slette filerne fra disse %1 dokumenter?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" "Alle tags tilknytninger og metadata for disse dokumenter vil blive slettet " "permanent og de filer de henviser til vil blive uafhjælpeligt slettet." #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Er du sikker på du vil slette filen med '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" "Alle tags tilknytninger og metadata for dette dokument vil blive permanent " "slettet og filen som den henviser til vil blive hjælpeløst slettet." #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Sletter '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Prøver at åbne filen '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Arbejder offline" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Arbejder online" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importer Referencer" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Bibliografi Filer" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Format:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Importer %1 BibTex referencer" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Arbejde offline?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" "Der opstod et problem ved modtagelse af metadata, vil du arbejde offline? " "Hvis du vælger at arbejde offline, vil efterfølgende netværks operationer " "ikke blive udført før du vælger at arbejde online igen i Præference dialog " "vinduet." #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Forbliv Online" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Gå Offline" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Henter %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Åbner URI '%1' på server" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Læser URI '%1' fra server" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Lukker URI '%1' fra server" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" "%1: %2\n" "\n" "%3" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "Den operation der var underudførelse var: \"%1\"" referencer-1.2.1/po/sr.po0000664000175000017500000005043212042412720012156 00000000000000# Serbian translation for referencer # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-02-07 22:25+0000\n" "Last-Translator: Vladimir Lazic \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Документ" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Д_одатна поља" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Подаци" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Додај поље" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Покушавам да добавим податке о овом документу са интернета" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Очисти податке" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Обриши ово поље" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Својства документа" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Датотека:" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "Kopiraj податке из BibTeX у клипборд" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Преименуј ово поље" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Изаберите датотеку" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Тастер:" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Пронађи" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "_Убаци BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Прокси" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "" #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Домаћин:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "" #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "" #: ../src/Library.C:274 msgid "Use _New" msgstr "" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "" #: ../src/Preferences.C:189 msgid "Description" msgstr "" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "" #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "" #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "" #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "" #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "" #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "" #: ../src/RefWindow.C:396 msgid "_View" msgstr "" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "" #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "" #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "" #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "" #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "" #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "" #: ../src/RefWindow.C:640 msgid "All" msgstr "" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "" #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Vladimir Lazic https://launchpad.net/~vlazic" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "" #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "" #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "" #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/po/pt_BR.po0000664000175000017500000006046612042412720012550 00000000000000# Brazilian Portuguese translation for referencer # Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 # This file is distributed under the same license as the referencer package. # FIRST AUTHOR , 2007. # msgid "" msgstr "" "Project-Id-Version: referencer\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-09-18 16:29+0100\n" "PO-Revision-Date: 2008-05-27 20:17+0000\n" "Last-Translator: Darlan Cavalcante \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-10-13 14:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #~ msgid " " #~ msgstr " " #: ../data/documentproperties.glade.h:1 msgid "Document" msgstr "Documento" #: ../data/documentproperties.glade.h:2 msgid "E_xtra Fields" msgstr "Campos _Adicionais" #: ../data/documentproperties.glade.h:3 msgid "Metadata" msgstr "Metadados" #: ../data/documentproperties.glade.h:4 msgid "Add a field" msgstr "Adicionar um Campo" #: ../data/documentproperties.glade.h:5 msgid "Attempt to look up metadata for this document online" msgstr "Tentar obter os metadados deste documento de uma fonte online" #: ../data/documentproperties.glade.h:6 msgid "Clear metadata" msgstr "Limpar metadados" #: ../data/documentproperties.glade.h:7 msgid "Delete this field" msgstr "Apagar este Campo" #: ../data/documentproperties.glade.h:8 msgid "Document Properties" msgstr "Propriedades do Documento" #: ../data/documentproperties.glade.h:9 msgid "File:" msgstr "Arquivo" #: ../data/documentproperties.glade.h:10 msgid "Fill out metadata from BibTeX on clipboard" msgstr "" "Preencher metadador a partir de BibTex copiado na área de transferência" #: ../data/documentproperties.glade.h:11 msgid "Rename this field" msgstr "Renomear este campo" #: ../data/documentproperties.glade.h:12 msgid "Select A File" msgstr "Selecione um Arquivo" #: ../data/documentproperties.glade.h:13 msgid "_Key:" msgstr "_Chave" #: ../data/documentproperties.glade.h:14 msgid "_Look Up" msgstr "_Consultar" #: ../data/documentproperties.glade.h:15 ../src/RefWindow.C:404 msgid "_Paste BibTeX" msgstr "Colar BibTeX" #: ../data/preferences.glade.h:1 msgid "Proxy" msgstr "Proxy" #: ../data/preferences.glade.h:2 msgid "" "Plugins nearer the top of the list are tried first when looking up " "metadata." msgstr "" #: ../data/preferences.glade.h:3 msgid "" "These proxy settings apply desktop-wide\n" "to all Gnome applications. Auto-configuration\n" " URLs are not supported." msgstr "" "Estas configurações de proxy se aplicam a todas as aplicações do Gnome. \n" "URL de configuração automática não são suportadas" #: ../data/preferences.glade.h:6 msgid "C_onfigure..." msgstr "C_onfigurar..." #: ../data/preferences.glade.h:7 msgid "Host:" msgstr "Nome de máquina:" #: ../data/preferences.glade.h:8 msgid "Move _down" msgstr "Mover para _baixo" #: ../data/preferences.glade.h:9 msgid "Move _up" msgstr "Mover para _cima" #: ../data/preferences.glade.h:10 msgid "Network" msgstr "Rede" #: ../data/preferences.glade.h:11 msgid "Password:" msgstr "Senha:" #: ../data/preferences.glade.h:12 msgid "Plugins" msgstr "Plugins" #: ../data/preferences.glade.h:13 msgid "Port:" msgstr "Porta:" #: ../data/preferences.glade.h:14 msgid "Preferences" msgstr "Preferências" #: ../data/preferences.glade.h:15 msgid "Use authentication" msgstr "Usar autenticação" #: ../data/preferences.glade.h:16 msgid "Use web proxy" msgstr "Usar um proxy Web" #: ../data/preferences.glade.h:17 msgid "Username:" msgstr "Nome de usuário:" #: ../data/preferences.glade.h:18 msgid "_About..." msgstr "_Sobre..." #: ../plugins/pubmed.py:16 msgid "PubMed DOI resolver" msgstr "" #: ../plugins/pubmed.py:35 msgid "Resolving DOI" msgstr "" #: ../plugins/pubmed.py:35 #, python-format msgid "Finding PubMed ID from DOI %s" msgstr "" #: ../plugins/pubmed.py:63 msgid "Resolving PubMed ID" msgstr "" #: ../plugins/pubmed.py:63 #, python-format msgid "Fetching metadata from NCBI for PubMed ID %s" msgstr "Baixando metadados de NCBI para PubMed ID %s" #: ../plugins/lyx.py:11 ../plugins/lyx.py:41 msgid "Cite in LyX" msgstr "Citar no LyX" #: ../plugins/lyx.py:42 msgid "Cite the selected documents in LyX" msgstr "Citar os documentos selecionados no LyX" #: ../src/ArxivPlugin.C:48 msgid "Retrieving metadata" msgstr "" #: ../src/ArxivPlugin.C:50 msgid "Contacting citebase.org to retrieve metadata for '%1'" msgstr "Contactando citebase.org para adquirir metadados para '%1'" #: ../src/ArxivPlugin.C:58 ../src/CrossRefPlugin.C:241 msgid "Downloading Metadata" msgstr "Baixando Metadados" #: ../src/ArxivPlugin.C:62 ../src/CrossRefPlugin.C:216 #: ../src/PluginManager.C:44 msgid "Downloading metadata" msgstr "Baixando Metadados" #: ../src/ArxivPlugin.C:100 ../src/Document.C:772 msgid "Parsing BibTeX" msgstr "Lendo BibTeX" #: ../src/ArxivPlugin.C:116 msgid "Arxiv.org ArXiv-ID resolver" msgstr "" #: ../src/CrossRefPlugin.C:180 msgid "CrossRef credentials not found" msgstr "Credenciais para CrossRef não encontradas" #: ../src/CrossRefPlugin.C:181 msgid "" "To use the CrossRef service, a free account is needed. Login information " "may be set in Preferences, or the CrossRef plugin may be disabled." msgstr "" #: ../src/CrossRefPlugin.C:190 msgid "_Preferences" msgstr "_Preferências" #: ../src/CrossRefPlugin.C:191 msgid "_Disable CrossRef" msgstr "_Desabilitar CrossRef" #: ../src/CrossRefPlugin.C:218 msgid "Contacting crossref.org to retrieve metadata for '%1'" msgstr "Contactando crossref.org para adquirir metadados for '%1'" #: ../src/CrossRefPlugin.C:277 msgid "Crossref.org OpenURL DOI resolver" msgstr "" #: ../src/Document.C:38 msgid "Unnamed" msgstr "Sem nome" #: ../src/Document.C:93 msgid "Key naming conflict" msgstr "" #: ../src/Document.C:95 msgid "" "The chosen key conflicts with an existing one. Replace '%1' with '%2'?" msgstr "" #: ../src/Document.C:102 msgid "_Ignore" msgstr "" #: ../src/Document.C:106 msgid "_Replace" msgstr "" #: ../src/Document.C:602 msgid "Moving '%1' to '%2'" msgstr "Movendo '%1' para '%2'" #: ../src/DocumentList.C:191 msgid "Opening file '%1'" msgstr "Abrindo arquivo '%1'" #: ../src/DocumentList.C:210 msgid "Reading file '%1'" msgstr "Lendo arquivo '%1'" #: ../src/DocumentList.C:231 msgid "converting file %1 to utf8 from (guessed) latin1" msgstr "convertendo arquivo %1 para utf8 de (suposto) latin1" #: ../src/DocumentList.C:265 msgid "Parsing import" msgstr "" #: ../src/DocumentList.C:278 msgid "Extracting document %1 from bibutils structure" msgstr "" #: ../src/DocumentProperties.C:200 msgid "_Type:" msgstr "_Tipo:" #: ../src/DocumentProperties.C:420 ../src/RefWindow.C:2690 msgid "No references found on clipboard.\n" msgstr "Não foram encontradas referências na área de transferência.\n" #: ../src/DocumentProperties.C:424 msgid "Multiple references found on clipboard.\n" msgstr "Múltiplas referências encontradas na área de transferência.\n" #: ../src/DocumentTypes.C:31 ../src/DocumentView.C:1491 msgid "Title" msgstr "Título" #: ../src/DocumentTypes.C:32 msgid "Authors" msgstr "Autores" #: ../src/DocumentTypes.C:33 msgid "Journal" msgstr "Jornal" #: ../src/DocumentTypes.C:34 ../src/DocumentView.C:1493 msgid "Year" msgstr "Ano" #: ../src/DocumentTypes.C:36 msgid "Volume" msgstr "Volume" #: ../src/DocumentTypes.C:37 msgid "Issue" msgstr "" #: ../src/DocumentTypes.C:38 msgid "Pages" msgstr "Páginas" #: ../src/DocumentTypes.C:39 msgid "Month" msgstr "Mês" #: ../src/DocumentTypes.C:40 msgid "Note" msgstr "Nota" #: ../src/DocumentTypes.C:41 ../src/DocumentView.C:1490 msgid "Key" msgstr "Chave" #: ../src/DocumentTypes.C:43 msgid "Editor" msgstr "Editor" #: ../src/DocumentTypes.C:44 msgid "Publisher" msgstr "Editora" #: ../src/DocumentTypes.C:45 msgid "Series" msgstr "Série" #: ../src/DocumentTypes.C:46 msgid "Address" msgstr "Endereço" #: ../src/DocumentTypes.C:47 msgid "Edition" msgstr "Edição" #: ../src/DocumentTypes.C:49 msgid "Book title" msgstr "Título do livro" #: ../src/DocumentTypes.C:50 msgid "Organisation" msgstr "Organização" #: ../src/DocumentTypes.C:52 msgid "How published" msgstr "" #: ../src/DocumentTypes.C:54 msgid "School" msgstr "Escola" #: ../src/DocumentTypes.C:55 msgid "Institution" msgstr "Instituição" #: ../src/DocumentTypes.C:56 msgid "Chapter" msgstr "Capítulo" #: ../src/DocumentTypes.C:57 msgid "Type" msgstr "Tipo" #: ../src/DocumentTypes.C:58 msgid "DOI" msgstr "" #: ../src/DocumentTypes.C:61 msgid "Article" msgstr "Artigo" #: ../src/DocumentTypes.C:78 msgid "Book" msgstr "Livro" #: ../src/DocumentTypes.C:97 msgid "In Proceedings" msgstr "" #: ../src/DocumentTypes.C:115 msgid "Misc" msgstr "Miscelânea" #: ../src/DocumentTypes.C:126 msgid "Unpublished" msgstr "Não publicado" #: ../src/DocumentTypes.C:136 msgid "Master's thesis" msgstr "Tese de Mestrado" #: ../src/DocumentTypes.C:148 msgid "PhD thesis" msgstr "Tese de Doutorado" #: ../src/DocumentTypes.C:160 msgid "Proceedings" msgstr "" #: ../src/DocumentTypes.C:173 msgid "Conference" msgstr "Conferência" #: ../src/DocumentTypes.C:185 msgid "In Book" msgstr "Em Livro" #: ../src/DocumentTypes.C:203 msgid "Booklet" msgstr "Livreto" #: ../src/DocumentTypes.C:215 msgid "In Collection" msgstr "" #: ../src/DocumentTypes.C:231 msgid "Manual" msgstr "Manual" #: ../src/DocumentTypes.C:244 msgid "Technical Report" msgstr "Relatório Técnico" #: ../src/DocumentView.C:622 msgid "Downloaded Documents" msgstr "" #: ../src/DocumentView.C:647 msgid "Getting info for file '%1'" msgstr "Obtendo informação para o arquivo '%1'" #. Translators: this is the format for the document captions #: ../src/DocumentView.C:1046 msgid "" " \n" "%1\n" "%2\n" "%3\n" "%4" msgstr "" #. Translation note: this completes the sentence started by #. * the "Arrange Items" string, which is the parent menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate this #. * as just "%1" #: ../src/DocumentView.C:1407 msgid "By %1" msgstr "" #: ../src/DocumentView.C:1492 msgid "Author" msgstr "" #: ../src/Library.C:92 msgid "Parsing Library XML" msgstr "" #: ../src/Library.C:164 msgid "Opening %1" msgstr "Abrindo %1" #: ../src/Library.C:251 msgid "Document location ambiguity" msgstr "" #: ../src/Library.C:253 msgid "" "The file '%1' exists in two locations:\n" "\tOriginal: %2\n" "\tNew: %3\n" "\n" "Do you want to keep the original location, or update it to the new one?" msgstr "" #: ../src/Library.C:269 msgid "Apply choice to all ambiguous locations" msgstr "" #: ../src/Library.C:273 msgid "Keep _Original" msgstr "Manter _Original" #: ../src/Library.C:274 msgid "Use _New" msgstr "Usar _Novo" #: ../src/LibraryParser.h:89 #, c-format msgid "'%s' is not a valid boolean value" msgstr "'%s' não é um valor booleano válido" #: ../src/Linker.C:78 msgid "DOI Link" msgstr "Link DOI" #: ../src/Linker.C:99 msgid "arXiv Link" msgstr "Link arXiv" #: ../src/Linker.C:118 msgid "URL Link" msgstr "" #: ../src/Linker.C:138 msgid "PubMed Link" msgstr "Link PubMed" #: ../src/Linker.C:182 msgid "Google Scholar" msgstr "" #: ../src/main.C:92 msgid "Terminating due to unhandled exception" msgstr "Terminando devido a exceção não capturada" #: ../src/Preferences.C:183 msgid "Enabled" msgstr "Habilitado" #: ../src/Preferences.C:187 ../src/PythonPlugin.C:317 #: ../src/PythonPlugin.C:357 msgid "Module" msgstr "Módulo" #: ../src/Preferences.C:189 msgid "Description" msgstr "Descrição" #: ../src/Preferences.C:533 msgid "Plugin error" msgstr "Erro de plugin" #: ../src/PythonPlugin.C:314 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6\n" msgstr "" #: ../src/PythonPlugin.C:315 ../src/PythonPlugin.C:355 ../src/Utility.C:260 msgid "Exception" msgstr "Exceção" #: ../src/PythonPlugin.C:319 ../src/PythonPlugin.C:359 msgid "Explanation" msgstr "Explicação" #: ../src/PythonPlugin.C:354 msgid "" "%1: %2\n" "\n" "%3: %4\n" "%5: %6" msgstr "" #: ../src/RefWindow.C:256 msgid "Tags" msgstr "Tags" #: ../src/RefWindow.C:364 msgid "_Library" msgstr "" #: ../src/RefWindow.C:369 ../src/RefWindow.C:457 msgid "_Open..." msgstr "_Abrir..." #: ../src/RefWindow.C:375 msgid "Save _As..." msgstr "Salvar _Como..." #: ../src/RefWindow.C:378 msgid "E_xport as BibTeX..." msgstr "E_xportar como BibTeX..." #: ../src/RefWindow.C:381 msgid "_Manage BibTeX File..." msgstr "_Gerenciar Arquivo BibTeX..." #: ../src/RefWindow.C:384 msgid "_Library Folder..." msgstr "" #: ../src/RefWindow.C:387 msgid "_Import..." msgstr "_Importar..." #: ../src/RefWindow.C:390 msgid "_Work Offline" msgstr "T_rabalhar Offline" #: ../src/RefWindow.C:394 msgid "_Edit" msgstr "_Editar" #: ../src/RefWindow.C:396 msgid "_View" msgstr "_Ver" #. Translation note: this begins the sentence completed by #. * the "By %1" string, which is the child menu #. * item. If this does not make sense in your locale, translate #. * "Arrange Items" as something like "Sort" and translate "By %1" #. * as just "%1" #: ../src/RefWindow.C:402 msgid "Arran_ge Items" msgstr "" #: ../src/RefWindow.C:405 msgid "Import references from BibTeX on the clipboard" msgstr "Importar referências do BibTeX na área de trabalho" #: ../src/RefWindow.C:408 msgid "_Copy LaTeX citation" msgstr "_Copiar citação do LaTeX" #: ../src/RefWindow.C:409 msgid "Copy currently selected keys to the clipboard as a LaTeX citation" msgstr "" "Copiar chaves selecionadas para a área de transferência como uma citação do " "LaTeX" #: ../src/RefWindow.C:417 msgid "Use _List View" msgstr "Usar Visualizacão em _Lista" #: ../src/RefWindow.C:419 msgid "Use _Icon View" msgstr "Usar Visualizacão em _Ícones" #: ../src/RefWindow.C:421 msgid "_Show Tag Pane" msgstr "_Mostrar Painel de Tags" #: ../src/RefWindow.C:423 msgid "Show _Notes Pane" msgstr "Mostrar Painel de _Notas" #: ../src/RefWindow.C:425 ../src/RefWindow.C:463 msgid "_Tags" msgstr "" #: ../src/RefWindow.C:427 msgid "_Create Tag..." msgstr "_Criar Tag..." #: ../src/RefWindow.C:430 msgid "_Attach New Tag..." msgstr "_Adicionar Nova Tag..." #: ../src/RefWindow.C:433 msgid "_Delete Tag" msgstr "_Deletar Tag" #: ../src/RefWindow.C:436 msgid "_Rename Tag" msgstr "_Renomear Tag" #: ../src/RefWindow.C:439 msgid "_Documents" msgstr "_Documentos" #: ../src/RefWindow.C:441 msgid "_Add File..." msgstr "_Adicionar Arquivo..." #: ../src/RefWindow.C:444 msgid "Add _Folder..." msgstr "Adicionar _Pasta..." #: ../src/RefWindow.C:447 msgid "Add E_mpty Reference..." msgstr "Adicionar Referência _Vazia" #: ../src/RefWindow.C:450 msgid "Add Refere_nce with ID..." msgstr "Adicionar Referência com ID..." #: ../src/RefWindow.C:453 msgid "_Remove" msgstr "_Remover" #: ../src/RefWindow.C:467 msgid "_Get Metadata" msgstr "_Pegar Metadados" #: ../src/RefWindow.C:470 msgid "_Delete File from Drive" msgstr "_Deletar Arquivo do Disco" #: ../src/RefWindow.C:474 msgid "R_ename File from Key" msgstr "" #: ../src/RefWindow.C:477 msgid "_Tools" msgstr "_Ferramentas" #: ../src/RefWindow.C:479 msgid "Export Notes as HTML" msgstr "Exportar Notas como HTML" #: ../src/RefWindow.C:482 msgid "_Help" msgstr "_Ajuda" #: ../src/RefWindow.C:484 msgid "Introduction" msgstr "Introdução" #: ../src/RefWindow.C:640 msgid "All" msgstr "Tudo" #: ../src/RefWindow.C:645 msgid "Untagged" msgstr "Sem Tags" #: ../src/RefWindow.C:911 msgid "%1 documents (%2 selected)" msgstr "%1 documentos (%2 selecionados)" #: ../src/RefWindow.C:915 msgid "%1 documents" msgstr "%1 documentos" #: ../src/RefWindow.C:952 msgid "_Notes: %1" msgstr "_Notas: %1" #: ../src/RefWindow.C:955 msgid "Multiple documents selected" msgstr "Múltiplos documentos selecionados" #: ../src/RefWindow.C:957 msgid "Select a document to view and edit notes" msgstr "Selecione um documento para ver e editar notas" #: ../src/RefWindow.C:1019 msgid "Save changes to library before closing?" msgstr "Salvar mudanças para a biblioteca antes de fechar?" #: ../src/RefWindow.C:1025 msgid "Close _without Saving" msgstr "Fechar _sem Salvar" #: ../src/RefWindow.C:1061 msgid "Type a tag" msgstr "Digite uma tag" #: ../src/RefWindow.C:1065 msgid "Create tag" msgstr "Criar tag" #: ../src/RefWindow.C:1066 msgid "Short memorable tag names help you organise your documents" msgstr "" "Tags com nomes curtos e memoráveis ajudam você a organizar seus documentos" #: ../src/RefWindow.C:1077 msgid "Name" msgstr "Nome" #: ../src/RefWindow.C:1151 msgid "Are you sure you want to delete \"%1\"?" msgstr "Você tem certeza que quer deletar \"%1\"?" #: ../src/RefWindow.C:1158 msgid "" "When a tag is deleted it is also permanently removed from all documents it " "is currently associated with." msgstr "" "Quando uma tag é deletada ela também é permanentemente removida de todos os " "documentos com os quais ela está associada." #: ../src/RefWindow.C:1211 msgid "Export BibTeX" msgstr "Exportar BibTeX" #: ../src/RefWindow.C:1220 ../src/RefWindow.C:1403 ../src/RefWindow.C:2581 msgid "BibTeX Files" msgstr "Arquivos BibTeX" #: ../src/RefWindow.C:1225 ../src/RefWindow.C:1306 ../src/RefWindow.C:1408 #: ../src/RefWindow.C:1576 ../src/RefWindow.C:1642 ../src/RefWindow.C:2568 msgid "All Files" msgstr "Todos os Arquivos" #: ../src/RefWindow.C:1236 ../src/RefWindow.C:1317 msgid "Selection:" msgstr "Seleção:" #: ../src/RefWindow.C:1239 ../src/RefWindow.C:1320 msgid "All Documents" msgstr "Todos os Documentos" #: ../src/RefWindow.C:1240 ../src/RefWindow.C:1321 msgid "Selected Documents" msgstr "Documentos Selecionados" #. Any options here should be replicated in onManageBibtex #. Any options here should be replicated in onExportBibtex #: ../src/RefWindow.C:1246 ../src/RefWindow.C:1496 msgid "Protect capitalization (surround values with {})" msgstr "Proteger capitalização (cercar valores com {})" #: ../src/RefWindow.C:1248 ../src/RefWindow.C:1499 msgid "Use Unicode (UTF-8) encoding" msgstr "Usar codificação Unicode (UTF-8)" #: ../src/RefWindow.C:1292 msgid "Export Notes" msgstr "Exportar Notas" #: ../src/RefWindow.C:1301 msgid "HTML Files" msgstr "Arquivos HTML" #: ../src/RefWindow.C:1364 ../src/RefWindow.C:2519 msgid "Unnamed Library" msgstr "Biblioteca Sem Nome" #: ../src/RefWindow.C:1396 msgid "Browse" msgstr "Navegar" #: ../src/RefWindow.C:1436 ../src/RefWindow.C:1451 msgid "Manage BibTeX File" msgstr "Gerenciar Arquivo BibTeX" #: ../src/RefWindow.C:1452 msgid "" "If you choose a file here, it will be overwritten whenever this library is " "saved." msgstr "" "Se você escolher um arquivo aqui, ele será sobrescrito sempre que esta " "biblioteca for salva." #: ../src/RefWindow.C:1459 msgid "BibTeX file:" msgstr "Arquivo BibTeX:" #: ../src/RefWindow.C:1480 msgid "_Browse..." msgstr "_Navegar..." #: ../src/RefWindow.C:1554 msgid "Open Library" msgstr "Abrir Biblioteca" #: ../src/RefWindow.C:1571 ../src/RefWindow.C:1637 msgid "Referencer Libraries" msgstr "" #: ../src/RefWindow.C:1628 msgid "Save Library As" msgstr "Salvar Biblioteca Como" #. Translators: your name here! #: ../src/RefWindow.C:1689 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Darlan Cavalcante https://launchpad.net/~darcamo\n" " Rodrigo Virote Kassick https://launchpad.net/~kassick" #: ../src/RefWindow.C:1709 msgid "Showing '%1'" msgstr "Mostrando '%1'" #: ../src/RefWindow.C:1718 msgid "Cancelling" msgstr "Cancelando" #. Show a dialog containing a treeview of checkboxes for #. * tags, and a button for creating tags #: ../src/RefWindow.C:1763 msgid "Tag Added Files" msgstr "" #. "Create tag" button #: ../src/RefWindow.C:1801 msgid "C_reate Tag..." msgstr "C_riar Tag..." #: ../src/RefWindow.C:1864 msgid "Add Document Files" msgstr "Adicionar Arquivos de Documentos" #: ../src/RefWindow.C:1871 msgid "Adding document files" msgstr "Adicionando arquivos de documentos" #: ../src/RefWindow.C:1872 msgid "" "This process may take some time as the bibliographic information for each " "document is looked up." msgstr "" #: ../src/RefWindow.C:1897 msgid "Document" msgstr "Documento" #: ../src/RefWindow.C:1898 msgid "Got text" msgstr "Obteve texto" #: ../src/RefWindow.C:1899 msgid "Got ID" msgstr "Obteve ID" #: ../src/RefWindow.C:1900 msgid "Got metadata" msgstr "Obteve metadados" #: ../src/RefWindow.C:1901 msgid "Outcome" msgstr "Resultado" #: ../src/RefWindow.C:1916 msgid "_Attach tags..." msgstr "_Adicionar tags..." #: ../src/RefWindow.C:1944 msgid "%1 of %2 documents" msgstr "%1 de %2 documentos" #: ../src/RefWindow.C:2033 ../src/RefWindow.C:2035 msgid "Cancelled" msgstr "Cancelado" #: ../src/RefWindow.C:2039 msgid "Finished" msgstr "Concluído" #: ../src/RefWindow.C:2080 msgid "Add Reference with ID" msgstr "Adicionar Referência com ID" #: ../src/RefWindow.C:2150 msgid "Add Document" msgstr "Adicionar Documento" #: ../src/RefWindow.C:2181 msgid "Add Folder" msgstr "Adicionar pasta" #: ../src/RefWindow.C:2218 msgid "Are you sure you want to remove these %1 documents?" msgstr "Você tem certeza que quer remover estes %1 documentos?" #: ../src/RefWindow.C:2220 msgid "" "All tag associations and metadata for these documents will be permanently " "lost." msgstr "" "Todas as tags e metadados para estes documentos serão permanentemente " "perdidos." #: ../src/RefWindow.C:2223 msgid "Are you sure you want to remove '%1'?" msgstr "Você tem certeza que quer remover '%1'?" #: ../src/RefWindow.C:2225 msgid "" "All tag associations and metadata for the document will be permanently lost." msgstr "" "Todas as tags e metadados para o documento serão permanentemente perdidos." #: ../src/RefWindow.C:2255 msgid "Fetching metadata" msgstr "Obtendo metadados" #: ../src/RefWindow.C:2285 msgid "Really rename this file to '%1'?" msgstr "Realmente renomear este arquivo para '%1'?" #: ../src/RefWindow.C:2288 msgid "Really rename these %1 files to their keys?" msgstr "Realmente renomear estes %1 arquivos de acordo com suas chaves?" #: ../src/RefWindow.C:2296 msgid "This action cannot be undone." msgstr "Esta ação não pode ser desfeita." #: ../src/RefWindow.C:2299 msgid "Rename from Key" msgstr "Renomear a partir da chave" #: ../src/RefWindow.C:2330 msgid "Are you sure you want to delete the files of these %1 documents?" msgstr "Você tem certeza que quer deletar os arquivos destes %1 documentos?" #: ../src/RefWindow.C:2332 msgid "" "All tag associations and metadata for these documents will be permanently " "lost, and the files they refer to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2338 msgid "Are you sure you want to delete the file of '%1'?" msgstr "Você tem certeza que quer deletar o arquivo de '%1'?" #: ../src/RefWindow.C:2340 msgid "" "All tag associations and metadata for the document will be permanently lost, " "and the file it refers to will be irretrievably deleted." msgstr "" #: ../src/RefWindow.C:2368 msgid "Deleting '%1'" msgstr "Deletando '%1'" #: ../src/RefWindow.C:2390 msgid "Trying to open file '%1'" msgstr "Tentando abrir arquivo '%1'" #: ../src/RefWindow.C:2483 msgid "Working offline" msgstr "Trabalhando offline" #: ../src/RefWindow.C:2484 msgid "Working online" msgstr "Trabalhando online" #: ../src/RefWindow.C:2553 msgid "Import References" msgstr "Importar Referências" #: ../src/RefWindow.C:2576 msgid "Bibliography Files" msgstr "Arquivos de Bibliografia" #: ../src/RefWindow.C:2587 msgid "Format:" msgstr "Formato:" #: ../src/RefWindow.C:2684 msgid "Imported %1 BibTeX references" msgstr "Importadas %1 referências do BibTeX" #: ../src/Transfer.C:47 msgid "Work offline?" msgstr "Trabalhar offline?" #: ../src/Transfer.C:48 msgid "" "There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again in the " "Preferences dialog." msgstr "" #: ../src/Transfer.C:59 msgid "_Stay Online" msgstr "_Ficar Online" #: ../src/Transfer.C:61 msgid "_Go Offline" msgstr "_Ficar Offline" #: ../src/Transfer.C:101 msgid "Downloading %1" msgstr "Baixando %1" #: ../src/Transfer.C:286 msgid "Opening URI '%1' on server" msgstr "Abrindo URI '%1' no servidor" #: ../src/Transfer.C:311 msgid "Reading URI '%1' on server" msgstr "Lendo URI '%1' no servidor" #: ../src/Transfer.C:330 msgid "Closing URI '%1' on server" msgstr "Fechando URI '%1' no servidor" #: ../src/Utility.C:259 msgid "" "%1: %2\n" "\n" "%3" msgstr "" #: ../src/Utility.C:263 msgid "The operation underway was: \"%1\"" msgstr "" referencer-1.2.1/depcomp0000755000175000017500000004755612042420505012144 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2011-12-04.11; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/ \1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/ / G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: referencer-1.2.1/referencer.spec.in0000664000175000017500000000323012042412720014147 00000000000000Summary: Referencer Name: referencer Version: @VERSION@ Release: 1%{?dist} Source0: %{name}-%{version}.tar.gz License: GPL Group: Applications/Office BuildRoot: %{_builddir}/%{name} # no debug package %define debug_package %{nil} Requires: gtkmm24 Requires: libgnomeuimm26 Requires: gnome-vfsmm26 Requires: poppler Requires: libgnomemm26 Requires: libgnomeuimm26 Requires: gconfmm26 Requires: libglademm24 %description A document organiser and bibliography manager for GNOME. Referencer is a GNOME application to organise documents or references, and ultimately generate a BibTeX bibliography file. Referencer includes a number of features to make this process easier: * Automatic metadata retrieval If you show Referencer a PDF which has either a DOI code (found in most recently published papers) or ArXiV ID, Referencer will retrieve the metadata for this document over the internet. * Smart web links Referencer uses documents' ID codes to provide handy links to the document's web location — no need to maintain your own bookmarks. * Import from BibTeX, Reference Manager and EndNote No need to start from scratch — Referencer will import your existing bibliography files using the BibUtils library. * Tagging No need to organise your documents into rigid directory trees — with Referencer you can use tags to categorise your documents. %prep %setup -q %build %configure --disable-update-mime-database make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %install make DESTDIR=$RPM_BUILD_ROOT install %clean rm -rf $RPM_BUILD_ROOT %post update-mime-database %{_datadir}/mime %files %defattr(-,root,root) %doc COPYING AUTHORS README NEWS TODO %{_prefix} referencer-1.2.1/src/0000775000175000017500000000000012150643002011416 500000000000000referencer-1.2.1/src/DocumentList.h0000664000175000017500000000305612042420323014124 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef DOCUMENTLIST_H #define DOCUMENTLIST_H #include #include #include #include #include "BibUtils.h" #include "Document.h" class DocumentList { public: typedef std::list Container; private: Container docs_; public: Container& getDocs (); int size () {return docs_.size();} Document* newDocWithFile (Glib::ustring const &filename); Document* newDocWithName (Glib::ustring const &key); Document* newDocUnnamed (); Document* insertDoc (Document const &doc); bool docExists ( Glib::ustring const &name, Document const *exclusion); Glib::ustring uniqueKey ( Glib::ustring const &basename); Glib::ustring uniqueKey ( Glib::ustring const &basename, Document const *exclusion); Glib::ustring sanitizedKey ( Glib::ustring const &key); void removeDoc (Document* const addr); void loadDoc ( Glib::ustring const &filename, Glib::ustring const &relfilename, Glib::ustring const ¬es, Glib::ustring const &key, std::vector const &taguids, BibData const &bib); void print (); void clearTag (int uid); void writeXML (xmlTextWriterPtr writer); void clear () {docs_.clear ();} int importFromFile (Glib::ustring const &filename, BibUtils::Format format); int import (Glib::ustring const &rawtext, BibUtils::Format format); Document parseBibUtils (BibUtils::fields *ref); }; #endif referencer-1.2.1/src/TagList.h0000664000175000017500000000231012045166665013074 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef TAGLIST_H #define TAGLIST_H #include #include #include #include class Tag { public: Tag(int uid, const std::string& name); Tag() { } public: int uid_; std::string name_; }; class TagList { public: typedef std::map TagMap; TagList() { uidCounter_ = 0; } void print(); TagMap& getTags(); int newTag(const std::string& name); void loadTag(const std::string& name, int uid); void renameTag(int uid, const std::string& newname); void deleteTag(int uid); std::string getName(int uid); /** * Dumps this tag list's data into an XML document. * @param writer the XML writer, which actually does all the XML writing and * formatting. */ void writeXML(xmlTextWriterPtr writer); void clear() { tags_.clear(); uidCounter_ = 0; } bool tagExists(const std::string& name); int getTagUid(const std::string& name); private: TagMap tags_; int uidCounter_; }; #endif referencer-1.2.1/src/CrossRefPlugin.C0000664000175000017500000001771312043154543014370 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include "ucompose.hpp" #include "Document.h" #include "Preferences.h" #include "Transfer.h" #include "Utility.h" #include "config.h" #include "CrossRefPlugin.h" class CrossRefParser : public Glib::Markup::Parser { BibData &bib_; Glib::ustring text_; Glib::ustring given_name_; std::vector authors_; public: CrossRefParser (BibData &bib) : bib_(bib) { } private: virtual void on_start_element ( Glib::Markup::ParseContext& context, const Glib::ustring& element_name, const Glib::Markup::Parser::AttributeMap& attributes) { text_ = ""; // Should use a more reliable check than this if (element_name == "html" || element_name == "HTML") { DEBUG ("html tag found, throwing error"); Glib::MarkupError error ( Glib::MarkupError::INVALID_CONTENT, "Looks like a HTML document, not an XML document"); throw error; } if (element_name == "query") { Glib::ustring statusString; Glib::Markup::Parser::AttributeMap::const_iterator found = attributes.find ("status"); if (found != attributes.end()) statusString = found->second; if (statusString == "unresolved") { DEBUG ("CrossRefParser: query failed, throwing error"); Glib::MarkupError error ( Glib::MarkupError::INVALID_CONTENT, "Looks like a HTML document, not an XML document"); throw error; } } if (element_name == "doi") { Glib::ustring typeString; Glib::Markup::Parser::AttributeMap::const_iterator found = attributes.find ("type"); if (found != attributes.end()) typeString = found->second; if (typeString == "conference_paper") { bib_.setType("InProceedings"); } else { bib_.setType("Article"); } } } virtual void on_end_element ( Glib::Markup::ParseContext& context, const Glib::ustring& element) { if (Glib::str_has_prefix (text_, "")) { text_ = text_.substr (strlen ("")); } if (element == "doi") { bib_.setDoi (text_); } else if (element == "article_title") { bib_.setTitle (text_); /* FIXME: assuming given_name precedes surname */ } else if (element == "given_name") { given_name_ = text_; } else if (element == "surname") { if (!given_name_.empty()) { text_ = text_ + ", " + given_name_; given_name_ = ""; } authors_.push_back (text_); } else if (element == "journal_title") { bib_.setJournal (text_); } else if (element == "volume") { bib_.setVolume (text_); } else if (element == "issue") { bib_.setIssue (text_); } else if (element == "first_page") { bib_.setPages (text_); } else if (element == "year") { bib_.setYear (text_); } else if (element == "volume_title") { bib_.addExtra ("BookTitle", text_); } else if (element == "body") { /* End of entry */ Glib::ustring authorString; std::vector::iterator it = authors_.begin (); for (; it != authors_.end(); ++it) { if (it != authors_.begin()) { authorString += " and "; } authorString += *it; } if (!authorString.empty()) bib_.setAuthors (authorString); } } // Called on error, including one thrown by an overridden virtual method. virtual void on_error ( Glib::Markup::ParseContext& context, const Glib::MarkupError& error) { DEBUG ("CrossRefParser: Parse Error!"); } virtual void on_text ( Glib::Markup::ParseContext& context, const Glib::ustring& text) { text_ += text; } }; CrossRefPlugin::CrossRefPlugin () { loaded_ = true; cap_.add(PluginCapability::DOI); xml_ = Gtk::Builder::create_from_file (Utility::findDataFile ("crossref.ui")); xml_->get_widget ("Crossref", dialog_); xml_->get_widget ("Username", usernameEntry_); xml_->get_widget ("Password", passwordEntry_); usernameEntry_->signal_changed().connect ( sigc::mem_fun (*this, &CrossRefPlugin::onPrefsChanged)); passwordEntry_->signal_changed().connect ( sigc::mem_fun (*this, &CrossRefPlugin::onPrefsChanged)); } int CrossRefPlugin::canResolve (Document &doc) { if (doc.hasField("doi")) return 10; /* Return low priority */ return -1; } bool CrossRefPlugin::resolve (Document &doc) { /* * Prompt for username and password if needed */ if (_global_prefs->getCrossRefUsername ().empty ()) { Glib::ustring message = String::ucompose ( "%1\n\n%2\n", _("CrossRef credentials not found"), _("To use the CrossRef service, a free account is needed. " "Login information may be set in Preferences, or the CrossRef plugin " "may be disabled.") ); Gtk::MessageDialog dialog(message, true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE, true); dialog.add_button (Gtk::Stock::CANCEL, 0); dialog.add_button (_("_Preferences"), 1); dialog.add_button (_("_Disable CrossRef"), 2); do { int response = dialog.run (); if (response == 1) { // Preferences doConfigure (); if (!_global_prefs->getCrossRefUsername ().empty ()) break; // if they didn't give us one then we loop around // else we go ahead } else if (response == 2) { // Disable _global_prefs->disablePlugin (this); return false; } else { // Cancel return false; } } while (1); } Glib::ustring messagetext = String::ucompose ( "%1\n\n%2\n", _("Downloading metadata"), String::ucompose ( _("Contacting crossref.org to retrieve metadata for '%1'"), doc.getField("doi")) ); Glib::ustring const username = _global_prefs->getCrossRefUsername (); Glib::ustring const password = _global_prefs->getCrossRefPassword (); Glib::ustring const url = Glib::ustring("http://www.crossref.org/openurl/?pid=") + username + (password.empty() ? "" : ":") + password + Glib::ustring("&id=doi:") + Glib::uri_escape_string(doc.getField("doi")) + Glib::ustring ("&noredirect=true"); DEBUG ("CrossRefPlugin::resolve: using url '%1'", url); // FIXME: even if we don't get any metadata, // an exceptionless download+parse is considered // a success. // Nobody notices as long as crossref is the last resort bool success = true; try { Glib::ustring &xml = Transfer::readRemoteFile ( _("Downloading Metadata"), messagetext, url); DEBUG (xml); // XXX // Test for "Missing WWW-Authenticate header" for bad username/password // Test for "No DOI found" for bad DOI CrossRefParser parser (doc.getBibData()); Glib::Markup::ParseContext context (parser); try { context.parse (xml); context.end_parse (); } catch (Glib::MarkupError const ex) { DEBUG ("Markuperror while parsing:\n'''%1\n'''", xml); //Utility::exceptionDialog (&ex, _("Parsing CrossRef XML. The DOI could be invalid, or not known to crossref.org")); success = false; } } catch (Transfer::Exception ex) { //Utility::exceptionDialog (&ex, _("Downloading metadata")); success = false; } DEBUG ("resolve returning %1", success); return success; } Glib::ustring const CrossRefPlugin::getShortName () { return Glib::ustring ("crossref"); } Glib::ustring const CrossRefPlugin::getLongName () { return Glib::ustring (_("Crossref.org OpenURL DOI resolver")); } Glib::ustring const CrossRefPlugin::getAuthor () { return Glib::ustring ("John Spray"); } Glib::ustring const CrossRefPlugin::getVersion () { return Glib::ustring (VERSION); } void CrossRefPlugin::onPrefsChanged () { if (ignoreChanges_) return; _global_prefs->setCrossRefUsername (usernameEntry_->get_text ()); _global_prefs->setCrossRefPassword (passwordEntry_->get_text ()); } void CrossRefPlugin::doConfigure () { ignoreChanges_ = true; usernameEntry_->set_text (_global_prefs->getCrossRefUsername ()); passwordEntry_->set_text (_global_prefs->getCrossRefPassword ()); ignoreChanges_ = false; dialog_->run (); dialog_->hide (); } referencer-1.2.1/src/icon-entry.h0000664000175000017500000001015112042412720013575 00000000000000// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _LIBSEXYMM_ICON_ENTRY_H #define _LIBSEXYMM_ICON_ENTRY_H #include /** * @file libsexymm/icon-entry.h Icon entry widget * * @Copyright (C) 2004-2005 Christian Hammond. * * 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 #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _SexyIconEntry SexyIconEntry; typedef struct _SexyIconEntryClass SexyIconEntryClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Sexy { class IconEntry_Class; } // namespace Sexy namespace Sexy { /** @addtogroup libsexymmEnums Enums and Flags */ /** * @ingroup libsexymmEnums */ enum IconEntryPosition { ICON_ENTRY_PRIMARY, ICON_ENTRY_SECONDARY }; } // namespace Sexy #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Sexy { class IconEntry : public Gtk::Entry { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef IconEntry CppObjectType; typedef IconEntry_Class CppClassType; typedef SexyIconEntry BaseObjectType; typedef SexyIconEntryClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ virtual ~IconEntry(); #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class IconEntry_Class; static CppClassType iconentry_class_; // noncopyable IconEntry(const IconEntry&); IconEntry& operator=(const IconEntry&); protected: explicit IconEntry(const Glib::ConstructParams& construct_params); explicit IconEntry(SexyIconEntry* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GtkObject. SexyIconEntry* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GtkObject. const SexyIconEntry* gobj() const { return reinterpret_cast(gobject_); } public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: virtual void on_icon_pressed(IconEntryPosition icon_pos, int button); virtual void on_icon_released(IconEntryPosition icon_pos, int button); private: public: IconEntry(); void set_icon(IconEntryPosition icon_pos, Gtk::Image* icon); void set_icon(IconEntryPosition icon_pos, Gtk::Image& icon); const Gtk::Image* get_icon(IconEntryPosition icon_pos) const; void set_icon_highlight(IconEntryPosition icon_pos, bool highlight); bool get_icon_highlight(IconEntryPosition icon_pos); void add_clear_button(); Glib::SignalProxy2< void,IconEntryPosition,int > signal_icon_pressed(); Glib::SignalProxy2< void,IconEntryPosition,int > signal_icon_released(); }; } /* namespace Sexy */ // vim: syntax=cpp namespace Glib { /** @relates Sexy::IconEntry * @param object The C instance * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. */ Sexy::IconEntry* wrap(SexyIconEntry* object, bool take_copy = false); } #endif /* _LIBSEXYMM_ICON_ENTRY_H */ referencer-1.2.1/src/ustring.cc0000664000175000017500000000747112150640617013362 00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Copyright (C) 2005-2006 Dodji Seketeli * 2007 Marko Anastasov * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include // for g++ 4.3 #include #include "ustring.h" namespace Glib { namespace Util { using std::vector; vector split(const Glib::ustring& str, const Glib::ustring& delim) { vector result; if (str.size () == Glib::ustring::size_type(0)) { return result; } int len = str.size () + 1; gchar* buf = (gchar*) g_malloc (len); memset (buf, 0, len); memcpy (buf, str.c_str (), str.size ()); gchar** splited = g_strsplit (buf, delim.c_str (), -1); try { for (gchar **cur = splited ; cur && *cur; ++cur) { result.push_back (Glib::ustring (*cur)); } } catch (...) {} if (splited) { g_strfreev (splited); } g_free (buf); return result; } vector split(const Glib::ustring& str) { vector res; int bytes = str.bytes (); g_return_val_if_fail (bytes != Glib::ustring::size_type (0), res); g_return_val_if_fail (str.validate (), res); Glib::ustring tmp(str); trim (tmp); Glib::ustring::size_type chars = tmp.size (); g_return_val_if_fail (chars != Glib::ustring::size_type (0), res); Glib::ustring::size_type i, tail; i = 0; tail = 1; while (tail <= chars) { gunichar ch = tmp[tail]; if ((g_unichar_isspace (ch) == TRUE) || (tail == chars)) { int chars_to_skip = 1; int pos; bool in_ws = true; while (in_ws) { pos = tail + chars_to_skip; ch = tmp[pos]; (g_unichar_isspace (ch)) ? ++chars_to_skip : in_ws = false; } if (tail == chars) ++tail; res.push_back (tmp.substr (i, tail - i)); i = tail + chars_to_skip; tail += chars_to_skip + 1; } ++tail; } return res; } void trim_left(Glib::ustring& str) { if (str.empty ()) return; Glib::ustring::iterator it(str.begin()); Glib::ustring::iterator end(str.end()); for ( ; it != end; ++it) if (! isspace(*it)) break; if (it == str.end()) str.clear(); else str.erase(str.begin(), it); } void trim_right(Glib::ustring& str) { if (str.empty ()) return; Glib::ustring::iterator end(str.end()); Glib::ustring::iterator it(--(str.end())); for ( ; ; --it) { if (! isspace(*it)) { Glib::ustring::iterator it_adv(it); str.erase(++it_adv, str.end()); break; } if (it == str.begin()) { str.clear(); break; } } } void trim(Glib::ustring& str) { trim_left(str); trim_right(str); } Glib::ustring uprintf(const Glib::ustring& format, ...) { va_list args; va_start(args, format); gchar* cstr = g_strdup_vprintf(format.c_str(), args); Glib::ustring str(cstr); g_free(cstr); return str; } } // namespace Util } // namespace Glib referencer-1.2.1/src/Plugin.h0000664000175000017500000001112612043655704012763 00000000000000 #ifndef PLUGIN_H #define PLUGIN_H #include "Document.h" #include #include #include class PluginCapability { public: /* * There are if()elseif() blocks on these * in various places, beware when adding a * new one */ typedef enum { NONE = 0, DOI = 1 << 0, ARXIV = 1 << 1, PUBMED = 1 << 2, DOCUMENT_ACTION = 1 << 3, URL = 1 << 4, SEARCH = 1 << 5, RESOLVE_METADATA = 1 << 6, /* generic metadata resolution capability */ /* XXX: In time DOI, ARXIV and PUBMED should go away, in place of RESOLVE_METADATA */ } Identifier; void add (Identifier const id) { mask_ |= id; } bool has (Identifier const id) const { return mask_ & id; } bool hasAny (PluginCapability const cap) const { return mask_ & cap.mask_; } bool empty () const { return mask_ == NONE; } PluginCapability () { mask_ = NONE; } std::vector get () { std::vector ids; for (uint64_t i = 1; i <= mask_; i *= 2) { if (mask_ & i) { ids.push_back ((Identifier)i); } } return ids; } uint64_t mask_; static Glib::ustring getFriendlyName (Identifier const id) { switch (id) { case DOCUMENT_ACTION: return "Document action"; case DOI: return "DOI"; case ARXIV: return "arXiv e-print"; case PUBMED: return "PubMed ID"; case URL: return "Web URL"; case SEARCH: return "Search"; case RESOLVE_METADATA: return "Resolve metadata"; case NONE: default: return "Invalid PluginCapability for display"; } } static Glib::ustring getFieldName (Identifier const id) { switch (id) { case DOI: return "doi"; case ARXIV: return "eprint"; case PUBMED: return "pmid"; case URL: return "url"; case NONE: case SEARCH: case DOCUMENT_ACTION: case RESOLVE_METADATA: default: return ""; } } /** * Returns a list of capability IDs suitable for display in * a list of document ID types */ static std::vector getMetadataCapabilities () { std::vector retval; retval.push_back (DOI); retval.push_back (PUBMED); retval.push_back (ARXIV); retval.push_back (URL); retval.push_back (RESOLVE_METADATA); return retval; } bool hasMetadataCapability () { return has (DOI) || has (ARXIV) || has (PUBMED) || has (URL) || has(RESOLVE_METADATA); } }; /* * Base class for metadata fetching plugins */ class Plugin { public: typedef std::map SearchResult; typedef std::vector< SearchResult > SearchResults; Plugin () {enabled_ = false; loaded_ = false;} virtual ~Plugin () {}; virtual void load (std::string const &moduleName) {}; /* Lookup metadata, and add to document. Return true on success */ virtual bool resolve (Document &doc) = 0; /* Return a priority for how well this plugin can handle this document. * Should not incur any network traffic. * Return: -1 if unable, or a positive integer if an attempt can be made. * (Suggested: integer from 1-100, depending on how well it might go.) */ virtual int canResolve (Document &doc) { return 1; }; virtual Glib::ustring const getShortName () = 0; virtual Glib::ustring const getLongName () = 0; virtual Glib::ustring const getAuthor () = 0; virtual Glib::ustring const getVersion () = 0; virtual Glib::ustring const getUI () {return Glib::ustring();} typedef std::vector > ActionList; virtual ActionList getActions () { return ActionList (); }; virtual bool doAction (Glib::ustring const action, std::vector) {return false;} virtual bool updateSensitivity (Glib::ustring const action, std::vector) {return true;} /* Configuration hook */ virtual bool canConfigure () {return false;} virtual void doConfigure () {}; /* Error reporting */ virtual bool hasError () {return false;} virtual Glib::ustring getError () {return "";} bool isEnabled () {return enabled_;} bool isLoaded () {return loaded_;} virtual void setEnabled (bool const enable) { if (loaded_) enabled_ = enable; else enabled_ = false; } /* TODO mchro: eliminate PluginCapability, or make more generic */ PluginCapability cap_; /* Searching */ virtual bool canSearch () {return false;} virtual SearchResults doSearch (Glib::ustring const &searchTerms) {return SearchResults();} virtual Document getSearchResult (Glib::ustring const &token) {throw std::logic_error("Unimplemented");}; protected: bool loaded_; bool enabled_; }; #endif referencer-1.2.1/src/DocumentView.C0000664000175000017500000013243612150640754014077 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include #include #include #include "Document.h" #include "DocumentList.h" #include "icon-entry.h" #include "Library.h" #include "Linker.h" #include "Preferences.h" #include "RefWindow.h" #include "Transfer.h" #include "ucompose.hpp" #include "Utility.h" #include "TagList.h" #include "EntryMultiCompletion.h" #include "ustring.h" #include "DocumentView.h" #undef USE_TRACKER #ifdef USE_TRACKER #include "tracker.h" #endif static const Glib::ustring defaultSortColumn = "title"; class DocumentCellRenderer : public Gtk::CellRendererPixbuf { private: Glib::Property< void* > property_document_; static int const buttonHeight = 20; static int const buttonWidth = 20; static int const buttonPad = 2; static int const maxHeight = 128 + buttonHeight / 2; Glib::RefPtr tagIcon_; Glib::RefPtr propertiesIcon_; Glib::RefPtr expanderIcon_; DocumentView *docview_; /* * Colorise function ripped from GTK+, * Copyright (C) 2000 Red Hat, Inc., Jonathan Blandford */ static Glib::RefPtr colorizePixbuf (Glib::RefPtr pixbuf, Gdk::Color color) { gint i, j; gint width, height, has_alpha, src_row_stride, dst_row_stride; gint red_value, green_value, blue_value; guchar *target_pixels; guchar *original_pixels; guchar *pixsrc; guchar *pixdest; Glib::RefPtr dest = pixbuf->copy(); red_value = color.get_red() / 255.0; green_value = color.get_green() / 255.0; blue_value = color.get_blue() / 255.0; has_alpha = pixbuf->get_has_alpha (); width = pixbuf->get_width (); height = pixbuf->get_height (); src_row_stride = pixbuf->get_rowstride (); dst_row_stride = dest->get_rowstride (); target_pixels = dest->get_pixels (); original_pixels = pixbuf->get_pixels (); for (i = 0; i < height; i++) { pixdest = target_pixels + i*dst_row_stride; pixsrc = original_pixels + i*src_row_stride; for (j = 0; j < width; j++) { *pixdest++ = (*pixsrc++ * red_value) >> 8; *pixdest++ = (*pixsrc++ * green_value) >> 8; *pixdest++ = (*pixsrc++ * blue_value) >> 8; if (has_alpha) { *pixdest++ = *pixsrc++; } } } return dest; } public: DocumentCellRenderer(DocumentView *docview) : Glib::ObjectBase(typeid(DocumentCellRenderer)), Gtk::CellRendererPixbuf(), property_document_ (*this, "document"), docview_(docview) { property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE; property_xpad() = 0; property_ypad() = 0; } Glib::PropertyProxy< void* > property_document() {return property_document_.get_proxy();} protected: virtual void get_size_vfunc ( Gtk::Widget& widget, Gdk::Rectangle const * cell_area, int* x_offset, int* y_offset, int* width, int* height) const { Document *doc = (Document *) property_document_.get_value (); Glib::RefPtr thumb = doc->getThumbnail (); gint pixbuf_width = thumb->get_width (); gint pixbuf_height = thumb->get_height (); gint calc_width; gint calc_height; calc_width = pixbuf_width; calc_height = pixbuf_height; if (x_offset) { *x_offset = 0; } if (y_offset) { *y_offset = 0; } if (width) *width = calc_width; if (height) { if (calc_height < maxHeight) *height = calc_height + buttonHeight / 2; else *height = maxHeight; } } virtual void render_vfunc( Glib::RefPtr const & window, Gtk::Widget& widget, Gdk::Rectangle const & background_area, Gdk::Rectangle const & cell_area, Gdk::Rectangle const & expose_area, Gtk::CellRendererState flags) { Document *doc = (Document *) property_document_.get_value (); Glib::RefPtr thumb = doc->getThumbnail (); Glib::RefPtr gc = Gdk::GC::create (window); if (flags & (Gtk::CELL_RENDERER_SELECTED|Gtk::CELL_RENDERER_PRELIT) != 0) { Gtk::StateType state; if ((flags & Gtk::CELL_RENDERER_SELECTED) != 0) { if (widget.has_focus()) state = Gtk::STATE_SELECTED; else state = Gtk::STATE_ACTIVE; } else { state = Gtk::STATE_PRELIGHT; } Gdk::Color color = widget.get_style()->get_base (state); thumb = colorizePixbuf (thumb, color); } window->draw_pixbuf ( gc, thumb, 0, 0, cell_area.get_x(), cell_area.get_y(), thumb->get_width(), thumb->get_height (), Gdk::RGB_DITHER_NONE, 0, 0); if (doc == docview_->hoverdoc_) { flags |= Gtk::CELL_RENDERER_PRELIT; } Glib::RefPtr window_casted = Glib::RefPtr::cast_dynamic<>(window); Gtk::StateType state = Gtk::STATE_NORMAL; Gtk::ShadowType shadow = Gtk::SHADOW_OUT; if (flags & Gtk::CELL_RENDERER_PRELIT) { int buttonY = thumb->get_height () - buttonHeight / 2; int iconHeight = buttonHeight - buttonPad * 2; int iconWidth = buttonWidth - buttonPad * 2; for (int i = 0; i < 3; ++i) { /* Draw the button frame */ widget.get_style()->paint_box ( window_casted, state, shadow, cell_area, widget, "cellcheck", cell_area.get_x() + i * (buttonWidth + buttonPad * 2) + buttonPad, cell_area.get_y() + buttonY, buttonWidth, buttonHeight); Glib::RefPtr icon; if (i == 0) { if (!tagIcon_) { Glib::ustring tagIconFile = Utility::findDataFile ("tag.svg"); tagIcon_ = Gdk::Pixbuf::create_from_file (tagIconFile); tagIcon_ = tagIcon_->scale_simple ( iconWidth, iconHeight, Gdk::INTERP_HYPER); } icon = tagIcon_; } else if (i == 1) { if (!propertiesIcon_) { propertiesIcon_ = widget.render_icon (Gtk::Stock::PROPERTIES, Gtk::ICON_SIZE_MENU); /* propertiesIcon_ = Utility::getThemeIcon ("gtk-properties");*/ propertiesIcon_ = propertiesIcon_->scale_simple ( iconWidth, iconHeight, Gdk::INTERP_HYPER); } icon = propertiesIcon_; } else if (i == 2) { widget.get_style()->paint_expander (window_casted, state, cell_area, widget, "expander", cell_area.get_x() + i * (buttonWidth + buttonPad * 2) + buttonPad * 2 + iconWidth / 2, cell_area.get_y() + buttonY + buttonPad + iconHeight / 2, Gtk::EXPANDER_COLLAPSED); } if (icon) { window->draw_pixbuf ( gc, icon, 0, 0, cell_area.get_x() + i * (buttonWidth + buttonPad * 2) + buttonPad * 2, cell_area.get_y() + buttonY + buttonPad, buttonWidth - buttonPad * 2, buttonHeight - buttonPad * 2, Gdk::RGB_DITHER_NONE, 0, 0); } } } } virtual bool activate_vfunc ( GdkEvent* event, Gtk::Widget& widget, const Glib::ustring& path, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, Gtk::CellRendererState flags) { GdkEventButton *evButton = (GdkEventButton*)event; Document *doc = (Document *) property_document_.get_value (); if (!evButton) { DEBUG ("NULL event"); /* GtkIconView passes a null event when invoking us a result of * a keypress - pass this up to the "double click" handler */ docview_->docActivate (doc); return true; } else { GdkEventType type = event->type; } Glib::RefPtr thumb = doc->getThumbnail (); int x = evButton->x - cell_area.get_x(); int y = evButton->y - cell_area.get_y(); if (y > thumb->get_height() - buttonHeight / 2) { if (x - buttonPad < buttonWidth) { docview_->select (doc); docview_->doEditTagsDialog(doc); /* docview_->select (doc); Gtk::MenuItem *item = (Gtk::MenuItem*)docview_->win_.uimanager_->get_widget("/DocPopup/TaggerMenu"); Gtk::Menu *popup = item->get_submenu (); popup->popup (evButton->button, evButton->time);*/ return true; } else if ( x - buttonPad > buttonWidth + buttonPad * 2 && x - buttonPad < buttonWidth * 2 + buttonPad * 2) { docview_->win_.openProperties (doc); return true; } else if ( x - buttonPad > 2 * (buttonWidth + buttonPad * 2) && x - buttonPad < 2 * (buttonWidth + buttonPad * 2) + buttonWidth) { docview_->popupContextMenu ((GdkEventButton*)event); return true; } else { return false; } } } }; void DocumentView::doEditTagsDialog(Document *doc) { Gtk::Dialog dialog (_("Edit tags"), *(win_.window_), true, false); /* XXX, do more clever handling of tag separation. maybe copy+modify EntryMultiCompletion class */ Gtk::VBox *vbox = dialog.get_vbox (); Gtk::HBox hbox; hbox.set_spacing (12); vbox->pack_start (hbox, true, true, 0); Gtk::Label label (_("Tags:"), false); hbox.pack_start (label, false, false, 0); std::list items; Glib::ustring str_current_tags; TagList* taglist = lib_.getTagList(); TagList::TagMap allTags = taglist->getTags(); TagList::TagMap::iterator tagIter = allTags.begin(); TagList::TagMap::iterator const tagEnd = allTags.end(); for (; tagIter != tagEnd; ++tagIter) { items.push_back(tagIter->second.name_ + ","); if (doc->hasTag(tagIter->second.uid_)) { str_current_tags += tagIter->second.name_ + ", "; } /*Gtk::ListStore::iterator row = model_->append(); (*row)[nameColumn_] = tagIter->second.name_; (*row)[uidColumn_] = tagIter->second.uid_; (*row)[selectedColumn_] = selections_[tagIter->second.uid_];*/ } Glib::RefPtr completion = EntryMultiCompletion::create(items); Gtk::Entry entry; entry.set_text(str_current_tags); entry.set_completion(completion); entry.set_activates_default (true); entry.set_size_request(400, -1); hbox.pack_start (entry, true, true, 0); dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); dialog.set_default_response (Gtk::RESPONSE_ACCEPT); dialog.show_all (); vbox->set_border_width (12); if (dialog.run () == Gtk::RESPONSE_ACCEPT) { /* mangle tags back to tag uid's*/ doc->clearTags(); std::vector new_tags = Glib::Util::split(entry.get_text(), ","); std::vector::iterator new_tagIter = new_tags.begin(); std::vector::iterator const new_tagEnd = new_tags.end(); for (; new_tagIter != new_tagEnd; ++new_tagIter) { Glib::Util::trim(*new_tagIter); if (*new_tagIter != "") { int taguid = taglist->getTagUid(*new_tagIter); if (taguid > 0) { doc->setTag(taguid); } else { /* XXX: Tag not found. Ask user to add? */ } } } } } DocumentView::~DocumentView () { } /* [bert] This is a special little comparison function for titles. The * idea is to remove leading articles ("a", "an", or "the") from the * title before performing the comparison. This is relatively easy in * English, but might be harder (or inappropriate) in other languages. */ int DocumentView::sortTitles ( const Gtk::TreeModel::iterator& a, const Gtk::TreeModel::iterator& b) { // This callback should return // * -1 if a compares before b // * 0 if they compare equal // * 1 if a compares after b Gtk::TreeModelColumn col; /* It really seems like there should be an easier way to get at the * data to be sorted on. */ col = columns_.find("title")->second.modelColumn; Glib::ustring a_title = Utility::removeLeadingArticle((*a)[col]); Glib::ustring b_title = Utility::removeLeadingArticle((*b)[col]); return a_title.compare(b_title); } DocumentView::DocumentView ( RefWindow &refwin, Library &lib, bool const uselistview) : win_ (refwin), lib_(lib) { hoverdoc_ = NULL; ignoreSelectionChanged_ = false; /* * Pack a vbox inside a frame inside ourself */ Gtk::VBox *vbox = Gtk::manage(new Gtk::VBox); Gtk::Frame *iconsframe = new Gtk::Frame (); iconsframe->add (*vbox); pack_start (*iconsframe, true, true, 0); /* * Model common to icon and list views */ Gtk::TreeModel::ColumnRecord doccols; doccols.add(docpointercol_); doccols.add(doccaptioncol_); doccols.add(docthumbnailcol_); #if GTK_VERSION_GE(2,12) doccols.add(doctooltipcol_); #endif doccols.add(dockeycol_); doccols.add(doctitlecol_); doccols.add(docauthorscol_); doccols.add(docyearcol_); doccols.add (docvisiblecol_); docstore_ = Gtk::ListStore::create(doccols); docstorefilter_ = Gtk::TreeModelFilter::create (docstore_); docstorefilter_->set_visible_column (docvisiblecol_); docstoresort_ = Gtk::TreeModelSort::create (docstorefilter_); docstoresort_->signal_sort_column_changed ().connect( sigc::mem_fun (*this, &DocumentView::onSortColumnChanged)); /* * Icon View */ Gtk::IconView *icons = Gtk::manage(new Gtk::IconView(docstoresort_)); //icons->set_markup_column (doccaptioncol_); //icons->set_pixbuf_column (docthumbnailcol_); GtkCellLayout* cell_layout = GTK_CELL_LAYOUT(icons->gobj()); /* FIXME: these cellrenderers never get freed */ DocumentCellRenderer *doccell = new DocumentCellRenderer (this); gtk_cell_layout_pack_start (cell_layout, GTK_CELL_RENDERER(doccell->gobj()), false); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icons->gobj()), GTK_CELL_RENDERER(doccell->gobj()), "document", 0, NULL); Gtk::CellRendererText *textcell = new Gtk::CellRendererText (); textcell->property_width_chars() = 32; //textcell->property_wrap_width() = 32; /* FIXME: guesstimate of which version. It's something >=2.10 */ #if GTK_VERSION_GE(2,12) textcell->property_wrap_mode() = Pango::WRAP_WORD_CHAR; #endif gtk_cell_layout_pack_start (cell_layout, GTK_CELL_RENDERER (textcell->gobj()), true); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icons->gobj()), GTK_CELL_RENDERER (textcell->gobj()), "markup", 1, NULL); icons->add_events (Gdk::ALL_EVENTS_MASK); #if GTK_VERSION_GE(2,12) // Nasty, gtkmm doesn't have a binding for passing the column object icons->set_tooltip_column (3); #endif icons->signal_item_activated().connect ( sigc::mem_fun (*this, &DocumentView::docActivated)); icons->signal_button_press_event().connect( sigc::mem_fun (*this, &DocumentView::docClicked), false); icons->signal_selection_changed().connect( sigc::mem_fun (*this, &DocumentView::docSelectionChanged)); icons->set_selection_mode (Gtk::SELECTION_MULTIPLE); icons->set_columns (-1); icons->set_orientation (Gtk::ORIENTATION_HORIZONTAL); icons->set_item_width (70); std::vector dragtypes; Gtk::TargetEntry target; target.set_info (0); target.set_target ("text/uri-list"); dragtypes.push_back (target); target.set_target ("text/x-moz-url-data"); dragtypes.push_back (target); icons->drag_dest_set ( dragtypes, Gtk::DEST_DEFAULT_ALL, Gdk::ACTION_COPY | Gdk::ACTION_MOVE | Gdk::ACTION_LINK); icons->signal_drag_data_received ().connect ( sigc::mem_fun (*this, &DocumentView::onIconsDragData)); icons->set_events (Gdk::POINTER_MOTION_MASK | Gdk::LEAVE_NOTIFY_MASK); icons->signal_motion_notify_event ().connect_notify ( sigc::mem_fun (*this, &DocumentView::onDocMouseMotion)); docsiconview_ = icons; Gtk::ScrolledWindow *iconsscroll = Gtk::manage(new Gtk::ScrolledWindow()); iconsscroll->add(*icons); iconsscroll->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); vbox->pack_start(*iconsscroll, true, true, 0); docsiconscroll_ = iconsscroll; /* * End of icon view stuff */ /* * List view stuff */ Gtk::TreeView *table = Gtk::manage (new Gtk::TreeView(docstoresort_)); table->set_enable_search (true); table->set_search_column (1); table->set_rules_hint (true); table->drag_dest_set ( dragtypes, Gtk::DEST_DEFAULT_ALL, Gdk::ACTION_COPY | Gdk::ACTION_MOVE | Gdk::ACTION_LINK); table->signal_drag_data_received ().connect ( sigc::mem_fun (*this, &DocumentView::onIconsDragData)); table->signal_row_activated ().connect ( sigc::mem_fun (*this, &DocumentView::docListActivated)); table->signal_button_press_event().connect( sigc::mem_fun (*this, &DocumentView::docClicked), false); docslistselection_ = table->get_selection (); docslistselection_->set_mode (Gtk::SELECTION_MULTIPLE); docslistselection_->signal_changed ().connect ( sigc::mem_fun (*this, &DocumentView::docSelectionChanged)); docslistview_ = table; Gtk::ScrolledWindow *tablescroll = Gtk::manage(new Gtk::ScrolledWindow()); tablescroll->add(*table); tablescroll->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); vbox->pack_start(*tablescroll, true, true, 0); docslistscroll_ = tablescroll; populateColumns (); /* * End of list view stuff */ setUseListView (uselistview); /* * Search box */ Sexy::IconEntry *searchentry = Gtk::manage (new Sexy::IconEntry ()); Gtk::Image *searchicon = Gtk::manage ( new Gtk::Image (Gtk::Stock::FIND, Gtk::ICON_SIZE_BUTTON)); searchentry->set_icon (Sexy::ICON_ENTRY_PRIMARY, searchicon); searchentry->signal_changed ().connect ( sigc::mem_fun (*this, &DocumentView::onSearchChanged)); searchentry_ = searchentry; /* * End of search box */ /* * Sorting * (This isn't done at model construction because it needs to be after populateColumns) */ /* [bert] - Insert the specialized sort function for the title */ Gtk::TreeModelColumn col = columns_.find("title")->second.modelColumn; docstoresort_->set_sort_func(col, sigc::mem_fun(*this, &DocumentView::sortTitles)); std::pair sortInfo = _global_prefs->getListSort (); std::map::iterator columnIter = columns_.find(sortInfo.first); if (columnIter != columns_.end()) { DEBUG ("Initialising sort column to %1", sortInfo.first); docstoresort_->set_sort_column ( columnIter->second.modelColumn, (Gtk::SortType)sortInfo.second); } else { DEBUG ("Initialising sort column to default, '%1'", defaultSortColumn); docstoresort_->set_sort_column ( (columns_.find(defaultSortColumn))->second.modelColumn, (Gtk::SortType)sortInfo.second); } /* * End of sorting */ } void DocumentView::setUseListView (bool const &list) { if (list != uselistview_) { uselistview_ = list; if (uselistview_) { docsiconscroll_->hide (); docslistscroll_->show (); docslistview_->grab_focus (); } else { docslistscroll_->hide (); docsiconscroll_->show (); docsiconview_->grab_focus (); } docSelectionChanged (); } } void DocumentView::onDocMouseMotion (GdkEventMotion* event) { int x = (int)event->x; int y = (int)event->y; Gtk::TreeModel::Path path = docsiconview_->get_path_at_pos (x, y); bool havepath = path.gobj() != NULL; Document *doc = NULL; if (havepath) { Gtk::ListStore::iterator it = docstoresort_->get_iter (path); doc = (*it)[docpointercol_]; } if (doc != hoverdoc_) { Document *oldHoverDoc = hoverdoc_; hoverdoc_ = doc; if (oldHoverDoc) redraw (oldHoverDoc); if (hoverdoc_) redraw (hoverdoc_); } } void DocumentView::onIconsDragData ( const Glib::RefPtr &context, int n1, int n2, const Gtk::SelectionData &sel, guint n3, guint n4) { DEBUG ("Type '" + sel.get_data_type () + "'"); std::vector files; typedef std::vector urilist; urilist uris; if (sel.get_data_type () == "text/uri-list") { uris = sel.get_uris (); } else if (sel.get_data_type () == "text/x-moz-url-data") { uris.push_back (Utility::mozUrlSelectionToUTF8(sel)); } urilist::iterator it = uris.begin (); urilist::iterator const end = uris.end (); for (; it != end; ++it) { bool is_dir = false; Glib::RefPtr uri = Gio::File::create_for_uri (*it); { // It's a local file, see if it's a directory Glib::RefPtr info; try { info = uri->query_info (); } catch (const Gio::Error ex) { Utility::exceptionDialog (&ex, String::ucompose ( _("Getting info for file '%1'"), uri->get_uri ())); return; } is_dir = info->get_file_type () == Gio::FILE_TYPE_DIRECTORY; if (is_dir) { std::vector morefiles = Utility::recurseFolder (*it); std::vector::iterator it2; for (it2 = morefiles.begin(); it2 != morefiles.end(); ++it2) { files.push_back (*it2); } } else { files.push_back (*it); } } } win_.addDocFiles (files); } std::vector DocumentView::getSelectedDocs () { std::vector docpointers; if (uselistview_) { Gtk::TreeSelection::ListHandle_Path paths = docslistselection_->get_selected_rows (); Gtk::TreeSelection::ListHandle_Path::iterator it = paths.begin (); Gtk::TreeSelection::ListHandle_Path::iterator const end = paths.end (); for (; it != end; it++) { Gtk::TreePath sortPath = (*it); Gtk::ListStore::iterator iter = docstoresort_->get_iter(sortPath); docpointers.push_back((*iter)[docpointercol_]); } } else { Gtk::IconView::ArrayHandle_TreePaths paths = docsiconview_->get_selected_items (); Gtk::IconView::ArrayHandle_TreePaths::iterator it = paths.begin (); Gtk::IconView::ArrayHandle_TreePaths::iterator const end = paths.end (); for (; it != end; it++) { Gtk::TreePath sortPath = (*it); Gtk::ListStore::iterator iter = docstoresort_->get_iter(sortPath); Document *docptr = (*iter)[docpointercol_]; if (!docptr) { /* This is really bad and we will probably crash, but * at least we will know why by looking at stdout. * Propagate the error because this should never * happen and I don't want it to go unnoticed */ DEBUG ("Unset document pointer!"); } docpointers.push_back(docptr); } } return docpointers; } Document *DocumentView::getSelectedDoc () { if (uselistview_) { Gtk::TreeSelection::ListHandle_Path paths = docslistselection_->get_selected_rows (); if (paths.size() != 1) { DEBUG ("Warning: DocumentView::getSelectedDoc: size != 1"); return NULL; } Gtk::TreePath path = (*paths.begin ()); Gtk::ListStore::iterator iter = docstoresort_->get_iter (path); return (*iter)[docpointercol_]; } else { Gtk::IconView::ArrayHandle_TreePaths paths = docsiconview_->get_selected_items (); if (paths.size() != 1) { DEBUG ("Warning: DocumentView::getSelectedDoc: size != 1"); return NULL; } Gtk::TreePath path = (*paths.begin ()); Gtk::ListStore::iterator iter = docstoresort_->get_iter (path); return (*iter)[docpointercol_]; } } int DocumentView::getSelectedDocCount () { if (uselistview_) { return docslistselection_->get_selected_rows().size (); } else { return docsiconview_->get_selected_items().size (); } } std::vector DocumentView::getVisibleDocs () { std::vector docpointers; Gtk::ListStore::iterator it = docstoresort_->children().begin(); Gtk::ListStore::iterator const end = docstoresort_->children().end(); for (; it != end; it++) { Document *docptr = (*it)[docpointercol_]; docpointers.push_back(docptr); } return docpointers; } int DocumentView::getVisibleDocCount () { return docstoresort_->children().size(); } void DocumentView::invokeLinker (Linker *linker) { std::vector docs = getSelectedDocs (); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end; it++) { if (linker->canLink (*it)) linker->doLink(*it); } } bool DocumentView::docClicked (GdkEventButton* event) { if((event->type == GDK_BUTTON_PRESS) && (event->button == 3)) { /* * Select what's under the pointer if it isn't already * selected */ if (uselistview_) { Gtk::TreeModel::Path clickedpath; Gtk::TreeViewColumn *clickedcol; int cellx; int celly; bool const gotpath = docslistview_->get_path_at_pos ( (int)event->x, (int)event->y, clickedpath, clickedcol, cellx, celly); if (gotpath && !docslistselection_->is_selected (clickedpath)) { docslistselection_->unselect_all (); docslistselection_->select (clickedpath); } } else { Gtk::TreeModel::Path clickedpath = docsiconview_->get_path_at_pos ((int)event->x, (int)event->y); if (clickedpath.gobj() != NULL && !docsiconview_->path_is_selected (clickedpath)) { docsiconview_->unselect_all (); docsiconview_->select_path (clickedpath); } } popupContextMenu (event); return true; } else if ((event->type == GDK_BUTTON_PRESS) && (event->button == 2)) { // Middle click pasting win_.onPasteBibtex (GDK_SELECTION_PRIMARY); return true; } else { return false; } } void DocumentView::popupContextMenu (GdkEventButton* event) { /* * Linkers are local to here for now, in the future they might * be plugin-extensible and thus moved elsewhere */ static std::vector linkers; static DoiLinker doi; static ArxivLinker arxiv; static UrlLinker url; static PubmedLinker pubmed; static GoogleLinker google; /* * Initialise linkers */ static Glib::RefPtr linkerIcon; if (linkers.size() == 0) { linkers.push_back(&doi); linkers.push_back(&arxiv); linkers.push_back(&url); linkers.push_back(&pubmed); linkers.push_back(&google); std::vector::iterator it = linkers.begin (); std::vector::iterator const end = linkers.end (); for (; it != end; ++it) (*it)->createUI (&win_, this); } /* * Get the popup menu widget */ Gtk::Menu *popupmenu = (Gtk::Menu*)win_.uimanager_->get_widget("/DocPopup"); /* Work out which linkers are applicable */ std::vector docs = getSelectedDocs (); std::vector::iterator it = linkers.begin(); std::vector::iterator const end = linkers.end(); for (; it != end; ++it) { Linker *linker = (*it); Glib::RefPtr action = win_.actiongroup_->get_action (Glib::ustring("linker_") + linker->getName()); bool enable = false; std::vector::iterator docIt = docs.begin (); std::vector::iterator const docEnd = docs.end (); for (; docIt != docEnd; ++docIt) { if (linker->canLink(*docIt)) enable = true; } action->set_visible(enable); } /* * Display the menu */ popupmenu->popup (event->button, event->time); } DocumentView::SubSet DocumentView::selectedDocsHaveTag (int uid) { bool alltrue = true; bool allfalse = true; std::vector docs = getSelectedDocs (); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end; it++) { if ((*it)->hasTag(uid)) { allfalse = false; } else { alltrue = false; } } if (allfalse == true) return NONE; else if (alltrue == true) return ALL; else if (alltrue == false && allfalse == false) return SOME; else return NONE; } DocumentView::Capabilities DocumentView::getDocSelectionCapabilities () { Capabilities result; std::vector docs = getSelectedDocs (); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); bool const offline = _global_prefs->getWorkOffline(); for (; it != end; it++) { // Allow web linking even when offline, since it might // just be us that's offline, not the web browser if ((*it)->canGetMetadata() && !offline) result.getmetadata = true; if (!(*it)->getFileName().empty()) result.open = true; } return result; } /* * Selection changed, not our problem, let the parent deal. */ void DocumentView::docSelectionChanged () { if (!ignoreSelectionChanged_) selectionchangedsignal_.emit (); } /** * End-point of * - double clicking in treeview * - double clicking in iconview * - activation in cellrenderer */ void DocumentView::docActivate (Document *doc) { // The methods we're calling should fail out safely and quietly // if the number of docs selected != 1 if (!doc->getFileName ().empty ()) { win_.onOpenDoc (); } else { win_.onDocProperties (); } } /* * User double clicked on a document */ void DocumentView::docActivated (const Gtk::TreeModel::Path& path) { Gtk::TreePath filterPath = docstoresort_->convert_path_to_child_path (path); Gtk::TreePath realPath = docstorefilter_->convert_path_to_child_path (filterPath); Gtk::ListStore::iterator it = docstore_->get_iter (realPath); docActivate ((*it)[docpointercol_]); } /* * Populate a row in docstore_ from a Document */ void DocumentView::loadRow ( Gtk::TreeModel::iterator item, Document * const doc) { (*item)[docpointercol_] = doc; (*item)[dockeycol_] = doc->getKey(); (*item)[docthumbnailcol_] = doc->getThumbnail(); (*item)[doctitlecol_] = doc->getBibData().getTitle (); (*item)[docauthorscol_] = doc->getBibData().getAuthors (); (*item)[docyearcol_] = doc->getBibData().getYear (); #if GTK_VERSION_GE(2,12) Glib::ustring tooltipText = String::ucompose( "%1\n", Glib::Markup::escape_text(doc->getKey())); typedef std::map StringMap; StringMap fields = doc->getFields (); StringMap::iterator fieldIter = fields.begin(); StringMap::iterator const fieldEnd = fields.end(); for (; fieldIter != fieldEnd; ++fieldIter) { tooltipText += "\n"; tooltipText += Glib::Markup::escape_text (fieldIter->first); tooltipText += ": "; tooltipText += Glib::Markup::escape_text (fieldIter->second.substr(0,64)); if (fieldIter->second.size() > 64) tooltipText += "..."; } (*item)[doctooltipcol_] = tooltipText; #endif (*item)[docvisiblecol_] = isVisible (doc); Glib::ustring title = Utility::wrap (doc->getField ("title"), 35, 1, false); Glib::ustring authors = Utility::firstAuthor(doc->getField("author")); Glib::ustring etal = ""; authors = Utility::strip (authors, "{"); authors = Utility::strip (authors, "}"); authors = Utility::wrap (authors, 33, 1, false); Glib::ustring::size_type n = doc->getField("author").find (" and"); if (n != Glib::ustring::npos) etal = " et al."; Glib::ustring key = doc->getKey(); Glib::ustring year = doc->getField("year"); Glib::ustring align = "\n"; if (year.empty() and authors.empty()) align = ""; if (year == "") authors = String::ucompose ("%1%2 ", authors, etal); else authors = String::ucompose (" %1%2 ", authors, etal); if (title.empty()) title = " "; if (authors.empty()) authors = ""; if (key.empty()) key = " "; if (year.empty()) year = ""; (*item)[doccaptioncol_] = String::ucompose ( // Translators: this is the format for the document captions _("%1\n%2\n%3%4%5"), Glib::Markup::escape_text (key), Glib::Markup::escape_text (title), Glib::Markup::escape_text (year), Glib::Markup::escape_text (authors), align); } /* * Return whether a document matches searches and tag filters */ bool DocumentView::isVisible (Document * const doc) { Glib::ustring const searchtext = searchentry_->get_text (); bool const search = !searchtext.empty (); bool visible = true; for (std::vector::iterator tagit = win_.filtertags_.begin(); tagit != win_.filtertags_.end(); ++tagit) { if (!(*tagit == ALL_TAGS_UID || (*tagit == NO_TAGS_UID && doc->getTags().empty()) || doc->hasTag(*tagit))) { // A tag is selected that we do not match visible = false; break; } } if (search && visible) { if (!doc->matchesSearch (searchtext)) visible = false; } /* * TODO iterate over taggerUris */ return visible; } /* * Update the visibility of all rows * * This needs to be called: * - when global conditions for visibility * change: when the tag filter is changed, when search text is * changed, or when tracker returns some matches * * Things like adding and updating docs don't need to call this as well * */ void DocumentView::updateVisible () { ignoreSelectionChanged_ = true; Gtk::TreeModel::iterator item = docstore_->children().begin(); Gtk::TreeModel::iterator const end = docstore_->children().end(); for (; item != end; ++item) { Document * const doc = (*item)[docpointercol_]; (*item)[docvisiblecol_] = isVisible (doc); } ignoreSelectionChanged_ = false; //Scroll to the currently selected document, if any Gtk::TreePath selpath; if (uselistview_) { Gtk::TreeSelection::ListHandle_Path paths = docslistselection_->get_selected_rows (); if (paths.size () > 0) selpath = (*paths.begin()); docslistview_->scroll_to_row (selpath); } else { Gtk::IconView::ArrayHandle_TreePaths paths = docsiconview_->get_selected_items (); if (paths.size () > 0) selpath = (*paths.begin()); docsiconview_->scroll_to_path (selpath, true, 0.5, 0.0); } docSelectionChanged (); } /* * Optimisation: O(N) * * - Refresh document's row in docstore_ from Document. * - Update visibility of document's row */ void DocumentView::updateDoc (Document * const doc) { Gtk::TreeModel::iterator item = docstore_->children().begin(); Gtk::TreeModel::iterator const end = docstore_->children().end(); for (; item != end; ++item) { if ((*item)[docpointercol_] == doc) { loadRow (item, doc); return; } } DEBUG ("DocumentView::updateDoc: Warning: doc not found"); } /* * Remove the row with docpointercol_ == doc from docstore_ */ void DocumentView::removeDoc (Document * const doc) { bool found = false; ignoreSelectionChanged_ = true; Gtk::TreeModel::iterator it = docstore_->children().begin(); Gtk::TreeModel::iterator const end = docstore_->children().end(); for (; it != end; ++it) { if ((*it)[docpointercol_] == doc) { docstore_->erase (it); found = true; break; } } ignoreSelectionChanged_ = false; docSelectionChanged (); if (!found) DEBUG ("DocumentView::removeDoc: Warning: doc not found"); } /* * Append a row to docstore_ and load data from Document */ void DocumentView::addDoc (Document * doc) { doc->setView(this); Gtk::TreeModel::iterator item = docstore_->append(); loadRow (item, doc); Gtk::TreeModel::Path path = docstoresort_->get_path ( docstoresort_->convert_child_iter_to_iter ( docstorefilter_->convert_child_iter_to_iter (item))); docslistview_->scroll_to_row (path); docslistselection_->unselect_all (); docslistselection_->select (path); docsiconview_->unselect_all (); docsiconview_->scroll_to_path (path, false, 0.0, 0.0); docsiconview_->select_path (path); } /* * Please, please populate tags etc before calling this with * a tag-related handler connected to the selectionchanged * signal */ void DocumentView::populateDocStore () { //DEBUG ("RefWindow::populateDocStore >>"); ignoreSelectionChanged_ = true; /* XXX not the only one any more! */ // This is our notification that something about the documentlist // has changed, including its length, so update dependent sensitivities: win_.actiongroup_->get_action("ExportBibtex") ->set_sensitive (lib_.getDocList()->size() > 0); // Save initial selection Gtk::TreePath initialpath; if (uselistview_) { Gtk::TreeSelection::ListHandle_Path paths = docslistselection_->get_selected_rows (); if (paths.size () > 0) initialpath = (*paths.begin()); } else { Gtk::IconView::ArrayHandle_TreePaths paths = docsiconview_->get_selected_items (); if (paths.size () > 0) initialpath = (*paths.begin()); } docstore_->clear (); // Populate from library_->doclist_ DocumentList::Container& docvec = lib_.getDocList()->getDocs(); DocumentList::Container::iterator docit = docvec.begin(); DocumentList::Container::iterator const docend = docvec.end(); for (; docit != docend; ++docit) { addDoc (&(*docit)); } // Restore initial selection if (uselistview_) { docslistselection_->select (initialpath); } else { docsiconview_->select_path (initialpath); } docsiconview_->unselect_all (); docslistselection_->unselect_all (); ignoreSelectionChanged_ = false; docSelectionChanged (); } /* * Clear out all documents */ void DocumentView::clear () { docstore_->clear (); } void end_search (GPtrArray * out_array, GError * error, gpointer user_data) { DocumentView *docview = (DocumentView*) user_data; printf (">>end_search\n"); docview->trackerUris_.clear (); if (error) { printf ("Tracker error\n"); g_error_free (error); // TODO Call the update visibility function return; } if (out_array) { printf ("%d results\n", out_array->len); for (unsigned int i = 0; i < out_array->len; ++i) { char **meta = (char**) g_ptr_array_index (out_array, i); printf ("0x%x : %s\n", meta[0], meta[0]); docview->trackerUris_.push_back (meta[0]); } g_ptr_array_free (out_array, TRUE); } /* * We're probably calling this twice: we already called it in * onSearchChanged */ docview->updateVisible (); } void DocumentView::onSearchChanged () { Gdk::Color yellowish ("#f7f7be"); Gdk::Color black ("#000000"); bool hasclearbutton = ((Sexy::IconEntry*) searchentry_)->get_icon (Sexy::ICON_ENTRY_SECONDARY); if (!searchentry_->get_text ().empty()) { /*if (entry->priv->is_a11y_theme) return;*/ searchentry_->modify_base (Gtk::STATE_NORMAL, yellowish); searchentry_->modify_text (Gtk::STATE_NORMAL, black); if (!hasclearbutton) ((Sexy::IconEntry*) searchentry_)->add_clear_button (); } else { searchentry_->unset_base (Gtk::STATE_NORMAL); searchentry_->unset_text (Gtk::STATE_NORMAL); if (hasclearbutton) ((Sexy::IconEntry*) searchentry_)->set_icon (Sexy::ICON_ENTRY_SECONDARY, NULL); } updateVisible (); /* * Get some tracker results and spit them to the console */ #ifdef USE_TRACKER TrackerClient *client = tracker_connect (0); if (!client) { printf ("Error in tracker_connect\n"); return; } Glib::ustring searchtext = searchentry_->get_text(); if (! searchtext.empty()) { tracker_search_text_detailed_async (client, -1, SERVICE_FILES, searchtext.c_str(), 0, 10, (TrackerGPtrArrayReply)end_search, this); } #endif } void DocumentView::onColumnEdited ( const Glib::ustring& pathStr, const Glib::ustring& enteredText, const Glib::ustring &columnName) { Gtk::TreePath sortPath (pathStr); Gtk::TreePath filterPath = docstoresort_->convert_path_to_child_path (sortPath); Gtk::TreePath realPath = docstorefilter_->convert_path_to_child_path (filterPath); Gtk::TreeModel::iterator iter = docstore_->get_iter (realPath); Gtk::TreeModelColumn col = columns_.find(columnName)->second.modelColumn; if ((*iter)[col] != enteredText) { Document *doc = (*iter)[docpointercol_]; Glib::ustring newText = enteredText; if (columnName.lowercase() == "key") { Glib::ustring sanitizedKey = lib_.getDocList()->sanitizedKey (newText); if (sanitizedKey != newText) newText = Document::keyReplaceDialogInvalidChars(newText, sanitizedKey); Glib::ustring unique = lib_.getDocList()->uniqueKey (newText, doc); if (unique != newText) newText = Document::keyReplaceDialogNotUnique (newText, unique); } (*iter)[col] = newText; doc->setField (columnName, newText); win_.setDirty (true); } } void DocumentView::addColumn ( Glib::ustring const &name, Glib::ustring const &caption, Gtk::TreeModelColumn &modelCol, bool const expand, bool const ellipsize) { Column column(modelCol, caption); std::pair pair (name, column); columns_.insert (pair); /* * Create treeview column */ Gtk::CellRendererText *cell; Gtk::TreeViewColumn *col; // Er, we're actually passing this as reference, is this the right way // to create it? Will the treeview actually copy it? col = Gtk::manage (new Gtk::TreeViewColumn (caption, modelCol)); col->set_resizable (true); col->set_expand (expand); col->set_sort_column (modelCol); cell = (Gtk::CellRendererText *) col->get_first_cell_renderer (); if (ellipsize) cell->property_ellipsize () = Pango::ELLIPSIZE_END; cell->property_editable () = true; cell->signal_edited ().connect ( sigc::bind ( sigc::mem_fun (*this, &DocumentView::onColumnEdited), name) ); docslistview_->append_column (*col); /* * Create gtkuimanager action */ /* Unique UI action identifier */ Glib::ustring const actionName = String::ucompose ("sort_%1", name); /* Translation note: this completes the sentence started by * the "Arrange Items" string, which is the parent menu * item. If this does not make sense in your locale, translate * "Arrange Items" as something like "Sort" and translate this * as just "%1" */ Glib::ustring const actionCaption = String::ucompose (_("By %1"), caption); SortAction action; action.name = name; action.action = Gtk::RadioAction::create (sortUIGroup_, actionName, actionCaption); action.action->signal_toggled().connect( sigc::bind( sigc::mem_fun (*this, &DocumentView::sortActionToggled), action)); /* Merge it into the UI */ Glib::ustring ui = "" "" "" "" " " " " " " "" "" "" ""; win_.actiongroup_->add(action.action); try { action.merge = win_.uimanager_->add_ui_from_string (ui); } catch (Glib::Error err) { DEBUG (ui); DEBUG ("Merge error: %1", err.what()); } sortUI_[name] = action; } void DocumentView::sortActionToggled (SortAction const &action) { if (action.action->get_active()) { docstoresort_->set_sort_column ( (columns_.find(action.name))->second.modelColumn, Gtk::SORT_ASCENDING); _global_prefs->setListSort (action.name, 0); } } void DocumentView::onSortColumnChanged () { Gtk::SortType order; int column; docstoresort_->get_sort_column_id (column, order); Glib::ustring columnName; std::map::iterator columnIter = columns_.begin(); std::map::iterator columnEnd = columns_.end(); for (; columnIter != columnEnd; ++columnIter) { if ((*columnIter).second.modelColumn.index() == column) { columnName = (*columnIter).first; } } if (!columnName.empty()) { SortActionMap::iterator action = sortUI_.find(columnName); if (action != sortUI_.end()) { DEBUG ("Activated action for column name %1", columnName); action->second.action->set_active(true); } else { DEBUG ("Failed to find UI action for column name %1", columnName); } _global_prefs->setListSort (columnName, order); } else { DEBUG ("Failed to resolve column id %1 to a name", column); } } void DocumentView::populateColumns () { addColumn ("key", _("Key"), dockeycol_, false, false); addColumn ("title", _("Title"), doctitlecol_, true, true); addColumn ("author", _("Author"), docauthorscol_, false, true); addColumn ("year", _("Year"), docyearcol_, false, false); } void DocumentView::select (Document *document) { /* Look up the path to this document */ Gtk::TreeModel::iterator docIter = docstoresort_->children().begin(); Gtk::TreeModel::iterator const docEnd = docstoresort_->children().end(); for (; docIter != docEnd; ++docIter) { if ((*docIter)[docpointercol_] == document) break; } if (docIter == docEnd) { DEBUG ("DocumentView::select: warning: document %1 not found", document); } Gtk::TreeModel::Path path = docstoresort_->get_path (docIter); /* Select the path */ if (uselistview_) { docslistselection_->unselect_all (); docslistselection_->select (path); } else { docsiconview_->unselect_all (); docsiconview_->select_path (path); } } void DocumentView::redraw (Document *document) { /* Even if we bother poking a particular document IconView * seems to redraw the whole kaboodle */ #if 0 /* Look up the path to this document */ Gtk::TreeModel::iterator docIter = docstoresort_->children().begin(); Gtk::TreeModel::iterator const docEnd = docstoresort_->children().end(); for (; docIter != docEnd; ++docIter) { if ((*docIter)[docpointercol_] == document) break; } if (docIter == docEnd) { DEBUG ("DocumentView::select: warning: document " << document << " not found"); } Gtk::TreeModel::Path path = docstoresort_->get_path (docIter); docstoresort_->row_changed (path, docIter); #else docsiconview_->get_window()->invalidate_rect (Gdk::Rectangle (0, 0, 1000, 1000),true); #endif } referencer-1.2.1/src/Progress.h0000664000175000017500000000103712042412720013315 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef PROGRESS_H #define PROGRESS_H #include class RefWindow; class Progress { public: Progress (RefWindow &tagwindow); ~Progress (); void start (Glib::ustring const &text); void update (double status); void update (); void finish (); private: void flushEvents (); bool finished_; RefWindow &win_; int msgid_; }; #endif referencer-1.2.1/src/referencer_ui.h0000664000175000017500000001047212042412720014331 00000000000000 #ifndef REFERENCER_UI_H #define REFERENCER_UI_H Glib::ustring referencer_ui = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " // " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; #endif referencer-1.2.1/src/RefWindow.h0000664000175000017500000001744612146753101013436 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef TAGWINDOW_H #define TAGWINDOW_H #include #include #include #include "Plugin.h" class Gtk::TreePath; class Glib::ustring; class Document; class DocumentList; class DocumentProperties; class DocumentView; class Library; class Progress; class TagList; #define ALL_TAGS_UID -1 #define NO_TAGS_UID -2 #define SEPARATOR_UID -3 #define DISPLAY_PROGRAM "Referencer" /** * This is a bit of a mess in terms of what's public. * The public members are generally used by things like DocumentView */ class RefWindow { public: RefWindow (); ~RefWindow (); void run (); void setStatusText (Glib::ustring const &text) {statusbar_->push (text, 0);}; Gtk::ProgressBar *getProgressBar () {return progressbar_;} Gtk::Statusbar *getStatusBar () {return statusbar_;} void setSensitive (bool const sensitive); void addDocFiles (std::vector const &filenames); Progress *getProgress () {return progress_;} /* Other main window UI */ // DocumentView needs this for its tooltip Gtk::Window *window_; // DocumentView needs this for popup menu Glib::RefPtr uimanager_; // DocumentView needs this for sensitivity Glib::RefPtr actiongroup_; // DocumentView needs this for populateDocStore std::vector filtertags_; /* DocumentView needs this for inline edits */ void setDirty (bool const &dirty); void openProperties (Document *doc); private: bool ignoreDocSelectionChanged_; void clearTagList (); void populateTagList (); void updateTagSizes (); /* Construct main window */ void constructUI (); /* Construct uimanager stuff */ void constructMenu (); /* Debugging: print UI tree and action list */ void printUI (); Library *library_; Progress *progress_; /* The status bar */ Gtk::Statusbar *statusbar_; Gtk::ProgressBar *progressbar_; Gtk::Image *offlineicon_; /* The Documents View */ DocumentView *docview_; /* Which plugin have added UI elements */ std::map pluginUI_; /* The Tags View */ Glib::ustring tagoldname_; Glib::RefPtr tagstore_; Gtk::TreeModelColumn taguidcol_; Gtk::TreeModelColumn tagnamecol_; Gtk::TreeModelColumn tagfontcol_; int sortTags ( const Gtk::TreeModel::iterator& a, const Gtk::TreeModel::iterator& b); Gtk::Widget *tagpane_; Glib::RefPtr tagselection_; Gtk::TreeView *tagview_; bool ignoreTagSelectionChanged_; /* Notes Stuff */ Gtk::VBox *notespane_; Gtk::Label *noteslabel_; Gtk::TextView *notesview_; bool notesbufferignore_; Glib::RefPtr notesbuffer_; void updateNotesPane (); void onNotesExport (); void onNotesChanged (); void onNotesClose (); void onNotesPaneResize (Gdk::Rectangle &allocation); class TagUI { public: Glib::RefPtr action; Gtk::UIManager::ui_merge_id merge; }; typedef std::map TaggerUIMap; TaggerUIMap taggerUI_; bool ignoreTaggerActionToggled_; void taggerActionToggled (Glib::RefPtr action, int taguid); void tagSelectionChanged (); void tagClicked (GdkEventButton* event); void tagNameEdited (Glib::ustring const &text1, Glib::ustring const &text2); void tagNameEditingStarted (Gtk::CellEditable *, Glib::ustring const &path); bool tagSeparator (const Glib::RefPtr &model, const Gtk::TreeModel::iterator &iter); void tagCellRenderer (Gtk::CellRenderer *cell, const Gtk::TreeModel::iterator &iter) const; /* The Document Properties dialog */ DocumentProperties *docpropertiesdialog_; void docSelectionChanged (); void onWorkOfflineToggled (); void updateOfflineIcon (); void onQuit (); void onUseListViewToggled (); void onShowTagPaneToggled (); void onShowNotesPaneToggled (); int createTag (); void onCreateTag (); void onCreateAndAttachTag (); void onDeleteTag (); void onRenameTag (); void onAddDocUnnamed (); void onAddDocById (); void onAddDocFile (); void onAddDocFolder (); void onSearch (); /* Helpers for addDocFiles */ void onAddDocFilesCancel (Gtk::Button *button, Gtk::ProgressBar *progress); bool cancelAddDocFiles_; void onAddDocFilesTag (std::vector &docs); void configureDocumentFileChooser(Gtk::FileChooserDialog & chooser); class TaggerDialog : public Gtk::Dialog { Gtk::TreeModelColumn nameColumn_; Gtk::TreeModelColumn uidColumn_; Gtk::TreeModelColumn selectedColumn_; Glib::RefPtr model_; Gtk::Dialog *dialog_; Gtk::TreeView *view_; Gtk::ScrolledWindow *scroll_; Gtk::CellRendererToggle *toggle_; std::map selections_; void toggled (Glib::ustring const &path); void populate (); void onCreateTag (); RefWindow *parent_; TagList *taglist_; public: TaggerDialog (RefWindow *window, TagList *taglist); std::vector tagPrompt (); }; class SearchDialog { public: SearchDialog (Library &library, DocumentView &view); void run (); static bool progressCallback (void *ptr); bool progress (); static bool pluginsExist (); private: Library &library_; DocumentView &documentView_; void search (); void addSelected (); void updateSensitivity (); void resultActivated (const Gtk::TreePath &path, Gtk::TreeViewColumn * col); Glib::RefPtr xml_; Gtk::Dialog *dialog_; Gtk::Button *searchButton_; Gtk::Button *addButton_; Gtk::Entry *searchEntry_; Gtk::ComboBox *pluginCombo_; Gtk::TreeView *resultView_; Gtk::Button *cancelButton_; Gtk::ProgressBar *progressbar_; Glib::RefPtr pluginModel_; Gtk::TreeModelColumn pluginPtrColumn_; Gtk::TreeModelColumn pluginNameColumn_; Glib::RefPtr resultModel_; Gtk::TreeModelColumn resultTokenColumn_; Gtk::TreeModelColumn resultTitleColumn_; Gtk::TreeModelColumn resultAuthorColumn_; }; public: void signalException (); void onPasteBibtex (GdkAtom selection); private: void onCopyCite (); void onRemoveDoc (); void onGetMetadataDoc (); void onDeleteDoc (); void onRenameDoc (); public: void onOpenDoc (); void onDocProperties (); void onWebLinkDoc (); private: void onIntroduction (); void onAbout (); void onNewLibrary (); void onSaveLibrary (); void onSaveAsLibrary (); void onOpenLibrary (); void onExportBibtex (); void onManageBibtex (); void onLibraryFolder (); void manageBrowseDialog (Gtk::Entry *entry); void onImport (); void onPreferences (); void onFind (); void onPluginRun (Glib::ustring const action, Plugin* plugin); /* WM events */ bool onDelete (GdkEventAny *ev); void onResize (GdkEventConfigure *event); /* Pick up preference changes */ void onShowTagPanePrefChanged (); void onShowNotesPanePrefChanged (); void onUseListViewPrefChanged (); void onWorkOfflinePrefChanged (); void onEnabledPluginsPrefChanged (); /* Remember which folders the user browsed last */ Glib::ustring addfolder_; Glib::ustring exportfolder_; Glib::ustring libraryfolder_; /* Update UI text */ void updateTitle (); void updateStatusBar (); /* Handle dirtyness */ bool ensureSaved (); bool getDirty () {return dirty_;} bool dirty_; /* Remember which file is open */ Glib::ustring openedlib_; void setOpenedLib (Glib::ustring const &openedlib); public: Glib::ustring const &getOpenedLib () {return openedlib_;} private: }; #endif referencer-1.2.1/src/Makefile.in0000664000175000017500000005455012150642772013431 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = referencer$(EXEEXT) @ENABLE_PYTHON_TRUE@am__append_1 = \ @ENABLE_PYTHON_TRUE@ $(NO_STRICT_ALIASING_CFLAGS) \ @ENABLE_PYTHON_TRUE@ $(PYGTK_CFLAGS) \ @ENABLE_PYTHON_TRUE@ $(PYTHON_CFLAGS) @ENABLE_PYTHON_TRUE@am__append_2 = $(PYTHON_LIBS) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_referencer_OBJECTS = ArxivPlugin.$(OBJEXT) BibData.$(OBJEXT) \ BibUtils.$(OBJEXT) CrossRefPlugin.$(OBJEXT) Document.$(OBJEXT) \ DocumentList.$(OBJEXT) DocumentProperties.$(OBJEXT) \ DocumentTypes.$(OBJEXT) DocumentView.$(OBJEXT) \ EntryMultiCompletion.$(OBJEXT) icon-entry.$(OBJEXT) \ Library.$(OBJEXT) Linker.$(OBJEXT) main.$(OBJEXT) \ PluginManager.$(OBJEXT) Preferences.$(OBJEXT) \ Progress.$(OBJEXT) PythonDocument.$(OBJEXT) \ PythonPlugin.$(OBJEXT) sexy-icon-entry.$(OBJEXT) \ TagList.$(OBJEXT) ThumbnailGenerator.$(OBJEXT) \ RefWindow.$(OBJEXT) Transfer.$(OBJEXT) ustring.$(OBJEXT) \ Utility.$(OBJEXT) referencer_OBJECTS = $(am_referencer_OBJECTS) referencer_LDADD = $(LDADD) am__DEPENDENCIES_1 = @ENABLE_PYTHON_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) referencer_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(top_builddir)/libbibutils/libbibutils.a \ $(am__DEPENDENCIES_2) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(referencer_SOURCES) DIST_SOURCES = $(referencer_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = -I m4 ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -DDATADIR=\""$(pkgdatadir)"\" \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DPLUGINDIR=\""$(pkglibdir)"\" $(am__append_1) LDADD = $(DEPS_LIBS) $(top_builddir)/libbibutils/libbibutils.a \ $(am__append_2) referencer_SOURCES = \ ArxivPlugin.C \ ArxivPlugin.h \ BibData.C \ BibData.h \ BibUtils.C \ BibUtils.h \ CaseFoldCompare.h \ CrossRefPlugin.C \ CrossRefPlugin.h \ Document.C \ Document.h \ DocumentList.C \ DocumentList.h \ DocumentProperties.C \ DocumentProperties.h \ DocumentTypes.C \ DocumentTypes.h \ DocumentView.C \ DocumentView.h \ EntryMultiCompletion.C \ EntryMultiCompletion.h \ icon-entry.cc \ icon-entry.h \ Library.C \ Library.h \ Linker.C \ Linker.h \ main.C \ Plugin.h \ PluginManager.C \ PluginManager.h \ Preferences.C \ Preferences.h \ Progress.C \ Progress.h \ PythonDocument.C \ PythonDocument.h \ PythonPlugin.C \ PythonPlugin.h \ sexy-enum-types.h \ sexy-icon-entry.c \ sexy-icon-entry.h \ TagList.C \ TagList.h \ ThumbnailGenerator.C \ ThumbnailGenerator.h \ referencer_ui.h \ RefWindow.C \ RefWindow.h \ Transfer.C \ Transfer.h \ ucompose.hpp \ ustring.cc \ ustring.h \ Utility.C \ Utility.h AM_CXXFLAGS = @CXXFLAGS@ $(DEPS_CFLAGS) -I$(top_srcdir) AM_CFLAGS = @CXXFLAGS@ $(DEPS_CFLAGS) -I$(top_srcdir) all: all-am .SUFFIXES: .SUFFIXES: .C .c .cc .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) referencer$(EXEEXT): $(referencer_OBJECTS) $(referencer_DEPENDENCIES) $(EXTRA_referencer_DEPENDENCIES) @rm -f referencer$(EXEEXT) $(CXXLINK) $(referencer_OBJECTS) $(referencer_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ArxivPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BibData.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BibUtils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CrossRefPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Document.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DocumentList.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DocumentProperties.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DocumentTypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DocumentView.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EntryMultiCompletion.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Library.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Linker.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PluginManager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Preferences.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Progress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PythonDocument.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PythonPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RefWindow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TagList.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThumbnailGenerator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Transfer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Utility.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icon-entry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexy-icon-entry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ustring.Po@am__quote@ .C.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .C.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/src/ArxivPlugin.C0000664000175000017500000000604412043154075013726 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include "ucompose.hpp" #include "BibData.h" #include "BibUtils.h" #include "Preferences.h" #include "Transfer.h" #include "Utility.h" #include "config.h" #include "ArxivPlugin.h" int ArxivPlugin::canResolve (Document &doc) { if (doc.hasField("eprint") || doc.hasField("ee")) return 80; return -1; } bool ArxivPlugin::resolve (Document &doc) { DEBUG (">> resolve"); if (!doc.hasField("eprint") || _global_prefs->getWorkOffline()) return false; Glib::ustring arxivid = doc.getField("eprint"); Glib::ustring::size_type index = arxivid.find ("v"); if (index != Glib::ustring::npos) { arxivid = arxivid.substr (0, index); } arxivid = Glib::Markup::escape_text (arxivid); Glib::ustring const filename = "http://www.citebase.org/openurl?url_ver=Z39.88-2004&svc_id=bibtex&rft_id=oai%3AarXiv.org%3A" + arxivid; Glib::ustring messagetext = String::ucompose ( "%1\n\n%2\n", _("Retrieving metadata"), String::ucompose ( _("Contacting citebase.org to retrieve metadata for '%1'"), arxivid) ); DEBUG (">> netops"); Glib::ustring *rawtext; try { rawtext = &Transfer::readRemoteFile ( _("Downloading Metadata"), messagetext, filename); DEBUG ("Raw citebase:\n%1\n----", *rawtext); } catch (Transfer::Exception ex) { Utility::exceptionDialog (&ex, _("Downloading metadata")); return false; } DEBUG ("<< netops"); if (rawtext->size() == 0) return false; BibUtils::param p; BibUtils::bibl b; BibUtils::bibl_init( &b ); BibUtils::bibl_initparams( &p, BibUtils::FORMAT_BIBTEX, BIBL_MODSOUT); try { BibUtils::biblFromString (b, *rawtext, BibUtils::FORMAT_BIBTEX, p); if (b.nrefs < 1) return false; Document newdoc = BibUtils::parseBibUtils (b.ref[0]); // Sometimes citebase gives us an URL which is just a doi Glib::ustring const url = newdoc.getBibData().extras_["Url"]; DEBUG ("url = %1", url); DEBUG ("substr = ", url.substr (0, 4)); if (url.size() >= 5 && url.substr (0, 4) == Glib::ustring("doi:")) { if (newdoc.getBibData().getDoi().empty()) { newdoc.getBibData().setDoi (url.substr(4, url.size())); BibData::ExtrasMap::iterator it = newdoc.getBibData().extras_.find("Url"); newdoc.getBibData().extras_.erase(it); } } doc.getBibData().mergeIn (newdoc.getBibData()); BibUtils::bibl_free( &b ); } catch (Glib::Error ex) { BibUtils::bibl_free( &b ); Utility::exceptionDialog (&ex, _("Parsing BibTeX")); return false; } return true; } Glib::ustring const ArxivPlugin::getShortName () { return Glib::ustring ("arxiv"); } Glib::ustring const ArxivPlugin::getLongName () { return Glib::ustring (_("Arxiv.org ArXiv-ID resolver")); } Glib::ustring const ArxivPlugin::getAuthor () { return Glib::ustring ("John Spray"); } Glib::ustring const ArxivPlugin::getVersion () { return Glib::ustring (VERSION); } referencer-1.2.1/src/main.C0000664000175000017500000000463012042711763012403 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include #include #include "config.h" #include "Preferences.h" #include "RefWindow.h" #include "Utility.h" int main (int argc, char **argv) { bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (!Glib::thread_supported()) Glib::thread_init(0); //So we can use GMutex. gdk_threads_init (); Gnome::Conf::init(); std::auto_ptr mainInstance; try { mainInstance = std::auto_ptr( new Gtk::Main(argc, argv) ); } catch(const Glib::Error& ex) { std::cerr << "Glom: Error while initializing gtkmm: " << ex.what() << std::endl; return EXIT_FAILURE; } Gio::init (); Glib::ustring pythonPath = ""; /* Pick up existing python path */ if (getenv("PYTHONPATH")) { pythonPath += ":"; pythonPath += getenv("PYTHONPATH"); } /* Locate user plugins */ Glib::ustring homePlugins; if (getenv("HOME")) homePlugins = Glib::ustring(getenv("HOME")) + Glib::ustring("/.referencer/plugins"); /* Development directory */ Glib::ustring localPlugins = "./plugins"; /* Systemwide */ Glib::ustring installedPlugins = PLUGINDIR; /* Order is important, defines precedence */ pythonPath += ":"; pythonPath += localPlugins; pythonPath += ":"; pythonPath += homePlugins; pythonPath += ":"; pythonPath += installedPlugins; pythonPath += ":"; /* Export the path */ DEBUG (String::ucompose ("setting pythonPath to %1", pythonPath)); setenv ("PYTHONPATH", pythonPath.c_str(), 1); Py_Initialize (); _global_plugins = new PluginManager (); _global_plugins->scan("./plugins"); _global_plugins->scan(homePlugins); _global_plugins->scan(PLUGINDIR); _global_prefs = new Preferences(); if (argc > 1 && Glib::ustring(argv[1]).substr(0,1) != "-") { Glib::RefPtr libfile = Gio::File::create_for_commandline_arg(argv[1]); _global_prefs->setLibraryFilename (libfile->get_uri()); } try { RefWindow window; window.run(); } catch (Glib::Error ex) { Utility::exceptionDialog (&ex, _("Terminating due to unhandled exception")); } delete _global_prefs; delete _global_plugins; Py_Finalize (); return 0; } referencer-1.2.1/src/RefWindow.C0000664000175000017500000027630612146753111013374 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include #include #include #include #include #include "ucompose.hpp" #include "Document.h" #include "DocumentList.h" #include "DocumentProperties.h" #include "DocumentView.h" #include "Library.h" #include "Plugin.h" #include "Preferences.h" #include "Progress.h" #include "TagList.h" #include "Linker.h" #include "config.h" #include "RefWindow.h" #include "referencer_ui.h" RefWindow::RefWindow () { ignoreTagSelectionChanged_ = false; ignoreTaggerActionToggled_ = false; ignoreDocSelectionChanged_ = false; dirty_ = false; library_ = new Library (*this); constructUI (); docpropertiesdialog_ = new DocumentProperties (*this); progress_ = new Progress (*this); Glib::ustring const libfile = _global_prefs->getLibraryFilename (); if (!libfile.empty() && library_->load (libfile)) { setOpenedLib (libfile); populateTagList (); docview_->populateDocStore (); Glib::RefPtr uri = Gio::File::create_for_uri (library_->getLibraryFolder ()); addfolder_ = uri->get_path (); } else { onNewLibrary (); } updateStatusBar (); } RefWindow::~RefWindow () { _global_prefs->setLibraryFilename (openedlib_); delete progress_; delete docpropertiesdialog_; delete library_; } void RefWindow::signalException () { try { throw; } catch (const Glib::Exception &ex) { Utility::exceptionDialog (&ex, "executing UI action"); } catch (const std::exception &ex) { DEBUG (Glib::ustring("std::exception in signal handler, what=") + ex.what()); } catch (...) { DEBUG ("Unknown type of exception in signal handler"); } } void RefWindow::run () { DEBUG ("entering main loop"); /* Connect up exception handler for UI signals */ Glib::add_exception_handler (sigc::mem_fun (*this, &RefWindow::signalException)); /* Enter the main event loop */ Gtk::Main::run (*window_); } void RefWindow::constructUI () { /* The main window */ window_ = new Gtk::Window(Gtk::WINDOW_TOPLEVEL); std::pair size = _global_prefs->getWindowSize (); window_->set_default_size (size.first, size.second); window_->signal_delete_event().connect ( sigc::mem_fun (*this, &RefWindow::onDelete)); window_->signal_configure_event().connect_notify ( sigc::mem_fun (*this, &RefWindow::onResize)); try { Glib::RefPtr icon = Gdk::Pixbuf::create_from_file( Utility::findDataFile("referencer.svg")); window_->set_icon (icon); } catch (Gdk::PixbufError ex) { } /* Vbox fills the whole window */ Gtk::VBox *vbox = Gtk::manage(new Gtk::VBox); window_->add (*vbox); /* The menu bar */ constructMenu (); vbox->pack_start (*uimanager_->get_widget("/MenuBar"), false, false, 0); /* The tool bar */ vbox->pack_start (*uimanager_->get_widget("/ToolBar"), false, false, 0); Gtk::Toolbar *toolbar = (Gtk::Toolbar *) uimanager_->get_widget("/ToolBar"); Gtk::ToolItem *paditem = Gtk::manage (new Gtk::ToolItem); paditem->set_expand (true); // To put the search box on the right toolbar->append (*paditem); // In order to prevent search box falling off the edge. toolbar->set_show_arrow (false); /* Contains tags and document/notes view */ Gtk::HPaned *hpaned = Gtk::manage(new Gtk::HPaned()); vbox->pack_start (*hpaned, true, true, 0); /* Contains document and notes view */ Gtk::VPaned *vpaned = Gtk::manage(new Gtk::VPaned()); hpaned->pack2(*vpaned, Gtk::EXPAND); /* The statusbar */ Gtk::HBox *statusbox = Gtk::manage (new Gtk::HBox()); vbox->pack_start (*statusbox, false, false, 0); statusbar_ = Gtk::manage (new Gtk::Statusbar ()); offlineicon_ = Gtk::manage (new Gtk::Image ()); updateOfflineIcon (); statusbox->pack_start (*offlineicon_, false, false, 6); statusbox->pack_start (*statusbar_, true, true, 0); progressbar_ = Gtk::manage (new Gtk::ProgressBar ()); statusbar_->pack_start (*progressbar_, false, false, 0); /* The document view */ docview_ = Gtk::manage ( new DocumentView( *this, *library_, _global_prefs->getUseListView ())); docview_->getSelectionChangedSignal ().connect ( sigc::mem_fun (*this, &RefWindow::docSelectionChanged)); // The header and wrapper for the notes view notespane_ = Gtk::manage (new Gtk::VBox ()); Gtk::HBox *notesheader = new Gtk::HBox (); noteslabel_ = new Gtk::Label (); noteslabel_->set_ellipsize(Pango::ELLIPSIZE_END); noteslabel_->set_alignment (0.0, 0.0); // The button to close the notes pane (seems like it could be simpler) Gtk::Button *notesclosebutton = new Gtk::Button (); Gtk::Image *tinycloseimage = Gtk::manage(new Gtk::Image ( Gtk::Stock::CLOSE, Gtk::ICON_SIZE_MENU )); notesclosebutton->set_image(*tinycloseimage); notesclosebutton->set_relief(Gtk::RELIEF_NONE); notesclosebutton->signal_clicked ().connect_notify( sigc::mem_fun(*this, &RefWindow::onNotesClose ) ); // The note region itself Gtk::ScrolledWindow *notesscroll = new Gtk::ScrolledWindow(); notesview_ = new Gtk::TextView; notesscroll->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); notesscroll->set_shadow_type (Gtk::SHADOW_NONE); notesview_->set_wrap_mode(Gtk::WRAP_WORD); notesbuffer_ = notesview_->get_buffer(); notesbuffer_->signal_changed().connect( sigc::mem_fun (*this, &RefWindow::onNotesChanged)); notesbufferignore_ = false; noteslabel_->set_mnemonic_widget (*notesview_); // Pack up the notes and document views notesheader->pack_start(*noteslabel_, true, true, 0); notesheader->pack_end(*notesclosebutton, false, false, 0); notespane_->pack_start(*notesheader, false, false, 0); notespane_->pack_start(*notesscroll); notesscroll->add(*notesview_); notesscroll->set_shadow_type (Gtk::SHADOW_IN); vpaned->pack1(*docview_, Gtk::EXPAND); vpaned->pack2(*notespane_, Gtk::FILL); docview_->signal_size_allocate().connect ( sigc::mem_fun (*this, &RefWindow::onNotesPaneResize)); vpaned->set_position (_global_prefs->getNotesPaneHeight() ); /* Drop in the search box */ Gtk::ToolItem *searchitem = Gtk::manage (new Gtk::ToolItem); searchitem->add (docview_->getSearchEntry()); toolbar->append (*searchitem); /* The tags */ vbox = Gtk::manage(new Gtk::VBox); Gtk::Frame *tagsframe = new Gtk::Frame (); tagsframe->add(*vbox); hpaned->pack1(*tagsframe, Gtk::FILL); tagpane_ = tagsframe; Gtk::VBox *filtervbox = Gtk::manage (new Gtk::VBox); vbox->pack_start (*filtervbox, true, true, 0); // Create the store for the tag list Gtk::TreeModel::ColumnRecord tagcols; tagcols.add(taguidcol_); tagcols.add(tagnamecol_); tagcols.add(tagfontcol_); tagstore_ = Gtk::ListStore::create(tagcols); tagstore_->set_sort_func (tagnamecol_, sigc::mem_fun (*this, &RefWindow::sortTags)); tagstore_->set_sort_column (tagnamecol_, Gtk::SORT_ASCENDING); // Create the treeview for the tag list Gtk::TreeView *tags = Gtk::manage(new Gtk::TreeView(tagstore_)); //tags->append_column("UID", taguidcol_); Gtk::CellRendererText *render = Gtk::manage(new Gtk::CellRendererText()); render->property_editable() = true; render->signal_edited().connect ( sigc::mem_fun (*this, &RefWindow::tagNameEdited)); render->signal_editing_started().connect ( sigc::mem_fun (*this, &RefWindow::tagNameEditingStarted)); render->property_xalign () = 0.5; Gtk::TreeView::Column *namecol = Gtk::manage( new Gtk::TreeView::Column (_("Tags"), *render)); namecol->set_cell_data_func ( *render, sigc::mem_fun (*this, &RefWindow::tagCellRenderer)); namecol->add_attribute (render->property_markup (), tagnamecol_); namecol->add_attribute (render->property_font_desc (), tagfontcol_); ((Gtk::CellRendererText*)(std::vector(namecol->get_cell_renderers())[0]))->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; tags->append_column (*namecol); tags->signal_button_press_event().connect_notify( sigc::mem_fun (*this, &RefWindow::tagClicked)); tags->set_row_separator_func( sigc::mem_fun(*this, &RefWindow::tagSeparator)); tags->set_headers_visible (false); tags->set_search_column (tagnamecol_); Gtk::ScrolledWindow *tagsscroll = Gtk::manage(new Gtk::ScrolledWindow()); tagsscroll->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); tagsscroll->set_shadow_type (Gtk::SHADOW_NONE); tagsscroll->add (*tags); filtervbox->pack_start(*tagsscroll, true, true, 0); tagview_ = tags; tagselection_ = tags->get_selection(); tagselection_->signal_changed().connect_notify ( sigc::mem_fun (*this, &RefWindow::tagSelectionChanged)); tagselection_->set_mode (Gtk::SELECTION_MULTIPLE); Gtk::Toolbar& tagbar = (Gtk::Toolbar&) *uimanager_->get_widget("/TagBar"); tagbar.set_toolbar_style (Gtk::TOOLBAR_BOTH_HORIZ); tagbar.set_orientation (Gtk::ORIENTATION_VERTICAL); tagbar.set_show_arrow (false); std::vector tagbarButtons = tagbar.get_children (); std::vector::iterator buttonIter = tagbarButtons.begin (); std::vector::iterator const buttonEnd = tagbarButtons.end (); for (; buttonIter != buttonEnd; ++buttonIter) { Gtk::ToolButton *toolbutton = (Gtk::ToolButton*)(*buttonIter); Gtk::Button *button = (Gtk::Button*)toolbutton->get_child (); /* FIXME: should check the toolbutton is actually a toolbutton * rather than letting it fail on get_child for other types */ if (!button) break; button->set_relief (Gtk::RELIEF_NORMAL); } filtervbox->pack_start (tagbar, false, false, 0); window_->show_all (); // Update visibilities docview_->setUseListView (!docview_->getUseListView()); docview_->setUseListView (!docview_->getUseListView()); // Initialise and listen for prefs change or user input Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowTagPane"))->set_active( _global_prefs->getShowTagPane ()); onShowTagPanePrefChanged (); _global_prefs->getShowTagPaneSignal ().connect ( sigc::mem_fun (*this, &RefWindow::onShowTagPanePrefChanged)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowTagPane"))->signal_toggled ().connect ( sigc::mem_fun(*this, &RefWindow::onShowTagPaneToggled)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowNotesPane"))->set_active( _global_prefs->getShowNotesPane ()); onShowNotesPanePrefChanged (); _global_prefs->getShowNotesPaneSignal ().connect ( sigc::mem_fun (*this, &RefWindow::onShowNotesPanePrefChanged)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowNotesPane"))->signal_toggled ().connect ( sigc::mem_fun(*this, &RefWindow::onShowNotesPaneToggled)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("WorkOffline"))->set_active( _global_prefs->getWorkOffline()); _global_prefs->getWorkOfflineSignal ().connect ( sigc::mem_fun (*this, &RefWindow::onWorkOfflinePrefChanged)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("WorkOffline"))->signal_toggled ().connect ( sigc::mem_fun(*this, &RefWindow::onWorkOfflineToggled)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseListView"))->set_active( docview_->getUseListView()); Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseIconView"))->set_active( !docview_->getUseListView()); _global_prefs->getUseListViewSignal ().connect ( sigc::mem_fun (*this, &RefWindow::onUseListViewPrefChanged)); Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseListView"))->signal_toggled ().connect ( sigc::mem_fun(*this, &RefWindow::onUseListViewToggled)); // Generate UI for plugins and connect to changes onEnabledPluginsPrefChanged (); _global_prefs->getPluginDisabledSignal ().connect ( sigc::mem_fun (*this, &RefWindow::onEnabledPluginsPrefChanged)); } void RefWindow::constructMenu () { actiongroup_ = Gtk::ActionGroup::create(); actiongroup_->add ( Gtk::Action::create("LibraryMenu", _("_Library")) ); actiongroup_->add( Gtk::Action::create("NewLibrary", Gtk::Stock::NEW, _("_New..."), _("New Library")), sigc::mem_fun(*this, &RefWindow::onNewLibrary)); actiongroup_->add( Gtk::Action::create("OpenLibrary", Gtk::Stock::OPEN, _("_Open..."), _("Open Library")), sigc::mem_fun(*this, &RefWindow::onOpenLibrary)); actiongroup_->add( Gtk::Action::create("SaveLibrary", Gtk::Stock::SAVE, _("_Save..."), _("Save Library")), sigc::mem_fun(*this, &RefWindow::onSaveLibrary)); actiongroup_->add( Gtk::Action::create("SaveAsLibrary", Gtk::Stock::SAVE_AS, _("Save _As...")), Gtk::AccelKey ("s"), sigc::mem_fun(*this, &RefWindow::onSaveAsLibrary)); actiongroup_->add( Gtk::Action::create("ExportBibtex", Gtk::Stock::CONVERT, _("E_xport as BibTeX...")), Gtk::AccelKey ("b"), sigc::mem_fun(*this, &RefWindow::onExportBibtex)); actiongroup_->add( Gtk::Action::create("ManageBibtex", Gtk::Stock::CONVERT, _("_Manage BibTeX File...")), Gtk::AccelKey ("b"), sigc::mem_fun(*this, &RefWindow::onManageBibtex)); actiongroup_->add( Gtk::Action::create("Properties", Gtk::Stock::PROPERTIES, _("_Properties...")), Gtk::AccelKey ("p"), sigc::mem_fun(*this, &RefWindow::onLibraryFolder)); actiongroup_->add( Gtk::Action::create("Import", _("_Import...")), sigc::mem_fun(*this, &RefWindow::onImport)); actiongroup_->add( Gtk::ToggleAction::create("WorkOffline", _("_Work Offline"))); actiongroup_->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &RefWindow::onQuit)); actiongroup_->add ( Gtk::Action::create("EditMenu", _("_Edit")) ); actiongroup_->add ( Gtk::Action::create("ViewMenu", _("_View")) ); /* Translation note: this begins the sentence completed by * the "By %1" string, which is the child menu * item. If this does not make sense in your locale, translate * "Arrange Items" as something like "Sort" and translate "By %1" * as just "%1" */ actiongroup_->add ( Gtk::Action::create("ViewMenuSort", _("Arran_ge Items")) ); actiongroup_->add( Gtk::Action::create( "PasteBibtex", Gtk::Stock::PASTE, _("_Paste BibTeX"), _("Import references from BibTeX on the clipboard")), sigc::bind (sigc::mem_fun(*this, &RefWindow::onPasteBibtex), GDK_SELECTION_CLIPBOARD)); actiongroup_->add( Gtk::Action::create( "CopyCite", Gtk::Stock::COPY, _("_Copy LaTeX Citation"), _("Copy currently selected keys to the clipboard as a LaTeX citation")), sigc::mem_fun(*this, &RefWindow::onCopyCite)); actiongroup_->add( Gtk::Action::create("Preferences", Gtk::Stock::PREFERENCES), sigc::mem_fun(*this, &RefWindow::onPreferences)); Gtk::RadioButtonGroup group; actiongroup_->add( Gtk::RadioAction::create(group, "UseListView", _("Use _List View"))); actiongroup_->add( Gtk::RadioAction::create(group, "UseIconView", _("Use _Icon View"))); actiongroup_->add( Gtk::ToggleAction::create("ShowTagPane", _("_Show Tag Pane")), Gtk::AccelKey ("t")); actiongroup_->add( Gtk::ToggleAction::create("ShowNotesPane", _("Show _Notes Pane")), Gtk::AccelKey ("n")); actiongroup_->add ( Gtk::Action::create("TagMenu", _("_Tags")) ); actiongroup_->add( Gtk::Action::create( "CreateTag", Gtk::Stock::NEW, _("_Create Tag...")), Gtk::AccelKey ("t"), sigc::mem_fun(*this, &RefWindow::onCreateTag)); actiongroup_->add( Gtk::Action::create( "CreateAndAttachTag", Gtk::Stock::NEW, _("_Attach New Tag...")), Gtk::AccelKey ("t"), sigc::mem_fun(*this, &RefWindow::onCreateAndAttachTag)); actiongroup_->add( Gtk::Action::create( "DeleteTag", Gtk::Stock::DELETE, _("_Delete Tag")), sigc::mem_fun(*this, &RefWindow::onDeleteTag)); actiongroup_->add( Gtk::Action::create( "RenameTag", Gtk::Stock::EDIT, _("_Rename Tag")), sigc::mem_fun(*this, &RefWindow::onRenameTag)); actiongroup_->add ( Gtk::Action::create("DocMenu", _("_Documents")) ); actiongroup_->add( Gtk::Action::create( "AddDocFile", Gtk::Stock::ADD, _("_Add File...")), sigc::mem_fun(*this, &RefWindow::onAddDocFile)); actiongroup_->add( Gtk::Action::create( "AddDocFolder", Gtk::Stock::ADD, _("Add _Folder...")), sigc::mem_fun(*this, &RefWindow::onAddDocFolder)); actiongroup_->add( Gtk::Action::create( "AddDocUnnamed", Gtk::Stock::ADD, _("Add E_mpty Reference...")), sigc::mem_fun(*this, &RefWindow::onAddDocUnnamed)); actiongroup_->add( Gtk::Action::create( "AddDocDoi", Gtk::Stock::ADD, _("Add Refere_nce with ID...")), sigc::mem_fun(*this, &RefWindow::onAddDocById)); actiongroup_->add( Gtk::Action::create( "RemoveDoc", Gtk::Stock::REMOVE, _("_Remove")), Gtk::AccelKey ("Delete"), sigc::mem_fun(*this, &RefWindow::onRemoveDoc)); actiongroup_->add( Gtk::Action::create( "OpenDoc", Gtk::Stock::OPEN, _("_Open")), Gtk::AccelKey ("a"), sigc::mem_fun(*this, &RefWindow::onOpenDoc)); actiongroup_->add( Gtk::Action::create( "DocProperties", Gtk::Stock::PROPERTIES), Gtk::AccelKey ("e"), sigc::mem_fun(*this, &RefWindow::onDocProperties)); actiongroup_->add ( Gtk::Action::create("TaggerMenuAction", _("_Tags")) ); //actiongroup_->get_action("TaggerMenuAction")->set_property("hide_if_empty", false); actiongroup_->add( Gtk::Action::create( "GetMetadataDoc", Gtk::Stock::CONNECT, _("_Get Metadata")), sigc::mem_fun(*this, &RefWindow::onGetMetadataDoc)); actiongroup_->add( Gtk::Action::create( "DeleteDoc", Gtk::Stock::DELETE, _("_Delete File from Drive")), Gtk::AccelKey ("Delete"), sigc::mem_fun(*this, &RefWindow::onDeleteDoc)); actiongroup_->add( Gtk::Action::create( "RenameDoc", Gtk::Stock::EDIT, _("R_ename File from Key")), sigc::mem_fun(*this, &RefWindow::onRenameDoc)); actiongroup_->add ( Gtk::Action::create("ToolsMenu", _("_Tools")) ); actiongroup_->add( Gtk::Action::create("ExportNotes", Gtk::Stock::CONVERT, _("Export Notes as HTML")), sigc::mem_fun(*this, &RefWindow::onNotesExport)); actiongroup_->add ( Gtk::Action::create("HelpMenu", _("_Help")) ); actiongroup_->add( Gtk::Action::create( "Introduction", Gtk::Stock::HELP, _("Contents")), sigc::mem_fun(*this, &RefWindow::onIntroduction)); actiongroup_->add( Gtk::Action::create( "About", Gtk::Stock::ABOUT), sigc::mem_fun(*this, &RefWindow::onAbout)); // Just for the keyboard shortcut actiongroup_->add( Gtk::Action::create( "Find", Gtk::Stock::FIND), Gtk::AccelKey ("f"), sigc::mem_fun(*this, &RefWindow::onFind)); uimanager_ = Gtk::UIManager::create (); uimanager_->insert_action_group (actiongroup_); /* From referencer_ui.h */ uimanager_->add_ui_from_string (referencer_ui); if (SearchDialog::pluginsExist()) { actiongroup_->add( Gtk::Action::create( "Search", Gtk::Stock::FIND, _("Search...")), Gtk::AccelKey ("x"), sigc::mem_fun(*this, &RefWindow::onSearch)); uimanager_->add_ui_from_string ("" "" "" " " " " " " "" "" ""); } window_->add_accel_group (uimanager_->get_accel_group ()); } void RefWindow::onEnabledPluginsPrefChanged () { std::list plugins = _global_plugins->getPlugins(); std::list::iterator pit = plugins.begin(); std::list::iterator const pend = plugins.end(); for (; pit != pend; pit++) { Gtk::UIManager::ui_merge_id mergeId = pluginUI_[(*pit)->getShortName()]; if ((*pit)->isEnabled() && !mergeId) { Plugin::ActionList actions = (*pit)->getActions (); Plugin::ActionList::iterator it = actions.begin (); Plugin::ActionList::iterator const end = actions.end (); for (; it != end; ++it) { Glib::ustring callback = *((Glib::ustring*)(*it)->get_data("callback")); Glib::ustring accelerator = *((Glib::ustring*)(*it)->get_data("accelerator")); if (!callback.empty()) { /* Connect the callback and stash the connection cookie */ sigc::connection *connection = new sigc::connection; *connection = (*it)->signal_activate().connect ( sigc::bind( sigc::mem_fun(*this, &RefWindow::onPluginRun), *((Glib::ustring*)(*it)->get_data("callback")), (*pit))); (*it)->set_data("connection", (void*)connection); } actiongroup_->add (*it, Gtk::AccelKey (accelerator)); } Glib::ustring ui = (*pit)->getUI (); try { pluginUI_[(*pit)->getShortName()] = uimanager_->add_ui_from_string (ui); } catch (Glib::MarkupError &ex) { DEBUG (String::ucompose("Error merging UI For plugin %1, exception %2", (*pit)->getShortName(), ex.what())); } } else if (!(*pit)->isEnabled() && mergeId) { /* Remove plugin actions and UI */ uimanager_->remove_ui (mergeId); Plugin::ActionList actions = (*pit)->getActions (); Plugin::ActionList::iterator it = actions.begin (); Plugin::ActionList::iterator const end = actions.end (); for (; it != end; ++it) { sigc::connection *connection = (sigc::connection*)((*it)->get_data ("connection")); connection->disconnect (); actiongroup_->remove (*it); } pluginUI_.erase ((*pit)->getShortName()); } } /* Set up sensitivities */ docSelectionChanged (); } void RefWindow::clearTagList () { tagstore_->clear(); } void RefWindow::updateTagSizes () { std::map tagusecounts; DocumentList::Container &docrefs = library_->getDocList()->getDocs (); int const doccount = docrefs.size (); DocumentList::Container::iterator docit = docrefs.begin(); DocumentList::Container::iterator const docend = docrefs.end(); for (; docit != docend; docit++) { std::vector& tags = (*docit).getTags (); std::vector::iterator tagit = tags.begin (); std::vector::iterator const tagend = tags.end (); for (; tagit != tagend; ++tagit) tagusecounts[*tagit]++; } /* What was I smoking when I wrote TagList? Mung it into a more * useful data structure. */ typedef std::map > SensibleMap; std::map > sensibleTags; TagList::TagMap allTags = library_->getTagList()->getTags(); TagList::TagMap::iterator sensibleIter = allTags.begin(); TagList::TagMap::iterator const sensibleEnd = allTags.end(); for (; sensibleIter != sensibleEnd; ++sensibleIter) { sensibleTags[(*sensibleIter).second.name_] = std::pair ( (*sensibleIter).second.uid_, tagusecounts[(*sensibleIter).second.uid_]); } Gtk::TreeModel::iterator tagIter = tagstore_->children().begin(); Gtk::TreeModel::iterator const tagEnd = tagstore_->children().end(); for (; tagIter != tagEnd; ++tagIter) { int uid = (*tagIter)[taguidcol_]; if (tagusecounts.find(uid) == tagusecounts.end()) continue; int useCount = tagusecounts[(*tagIter)[taguidcol_]]; float factor = 0.0; if (useCount > 0 && doccount > 0) { //factor = 0.75 + (logf((float)useCount / (float)doccount + 0.1) - logf(0.1)) * 0.4; factor = (float)useCount / (float)doccount; } int size = (int)((float)(window_->get_style ()->get_font().get_size ()) * (0.95f + (factor * 0.1f))); Pango::FontDescription font; if (factor < 0.1) { font.set_weight (Pango::WEIGHT_NORMAL); } else if (factor < 0.5) { font.set_weight (Pango::WEIGHT_SEMIBOLD); } else { font.set_weight (Pango::WEIGHT_SEMIBOLD); } font.set_size(size); (*tagIter)[tagfontcol_] = font; } } void RefWindow::populateTagList () { Gtk::TreeSelection::ListHandle_Path paths = tagselection_->get_selected_rows (); Gtk::TreePath initialpath; if (paths.size() > 0) initialpath = *paths.begin (); bool const ignore = ignoreTagSelectionChanged_; ignoreTagSelectionChanged_ = true; tagstore_->clear(); Pango::FontDescription font_special; //font_special.set_weight (Pango::WEIGHT_LIGHT); Gtk::TreeModel::iterator all = tagstore_->append(); (*all)[taguidcol_] = ALL_TAGS_UID; (*all)[tagnamecol_] = String::ucompose ("%1", _("All")); (*all)[tagfontcol_] = font_special; Gtk::TreeModel::iterator none = tagstore_->append(); (*none)[taguidcol_] = NO_TAGS_UID; (*none)[tagnamecol_] = String::ucompose ("%1", _("Untagged")); (*none)[tagfontcol_] = font_special; Gtk::TreeModel::iterator sep = tagstore_->append(); (*sep)[taguidcol_] = SEPARATOR_UID; /* Clear out tag actions and UI */ TaggerUIMap::iterator taggerIter = taggerUI_.begin (); TaggerUIMap::iterator const taggerEnd = taggerUI_.end (); for (; taggerIter != taggerEnd; ++taggerIter) { actiongroup_->remove ((*taggerIter).second.action); uimanager_->remove_ui ((*taggerIter).second.merge); } taggerUI_.clear (); /* What was I smoking when I wrote TagList? Mung it into a more * useful data structure. */ typedef std::map SensibleMap; SensibleMap sensibleTags; TagList::TagMap allTags = library_->getTagList()->getTags(); TagList::TagMap::iterator sensibleIter = allTags.begin(); TagList::TagMap::iterator const sensibleEnd = allTags.end(); for (; sensibleIter != sensibleEnd; ++sensibleIter) sensibleTags[(*sensibleIter).second.name_] = (*sensibleIter).second.uid_; // Populate from the sensibleTags structure SensibleMap::iterator tagIter = sensibleTags.begin (); SensibleMap::iterator const tagEnd = sensibleTags.end (); for (; tagIter != tagEnd; ++tagIter) { Glib::ustring name = (*tagIter).first; int uid = (*tagIter).second; Gtk::TreeModel::iterator item = tagstore_->append(); (*item)[taguidcol_] = uid; (*item)[tagnamecol_] = Glib::Markup::escape_text(name); (*item)[tagfontcol_] = Pango::FontDescription(); /* Create tag actions */ TagUI t; Glib::ustring actionName = String::ucompose ("tagger_%1", uid); Glib::RefPtr action = Gtk::ToggleAction::create ( actionName, name); action->set_visible(true); action->signal_toggled().connect( sigc::bind( sigc::mem_fun (*this, &RefWindow::taggerActionToggled), action, uid)); /* Add it to the action group */ actiongroup_->add (action); t.action = action; /* Merge it into the UI */ Glib::ustring ui = "" "" "" " " " " " " "" "" ""; t.merge = uimanager_->add_ui_from_string (ui); /* Stash the info */ taggerUI_[uid] = t; } // Restore initial selection or selected first row ignoreTagSelectionChanged_ = ignore; if (!initialpath.empty()) tagselection_->select (initialpath); // If that didn't get anything, select All if (tagselection_->get_selected_rows ().size () == 0) tagselection_->select (tagstore_->children().begin()); /* Give them tagcloud-style sizing */ updateTagSizes (); /* Update tagger action checked-ness */ docSelectionChanged (); } void RefWindow::printUI () { DEBUG (uimanager_->get_ui()); DEBUG ("Actions\n"); std::vector > actions = actiongroup_->get_actions (); std::vector >::iterator actionIt = actions.begin (); std::vector >::iterator const actionEnd = actions.end (); for (; actionIt != actionEnd; ++actionIt) { DEBUG ((*actionIt)->get_name ()); } } void RefWindow::taggerActionToggled (Glib::RefPtr action, int taguid) { if (ignoreTaggerActionToggled_) return; setDirty (true); std::vector selecteddocs = docview_->getSelectedDocs (); bool active = action->get_active (); ignoreDocSelectionChanged_ = true; std::vector::iterator it = selecteddocs.begin (); std::vector::iterator const end = selecteddocs.end (); for (; it != end; it++) { Document *doc = (*it); if (active) doc->setTag (taguid); else doc->clearTag (taguid); docview_->updateDoc (doc); } ignoreDocSelectionChanged_ = false; docSelectionChanged (); // If we've untagged something it might no longer be visible // Or if we've added a tag to something while viewing "untagged" updateStatusBar (); // All tag changes influence the fonts in the tag list updateTagSizes (); } void RefWindow::tagNameEditingStarted ( Gtk::CellEditable *, Glib::ustring const &pathstr) { Gtk::TreePath path(pathstr); Gtk::ListStore::iterator iter = tagstore_->get_iter (path); tagoldname_ = (*iter)[tagnamecol_]; } void RefWindow::tagNameEdited ( Glib::ustring const &text1, Glib::ustring const &text2) { // Text1 is the row number, text2 is the new setting Gtk::TreeSelection::ListHandle_Path paths = tagselection_->get_selected_rows (); if (paths.empty ()) { DEBUG ("Warning: RefWindow::tagNameEdited: no tag selected"); return; } else if (paths.size () > 1) { DEBUG ("Warning: RefWindow::tagNameEdited: too many tags selected"); return; } Gtk::TreePath path = (*paths.begin ()); Gtk::ListStore::iterator iter = tagstore_->get_iter (path); // Should escape this Glib::ustring newname = text2; if (newname == tagoldname_) return; setDirty (true); /* Update name in tag bar */ (*iter)[tagnamecol_] = newname; /* Update name in tag store */ library_->getTagList()->renameTag ((*iter)[taguidcol_], newname); /* Update name in tag action */ taggerUI_[(*iter)[taguidcol_]].action->property_label() = newname; } bool RefWindow::tagSeparator ( const Glib::RefPtr &model, const Gtk::TreeModel::iterator &iter) { return ((*iter)[taguidcol_] == SEPARATOR_UID); } void RefWindow::tagCellRenderer ( Gtk::CellRenderer * cell, const Gtk::TreeModel::iterator &iter) const { Gtk::CellRendererText *render = dynamic_cast (cell); if (!render) return; if ((*iter)[taguidcol_] == ALL_TAGS_UID || (*iter)[taguidcol_] == NO_TAGS_UID) render->property_editable () = false; else render->property_editable () = true; } void RefWindow::tagSelectionChanged () { if (ignoreTagSelectionChanged_) return; Gtk::TreeSelection::ListHandle_Path paths = tagselection_->get_selected_rows (); filtertags_.clear(); bool specialselected = false; bool anythingselected = false; if (paths.empty()) { specialselected = true; anythingselected = true; filtertags_.push_back(ALL_TAGS_UID); } else { Gtk::TreeSelection::ListHandle_Path::iterator it = paths.begin (); Gtk::TreeSelection::ListHandle_Path::iterator const end = paths.end (); for (; it != end; it++) { anythingselected = true; Gtk::TreePath path = (*it); Gtk::ListStore::iterator iter = tagstore_->get_iter (path); filtertags_.push_back((*iter)[taguidcol_]); if ((*iter)[taguidcol_] == ALL_TAGS_UID || (*iter)[taguidcol_] == NO_TAGS_UID) { specialselected = true; } } } actiongroup_->get_action("DeleteTag")->set_sensitive ( anythingselected && !specialselected); actiongroup_->get_action("RenameTag")->set_sensitive ( paths.size() == 1 && !specialselected); docview_->updateVisible (); updateStatusBar (); } void RefWindow::updateStatusBar () { int selectcount = docview_->getSelectedDocCount (); bool const somethingselected = selectcount > 0; // Update the statusbar text int visibledocs = docview_->getVisibleDocCount (); Glib::ustring statustext; if (somethingselected) { statustext = String::ucompose ( _("%1 documents (%2 selected)"), visibledocs, selectcount); } else { statustext = String::ucompose ( _("%1 documents"), visibledocs); } statusbar_->push (statustext, 0); } void RefWindow::onNotesClose () { _global_prefs->setShowNotesPane(false); } void RefWindow::updateNotesPane () { int selectcount = docview_->getSelectedDocCount (); // Update the notes for the old selected file first static Document *doc = NULL; if ( doc && notesbuffer_->get_modified () && notesview_->get_editable() ) { setDirty(true); doc->setNotes( notesbuffer_->get_text() ); } bool enabled = false; if (selectcount == 1) { // Now show the notes for the new one doc = docview_->getSelectedDoc (); Glib::ustring labeltext; if (doc->hasField("title")) labeltext = doc->getField("title"); else labeltext = doc->getKey (); noteslabel_->set_markup_with_mnemonic( String::ucompose (_("_Notes: %1"), labeltext)); enabled = true; } else if (selectcount > 1) { noteslabel_->set_label(_("Multiple documents selected")); } else { noteslabel_->set_label(_("Select a document to view and edit notes")); } if (enabled) { notesview_->set_cursor_visible(true); notesview_->set_editable(true); notesbufferignore_ = true; notesbuffer_->set_text( doc->getNotes() ); notesbufferignore_ = false; notesbuffer_->set_modified(false); } else { notesview_->set_cursor_visible(false); notesview_->set_editable(false); notesbufferignore_ = true; notesbuffer_->set_text(""); notesbufferignore_ = false; } } void RefWindow::onNotesChanged () { if (!notesbufferignore_) setDirty (true); } void RefWindow::tagClicked (GdkEventButton* event) { if((event->type == GDK_BUTTON_PRESS) && (event->button == 3)) { Gtk::Menu *popupmenu = (Gtk::Menu*)uimanager_->get_widget("/TagPopup"); popupmenu->popup (event->button, event->time); } } void RefWindow::onQuit () { if (ensureSaved ()) Gtk::Main::quit (); } bool RefWindow::onDelete (GdkEventAny *ev) { if (ensureSaved ()) return false; else return true; } // Prompts the user to save if necessary, and returns whether // it is save for the caller to proceed (false if the user // says to cancel, or saving failed) bool RefWindow::ensureSaved () { if (getDirty ()) { Gtk::MessageDialog dialog ( String::ucompose ("%1" , _("Save changes to library before closing?")), true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE, true); dialog.add_button (_("Close _without Saving"), Gtk::RESPONSE_CLOSE); dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); int const result = dialog.run (); if (result == Gtk::RESPONSE_CLOSE) { return true; } else if (result == Gtk::RESPONSE_ACCEPT) { if (openedlib_.empty ()) { onSaveAsLibrary (); if (openedlib_.empty ()) { // The user cancelled return false; } } else { if (!library_->save (openedlib_)) { // Don't lose data return false; } } return true; } else /*if (result == Gtk::RESPONSE_CANCEL)*/ { return false; } } else { return true; } } /** * Helper for onCreateTag and onCreateAndAttachTag */ int RefWindow::createTag () { Glib::ustring newname = (_("Type a tag")); Glib::ustring message = String::ucompose( "%1\n\n%2", _("Create tag"), _("Short memorable tag names help you organise your documents")); Gtk::MessageDialog dialog(message, true, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); dialog.add_button (Gtk::Stock::CANCEL, 0); dialog.add_button (Gtk::Stock::OK, 1); dialog.set_default_response (1); Gtk::Entry nameentry; Gtk::HBox hbox; hbox.set_spacing (6); Gtk::Label label (String::ucompose ("%1:", _("Name"))); hbox.pack_start (label, false, false, 0); hbox.pack_start (nameentry, true, true, 0); nameentry.set_activates_default (true); dialog.get_vbox()->pack_start (hbox, false, false, 0); Gtk::Label messageLabel (""); dialog.get_vbox()->pack_start (messageLabel, false, false, 0); hbox.show_all (); bool invalid = true; int newtag = -1; while (invalid && dialog.run()) { Glib::ustring newname = nameentry.get_text (); if (newname.empty()) { invalid = true; messageLabel.set_markup (String::ucompose( "%1", _("Empty tag names are not valid"))); messageLabel.show(); } else if (library_->getTagList()->tagExists (newname)) { invalid = true; messageLabel.set_markup (String::ucompose( "%1", _("Duplicate tag names are not valid"))); messageLabel.show(); } else { invalid = false; newtag = library_->getTagList()->newTag (newname); populateTagList(); } } return newtag; } void RefWindow::onCreateTag () { createTag (); setDirty (true); } void RefWindow::onCreateAndAttachTag () { /* Create a tag */ int newtag = createTag (); if (newtag < 0) return; /* Apply newtag to all selected documents */ std::vector docs = docview_->getSelectedDocs (); std::vector::iterator docIter = docs.begin (); std::vector::iterator const docEnd = docs.end (); for (; docIter != docEnd; ++docIter) { (*docIter)->setTag (newtag); } updateTagSizes (); setDirty (true); } void RefWindow::onDeleteTag () { Gtk::TreeSelection::ListHandle_Path paths = tagselection_->get_selected_rows (); if (paths.empty()) { DEBUG ("Warning: RefWindow::onDeleteTag: nothing selected"); return; } std::vector uidstodelete; Gtk::TreeSelection::ListHandle_Path::iterator it = paths.begin (); Gtk::TreeSelection::ListHandle_Path::iterator const end = paths.end (); for (; it != end; it++) { Gtk::TreePath path = (*it); Gtk::ListStore::iterator iter = tagstore_->get_iter (path); if ((*iter)[taguidcol_] == ALL_TAGS_UID) { DEBUG ("Warning: RefWindow::onDeleteTag:" " someone tried to delete 'All'\n"); continue; } Glib::ustring message = String::ucompose ( _("Are you sure you want to delete \"%1\"?"), (Glib::ustring)(*iter)[tagnamecol_]); Gtk::MessageDialog confirmdialog ( message, false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); confirmdialog.set_secondary_text (_("When a tag is deleted it is also " "permanently removed from all documents it is currently " "associated with.")); confirmdialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); confirmdialog.add_button (Gtk::Stock::DELETE, Gtk::RESPONSE_ACCEPT); confirmdialog.set_default_response (Gtk::RESPONSE_CANCEL); if (confirmdialog.run () == Gtk::RESPONSE_ACCEPT) { DEBUG (String::ucompose ("going to delete %1", (*iter)[taguidcol_])); uidstodelete.push_back ((*iter)[taguidcol_]); } } std::vector::iterator uidit = uidstodelete.begin (); std::vector::iterator const uidend = uidstodelete.end (); for (; uidit != uidend; ++uidit) { DEBUG (String::ucompose ("really deleting %1", *uidit)); // Take it off any docs library_->getDocList()->clearTag(*uidit); // Remove it from the tag list library_->getTagList()->deleteTag (*uidit); } if (uidstodelete.size() > 0) { setDirty (true); populateTagList (); } } void RefWindow::onRenameTag () { Gtk::TreeSelection::ListHandle_Path paths = tagselection_->get_selected_rows (); if (paths.empty ()) { DEBUG ("no tag selected"); return; } else if (paths.size () > 1) { DEBUG ("too many tags selected"); return; } Gtk::TreePath path = (*paths.begin ()); tagview_->set_cursor (path, *tagview_->get_column (0), true); } void RefWindow::onExportBibtex () { Gtk::FileChooserDialog chooser ( _("Export BibTeX"), Gtk::FILE_CHOOSER_ACTION_SAVE); chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); chooser.set_do_overwrite_confirmation (true); Gtk::FileFilter bibtexfiles; bibtexfiles.add_pattern ("*.[bB][iI][bB]"); bibtexfiles.set_name (_("BibTeX Files")); chooser.add_filter (bibtexfiles); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); chooser.add_filter (allfiles); Gtk::VBox extrabox; extrabox.set_spacing (6); chooser.set_extra_widget (extrabox); Gtk::HBox selectionbox; selectionbox.set_spacing (6); extrabox.pack_start (selectionbox, false, false, 0); Gtk::Label label (_("Selection:")); selectionbox.pack_start (label, false, false, 0); Gtk::ComboBoxText combo; combo.append_text (_("All Documents")); combo.append_text (_("Selected Documents")); combo.set_active (0); selectionbox.pack_start (combo, true, true, 0); combo.set_sensitive (docview_->getSelectedDocCount ()); // Any options here should be replicated in onManageBibtex Gtk::CheckButton bracescheck (_("Protect capitalization (surround values with {})")); extrabox.pack_start (bracescheck, false, false, 0); Gtk::CheckButton utf8check (_("Use Unicode (UTF-8) encoding")); extrabox.pack_start (utf8check, false, false, 0); extrabox.show_all (); // Browsing to remote hosts not working for some reason //chooser.set_local_only (false); if (!exportfolder_.empty()) chooser.set_current_folder (exportfolder_); if (chooser.run() == Gtk::RESPONSE_ACCEPT) { bool const usebraces = bracescheck.get_active (); bool const useutf8 = utf8check.get_active (); bool const selectedonly = combo.get_active_row_number () == 1; exportfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::ustring bibfilename = chooser.get_uri(); chooser.hide (); // Really we shouldn't add the extension if the user has chosen an // existing file rather than typing in a name themselves. bibfilename = Utility::ensureExtension (bibfilename, "bib"); std::vector docs; if (selectedonly) { docs = docview_->getSelectedDocs (); } else { DocumentList::Container &docrefs = library_->getDocList()->getDocs (); DocumentList::Container::iterator it = docrefs.begin(); DocumentList::Container::iterator const end = docrefs.end(); for (; it != end; it++) { docs.push_back(&(*it)); } } library_->writeBibtex (bibfilename, docs, usebraces, useutf8); } } void RefWindow::onNotesExport () { if ( notesbuffer_->get_modified() ) updateNotesPane (); Gtk::FileChooserDialog chooser ( _("Export Notes"), Gtk::FILE_CHOOSER_ACTION_SAVE); chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); chooser.set_do_overwrite_confirmation (true); Gtk::FileFilter htmlfiles; htmlfiles.add_pattern ("*.[Hh][Tt][Mm][Ll*]"); htmlfiles.set_name (_("HTML Files")); chooser.add_filter (htmlfiles); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); chooser.add_filter (allfiles); Gtk::VBox extrabox; extrabox.set_spacing (6); chooser.set_extra_widget (extrabox); Gtk::HBox selectionbox; selectionbox.set_spacing (6); extrabox.pack_start (selectionbox, false, false, 0); Gtk::Label label (_("Selection:")); selectionbox.pack_start (label, false, false, 0); Gtk::ComboBoxText combo; combo.append_text (_("All Documents")); combo.append_text (_("Currently Shown Documents")); combo.append_text (_("Selected Documents")); if (docview_->getSelectedDocCount ()) { /* there is a selection */ combo.set_active (2); } else if (docview_->getVisibleDocCount () != library_->getDocList()->size()) { /* there is some filtering */ combo.set_active (1); } else { combo.set_active (0); } selectionbox.pack_start (combo, true, true, 0); extrabox.show_all (); // Browsing to remote hosts not working for some reason //chooser.set_local_only (false); if (!exportfolder_.empty()) chooser.set_current_folder (exportfolder_); if (chooser.run() == Gtk::RESPONSE_ACCEPT) { exportfolder_ = Glib::path_get_dirname(chooser.get_filename()); chooser.hide (); std::vector docs; if (combo.get_active_row_number () == 2 /* Selected documents */) { docs = docview_->getSelectedDocs (); } else if (combo.get_active_row_number () == 1 /* Currently shown documents */) { docs = docview_->getVisibleDocs (); } else /* All documents */ { DocumentList::Container &docrefs = library_->getDocList()->getDocs (); DocumentList::Container::iterator it = docrefs.begin(); DocumentList::Container::iterator const end = docrefs.end(); for (; it != end; it++) { docs.push_back(&(*it)); } } /* Copied from DocumentView.C, this should probably start living in Linker.C. {{{ * * Linkers are local to here for now, in the future they might * be plugin-extensible and thus moved elsewhere */ static std::vector linkers; static DoiLinker doi; static ArxivLinker arxiv; static UrlLinker url; static PubmedLinker pubmed; static GoogleLinker google; /* * Initialise linkers */ if (linkers.size() == 0) { linkers.push_back(&doi); linkers.push_back(&arxiv); linkers.push_back(&url); linkers.push_back(&pubmed); linkers.push_back(&google); std::vector::iterator it = linkers.begin (); std::vector::iterator const end = linkers.end (); } /* }}} */ /* Extremely basic HTML writer, maybe move into a separate function if it gets more complicated */ std::ofstream notesfile(chooser.get_filename().c_str()); if (!notesfile) { DEBUG (String::ucompose ("Error opening '%1'", chooser.get_filename())); notesfile.close (); return; } Glib::ustring libname; if (openedlib_.empty ()) { libname = _("Unnamed Library"); } else { libname = Glib::uri_unescape_string (Glib::path_get_basename (openedlib_)); Glib::ustring::size_type pos = libname.find (".reflib"); if (pos != Glib::ustring::npos) { libname = libname.substr (0, pos); } } // Just a plain HTML page // for now, styles and such could be added later notesfile << "" << std::endl; notesfile << "\n\n" << std::endl; notesfile << "Notes on "<< libname << "\n\n" << std::endl; std::vector::const_iterator it = docs.begin (); std::vector::const_iterator const end = docs.end (); for (; it != end; ++it) { notesfile << "

" << (*it)->getField("title") << "

" << std::endl; notesfile << "" << (*it)->getField("author") << "" << std::endl; /* Copied from DocumentView.C, this should probably start living in Linker.C. {{{ * Work out which linkers are applicable */ std::vector::iterator linker_it = linkers.begin(); std::vector::iterator const linker_end = linkers.end(); for (; linker_it != linker_end; ++linker_it) { Linker *linker = (*linker_it); if (linker->canLink(*it)) { notesfile << "getURL(*it) << "\">" << linker->getLabel() << " "; } } /* }}} */ Glib::ustring notes = (*it)->getNotes(); /* do \n ->
replacement */ for ( unsigned int index = notes.find( "\n" ) ; index < notes.length() ; index = notes.find( "\n" ) ) notes.replace( index, 1, "
" ) ; notesfile << "

" << notes << "

" << std::endl; } notesfile << "\n"; notesfile.close(); } } void RefWindow::manageBrowseDialog (Gtk::Entry *entry) { Glib::ustring filename = Glib::filename_from_utf8 (entry->get_text ()); Gtk::FileChooserDialog dialog (_("Browse"), Gtk::FILE_CHOOSER_ACTION_SAVE); dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_OK); dialog.set_do_overwrite_confirmation (); Gtk::FileFilter bibtexfiles; bibtexfiles.add_pattern ("*.[bB][iI][bB]"); bibtexfiles.set_name (_("BibTeX Files")); dialog.add_filter (bibtexfiles); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); dialog.add_filter (allfiles); if (dialog.run() == Gtk::RESPONSE_OK) { //Gnome::Vfs::get_uri_from_local_path (urientry.get_text () Glib::ustring relpath = Utility::relPath (openedlib_, dialog.get_uri ()); DEBUG (String::ucompose ("manage path: %1", dialog.get_uri())); DEBUG (String::ucompose ("library path: %1", openedlib_)); DEBUG (String::ucompose ("relative path: %1", relpath)); // Effect is that we are always setting a UTF-8 filename // NOT a URI. if (!relpath.empty ()) { entry->set_text (Glib::uri_unescape_string (relpath)); } else { entry->set_text (Glib::filename_to_utf8 (dialog.get_filename())); } } } void RefWindow::onLibraryFolder () { setDirty(library_->libraryFolderDialog ()); } void RefWindow::onManageBibtex () { Gtk::Dialog dialog (_("Manage BibTeX File"), true, false); dialog.add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_CANCEL); Gtk::VBox *vbox = dialog.get_vbox (); Gtk::VBox mybox; vbox->pack_start (mybox); vbox = &mybox; vbox->set_border_width (6); vbox->set_spacing (6); Gtk::Label explanation; explanation.set_markup ( String::ucompose ( "%1\n\n%2", _("Manage BibTeX File"), _("If you choose a file here, it will be overwritten " "whenever this library is saved.")) ); vbox->pack_start (explanation); Gtk::HBox hbox; hbox.set_spacing (6); Gtk::Label label (_("BibTeX file:")); hbox.pack_start (label, false, false, 0); Gtk::Entry urientry; hbox.pack_start (urientry); DEBUG (String::ucompose ("Got bibtextarget = %1", library_->getBibtexTarget())); Glib::RefPtr uri = Gio::File::create_for_uri (library_->getBibtexTarget () ); Glib::ustring bibfilename = uri->get_uri (); DEBUG (String::ucompose ("Got absolute path = %1", bibfilename)); // Did we fail? (if so then it's a relative path) if (bibfilename.empty ()) { bibfilename = Glib::uri_unescape_string (library_->getBibtexTarget ()); DEBUG (String::ucompose ("Got relative path = %1", bibfilename)); } urientry.set_text (bibfilename); vbox->pack_start (hbox); Gtk::HBox hbox2; hbox2.set_spacing (6); Gtk::Button browsebutton (_("_Browse..."), true); Gtk::Image *openicon = Gtk::manage ( new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON)); browsebutton.set_image (*openicon); browsebutton.signal_clicked ().connect ( sigc::bind(sigc::mem_fun (*this, &RefWindow::manageBrowseDialog), &urientry)); browsebutton.set_use_underline (true); hbox2.pack_end (browsebutton, false, false, 0); Gtk::Button clearbutton (Gtk::Stock::CLEAR); hbox2.pack_end (clearbutton, false, false, 0); clearbutton.signal_clicked ().connect ( sigc::bind (sigc::mem_fun (urientry, &Gtk::Entry::set_text), Glib::ustring())); vbox->pack_start (hbox2); // Any options here should be replicated in onExportBibtex Gtk::CheckButton bracescheck (_("Protect capitalization (surround values with {})")); vbox->pack_start (bracescheck); bracescheck.set_active (library_->getBibtexBraces ()); Gtk::CheckButton utf8check (_("Use Unicode (UTF-8) encoding")); vbox->pack_start (utf8check, false, false, 0); utf8check.set_active (library_->getBibtexUTF8 ()); vbox->show_all (); dialog.run (); // Take a UTF-8 filename (relative or abs) and convert it to URI form Glib::ustring newfilename = urientry.get_text (); Glib::ustring newtarget; if (Glib::path_is_absolute (newfilename)) { Glib::RefPtr uri = Gio::File::create_for_path (newfilename); newtarget = uri->get_path(); } else { newtarget = newfilename; } DEBUG (String::ucompose ("newtarget: %1", newtarget)); bool const newbraces = bracescheck.get_active (); if (newtarget != library_->getBibtexTarget () || newbraces != library_->getBibtexBraces () ) { setDirty (true); } library_->manageBibtex ( newtarget, bracescheck.get_active (), utf8check.get_active ()); } void RefWindow::onNewLibrary () { if (ensureSaved ()) { setDirty (false); setOpenedLib (""); clearTagList (); docview_->clear (); library_->clear (); populateTagList (); docview_->populateDocStore (); updateStatusBar (); } } void RefWindow::onOpenLibrary () { Gtk::FileChooserDialog chooser( _("Open Library"), Gtk::FILE_CHOOSER_ACTION_OPEN); chooser.set_local_only (false); if (!ensureSaved ()) return; if (!libraryfolder_.empty()) chooser.set_current_folder (libraryfolder_); chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); Gtk::FileFilter reflibfiles; reflibfiles.add_pattern ("*.reflib"); reflibfiles.set_name (_("Referencer Libraries")); chooser.add_filter (reflibfiles); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); chooser.add_filter (allfiles); if (chooser.run () == Gtk::RESPONSE_ACCEPT) { libraryfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::ustring libfile = chooser.get_uri (); chooser.hide (); setDirty (false); DEBUG (String::ucompose("Calling library_->load on %1", libfile)); if (library_->load (libfile)) { ignoreDocSelectionChanged_ = true; ignoreTagSelectionChanged_ = true; docview_->clear (); populateTagList (); docview_->populateDocStore (); ignoreDocSelectionChanged_ = false; ignoreTagSelectionChanged_ = false; updateStatusBar (); setOpenedLib (libfile); Glib::RefPtr uri = Gio::File::create_for_uri (library_->getLibraryFolder()); addfolder_ = uri->get_path (); } else { //library_->load would have shown an exception error dialog } } } void RefWindow::onSaveLibrary () { if (openedlib_.empty()) { onSaveAsLibrary (); } else { bool saveReturn; updateNotesPane (); try { saveReturn = library_->save (openedlib_); } catch (const Glib::Exception &ex) { Utility::exceptionDialog (&ex, "Saving"); } if (saveReturn) setDirty (false); } } void RefWindow::onSaveAsLibrary () { Gtk::FileChooserDialog chooser ( _("Save Library As"), Gtk::FILE_CHOOSER_ACTION_SAVE); chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); chooser.set_do_overwrite_confirmation (true); Gtk::FileFilter reflibfiles; reflibfiles.add_pattern ("*.reflib"); reflibfiles.set_name (_("Referencer Libraries")); chooser.add_filter (reflibfiles); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); chooser.add_filter (allfiles); // Browsing to remote hosts not working for some reason //chooser.set_local_only (false); if (!libraryfolder_.empty()) chooser.set_current_folder (libraryfolder_); if (chooser.run() == Gtk::RESPONSE_ACCEPT) { libraryfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::ustring libfilename = chooser.get_uri(); chooser.hide (); // Really we shouldn't add the extension if the user has chosen an // existing file rather than typing in a name themselves. libfilename = Utility::ensureExtension (libfilename, "reflib"); bool saveReturn; try { saveReturn = library_->save (libfilename); } catch (const Glib::Exception &ex) { Utility::exceptionDialog (&ex, "Saving As"); } if (saveReturn) { setDirty (false); setOpenedLib (libfilename); } else { // library_->save would have shown exception dialogs } } } void RefWindow::onAbout () { Gtk::AboutDialog dialog; std::vector authors; Glib::ustring me = "John Spray"; authors.push_back(me); dialog.set_authors (authors); dialog.set_name (DISPLAY_PROGRAM); dialog.set_version (VERSION); dialog.set_comments ("A document organiser and bibliography manager"); dialog.set_copyright ("Copyright © 2008 John Spray"); dialog.set_website ("http://icculus.org/referencer/"); // Translators: your name here! dialog.set_translator_credits (_("translator-credits")); dialog.set_logo ( Gdk::Pixbuf::create_from_file ( Utility::findDataFile ("referencer.svg"), 128, 128)); dialog.run (); } void RefWindow::onIntroduction () { Glib::ustring const uri = "ghelp:referencer"; if (Gio::AppInfo::launch_default_for_uri (uri) == false){ Gio::Error* ex = new Gio::Error(Gio::Error::FAILED, "Unable to open" "default application"); Utility::exceptionDialog (ex, String::ucompose(_("Showing '%1'"), uri)); } } void RefWindow::onAddDocFilesCancel (Gtk::Button *button, Gtk::ProgressBar *progress) { cancelAddDocFiles_ = true; progress->set_text (_("Cancelling")); button->set_sensitive (false); } void RefWindow::TaggerDialog::onCreateTag () { int uid = parent_->createTag (); selections_[uid] = true; populate (); } void RefWindow::TaggerDialog::populate () { model_->clear (); TagList::TagMap allTags = taglist_->getTags(); TagList::TagMap::iterator tagIter = allTags.begin(); TagList::TagMap::iterator const tagEnd = allTags.end(); for (; tagIter != tagEnd; ++tagIter) { Gtk::ListStore::iterator row = model_->append(); (*row)[nameColumn_] = tagIter->second.name_; (*row)[uidColumn_] = tagIter->second.uid_; (*row)[selectedColumn_] = selections_[tagIter->second.uid_]; } } void RefWindow::TaggerDialog::toggled (Glib::ustring const &path) { Gtk::ListStore::iterator row = model_->get_iter (path); int uid = (*row)[uidColumn_]; bool selected = !(*row)[selectedColumn_]; (*row)[selectedColumn_] = selected; selections_[uid] = selected; } RefWindow::TaggerDialog::TaggerDialog (RefWindow *window, TagList *taglist) : parent_(window), taglist_ (taglist) { /* Show a dialog containing a treeview of checkboxes for * tags, and a button for creating tags */ set_title (_("Tag Added Files")); set_has_separator (false); Gtk::VBox *vbox = get_vbox (); vbox->set_spacing (12); /* Map of selected tags */ std::map selections; /* Create the model */ Gtk::TreeModelColumnRecord columns; columns.add (nameColumn_); columns.add (uidColumn_); columns.add (selectedColumn_); model_ = Gtk::ListStore::create(columns); model_->set_sort_column (nameColumn_, Gtk::SORT_ASCENDING); /* Create the view */ view_ = Gtk::manage (new Gtk::TreeView (model_)); view_->set_headers_visible (false); scroll_ = Gtk::manage (new Gtk::ScrolledWindow ()); scroll_->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); scroll_->set_size_request (-1, 200); scroll_->set_shadow_type (Gtk::SHADOW_IN); scroll_->add (*view_); vbox->pack_start (*scroll_); toggle_ = Gtk::manage (new Gtk::CellRendererToggle); toggle_->property_activatable() = true; toggle_->signal_toggled().connect ( sigc::mem_fun (*this, &RefWindow::TaggerDialog::toggled)); Gtk::TreeViewColumn *selected = Gtk::manage (new Gtk::TreeViewColumn ("", *toggle_)); selected->add_attribute (toggle_->property_active(), selectedColumn_); view_->append_column (*selected); Gtk::TreeViewColumn *name_column = (Gtk::manage (new Gtk::TreeViewColumn ("", nameColumn_))); ((Gtk::CellRendererText*)(std::vector(name_column->get_cell_renderers())[0]))->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; view_->append_column (*name_column); /* "Create tag" button */ Gtk::Button *button = Gtk::manage (new Gtk::Button (_("C_reate Tag..."), true)); button->set_image (*(Gtk::manage(new Gtk::Image(Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON)))); button->signal_clicked().connect( sigc::mem_fun (*this, &RefWindow::TaggerDialog::onCreateTag)); vbox->pack_start (*button, Gtk::PACK_SHRINK); /* Response buttons */ add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); } std::vector RefWindow::TaggerDialog::tagPrompt () { /* Populate the model */ populate (); show_all (); get_vbox()->set_border_width(12); int response = run (); hide (); std::vector tags; if (response == Gtk::RESPONSE_ACCEPT) { /* append to tags for each selected tag */ std::map::iterator selIter = selections_.begin (); std::map::iterator const selEnd = selections_.end (); for (; selIter != selEnd; ++selIter) { if (selIter->second == true) { tags.push_back (selIter->first); } } } return tags; } void RefWindow::onAddDocFilesTag (std::vector &docs) { TaggerDialog dialog (this, library_->getTagList()); std::vector tags = dialog.tagPrompt (); std::vector::iterator tagIter = tags.begin (); std::vector::iterator const tagEnd = tags.end (); for (; tagIter != tagEnd; ++tagIter) { std::vector::iterator docIter = docs.begin (); std::vector::iterator const docEnd = docs.end (); for (; docIter != docEnd; ++docIter) { (*docIter)->setTag (*tagIter); } } /* He might have added or removed tags */ updateTagSizes (); } void RefWindow::addDocFiles (std::vector const &filenames) { bool const singular = (filenames.size() == 1); /* List of documents we add */ std::vector addedDocs; Gtk::Dialog dialog (_("Add Document Files"), true, false); dialog.set_icon (window_->get_icon()); Gtk::VBox *vbox = dialog.get_vbox (); vbox->set_spacing (12); Glib::ustring messagetext = String::ucompose ("%1\n\n", _("Adding document files")) + _("This process may take some time as the bibliographic " "information for each document is looked up."); Gtk::Label label ("", false); label.set_markup (messagetext); vbox->pack_start (label, false, false, 0); Gtk::ProgressBar progress; vbox->pack_start (progress, false, false, 0); Gtk::TreeModelColumn keyColumn; Gtk::TreeModelColumn textColumn; Gtk::TreeModelColumn idColumn; Gtk::TreeModelColumn metadataColumn; Gtk::TreeModelColumn resultColumn; Gtk::TreeModelColumnRecord columns; columns.add (keyColumn); columns.add (textColumn); columns.add (idColumn); columns.add (metadataColumn); columns.add (resultColumn); Glib::RefPtr reportModel = Gtk::ListStore::create(columns); Gtk::TreeView reportView (reportModel); reportView.insert_column (_("Document"), keyColumn, 0); reportView.insert_column (_("Got text"), textColumn, 1); reportView.insert_column (_("Got ID"), idColumn, 2); reportView.insert_column (_("Got metadata"), metadataColumn, 3); reportView.insert_column (_("Outcome"), resultColumn, 4); reportView.show_all (); Gtk::ScrolledWindow reportScroll; reportScroll.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); reportScroll.add (reportView); reportScroll.set_size_request (-1, 200); Gtk::Frame reportFrame; reportFrame.add (reportScroll); if (!singular) vbox->pack_start (reportFrame, true, true, 0); else dialog.set_resizable(false); /* Create buttons */ Gtk::Button *cancelButton = dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_ACCEPT); Gtk::Button *tagButton = dialog.add_button (_("_Attach tags..."), Gtk::RESPONSE_ACCEPT); Gtk::Button *closeButton = dialog.add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE); tagButton->set_sensitive (false); closeButton->set_sensitive (false); cancelButton->set_sensitive (true); cancelButton->signal_clicked().connect( sigc::bind ( sigc::mem_fun (*this, &RefWindow::onAddDocFilesCancel), cancelButton, &progress)); tagButton->signal_clicked().connect( sigc::bind ( sigc::mem_fun (*this, &RefWindow::onAddDocFilesTag), sigc::ref(addedDocs))); dialog.show_all (); vbox->set_border_width (12); Glib::ustring progresstext; cancelAddDocFiles_ = false; int n = 0; std::vector::const_iterator it = filenames.begin(); std::vector::const_iterator const end = filenames.end(); for (; it != end && !cancelAddDocFiles_; ++it) { progress.set_fraction ((float)n / (float)filenames.size()); progresstext = String::ucompose (_("%1 of %2 documents"), n, filenames.size ()); progress.set_text (progresstext); while (Gtk::Main::events_pending()) Gtk::Main::iteration (); Document *newdoc = library_->getDocList()->newDocWithFile(*it); bool added = false; bool gotMetadata = false; bool gotText = false; bool gotId = false; Glib::ustring key = ""; if (newdoc) { gotText = newdoc->readPDF (); while (Gtk::Main::events_pending()) Gtk::Main::iteration (); // If we got a DOI or eprint field this will work gotMetadata = newdoc->getMetaData (); // Generate a Zoidberg99 type key newdoc->setKey ( library_->getDocList()->uniqueKey ( newdoc->generateKey ())); // If we did not succeed in getting a title, use the filename if (newdoc->getBibData().getTitle().empty()) { Glib::ustring filename = Glib::uri_unescape_string ( Glib::path_get_basename (newdoc->getFileName())); Glib::ustring::size_type periodpos = filename.find_last_of ("."); if (periodpos != std::string::npos) { filename = filename.substr (0, periodpos); } newdoc->getBibData().setTitle (filename); } /* Add the document to the view */ docview_->addDoc (newdoc); /* Remember it for the end */ addedDocs.push_back (newdoc); /* Add-dialog UI fields */ added = true; gotId = newdoc->hasField ("doi") || newdoc->hasField ("eprint") || newdoc->hasField ("pmid"); key = newdoc->getKey (); } else { DEBUG (String::ucompose ("RefWindow::addDocFiles: Warning: didn't succeed adding '%1'. Duplicate file?\n", *it)); } if (key.empty ()) { // We didn't add this guy so didn't work out his key Glib::ustring filename = (*it); Glib::ustring::size_type len = filename.size(); key = (*it).substr(len - 14, len); } /* Glib::ustring yes = _("Yes"); Glib::ustring no = _("No"); */ /* A tick and a cross */ Glib::ustring yes (1, (gunichar)0x2714); Glib::ustring no (1, (gunichar)0x2718); Gtk::TreeModel::iterator newRow = reportModel->append(); (*newRow)[keyColumn] = key; (*newRow)[resultColumn] = added ? "Added" : "Not added"; (*newRow)[idColumn] = gotId ? yes : no; (*newRow)[textColumn] = gotText ? yes : no; (*newRow)[metadataColumn] = gotMetadata ? yes : no; reportView.scroll_to_row (reportModel->get_path(newRow)); ++n; } if (cancelAddDocFiles_) { progress.set_text (_("Cancelled")); Gtk::TreeModel::iterator newRow = reportModel->append(); (*newRow)[keyColumn] = _("Cancelled"); reportView.scroll_to_row (reportModel->get_path(newRow)); } else { progress.set_fraction (1.0); progress.set_text (_("Finished")); } closeButton->set_sensitive (true); tagButton->set_sensitive (true); cancelButton->set_sensitive (false); dialog.set_urgency_hint (true); if (!singular) { int response = Gtk::RESPONSE_ACCEPT; while (response != Gtk::RESPONSE_CLOSE) { response = dialog.run (); } } if (!filenames.empty()) { // We added something // Should check if we actually added something in case a newDoc // failed, eg if the doc was already in there setDirty (true); updateStatusBar (); } } void RefWindow::onAddDocUnnamed () { setDirty (true); Document *newdoc = library_->getDocList()->newDocUnnamed (); newdoc->setKey (library_->getDocList()->uniqueKey (newdoc->generateKey ())); if (docpropertiesdialog_->show (newdoc)) { docview_->addDoc (newdoc); updateStatusBar (); } else { library_->getDocList()->removeDoc (newdoc); } } void RefWindow::onAddDocById () { static Glib::ustring lastSelected; Gtk::Dialog dialog (_("Add Reference with ID"), true, false); Gtk::VBox *vbox = dialog.get_vbox (); /* Populate structures of ID type names, IDs */ std::vector capIds; std::vector capNames; std::map capNameToId; capIds = PluginCapability::getMetadataCapabilities (); std::vector::iterator capIter = capIds.begin(); std::vector::iterator const capEnd = capIds.end(); for (; capIter != capEnd; ++capIter) { PluginCapability::Identifier id = *capIter; Glib::ustring const name = PluginCapability::getFriendlyName(id); capNames.push_back(name); capNameToId.insert (std::pair(name, id)); } /* * A combo to select between ID types */ Gtk::ComboBoxText combo; std::vector::iterator nameIter = capNames.begin(); std::vector::iterator const nameEnd = capNames.end(); for (; nameIter != nameEnd; ++nameIter) { combo.append_text (*nameIter); } if (!lastSelected.empty()) combo.set_active_text (lastSelected); else combo.set_active_text (capNames[0]); Gtk::HBox hbox; hbox.set_spacing (6); vbox->pack_start (hbox, true, true, 0); hbox.pack_start (combo, false, false, 0); Gtk::Entry entry; hbox.pack_start (entry, true, true, 0); entry.set_activates_default (true); entry.grab_focus (); dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); dialog.set_default_response (Gtk::RESPONSE_ACCEPT); dialog.show_all (); vbox->set_border_width (12); if (dialog.run () == Gtk::RESPONSE_ACCEPT) { setDirty (true); Document *newdoc = library_->getDocList()->newDocUnnamed (); /* Look up selection to capability ID */ Glib::ustring displayField = combo.get_active_text (); std::map::iterator idIter = capNameToId.find(displayField); if (idIter == capNameToId.end()) { /* Epic fail, user somehow selected a field that * we don't remember creating */ DEBUG ("Bad displayField %1", displayField); return; } PluginCapability::Identifier capId = idIter->second; /* Look up capability ID to document field name */ Glib::ustring const field = PluginCapability::getFieldName(capId); if (field == "") { /* A capability without a valid field name */ DEBUG ("Bad capId %1", capId); } Glib::ustring id = entry.get_text (); id = Utility::trimWhiteSpace (id); if (capId == PluginCapability::DOI) { // Strip some common leading parts of DOIs id = Utility::trimLeadingString (id, "http://dx.doi.org/"); id = Utility::trimLeadingString (id, "dx.doi.org/"); id = Utility::trimLeadingString (id, "doi:"); id = Utility::trimLeadingString (id, "doi: "); } newdoc->setField (field, id); newdoc->getMetaData (); newdoc->setKey (library_->getDocList()->uniqueKey (newdoc->generateKey ())); docview_->addDoc (newdoc); updateStatusBar (); lastSelected = displayField; } } void RefWindow::onAddDocFile () { Gtk::FileChooserDialog chooser(_("Add Document"), Gtk::FILE_CHOOSER_ACTION_OPEN); configureDocumentFileChooser(chooser); chooser.set_select_multiple (true); if (chooser.run () == Gtk::RESPONSE_ACCEPT) { // Dirty is set in adddocfiles addfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::SListHandle uris = chooser.get_uris (); chooser.hide (); std::vector newfiles; for (Glib::SListHandle::iterator iter = uris.begin(); iter != uris.end(); ++iter) { newfiles.push_back (*iter); } addDocFiles (newfiles); } } void RefWindow::onAddDocFolder () { Gtk::FileChooserDialog chooser(_("Add Folder"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); // Want an option for following symlinks? (we don't do it) configureDocumentFileChooser(chooser); if (chooser.run () == Gtk::RESPONSE_ACCEPT) { // Dirty is set in adddocfiles addfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::ustring rootfoldername = chooser.get_uri(); chooser.hide (); std::vector files = Utility::recurseFolder(rootfoldername); addDocFiles (files); } } void RefWindow::configureDocumentFileChooser(Gtk::FileChooserDialog & chooser) { chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::ADD, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); chooser.set_local_only (false); if (!addfolder_.empty()) { chooser.set_current_folder (addfolder_); } } void RefWindow::onRemoveDoc () { std::vector docs = docview_->getSelectedDocs (); if (docs.size() == 0) return; bool const multiple = docs.size() > 1; Glib::ustring message; Glib::ustring secondary; if (multiple) { message = String::ucompose ( _("Are you sure you want to remove these %1 documents?"), docs.size ()); secondary = _("All tag associations and metadata for these documents will be permanently lost."); } else { message = String::ucompose ( _("Are you sure you want to remove '%1'?"), (*docs.begin ())->getKey ()); secondary = _("All tag associations and metadata for the document will be permanently lost."); } Gtk::MessageDialog confirmdialog ( message, false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); confirmdialog.set_secondary_text (secondary); confirmdialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); confirmdialog.add_button (Gtk::Stock::REMOVE, Gtk::RESPONSE_ACCEPT); confirmdialog.set_default_response (Gtk::RESPONSE_CANCEL); if (confirmdialog.run () != Gtk::RESPONSE_ACCEPT) { return; } std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end; it++) { DEBUG (String::ucompose ("RefWindow::onRemoveDoc: removeDoc on '%1'", *it)); docview_->removeDoc (*it); library_->getDocList()->removeDoc(*it); } setDirty (true); } void RefWindow::onSearch () { SearchDialog dialog(*library_, *docview_); dialog.run(); } void RefWindow::onGetMetadataDoc () { progress_->start (_("Fetching metadata")); bool doclistdirty = false; std::vector docs = docview_->getSelectedDocs (); std::vector ::iterator it = docs.begin (); std::vector ::iterator const end = docs.end (); for (int i = 0; it != end; ++it, ++i) { Document* doc = *it; if (doc->canGetMetadata ()) { setDirty (true); doclistdirty = true; doc->getMetaData (); docview_->updateDoc(doc); } progress_->update ((float)i / (float)(docs.size())); } progress_->finish (); } void RefWindow::onRenameDoc () { std::vector docs = docview_->getSelectedDocs (); if (docs.size () == 0) return; Glib::ustring message; if (docs.size () == 1) { message = String::ucompose (_("Really rename this file to '%1'?"), (*docs.begin())->getKey()); } else if (docs.size () > 1) { message = String::ucompose (_("Really rename these %1 files to their keys?"), docs.size ()); } Gtk::MessageDialog confirmdialog ( message, false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); confirmdialog.set_secondary_text (_("This action cannot be undone."), true); confirmdialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); confirmdialog.add_button (_("Rename from Key"), Gtk::RESPONSE_ACCEPT); confirmdialog.set_default_response (Gtk::RESPONSE_CANCEL); if (confirmdialog.run() != Gtk::RESPONSE_ACCEPT) return; std::vector ::iterator it = docs.begin (); std::vector ::iterator const end = docs.end (); for (; it != end; ++it) { Document* doc = *it; doc->renameFromKey (); docview_->updateDoc (doc); } updateStatusBar (); setDirty (true); } void RefWindow::onDeleteDoc () { std::vector docs = docview_->getSelectedDocs (); if (docs.size() == 0) return; bool const multiple = docs.size() > 1; Glib::ustring message; Glib::ustring secondary; if (multiple) { message = String::ucompose ( _("Are you sure you want to delete the files of these %1 documents?"), docs.size ()); secondary = _("All tag associations and metadata for these documents " "will be permanently lost, and the files they refer to will be " "irretrievably deleted."); } else { message = String::ucompose ( _("Are you sure you want to delete the file of '%1'?"), (*docs.begin ())->getKey ()); secondary = _("All tag associations and metadata for the document " "will be permanently lost, and the file it refers to will be " "irretrievably deleted."); } Gtk::MessageDialog confirmdialog ( message, false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); confirmdialog.set_secondary_text (secondary); confirmdialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); confirmdialog.add_button (Gtk::Stock::DELETE, Gtk::RESPONSE_ACCEPT); confirmdialog.set_default_response (Gtk::RESPONSE_CANCEL); if (confirmdialog.run() != Gtk::RESPONSE_ACCEPT) { return; } std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end; it++) { try { Utility::deleteFile ((*it)->getFileName ()); docview_->removeDoc (*it); library_->getDocList()->removeDoc(*it); } catch (Glib::Exception &ex) { Utility::exceptionDialog (&ex, String::ucompose (_("Deleting '%1'"), (*it)->getFileName ())); } } updateStatusBar (); setDirty (true); } void RefWindow::onOpenDoc () { std::vector docs = docview_->getSelectedDocs (); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end ; ++it) { if (!(*it)->getFileName().empty()) { try { Gio::AppInfo::launch_default_for_uri ((*it)->getFileName()); } catch (Glib::Exception &ex) { Glib::ustring file_display_name = Gio::File::create_for_uri((*it)->getFileName())->query_info()->get_display_name(); Utility::exceptionDialog (&ex, String::ucompose ( _("Trying to open file '%1'"), file_display_name)); return; } } } } void RefWindow::openProperties (Document *doc) { if (doc) { if (docpropertiesdialog_->show (doc)) { { /* Check for invalid characters in key */ Glib::ustring key = doc->getKey (); Glib::ustring sanitizedKey = library_->getDocList()->sanitizedKey (key); if (key != sanitizedKey) doc->setKey (Document::keyReplaceDialogInvalidChars(key, sanitizedKey)); } { /* Check for dupe keys */ Glib::ustring key = doc->getKey (); Glib::ustring uniqueKey = library_->getDocList()->uniqueKey (key, doc); if (key != uniqueKey) doc->setKey (Document::keyReplaceDialogNotUnique (key, uniqueKey)); } setDirty (true); docview_->updateDoc (doc); updateStatusBar (); } } } void RefWindow::onDocProperties () { Document *doc = docview_->getSelectedDoc (); openProperties (doc); } void RefWindow::onPreferences () { _global_prefs->showDialog (); } void RefWindow::onShowTagPaneToggled () { _global_prefs->setShowTagPane ( Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowTagPane"))->get_active ()); } void RefWindow::onShowTagPanePrefChanged () { bool const showtagpane = _global_prefs->getShowTagPane (); Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowTagPane"))->set_active (showtagpane); if (showtagpane) { tagpane_->show (); } else { tagpane_->hide (); } } void RefWindow::onShowNotesPaneToggled () { _global_prefs->setShowNotesPane ( Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowNotesPane"))->get_active ()); } void RefWindow::onShowNotesPanePrefChanged () { bool const shownotespane = _global_prefs->getShowNotesPane (); Glib::RefPtr ::cast_static( actiongroup_->get_action ("ShowNotesPane"))->set_active (shownotespane); if (shownotespane) { notespane_->show (); } else { notespane_->hide (); } } void RefWindow::updateOfflineIcon () { bool const offline = _global_prefs->getWorkOffline (); Gtk::StockID icon = offline ? Gtk::Stock::DISCONNECT : Gtk::Stock::CONNECT; offlineicon_->set (icon, Gtk::IconSize(Gtk::ICON_SIZE_MENU)); #if GTK_VERSION_GE(2,12) offlineicon_->set_tooltip_text ( offline ? _("Working offline") : _("Working online")); #endif } void RefWindow::onWorkOfflineToggled () { _global_prefs->setWorkOffline ( Glib::RefPtr ::cast_static( actiongroup_->get_action ("WorkOffline"))->get_active ()); updateOfflineIcon (); } void RefWindow::onWorkOfflinePrefChanged () { Glib::RefPtr ::cast_static( actiongroup_->get_action ("WorkOffline"))->set_active ( _global_prefs->getWorkOffline ()); // To pick up sensitivity changes in lookup metadata etc docSelectionChanged (); updateOfflineIcon (); } void RefWindow::updateTitle () { Glib::ustring filename; if (openedlib_.empty ()) { filename = _("Unnamed Library"); } else { filename = Gio::File::create_for_uri(openedlib_)->query_info("standard::display-name")->get_display_name(); Glib::ustring::size_type pos = filename.find (".reflib"); if (pos != Glib::ustring::npos) { filename = filename.substr (0, pos); } } window_->set_title ( (getDirty () ? "*" : "") + filename + " - " + DISPLAY_PROGRAM); } void RefWindow::setOpenedLib (Glib::ustring const &openedlib) { openedlib_ = openedlib; updateTitle(); } void RefWindow::setDirty (bool const &dirty) { dirty_ = dirty; actiongroup_->get_action("SaveLibrary") ->set_sensitive (dirty_); updateTitle (); } void RefWindow::onImport () { Gtk::FileChooserDialog chooser( _("Import References"), Gtk::FILE_CHOOSER_ACTION_OPEN); // remote not working? //chooser.set_local_only (false); if (!libraryfolder_.empty()) chooser.set_current_folder (libraryfolder_); chooser.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_REJECT); chooser.add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); chooser.set_default_response (Gtk::RESPONSE_ACCEPT); Gtk::FileFilter allfiles; allfiles.add_pattern ("*"); allfiles.set_name (_("All Files")); chooser.add_filter (allfiles); Gtk::FileFilter allbibfiles; // Complete random guesses, what are the real extensions? allbibfiles.add_pattern ("*.ris"); allbibfiles.add_pattern ("*.[bB][iI][bB]"); allbibfiles.add_pattern ("*.ref"); allbibfiles.set_name (_("Bibliography Files")); chooser.add_filter (allbibfiles); Gtk::FileFilter bibtexfiles; bibtexfiles.add_pattern ("*.[bB][iI][bB]"); bibtexfiles.set_name (_("BibTeX Files")); chooser.add_filter (bibtexfiles); Gtk::HBox extrabox; extrabox.set_spacing (6); chooser.set_extra_widget (extrabox); Gtk::Label label (_("Format:")); extrabox.pack_start (label, false, false, 0); Gtk::ComboBoxText combo; combo.append_text ("BibTeX"); combo.append_text ("EndNote"); combo.append_text ("RIS"); combo.append_text ("MODS"); //combo.append_text (_("Auto Detect")); combo.set_active (0); extrabox.pack_start (combo, true, true, 0); extrabox.show_all (); if (chooser.run () == Gtk::RESPONSE_ACCEPT) { libraryfolder_ = Glib::path_get_dirname(chooser.get_filename()); Glib::ustring filename = chooser.get_uri (); chooser.hide (); setDirty (true); BibUtils::Format format; switch (combo.get_active_row_number ()) { case 0: format = BibUtils::FORMAT_BIBTEX; break; case 1: format = BibUtils::FORMAT_ENDNOTE; break; case 2: format = BibUtils::FORMAT_RIS; break; case 3: format = BibUtils::FORMAT_MODS; break; default: // Users selected "Auto detect" // DocumentList::import will try to guess once // it has the text format = BibUtils::FORMAT_UNKNOWN; } library_->getDocList()->importFromFile (filename, format); populateTagList (); /* * Should iterate over added docs with addDoc * but this performance hit is acceptable since importing * is a super-rare operation */ docview_->populateDocStore (); updateStatusBar (); } } // Selection should be GDK_SELECTION_CLIPBOARD for the windows style // clipboard and GDK_SELECTION_PRIMARY for middle-click style void RefWindow::onPasteBibtex (GdkAtom selection) { // Should have sensitivity changing for this Glib::RefPtr clipboard = Gtk::Clipboard::get (selection); /* Gtk::Clipboard reference: If you don't want to deal with providing a separate callback, you can also use wait_for_contents(). This runs the GLib main loop recursively waiting for the contents. This can simplify the code flow, but you still have to be aware that other callbacks in your program can be called while this recursive mainloop is running. */ Glib::ustring clipboardtext = clipboard->wait_for_text (); // Uncomment this for correct behaviour with primary clipboard // only once sensitivity of explicity copy is set correctly /* if (clibboardtext.empty ()) return; */ int imported = library_->getDocList()->import (clipboardtext, BibUtils::FORMAT_BIBTEX); DEBUG (String::ucompose ("Imported %1 references", imported)); if (imported) { populateTagList (); /* * FIXME should get the Document* from the import * call and iterate over them with addDoc to be * more efficient and not risk losing selection */ docview_->populateDocStore (); updateStatusBar (); statusbar_->push (String::ucompose (_("Imported %1 BibTeX references"), imported), 0); setDirty (true); } else { Glib::ustring message = String::ucompose ( "%1", _("No references found on clipboard.\n")); Gtk::MessageDialog dialog ( message, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); dialog.run (); } } void RefWindow::onCopyCite () { std::vector docs = docview_->getSelectedDocs (); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); Glib::ustring citation = "\\cite{"; for (; it != end; ++it) { Glib::ustring const key = (*it)->getKey (); if (it != docs.begin ()) { citation += ","; } citation += key; } citation += "}"; Glib::RefPtr clipboard = Gtk::Clipboard::get (); clipboard->set_text (citation); } void RefWindow::setSensitive (bool const sensitive) { window_->set_sensitive (sensitive); } int RefWindow::sortTags ( const Gtk::TreeModel::iterator& a, const Gtk::TreeModel::iterator& b) { // This callback should return // * -1 if a compares before b // * 0 if they compare equal // * 1 if a compares after b int const & a_uid = (*a)[taguidcol_]; int const & b_uid = (*b)[taguidcol_]; bool const a_is_special = a_uid < 0; bool const b_is_special = b_uid < 0; Glib::ustring const & a_name = (*a)[tagnamecol_]; Glib::ustring const & b_name = (*b)[tagnamecol_]; if (a_is_special && b_is_special) { if (a_uid > b_uid) { return -1; } else if (a_uid < b_uid) { return 1; } else { return 0; } } else if (a_is_special) { return -1; } else if (b_is_special) { return 1; } else { return a_name.compare (b_name); } // Shut up the compiler. return 0; } void RefWindow::onResize (GdkEventConfigure *event) { _global_prefs->setWindowSize ( std::pair ( event->width, event->height)); } void RefWindow::onNotesPaneResize (Gdk::Rectangle &allocation) { _global_prefs->setNotesPaneHeight (allocation.get_height()); } void RefWindow::onFind () { docview_->getSearchEntry().grab_focus (); } void RefWindow::docSelectionChanged () { if (ignoreDocSelectionChanged_) return; int selectcount = docview_->getSelectedDocCount (); bool const somethingselected = selectcount > 0; bool const onlyoneselected = selectcount == 1; actiongroup_->get_action("CopyCite")->set_sensitive (somethingselected); actiongroup_->get_action("RemoveDoc")->set_sensitive (somethingselected); actiongroup_->get_action("DeleteDoc")->set_sensitive (somethingselected); actiongroup_->get_action("RenameDoc")->set_sensitive (somethingselected); actiongroup_->get_action("TaggerMenuAction")->set_sensitive (somethingselected); actiongroup_->get_action("DocProperties")->set_sensitive (onlyoneselected); // plugin's action std::list plugins = _global_plugins->getPlugins(); std::list::iterator pit = plugins.begin(); std::list::iterator const pend = plugins.end(); for (; pit != pend; pit++) { if ((*pit)->isEnabled()) { Plugin::ActionList actions = (*pit)->getActions (); Plugin::ActionList::iterator it = actions.begin (); Plugin::ActionList::iterator const end = actions.end (); for (; it != end; ++it) { Glib::ustring *callback = (Glib::ustring*) (*it)->get_data("sensitivity"); bool enable = (*pit)->updateSensitivity (*callback, docview_->getSelectedDocs()); (*it)->set_sensitive (enable); } } } DocumentView::Capabilities cap = docview_->getDocSelectionCapabilities (); actiongroup_->get_action("OpenDoc")->set_sensitive (cap.open); actiongroup_->get_action("GetMetadataDoc")->set_sensitive (cap.getmetadata); /* Update tagger Actions */ ignoreTaggerActionToggled_ = true; for (TagList::TagMap::iterator tagit = library_->getTagList()->getTags().begin(); tagit != library_->getTagList()->getTags().end(); ++tagit) { Glib::RefPtr action = taggerUI_[(*tagit).second.uid_].action; DocumentView::SubSet state = docview_->selectedDocsHaveTag ((*tagit).second.uid_); /* God fucking damn it, why doesn't Gtk::ToggleAction * support inconsistent state? That is so inconsistent! My eyes! */ if (state == DocumentView::ALL) { action->set_active (true); //action->set_inconsistent (false); } else if (state == DocumentView::SOME) { action->set_active (false); //action->set_inconsistent (true); } else { action->set_active (false); //action->set_inconsistent (false); } } ignoreTaggerActionToggled_ = false; /* Update notes frame text */ updateNotesPane (); updateStatusBar (); } void RefWindow::onUseListViewToggled () { _global_prefs->setUseListView ( Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseListView"))->get_active ()); } void RefWindow::onUseListViewPrefChanged () { docview_->setUseListView(_global_prefs->getUseListView ()); if (_global_prefs->getUseListView ()) { Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseListView"))->set_active (true); } else { Glib::RefPtr ::cast_static( actiongroup_->get_action ("UseIconView"))->set_active (true); } updateStatusBar (); } void RefWindow::onPluginRun (Glib::ustring const function, Plugin* plugin) { std::vector docs = docview_->getSelectedDocs(); if (plugin->doAction(function, docs)) {; /* * Update the docs in the view since the plugin could * have written to them */ std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (; it != end; ++it) { docview_->updateDoc (*it); } /* * Mark the library as dirty since the plugin might * have modified any of the documents */ setDirty (true); } } RefWindow::SearchDialog::SearchDialog (Library &library, DocumentView &view) : library_(library),documentView_(view) { xml_ = Gtk::Builder::create_from_file ( Utility::findDataFile ("search.ui")); xml_->get_widget ("SearchDialog", dialog_); xml_->get_widget ("Find", searchButton_); xml_->get_widget ("AddDocument", addButton_); xml_->get_widget ("SearchText", searchEntry_); xml_->get_widget ("Plugin", pluginCombo_); xml_->get_widget ("SearchResults", resultView_); xml_->get_widget ("Cancel", cancelButton_); xml_->get_widget ("Progress", progressbar_); searchButton_->signal_clicked().connect ( sigc::mem_fun (*this, &RefWindow::SearchDialog::search)); addButton_->signal_clicked().connect ( sigc::mem_fun (*this, &RefWindow::SearchDialog::addSelected)); Gtk::TreeModel::ColumnRecord resultCols; resultCols.add (resultTokenColumn_); resultCols.add (resultTitleColumn_); resultCols.add (resultAuthorColumn_); resultModel_ = Gtk::ListStore::create (resultCols); resultView_->set_model (resultModel_); resultView_->append_column ("Author", resultAuthorColumn_); resultView_->append_column ("Title", resultTitleColumn_); resultView_->signal_row_activated().connect ( sigc::mem_fun (*this, &RefWindow::SearchDialog::resultActivated)); resultView_->get_selection()->signal_changed().connect ( sigc::mem_fun (*this, &RefWindow::SearchDialog::updateSensitivity)); Gtk::TreeModel::ColumnRecord pluginCols; pluginCols.add (pluginPtrColumn_); pluginCols.add (pluginNameColumn_); pluginModel_ = Gtk::ListStore::create (pluginCols); pluginCombo_->set_model (pluginModel_); Gtk::CellRendererText *pluginCell = Gtk::manage (new Gtk::CellRendererText()); pluginCombo_->pack_start (*pluginCell, true); pluginCombo_->add_attribute (pluginCell->property_text(), pluginNameColumn_); } void RefWindow::SearchDialog::run () { /* FIXME: choose plugin from last time? */ Glib::ustring const defaultPlugin = "blahblahlbah"; /* Retrieve list of usable search plugins */ PluginManager::PluginList plugins = _global_plugins->getEnabledPlugins (); PluginManager::PluginList::const_iterator pluginIter = plugins.begin(); PluginManager::PluginList::const_iterator const pluginEnd = plugins.end(); for (; pluginIter != pluginEnd; pluginIter++) { if ((*pluginIter)->canSearch()) { Gtk::ListStore::iterator iter = pluginModel_->append(); Plugin *plugin = *pluginIter; (*iter)[pluginPtrColumn_] = plugin; (*iter)[pluginNameColumn_] = plugin->getShortName(); /* Make this active if it's the default */ if (plugin->getShortName() == defaultPlugin) { pluginCombo_->set_active (iter); } } } /* If the default wasn't found then make then * activate the first plugin in the list */ if (pluginModel_->children().size()) { pluginCombo_->set_active (pluginModel_->children().begin()); } searchButton_->set_sensitive (pluginModel_->children().size()); cancelButton_->hide (); progressbar_->hide (); dialog_->run (); dialog_->hide (); } bool RefWindow::SearchDialog::progressCallback (void *ptr) { RefWindow::SearchDialog *dialog = (RefWindow::SearchDialog*)ptr; return dialog->progress (); } bool RefWindow::SearchDialog::progress () { progressbar_->pulse (); } void RefWindow::SearchDialog::updateSensitivity () { bool const somethingSelected = resultView_->get_selection()->count_selected_rows () != 0; addButton_->set_sensitive (somethingSelected); } void RefWindow::SearchDialog::search () { /* UI to initial state */ cancelButton_->show (); cancelButton_->set_sensitive (true); progressbar_->show (); progressbar_->set_fraction (0.0); progressbar_->set_text (_("Searching...")); resultModel_->clear(); /* Retrieve search text */ Glib::ustring const searchTerms = searchEntry_->get_text (); DEBUG ("Searching for '%1'", searchTerms); /* Retrieve choice of plugin */ Plugin *plugin = (*(pluginCombo_->get_active()))[pluginPtrColumn_]; /* Set up progress callback */ _global_plugins->progressCallback_ = &(RefWindow::SearchDialog::progressCallback); _global_plugins->progressObject_ = this; /* Invoke plugin's search function */ Plugin::SearchResults results = plugin->doSearch(searchTerms); DEBUG ("Searching with plugin '%1'", plugin->getShortName()); /* Revoke callback */ _global_plugins->progressCallback_ = NULL; _global_plugins->progressObject_ = NULL; /* Progress UI to complete state */ cancelButton_->set_sensitive (false); progressbar_->set_fraction (1.0); progressbar_->set_text (_("Complete")); Plugin::SearchResults::const_iterator resultIter = results.begin (); Plugin::SearchResults::const_iterator const resultEnd = results.end (); for (; resultIter != resultEnd; ++resultIter) { Glib::ustring title; Glib::ustring author; Glib::ustring token; Plugin::SearchResult result = *resultIter; Plugin::SearchResult::iterator found; found = result.find("title"); if (found != result.end()) title = found->second; found = result.find("author"); if (found != result.end()) author = found->second; found = result.find("token"); if (found != result.end()) token = found->second; Gtk::ListStore::iterator newRow = resultModel_->append(); (*newRow)[resultTitleColumn_] = title; (*newRow)[resultAuthorColumn_] = author; (*newRow)[resultTokenColumn_] = token; } } void RefWindow::SearchDialog::resultActivated (const Gtk::TreePath &path, Gtk::TreeViewColumn * col) { addSelected (); } void RefWindow::SearchDialog::addSelected () { Glib::RefPtr sel = resultView_->get_selection (); if (sel->count_selected_rows() == 0) return; /* Retrieve lookup token */ Gtk::TreeModel::iterator it = sel->get_selected (); Glib::ustring const token = (*it)[resultTokenColumn_]; /* Retrieve choice of plugin */ Plugin *plugin = (*(pluginCombo_->get_active()))[pluginPtrColumn_]; Document newdoc = plugin->getSearchResult(token); if (newdoc.getField("key") == "") { newdoc.setField( "key", library_.getDocList()->uniqueKey(newdoc.generateKey(), NULL)); } documentView_.addDoc (library_.getDocList()->insertDoc(newdoc)); } bool RefWindow::SearchDialog::pluginsExist () { bool pluginsExist = false; /* Retrieve list of usable search plugins */ PluginManager::PluginList plugins = _global_plugins->getEnabledPlugins (); PluginManager::PluginList::const_iterator pluginIter = plugins.begin(); PluginManager::PluginList::const_iterator const pluginEnd = plugins.end(); for (; pluginIter != pluginEnd; pluginIter++) { if ((*pluginIter)->canSearch()) { pluginsExist = true; } } return pluginsExist; } referencer-1.2.1/src/Preferences.C0000664000175000017500000004360412042420323013711 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include "Preferences.h" Preferences *_global_prefs; #define CONF_PATH "/apps/referencer" #define USE_PROXY_KEY "/system/http_proxy/use_http_proxy" #define HTTP_PROXY_HOST_KEY "/system/http_proxy/host" #define HTTP_PROXY_PORT_KEY "/system/http_proxy/port" #define HTTP_USE_AUTH_KEY "/system/http_proxy/use_authentication" #define HTTP_AUTH_USER_KEY "/system/http_proxy/authentication_user" #define HTTP_AUTH_PASSWD_KEY "/system/http_proxy/authentication_password" #define PROXY_MODE_KEY "/system/proxy/mode" Preferences::Preferences () { confclient_ = Gnome::Conf::Client::get_default_client (); libraryfilename_ = confclient_->get_entry (CONF_PATH "/libraryfilename"); workoffline_ = confclient_->get_entry (CONF_PATH "/workoffline"); uselistview_ = confclient_->get_entry (CONF_PATH "/uselistview"); showtagpane_ = confclient_->get_entry (CONF_PATH "/showtagpane"); shownotespane_ = confclient_->get_entry (CONF_PATH "/shownotespane"); crossRefUsername_ = confclient_->get_entry (CONF_PATH "/crossrefusername"); crossRefPassword_ = confclient_->get_entry (CONF_PATH "/crossrefpassword"); width_ = confclient_->get_entry (CONF_PATH "/width"); height_ = confclient_->get_entry (CONF_PATH "/height"); notesheight_ = confclient_->get_entry (CONF_PATH "/notesheight"); proxymode_ = confclient_->get_entry (PROXY_MODE_KEY); proxyuseproxy_ = confclient_->get_entry (USE_PROXY_KEY); proxyuseauth_ = confclient_->get_entry (HTTP_USE_AUTH_KEY); proxyhost_ = confclient_->get_entry (HTTP_PROXY_HOST_KEY); proxyport_ = confclient_->get_entry (HTTP_PROXY_PORT_KEY); proxyusername_ = confclient_->get_entry (HTTP_AUTH_USER_KEY); proxypassword_ = confclient_->get_entry (HTTP_AUTH_PASSWD_KEY); /* * List view options */ listSortColumn_ = confclient_->get_entry (CONF_PATH "/listsortcolumn"); listSortOrder_ = confclient_->get_entry (CONF_PATH "/listsortorder"); if (!confclient_->dir_exists (CONF_PATH)) { DEBUG ( "Preferences::Preferences: CONF_PATH " "doesn't exist, setting it up"); setLibraryFilename (""); setShowTagPane (true); setShowNotesPane (true); setNotesPaneHeight (-1); setUseListView (false); setWorkOffline (false); setWindowSize (std::pair(700,500)); setListSort ("title", 0); firsttime_ = true; } else { firsttime_ = false; } confclient_->add_dir ( CONF_PATH, Gnome::Conf::CLIENT_PRELOAD_NONE); confclient_->add_dir ( "/system/http_proxy", Gnome::Conf::CLIENT_PRELOAD_NONE); confclient_->add_dir ( "/system/proxy", Gnome::Conf::CLIENT_PRELOAD_NONE); confclient_->notify_add ( CONF_PATH, sigc::mem_fun (*this, &Preferences::onConfChange)); confclient_->notify_add ( "/system/http_proxy", sigc::mem_fun (*this, &Preferences::onConfChange)); confclient_->notify_add ( "/system/proxy", sigc::mem_fun (*this, &Preferences::onConfChange)); xml_ = Gtk::Builder::create_from_file (Utility::findDataFile ("preferences.ui")); xml_->get_widget ("Preferences", dialog_); xml_->get_widget ("ProxyHost", proxyhostentry_); xml_->get_widget ("ProxyPort", proxyportspin_); xml_->get_widget ("ProxyUsername", proxyusernameentry_); xml_->get_widget ("ProxyPassword", proxypasswordentry_); xml_->get_widget ("UseWebProxy", useproxycheck_); xml_->get_widget ("UseAuthentication", useauthcheck_); proxyhostentry_->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); proxyportspin_->signal_value_changed().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); proxyusernameentry_->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); proxypasswordentry_->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); useproxycheck_->signal_toggled().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); useauthcheck_->signal_toggled().connect ( sigc::mem_fun (*this, &Preferences::onProxyChanged)); /* * Plugins */ disabledPlugins_ = confclient_->get_entry (CONF_PATH "/disabledplugins"); Gnome::Conf::SListHandle_ValueString disable = confclient_->get_string_list (disabledPlugins_.get_key ()); xml_->get_widget ("PluginConfigure", configureButton_); configureButton_->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::onPluginConfigure)); xml_->get_widget ("PluginAbout", aboutButton_); aboutButton_->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::onPluginAbout)); // Iterate over all plugins std::list plugins = _global_plugins->getPlugins(); std::list::iterator pit = plugins.begin(); std::list::iterator const pend = plugins.end(); for (; pit != pend; pit++) { // All enabled unless disabled (*pit)->setEnabled(true); Gnome::Conf::SListHandle_ValueString::iterator dit = disable.begin(); Gnome::Conf::SListHandle_ValueString::iterator const dend = disable.end(); for (; dit != dend; ++dit) { if ((*pit)->getShortName() == (*dit)) { (*pit)->setEnabled(false); DEBUG (String::ucompose ("disabling plugin %1", (*pit)->getShortName())); } } } Gtk::TreeModel::ColumnRecord pluginCols; pluginCols.add (colPriority_); pluginCols.add (colPlugin_); pluginCols.add (colEnabled_); pluginCols.add (colShortName_); pluginCols.add (colLongName_); pluginStore_ = Gtk::ListStore::create (pluginCols); // Re-use plugins list from enable/disable stage above std::list::iterator it = plugins.begin(); std::list::iterator const end = plugins.end(); for (int count = 0; it != end; ++it, ++count) { Gtk::TreeModel::iterator item = pluginStore_->append(); (*item)[colPriority_] = count; (*item)[colShortName_] = (*it)->getShortName (); (*item)[colLongName_] = (*it)->getLongName (); (*item)[colEnabled_] = (*it)->isEnabled (); (*item)[colPlugin_] = (*it); } xml_->get_widget ("Plugins", pluginView_); Gtk::CellRendererToggle *toggle = Gtk::manage (new Gtk::CellRendererToggle); toggle->property_activatable() = true; toggle->signal_toggled().connect (sigc::mem_fun (*this, &Preferences::onPluginToggled)); Gtk::TreeViewColumn *enabled = Gtk::manage (new Gtk::TreeViewColumn (_("Enabled"), *toggle)); enabled->add_attribute (toggle->property_active(), colEnabled_); pluginView_->append_column (*enabled); Gtk::TreeViewColumn *shortName = Gtk::manage (new Gtk::TreeViewColumn (_("Module"), colShortName_)); pluginView_->append_column (*shortName); Gtk::TreeViewColumn *longName = Gtk::manage (new Gtk::TreeViewColumn (_("Description"), colLongName_)); pluginView_->append_column (*longName); pluginView_->set_model (pluginStore_); pluginSel_ = pluginView_->get_selection (); pluginSel_->signal_changed().connect( sigc::mem_fun (*this, &Preferences::onPluginSelect)); onPluginSelect (); /* * End of Plugins */ ignoreChanges_ = false; } Preferences::~Preferences () { } void Preferences::onConfChange (int number, Gnome::Conf::Entry entry) { ignoreChanges_ = true; Glib::ustring key = entry.get_key (); // Settings not in dialog if (key == CONF_PATH "/workoffline") { workofflinesignal_.emit (); } else if (key == CONF_PATH "/uselistview") { uselistviewsignal_.emit (); } else if (key == CONF_PATH "/showtagpane") { showtagpanesignal_.emit (); } else if (key == CONF_PATH "/shownotespane") { shownotespanesignal_.emit (); // Proxy settings } else if (key == HTTP_PROXY_HOST_KEY) { proxyhostentry_->set_text ( entry.get_value ().get_string ()); } else if (key == HTTP_PROXY_PORT_KEY) { proxyportspin_->get_adjustment ()->set_value ( entry.get_value ().get_int ()); } else if (key == HTTP_AUTH_USER_KEY) { proxyusernameentry_->set_text ( entry.get_value ().get_string ()); } else if (key == HTTP_AUTH_PASSWD_KEY) { proxypasswordentry_->set_text ( entry.get_value ().get_string ()); } else if (key == PROXY_MODE_KEY || key == USE_PROXY_KEY) { Glib::ustring const mode = confclient_->get_string (PROXY_MODE_KEY); useproxycheck_->set_active ( mode != "none" && confclient_->get_bool (USE_PROXY_KEY)); updateSensitivity (); } else if (key == HTTP_USE_AUTH_KEY) { useauthcheck_->set_active (entry.get_value ().get_bool ()); updateSensitivity (); } else if (key == CONF_PATH "/disabledplugins") { plugindisabledsignal_.emit (); /* keys to ignore */ } else if ( key == CONF_PATH "/width" || key == CONF_PATH "/height" || key == CONF_PATH "/notesheight") { ; } else { DEBUG (String::ucompose("unhandled key %1", key)); } ignoreChanges_ = false; } void Preferences::showDialog () { ignoreChanges_ = true; /* * Plugin stuff was populated at construction time * and should remain in a consistent state thereafter */ proxyhostentry_->set_text ( confclient_->get_string (HTTP_PROXY_HOST_KEY)); proxyportspin_->get_adjustment ()->set_value ( confclient_->get_int (HTTP_PROXY_PORT_KEY)); proxyusernameentry_->set_text ( confclient_->get_string (HTTP_AUTH_USER_KEY)); proxypasswordentry_->set_text ( confclient_->get_string (HTTP_AUTH_PASSWD_KEY)); Glib::ustring const mode = confclient_->get_string (PROXY_MODE_KEY); useproxycheck_->set_active ( mode != "none" && confclient_->get_bool (USE_PROXY_KEY)); useauthcheck_->set_active (confclient_->get_bool (HTTP_USE_AUTH_KEY)); ignoreChanges_ = false; updateSensitivity (); dialog_->run (); dialog_->hide (); } void Preferences::updateSensitivity () { bool useproxy = useproxycheck_->get_active (); proxyhostentry_->set_sensitive (useproxy); proxyportspin_->set_sensitive (useproxy); useauthcheck_->set_sensitive (useproxy); bool useauth = useauthcheck_->get_active (); proxyusernameentry_->set_sensitive (useproxy && useauth); proxypasswordentry_->set_sensitive (useproxy && useauth); } void Preferences::onProxyChanged () { if (ignoreChanges_) return; bool useproxy = useproxycheck_->get_active (); bool useauth = useauthcheck_->get_active (); confclient_->set (proxyuseproxy_.get_key (), useproxy); if (useproxy) { confclient_->set (proxymode_.get_key (), Glib::ustring ("manual")); confclient_->set ( proxyhost_.get_key(), proxyhostentry_->get_text ()); confclient_->set ( proxyport_.get_key(), (int) proxyportspin_->get_adjustment ()->get_value ()); } else { confclient_->set (proxymode_.get_key (), Glib::ustring ("none")); } confclient_->set (proxyuseauth_.get_key(), useauth); if (useproxy && useauth) { confclient_->set ( proxyusername_.get_key(), proxyusernameentry_->get_text ()); confclient_->set ( proxypassword_.get_key(), proxypasswordentry_->get_text ()); } updateSensitivity (); } Glib::ustring Preferences::getLibraryFilename () { return confclient_->get_string (libraryfilename_.get_key()); } void Preferences::setLibraryFilename (Glib::ustring const &filename) { return confclient_->set (libraryfilename_.get_key(), filename); } bool Preferences::getWorkOffline () { return confclient_->get_bool (workoffline_.get_key()); } void Preferences::setWorkOffline (bool const &offline) { confclient_->set (workoffline_.get_key(), offline); } sigc::signal& Preferences::getWorkOfflineSignal () { return workofflinesignal_; } sigc::signal& Preferences::getPluginDisabledSignal () { return plugindisabledsignal_; } bool Preferences::getUseListView () { return confclient_->get_bool (uselistview_.get_key()); } void Preferences::setUseListView (bool const &uselistview) { confclient_->set (uselistview_.get_key(), uselistview); } sigc::signal& Preferences::getUseListViewSignal () { return uselistviewsignal_; } bool Preferences::getShowTagPane () { return confclient_->get_bool (showtagpane_.get_key()); } void Preferences::setShowTagPane (bool const &showtagpane) { confclient_->set (showtagpane_.get_key(), showtagpane); } sigc::signal& Preferences::getShowTagPaneSignal () { return showtagpanesignal_; } bool Preferences::getShowNotesPane () { return confclient_->get_bool (shownotespane_.get_key()); } void Preferences::setShowNotesPane (bool const &shownotespane) { confclient_->set (shownotespane_.get_key(), shownotespane); } sigc::signal& Preferences::getShowNotesPaneSignal () { return shownotespanesignal_; } Glib::ustring Preferences::getCrossRefUsername () { return confclient_->get_string (crossRefUsername_.get_key()); } Glib::ustring Preferences::getCrossRefPassword () { return confclient_->get_string (crossRefPassword_.get_key()); } void Preferences::setCrossRefUsername (Glib::ustring const &username) { confclient_->set (crossRefUsername_.get_key(), username); } void Preferences::setCrossRefPassword (Glib::ustring const &password) { confclient_->set (crossRefPassword_.get_key(), password); } std::pair Preferences::getWindowSize () { std::pair size; size.first = confclient_->get_int (width_.get_key ()); size.second = confclient_->get_int (height_.get_key ()); // Cope with upgrading if (size.first == 0 || size.second == 0) { size.first = 700; size.second = 500; } return size; } int Preferences::getNotesPaneHeight () { int height = confclient_->get_int (notesheight_.get_key ()); if (height == 0) return -1; else return height; } void Preferences::setNotesPaneHeight (int height) { confclient_->set (notesheight_.get_key (), height); } void Preferences::setWindowSize (std::pair size) { confclient_->set (width_.get_key (), size.first); confclient_->set (height_.get_key (), size.second); } std::pair Preferences::getListSort () { std::pair retval; try { retval.first = confclient_->get_string (listSortColumn_.get_key()); } catch (Gnome::Conf::Error &err) { DEBUG ("Got a gconf error '%1', probably a legacy config, defaulting.", err.what()); DEBUG ("Legacy config, setting no sort column"); retval.first = ""; } DEBUG ("Got column '%1'", retval.first); retval.second = confclient_->get_int (listSortOrder_.get_key()); return retval; } void Preferences::setListSort (Glib::ustring const &columnName, int const order) { confclient_->set (listSortColumn_.get_key(), columnName); confclient_->set (listSortOrder_.get_key(), order); } void Preferences::onPluginToggled (Glib::ustring const &str) { Gtk::TreePath path(str); Gtk::TreeModel::iterator it = pluginStore_->get_iter (path); bool enable = !(*it)[colEnabled_]; Plugin *plugin = (*it)[colPlugin_]; plugin->setEnabled (enable); if (enable) { DEBUG (String::ucompose("enabling plugin %1", plugin->getShortName())); } else { DEBUG (String::ucompose("disabling plugin %1", plugin->getShortName())); } (*it)[colEnabled_] = plugin->isEnabled (); if (plugin->isEnabled() != enable) { if (plugin->hasError()) { TextDialog dialog (_("Plugin error"), plugin->getError()); dialog.run (); } } std::vector disable = confclient_->get_string_list (disabledPlugins_.get_key ()); std::vector::iterator dit = disable.begin(); std::vector::iterator const dend = disable.end(); if (plugin->isEnabled() == true) { // Remove from gconf list of disabled plugins for (; dit != dend; ++dit) { if (*dit == plugin->getShortName()) { disable.erase(dit); break; } } } else { // Add to gconf list of disabled plugins bool found = false; for (; dit != dend; ++dit) if (*dit == plugin->getShortName()) found = true; if (!found) disable.push_back(plugin->getShortName()); } confclient_->set_string_list (disabledPlugins_.get_key(), disable); } void Preferences::disablePlugin (Plugin *plugin) { Gtk::ListStore::iterator it = pluginStore_->children().begin(); Gtk::ListStore::iterator const end = pluginStore_->children().end(); for (; it != end; ++it) { if ((*it)[colPlugin_] == plugin) { (*it)[colEnabled_] = false; } } plugin->setEnabled (false); std::vector disable = confclient_->get_string_list (disabledPlugins_.get_key ()); std::vector::iterator dit = disable.begin(); std::vector::iterator const dend = disable.end(); bool found = false; for (; dit != dend; ++dit) if (*dit == plugin->getShortName()) found = true; if (!found) disable.push_back(plugin->getShortName()); confclient_->set_string_list (disabledPlugins_.get_key(), disable); } /** * Update sensitivities on plugin selection changed */ void Preferences::onPluginSelect () { if (pluginSel_->count_selected_rows () == 0) { aboutButton_->set_sensitive(false); configureButton_->set_sensitive(false); } else { Gtk::ListStore::iterator it = pluginSel_->get_selected(); Plugin *plugin = (*it)[colPlugin_]; aboutButton_->set_sensitive(true); configureButton_->set_sensitive(plugin->canConfigure()); } } /** * Display a Gtk::AboutDialog for the selected plugin */ void Preferences::onPluginAbout () { Gtk::ListStore::iterator it = pluginSel_->get_selected(); Plugin *plugin = (*it)[colPlugin_]; Gtk::AboutDialog dialog; dialog.set_name (plugin->getShortName()); dialog.set_version (plugin->getVersion()); dialog.set_comments (plugin->getLongName()); if (!plugin->getAuthor().empty()) { dialog.set_copyright ("Authors: " + plugin->getAuthor()); } // dialog.set_website ("http://icculus.org/referencer/"); /* dialog.set_logo ( Gdk::Pixbuf::create_from_file ( Utility::findDataFile ("referencer.svg"), 128, 128));*/ dialog.run (); } /** * Call the selected plugin's configuration hook if it has one */ void Preferences::onPluginConfigure () { Gtk::ListStore::iterator it = pluginSel_->get_selected(); Plugin *plugin = (*it)[colPlugin_]; plugin->doConfigure (); } /** * Store a setting on behalf of a plugin */ void Preferences::setPluginPref (Glib::ustring const &key, Glib::ustring const &value) { confclient_->set (Glib::ustring(CONF_PATH) + "/plugin/" + key, value); } /** * Retrieve a setting on behalf of a plugin */ Glib::ustring Preferences::getPluginPref (Glib::ustring const &key) { return confclient_->get_string (Glib::ustring(CONF_PATH) + "/plugin/" + key); } referencer-1.2.1/src/ustring.h0000664000175000017500000000712712150641154013217 00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Copyright (C) 2005-2006 Dodji Seketeli * 2007 Marko Anastasov * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __GLIBMM_USTRING_UTILS_H__ #define __GLIBMM_USTRING_UTILS_H__ #include #include #include #include namespace Glib { namespace Util { /// \brief Conversion exception. class BadConversion { public: BadConversion(const Glib::ustring& msg) {} }; /// \brief Splits a string into tokens. std::vector split(const Glib::ustring& str, const Glib::ustring& delim); /// \brief Splits a string by whitespace (after skipping any leading /// whitespace) - like Perl's split function without the pattern. std::vector split(const Glib::ustring& str); /// \brief Trims left hand side whitespace void trim_left(Glib::ustring& str); /// \brief Trims right hand side whitespace void trim_right(Glib::ustring& str); /// \brief Trims any whitespace from the string void trim(Glib::ustring& str); /// \brief Converts an ostream-able type to a Glib::ustring template inline Glib::ustring stringify(const T& x) { std::ostringstream os; if (! (os << x)) throw BadConversion( "Cannot convert " + Glib::ustring(typeid(x).name()) + " to string"); return os.str(); } /// \brief Converts a string to an arbitrary type that supports iostream. /// Inspired by the C++ FAQ. /// \param str the string to convert /// \param x the object to hold converted value /// \param fail_if_leftover_chars if set to true, the function will /// throw a BadConversion exception if any characters are remaining after /// the conversion template inline void convert_to(const Glib::ustring& str, T& x, bool fail_if_leftover_chars = true) { std::istringstream is(str.raw()); char c; if ((! (is >> x)) || (fail_if_leftover_chars && is.get(c))) throw BadConversion(str); } /// \brief Converts a string to an arbitrary type that supports iostream /// by returning by value. /// This is a convenience function which is handy for conversions to /// primitive types. /// \param str the string to convert /// \param fail_if_leftover_chars if set to true, the function will /// throw a BadConversion exception if any characters are remaining after /// the conversion /// \return the object with converted value template inline T convert_to(const Glib::ustring& str, bool fail_if_leftover_chars = true) { T x; convert_to(str, x, fail_if_leftover_chars); return x; } /// \brief a printf() that returns a Glib::ustring Glib::ustring uprintf(const Glib::ustring& format, ...); } // namespace Util } // namespace Glib #endif // __GLIBMM_USTRING_UTILS_H__ referencer-1.2.1/src/BibUtils.h0000664000175000017500000000163412042412720013231 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef BIBUTILS_WRAPPER_H #define BIBUTILS_WRAPPER_H #include #include "Document.h" extern "C" { namespace BibUtils { #include "libbibutils/bibutils.h" typedef enum { FORMAT_BIBTEX = BIBL_BIBTEXIN, FORMAT_ENDNOTE = BIBL_ENDNOTEIN, FORMAT_RIS = BIBL_RISIN, FORMAT_MODS = BIBL_MODSIN, FORMAT_UNKNOWN = -1 } Format; std::string formatType (fields *info); int getType (fields *info); std::string formatPeople(fields *info, char *tag, char *ctag, int level); std::string formatPerson (std::string const &munged); Document parseBibUtils (BibUtils::fields *ref); Format guessFormat (std::string const &rawtext); void biblFromString ( bibl &b, std::string const &rawtext, Format format, param &p); } } #endif referencer-1.2.1/src/Utility.C0000664000175000017500000015237112144660257013134 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ /* * The wvConvertUnicodeToLaTeX function is based on the function of the same * name in the wv library, Copyright (C) Caolan McNamara, Dom Lachowicz, and others */ /* * The eel_* functions are copied from libeel, Copyright © 2000 Eazel, Inc. * The art_rgb_run_alpha function in Document.C is copied from libart, Copyright © Raph Levien 1998 */ /* * mozUrlSelectionToUTF8 is derived from gnome-terminal * Copyright © Havoc Pennington 2001 */ #include // The gtkmm in Ubuntu 6.04 doesn't seem to get this in #include #include #include #include #include "ucompose.hpp" #include #include "Utility.h" namespace Utility { Glib::ustring firstAuthor ( Glib::ustring const &authors) { Glib::ustring::size_type n = authors.find (" and"); if (n != Glib::ustring::npos) { return authors.substr(0, n); } else { return authors; } } Glib::ustring wrap ( Glib::ustring const &str, Glib::ustring::size_type width, int lines, bool const pad) { /* * Note on wrapping * * This is used for padding out entries in the iconview * What we do is pad to 85% of the remaining chars needed * to reach width, with em-spaces. It's a hack. It just * about works most of the time. */ Glib::ustring::size_type n = 0; int line = 0; if (lines == -1) lines = 99999; unsigned int remainder = str.size(); Glib::ustring wrapped; gunichar wideSpace = 0x2002; Glib::ustring padElement = Glib::ustring (1, wideSpace); while (line < lines) { if (line > 0) wrapped += Glib::ustring("\n"); if (remainder > width) { Glib::ustring snaffle = str.substr (n, width); if (snaffle.substr(0,1) == " ") snaffle = snaffle.substr(1, snaffle.size() - 1); Glib::ustring::size_type bite = snaffle.rfind (" "); if (bite == Glib::ustring::npos) { bite = snaffle.size(); } else { snaffle = snaffle.substr(0, bite); } if (line == lines - 1) { if (snaffle.size() + 3 < width) { snaffle += Glib::ustring ("..."); } else { snaffle = snaffle.substr(0, snaffle.size() - 3); snaffle += Glib::ustring ("..."); } } wrapped += snaffle; n += snaffle.size(); remainder -= snaffle.size(); if (pad) { int mspaces = (int)((float)(width - snaffle.size()) * 0.85); for (int i = 0; i < mspaces; ++i) wrapped += padElement; } line++; } else { Glib::ustring snaffle = str.substr (n, remainder); if (snaffle.substr(0,1) == " ") snaffle = snaffle.substr(1, snaffle.size() - 1); wrapped += snaffle; remainder -= snaffle.size(); if (pad) { int mspaces = (int)((float)(width - snaffle.size()) * 0.85); for (int i = 0; i < mspaces; ++i) wrapped += padElement; } break; } } return wrapped; } bool hasExtension ( Glib::ustring const &filename, Glib::ustring const &ex) { Glib::ustring::size_type pos = filename.find ("." + ex); if (pos != Glib::ustring::npos) { if (pos + ex.size () + 1 == filename.size()) { return true; } } return false; } bool uriIsFast ( Glib::RefPtr uri) { Glib::ustring const scheme = uri->get_uri_scheme (); if (scheme == "file" || scheme == "smb") { return true; } else { return false; } } StringPair twoWaySplit ( Glib::ustring const &str, Glib::ustring const ÷r) { StringPair retval; int pos = str.find (divider); if (pos == (int)Glib::ustring::npos) { retval.first = str; } else { retval.first = str.substr (0, pos); retval.second = str.substr (pos + divider.length(), str.length ()); } return retval; } Glib::ustring strip ( Glib::ustring const &victim, Glib::ustring const &unwanted) { Glib::ustring stripped = victim; while (stripped.find (unwanted) != Glib::ustring::npos) { int pos = stripped.find (unwanted); stripped = stripped.substr (0, pos) + stripped.substr (pos + unwanted.length (), stripped.length ()); } return stripped; } Glib::ustring ensureExtension ( Glib::ustring const &filename, Glib::ustring const &extension) { if (filename.find (".") != Glib::ustring::npos) return filename; else { return filename + "." + extension; } } Glib::ustring findDataFile ( Glib::ustring const &filename) { Glib::ustring localfile; if (Glib::path_is_absolute (filename)) { localfile = filename; } else { localfile = Glib::build_filename ( Glib::get_current_dir (), "data", filename); } Glib::RefPtr uri = Gio::File::create_for_path (localfile); if (uri->query_exists ()) { return localfile; } else { Glib::ustring const installedfile = Glib::build_filename (DATADIR, filename); uri = Gio::File::create_for_path (installedfile); if (uri->query_exists ()) { return installedfile; } } // Fall through DEBUG ("Utility::findDataFile: couldn't " "find file '%1'", filename); return Glib::ustring(); } bool fileExists ( Glib::ustring const &filename) { if (filename.empty ()) return false; Glib::RefPtr uri = Gio::File::create_for_uri (filename); return uri->query_exists (); } void exceptionDialog ( Glib::Exception const *ex, Glib::ustring const &context) { //gdk_threads_enter (); Glib::ustring message = String::ucompose ( _("%1: %2\n\n%3"), _("Exception"), Glib::Markup::escape_text (ex->what ()), String::ucompose ( _("The operation underway was: \"%1\""), context) ); Gtk::MessageDialog dialog ( message, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); //gdk_threads_leave (); /* * run() contains this: GDK_THREADS_LEAVE (); g_main_loop_run (ri.loop); GDK_THREADS_ENTER (); */ dialog.run (); } static Glib::ustring _basepath; std::vector _filestoadd; bool onAddDocFolderRecurse (const Glib::RefPtr& info, bool recurse) { Glib::ustring fullname = _basepath; Glib::ustring basename = Glib::filename_display_basename (info->get_name ()); bool is_reflib = Utility::hasExtension (basename, "reflib"); bool is_bib = Utility::hasExtension (basename, "bib"); bool is_dotfile = basename[0] == '.'; Glib::RefPtr dir; if (basename == ".svn" || basename == "CVS" || is_reflib || is_bib || is_dotfile) { return true; }else if (info->get_file_type () == Gio::FILE_TYPE_DIRECTORY) { // Build subdirectory name if (recurse){ Glib::ustring subdirname = Glib::build_filename ( _basepath, Glib::uri_escape_string(basename)); Glib::RefPtr diruri = Gio::File::create_for_uri (subdirname); dir = diruri->enumerate_children (); _basepath = subdirname; }else{ Glib::RefPtr diruri = Gio::File::create_for_uri (fullname); dir = diruri->enumerate_children (); } //Enumerate files and add them to _filestoadd while(Glib::RefPtr nextinfolder = dir->next_file()){ // Found subdirectory, add it's files first if(nextinfolder->get_file_type () == Gio::FILE_TYPE_DIRECTORY){ onAddDocFolderRecurse(nextinfolder, true); }else{ fullname = Glib::build_filename ( _basepath, Glib::uri_escape_string(nextinfolder->get_name())); _filestoadd.push_back (fullname); } } dir->close(); }else { _filestoadd.push_back (fullname); } return true; } std::vector recurseFolder ( Glib::ustring const &rootfoldername) { Glib::RefPtr diruri = Gio::File::create_for_uri (rootfoldername); DEBUG("Adding Files From Folder %1", rootfoldername); Glib::RefPtr dirinfo = diruri->query_info(); _basepath = rootfoldername; _filestoadd.clear(); onAddDocFolderRecurse(dirinfo, false); // A hurtful copy to avoid _filestoadd sticking around afterwards. std::vector filescopy; filescopy = _filestoadd; _filestoadd.clear (); return filescopy; } void writeBibKey ( std::ostringstream &out, Glib::ustring key, Glib::ustring const & value, bool const usebraces, bool const utf8) { if (!key.validate()) { DEBUG ("Bad unicode"); return; } if (!value.validate ()) { DEBUG (String::ucompose ("Bad unicode for key %1", key)); return; } if (!value.empty ()) { // Okay to always append comma, since bibtex doesn't mind the trailing one if (utf8) { /* Exception to rule for braces for pages, since * {{100--200}} causes problems for some reason */ if (usebraces && key.lowercase() != "pages") out << "\t" << key << " = {{" << value << "}},\n"; else out << "\t" << key << " = {" << value << "},\n"; } else { if (usebraces && key.lowercase() != "pages") out << "\t" << key << " = {{" << escapeBibtexAccents (value) << "}},\n"; else out << "\t" << key << " = {" << escapeBibtexAccents (value) << "},\n"; } } } std::string escapeBibtexAccents ( Glib::ustring target) { for (Glib::ustring::size_type i = 0; i < target.length(); ++i) { gunichar letter = target[i]; if (letter < 128) { // Rationale: although in general we pass through {,},\ etc to allow // the user to use his own latex-isms, the ampersand has no legitimate // purpose in a bibtex string and is quite common in titles etc. if (letter == '&' && i > 0 && target[i - 1] != '\\') { target.erase (i, 1); target.insert (i, "\\&"); i += 1; } continue; } else { Glib::ustring replacement; int gotone = wvConvertUnicodeToLaTeX (letter, replacement); if (!gotone) { DEBUG ("escapeBibtexAccents: no replacement found for '%1'", letter); replacement = "*"; } target.erase (i, 1); target.insert (i, replacement); i += replacement.length () - 1; } } return target; } Glib::ustring firstCap ( Glib::ustring original) { original = original.lowercase (); original = Glib::Unicode::toupper ( original[0]) + original.substr (1, original.length()); return original; } Glib::ustring relPath ( Glib::ustring parent, Glib::ustring child) { if (parent.empty () || child.empty ()) { return ""; } Glib::ustring separator = Glib::build_filename ("-", "-"); separator = separator.substr (1, separator.length() - 2); std::vector libparts; Glib::ustring::size_type next; while ((next = parent.find (separator)) != Glib::ustring::npos) { Glib::ustring chunk = parent.substr (0, next); libparts.push_back (chunk); parent = parent.substr (next + 1, parent.length() - 1); } std::vector docparts; while ((next = child.find (separator)) != Glib::ustring::npos) { Glib::ustring chunk = child.substr (0, next); docparts.push_back (chunk); child = child.substr (next + 1, child.length() - 1); } // Should use Gnome::Vfs::Uri::is_parent? // and Gnome::Vfs::Uri::resolve_relative? bool ischild = true; for (Glib::ustring::size_type i = 0; i < libparts.size() - 1; ++i) { if (docparts.size() < i + 1 || libparts[i] != docparts[i]) { ischild = false; break; } } Glib::ustring relfilename = ""; if (ischild) { for (Glib::ustring::size_type i = libparts.size(); i < docparts.size(); ++i) { relfilename += docparts[i]; relfilename += separator; } relfilename += child; } return relfilename; } Glib::RefPtr getThemeIcon(Glib::ustring const &iconname) { Glib::RefPtr theme = Gtk::IconTheme::get_default(); if (!theme) { DEBUG ("Utility::getThemeIcon: failed to load default theme"); return Glib::RefPtr (NULL); } if (!iconname.empty()) { if (theme->has_icon(iconname)) { Glib::RefPtr pixbuf = theme->load_icon(iconname, 96, Gtk::ICON_LOOKUP_FORCE_SVG); if (!pixbuf) DEBUG ("Utility::getThemeIcon: icon '%1' failed to load", iconname); return pixbuf; } else { DEBUG ("Utility::getThemeIcon: icon '%1' no found", iconname); } } // Fall through on failure return Glib::RefPtr (NULL); } Glib::RefPtr getThemeMenuIcon(Glib::ustring const &iconname) { Glib::RefPtr icon = getThemeIcon (iconname); if (icon) return icon->scale_simple (16, 16, Gdk::INTERP_BILINEAR); else return icon; } void deleteFile ( Glib::ustring const &target_uri_str) { // Caller is responsible for catching Gio::Error exceptions Glib::RefPtr file = Gio::File::create_for_uri(target_uri_str); file->remove(); } #if 0 // This DOES NOT WORK. Transfer::transfer always throws an exception void moveToTrash ( Glib::ustring const &target_uri_str) { // This and following Gnome::Vfs funcs may throw exceptions, // but it's our caller's responsibility to catch them. Glib::RefPtr target = Gnome::Vfs::Uri::create (target_uri_str); GnomeVFSURI *newuri = NULL; GnomeVFSResult res = gnome_vfs_find_directory ( target->gobj (), GNOME_VFS_DIRECTORY_KIND_TRASH, &newuri, TRUE, TRUE, 0); if (res != GNOME_VFS_OK || newuri == NULL) { throw (new Glib::FileError (Glib::FileError::NO_SUCH_ENTITY, "Cannot find trash")); } Glib::RefPtr trash = Glib::wrap (newuri); if (trash->is_parent (target, true)) { throw (new Glib::FileError (Glib::FileError::EXISTS, "File is already in trash")); } Glib::ustring shortname = target->extract_short_name (); Glib::RefPtr dest = trash->append_path (shortname); try{ std::cerr << target->to_string () << "\n"; std::cerr << dest->to_string () << "\n"; Gnome::Vfs::Transfer::transfer ( target, dest, Gnome::Vfs::XFER_REMOVESOURCE, Gnome::Vfs::XFER_ERROR_MODE_ABORT, Gnome::Vfs::XFER_OVERWRITE_MODE_SKIP); } catch (Gnome::Vfs::exception ex) { std::cerr << "2: " << ex.what () << "\n"; } } #endif /* w00t, copied and pasted from AbiWord and then iso8859-1 stuff added */ #undef printf #define printf(x) out = ("{" x "}"); int wvConvertUnicodeToLaTeX(gunichar char16, Glib::ustring &out) { //DEBUG: printf("%d,%c\n",char16,char16); /* german and scandinavian characters, MV 1.7.2000 See man iso_8859_1 This requires the inputencoding latin1 package, see latin1.def. Chars in range 160...255 are just put through as these are legal iso-8859-1 symbols. (see above) Best way to do it until LaTeX is Unicode enabled (Omega project). -- MV 4.7.2000 We use a separate if-statement here ... the 'case range' construct is gcc specific :-( -- MV 13/07/2000 */ if ( (char16 >= 0xa0) && (char16 <= 0xff) ) { switch(char16) { // I don't see how 0xdc ("U) should be ldots... /*case 0xdc: printf("\\ldots{}"); return(1); }*/ case 0xA0: printf("~"); /* NO-BREAK (SPACE ) */ return(1); case 0xA1: printf("!`"); /* ¡ (INVERTED EXCLAMATION MARK ) */ return(1); #if 0 case 0xA2: printf(""); /* ¢ (CENT SIGN ) */ return(1); #endif case 0xA3: printf("\\pounds"); /* £ (POUND SIGN ) */ return(1); #if 0 case 0xA4: printf(""); /* ¤ (CURRENCY SIGN ) */ return(1); case 0xA5: printf(""); /* ¥ (YEN SIGN ) */ return(1); case 0xA6: printf(""); /* ¦ (BROKEN BAR ) */ return(1); #endif case 0xA7: printf("\\S"); /* § (SECTION SIGN ) */ return(1); case 0xA8: printf("\\\"{}"); /* ¨ (DIAERESIS ) */ return(1); case 0xA9: printf("\\copyright"); /* © (COPYRIGHT SIGN ) */ return(1); #if 0 case 0xAA: printf(""); /* ª (FEMININE ORDINAL INDICATOR ) */ return(1); #endif case 0xAB: printf("$\\ll$"); /* « (LEFT-POINTING DOUBLE ANGLE QUOTATION MARK ) */ return(1); case 0xAC: printf("$\\neg$"); /* ¬ (NOT SIGN ) */ return(1); case 0xAD: printf("-"); /* ­ (SOFT HYPHEN ) */ return(1); case 0xAE: printf("\\textregistered"); /* ® (REGISTERED SIGN ) */ return(1); case 0xAF: printf("$^-$"); /* ¯ (MACRON ) */ return(1); case 0xB0: printf("$^\\circ$"); /* ° (DEGREE SIGN ) */ return(1); case 0xB1: printf("$\\pm$"); /* ± (PLUS-MINUS SIGN ) */ return(1); case 0xB2: printf("$\\mathtwosuperior$"); /* ² (SUPERSCRIPT TWO ) */ return(1); case 0xB3: printf("$\\maththreesuperior$"); /* ³ (SUPERSCRIPT THREE ) */ return(1); case 0xB4: printf("\\'{}"); /* ´ (ACUTE ACCENT ) */ return(1); case 0xB5: printf("$\\mu$"); /* µ (MICRO SIGN ) */ return(1); case 0xB6: printf("\\P"); /* ¶ (PILCROW SIGN ) */ return(1); case 0xB7: printf("$\\cdot$"); /* · (MIDDLE DOT ) */ return(1); case 0xB8: printf("\\c{}"); /* ¸ (CEDILLA ) */ return(1); case 0xB9: printf("$\\mathonesuperior$"); /* ¹ (SUPERSCRIPT ONE ) */ return(1); #if 0 case 0xBA: printf(""); /* º (MASCULINE ORDINAL INDICATOR ) */ return(1); #endif case 0xBB: printf("$\\gg$"); /* » (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK ) */ return(1); case 0xBC: printf("$\\frac{1}{4}$"); /* ¼ (VULGAR FRACTION ONE QUARTER) */ return(1); case 0xBD: printf("$\\frac{1}{2}$"); /* ½ (VULGAR FRACTION ONE HALF) */ return(1); case 0xBE: printf("$\\frac{3}{4}$"); /* ¾ (VULGAR FRACTION THREE QUARTERS) */ return(1); case 0xBF: printf("?'"); /* ¿ (INVERTED QUESTION MARK ) */ return(1); case 0xC0: printf("\\`{A}"); /* À (LATIN CAPITAL LETTER A WITH GRAVE ) */ return(1); case 0xC1: printf("\\'{A}"); /* Á (LATIN CAPITAL LETTER A WITH ACUTE ) */ return(1); case 0xC2: printf("\\^{A}"); /* Â (LATIN CAPITAL LETTER A WITH CIRCUMFLEX ) */ return(1); case 0xC3: printf("\\~{A}"); /* Ã (LATIN CAPITAL LETTER A WITH TILDE ) */ return(1); case 0xC4: printf("\\\"{A}"); /* Ä (LATIN CAPITAL LETTER A WITH DIAERESIS ) */ return(1); case 0xC5: printf("\\u{A}"); /* Å (LATIN CAPITAL LETTER A WITH RING ABOVE ) */ return(1); case 0xC6: printf("\\AE"); /* Æ (LATIN CAPITAL LETTER AE) */ return(1); case 0xC7: printf("\\c{C}"); /* Ç (LATIN CAPITAL LETTER C WITH CEDILLA ) */ return(1); case 0xC8: printf("\\`{E}"); /* È (LATIN CAPITAL LETTER E WITH GRAVE ) */ return(1); case 0xC9: printf("\\'{E}"); /* É (LATIN CAPITAL LETTER E WITH ACUTE ) */ return(1); case 0xCA: printf("\\^{E}"); /* Ê (LATIN CAPITAL LETTER E WITH CIRCUMFLEX ) */ return(1); case 0xCB: printf("\\\"{E}"); /* Ë (LATIN CAPITAL LETTER E WITH DIAERESIS ) */ return(1); case 0xCC: printf("\\`{I}"); /* Ì (LATIN CAPITAL LETTER I WITH GRAVE ) */ return(1); case 0xCD: printf("\\'{I}"); /* Í (LATIN CAPITAL LETTER I WITH ACUTE ) */ return(1); case 0xCE: printf("\\^{I}"); /* Î (LATIN CAPITAL LETTER I WITH CIRCUMFLEX ) */ return(1); case 0xCF: printf("\\\"{I}"); /* Ï (LATIN CAPITAL LETTER I WITH DIAERESIS ) */ return(1); case 0xD0: printf("\\OE"); /* Ð (LATIN CAPITAL LETTER ETH) */ return(1); case 0xD1: printf("\\~{N}"); /* Ñ (LATIN CAPITAL LETTER N WITH TILDE ) */ return(1); case 0xD2: printf("\\`{O}"); /* Ò (LATIN CAPITAL LETTER O WITH GRAVE ) */ return(1); case 0xD3: printf("\\'{O}"); /* Ó (LATIN CAPITAL LETTER O WITH ACUTE ) */ return(1); case 0xD4: printf("\\^{O}"); /* Ô (LATIN CAPITAL LETTER O WITH CIRCUMFLEX ) */ return(1); case 0xD5: printf("\\~{O}"); /* Õ (LATIN CAPITAL LETTER O WITH TILDE ) */ return(1); case 0xD6: printf("\\\"{O}"); /* Ö (LATIN CAPITAL LETTER O WITH DIAERESIS ) */ return(1); case 0xD7: printf("$\\times$"); /* × (MULTIPLICATION SIGN ) */ return(1); case 0xD8: printf("\\O"); /* Ø (LATIN CAPITAL LETTER O WITH STROKE ) */ return(1); case 0xD9: printf("\\`{U}"); /* Ù (LATIN CAPITAL LETTER U WITH GRAVE ) */ return(1); case 0xDA: printf("\\'{U}"); /* Ú (LATIN CAPITAL LETTER U WITH ACUTE ) */ return(1); case 0xDB: printf("\\^{U}"); /* Û (LATIN CAPITAL LETTER U WITH CIRCUMFLEX ) */ return(1); case 0xDC: printf("\\\"{U}"); /* Ü (LATIN CAPITAL LETTER U WITH DIAERESIS ) */ return(1); case 0xDD: printf("\\'{U}"); /* Ý (LATIN CAPITAL LETTER Y WITH ACUTE ) */ return(1); case 0xDE: printf("\\L"); /* Þ (LATIN CAPITAL LETTER THORN) */ return(1); case 0xDF: printf("\\ss{}"); /* ß (LATIN SMALL LETTER SHARP S ) */ return(1); case 0xE0: printf("\\`{a}"); /* à (LATIN SMALL LETTER A WITH GRAVE ) */ return(1); case 0xE1: printf("\\'{a}"); /* á (LATIN SMALL LETTER A WITH ACUTE ) */ return(1); case 0xE2: printf("\\^{a}"); /* â (LATIN SMALL LETTER A WITH CIRCUMFLEX ) */ return(1); case 0xE3: printf("\\~{a}"); /* ã (LATIN SMALL LETTER A WITH TILDE ) */ return(1); case 0xE4: printf("\\\"{a}"); /* ä (LATIN SMALL LETTER A WITH DIAERESIS ) */ return(1); case 0xE5: printf("\\aa"); /* å (LATIN SMALL LETTER A WITH RING ABOVE ) */ return(1); case 0xE6: printf("\\ae"); /* æ (LATIN SMALL LETTER AE) */ return(1); case 0xE7: printf("\\c{c}"); /* ç (LATIN SMALL LETTER C WITH CEDILLA ) */ return(1); case 0xE8: printf("\\`{e}"); /* è (LATIN SMALL LETTER E WITH GRAVE ) */ return(1); case 0xE9: printf("\\'{e}"); /* é (LATIN SMALL LETTER E WITH ACUTE ) */ return(1); case 0xEA: printf("\\^{e}"); /* ê (LATIN SMALL LETTER E WITH CIRCUMFLEX ) */ return(1); case 0xEB: printf("\\\"{e}"); /* ë (LATIN SMALL LETTER E WITH DIAERESIS ) */ return(1); case 0xEC: printf("\\`{i}"); /* ì (LATIN SMALL LETTER I WITH GRAVE ) */ return(1); case 0xED: printf("\\'{i}"); /* í (LATIN SMALL LETTER I WITH ACUTE ) */ return(1); case 0xEE: printf("\\^{i}"); /* î (LATIN SMALL LETTER I WITH CIRCUMFLEX ) */ return(1); case 0xEF: printf("\\\"{i}"); /* ï (LATIN SMALL LETTER I WITH DIAERESIS ) */ return(1); case 0xF0: printf("\\oe"); /* ð (LATIN SMALL LETTER ETH) */ return(1); case 0xF1: printf("\\~{n}"); /* ñ (LATIN SMALL LETTER N WITH TILDE ) */ return(1); case 0xF2: printf("\\`{o}"); /* ò (LATIN SMALL LETTER O WITH GRAVE ) */ return(1); case 0xF3: printf("\\'{o}"); /* ó (LATIN SMALL LETTER O WITH ACUTE ) */ return(1); case 0xF4: printf("\\^{o}"); /* ô (LATIN SMALL LETTER O WITH CIRCUMFLEX ) */ return(1); case 0xF5: printf("\\~{o}"); /* õ (LATIN SMALL LETTER O WITH TILDE ) */ return(1); case 0xF6: printf("\\\"{o}"); /* ö (LATIN SMALL LETTER O WITH DIAERESIS ) */ return(1); case 0xF7: printf("$\\div$"); /* ÷ (DIVISION SIGN ) */ return(1); case 0xF8: printf("\\o"); /* ø (LATIN SMALL LETTER O WITH STROKE ) */ return(1); case 0xF9: printf("\\`{u}"); /* ù (LATIN SMALL LETTER U WITH GRAVE ) */ return(1); case 0xFA: printf("\\'{u}"); /* ú (LATIN SMALL LETTER U WITH ACUTE ) */ return(1); case 0xFB: printf("\\^{u}"); /* û (LATIN SMALL LETTER U WITH CIRCUMFLEX ) */ return(1); case 0xFC: printf("\\\"{u}"); /* ü (LATIN SMALL LETTER U WITH DIAERESIS ) */ return(1); case 0xFD: printf("\\'{y}"); /* ý (LATIN SMALL LETTER Y WITH ACUTE ) */ return(1); case 0xFE: printf("\\l"); /* þ (LATIN SMALL LETTER THORN) */ return(1); case 0xFF: printf("\\\"{y}"); /* ÿ (LATIN SMALL LETTER Y WITH DIAERESIS ) */ return(1); return(0); } } switch(char16) { case 37: printf("\\%%"); return(1); case 11: printf("\\\\\n"); return(1); case 30: case 31: case 12: case 13: case 14: case 7: return(1); case 45: printf("-"); return(1); case 34: printf("\""); return(1); case 35: printf("\\#"); /* MV 14.8.2000 */ return(1); case 36: printf("\\$"); /* MV 14.8.2000 */ return(1); case 38: printf("\\&"); /* MV 1.7.2000 */ return(1); case 60: printf("$<$"); return(1); case 62: printf("$>$"); return(1); case 0xF8E7: /* without this, things should work in theory, but not for me */ printf("_"); return(1); /* Added some new Unicode characters. It's probably difficult to write these characters in AbiWord, though ... :( -- 2000-08-11 huftis@bigfoot.com */ case 0x0100: printf("\\=A"); /* A with macron */ return(1); case 0x0101: printf("\\=a"); /* a with macron */ return(1); case 0x0102: printf("\\u{A}"); /* A with breve */ return(1); case 0x0103: printf("\\u{a}"); /* a with breve */ return(1); case 0x0106: printf("\\'C"); /* C with acute */ return(1); case 0x0107: printf("\\'c"); /* c with acute */ return(1); case 0x0108: printf("\\^C"); /* C with circumflex */ return(1); case 0x0109: printf("\\^c"); /* c with circumflex */ return(1); case 0x010A: printf("\\.C"); /* C with dot above */ return(1); case 0x010B: printf("\\.c"); /* c with dot above */ return(1); case 0x010C: printf("\\v{C}"); /* C with caron */ return(1); case 0x010D: printf("\\v{c}"); /* c with caron */ return(1); case 0x010E: printf("\\v{D}"); /* D with caron */ return(1); case 0x010F: printf("\\v{d}"); /* d with caron */ return(1); case 0x0110: printf("\\DJ{}"); /* D with stroke */ return(1); case 0x0111: printf("\\dj{}"); /* d with stroke */ return(1); case 0x0112: printf("\\=E"); /* E with macron */ return(1); case 0x0113: printf("\\=e"); /* e with macron */ return(1); case 0x0114: printf("\\u{E}"); /* E with breve */ return(1); case 0x0115: printf("\\u{e}"); /* e with breve */ return(1); case 0x0116: printf("\\.E"); /* E with dot above */ return(1); case 0x0117: printf("\\.e"); /* e with dot above */ return(1); case 0x011A: printf("\\v{E}"); /* E with caron */ return(1); case 0x011B: printf("\\v{e}"); /* e with caron */ return(1); case 0x011C: printf("\\^G"); /* G with circumflex */ return(1); case 0x011D: printf("\\^g"); /* g with circumflex */ return(1); case 0x011E: printf("\\u{G}"); /* G with breve */ return(1); case 0x011F: printf("\\u{g}"); /* g with breve */ return(1); case 0x0120: printf("\\.G"); /* G with dot above */ return(1); case 0x0121: printf("\\u{g}"); /* g with dot above */ return(1); case 0x0122: printf("^H"); /* H with circumflex */ return(1); case 0x0123: printf("^h"); /* h with circumflex */ return(1); case 0x0128: printf("\\~I"); /* I with tilde */ return(1); case 0x0129: printf("\\~{\\i}"); /* i with tilde (dotless) */ return(1); case 0x012A: printf("\\=I"); /* I with macron */ return(1); case 0x012B: printf("\\={\\i}"); /* i with macron (dotless) */ return(1); case 0x012C: printf("\\u{I}"); /* I with breve */ return(1); case 0x012D: printf("\\u{\\i}"); /* i with breve */ return(1); case 0x0130: printf("\\.I"); /* I with dot above */ return(1); case 0x0131: printf("\\i{}"); /* dotless i */ return(1); case 0x0132: printf("IJ"); /* IJ ligature */ return(1); case 0x0133: printf("ij"); /* ij ligature */ return(1); case 0x0134: printf("\\^J"); /* J with circumflex (dotless) */ return(1); case 0x0135: printf("\\^{\\j}"); /* j with circumflex (dotless) */ return(1); case 0x0136: printf("\\c{K}"); /* K with cedilla */ return(1); case 0x0137: printf("\\c{k}"); /* k with cedilla */ return(1); case 0x0138: printf("k"); /* NOTE: Not the correct character (kra), but similar */ return(1); case 0x0139: printf("\\'L"); /* L with acute */ return(1); case 0x013A: printf("\\'l"); /* l with acute */ return(1); case 0x013B: printf("\\c{L}"); /* L with cedilla */ return(1); case 0x013C: printf("\\c{l}"); /* l with cedilla */ return(1); case 0x013D: printf("\\v{L}"); /* L with caron */ return(1); case 0x013E: printf("\\v{l}"); /* l with caron */ return(1); case 0x0141: printf("\\L{}"); /* L with stroke */ return(1); case 0x0142: printf("\\l{}"); /* l with stroke */ return(1); case 0x0143: printf("\\'N"); /* N with acute */ return(1); case 0x0144: printf("\\'n"); /* n with acute */ return(1); case 0x0145: printf("\\c{N}"); /* N with cedilla */ return(1); case 0x0146: printf("\\c{n}"); /* n with cedilla */ return(1); case 0x0147: printf("\\v{N}"); /* N with caron */ return(1); case 0x0148: printf("\\v{n}"); /* n with caron */ return(1); case 0x0149: printf("'n"); /* n preceed with apostroph */ return(1); case 0x014A: printf("\\NG{}"); /* ENG character */ return(1); case 0x014B: printf("\\ng{}"); /* eng character */ return(1); case 0x014C: printf("\\=O"); /* O with macron */ return(1); case 0x014D: printf("\\=o"); /* o with macron */ return(1); case 0x014E: printf("\\u{O}"); /* O with breve */ return(1); case 0x014F: printf("\\u{o}"); /* o with breve */ return(1); case 0x0150: printf("\\H{O}"); /* O with double acute */ return(1); case 0x0151: printf("\\H{o}"); /* o with double acute */ return(1); case 0x0152: printf("\\OE{}"); /* OE ligature */ return(1); case 0x0153: printf("\\oe{}"); /* oe ligature */ return(1); case 0x0154: printf("\\'R"); /* R with acute */ return(1); case 0x0155: printf("\\'r"); /* r with acute */ return(1); case 0x0156: printf("\\c{R}"); /* R with cedilla */ return(1); case 0x0157: printf("\\c{r}"); /* r with cedilla */ return(1); case 0x0158: printf("\\v{R}"); /* R with caron */ return(1); case 0x0159: printf("\\v{r}"); /* r with caron */ return(1); case 0x015A: printf("\\'S"); /* S with acute */ return(1); case 0x015B: printf("\\'s"); /* s with acute */ return(1); case 0x015C: printf("\\^S"); /* S with circumflex */ return(1); case 0x015D: printf("\\^s"); /* c with circumflex */ return(1); case 0x015E: printf("\\c{S}"); /* S with cedilla */ return(1); case 0x015F: printf("\\c{s}"); /* s with cedilla */ return(1); case 0x0160: printf("\\v{S}"); /* S with caron */ return(1); case 0x0161: printf("\\v{s}"); /* s with caron */ return(1); case 0x0162: printf("\\c{T}"); /* T with cedilla */ return(1); case 0x0163: printf("\\c{t}"); /* t with cedilla */ return(1); case 0x0164: printf("\\v{T}"); /* T with caron */ return(1); case 0x0165: printf("\\v{t}"); /* t with caron */ return(1); case 0x0168: printf("\\~U"); /* U with tilde */ return(1); case 0x0169: printf("\\~u"); /* u with tilde */ return(1); case 0x016A: printf("\\=U"); /* U with macron */ return(1); /* Greek (thanks Petr Vanicek!): */ case 0x0391: printf("$\\Alpha$"); return(1); case 0x0392: printf("$\\Beta$"); return(1); case 0x0393: printf("$\\Gamma$"); return(1); case 0x0394: printf("$\\Delta$"); return(1); case 0x0395: printf("$\\Epsilon$"); return(1); case 0x0396: printf("$\\Zeta$"); return(1); case 0x0397: printf("$\\Eta$"); return(1); case 0x0398: printf("$\\Theta$"); return(1); case 0x0399: printf("$\\Iota$"); return(1); case 0x039a: printf("$\\Kappa$"); return(1); case 0x039b: printf("$\\Lambda$"); return(1); case 0x039c: printf("$\\Mu$"); return(1); case 0x039d: printf("$\\Nu$"); return(1); case 0x039e: printf("$\\Xi$"); return(1); case 0x039f: printf("$\\Omicron$"); return(1); case 0x03a0: printf("$\\Pi$"); return(1); case 0x03a1: printf("$\\Rho$"); return(1); case 0x03a3: printf("$\\Sigma$"); return(1); case 0x03a4: printf("$\\Tau$"); return(1); case 0x03a5: printf("$\\Upsilon$"); return(1); case 0x03a6: printf("$\\Phi$"); return(1); case 0x03a7: printf("$\\Chi$"); return(1); case 0x03a8: printf("$\\Psi$"); return(1); case 0x03a9: printf("$\\Omega$"); return(1); /* ...and lower case: */ case 0x03b1: printf("$\\alpha$"); return(1); case 0x03b2: printf("$\\beta$"); return(1); case 0x03b3: printf("$\\gamma$"); return(1); case 0x03b4: printf("$\\delta$"); return(1); case 0x03b5: printf("$\\epsilon$"); return(1); case 0x03b6: printf("$\\zeta$"); return(1); case 0x03b7: printf("$\\eta$"); return(1); case 0x03b8: printf("$\\theta$"); return(1); case 0x03b9: printf("$\\iota$"); return(1); case 0x03ba: printf("$\\kappa$"); return(1); case 0x03bb: printf("$\\lambda$"); return(1); case 0x03bc: printf("$\\mu$"); return(1); case 0x03bd: printf("$\\nu$"); return(1); case 0x03be: printf("$\\xi$"); return(1); case 0x03bf: printf("$\\omicron$"); return(1); case 0x03c0: printf("$\\pi$"); return(1); case 0x03c1: printf("$\\rho$"); return(1); case 0x03c3: printf("$\\sigma$"); return(1); case 0x03c4: printf("$\\tau$"); return(1); case 0x03c5: printf("$\\upsilon$"); return(1); case 0x03c6: printf("$\\phi$"); return(1); case 0x03c7: printf("$\\chi$"); return(1); case 0x03c8: printf("$\\psi$"); return(1); case 0x03c9: printf("$\\omega$"); return(1); /* More math, typical inline: */ case 0x2111: printf("$\\Im$"); return(1); case 0x2118: printf("$\\wp$"); /* Weierstrass p */ return(1); case 0x211c: printf("$\\Re$"); return(1); case 0x2122: printf("\\texttrademark"); /* ™ (TRADEMARK SIGN ) */ return (1); case 0x2135: printf("$\\aleph$"); return(1); case 0x2190: printf("$\\leftarrow$"); return(1); case 0x2191: printf("$\\uparrow$"); return(1); case 0x2192: printf("$\\rightarrow$"); return(1); case 0x2193: printf("$\\downarrow$"); return(1); case 0x21d0: printf("$\\Leftarrow$"); return(1); case 0x21d1: printf("$\\Uparrow$"); return(1); case 0x21d2: printf("$\\Rightarrow$"); return(1); case 0x21d3: printf("$\\Downarrow$"); return(1); case 0x21d4: printf("$\\Leftrightarrow$"); return(1); case 0x2200: printf("$\\forall$"); return(1); case 0x2202: printf("$\\partial$"); return(1); case 0x2203: printf("$\\exists$"); return(1); case 0x2205: printf("$\\emptyset$"); return(1); case 0x2207: printf("$\\nabla$"); return(1); case 0x2208: printf("$\\in$"); /* element of */ return(1); case 0x2209: printf("$\\notin$"); /* not an element of */ return(1); case 0x220b: printf("$\\ni$"); /* contains as member */ return(1); case 0x221a: printf("$\\surd$"); /* sq root */ return(1); case 0x2212: printf("$-$"); /* minus */ return(1); case 0x221d: printf("$\\propto$"); return(1); case 0x221e: printf("$\\infty$"); return(1); case 0x2220: printf("$\\angle$"); return(1); case 0x2227: printf("$\\land$"); /* logical and */ return(1); case 0x2228: printf("$\\lor$"); /* logical or */ return(1); case 0x2229: printf("$\\cap$"); /* intersection */ return(1); case 0x222a: printf("$\\cup$"); /* union */ return(1); case 0x223c: printf("$\\sim$"); /* similar to */ return(1); case 0x2248: printf("$\\approx$"); return(1); case 0x2261: printf("$\\equiv$"); return(1); case 0x2260: printf("$\\neq$"); return(1); case 0x2264: printf("$\\leq$"); return(1); case 0x2265: printf("$\\geq$"); return(1); case 0x2282: printf("$\\subset$"); return(1); case 0x2283: printf("$\\supset$"); return(1); case 0x2284: printf("$\\notsubset$"); return(1); case 0x2286: printf("$\\subseteq$"); return(1); case 0x2287: printf("$\\supseteq$"); return(1); case 0x2295: printf("$\\oplus$"); /* circled plus */ return(1); case 0x2297: printf("$\\otimes$"); return(1); case 0x22a5: printf("$\\perp$"); /* perpendicular */ return(1); case 0x2660: printf("$\\spadesuit$"); return(1); case 0x2663: printf("$\\clubsuit$"); return(1); case 0x2665: printf("$\\heartsuit$"); return(1); case 0x2666: printf("$\\diamondsuit$"); return(1); case 0x01C7: printf("LJ"); /* the LJ letter */ return(1); case 0x01C8: printf("Lj"); /* the Lj letter */ return(1); case 0x01C9: printf("lj"); /* the lj letter */ return(1); case 0x01CA: printf("NJ"); /* the NJ letter */ return(1); case 0x01CB: printf("Nj"); /* the Nj letter */ return(1); case 0x01CC: printf("nj"); /* the nj letter */ return(1); case 0x01CD: printf("\\v{A}"); /* A with caron */ return(1); case 0x01CE: printf("\\v{a}"); /* a with caron */ return(1); case 0x01CF: printf("\\v{I}"); /* I with caron */ return(1); case 0x01D0: printf("\\v{\\i}"); /* i with caron (dotless) */ return(1); case 0x01D1: printf("\\v{O}"); /* O with caron */ return(1); case 0x01D2: printf("\\v{o}"); /* o with caron */ return(1); case 0x01D3: printf("\\v{U}"); /* U with caron */ return(1); case 0x01D4: printf("\\v{u}"); /* u with caron */ return(1); case 0x01E6: printf("\\v{G}"); /* G with caron */ return(1); case 0x01E7: printf("\\v{g}"); /* g with caron */ return(1); case 0x01E8: printf("\\v{K}"); /* K with caron */ return(1); case 0x01E9: printf("\\v{k}"); /* k with caron */ return(1); case 0x01F0: printf("\\v{\\j}"); /* j with caron (dotless) */ return(1); case 0x01F1: printf("DZ"); /* the DZ letter */ return(1); case 0x01F2: printf("Dz"); /* the Dz letter */ return(1); case 0x01F3: printf("dz"); /* the dz letter */ return(1); case 0x01F4: printf("\\'G"); /* G with acute */ return(1); case 0x01F5: printf("\\'g"); /* g with acute */ return(1); case 0x01FA: printf("\\'{\\AA}"); /* Å with acute */ return(1); case 0x01FB: printf("\\'{\\aa}"); /* å with acute */ return(1); case 0x01FC: printf("\\'{\\AE}"); /* Æ with acute */ return(1); case 0x01FD: printf("\\'{\\ae}"); /* æ with acute */ return(1); case 0x01FE: printf("\\'{\\O}"); /* Ø with acute */ return(1); case 0x01FF: printf("\\'{\\o}"); /* ø with acute */ return(1); case 0x2010: printf("-"); /* hyphen */ return(1); case 0x2011: printf("-"); /* non-breaking hyphen (is there a way to get this in LaTeX?) */ return(1); case 0x2012: printf("--"); /* figure dash (similar to en-dash) */ return(1); case 0x2013: /* soft-hyphen? Or en-dash? I find that making this a soft-hyphen works very well, but makes the occasional "hard" word-connection hyphen (like the "-" in roller-coaster) disappear. (Are these actually en-dashes? Dunno.) How does MS Word distinguish between the 0x2013's that signify soft hyphens and those that signify word-connection hyphens? wvware should be able to as well. -- MV 8.7.2000 U+2013 is the en-dash character and not a soft hyphen. Soft hyphen is U+00AD. Changing to "--". -- 2000-08-11 huftis@bigfoot.com */ printf("--"); return(1); case 0x016B: printf("\\=u"); /* u with macron */ return(1); case 0x016C: printf("\\u{U}"); /* U with breve */ return(1); case 0x016D: printf("\\u{u}"); /* u with breve */ return(1); case 0x016E: printf("\\r{U}"); /* U with ring above */ return(1); case 0x016F: printf("\\r{u}"); /* u with ring above */ return(1); case 0x0170: printf("\\H{U}"); /* U with double acute */ return(1); case 0x0171: printf("\\H{u}"); /* u with double acute */ return(1); case 0x0174: printf("\\^W"); /* W with circumflex */ return(1); case 0x0175: printf("\\^w"); /* w with circumflex */ return(1); case 0x0176: printf("\\^Y"); /* Y with circumflex */ return(1); case 0x0177: printf("\\^y"); /* y with circumflex */ return(1); case 0x0178: printf("\\\"Y"); /* Y with diaeresis */ return(1); case 0x0179: printf("\\'Z"); /* Z with acute */ return(1); case 0x017A: printf("\\'z"); /* z with acute */ return(1); case 0x017B: printf("\\.Z"); /* Z with dot above */ return(1); case 0x017C: printf("\\.z"); /* z with dot above */ return(1); case 0x017D: printf("\\v{Z}"); /* Z with caron */ return(1); case 0x017E: printf("\\v{z}"); /* z with caron */ return(1); /* Windows specials (MV 4.7.2000). More could be added. See http://www.hut.fi/u/jkorpela/www/windows-chars.html */ case 0x2000: printf ("\\enspace"); /* en space */ return (1); case 0x2001: printf ("\\emspace"); /* en space */ return (1); case 0x2002: printf ("\\enspace"); /* en space */ return (1); case 0x2003: printf ("\\emspace"); /* en space */ return (1); case 0x2009: printf ("\\thinspace"); /* thin space */ return (1); case 0x2014: printf("---"); /* em-dash */ return(1); case 0x2018: printf("`"); /* left single quote, Win */ return(1); case 0x2019: printf("'"); /* Right single quote, Win */ return(1); case 0x201A: printf("\\quotesinglbase{}"); /* single low 99 quotation mark */ return(1); case 0x201C: printf("``"); /* inverted double quotation mark */ return(1); case 0x201D: printf("''"); /* double q.m. */ return(1); case 0x201E: printf("\\quotedblbase{}"); /* double low 99 quotation mark */ return(1); case 0x2020: printf("\\dag{}"); /* dagger */ return(1); case 0x2021: printf("\\ddag{}"); /* double dagger */ return(1); case 0x2022: printf("$\\bullet$"); /* bullet */ return(1); case 0x2023: printf("$\\bullet$"); /* NOTE: Not a real triangular bullet */ return(1); case 0x2024: printf("."); /* One dot leader (for use in TOCs) */ return(1); case 0x2025: printf(".."); /* Two dot leader (for use in TOCs) */ return(1); case 0x2026: printf("\\ldots{}"); /* ellipsis */ return(1); case 0x2039: printf("\\guilsinglleft{}"); /* single left angle quotation mark */ return(1); case 0x203A: printf("\\guilsinglright{}"); /* single right angle quotation mark */ return(1); case 0x203C: printf("!!"); /* double exclamation mark */ return(1); case 0x2215: printf("$/$"); /* Division slash */ return(1); case 0x2030: printf("o/oo"); return(1); case 0x20ac: printf("\\euro"); /* No known implementation ;-) TODO Shouldn't we use the package 'eurofont'? -- 2000-08-15 huftis@bigfoot.com */ return(1); case 0x2160: printf("I"); /* Roman numeral I */ return(1); case 0x2161: printf("II"); /* Roman numeral II */ return(1); case 0x2162: printf("III"); /* Roman numeral III */ return(1); case 0x2163: printf("IV"); /* Roman numeral IV */ return(1); case 0x2164: printf("V"); /* Roman numeral V */ return(1); case 0x2165: printf("VI"); /* Roman numeral VI */ return(1); case 0x2166: printf("VII"); /* Roman numeral VII */ return(1); case 0x2167: printf("VIII"); /* Roman numeral VIII */ return(1); case 0x2168: printf("IX"); /* Roman numeral IX */ return(1); case 0x2169: printf("X"); /* Roman numeral X */ return(1); case 0x216A: printf("XI"); /* Roman numeral XI */ return(1); case 0x216B: printf("XII"); /* Roman numeral XII */ return(1); case 0x216C: printf("L"); /* Roman numeral L */ return(1); case 0x216D: printf("C"); /* Roman numeral C */ return(1); case 0x216E: printf("D"); /* Roman numeral D */ return(1); case 0x216F: printf("M"); /* Roman numeral M */ return(1); case 0x2170: printf("i"); /* Roman numeral i */ return(1); case 0x2171: printf("ii"); /* Roman numeral ii */ return(1); case 0x2172: printf("iii"); /* Roman numeral iii */ return(1); case 0x2173: printf("iv"); /* Roman numeral iv */ return(1); case 0x2174: printf("v"); /* Roman numeral v */ return(1); case 0x2175: printf("vi"); /* Roman numeral vi */ return(1); case 0x2176: printf("vii"); /* Roman numeral vii */ return(1); case 0x2177: printf("viii"); /* Roman numeral viii */ return(1); case 0x2178: printf("ix"); /* Roman numeral ix */ return(1); case 0x2179: printf("x"); /* Roman numeral x */ return(1); case 0x217A: printf("xi"); /* Roman numeral xi */ return(1); case 0x217B: printf("xiii"); /* Roman numeral xii */ return(1); case 0x217C: printf("l"); /* Roman numeral l */ return(1); case 0x217D: printf("c"); /* Roman numeral c */ return(1); case 0x217E: printf("d"); /* Roman numeral d */ return(1); case 0x217F: printf("m"); /* Roman numeral m */ return(1); } /* Debugging aid: */ return(0); } #undef printf typedef unsigned char art_u8; /* Render a semitransparent run of solid color over an existing RGB buffer. */ static void art_rgb_run_alpha (art_u8 *buf, art_u8 r, art_u8 g, art_u8 b, int alpha, int n) { int i; int v; for (i = 0; i < n; i++) { v = *buf; *buf++ = v + (((r - v) * alpha + 0x80) >> 8); v = *buf; *buf++ = v + (((g - v) * alpha + 0x80) >> 8); v = *buf; *buf++ = v + (((b - v) * alpha + 0x80) >> 8); } } /* utility to stretch a frame to the desired size */ static void draw_frame_row (GdkPixbuf *frame_image, int target_width, int source_width, int source_v_position, int dest_v_position, GdkPixbuf *result_pixbuf, int left_offset, int height) { int remaining_width, h_offset, slab_width; remaining_width = target_width; h_offset = 0; while (remaining_width > 0) { slab_width = remaining_width > source_width ? source_width : remaining_width; gdk_pixbuf_copy_area (frame_image, left_offset, source_v_position, slab_width, height, result_pixbuf, left_offset + h_offset, dest_v_position); remaining_width -= slab_width; h_offset += slab_width; } } /* utility to draw the middle section of the frame in a loop */ static void draw_frame_column (GdkPixbuf *frame_image, int target_height, int source_height, int source_h_position, int dest_h_position, GdkPixbuf *result_pixbuf, int top_offset, int width) { int remaining_height, v_offset, slab_height; remaining_height = target_height; v_offset = 0; while (remaining_height > 0) { slab_height = remaining_height > source_height ? source_height : remaining_height; gdk_pixbuf_copy_area (frame_image, source_h_position, top_offset, width, slab_height, result_pixbuf, dest_h_position, top_offset + v_offset); remaining_height -= slab_height; v_offset += slab_height; } } static GdkPixbuf * eel_stretch_frame_image (GdkPixbuf *frame_image, int left_offset, int top_offset, int right_offset, int bottom_offset, int dest_width, int dest_height, gboolean fill_flag) { GdkPixbuf *result_pixbuf; guchar *pixels_ptr; int frame_width, frame_height; int y, row_stride; int target_width, target_frame_width; int target_height, target_frame_height; frame_width = gdk_pixbuf_get_width (frame_image); frame_height = gdk_pixbuf_get_height (frame_image ); if (fill_flag) { result_pixbuf = gdk_pixbuf_scale_simple (frame_image, dest_width, dest_height, GDK_INTERP_NEAREST); } else { result_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, dest_width, dest_height); } row_stride = gdk_pixbuf_get_rowstride (result_pixbuf); pixels_ptr = gdk_pixbuf_get_pixels (result_pixbuf); /* clear the new pixbuf */ if (!fill_flag) { for (y = 0; y < dest_height; y++) { art_rgb_run_alpha (pixels_ptr, 255, 255, 255, 255, dest_width); pixels_ptr += row_stride; } } target_width = dest_width - left_offset - right_offset; target_frame_width = frame_width - left_offset - right_offset; target_height = dest_height - top_offset - bottom_offset; target_frame_height = frame_height - top_offset - bottom_offset; /* draw the left top corner and top row */ gdk_pixbuf_copy_area (frame_image, 0, 0, left_offset, top_offset, result_pixbuf, 0, 0); draw_frame_row (frame_image, target_width, target_frame_width, 0, 0, result_pixbuf, left_offset, top_offset); /* draw the right top corner and left column */ gdk_pixbuf_copy_area (frame_image, frame_width - right_offset, 0, right_offset, top_offset, result_pixbuf, dest_width - right_offset, 0); draw_frame_column (frame_image, target_height, target_frame_height, 0, 0, result_pixbuf, top_offset, left_offset); /* draw the bottom right corner and bottom row */ gdk_pixbuf_copy_area (frame_image, frame_width - right_offset, frame_height - bottom_offset, right_offset, bottom_offset, result_pixbuf, dest_width - right_offset, dest_height - bottom_offset); draw_frame_row (frame_image, target_width, target_frame_width, frame_height - bottom_offset, dest_height - bottom_offset, result_pixbuf, left_offset, bottom_offset); /* draw the bottom left corner and the right column */ gdk_pixbuf_copy_area (frame_image, 0, frame_height - bottom_offset, left_offset, bottom_offset, result_pixbuf, 0, dest_height - bottom_offset); draw_frame_column (frame_image, target_height, target_frame_height, frame_width - right_offset, dest_width - right_offset, result_pixbuf, top_offset, right_offset); return result_pixbuf; } /* draw an arbitrary frame around an image, with the result passed back in a newly allocated pixbuf */ static GdkPixbuf * eel_embed_image_in_frame (GdkPixbuf *source_image, GdkPixbuf *frame_image, int left_offset, int top_offset, int right_offset, int bottom_offset) { GdkPixbuf *result_pixbuf; int source_width, source_height; int dest_width, dest_height; source_width = gdk_pixbuf_get_width (source_image); source_height = gdk_pixbuf_get_height (source_image); dest_width = source_width + left_offset + right_offset; dest_height = source_height + top_offset + bottom_offset; result_pixbuf = eel_stretch_frame_image (frame_image, left_offset, top_offset, right_offset, bottom_offset, dest_width, dest_height, FALSE); /* Finally, copy the source image into the framed area */ gdk_pixbuf_copy_area (source_image, 0, 0, source_width, source_height, result_pixbuf, left_offset, top_offset); return result_pixbuf; } Glib::RefPtr eelEmbedImageInFrame ( Glib::RefPtr source, Glib::RefPtr frame, int left, int top, int right, int bottom) { return Glib::wrap (eel_embed_image_in_frame ( source->gobj(), frame->gobj(), left, top, right, bottom), false); } /** * The body of this function comes from termina-screen.c in * gnome-terminal-2.18.0, Copyright 2001 Havoc Pennington */ Glib::ustring mozUrlSelectionToUTF8 ( Gtk::SelectionData const &sel) { GString *str; int i; const guint16 *char_data; int char_len; /* MOZ_URL is in UCS-2 but in format 8. BROKEN! * * The data contains the URL, a \n, then the * title of the web page. */ if (sel.get_format() != 8 || sel.get_length() == 0 || (sel.get_length() % 2) != 0) { g_printerr ("Mozilla url dropped on terminal had wrong format (%d) or length (%d)\n", sel.get_format(), sel.get_length()); return Glib::ustring(); } str = g_string_new (NULL); char_len = sel.get_length() / 2; char_data = (const guint16*) sel.get_data(); i = 0; while (i < char_len) { if (char_data[i] == '\n') break; g_string_append_unichar (str, (gunichar) char_data[i]); ++i; } Glib::ustring cppString = Glib::ustring(str->str, str->len); g_string_free (str, TRUE); return cppString; } Glib::ustring trimWhiteSpace (Glib::ustring const &str) { Glib::ustring::size_type pos1 = str.find_first_not_of(' '); Glib::ustring::size_type pos2 = str.find_last_not_of(' '); return str.substr( pos1 == Glib::ustring::npos ? 0 : pos1, pos2 == Glib::ustring::npos ? str.length() - 1 : pos2 - pos1 + 1); } Glib::ustring trimLeadingString (Glib::ustring const &str, Glib::ustring const &leader) { if (str.find(leader) == 0) { return str.substr(leader.length(), str.length() - leader.length()); } else { return str; } } /* * Print a debug message, handling unprintable characters gracefully */ void debug (Glib::ustring tag, Glib::ustring msg) { static Glib::ustring lastTag; if (tag != lastTag) { std::cerr << tag << ":\n"; lastTag = tag; } if (!msg.validate()) { std::cerr << __FUNCTION__ << ": Invalid UTF-8 in msg\n"; return; } std::string localeCharset; Glib::get_charset (localeCharset); std::string localised = Glib::convert_with_fallback ( msg, localeCharset, "UTF-8"); std::cerr << "\t" << localised << "\n"; } /* [bert] Added this function to remove leading "a", "an" or "the" * from an English string, for comparison purposes. */ Glib::ustring removeLeadingArticle(Glib::ustring const &str) { Glib::ustring::size_type p; /* See if the string starts with "A" "An", or "The". If so, remove * this text from the string. */ p = str.find(' '); if (p != Glib::ustring::npos) { Glib::ustring firstword = str.substr(0, p); if (firstword.compare(_("A")) == 0 || firstword.compare(_("An")) == 0 || firstword.compare(_("The")) == 0) { return str.substr(p); // Return string with leading article removed. } } return str; // Return the string unmodified by default. } /* * Converts a Glib::TimeVal date to POSIX time */ time_t timeValToPosix(Glib::TimeVal time_val) { Glib::ustring time_str = time_val.as_iso8601 (); const char* time_cstr = time_str.c_str (); /* We need to create a tm strcut from a iso8601 C string and create a * timestamp from it */ struct tm ctime; strptime(time_cstr, "%FT%T%z", &ctime); return mktime(&ctime); } } TextDialog::TextDialog ( Glib::ustring const &title, Glib::ustring const &text) { Gtk::Dialog (title, true, false); Glib::RefPtr buffer = Gtk::TextBuffer::create (); buffer->set_text (text); Gtk::TextView *view = Gtk::manage (new Gtk::TextView (buffer)); view->set_wrap_mode (Gtk::WRAP_WORD_CHAR); Gtk::ScrolledWindow *scroll = Gtk::manage (new Gtk::ScrolledWindow ()); scroll->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); scroll->add (*view); get_vbox()->pack_start (*scroll); add_button (Gtk::Stock::CLOSE, 0); set_size_request (400, 300); show_all (); } referencer-1.2.1/src/Library.h0000664000175000017500000002005512042420323013114 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef LIBRARY_H #define LIBRARY_H #include #include #include class Document; class DocumentList; class TagList; class RefWindow; // // BEGIN: The names of all the elements in the 'reflib' library XML file. // /** * The name of the root element of the 'referencer library' XML file. */ #define LIB_ELEMENT_LIBRARY "library" /** * The name of the 'library folder' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_LIBRARY_FOLDER "library_folder" /** * The name of the 'monitor' attribute in the 'library folder' element. */ #define LIB_ATTR_LIBRARY_FOLDER_MONITOR "monitor" /** * The name of the 'manage target' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_MANAGE_TARGET "manage_target" /** * The name of the 'braces' attribute in the 'manage target' element. */ #define LIB_ATTR_MANAGE_TARGET_BRACES "braces" /** * The name of the 'utf8' attribute in the 'manage target' element. */ #define LIB_ATTR_MANAGE_TARGET_UTF8 "utf8" /** * The name of the 'tag list' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_TAGLIST "taglist" /** * The name of the 'tag' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_TAG "tag" /** * The name of the tag's 'uid' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_TAG_UID "uid" /** * The name of the tag's 'name' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_TAG_NAME "name" /** * The name of the 'doc list' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOCLIST "doclist" /** * The name of the 'doc' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC "doc" /** * The name of the document's 'filename' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_FILENAME "filename" /** * The name of the document's 'relative filename' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_REL_FILENAME "relative_filename" /** * The name of the document's 'notes' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_NOTES "notes" /** * The name of the document's 'key' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_KEY "key" /** * The name of the document's 'tagged' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_TAG "tagged" /** * The name of the document's 'bib type' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_TYPE "bib_type" /** * The name of the document's 'bib doi' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_DOI "bib_doi" /** * The name of the document's 'bib title' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_TITLE "bib_title" /** * The name of the document's 'bib authors' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_AUTHORS "bib_authors" /** * The name of the document's 'bib journal' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_JOURNAL "bib_journal" /** * The name of the document's 'bib volume' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_VOLUME "bib_volume" /** * The name of the document's 'bib number' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_NUMBER "bib_number" /** * The name of the document's 'bib pages' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_PAGES "bib_pages" /** * The name of the document's 'bib year' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_YEAR "bib_year" /** * The name of the document's 'bib extra' element in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_EXTRA "bib_extra" /** * The name of the document's 'bib extra' key attribute in the 'referencer library' XML file. */ #define LIB_ELEMENT_DOC_BIB_EXTRA_KEY "key" /** * Compares the name of the node with the given string and returns 'true' iff * the name of the node equals to it. */ inline bool nodeNameEq(const xmlNodePtr node, const char* name) { return strcmp(name, (const char*) node->name) == 0; } // // END: The names of all the elements in the 'reflib' library XML file. // /** * Contains all library data (as stored in the 'reflib' XML file, e.g.: the * document and tag lists, and other configuration values). */ struct LibraryData { /** * Contains the list of all \ref Document "documents" in this library. */ DocumentList *doclist_; /** * Contains the list of all \ref Tag "tags" in this library. *

These tags can be assigned to documents in \ref * LibraryData::doclis

t_. */ TagList *taglist_; Glib::ustring manage_target_; bool manage_braces_; bool manage_utf8_; Glib::ustring library_folder_uri_; bool library_folder_monitor_; /** * Creates an instance of the \ref LibraryData structure with default * configuration values and empty tag and document lists. */ LibraryData(); /** * Deallocates all resources (deletes the tag and document lists). */ virtual ~LibraryData(); /** * Clears the document list, the tag list, and resets the configuration to * default. */ void clear(); /** *

Extracts information about a referencer library from a parsed XML * document tree. Upon success, this method will set the fields of this * instance accordingly.

*

Upon failure, however, this method will throw an exception and the * state of this instance will be in an undefined state (partially read * data).

* * @param libDocument the XML DOM tree extracted from the referencer's * library XML file (the 'reflib' file). * * @exception Glib::Exception this exception is thrown if the parsing fails * for any reason. */ void extractData(xmlDocPtr libDocument) throw (Glib::Exception); }; class Library { public: Library (RefWindow &tagwindow); ~Library (); void clear (); bool load (Glib::ustring const &libfilename); bool save (Glib::ustring const &libfilename); void writeXML(xmlTextWriterPtr writer); bool readXML(Gio::InputStream *inputStream) throw(Glib::Exception); void writeBibtex ( Glib::ustring const &bibfilename, std::vector const &docs, bool const usebraces, bool const utf8); // The naming is BibtexFoo everywhere else, but in Library // we use the manage_ prefix to be consistent with the file format // which uses manage_ to be future-proof with more general manage // functionality void manageBibtex ( Glib::ustring const &target, bool const brackets, bool const utf8); Glib::ustring getBibtexTarget() const { return data->manage_target_; } bool getBibtexBraces() const { return data->manage_braces_; } bool getBibtexUTF8() const { return data->manage_utf8_; } Glib::ustring getLibraryFolder() const { return data->library_folder_uri_; } void setLibraryFolder(Glib::ustring LibraryFolderUri) { data->library_folder_uri_ = LibraryFolderUri; } DocumentList* getDocList() const { return data->doclist_; } TagList* getTagList() const { return data->taglist_; } bool libraryFolderDialog(); private: /** * Extracts information about a library from the given DOM tree. * * @param libDocument the XML DOM tree extracted from the referencer's * library XML file. This method will extract all * * @returns 'true' if the library data has been read successfully, * otherwise it returns 'false'. */ bool readLibrary(xmlDocPtr libDocument) throw (Glib::Exception); private: /** * Contains all data about this library (tags, documents and other * configuration). */ struct LibraryData *data; RefWindow &tagwindow_; }; #endif referencer-1.2.1/src/EntryMultiCompletion.h0000664000175000017500000000446012150640443015667 00000000000000/* -*- Mode: C++; indent-tabs-mode:nil; c-basic-offset:4; -*- */ /* * gtkmm-utils - entry-multi-complete.h * * Copyright (C) 2008 Marko Anastasov * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __GTKMM_UTILS_ENTRY_MULTI_COMPLETE_H__ #define __GTKMM_UTILS_ENTRY_MULTI_COMPLETE_H__ #include #include #include class EntryMultiCompletionModelColumns : public Gtk::TreeModel::ColumnRecord { public: EntryMultiCompletionModelColumns() { add(col_id); add(col_title); } Gtk::TreeModelColumn col_id; // not displayed Gtk::TreeModelColumn col_title; }; class EntryMultiCompletion : public Gtk::EntryCompletion { public: static Glib::RefPtr create(); static Glib::RefPtr create(const std::list& items); virtual ~EntryMultiCompletion(); protected: EntryMultiCompletion(); EntryMultiCompletion(const std::list& items); virtual void init(); virtual void add_items(const std::list& items); // Gtk::EntryCompletion override virtual bool on_match_selected(const Gtk::TreeModel::iterator& iter); virtual bool on_completion_match(const Glib::ustring& key, const Gtk::TreeModel::const_iterator& iter); int next_id_; Glib::RefPtr model_; EntryMultiCompletionModelColumns columns_; private: // noncopyable EntryMultiCompletion(const EntryMultiCompletion&); EntryMultiCompletion& operator=(const EntryMultiCompletion&); }; #endif // __GTKMM_UTILS_ENTRY_MULTI_COMPLETE_H__ referencer-1.2.1/src/sexy-icon-entry.h0000664000175000017500000000602312042412720014566 00000000000000/* * @file libsexy/sexy-icon-entry.h Entry widget * * @Copyright (C) 2004-2006 Christian Hammond. * * 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 _SEXY_ICON_ENTRY_H_ #define _SEXY_ICON_ENTRY_H_ typedef struct _SexyIconEntry SexyIconEntry; typedef struct _SexyIconEntryClass SexyIconEntryClass; typedef struct _SexyIconEntryPriv SexyIconEntryPriv; #include #include #define SEXY_TYPE_ICON_ENTRY (sexy_icon_entry_get_type()) #define SEXY_ICON_ENTRY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj), SEXY_TYPE_ICON_ENTRY, SexyIconEntry)) #define SEXY_ICON_ENTRY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), SEXY_TYPE_ICON_ENTRY, SexyIconEntryClass)) #define SEXY_IS_ICON_ENTRY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj), SEXY_TYPE_ICON_ENTRY)) #define SEXY_IS_ICON_ENTRY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), SEXY_TYPE_ICON_ENTRY)) #define SEXY_ICON_ENTRY_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), SEXY_TYPE_ICON_ENTRY, SexyIconEntryClass)) typedef enum { SEXY_ICON_ENTRY_PRIMARY, SEXY_ICON_ENTRY_SECONDARY } SexyIconEntryPosition; struct _SexyIconEntry { GtkEntry parent_object; SexyIconEntryPriv *priv; void (*gtk_reserved1)(void); void (*gtk_reserved2)(void); void (*gtk_reserved3)(void); void (*gtk_reserved4)(void); }; struct _SexyIconEntryClass { GtkEntryClass parent_class; /* Signals */ void (*icon_pressed)(SexyIconEntry *entry, SexyIconEntryPosition icon_pos, int button); void (*icon_released)(SexyIconEntry *entry, SexyIconEntryPosition icon_pos, int button); void (*gtk_reserved1)(void); void (*gtk_reserved2)(void); void (*gtk_reserved3)(void); void (*gtk_reserved4)(void); }; G_BEGIN_DECLS GType sexy_icon_entry_get_type(void); GtkWidget *sexy_icon_entry_new(void); void sexy_icon_entry_set_icon(SexyIconEntry *entry, SexyIconEntryPosition position, GtkImage *icon); void sexy_icon_entry_set_icon_highlight(SexyIconEntry *entry, SexyIconEntryPosition position, gboolean highlight); GtkImage *sexy_icon_entry_get_icon(const SexyIconEntry *entry, SexyIconEntryPosition position); gboolean sexy_icon_entry_get_icon_highlight(const SexyIconEntry *entry, SexyIconEntryPosition position); void sexy_icon_entry_add_clear_button(SexyIconEntry *icon_entry); G_END_DECLS #endif /* _SEXY_ICON_ENTRY_H_ */ referencer-1.2.1/src/PluginManager.h0000664000175000017500000000242212043152304014241 00000000000000 #ifndef PLUGINMANAGER_H #define PLUGINMANAGER_H #include #include #include #include "Plugin.h" #include "PythonPlugin.h" #include "CrossRefPlugin.h" #include "ArxivPlugin.h" class BibData; class PluginManager { public: PluginManager (); ~PluginManager (); typedef std::list PluginList; /* List of loaded plugins */ PluginList getPlugins(); /* List of enabled plugins */ PluginList getEnabledPlugins(); /* Load all plugins in the directory */ void scan (std::string const &pluginDir); /* Look for data files in plugin paths */ Glib::ustring findDataFile (Glib::ustring file); /* Callback for progression while in plugins */ void *progressObject_; bool (*progressCallback_)(void*); /* Does a plugin want to try and fetch metadata for this document? */ bool canResolve (Document &doc); /* Resolve metadata for this document, using plugins in priority order */ bool resolveMetadata (Document &doc); private: /* Python module search locations */ std::vector pythonPaths_; /* Loaded python modules */ std::list pythonPlugins_; /* Builtin plugins */ CrossRefPlugin crossref_; ArxivPlugin arxiv_; }; extern PluginManager *_global_plugins; #endif referencer-1.2.1/src/Document.h0000664000175000017500000000736012144661247013311 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef DOCUMENT_H #define DOCUMENT_H #include #include #include "BibData.h" class DocumentView; class Library; class Document { private: Glib::ustring filename_; Glib::ustring relfilename_; Glib::ustring key_; Glib::ustring notes_; std::vector tagUids_; Glib::RefPtr thumbnail_; static const Glib::ustring defaultKey_; static Glib::RefPtr loadingthumb_; void setupThumbnail (); DocumentView *view_; BibData bib_; public: ~Document (); Document (); Document (Document const & x); Document (Glib::ustring const &filename); Document ( Glib::ustring const &filename, Glib::ustring const &relfilename, Glib::ustring const ¬es, Glib::ustring const &key, std::vector const &tagUids, BibData const &bib); /** * Creates a document by extracting information from the provided XML * node. * @param docNode the XML DOM node representing the element that * contains information about the document, such as the title, authors, * filename etc. */ Document(xmlNodePtr docNode); Glib::ustring const & getKey() const; Glib::ustring const & getFileName() const; // RelFileName is NOT kept up to date in general, it's // used during loading and saving only Glib::ustring const & getRelFileName() const; void setFileName (Glib::ustring const &filename); void updateRelFileName (Glib::ustring const &libfilename); void setKey (Glib::ustring const &key); /** *

Sets the relative path to the file as is.

*

This function is used when loading stored documents from the 'reflib' * library XML file.

*/ void setRelFileName(const Glib::ustring& relFileName) { this->relfilename_ = relFileName; } //Notes set and get Glib::ustring const & getNotes() const; void setNotes(Glib::ustring const ¬es); std::vector& getTags (); void setTag (int uid); void clearTag (int uid); void clearTags (); Glib::RefPtr getThumbnail () {return thumbnail_;} void setThumbnail (Glib::RefPtr thumb); void setView (DocumentView *view) {view_ = view;} bool hasTag (int uid); bool canGetMetadata (); bool matchesSearch (Glib::ustring const &search); void writeBibtex ( Library const &lib, std::ostringstream& out, bool const usebraces, bool const utf8); Glib::ustring printBibtex ( bool const useBraces, bool const utf8); void writeXML (xmlTextWriterPtr writer); /** * Extracts document data from the given XML DOM node. * @param docNode the \c document node from the parsed library XML file. * It contains information about the document such as authors, title, * filename etc. */ void readXML(xmlNodePtr docNode); bool readPDF (); bool getMetaData (); void renameFromKey (); BibData& getBibData () {return bib_;} void setBibData (BibData& bib){bib_ = bib;} Glib::ustring generateKey (); bool parseBibtex (Glib::ustring const &bibtex); typedef std::map FieldMap; void setField (Glib::ustring const &field, Glib::ustring const &value); Glib::ustring getField (Glib::ustring const &field); bool hasField (Glib::ustring const &field) const; FieldMap getFields (); void clearFields (); static Glib::ustring keyReplaceDialogNotUnique (Glib::ustring const &, Glib::ustring const &); static Glib::ustring keyReplaceDialogInvalidChars (Glib::ustring const &, Glib::ustring const &); static Glib::ustring keyReplaceDialog (Glib::ustring const &, Glib::ustring const &, const char *); }; #endif referencer-1.2.1/src/Transfer.h0000664000175000017500000000134112042671403013300 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef TRANSFER_H #define TRANSFER_H #include #include #include class Progress; namespace Transfer { Glib::ustring &readRemoteFile ( Glib::ustring const &title, Glib::ustring const &messagetext, Glib::ustring const &filename); class Exception : public Glib::Exception { public: explicit Exception(Glib::ustring what) {what_ = what;} virtual ~Exception() throw() {}; virtual Glib::ustring what() const {return what_;} protected: Glib::ustring what_; }; } #endif referencer-1.2.1/src/DocumentList.C0000664000175000017500000001512612042420323014060 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include #include #include "ucompose.hpp" #include "Utility.h" #include "DocumentList.h" #include "Document.h" #include "Library.h" DocumentList::Container& DocumentList::getDocs () { return docs_; } Document* DocumentList::newDocWithFile (Glib::ustring const &filename) { Container::iterator it = docs_.begin (); Container::iterator const end = docs_.end (); for (; it != end; ++it) { if ((*it).getFileName() == filename) { return NULL; } } Document newdoc(filename); docs_.push_back(newdoc); return &(docs_.back()); } Document* DocumentList::newDocUnnamed () { Document newdoc; docs_.push_back(newdoc); return &(docs_.back()); } Glib::ustring DocumentList::sanitizedKey ( Glib::ustring const &key) { Glib::ustring sanitizedKey = Glib::ustring(key); Glib::ustring::size_type invalidchar; while ((invalidchar = sanitizedKey.find_first_of(":-[]{},+/*")) != Glib::ustring::npos) { sanitizedKey.replace(invalidchar, 1, "_"); } return sanitizedKey; } Glib::ustring DocumentList::uniqueKey ( Glib::ustring const &basename) { return uniqueKey (basename, NULL); } /** * Return a key mangled to be unique with respect to * all documents except 'exclusion' */ Glib::ustring DocumentList::uniqueKey ( Glib::ustring const &basename, Document const *exclusion) { std::ostringstream name; int extension = -1; do { ++extension; name.str ("") ; name << basename; if (extension) name << "-" << extension; } while (docExists(name.str(), exclusion)); return name.str(); } bool DocumentList::docExists ( Glib::ustring const &name, Document const *exclusion) { Container::iterator it = docs_.begin (); Container::iterator const end = docs_.end (); for (; it != end; ++it) { if ((&(*it)) != exclusion && (*it).getKey() == name) return true; } return false; } Document* DocumentList::newDocWithName (Glib::ustring const &key) { Document newdoc; newdoc.setKey (key); docs_.push_back(newdoc); return &(docs_.back()); } Document *DocumentList::insertDoc (Document const &doc) { docs_.push_back(doc); return &(docs_.back()); } void DocumentList::loadDoc ( Glib::ustring const &filename, Glib::ustring const &relfilename, Glib::ustring const ¬es, Glib::ustring const &key, std::vector const &taguids, BibData const &bib) { Document newdoc (filename, relfilename, notes, key, taguids, bib); docs_.push_back(newdoc); } void DocumentList::removeDoc (Document * const addr) { Container::iterator it = docs_.begin(); Container::iterator const end = docs_.end(); for (; it != end; it++) { if (&(*it) == addr) { docs_.erase(it); return; } } DEBUG ("Warning: DocumentList::removeDoc: couldn't find '%1' to erase it", addr); } void DocumentList::print() { Container::iterator it = docs_.begin(); Container::iterator const end = docs_.end(); for (; it != end; it++) { Glib::ustring format; format += (*it).getFileName() + " "; format += (*it).getKey() + " "; std::vector docvec = (*it).getTags(); for (std::vector::iterator it = docvec.begin(); it != docvec.end(); ++it) { format += String::ucompose("%1, ", *it); } DEBUG (format); } } void DocumentList::clearTag (int uid) { Container::iterator it = docs_.begin(); Container::iterator const end = docs_.end(); for (; it != end; it++) { (*it).clearTag(uid); } } void DocumentList::writeXML (xmlTextWriterPtr writer) { xmlTextWriterStartElement(writer, BAD_CAST LIB_ELEMENT_DOCLIST); Container::iterator it = docs_.begin(); Container::iterator const end = docs_.end(); for (; it != end; it++) { (*it).writeXML (writer); } xmlTextWriterEndElement(writer); } // Returns the number of references imported int DocumentList::importFromFile ( Glib::ustring const & filename, BibUtils::Format format) { std::string rawtext; Glib::RefPtr importfile; Glib::RefPtr liburi = Gio::File::create_for_uri (filename); try { importfile = liburi->read (); } catch (const Gio::Error ex) { Utility::exceptionDialog (&ex, String::ucompose ( _("Opening file '%1'"), Glib::filename_to_utf8 (filename))); return false; } Glib::RefPtr fileinfo; fileinfo = liburi->query_info (); char *buffer = (char *) malloc (sizeof(char) * (fileinfo->get_size() + 1)); if (!buffer) { DEBUG ("Warning: DocumentList::import: couldn't get buffer"); return false; } try { importfile->read (buffer, fileinfo->get_size()); } catch (const Gio::Error ex) { Utility::exceptionDialog (&ex, String::ucompose ( _("Reading file '%1'"), Glib::filename_to_utf8 (filename))); free (buffer); return false; } buffer[fileinfo->get_size()] = 0; rawtext = buffer; free (buffer); importfile->close (); Glib::ustring utf8text = rawtext; if (!utf8text.validate()) { DEBUG ("DocumentList::importFromFile: input not utf-8, trying latin1"); /* Upps, it's not utf8, assume it's latin1 */ try { utf8text = Glib::convert (rawtext, "UTF8", "iso-8859-1"); } catch (Glib::ConvertError const &ex) { Utility::exceptionDialog (&ex, String::ucompose ( _("converting file %1 to utf8 from (guessed) latin1"), Glib::filename_to_utf8(filename))); return false; } } else { DEBUG ("DocumentList::importFromFile: validated input as utf-8"); } return import(utf8text, format); } // Returns the number of references imported int DocumentList::import ( Glib::ustring const & rawtext, BibUtils::Format format) { if (format == BibUtils::FORMAT_UNKNOWN) format = BibUtils::guessFormat (rawtext); BibUtils::param p; BibUtils::bibl b; BibUtils::bibl_init( &b ); // BIBL_* are #defines, so not in namespace BibUtils::bibl_initparams( &p, format, BIBL_MODSOUT); p.charsetin = BIBL_CHARSET_UNICODE; p.utf8in = 1; try { BibUtils::biblFromString (b, rawtext, format, p); } catch (Glib::Error ex) { BibUtils::bibl_free( &b ); Utility::exceptionDialog (&ex, _("Parsing import")); return 0; } // Make a copy to return after we free b int const nrefs = b.nrefs; for (int i = 0; i < nrefs; ++i) { try { docs_.push_back (BibUtils::parseBibUtils (b.ref[i])); } catch (Glib::Error ex) { BibUtils::bibl_free( &b ); Utility::exceptionDialog (&ex, String::ucompose(_("Extracting document %1 from bibutils structure"), i)); return 0; } } BibUtils::bibl_free( &b ); return nrefs; } referencer-1.2.1/src/sexy-enum-types.h0000664000175000017500000000102012042412720014575 00000000000000 /* Generated data (by glib-mkenums) */ #ifndef _SEXY_ENUM_TYPES_H_ #define _SEXY_ENUM_TYPES_H_ #include G_BEGIN_DECLS /* enumerations from "sexy-icon-entry.h" */ GType sexy_icon_entry_position_get_type(void); #define SEXY_TYPE_ICON_ENTRY_POSITION (sexy_icon_entry_position_get_type()) /* enumerations from "sexy-spell-entry.h" */ GType sexy_spell_error_get_type(void); #define SEXY_TYPE_SPELL_ERROR (sexy_spell_error_get_type()) G_END_DECLS #endif /* _SEXY_ENUM_TYPES_H_ */ /* Generated data ends here */ referencer-1.2.1/src/ThumbnailGenerator.h0000664000175000017500000000130712042465253015314 00000000000000 #ifndef THUMBNAILGENERATOR_H #define THUMBNAILGENERATOR_H #include #include #include class Document; class ThumbnailGenerator { Glib::Mutex taskLock_; std::multimap taskList_; static Glib::RefPtr defaultthumb_; static Glib::RefPtr thumbframe_; void mainLoop (); Glib::RefPtr lookupThumb (Glib::ustring const &file); ThumbnailGenerator (); void run (); public: void registerRequest (Glib::ustring const &file, Document *doc); void deregisterRequest (Document *doc); Glib::RefPtr getThumbnailSynchronous (Glib::ustring const &file); static ThumbnailGenerator &instance (); }; #endif referencer-1.2.1/src/DocumentTypes.C0000664000175000017500000002031112042420323014241 00000000000000 #include #include #include "DocumentTypes.h" void DocumentTypeManager::registerField ( Glib::ustring internalName, Glib::ustring displayName, bool shortField) { DocumentField newbie (internalName, displayName, shortField); documentFields_[internalName] = newbie; } void DocumentTypeManager::addField (DocumentType &type, Glib::ustring internalName, bool required) { if (documentFields_.find (internalName) == documentFields_.end()) DEBUG ("unknown field " + internalName); if (required) type.requiredFields_.push_back (documentFields_[internalName]); else type.optionalFields_.push_back (documentFields_[internalName]); } DocumentTypeManager::DocumentTypeManager () { registerField ("title", _("Title"), false); registerField ("author", _("Authors"), false); registerField ("journal", _("Journal"), false); registerField ("year", _("Year"), true); registerField ("volume", _("Volume"), true); registerField ("number", _("Issue"), true); registerField ("pages", _("Pages"), true); registerField ("month", _("Month"), true); registerField ("note", _("Note"), false); registerField ("key", _("Key"), true); registerField ("editor", _("Editor"), false); registerField ("publisher", _("Publisher"), false); registerField ("series", _("Series"), false); registerField ("address", _("Address"), false); registerField ("edition", _("Edition"), false); registerField ("booktitle", _("Book title"), false); registerField ("organisation", _("Organisation"), false); registerField ("howpublished", _("How published"), false); registerField ("school", _("School"), false); registerField ("institution", _("Institution"), false); registerField ("chapter", _("Chapter"), false); registerField ("type", _("Type"), false); registerField ("doi", _("DOI"), false); DocumentType article ("article", _("Article")); addField (article, "title", true); addField (article, "journal", true); addField (article, "year", true); addField (article, "author", true); addField (article, "volume", false); addField (article, "number", false); addField (article, "pages", false); addField (article, "doi", false); // Fields John thinks are silly /* addField (article, "month", false); addField (article, "note", false); */ registerType (article); DocumentType book ("book", _("Book")); addField (book, "author", true); addField (book, "editor", true); addField (book, "title", true); addField (book, "publisher", true); addField (book, "year", true); addField (book, "volume", false); addField (book, "series", false); addField (book, "address", false); addField (book, "edition", false); addField (book, "doi", false); // Fields John thinks are silly /* addField (book, "month", false); addField (book, "note", false); */ registerType (book); DocumentType inproceedings ("inproceedings", _("In Proceedings")); addField (inproceedings, "author", true); addField (inproceedings, "title", true); addField (inproceedings, "booktitle", true); addField (inproceedings, "year", true); addField (inproceedings, "editor", false); addField (inproceedings, "pages", false); addField (inproceedings, "organisation", false); addField (inproceedings, "publisher", false); addField (inproceedings, "address", false); addField (inproceedings, "doi", false); /* addField (inproceedings, "month", false); addField (inproceedings, "note", false); */ registerType (inproceedings); DocumentType misc ("misc", _("Misc")); addField (misc, "author", false); addField (misc, "title", false); addField (misc, "howpublished", false); addField (misc, "month", false); addField (misc, "year", false); addField (misc, "note", false); addField (misc, "doi", false); registerType (misc); DocumentType unpublished ("unpublished", _("Unpublished")); addField (unpublished, "author", true); addField (unpublished, "title", true); addField (unpublished, "note", true); addField (unpublished, "month", false); addField (unpublished, "year", false); addField (unpublished, "doi", false); registerType (unpublished); DocumentType mastersthesis ("mastersthesis", _("Master's thesis")); addField (mastersthesis, "author", true); addField (mastersthesis, "title", true); addField (mastersthesis, "school", true); addField (mastersthesis, "year", true); addField (mastersthesis, "address", false); addField (mastersthesis, "note", false); addField (mastersthesis, "month", false); addField (mastersthesis, "doi", false); registerType (mastersthesis); DocumentType phdthesis ("phdthesis", _("PhD thesis")); addField (phdthesis, "author", true); addField (phdthesis, "title", true); addField (phdthesis, "school", true); addField (phdthesis, "year", true); addField (phdthesis, "address", false); addField (phdthesis, "note", false); addField (phdthesis, "month", false); addField (phdthesis, "doi", false); registerType (phdthesis); DocumentType proceedings ("proceedings", _("Proceedings")); addField (proceedings, "title", true); addField (proceedings, "year", true); addField (proceedings, "editor", false); addField (proceedings, "publisher", false); addField (proceedings, "organisation", false); addField (proceedings, "address", false); addField (proceedings, "month", false); addField (proceedings, "note", false); addField (proceedings, "doi", false); registerType (proceedings); DocumentType conference ("conference", _("Conference")); addField (conference, "title", true); addField (conference, "author", false); addField (conference, "howpublished", false); addField (conference, "address", false); addField (conference, "month", false); addField (conference, "year", false); addField (conference, "note", false); addField (conference, "doi", false); registerType (conference); DocumentType inbook ("inbook", _("In Book")); addField (inbook, "title", true); addField (inbook, "editor", true); addField (inbook, "author", true); addField (inbook, "chapter", true); addField (inbook, "pages", true); addField (inbook, "publisher", true); addField (inbook, "year", true); addField (inbook, "volume", false); addField (inbook, "series", false); addField (inbook, "address", false); addField (inbook, "edition", false); addField (inbook, "month", false); addField (inbook, "note", false); addField (inbook, "doi", false); registerType (inbook); DocumentType booklet ("booklet", _("Booklet")); addField (booklet, "title", true); addField (booklet, "author", false); addField (booklet, "howpublished", false); addField (booklet, "address", false); addField (booklet, "month", false); addField (booklet, "year", false); addField (booklet, "note", false); addField (booklet, "doi", false); registerType (booklet); DocumentType incollection ("incollection", _("In Collection")); addField (incollection, "author", true); addField (incollection, "title", true); addField (incollection, "booktitle", true); addField (incollection, "year", true); addField (incollection, "editor", false); addField (incollection, "pages", false); addField (incollection, "organisation", false); addField (incollection, "publisher", false); addField (incollection, "address", false); addField (incollection, "month", false); addField (incollection, "note", false); addField (incollection, "doi", false); registerType (incollection); DocumentType manual ("manual", _("Manual")); addField (manual, "title", true); addField (manual, "author", false); addField (manual, "organisation", false); addField (manual, "address", false); addField (manual, "edition", false); addField (manual, "month", false); addField (manual, "year", false); addField (manual, "note", false); addField (manual, "doi", false); registerType (manual); DocumentType techreport ("techreport", _("Technical Report")); addField (techreport, "title", true); addField (techreport, "author", true); addField (techreport, "institution", true); addField (techreport, "year", true); addField (techreport, "type", false); addField (techreport, "number", false); addField (techreport, "address", false); addField (techreport, "month", false); addField (techreport, "note", false); addField (techreport, "doi", false); registerType (techreport); } DocumentType DocumentTypeManager::getType (Glib::ustring bibtexName) { return documentTypes_[bibtexName]; } referencer-1.2.1/src/Linker.h0000664000175000017500000000300312045407237012742 00000000000000 #ifndef LINKER_H #define LINKER_H #include class Document; class RefWindow; class Linker { public: virtual bool canLink (Document const *doc) {return false;}; virtual void doLink (Document *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getLabel () {return Glib::ustring();}; virtual Glib::ustring getName () = 0; void createUI (RefWindow *window, DocumentView *view); Linker() {} virtual ~Linker() {} }; class DoiLinker : public Linker { public: bool canLink (Document const *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getName () {return "doi";} Glib::ustring getLabel (); }; class ArxivLinker : public Linker { public: bool canLink (Document const *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getName () {return "arxiv";} Glib::ustring getLabel (); }; class UrlLinker : public Linker { public: bool canLink (Document const *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getName () {return "url";} Glib::ustring getLabel (); }; class PubmedLinker : public Linker { public: bool canLink (Document const *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getName () {return "pubmed";} Glib::ustring getLabel (); }; class GoogleLinker : public Linker { public: bool canLink (Document const *doc); virtual Glib::ustring getURL (Document *doc); virtual Glib::ustring getName () {return "google";} Glib::ustring getLabel (); }; #endif referencer-1.2.1/src/BibData.C0000664000175000017500000001707512042420323012741 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include #include "ucompose.hpp" #include "Transfer.h" #include "Preferences.h" #include "BibData.h" #include "Library.h" Glib::ustring BibData::default_document_type; Glib::ustring &BibData::getDefaultDocType () { if (default_document_type.empty ()) default_document_type = "Article"; return default_document_type; } BibData::BibData () { // The only field that actually has a default value type_ = getDefaultDocType (); } /* * Dump all fields to standard out */ void BibData::print () const { DEBUG (String::ucompose ("%1: %2\n", "DOI: ", doi_)); DEBUG (String::ucompose ("%1: %2\n", "Title: ", title_)); DEBUG (String::ucompose ("%1: %2\n", "Authors: ", authors_)); DEBUG (String::ucompose ("%1: %2\n", "Journal: ", journal_)); DEBUG (String::ucompose ("%1: %2\n", "Volume: ", volume_)); DEBUG (String::ucompose ("%1: %2\n", "Number: ", issue_)); DEBUG (String::ucompose ("%1: %2\n", "Pages: ", pages_)); DEBUG (String::ucompose ("%1: %2\n", "Year: ", year_)); ExtrasMap::const_iterator it = extras_.begin (); ExtrasMap::const_iterator const end = extras_.end (); for (; it != end; ++it) { DEBUG (String::ucompose ("%1: %2\n", it->first, it->second)); } } void BibData::clear () { doi_ = ""; volume_ = ""; issue_ = ""; pages_ = ""; authors_ = ""; journal_ = ""; title_ = ""; year_ = ""; extras_.clear (); } void BibData::addExtra (Glib::ustring const &key, Glib::ustring const &value) { if (!key.validate()) { throw (new std::runtime_error ( std::string("Invalid UTF-8 in key in ") + std::string(__FUNCTION__))); } if (!value.validate()) { throw (new std::runtime_error ( std::string("Invalid UTF-8 in value in ") + std::string(__FUNCTION__))); } if ( key == "Keywords" && !extras_[key].empty() ) { extras_[key] = extras_[key] + "; " + value; } else { extras_[key] = value; } } void BibData::clearExtras () { extras_.clear (); } void BibData::writeXML (xmlTextWriterPtr writer) { xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_TYPE, BAD_CAST type_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_DOI, BAD_CAST doi_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_TITLE, BAD_CAST title_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_AUTHORS, BAD_CAST authors_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_JOURNAL, BAD_CAST journal_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_VOLUME, BAD_CAST volume_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_NUMBER, BAD_CAST issue_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_PAGES, BAD_CAST pages_.c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_YEAR, BAD_CAST year_.c_str()); ExtrasMap::iterator it = extras_.begin (); ExtrasMap::iterator const end = extras_.end (); for (; it != end; ++it) { xmlTextWriterStartElement(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_EXTRA); xmlTextWriterWriteAttribute(writer, BAD_CAST LIB_ELEMENT_DOC_BIB_EXTRA_KEY, BAD_CAST (*it).first.c_str()); xmlTextWriterWriteString(writer, BAD_CAST (*it).second.c_str()); xmlTextWriterEndElement(writer); } } /* * Try to guess the year of the paper from the raw text */ void BibData::guessYear (Glib::ustring const &raw_) { /* * Take the greatest four-letter numeric which is between * 1990 and the current year. This will occasionally * pick up a 'number' or 'page' instead, but should * almost always be the year. */ std::string const &raw = raw_; boost::regex expression("\\W([0-9][0-9][0-9][0-9])\\W"); int latestyear = 0; Glib::ustring latestyear_str; int const dawn_of_ejournals = 1990; time_t const timesecs = time(NULL); struct tm *UTC = gmtime (×ecs); int const present_day = UTC->tm_year + 1900; std::string::const_iterator start, end; start = raw.begin(); end = raw.end(); boost::match_results what; boost::match_flag_type flags = boost::match_default; while(regex_search(start, end, what, expression, flags)) { Glib::ustring yearstring = std::string(what[1]); int yearval = atoi(yearstring.c_str()); if (yearval > dawn_of_ejournals && yearval <= present_day) { if (yearval > latestyear) { latestyear = yearval; latestyear_str = yearstring; } } // update search position: start = what[0].second; // update flags: flags |= boost::match_prev_avail; flags |= boost::match_not_bob; } if (latestyear) setYear (latestyear_str); } /* * Try to guess the DOI of the paper from the raw text */ void BibData::guessDoi (Glib::ustring const &graw) { std::string const &raw = graw; boost::regex expression( "\\(?" "(?:" "(?:[Dd][Oo][Ii]:? *)" "|" "(?:[Dd]igital *[Oo]bject *[Ii]denti(?:fi|fi)er:? *)" ")" "(" "[^\\.\\s]+" "\\." "[^\\/\\s]+" "\\/" "[^\\s]+" ")" ); std::string::const_iterator start, end; start = raw.begin(); end = raw.end(); boost::match_results what; boost::match_flag_type flags = boost::match_default; while(regex_search(start, end, what, expression, flags)) { Glib::ustring wholeMatch = std::string(what[0]); Glib::ustring gstr = std::string(what[1]); // Special case to chop off trailing comma to deal with // "doi: foo, available online" in JCompPhys // Note that commas ARE legal suffix characters in Doi spec // But there's nothing in the spec about regexing them // out of PDFS :-) -jcs if (gstr[gstr.size() - 1] == ',') { gstr = gstr.substr (0, gstr.size() - 1); }; /* * Special case to chop off trailing parenthesis * in (doi:foo.foo/bar) case */ if (wholeMatch[0] == '(' && wholeMatch[wholeMatch.size() - 1] == ')') { gstr = gstr.substr (0, gstr.size() - 1); } setDoi (gstr); return; } } /* * Try to extract the Arxiv eprint value of the paper from the raw text */ void BibData::guessArxiv (Glib::ustring const &raw_) { std::string const &raw = raw_; boost::regex expression( "arXiv:" "(" "[^\\/\\s]+" "[\\/\\.]" "[^\\s]+" ")" ); std::string::const_iterator start, end; start = raw.begin(); end = raw.end(); boost::match_results what; boost::match_flag_type flags = boost::match_default; while(regex_search(start, end, what, expression, flags)) { Glib::ustring gstr = std::string(what[1]); addExtra ("eprint", gstr); return; } } /* * Take values from the source BibData for fields of ours * which are currently empty. */ void BibData::mergeIn (BibData const &source) { type_ = source.getType (); if (!source.getDoi ().empty ()) doi_ = source.getDoi (); if (!source.getVolume().empty ()) volume_ = source.getVolume (); if (!source.getIssue().empty ()) issue_ = source.getIssue (); if (!source.getPages().empty ()) pages_ = source.getPages (); if (!source.getAuthors().empty ()) authors_ = source.getAuthors (); if (!source.getJournal().empty ()) journal_ = source.getJournal (); if (!source.getTitle().empty ()) title_ = source.getTitle (); if (!source.getYear().empty ()) year_ = source.getYear (); ExtrasMap sourceextras = source.getExtras(); ExtrasMap::iterator it = sourceextras.begin (); ExtrasMap::iterator const end = sourceextras.end (); for (; it != end; ++it) { if (extras_[it->first].empty()) { addExtra (it->first, it->second); } } } referencer-1.2.1/src/ucompose.hpp0000664000175000017500000003155112042412720013707 00000000000000/* Defines String::ucompose(fmt, arg...) for easy, i18n-friendly * composition of strings with Gtkmm >= 1.3.* (see www.gtkmm.org). * Uses Glib::ustring instead of std::string which doesn't work with * Gtkmm due to character encoding troubles with stringstreams. * * Version 1.0.4. * * Copyright (c) 2002, 03, 04 Ole Laursen . * * 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.1 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 * 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. */ // // Basic usage is like // // String::ucompose("This is a %1x%2 matrix.", rows, cols); // // Search on the web for "string compose library" or see the included // README.compose for more details. // #ifndef STRING_UCOMPOSE_HPP #define STRING_UCOMPOSE_HPP #include #include #include #include #include #include // for multimap namespace UStringPrivate { // the actual composition class - using String::ucompose is cleaner, so we // hide it here class Composition { public: // initialize and prepare format string on the form "text %1 text %2 etc." explicit Composition(std::string fmt); // supply an replacement argument starting from %1 template Composition &arg(const T &obj); // compose and return string Glib::ustring str() const; private: std::wostringstream os; int arg_no; // we store the output as a list - when the output string is requested, the // list is concatenated to a string; this way we can keep iterators into // the list instead of into a string where they're possibly invalidated // when inserting a specification string typedef std::list output_list; output_list output; // the initial parse of the format string fills in the specification map // with positions for each of the various %?s typedef std::multimap specification_map; specification_map specs; template std::string stringify(T obj); }; // helper for converting spec string numbers inline int char_to_int(char c) { switch (c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; default: return -1000; } } inline bool is_number(int n) { switch (n) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return true; default: return false; } } template inline std::string Composition::stringify(T obj) { os << obj; std::wstring str = os.str(); return Glib::convert(std::string(reinterpret_cast(str.data()), str.size() * sizeof(wchar_t)), "UTF-8", "WCHAR_T"); } // specialisations for the common string types template <> inline std::string Composition::stringify(std::string obj) { return obj; } template <> inline std::string Composition::stringify(Glib::ustring obj) { return obj; } template <> inline std::string Composition::stringify(const char *obj) { return obj; } template <> inline std::string Composition::stringify(char *obj) { return obj; } // implementation of class Composition template inline Composition &Composition::arg(const T &obj) { Glib::ustring rep = stringify(obj); if (!rep.empty()) { // manipulators don't produce output for (specification_map::const_iterator i = specs.lower_bound(arg_no), end = specs.upper_bound(arg_no); i != end; ++i) { output_list::iterator pos = i->second; ++pos; output.insert(pos, rep); } os.str(std::wstring()); //os.clear(); ++arg_no; } return *this; } inline Composition::Composition(std::string fmt) : arg_no(1) { #if __GNUC__ >= 3 os.imbue(std::locale("")); // use the user's locale for the stream #endif std::string::size_type b = 0, i = 0; // fill in output with the strings between the %1 %2 %3 etc. and // fill in specs with the positions while (i < fmt.length()) { if (fmt[i] == '%' && i + 1 < fmt.length()) { if (fmt[i + 1] == '%') { // catch %% fmt.replace(i, 2, "%"); ++i; } else if (is_number(fmt[i + 1])) { // aha! a spec! // save string output.push_back(fmt.substr(b, i - b)); int n = 1; // number of digits int spec_no = 0; do { spec_no += char_to_int(fmt[i + n]); spec_no *= 10; ++n; } while (i + n < fmt.length() && is_number(fmt[i + n])); spec_no /= 10; output_list::iterator pos = output.end(); --pos; // safe since we have just inserted a string specs.insert(specification_map::value_type(spec_no, pos)); // jump over spec string i += n; b = i; } else ++i; } else ++i; } if (i - b > 0) // add the rest of the string output.push_back(fmt.substr(b, i - b)); } inline Glib::ustring Composition::str() const { // assemble string std::string str; for (output_list::const_iterator i = output.begin(), end = output.end(); i != end; ++i) str += *i; return str; } } namespace String { // a series of functions which accept a format string on the form "text %1 // more %2 less %3" and a number of templated parameters and spits out the // composited string inline Glib::ustring ucompose(const Glib::ustring &fmt) { return fmt.c_str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1) { UStringPrivate::Composition c(fmt); c.arg(o1); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10, const T11 &o11) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10).arg(o11); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10, const T11 &o11, const T12 &o12) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10).arg(o11).arg(o12); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10, const T11 &o11, const T12 &o12, const T13 &o13) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10).arg(o11).arg(o12).arg(o13); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10, const T11 &o11, const T12 &o12, const T13 &o13, const T14 &o14) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10).arg(o11).arg(o12).arg(o13).arg(o14); return c.str(); } template inline Glib::ustring ucompose(const Glib::ustring &fmt, const T1 &o1, const T2 &o2, const T3 &o3, const T4 &o4, const T5 &o5, const T6 &o6, const T7 &o7, const T8 &o8, const T9 &o9, const T10 &o10, const T11 &o11, const T12 &o12, const T13 &o13, const T14 &o14, const T15 &o15) { UStringPrivate::Composition c(fmt); c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) .arg(o10).arg(o11).arg(o12).arg(o13).arg(o14).arg(o15); return c.str(); } } #endif // STRING_UCOMPOSE_HPP referencer-1.2.1/src/Makefile.am0000664000175000017500000000275712150640651013414 00000000000000ACLOCAL_AMFLAGS = -I m4 bin_PROGRAMS = referencer INCLUDES = -DDATADIR=\""$(pkgdatadir)"\" \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DPLUGINDIR=\""$(pkglibdir)"\" LDADD = \ $(DEPS_LIBS) \ $(top_builddir)/libbibutils/libbibutils.a if ENABLE_PYTHON INCLUDES += \ $(NO_STRICT_ALIASING_CFLAGS) \ $(PYGTK_CFLAGS) \ $(PYTHON_CFLAGS) LDADD += $(PYTHON_LIBS) endif referencer_SOURCES = \ ArxivPlugin.C \ ArxivPlugin.h \ BibData.C \ BibData.h \ BibUtils.C \ BibUtils.h \ CaseFoldCompare.h \ CrossRefPlugin.C \ CrossRefPlugin.h \ Document.C \ Document.h \ DocumentList.C \ DocumentList.h \ DocumentProperties.C \ DocumentProperties.h \ DocumentTypes.C \ DocumentTypes.h \ DocumentView.C \ DocumentView.h \ EntryMultiCompletion.C \ EntryMultiCompletion.h \ icon-entry.cc \ icon-entry.h \ Library.C \ Library.h \ Linker.C \ Linker.h \ main.C \ Plugin.h \ PluginManager.C \ PluginManager.h \ Preferences.C \ Preferences.h \ Progress.C \ Progress.h \ PythonDocument.C \ PythonDocument.h \ PythonPlugin.C \ PythonPlugin.h \ sexy-enum-types.h \ sexy-icon-entry.c \ sexy-icon-entry.h \ TagList.C \ TagList.h \ ThumbnailGenerator.C \ ThumbnailGenerator.h \ referencer_ui.h \ RefWindow.C \ RefWindow.h \ Transfer.C \ Transfer.h \ ucompose.hpp \ ustring.cc \ ustring.h \ Utility.C \ Utility.h AM_CXXFLAGS = @CXXFLAGS@ $(DEPS_CFLAGS) -I$(top_srcdir) AM_CFLAGS = @CXXFLAGS@ $(DEPS_CFLAGS) -I$(top_srcdir) referencer-1.2.1/src/PythonPlugin.C0000664000175000017500000004004012043667367014125 00000000000000 #include #include #include #include #include "ucompose.hpp" #include "Document.h" #include "PluginManager.h" #include "Utility.h" #include "PythonDocument.h" #include "PythonPlugin.h" PythonPlugin::PythonPlugin(PluginManager *owner) { pResolveFunc_ = NULL; pCanResolveFunc_ = NULL; pMod_ = NULL; owner_ = owner; } PythonPlugin::~PythonPlugin() { if (loaded_) { if (pResolveFunc_ != NULL) Py_DECREF (pResolveFunc_); if (pCanResolveFunc_ != NULL) Py_DECREF (pCanResolveFunc_); if (pPluginInfo_ != NULL) Py_DECREF (pPluginInfo_); Py_DECREF (pMod_); } } void freeString (void *data) { delete (Glib::ustring*)data; } /* Convenience function for sometimes-present items */ Glib::ustring safePyDictGetItem (PyObject *dict, Glib::ustring const &key) { PyObject *keyStr = PyString_FromString (key.c_str()); if (PyDict_Contains (dict, keyStr)) { Py_DECREF (keyStr); return PyString_AsString (PyDict_GetItemString (dict, key.c_str())); } else { Py_DECREF (keyStr); return Glib::ustring (); } } void PythonPlugin::load (std::string const &moduleName) { /* XXX this gets called before we're in the main event loop, so we can't use * displayException in the error cases here */ moduleName_ = moduleName; PyObject *pName = PyString_FromString(moduleName.c_str()); if (!pName) { printException (); DEBUG ("Plugin::load: Couldn't construct module name"); return; } pMod_ = PyImport_Import(pName); Py_DECREF(pName); if (!pMod_) { printException (); DEBUG ("Plugin::load: Couldn't import module"); return; } pPluginInfo_ = PyObject_GetAttrString (pMod_, "referencer_plugin_info"); if (!pPluginInfo_) { DEBUG ("Plugin::load: Couldn't find plugin info"); Py_DECREF (pMod_); return; } if (!PyDict_Check (pPluginInfo_)) { DEBUG (String::ucompose ("%1:Info dict isn't a dict! Old plugin?", moduleName)); Py_DECREF (pMod_); return; } /* Extract metadata capabilities */ if (PyObject_HasAttrString (pMod_, "referencer_plugin_capabilities")) { PyObject *pCaps = PyObject_GetAttrString (pMod_, "referencer_plugin_capabilities"); int const N = PyList_Size (pCaps); for (int i = 0; i < N; ++i) { PyObject *pCapabilityString = PyList_GetItem (pCaps, i); char *const cstr = PyString_AsString (pCapabilityString); Glib::ustring str; if (cstr) str = cstr; if (str.empty ()) continue; if (str == "doi") cap_.add(PluginCapability::DOI); else if (str == "arxiv") cap_.add(PluginCapability::ARXIV); else if (str == "pubmed") cap_.add(PluginCapability::PUBMED); else if (str == "url") cap_.add(PluginCapability::URL); else if (str == "resolve_metadata") cap_.add(PluginCapability::RESOLVE_METADATA); } Py_DECREF (pCaps); } else { DEBUG (String::ucompose ("no metadata capabilities in %1", moduleName_)); } /* Extract metadata lookup function */ if (cap_.hasMetadataCapability()) { pResolveFunc_ = PyObject_GetAttrString (pMod_, "resolve_metadata"); if (!pResolveFunc_) { DEBUG ("Couldn't find resolver"); Py_DECREF (pMod_); return; } else { DEBUG ("Found resolver %1", pResolveFunc_); } pCanResolveFunc_ = PyObject_GetAttrString (pMod_, "can_resolve_metadata"); if (!pCanResolveFunc_) { DEBUG ("Couldn't find can_resolve_metadata"); } else { DEBUG ("Found can_resolve_metadata %1", pCanResolveFunc_); } } /* Extract actions */ if (PyObject_HasAttrString (pMod_, "referencer_plugin_actions")) { PyObject *pActions = PyObject_GetAttrString (pMod_, "referencer_plugin_actions"); int const nActions = PyList_Size (pActions); /* Factory for creating stock icons */ Glib::RefPtr iconFactory = Gtk::IconFactory::create(); iconFactory->add_default (); for (int i = 0; i < nActions; ++i) { PyObject *pActionDict = PyList_GetItem (pActions, i); /* FIXME: don't require all fields */ const Glib::ustring name = safePyDictGetItem (pActionDict, "name"); const Glib::ustring label = safePyDictGetItem (pActionDict, "label"); const Glib::ustring tooltip = safePyDictGetItem (pActionDict, "tooltip"); const Glib::ustring icon = safePyDictGetItem (pActionDict, "icon"); const Glib::ustring accelerator = safePyDictGetItem (pActionDict, "accelerator"); const Glib::ustring callback = safePyDictGetItem (pActionDict, "callback"); const Glib::ustring sensitivity = safePyDictGetItem (pActionDict, "sensitivity"); Glib::ustring stockStr = "_stock:"; Gtk::StockID stockId; if (icon.substr(0, stockStr.length()) == stockStr) { /* Stock icon */ stockId = Gtk::StockID (icon.substr(stockStr.length(), icon.length())); } else if (icon.length()) { /* Icon from file */ try { Glib::ustring const iconFile = owner_->findDataFile (icon); Gtk::IconSource iconSource; iconSource.set_pixbuf( Gdk::Pixbuf::create_from_file(iconFile) ); iconSource.set_size(Gtk::ICON_SIZE_SMALL_TOOLBAR); iconSource.set_size_wildcarded(); //Icon may be scaled. Gtk::IconSet iconSet; iconSet.add_source (iconSource); stockId = Gtk::StockID (Glib::ustring("referencer") + Glib::ustring (name)); iconFactory->add (stockId, iconSet); } catch(const Glib::Exception& ex) { /* File not found, show error icon */ DEBUG (ex.what()); stockId = Gtk::StockID (Gtk::Stock::DIALOG_ERROR); } } Glib::RefPtr action = Gtk::Action::create( name, stockId, label, tooltip); action->set_data ("accelerator", new Glib::ustring (accelerator), freeString); action->set_data ("callback", new Glib::ustring (callback), freeString); action->set_data ("sensitivity", new Glib::ustring (sensitivity), freeString); actions_.push_back (action); } Py_DECREF (pActions); } else { DEBUG (String::ucompose ("No actions in %1", moduleName_)); } DEBUG (String::ucompose ("successfully loaded %1", moduleName)); loaded_ = true; } int PythonPlugin::canResolve (Document &doc) { if (pCanResolveFunc_ == NULL) return -1; referencer_document *pDoc = PyObject_New (referencer_document, &t_referencer_document); pDoc->doc_ = &doc; PyObject *pArgs = NULL; pArgs = Py_BuildValue ("(O)", pDoc); PyObject *pReturn = PyObject_CallObject(pCanResolveFunc_, pArgs); Py_DECREF(pArgs); Py_DECREF (pDoc); int toret = -1; if (pReturn != NULL) { toret = PyLong_AsLong(pReturn); Py_DECREF(pReturn); } else { DEBUG ("PythonPlugin::resolveID: NULL return from PyObject_CallObject"); displayException (); } return toret; } bool PythonPlugin::resolve (Document &doc) { bool success = false; std::vector ids = cap_.get(); std::vector::iterator it = ids.begin(); std::vector::iterator const end = ids.end(); for (; it != end; ++it) { success = resolveID (doc, *it); if (success) break; } return success; } /** * Invoke a plugin action and return true if the plugin * modifies a document or the library */ bool PythonPlugin::doAction (Glib::ustring const function, std::vector docs) { /* Check the callback exists */ if (!PyObject_HasAttrString (pMod_, (char*)function.c_str())) { DEBUG ("function %1 not found", function); return false; } /* Look up the callback function */ PyObject *pActionFunc = PyObject_GetAttrString (pMod_, (char*)function.c_str()); /* Construct the 'documents' argument */ PyObject *pDocList = PyList_New (docs.size()); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (int i = 0; it != end; ++it, ++i) { referencer_document *pDoc = PyObject_New (referencer_document, &t_referencer_document); pDoc->doc_ = (*it); PyList_SetItem (pDocList, i, (PyObject*)pDoc); } /* Build the argument tuple: (library, documents) */ /* Library is nil for now */ PyObject *pArgs = Py_BuildValue ("(i,O)", 0, pDocList); /* Invoke the python */ PyObject *pReturn = PyObject_CallObject(pActionFunc, pArgs); Py_DECREF (pArgs); if (pReturn == NULL) { DEBUG ("PythonPlugin::doAction: NULL return value"); displayException (); return false; } else { return pReturn == Py_True; } } bool PythonPlugin::updateSensitivity (Glib::ustring const function, std::vector docs) { /* Check the callback exists */ if (!PyObject_HasAttrString (pMod_, (char*)function.c_str())) { /* No sensitivity function: always enable */ return true; } /* Look up the callback function */ PyObject *pActionFunc = PyObject_GetAttrString (pMod_, (char*)function.c_str()); /* Construct the 'documents' argument */ PyObject *pDocList = PyList_New (docs.size()); std::vector::iterator it = docs.begin (); std::vector::iterator const end = docs.end (); for (int i = 0; it != end; ++it, ++i) { referencer_document *pDoc = PyObject_New (referencer_document, &t_referencer_document); pDoc->doc_ = (*it); PyList_SetItem (pDocList, i, (PyObject*)pDoc); } /* Build the argument tuple: (library, documents) */ /* Library is nil for now */ PyObject *pArgs = Py_BuildValue ("(i,O)", 0, pDocList); /* Invoke the python */ PyObject *pReturn = PyObject_CallObject(pActionFunc, pArgs); Py_DECREF (pArgs); if (pReturn == NULL) { DEBUG ("PythonPlugin::doAction: NULL return value"); displayException (); return false; } else { return pReturn == Py_True; } } Glib::ustring PythonPlugin::formatException () { PyObject *pErr = PyErr_Occurred (); if (pErr) { PyObject *ptype; PyObject *pvalue; PyObject *ptraceback; PyErr_Fetch(&ptype, &pvalue, &ptraceback); PyObject *pStr; pStr = PyObject_Str (ptype); Glib::ustring const exType = PyString_AsString (pStr); pStr = PyObject_Str (pvalue); Glib::ustring const exValue = PyString_AsString (pStr); Glib::ustring message = String::ucompose ( _("%1: %2\n\n%3: %4\n%5: %6\n"), _("Exception"), (exType), _("Module"), (getShortName()), _("Explanation"), (exValue) ); exceptionLog_ += message; return message; } else { return Glib::ustring (); } } void PythonPlugin::printException () { DEBUG(formatException ()); } void PythonPlugin::displayException () { PyObject *pErr = PyErr_Occurred (); if (pErr) { PyObject *ptype; PyObject *pvalue; PyObject *ptraceback; PyErr_Fetch(&ptype, &pvalue, &ptraceback); PyObject *pStr; pStr = PyObject_Str (ptype); Glib::ustring const exType = PyString_AsString (pStr); pStr = PyObject_Str (pvalue); Glib::ustring const exValue = PyString_AsString (pStr); Glib::ustring message = String::ucompose ( _("%1: %2\n\n%3: %4\n%5: %6"), _("Exception"), Glib::Markup::escape_text (exType), _("Module"), Glib::Markup::escape_text (getShortName()), _("Explanation"), Glib::Markup::escape_text (exValue) ); Gtk::MessageDialog dialog ( message, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); dialog.run (); } } bool PythonPlugin::resolveID (Document &doc, PluginCapability::Identifier id) { bool success = false; referencer_document *pDoc = PyObject_New (referencer_document, &t_referencer_document); pDoc->doc_ = &doc; PyObject *pArgs = NULL; switch (id) { case PluginCapability::DOI: if (!doc.hasField ("doi")) return false; pArgs = Py_BuildValue ("(Os)", pDoc, "doi"); break; case PluginCapability::ARXIV: if (!doc.hasField ("eprint")) return false; pArgs = Py_BuildValue ("(Os)", pDoc, "arxiv"); break; case PluginCapability::PUBMED: if (!doc.hasField ("pmid")) return false; pArgs = Py_BuildValue ("(Os)", pDoc, "pubmed"); break; case PluginCapability::URL: if (!doc.hasField ("url")) return false; pArgs = Py_BuildValue ("(Os)", pDoc, "url"); break; case PluginCapability::RESOLVE_METADATA: pArgs = Py_BuildValue ("(O)", pDoc); break; default: DEBUG ("PythonPlugin::resolveID: warning, unhandled id type %1", id); return false; } PyObject *pReturn = PyObject_CallObject(pResolveFunc_, pArgs); Py_DECREF(pArgs); Py_DECREF (pDoc); if (pReturn != NULL) { Py_DECREF(pReturn); success = (pReturn == Py_True); } else { DEBUG ("PythonPlugin::resolveID: NULL return from PyObject_CallObject"); displayException (); } return success; } Glib::ustring const PythonPlugin::getLongName () { return getPluginInfoField ("longname"); } Glib::ustring const PythonPlugin::getAuthor () { return getPluginInfoField ("author"); } Glib::ustring const PythonPlugin::getVersion () { return getPluginInfoField ("version"); } Glib::ustring const PythonPlugin::getUI () { return getPluginInfoField ("ui"); } Glib::ustring const PythonPlugin::getPluginInfoField (Glib::ustring const &targetKey) { if (!loaded_) return Glib::ustring (); PyObject *keyStr = PyString_FromString (targetKey.c_str()); if (PyDict_Contains (pPluginInfo_, keyStr)) { Py_DECREF (keyStr); return Glib::ustring ( PyString_AsString ( PyDict_GetItemString( pPluginInfo_, targetKey.c_str()))); } else { Py_DECREF (keyStr); return Glib::ustring (); } } bool PythonPlugin::canConfigure () { if (pMod_) return PyObject_HasAttrString (pMod_, "referencer_config"); else return false; } void PythonPlugin::doConfigure () { PyObject *confFunc = PyObject_GetAttrString (pMod_, "referencer_config"); if (!confFunc) return; PyObject *pArgs = Py_BuildValue ("()"); PyObject *pReturn = PyObject_CallObject(confFunc, pArgs); if (pArgs) Py_DECREF (pArgs); if (confFunc) Py_DECREF (confFunc); if (pReturn) Py_DECREF (pReturn); } bool PythonPlugin::hasError () { return !exceptionLog_.empty(); } Glib::ustring PythonPlugin::getError () { return exceptionLog_; } bool PythonPlugin::canSearch () { if (pMod_) return PyObject_HasAttrString (pMod_, "referencer_search") && PyObject_HasAttrString (pMod_, "referencer_search_result"); else return false; } /** * Invoke pSearchFunc_ and cast results from list of * dictionaries into vector of maps */ Plugin::SearchResults PythonPlugin::doSearch (Glib::ustring const &searchTerms) { /* Look up search function */ PyObject *searchFunc = PyObject_GetAttrString (pMod_, "referencer_search"); if (!searchFunc) return Plugin::SearchResults(); /* Invoke search function */ PyObject *pArgs = Py_BuildValue ("(s)", searchTerms.c_str()); PyObject *pReturn = PyObject_CallObject(searchFunc, pArgs); Py_DECREF (pArgs); if (pReturn) { /* Copy Python result into C++ structures */ Plugin::SearchResults retval; int itemCount = PyList_Size (pReturn); for (int i = 0; i < itemCount; ++i) { /* Borrowed reference */ PyObject *dict = PyList_GetItem (pReturn, i); std::map result; /* Iterate over all items */ PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(dict, &pos, &key, &value)) { result[PyString_AsString(key)] = PyString_AsString(value); } retval.push_back(result); } Py_DECREF (pReturn); return retval; } else { DEBUG ("NULL return value"); displayException(); return Plugin::SearchResults(); } } Document PythonPlugin::getSearchResult (Glib::ustring const &token) { DEBUG ("token '%1'", token); /* Look up result lookup function */ PyObject *searchFunc = PyObject_GetAttrString (pMod_, "referencer_search_result"); if (!searchFunc) return Document(); /* Invoke result lookup function */ PyObject *pArgs = Py_BuildValue ("(s)", token.c_str()); PyObject *pReturn = PyObject_CallObject(searchFunc, pArgs); Py_DECREF (pArgs); if (pReturn) { /* Compose Document from returned fields */ Document doc; int itemCount = PyList_Size (pReturn); DEBUG ("got %1 fields", itemCount); PyObject *dict = pReturn; /* Borrowed reference */ std::map result; /* Iterate over all items */ PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(dict, &pos, &key, &value)) { DEBUG ("Setting %1 %2", PyString_AsString(key), PyString_AsString(value)); doc.setField (PyString_AsString(key), PyString_AsString(value)); } Py_DECREF (pReturn); return doc; } else { DEBUG ("NULL return value"); displayException(); return Document(); } } referencer-1.2.1/src/PythonDocument.C0000664000175000017500000001376512100122477014441 00000000000000 #include #include #include #include "Document.h" #include "Utility.h" #include "PythonDocument.h" static PyObject *referencer_document_get_key (PyObject *self, PyObject *args) { Glib::ustring value = ((referencer_document*)self)->doc_->getKey (); return PyString_FromString(value.c_str()); } static PyObject *referencer_document_set_key (PyObject *self, PyObject *args) { PyObject *value = PyTuple_GetItem (args, 0); ((referencer_document*)self)->doc_->setKey (PyString_AsString(value)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_get_filename (PyObject *self, PyObject *args) { Glib::ustring value = ((referencer_document*)self)->doc_->getFileName (); return PyString_FromString(value.c_str()); } static PyObject *referencer_document_set_filename (PyObject *self, PyObject *args) { PyObject *value = PyTuple_GetItem (args, 0); ((referencer_document*)self)->doc_->setFileName (PyString_AsString(value)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_get_notes(PyObject *self, PyObject *args) { Glib::ustring value = ((referencer_document*)self)->doc_->getNotes (); return PyString_FromString(value.c_str()); } static PyObject *referencer_document_set_notes (PyObject *self, PyObject *args) { PyObject *value = PyTuple_GetItem (args, 0); ((referencer_document*)self)->doc_->setNotes (PyString_AsString(value)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_get_type (PyObject *self, PyObject *args) { try { Glib::ustring value = ((referencer_document*)self)->doc_->getBibData().getType(); return PyString_FromString(value.c_str()); } catch (std::exception &ex) { PyErr_SetString (PyExc_KeyError, ex.what()); Py_INCREF(Py_None); return Py_None; } } static PyObject *referencer_document_set_type (PyObject *self, PyObject *args) { PyObject *value = PyTuple_GetItem (args, 0); ((referencer_document*)self)->doc_->getBibData().setType (PyString_AsString(value)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_get_field (PyObject *self, PyObject *args) { PyObject *fieldName = PyTuple_GetItem (args, 0); try { Glib::ustring value = ((referencer_document*)self)->doc_->getField (PyString_AsString(fieldName)); return PyString_FromString(value.c_str()); } catch (std::range_error &ex) { /* unknown field */ Py_INCREF(Py_None); return Py_None; } catch (std::exception &ex) { PyErr_SetString (PyExc_KeyError, ex.what()); return NULL; } } static PyObject *referencer_document_get_fields (PyObject *self, PyObject *args) { /* TODO */ } static PyObject *referencer_document_set_fields (PyObject *self, PyObject *args) { /* TODO */ } static PyObject *referencer_document_set_field (PyObject *self, PyObject *args) { PyObject *fieldName = PyTuple_GetItem (args, 0); PyObject *value = PyTuple_GetItem (args, 1); ((referencer_document*)self)->doc_->setField (PyString_AsString(fieldName), PyString_AsString(value)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_parse_bibtex (PyObject *self, PyObject *args) { PyObject *bibtex = PyTuple_GetItem (args, 0); ((referencer_document*)self)->doc_->parseBibtex (PyString_AsString(bibtex)); return Py_BuildValue ("i", 0); } static PyObject *referencer_document_print_bibtex (PyObject *self, PyObject *args) { /* Parse arguments */ Document *doc = ((referencer_document*)self)->doc_; bool useBraces = (PyTuple_GetItem (args, 0) == Py_True); bool utf8 = (PyTuple_GetItem (args, 1) == Py_True); /* Get bibtex string */ Glib::ustring bibtex = doc->printBibtex (useBraces, utf8); /* Convert for output */ /* FIXME: will this work with utf8 true? */ return PyString_FromString (bibtex.c_str()); } static void referencer_document_dealloc (PyObject *self) { DEBUG (">> referencer_document_dealloc"); } static PyObject *referencer_document_string (PyObject *self) { return PyString_FromString ("Referencer object representing a single document"); } static int referencer_document_init (PyObject *self, PyObject *args, PyObject *kwds) { DEBUG (">> referencer_document_init"); return 0; } static PyMemberDef referencer_document_members[] = { {"ptr", T_INT, offsetof(referencer_document, doc_), 0, "Pointer to C++ Document"}, {NULL} }; static PyMethodDef referencer_document_methods[] = { {"get_type", referencer_document_get_type, METH_VARARGS, "Get the document type"}, {"set_type", referencer_document_set_type, METH_VARARGS, "Set the document type"}, {"get_field", referencer_document_get_field, METH_VARARGS, "Get a field"}, {"get_fields", referencer_document_get_fields, METH_VARARGS, "Get a dictionary of all fields"}, {"set_field", referencer_document_set_field, METH_VARARGS, "Set a field"}, {"set_fields", referencer_document_set_fields, METH_VARARGS, "Set all fields from a dictionary"}, {"get_key", referencer_document_get_key, METH_VARARGS, "Get the key"}, {"set_key", referencer_document_set_key, METH_VARARGS, "Set the key"}, {"get_filename", referencer_document_get_filename, METH_VARARGS, "Get the filename"}, {"set_filename", referencer_document_set_filename, METH_VARARGS, "Set the filename"}, {"get_notes", referencer_document_get_notes, METH_VARARGS, "Get the notes"}, {"set_notes", referencer_document_set_notes, METH_VARARGS, "Set the notes"}, {"parse_bibtex", referencer_document_parse_bibtex, METH_VARARGS, "Set fields from bibtex string"}, {"print_bibtex", referencer_document_print_bibtex, METH_VARARGS, "Print bibtex representation of document"}, {NULL, NULL, 0, NULL} }; PyTypeObject t_referencer_document = { PyObject_HEAD_INIT(NULL) 0, "referencer.document", sizeof (referencer_document), 0, referencer_document_dealloc, 0, 0, 0, 0, referencer_document_string, 0, 0, 0, 0, 0, 0, PyObject_GenericGetAttr, PyObject_GenericSetAttr, 0, Py_TPFLAGS_DEFAULT, "Referencer Document", 0, 0, 0, 0, 0, 0, referencer_document_methods, referencer_document_members, 0, 0, 0, 0, 0, 0, referencer_document_init, PyType_GenericAlloc, PyType_GenericNew, _PyObject_Del }; referencer-1.2.1/src/DocumentProperties.C0000664000175000017500000003737412146755312015330 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include "ucompose.hpp" #include "Document.h" #include "DocumentList.h" #include "DocumentTypes.h" #include "Preferences.h" #include "ThumbnailGenerator.h" #include "RefWindow.h" #include "Utility.h" #include "DocumentProperties.h" DocumentProperties::DocumentProperties ( RefWindow &refwin ) : win_ (refwin) { xml_ = Gtk::Builder::create_from_file (Utility::findDataFile ("documentproperties.ui")); xml_->get_widget ("DocumentProperties", dialog_); xml_->get_widget ("File", filechooser_); filechooser_->signal_selection_changed().connect ( sigc::mem_fun (*this, &DocumentProperties::onFileChanged)); xml_->get_widget ("Key", keyentry_); xml_->get_widget ("Icon", iconImage_); xml_->get_widget ("IconButton", iconButton_); iconButton_->signal_clicked().connect ( sigc::mem_fun (*this, &DocumentProperties::onIconButtonClicked)); xml_->get_widget ("Lookup", crossrefbutton_); crossrefbutton_->signal_clicked().connect( sigc::mem_fun (*this, &DocumentProperties::onMetadataLookup)); xml_->get_widget ("PasteBibtex", pastebibtexbutton_); pastebibtexbutton_->signal_clicked().connect( sigc::mem_fun (*this, &DocumentProperties::onPasteBibtex)); Gtk::Button *clearButton; xml_->get_widget ("Clear", clearButton); clearButton->signal_clicked().connect ( sigc::mem_fun (*this, &DocumentProperties::onClear)); xml_->get_widget ("ExtraFieldsExpander", extrafieldsexpander_); xml_->get_widget ("NewExtraField", newextrafieldbutton_); xml_->get_widget ("DeleteExtraField", deleteextrafieldbutton_); xml_->get_widget ("EditExtraField", editextrafieldbutton_); newextrafieldbutton_->signal_clicked ().connect ( sigc::mem_fun (*this, &DocumentProperties::onNewExtraField)); deleteextrafieldbutton_->signal_clicked ().connect ( sigc::mem_fun (*this, &DocumentProperties::onDeleteExtraField)); editextrafieldbutton_->signal_clicked ().connect ( sigc::mem_fun (*this, &DocumentProperties::onEditExtraField)); xml_->get_widget ("ExtraFields", extrafieldsview_); cols_.add (extrakeycol_); cols_.add (extravalcol_); extrafieldssel_ = extrafieldsview_->get_selection (); extrafieldssel_->signal_changed ().connect ( sigc::mem_fun (*this, &DocumentProperties::onExtraFieldsSelectionChanged)); extrafieldsstore_ = Gtk::ListStore::create (cols_); extrafieldsview_->set_model (extrafieldsstore_); extrafieldsview_->append_column (_("Name"), extrakeycol_); extrafieldsview_->append_column_editable (_("Value"), extravalcol_); typecombocols_.add (typebibtexnamecol_); typecombocols_.add (typelabelcol_); typecombostore_ = Gtk::ListStore::create (typecombocols_); // looks like watch for a cell-renderer is the only way // to get information that the cell(s) changed Gtk::CellRendererText* extrafieldsrenderer = dynamic_cast ( extrafieldsview_->get_column(1)->get_first_cell_renderer() ); extrafieldsrenderer->signal_edited ().connect ( sigc::mem_fun (*this, &DocumentProperties::onExtraFieldEdited)); ignoreTypeChanged_ = false; typeManager_ = DocumentTypeManager(); } bool DocumentProperties::show (Document *doc) { if (!doc) { DEBUG ("DocumentProperties::show: NULL doc pointer"); return false; } update (*doc); extrafieldsexpander_->set_expanded (extrafieldsstore_->children().size() > 0); keyentry_->grab_focus (); dialog_->set_transient_for(*win_.window_); dialog_->set_modal(true); int result = dialog_->run (); if (result == Gtk::RESPONSE_OK) { save (*doc); } dialog_->hide (); if (result == Gtk::RESPONSE_OK) return true; else return false; } void DocumentProperties::update (Document &doc) { DEBUG ("Setting uri '%1'", doc.getFileName()); filechooser_->set_local_only (false); filechooser_->set_uri (doc.getFileName()); keyentry_->set_text (doc.getKey()); iconImage_->set (doc.getThumbnail()); setupFields (doc.getBibData().getType()); bool const ignore = ignoreTypeChanged_; ignoreTypeChanged_ = true; if (typeManager_.getTypes().find(doc.getBibData().getType()) != typeManager_.getTypes().end()) { DocumentType type = typeManager_.getTypes()[doc.getBibData().getType()]; Gtk::ListStore::iterator it = typecombostore_->children().begin (); Gtk::ListStore::iterator const end = typecombostore_->children().end (); for (; it != end; ++it) { if ((*it)[typebibtexnamecol_] == type.bibtexName_) { typeCombo_->set_active(it); break; } } } else { Gtk::TreeModel::Row row = *(typecombostore_->append()); row[typelabelcol_] = doc.getBibData().getType(); row[typebibtexnamecol_] = doc.getBibData().getType(); } ignoreTypeChanged_ = ignore; extrafieldsstore_->clear (); std::map fields = doc.getFields(); std::map::iterator field = fields.begin (); std::map::iterator const endField = fields.end (); for (; field != endField; ++field) { Glib::ustring const key = (*field).first; Glib::ustring const value = (*field).second; if (fieldEntries_.find(key) != fieldEntries_.end()) { fieldEntries_[key]->set_text (value); } else { Gtk::ListStore::iterator row = extrafieldsstore_->append (); (*row)[extrakeycol_] = key; (*row)[extravalcol_] = value; } } updateSensitivity (); } void DocumentProperties::save (Document &doc) { Glib::ustring filename = filechooser_->get_uri (); doc.setFileName (filename); doc.setKey (keyentry_->get_text ()); doc.getBibData().setType ((*(typeCombo_->get_active()))[typebibtexnamecol_] ); doc.clearFields (); FieldEntryMap::iterator entry = fieldEntries_.begin(); FieldEntryMap::iterator const endEntry = fieldEntries_.end(); for (; entry != endEntry; ++entry) { Glib::ustring key = (*entry).first; Glib::ustring value = ((*entry).second)->get_text (); if (!value.empty()) doc.setField (key, value); } Gtk::ListStore::iterator it = extrafieldsstore_->children().begin (); Gtk::ListStore::iterator const end = extrafieldsstore_->children().end (); for (; it != end; ++it) doc.setField ((*it)[extrakeycol_], (*it)[extravalcol_]); } void DocumentProperties::setupFields (Glib::ustring const &docType) { Gtk::VBox *metadataBox; xml_->get_widget ("MetadataBox", metadataBox); if (metadataBox->children().size()) { metadataBox->children().erase(metadataBox->children().begin()); } DocumentType type = typeManager_.getType (docType); int const nRows = type.requiredFields_.size() + type.optionalFields_.size(); Gtk::Table *metadataTable = new Gtk::Table (nRows, 4, false); metadataTable->set_col_spacings (6); metadataTable->set_row_spacings (6); fieldEntries_.clear (); Gtk::Label *typeLabel = Gtk::manage (new Gtk::Label (_("_Type:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, true)); if (typecombochanged_) typecombochanged_.disconnect(); typeCombo_ = Gtk::manage (new Gtk::ComboBox); typeCombo_->set_model(typecombostore_); typeCombo_->pack_start(typelabelcol_, true); typeCombo_->pack_start(typebibtexnamecol_, false); typeLabel->set_mnemonic_widget (*typeCombo_); metadataTable->attach (*typeLabel, 0, 1, 0, 1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); metadataTable->attach (*typeCombo_, 1, 4, 0, 1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); typecombostore_->clear(); for (DocumentTypeManager::TypesMap::iterator it = typeManager_.getTypes().begin(); it != typeManager_.getTypes().end(); ++it) { Gtk::TreeModel::Row row = *(typecombostore_->append()); row[typelabelcol_] = (*it).second.displayName_; row[typebibtexnamecol_] = (*it).second.bibtexName_; } typecombochanged_ = typeCombo_->signal_changed().connect ( sigc::mem_fun (*this, &DocumentProperties::onTypeChanged)); int row = 1; for ( std::vector::iterator it = type.requiredFields_.begin(); it != type.requiredFields_.end(); ++it) { if (it->shortField_) continue; Gtk::Label *label = Gtk::manage (new Gtk::Label (it->displayName_ + ":", Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); Gtk::Entry *entry = Gtk::manage (new Gtk::Entry ()); /* [bert] Minor change to actually implement and register * a callback for changes to the DOI field. This is a bit * ugly here since it assumes we know whether DOI is * required or not. */ if (it->internalName_ == "doi") { entry->signal_changed().connect(sigc::mem_fun(*this, &DocumentProperties::onDoiEntryChanged)); } fieldEntries_[it->internalName_] = entry; metadataTable->attach (*label, 0, 1, row, row + 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK | Gtk::FILL, 0, 0); metadataTable->attach (*entry, 1, 4, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); ++row; } for ( std::vector::iterator it = type.optionalFields_.begin(); it != type.optionalFields_.end(); ++it) { if (it->shortField_) continue; Gtk::Label *label = Gtk::manage (new Gtk::Label (it->displayName_ + ":", Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); Gtk::Entry *entry = Gtk::manage (new Gtk::Entry ()); fieldEntries_[it->internalName_] = entry; metadataTable->attach (*label, 0, 1, row, row + 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK | Gtk::FILL, 0, 0); metadataTable->attach (*entry, 1, 4, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); ++row; } int col = 0; for ( std::vector::iterator it = type.requiredFields_.begin(); it != type.requiredFields_.end(); ++it) { if (!it->shortField_) continue; Gtk::Label *label = Gtk::manage (new Gtk::Label (it->displayName_ + ":", Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); Gtk::Entry *entry = Gtk::manage (new Gtk::Entry ()); fieldEntries_[it->internalName_] = entry; metadataTable->attach (*label, 0 + col * 2, 1 + col * 2, row, row + 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK | Gtk::FILL, 0, 0); metadataTable->attach (*entry, 1 + col * 2, 2 + col * 2, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); ++col; if (col > 1) { ++row; col = 0; } } for ( std::vector::iterator it = type.optionalFields_.begin(); it != type.optionalFields_.end(); ++it) { if (!it->shortField_) continue; Gtk::Label *label = Gtk::manage (new Gtk::Label (it->displayName_ + ":", Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); Gtk::Entry *entry = Gtk::manage (new Gtk::Entry ()); fieldEntries_[it->internalName_] = entry; metadataTable->attach (*label, 0 + col * 2, 1 + col * 2, row, row + 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK | Gtk::FILL, 0, 0); metadataTable->attach (*entry, 1 + col * 2, 2 + col * 2, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK | Gtk::FILL, 0, 0); ++col; if (col > 1) { ++row; col = 0; } } metadataBox->pack_start (*metadataTable); metadataBox->show_all (); } void DocumentProperties::onNewExtraField () { Gtk::Dialog dialog ("New Field", *dialog_, true, false); Gtk::VBox *vbox = dialog.get_vbox (); Gtk::HBox hbox; hbox.set_spacing (12); vbox->pack_start (hbox, true, true, 0); Gtk::Label label ("Field name:", false); hbox.pack_start (label, false, false, 0); Gtk::Entry entry; entry.set_activates_default (true); hbox.pack_start (entry, true, true, 0); dialog.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); dialog.set_default_response (Gtk::RESPONSE_ACCEPT); dialog.show_all (); vbox->set_border_width (12); if (dialog.run () == Gtk::RESPONSE_ACCEPT) { Gtk::ListStore::iterator it = extrafieldsstore_->children().begin (); Gtk::ListStore::iterator const end = extrafieldsstore_->children().end (); bool key_isnew = true; for (; it != end; ++it) if (Utility::firstCap ((*it)[extrakeycol_]) == Utility::firstCap (entry.get_text ())) { key_isnew = false; } if ( key_isnew ) { Gtk::ListStore::iterator row = extrafieldsstore_->append (); (*row)[extrakeycol_] = Utility::firstCap (entry.get_text ()); (*row)[extravalcol_] = ""; } else { Glib::ustring message; message = String::ucompose ( "%1", _("This key already exists.\n")); Gtk::MessageDialog dialog ( message, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); dialog.run (); } } } void DocumentProperties::onDeleteExtraField () { // Oh dear, this may crash if this button was sensitive at the wrong time extrafieldsstore_->erase (extrafieldssel_->get_selected ()); updateSensitivity(); } void DocumentProperties::onEditExtraField () { Gtk::TreeSelection::ListHandle_Path paths = extrafieldssel_->get_selected_rows (); if (paths.empty ()) { DEBUG ("Warning: DocumentProperties::onEditExtraField: none selected"); return; } else if (paths.size () > 1) { DEBUG ("Warning: DocumentProperties::onEditExtraField: too many selected"); return; } Gtk::TreePath path = (*paths.begin ()); extrafieldsview_->set_cursor (path, *extrafieldsview_->get_column (1), true); updateSensitivity(); } void DocumentProperties::onExtraFieldsSelectionChanged () { bool const enable = extrafieldssel_->count_selected_rows () > 0; deleteextrafieldbutton_->set_sensitive (enable); editextrafieldbutton_->set_sensitive (enable); } void DocumentProperties::updateSensitivity() { Document doc; save (doc); crossrefbutton_->set_sensitive (doc.canGetMetadata ()); } /* [bert] Provided a trivial implementation for this function. * TODO: Possibly parse the text to see if it is a well-formed DOI? */ void DocumentProperties::onDoiEntryChanged() { updateSensitivity (); } void DocumentProperties::onExtraFieldEdited (const Glib::ustring& path, const Glib::ustring& text) { updateSensitivity (); } void DocumentProperties::onMetadataLookup () { Document doc; save (doc); if (doc.getMetaData ()) update (doc); } void DocumentProperties::onPasteBibtex () { GdkAtom const selection = GDK_SELECTION_CLIPBOARD; Glib::RefPtr clipboard = Gtk::Clipboard::get (selection); Glib::ustring clipboardtext = clipboard->wait_for_text (); DocumentList doclist; int const imported = doclist.import (clipboardtext, BibUtils::FORMAT_BIBTEX); DEBUG ("DocumentProperties::onPasteBibtex: Imported %1 references", imported); if (imported) { DocumentList::Container &docs = doclist.getDocs (); DocumentList::Container::iterator it = docs.begin (); /* * This will lose the key from the bibtex since it's * in Document not BibData */ Document doc; save(doc); doc.getBibData().mergeIn (it->getBibData()); update (doc); } else { Glib::ustring message; if (imported < 1) { message = String::ucompose ( "%1", _("No references found on clipboard.\n")); } else { message = String::ucompose ( "%1", _("Multiple references found on clipboard.\n")); } Gtk::MessageDialog dialog ( message, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); dialog.run (); } } void DocumentProperties::onClear () { std::map :: iterator entry = fieldEntries_.begin(); std::map :: iterator const endEntry = fieldEntries_.end(); for (; entry != endEntry; ++entry) ((*entry).second)->set_text (Glib::ustring()); extrafieldsstore_->clear (); } void DocumentProperties::onTypeChanged () { DEBUG("onTypeChanged called, ignoreTypeChanged = %1", ignoreTypeChanged_); if (ignoreTypeChanged_) return; Document doc; save (doc); update (doc); } void DocumentProperties::onFileChanged () { Glib::ustring const uri = filechooser_->get_uri(); iconImage_->set (ThumbnailGenerator::instance().getThumbnailSynchronous (uri)); iconButton_->set_sensitive (true); } void DocumentProperties::onIconButtonClicked () { Gio::AppInfo::launch_default_for_uri (filechooser_->get_uri()); } referencer-1.2.1/src/PythonPlugin.h0000664000175000017500000000327412043201606014156 00000000000000 #ifndef PYTHONPLUGIN_H #define PYTHONPLUGIN_H #include "Plugin.h" class PluginManager; class PythonPlugin : public Plugin { public: PythonPlugin (PluginManager *owner); ~PythonPlugin (); virtual void load (std::string const &moduleName); /* General properties */ virtual Glib::ustring const getShortName () {return moduleName_;} virtual Glib::ustring const getLongName (); virtual Glib::ustring const getAuthor (); virtual Glib::ustring const getVersion (); /* Actions */ virtual Glib::ustring const getUI (); virtual ActionList getActions () {return actions_;}; virtual bool doAction (Glib::ustring const action, std::vector); virtual bool updateSensitivity (Glib::ustring const action, std::vector); /* Metadata lookup */ virtual int canResolve (Document &doc); virtual bool resolve (Document &doc); /* Search */ virtual bool canSearch (); virtual Plugin::SearchResults doSearch (Glib::ustring const &searchTerms); virtual Document getSearchResult (Glib::ustring const &token); /* Config hook */ virtual bool canConfigure (); virtual void doConfigure (); /* Report exceptions */ virtual bool hasError (); virtual Glib::ustring getError (); private: bool resolveID (Document &doc, PluginCapability::Identifier id); void displayException (); void printException (); Glib::ustring formatException (); Glib::ustring exceptionLog_; Glib::ustring const getPluginInfoField (Glib::ustring const &targetKey); std::string moduleName_; PyObject *pResolveFunc_; PyObject *pCanResolveFunc_; PyObject *pActionFunc_; PyObject *pPluginInfo_; PyObject *pMod_; ActionList actions_; PluginManager *owner_; }; #endif referencer-1.2.1/src/ThumbnailGenerator.C0000664000175000017500000001047712042466142015255 00000000000000 #include "Document.h" #include "Utility.h" #include "ThumbnailGenerator.h" Glib::RefPtr ThumbnailGenerator::defaultthumb_; Glib::RefPtr ThumbnailGenerator::thumbframe_; ThumbnailGenerator &ThumbnailGenerator::instance () { static ThumbnailGenerator inst; return inst; } ThumbnailGenerator::ThumbnailGenerator () { Glib::signal_idle().connect( sigc::bind_return (sigc::mem_fun (this, &ThumbnailGenerator::run), false)); } void ThumbnailGenerator::run () { Glib::Thread::create( sigc::mem_fun (*this, &ThumbnailGenerator::mainLoop), false); } void ThumbnailGenerator::mainLoop () { for (;;) { Glib::ustring file; bool gotJob = false; taskLock_.lock (); if (taskList_.size () > 0) { std::multimap::iterator it = taskList_.begin (); std::pair task = *it; file = task.first; gotJob = true; } taskLock_.unlock (); if (!gotJob) { sleep (1); continue; } Glib::RefPtr result; gdk_threads_enter (); result = lookupThumb (file); gdk_threads_leave (); if (result) { gdk_threads_enter (); taskLock_.lock (); typedef std::multimap::iterator Iterator; const std::pair docs = taskList_.equal_range(file); for (Iterator i = docs.first; i!= docs.second; ++i) { Document *doc = i->second; doc->setThumbnail (result); } taskList_.erase (file); taskLock_.unlock (); gdk_threads_leave (); sleep (0.1); } } } Glib::RefPtr ThumbnailGenerator::getThumbnailSynchronous (Glib::ustring const &file) { return lookupThumb (file); } Glib::RefPtr ThumbnailGenerator::lookupThumb (Glib::ustring const &file) { Glib::RefPtr thumbnail; GdkPixbuf* thumbnail_c; Glib::RefPtr uri = Gio::File::create_for_uri (file); if (!file.empty () && Utility::uriIsFast (uri) && uri->query_exists()) { Glib::RefPtr fileinfo = uri->query_info (); Glib::ustring thumbnail_path = fileinfo->get_attribute_as_string("thumbnail::path"); //DEBUG("gio thumbnail path: '%1'", thumbnail_path); if (thumbnail_path != "") { thumbnail = Gdk::Pixbuf::create_from_file(thumbnail_path); } } // Disallow crazy sized thumbs int const minimumDimension = 8; if (!thumbnail || thumbnail->get_width() < minimumDimension || thumbnail->get_height() < minimumDimension) { if (defaultthumb_) { thumbnail = defaultthumb_; } else { thumbnail = Gdk::Pixbuf::create_from_file (Utility::findDataFile ("unknown-document.png")); float const desiredwidth = 64.0 + 9; int oldwidth = thumbnail->get_width (); int oldheight = thumbnail->get_height (); int newwidth = (int)desiredwidth; int newheight = (int)((float)oldheight * (desiredwidth / (float)oldwidth)); thumbnail = thumbnail->scale_simple ( newwidth, newheight, Gdk::INTERP_BILINEAR); defaultthumb_ = thumbnail; } } else { float const desiredwidth = 64.0; int oldwidth = thumbnail->get_width (); int oldheight = thumbnail->get_height (); int newwidth = (int)desiredwidth; int newheight = (int)((float)oldheight * (desiredwidth / (float)oldwidth)); thumbnail = thumbnail->scale_simple ( newwidth, newheight, Gdk::INTERP_BILINEAR); if (!thumbframe_) { thumbframe_ = Gdk::Pixbuf::create_from_file ( Utility::findDataFile ("thumbnail_frame.png")); } int const left_offset = 3; int const top_offset = 3; int const right_offset = 6; int const bottom_offset = 6; thumbnail = Utility::eelEmbedImageInFrame ( thumbnail, thumbframe_, left_offset, top_offset, right_offset, bottom_offset); } return thumbnail; } /* * Always called holding gdk_threads lock */ void ThumbnailGenerator::registerRequest (Glib::ustring const &file, Document *doc) { taskLock_.lock (); taskList_.insert (std::pair(file,doc)); taskLock_.unlock (); } /* * Always called holding gdk_threads lock */ void ThumbnailGenerator::deregisterRequest (Document *doc) { taskLock_.lock (); /* Erase exactly one entry which has its second field equal to doc */ typedef std::multimap::iterator Iterator; for (Iterator i = taskList_.begin(); i!= taskList_.end(); ++i) { if (i->second == doc) { taskList_.erase (i); taskLock_.unlock (); return; } } taskLock_.unlock (); } referencer-1.2.1/src/DocumentProperties.h0000664000175000017500000000421412045157155015357 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef DOCUMENTPROPERTIES_H #define DOCUMENTPROPERTIES_H #include #include #include "CaseFoldCompare.h" #include "DocumentTypes.h" class Document; class RefWindow; class DocumentProperties { private: Glib::RefPtr xml_; RefWindow &win_; /* * Local working copy */ Gtk::Dialog *dialog_; Gtk::Entry *keyentry_; Gtk::FileChooserButton *filechooser_; Gtk::Image *iconImage_; Gtk::Button *iconButton_; Gtk::Button *crossrefbutton_; Gtk::Button *pastebibtexbutton_; Gtk::ToolButton *newextrafieldbutton_; Gtk::ToolButton *deleteextrafieldbutton_; Gtk::ToolButton *editextrafieldbutton_; Gtk::Expander *extrafieldsexpander_; Gtk::TreeView *extrafieldsview_; Glib::RefPtr extrafieldssel_; Gtk::ComboBox *typeCombo_; Gtk::TreeModelColumn typelabelcol_; Gtk::TreeModelColumn typebibtexnamecol_; Gtk::TreeModel::ColumnRecord typecombocols_; Glib::RefPtr< Gtk::ListStore > typecombostore_; sigc::connection typecombochanged_; typedef std::map FieldEntryMap; FieldEntryMap fieldEntries_; Gtk::TreeModelColumn extrakeycol_; Gtk::TreeModelColumn extravalcol_; Gtk::TreeModel::ColumnRecord cols_; Glib::RefPtr< Gtk::ListStore > extrafieldsstore_; void update (Document &doc); void save (Document &doc); void setupFields (Glib::ustring const &docType); void onMetadataLookup (); void onPasteBibtex (); void onClear (); void onNewExtraField (); void onDeleteExtraField (); void onEditExtraField (); void onExtraFieldsSelectionChanged (); void onExtraFieldEdited (const Glib::ustring& path, const Glib::ustring& text); void onDoiEntryChanged (); void updateSensitivity(); void onTypeChanged (); void onFileChanged (); void onIconButtonClicked (); bool ignoreTypeChanged_; DocumentTypeManager typeManager_; public: bool show (Document *doc); DocumentProperties (RefWindow &refwin); }; #endif referencer-1.2.1/src/EntryMultiCompletion.C0000664000175000017500000000654412150640445015631 00000000000000/* -*- Mode: C++; indent-tabs-mode:nil; c-basic-offset:4; -*- */ /* * gtkmm-utils - entry-multi-complete.cc * * Copyright (C) 2008 Marko Anastasov * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include "EntryMultiCompletion.h" using std::list; using Glib::ustring; EntryMultiCompletion::EntryMultiCompletion() { init(); } EntryMultiCompletion::EntryMultiCompletion(const list& items) { init(); add_items(items); } EntryMultiCompletion::~EntryMultiCompletion() { } Glib::RefPtr EntryMultiCompletion::create() { return Glib::RefPtr(new EntryMultiCompletion()); } Glib::RefPtr EntryMultiCompletion::create(const list& items) { return Glib::RefPtr(new EntryMultiCompletion(items)); } void EntryMultiCompletion::init() { next_id_ = 1; model_ = Gtk::ListStore::create(columns_); set_model(model_); set_text_column(columns_.col_title); set_match_func(sigc::mem_fun(*this, &EntryMultiCompletion::on_completion_match)); } void EntryMultiCompletion::add_items(const list& items) { list::const_iterator it(items.begin()); list::const_iterator end(items.end()); for ( ; it != end; ++it) { Gtk::TreeModel::Row row = *(model_->append()); row[columns_.col_id] = next_id_++; row[columns_.col_title] = *it; } } bool EntryMultiCompletion::on_match_selected(const Gtk::TreeModel::iterator& iter) { Gtk::TreeModel::Row row = *iter; ustring inserting_item = row[columns_.col_title]; Gtk::Entry* entry = get_entry(); g_assert(entry); ustring old_text = entry->get_text(); if (old_text.size() > 0) { int start = old_text.rfind(' '); old_text = old_text.substr(0, start + 1); } ustring new_value = old_text + inserting_item + ' '; entry->set_text(new_value); entry->set_position(new_value.size()); return true; } bool EntryMultiCompletion::on_completion_match(const Glib::ustring& key, const Gtk::TreeModel::const_iterator& iter) { if (! iter) return false; Gtk::TreeModel::Row row = *iter; Glib::ustring filter_string = row[columns_.col_title]; Glib::ustring word(key); int start = key.rfind(' '); if (start > 0) word = word.substr(start+1, word.size()); ustring filter_string_start = filter_string.substr(0, word.size()); //The key is lower-case, even if the user input is not. filter_string_start = filter_string_start.lowercase(); if (word == filter_string_start) return true; //A match was found. else return false; } referencer-1.2.1/src/icon-entry.cc0000664000175000017500000002267012042412720013744 00000000000000// Generated by gtkmmproc -- DO NOT MODIFY! #include #include #include /** * @file libsexymm/icon-entry.cc Icon entry widget * * @Copyright (C) 2004-2005 Christian Hammond. * * 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. */ namespace Sexy { } /* namespace Sexy */ namespace { void IconEntry_signal_icon_pressed_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos,int button,void* data) { using namespace Sexy; typedef sigc::slot< void,IconEntryPosition,int > SlotType; // Do not try to call a signal on a disassociated wrapper. if(Glib::ObjectBase::_get_current_wrapper((GObject*) self)) { try { if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data)) (*static_cast(slot))(((IconEntryPosition)(icon_pos)) , button); } catch(...) { Glib::exception_handlers_invoke(); } } } const Glib::SignalProxyInfo IconEntry_signal_icon_pressed_info = { "icon_pressed", (GCallback) &IconEntry_signal_icon_pressed_callback, (GCallback) &IconEntry_signal_icon_pressed_callback }; void IconEntry_signal_icon_released_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos,int button,void* data) { using namespace Sexy; typedef sigc::slot< void,IconEntryPosition,int > SlotType; // Do not try to call a signal on a disassociated wrapper. if(Glib::ObjectBase::_get_current_wrapper((GObject*) self)) { try { if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data)) (*static_cast(slot))(((IconEntryPosition)(icon_pos)) , button); } catch(...) { Glib::exception_handlers_invoke(); } } } const Glib::SignalProxyInfo IconEntry_signal_icon_released_info = { "icon_released", (GCallback) &IconEntry_signal_icon_released_callback, (GCallback) &IconEntry_signal_icon_released_callback }; } // anonymous namespace // static GType Glib::Value::value_type() { return sexy_icon_entry_position_get_type(); } namespace Glib { Sexy::IconEntry* wrap(SexyIconEntry* object, bool take_copy) { return dynamic_cast (Glib::wrap_auto ((GObject*)(object), take_copy)); } } /* namespace Glib */ namespace Sexy { /* The *_Class implementation: */ const Glib::Class& IconEntry_Class::init() { if(!gtype_) // create the GType if necessary { // Glib::Class has to know the class init function to clone custom types. class_init_func_ = &IconEntry_Class::class_init_function; // This is actually just optimized away, apparently with no harm. // Make sure that the parent type has been created. //CppClassParent::CppObjectType::get_type(); // Create the wrapper type, with the same class/instance size as the base type. register_derived_type(sexy_icon_entry_get_type()); // Add derived versions of interfaces, if the C type implements any interfaces: Gtk::Editable::add_interface(get_type()); } return *this; } void IconEntry_Class::class_init_function(void* g_class, void* class_data) { BaseClassType *const klass = static_cast(g_class); CppClassParent::class_init_function(klass, class_data); klass->icon_pressed = &icon_pressed_callback; klass->icon_released = &icon_released_callback; } void IconEntry_Class::icon_pressed_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos, int button) { CppObjectType *const obj = dynamic_cast( Glib::ObjectBase::_get_current_wrapper((GObject*)self)); // Non-gtkmmproc-generated custom classes implicitly call the default // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc- // generated classes can use this optimisation, which avoids the unnecessary // parameter conversions if there is no possibility of the virtual function // being overridden: if(obj && obj->is_derived_()) { try // Trap C++ exceptions which would normally be lost because this is a C callback. { // Call the virtual member method, which derived classes might override. obj->on_icon_pressed(((IconEntryPosition)(icon_pos)) , button); } catch(...) { Glib::exception_handlers_invoke(); } } else { BaseClassType *const base = static_cast( g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class). ); // Call the original underlying C function: if(base && base->icon_pressed) (*base->icon_pressed)(self, icon_pos, button); } } void IconEntry_Class::icon_released_callback(SexyIconEntry* self, SexyIconEntryPosition icon_pos, int button) { CppObjectType *const obj = dynamic_cast( Glib::ObjectBase::_get_current_wrapper((GObject*)self)); // Non-gtkmmproc-generated custom classes implicitly call the default // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc- // generated classes can use this optimisation, which avoids the unnecessary // parameter conversions if there is no possibility of the virtual function // being overridden: if(obj && obj->is_derived_()) { try // Trap C++ exceptions which would normally be lost because this is a C callback. { // Call the virtual member method, which derived classes might override. obj->on_icon_released(((IconEntryPosition)(icon_pos)) , button); } catch(...) { Glib::exception_handlers_invoke(); } } else { BaseClassType *const base = static_cast( g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class). ); // Call the original underlying C function: if(base && base->icon_released) (*base->icon_released)(self, icon_pos, button); } } Glib::ObjectBase* IconEntry_Class::wrap_new(GObject* o) { return manage(new IconEntry((SexyIconEntry*)(o))); } /* The implementation: */ IconEntry::IconEntry(const Glib::ConstructParams& construct_params) : Gtk::Entry(construct_params) { } IconEntry::IconEntry(SexyIconEntry* castitem) : Gtk::Entry((GtkEntry*)(castitem)) { } IconEntry::~IconEntry() { destroy_(); } IconEntry::CppClassType IconEntry::iconentry_class_; // initialize static member GType IconEntry::get_type() { return iconentry_class_.init().get_type(); } GType IconEntry::get_base_type() { return sexy_icon_entry_get_type(); } IconEntry::IconEntry() : Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations. Gtk::Entry(Glib::ConstructParams(iconentry_class_.init())) { } void IconEntry::set_icon(IconEntryPosition icon_pos, Gtk::Image* icon) { sexy_icon_entry_set_icon(gobj(), ((SexyIconEntryPosition)(icon_pos)), (GtkImage*)Glib::unwrap(icon)); } void IconEntry::set_icon(IconEntryPosition icon_pos, Gtk::Image& icon) { sexy_icon_entry_set_icon(gobj(), ((SexyIconEntryPosition)(icon_pos)), (icon).gobj()); } const Gtk::Image* IconEntry::get_icon(IconEntryPosition icon_pos) const { return Glib::wrap(sexy_icon_entry_get_icon(const_cast(gobj()), ((SexyIconEntryPosition)(icon_pos)))); } void IconEntry::set_icon_highlight(IconEntryPosition icon_pos, bool highlight) { sexy_icon_entry_set_icon_highlight(gobj(), ((SexyIconEntryPosition)(icon_pos)), static_cast(highlight)); } bool IconEntry::get_icon_highlight(IconEntryPosition icon_pos) { return sexy_icon_entry_get_icon_highlight(gobj(), ((SexyIconEntryPosition)(icon_pos))); } void IconEntry::add_clear_button() { sexy_icon_entry_add_clear_button(gobj()); } Glib::SignalProxy2< void,IconEntryPosition,int > IconEntry::signal_icon_pressed() { return Glib::SignalProxy2< void,IconEntryPosition,int >(this, &IconEntry_signal_icon_pressed_info); } Glib::SignalProxy2< void,IconEntryPosition,int > IconEntry::signal_icon_released() { return Glib::SignalProxy2< void,IconEntryPosition,int >(this, &IconEntry_signal_icon_released_info); } void Sexy::IconEntry::on_icon_pressed(IconEntryPosition icon_pos, int button) { BaseClassType *const base = static_cast( g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class). ); if(base && base->icon_pressed) (*base->icon_pressed)(gobj(),((SexyIconEntryPosition)(icon_pos)),button); } void Sexy::IconEntry::on_icon_released(IconEntryPosition icon_pos, int button) { BaseClassType *const base = static_cast( g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class). ); if(base && base->icon_released) (*base->icon_released)(gobj(),((SexyIconEntryPosition)(icon_pos)),button); } } // namespace Sexy referencer-1.2.1/src/Progress.C0000664000175000017500000000211012042470066013250 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include "RefWindow.h" #include "Progress.h" Progress::Progress (RefWindow &refwindow) : win_ (refwindow) { finished_ = true; } Progress::~Progress () { if (!finished_) finish (); } void Progress::start (Glib::ustring const &text) { // Flag that the loop thread waits for finished_ = false; win_.setSensitive (false); win_.getProgressBar()->set_fraction (0.0); msgid_ = win_.getStatusBar()->push (text); } void Progress::finish () { finished_ = true; win_.getProgressBar()->set_fraction (1.0); win_.setSensitive (true); win_.getStatusBar()->remove_message (msgid_); } void Progress::update (double status) { win_.getProgressBar()->set_fraction (status); flushEvents (); } void Progress::update () { win_.getProgressBar()->pulse (); flushEvents (); } void Progress::flushEvents () { while (Gtk::Main::events_pending()) Gtk::Main::iteration (); } referencer-1.2.1/src/Transfer.C0000664000175000017500000000763012052120451013233 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include "ucompose.hpp" #include "Preferences.h" #include "Progress.h" #include "Transfer.h" namespace Transfer { typedef enum { TRANSFER_NONE = 0, TRANSFER_OK = 1, TRANSFER_FAIL_SILENT = 2, TRANSFER_FAIL_LOUD = 4 } Status; static uint64_t transferStatus; static Glib::ustring transferresults; void fetcherThread (Glib::ustring const &filename, Glib::RefPtr cancellable); void onTransferCancel (Glib::RefPtr cancellable) { DEBUG("Cancelling..."); cancellable->cancel(); } void promptWorkOffline () { Glib::ustring const messagetext2 = String::ucompose ( "%1\n\n%2", _("Work offline?"), _("There was a problem while retrieving metadata, would you like \n" "to work offline? If you choose to work offline, no further network " "operations will be attempted until you choose to work online again " "in the Preferences dialog.")); Gtk::MessageDialog faildialog ( messagetext2, true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); Gtk::Button *online = faildialog.add_button (_("_Stay Online"), Gtk::RESPONSE_NO); Gtk::Button *offline = faildialog.add_button (_("_Go Offline"), Gtk::RESPONSE_YES); faildialog.set_default_response (Gtk::RESPONSE_YES); Gtk::Image *onlineicon = Gtk::manage ( new Gtk::Image (Gtk::Stock::CONNECT, Gtk::ICON_SIZE_BUTTON)); online->set_image (*onlineicon); Gtk::Image *offlineicon = Gtk::manage ( new Gtk::Image (Gtk::Stock::DISCONNECT, Gtk::ICON_SIZE_BUTTON)); offline->set_image (*offlineicon); if (faildialog.run () == Gtk::RESPONSE_YES) { _global_prefs->setWorkOffline (true); }; } Glib::ustring &readRemoteFile ( Glib::ustring const &title, Glib::ustring const &messagetext, Glib::ustring const &filename) { Gtk::Dialog dialog (title, true, false); Gtk::VBox *vbox = dialog.get_vbox (); vbox->set_spacing (12); Gtk::Label label ("", false); label.set_markup (messagetext); vbox->pack_start (label, true, true, 0); Gtk::ProgressBar progress; vbox->pack_start (progress, false, false, 0); Glib::RefPtr cancellable = Gio::Cancellable::create(); Gtk::Button *cancelbutton = dialog.add_button (Gtk::Stock::CANCEL, 0); cancelbutton->signal_clicked().connect( sigc::bind (sigc::ptr_fun (&onTransferCancel), cancellable)); transferStatus = TRANSFER_NONE; Glib::Thread *fetcher = Glib::Thread::create ( sigc::bind (sigc::ptr_fun (&fetcherThread), filename, cancellable), true); Glib::Timer timeout; timeout.start (); double const maxTimeout = 30.0; double const dialogDelay = 1.0; bool dialogShown = false; while (transferStatus == TRANSFER_NONE) { progress.pulse (); while (Gtk::Main::events_pending()) Gtk::Main::iteration (); Glib::usleep (100000); if (!dialogShown && timeout.elapsed () > dialogDelay) { dialog.show_all (); vbox->set_border_width (12); dialogShown = true; } if (timeout.elapsed () > maxTimeout) { cancellable->cancel(); } } fetcher->join (); if (!(transferStatus & TRANSFER_OK)) { /* promptWorkOffline (); throw Exception ("Transfer failed\n"); */ transferresults = ""; return transferresults; } else { return transferresults; } } void fetcherThread (Glib::ustring const &filename, Glib::RefPtr cancellable) { char *buffer = NULL; gsize len = 0; try { Glib::RefPtr file = Gio::File::create_for_uri (filename); file->load_contents(cancellable, buffer, len); } catch (const Glib::Error ex) { DEBUG ("Got an exception from load_contents"); transferStatus |= TRANSFER_FAIL_SILENT; return; } DEBUG("Received '%1' bytes", len); transferresults = Glib::ustring(buffer); transferStatus |= TRANSFER_OK; } } // namespace Transfer referencer-1.2.1/src/BibUtils.C0000664000175000017500000002412012042420323013155 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include "Utility.h" #include "BibUtils.h" extern "C" { namespace BibUtils { char progname[] = "referencer"; lists asis = { 0, 0, NULL }; lists corps = { 0, 0, NULL }; #include #include #include enum { TYPE_UNKNOWN = 0, TYPE_ARTICLE, TYPE_INBOOK, TYPE_INPROCEEDINGS, TYPE_PROCEEDINGS, TYPE_INCOLLECTION, TYPE_COLLECTION, TYPE_BOOK, TYPE_PHDTHESIS, TYPE_MASTERSTHESIS, TYPE_REPORT, TYPE_MANUAL, TYPE_UNPUBLISHED, TYPE_MISC }; static int bibtexout_type( fields *info) { char *genre; int type = TYPE_UNKNOWN, i, maxlevel, level; /* determine bibliography type */ for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "GENRE" ) && strcasecmp( info->tag[i].data, "NGENRE" ) ) continue; genre = info->data[i].data; level = info->level[i]; if ( !strcasecmp( genre, "periodical" ) || !strcasecmp( genre, "academic journal" ) || !strcasecmp( genre, "magazine" ) ) type = TYPE_ARTICLE; else if ( !strcasecmp( genre, "instruction" ) ) type = TYPE_MANUAL; else if ( !strcasecmp( genre, "unpublished" ) ) type = TYPE_UNPUBLISHED; else if ( !strcasecmp( genre, "conference publication" ) ) { if ( level==0 ) type=TYPE_PROCEEDINGS; else type = TYPE_INPROCEEDINGS; } else if ( !strcasecmp( genre, "collection" ) ) { if ( level==0 ) type=TYPE_COLLECTION; else type = TYPE_INCOLLECTION; } else if ( !strcasecmp( genre, "report" ) ) type = TYPE_REPORT; else if ( !strcasecmp( genre, "book" ) ) { if ( level==0 ) type=TYPE_BOOK; else type=TYPE_INBOOK; } else if ( !strcasecmp( genre, "theses" ) ) { if ( type==TYPE_UNKNOWN ) type=TYPE_PHDTHESIS; } else if ( !strcasecmp( genre, "Ph.D. thesis" ) ) type = TYPE_PHDTHESIS; else if ( !strcasecmp( genre, "Masters thesis" ) ) type = TYPE_MASTERSTHESIS; } if ( type==TYPE_UNKNOWN ) { for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "ISSUANCE" ) ) continue; if ( !strcasecmp( info->data[i].data, "monographic" ) ) { if ( info->level[i]==0 ) type = TYPE_BOOK; else if ( info->level[i]==1 ) type=TYPE_INBOOK; } } } /* default to BOOK type */ if ( type==TYPE_UNKNOWN ) { maxlevel = fields_maxlevel( info ); if ( maxlevel > 0 ) type = TYPE_INBOOK; else { fprintf( stderr, "xml2bib: cannot identify TYPE" " in reference"); type = TYPE_MISC; } } return type; } typedef struct { int bib_type; char *type_name; } typenames; int getType (fields *info) { return bibtexout_type (info); } std::string formatType (fields *info) { int const type = bibtexout_type (info); typenames types[] = { { TYPE_ARTICLE, (char*)"Article" }, { TYPE_INBOOK, (char*)"Inbook" }, { TYPE_PROCEEDINGS, (char*)"Proceedings" }, { TYPE_INPROCEEDINGS, (char*)"InProceedings" }, { TYPE_BOOK, (char*)"Book" }, { TYPE_PHDTHESIS, (char*)"PhdThesis" }, { TYPE_MASTERSTHESIS, (char*)"MastersThesis" }, { TYPE_REPORT, (char*)"TechReport" }, { TYPE_MANUAL, (char*)"Manual" }, { TYPE_COLLECTION, (char*)"Collection" }, { TYPE_INCOLLECTION, (char*)"InCollection" }, { TYPE_UNPUBLISHED, (char*)"Unpublished" }, { TYPE_MISC, (char*)"Misc" } }; int i, ntypes = sizeof( types ) / sizeof( types[0] ); char *s = NULL; for ( i=0; i= 0) { title = ref->data[kmain].data; ref->used[kmain] = 1; if (ksub >= 0) { title += ": "; title += std::string (ref->data[ksub].data); ref->used[ksub] = 1; } } return title; } std::string formatPerson (std::string const &munged) { std::string output; int nseps = 0, nch; char *p = (char *) munged.c_str (); while ( *p ) { nch = 0; if ( nseps ) output = output + " "; while ( *p && *p!='|' ) { output = output + *p++; nch++; } if ( *p=='|' ) p++; if ( nseps==0 ) output = output + ","; else if ( nch==1 ) output = output + "."; nseps++; } return output; } std::string formatPeople(fields *info, char *tag, char *ctag, int level) { int i, npeople, person, corp; std::string output; /* primary citation authors */ npeople = 0; for ( i=0; infields; ++i ) { if ( level!=-1 && info->level[i]!=level ) continue; person = ( strcasecmp( info->tag[i].data, tag ) == 0 ); corp = ( strcasecmp( info->tag[i].data, ctag ) == 0 ); if ( person || corp ) { if (npeople > 0) output += " and "; if (corp) output += std::string (info->data[i].data); else output += formatPerson (info->data[i].data); npeople++; } } return output; } /** IMPORTANT ========= All the newdoc.getBibData.().setFoo have Glib::ustring arguments. That means that the std::strings we're using have to be in utf8: there is NO conversion, not even from the current locale. Current (3.32) version of bibutils seems to be using utf8 internally even when importing a file from latin1. */ Document parseBibUtils (BibUtils::fields *ref) { std::pair a[]={ std::make_pair("PARTDAY", "Day"), std::make_pair("PARTMONTH", "Month"), std::make_pair("KEYWORD", "Keywords"), std::make_pair("DEGREEGRANTOR", "School"), std::make_pair("DEGREEGRANTOR:ASIS", "School"), std::make_pair("DEGREEGRANTOR:CORP", "School"), std::make_pair("NOTES", "Note") }; std::map replacements ( a,a + (sizeof(a) / sizeof(*a))); Document newdoc; int type = BibUtils::getType (ref); newdoc.getBibData().setType (formatType (ref)); if (type == TYPE_INBOOK) { newdoc.getBibData().addExtra ("Chapter", formatTitle (ref, 0)); } else { newdoc.getBibData().setTitle (formatTitle (ref, 0)); } if ( type==TYPE_ARTICLE ) newdoc.getBibData().setJournal (formatTitle (ref, 1)); else if ( type==TYPE_INBOOK ) newdoc.getBibData().setTitle (formatTitle (ref, 1)); else if ( type==TYPE_INPROCEEDINGS || type==TYPE_INCOLLECTION ) newdoc.getBibData().addExtra ("BookTitle", formatTitle (ref, 1)); else if ( type==TYPE_BOOK || type==TYPE_COLLECTION || type==TYPE_PROCEEDINGS ) newdoc.getBibData().addExtra ("Series", formatTitle (ref, 1)); std::string authors = formatPeople (ref, (char*)"AUTHOR", (char*)"CORPAUTHOR", 0); std::string editors = formatPeople (ref, (char*)"EDITOR", (char*)"CORPEDITOR", -1); std::string translators = formatPeople (ref, (char*)"TRANSLATOR", (char*)"CORPTRANSLATOR", -1); newdoc.getBibData().setAuthors (authors); if (!editors.empty ()) { newdoc.getBibData().addExtra ("Editor", editors); } if (!translators.empty ()) { newdoc.getBibData().addExtra ("Translator", translators); } for (int j = 0; j < ref->nfields; ++j) { std::string key = ref->tag[j].data; std::string value = ref->data[j].data; int used = 1; if (key == "REFNUM") { newdoc.setKey (value); } else if (key == "VOLUME") { newdoc.getBibData().setVolume (value); } else if (key == "NUMBER" || key == "ISSUE") { newdoc.getBibData().setIssue (value); } else if (key == "YEAR" || key == "PARTYEAR") { newdoc.getBibData().setYear (value); } else if (key == "PAGESTART") { newdoc.getBibData().setPages (value + newdoc.getBibData().getPages ()); } else if (key == "PAGEEND") { newdoc.getBibData().setPages (newdoc.getBibData().getPages () + "-" + value); } else if (key == "ARTICLENUMBER") { /* bibtex normally avoid article number, so output as page */ newdoc.getBibData().setPages (value); } else if (key == "RESOURCE" || key == "ISSUANCE" || key == "GENRE" || key == "AUTHOR" || key == "EDITOR" || key == "CORPAUTHOR" || key == "CORPEDITOR" || key == "TYPE") { // Don't add them as "extra fields" } else { used = 0; } if (used) ref->used[j] = 1; if (!ref->used[j]) { if (key == "TITLE") { if (type == TYPE_INCOLLECTION) { // Special case: Chapters in InCollection get added as "Title" level 0 key = "Chapter"; } else if (type == TYPE_INPROCEEDINGS) { // Special case: Series in InProceedings get added as "Title" level 0 key = "Series"; } else { DEBUG ("unexpected TITLE element %1:%2 (%3)", key, value, ref->level[j]); // Don't overwrite existing title field if (!newdoc.getBibData().getTitle().empty()) { continue; } } } if (!replacements[key].empty()) { key = replacements[key]; } else { key = Utility::firstCap (key); } int level = ref->level[j]; if (!value.empty ()) { newdoc.getBibData().addExtra (key, value); } } } return newdoc; } Format guessFormat (std::string const &rawtext) { return (Format) BIBL_BIBTEXIN; } static void writerThread (std::string const &raw, int pipe, volatile bool *advance) { int len = strlen (raw.c_str()); if (len <= 0) { *advance = true; close (pipe); return; } // Writing more than 65536 freezes in write() int block = 1024; if (block > len) block = len; for (int i = 0; i < len / block; ++i) { write (pipe, raw.c_str() + i * block, block); *advance = true; } if (len % block > 0) { write (pipe, raw.c_str() + (len / block) * block, len % block); } close (pipe); } void biblFromString ( bibl &b, std::string const &rawtext, Format format, param &p ) { int handles[2]; if (pipe(handles)) { throw Glib::IOChannelError ( Glib::IOChannelError::BROKEN_PIPE, "Couldn't get pipe in biblFromString"); } int pipeout = handles[0]; int pipein = handles[1]; volatile bool advance = false; Glib::Thread *writer = Glib::Thread::create ( sigc::bind (sigc::ptr_fun (&writerThread), rawtext, pipein, &advance), true); while (!advance) {} FILE *otherend = fdopen (pipeout, "r"); BibUtils::bibl_read(&b, otherend, "My Pipe", format, &p ); fclose (otherend); close (pipeout); writer->join (); } } } referencer-1.2.1/src/BibData.h0000664000175000017500000000473112042420323013001 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef BIBDATA_H #define BIBDATA_H #include #include #include #include #include #include "CaseFoldCompare.h" class BibData { private: Glib::ustring type_; Glib::ustring doi_; Glib::ustring volume_; Glib::ustring issue_; Glib::ustring pages_; Glib::ustring authors_; Glib::ustring journal_; Glib::ustring title_; Glib::ustring year_; static std::vector document_types; static Glib::ustring default_document_type; public: BibData (); static Glib::ustring &getDefaultDocType (); void writeXML (xmlTextWriterPtr writer); void print () const; void clear (); void mergeIn (BibData const &source); typedef std::map ExtrasMap; ExtrasMap extras_; void addExtra (Glib::ustring const &key, Glib::ustring const &value); void clearExtras (); ExtrasMap getExtras () const {return extras_;} bool hasExtras () {return !extras_.empty();} void setDoi (Glib::ustring const &doi) {doi_ = doi;} Glib::ustring getDoi () const {return doi_;} void setType (Glib::ustring const &type) {type_ = type;} Glib::ustring getType () const {return type_;} void setTitle (Glib::ustring const &title) {title_ = title;} Glib::ustring getTitle () const {return title_;} void setVolume (Glib::ustring const &vol) {volume_ = vol;} Glib::ustring getVolume () const {return volume_;} void setIssue (Glib::ustring const &issue) {issue_ = issue;} Glib::ustring getIssue () const {return issue_;} void setPages (Glib::ustring const &pages) {pages_ = pages;} Glib::ustring getPages () const {return pages_;} void setAuthors (Glib::ustring const &authors) {authors_ = authors;} Glib::ustring getAuthors () const {return authors_;} void setJournal (Glib::ustring const &journal) {journal_ = journal;} Glib::ustring getJournal () const {return journal_;} void setYear (Glib::ustring const &year) {year_ = year;} Glib::ustring getYear () const {return year_;} void guessJournal (Glib::ustring const &raw); void guessVolumeNumberPage (Glib::ustring const &raw); void guessYear (Glib::ustring const &raw); void guessAuthors (Glib::ustring const &raw); void guessTitle (Glib::ustring const &raw); void guessDoi (Glib::ustring const &raw); void guessArxiv (Glib::ustring const &raw_); }; #endif referencer-1.2.1/src/CrossRefPlugin.h0000664000175000017500000000132112043154476014426 00000000000000 #ifndef CROSSREFPLUGIN_H #define CROSSREFPLUGIN_H #include "Plugin.h" class Document; class CrossRefPlugin : public Plugin { public: CrossRefPlugin (); ~CrossRefPlugin () {}; virtual int canResolve (Document &doc); virtual bool resolve (Document &doc); virtual Glib::ustring const getShortName (); virtual Glib::ustring const getLongName (); virtual Glib::ustring const getAuthor (); virtual Glib::ustring const getVersion (); virtual bool canConfigure () {return true;}; virtual void doConfigure (); private: bool ignoreChanges_; void onPrefsChanged (); Glib::RefPtr xml_; Gtk::Dialog *dialog_; Gtk::Entry *usernameEntry_; Gtk::Entry *passwordEntry_; }; #endif referencer-1.2.1/src/Preferences.h0000664000175000017500000001043512042420323013752 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef PREFERENCES_H #define PREFERENCES_H #include #include #include #include "Utility.h" #include "PluginManager.h" class Preferences { private: Glib::RefPtr xml_; /* * Plugins */ Gtk::TreeView *pluginView_; Gtk::Button *moveUpButton_; Gtk::Button *moveDownButton_; Gtk::Button *configureButton_; Gtk::Button *aboutButton_; Glib::RefPtr pluginStore_; Glib::RefPtr pluginSel_; Gtk::TreeModelColumn colPriority_; Gtk::TreeModelColumn colPlugin_; Gtk::TreeModelColumn colShortName_; Gtk::TreeModelColumn colLongName_; Gtk::TreeModelColumn colEnabled_; void onPluginToggled (Glib::ustring const &str); void onPluginSelect (); void onPluginAbout (); void onPluginConfigure (); Gnome::Conf::Entry disabledPlugins_; public: void disablePlugin (Plugin *plugin); void setPluginPref (Glib::ustring const &key, Glib::ustring const &value); Glib::ustring getPluginPref (Glib::ustring const &key); /* * End of Plugins */ /* * Conf for crossref plugin */ private: Gnome::Conf::Entry crossRefUsername_; Gnome::Conf::Entry crossRefPassword_; public: Glib::ustring getCrossRefUsername (); Glib::ustring getCrossRefPassword (); void setCrossRefUsername (Glib::ustring const &username); void setCrossRefPassword (Glib::ustring const &password); /* * End of conf for crossref plugin */ /* * List view options */ private: Gnome::Conf::Entry listSortColumn_; Gnome::Conf::Entry listSortOrder_; public: std::pair getListSort (); void setListSort (Glib::ustring const &columnName, int const order); /* * End of list view options */ /* * Uncategorised */ private: Gtk::Dialog *dialog_; Gtk::Entry *proxyhostentry_; Gtk::SpinButton *proxyportspin_; Gtk::Entry *proxyusernameentry_; Gtk::Entry *proxypasswordentry_; Gtk::CheckButton *useproxycheck_; Gtk::CheckButton *useauthcheck_; void onWorkOfflineToggled (); void onProxyChanged (); void updateSensitivity (); void onConfChange (int number, Gnome::Conf::Entry entry); Gnome::Conf::Entry workoffline_; Gnome::Conf::Entry uselistview_; Gnome::Conf::Entry showtagpane_; Gnome::Conf::Entry shownotespane_; Gnome::Conf::Entry libraryfilename_; Gnome::Conf::Entry width_; Gnome::Conf::Entry height_; Gnome::Conf::Entry notesheight_; Gnome::Conf::Entry proxymode_; Gnome::Conf::Entry proxyuseproxy_; Gnome::Conf::Entry proxyuseauth_; Gnome::Conf::Entry proxyhost_; Gnome::Conf::Entry proxyport_; Gnome::Conf::Entry proxyusername_; Gnome::Conf::Entry proxypassword_; sigc::signal workofflinesignal_; sigc::signal uselistviewsignal_; sigc::signal showtagpanesignal_; sigc::signal shownotespanesignal_; sigc::signal plugindisabledsignal_; bool ignoreChanges_; Glib::RefPtr confclient_; // Set when our gconf directory didn't exist, the first time the // program is run bool firsttime_; public: Preferences (); ~Preferences (); void showDialog (); // Nothing uses this, hopefully nothing will //Glib::RefPtr getConfClient () {return confclient_;} Glib::ustring getLibraryFilename (); void setLibraryFilename (Glib::ustring const &filename); bool getWorkOffline (); void setWorkOffline (bool const &offline); sigc::signal& getWorkOfflineSignal (); sigc::signal& getPluginDisabledSignal (); bool getUseListView (); void setUseListView (bool const &uselistview); sigc::signal& getUseListViewSignal (); bool getShowTagPane (); void setShowTagPane (bool const &showtagpane); sigc::signal& getShowTagPaneSignal (); bool getShowNotesPane (); void setShowNotesPane (bool const &shownotespane); sigc::signal& getShowNotesPaneSignal (); typedef std::pair StringPair; std::pair getWindowSize (); void setWindowSize (std::pair size); int getNotesPaneHeight (); void setNotesPaneHeight (int height); bool const getFirstTime () {return firsttime_;} }; extern Preferences *_global_prefs; #endif referencer-1.2.1/src/PluginManager.C0000664000175000017500000002032212043200060014164 00000000000000 #include #include #include #include #include "Python.h" #include "BibData.h" #include "Document.h" #include "Preferences.h" #include "PythonDocument.h" #include "Transfer.h" #include "Utility.h" #include "ucompose.hpp" #include PluginManager *_global_plugins; static int numargs=0; /* Return the number of arguments of the application command line */ static PyObject* referencer_download(PyObject *self, PyObject *args) { PyObject *url = PyTuple_GetItem (args, 2); PyObject *title = PyTuple_GetItem (args, 0); PyObject *message = PyTuple_GetItem (args, 1); PyObject *ret = NULL; try { Glib::ustring &xml = Transfer::readRemoteFile ( PyString_AsString(title), PyString_AsString(message), PyString_AsString(url)); ret = PyString_FromString (xml.c_str()); DEBUG (String::ucompose ("got %1 characters", xml.length())); } catch (Transfer::Exception ex) { Utility::exceptionDialog (&ex, _("Downloading metadata")); Glib::ustring blank; ret = PyString_FromString (blank.c_str()); } return ret; } /** * Convert a bibtex snippet into a dictionary of key/value * pairs compatible with set_field in PythonDocument */ static PyObject * referencer_bibtex_to_fields (PyObject *self, PyObject *args) { /* Get bibtex string from argument tuple */ PyObject *bibtex_py_str = PyTuple_GetItem (args, 0); char *bibtex_str = PyString_AsString(bibtex_py_str); /* Parse bibtex into a Document */ Document doc; doc.parseBibtex (bibtex_str); /* Retrieve STL map of fields */ Document::FieldMap fields = doc.getFields (); /* Convert STL map to python dict */ PyObject *dict = PyDict_New(); Document::FieldMap::iterator fieldIter = fields.begin (); Document::FieldMap::iterator const fieldEnd = fields.end (); for (; fieldIter != fieldEnd; ++fieldIter) { PyDict_SetItem ( dict, PyString_FromString (fieldIter->first.c_str()), PyString_FromString (fieldIter->second.c_str())); } return dict; } /* Call gettext */ static PyObject* referencer_gettext(PyObject *self, PyObject *args) { PyObject *str = PyTuple_GetItem (args, 0); return PyString_FromString (_(PyString_AsString(str))); } static PyObject* referencer_pref_set (PyObject *self, PyObject *args) { PyObject *key = PyTuple_GetItem (args, 0); PyObject *value = PyTuple_GetItem (args, 1); _global_prefs->setPluginPref (PyString_AsString(key), PyString_AsString(value)); return Py_True; } static PyObject* referencer_pref_get (PyObject *self, PyObject *args) { PyObject *key = PyTuple_GetItem (args, 0); Glib::ustring value = _global_prefs->getPluginPref (PyString_AsString(key)); return PyString_FromString (value.c_str()); } /** * Update UI, and teturn true if the user has requested cancellation */ static PyObject * referencer_poll_cancellation (PyObject *self, PyObject *args) { /* Advance GTK+ */ while (Gtk::Main::events_pending()) Gtk::Main::iteration (); /* Invoke any registered callback */ bool cancelled = false; if (_global_plugins->progressCallback_) { cancelled = (*(_global_plugins->progressCallback_)) (_global_plugins->progressObject_); } /* Advance GTK+ */ while (Gtk::Main::events_pending()) Gtk::Main::iteration (); return cancelled ? Py_True : Py_False; } static PyMethodDef ReferencerMethods[] = { {"download", referencer_download, METH_VARARGS, "Retrieve a remote file"}, {"bibtex_to_fields", referencer_bibtex_to_fields, METH_VARARGS, "Convert bibtex to referencer document fields"}, {"pref_get", referencer_pref_get, METH_VARARGS, "Get configuration item"}, {"pref_set", referencer_pref_set, METH_VARARGS, "Set configuration item"}, {"poll_cancellation", referencer_poll_cancellation, METH_VARARGS, "Update UI and poll for cancellation"}, {"_", referencer_gettext, METH_VARARGS, "Translate a string"}, {NULL, NULL, 0, NULL} }; PluginManager::PluginManager () { PyObject *module = Py_InitModule ("referencer", ReferencerMethods); PyType_Ready (&t_referencer_document); PyObject_SetAttrString (module, "document", (PyObject*)&t_referencer_document); progressCallback_ = NULL; } PluginManager::~PluginManager () { } void PluginManager::scan (std::string const &pluginDir) { DIR *dir = opendir (pluginDir.c_str()); if (!dir) { // Fail silently, allow the caller to call this // spuriously on directories that only might exist return; } pythonPaths_.push_back (pluginDir); struct dirent *ent; while ((ent = readdir(dir))) { /* People with non-ascii filesystem are pretty screwed, eh? */ std::string const name = ent->d_name; /* Scripts are at least x.py long */ if (name.length() < 4) continue; if (name.substr(name.size() - 3, name.size() - 1) == ".py") { std::string const moduleName = name.substr (0, name.size() - 3); DEBUG (String::ucompose("found module %1", moduleName)); // Check we haven't already loaded this module bool dupe = false; std::list::iterator it = pythonPlugins_.begin(); std::list::iterator end = pythonPlugins_.end(); for (; it != end; ++it) { if (it->getShortName() == moduleName) { dupe = true; } } if (dupe) continue; PythonPlugin newPlugin(this); pythonPlugins_.push_front (newPlugin); std::list::iterator newbie = pythonPlugins_.begin(); (*newbie).load(moduleName); } } closedir (dir); } Glib::ustring PluginManager::findDataFile (Glib::ustring const file) { std::vector::iterator it = pythonPaths_.begin (); std::vector::iterator const end = pythonPaths_.end (); for (; it != end; ++it) { Glib::ustring filename = Glib::build_filename (*it, file); if (filename.substr(0,2) == Glib::ustring ("./")) { filename = Glib::get_current_dir () + filename.substr (1, filename.length()); } Glib::RefPtr uri = Gio::File::create_for_path (filename); DEBUG ("Trying %1", filename); if (uri->query_exists ()) return filename; } return Glib::ustring (); } PluginManager::PluginList PluginManager::getPlugins () { PluginList retval; std::list::iterator it = pythonPlugins_.begin(); std::list::iterator end = pythonPlugins_.end(); for (; it != end; ++it) { retval.push_back (&(*it)); } retval.push_back (&crossref_); retval.push_back (&arxiv_); return retval; } PluginManager::PluginList PluginManager::getEnabledPlugins () { std::list retval; std::list::iterator it = pythonPlugins_.begin(); std::list::iterator end = pythonPlugins_.end(); for (; it != end; ++it) { if (it->isEnabled()) retval.push_back (&(*it)); } if (arxiv_.isEnabled ()) retval.push_back (&arxiv_); // Try to keep crossref as a last resort due // to the "last-name only issue" if (crossref_.isEnabled ()) retval.push_back (&crossref_); return retval; } bool PluginManager::canResolve (Document &doc) { std::list plugins = this->getEnabledPlugins(); std::list::iterator it = plugins.begin (); std::list::iterator end = plugins.end (); for (; it != end; ++it) { if ((*it)->canResolve(doc) > 0) { DEBUG ("PluginManager::canResolve found module '%1'", (*it)->getShortName()); return true; } } return false; } bool PluginManager::resolveMetadata (Document &doc) { std::list plugins = this->getEnabledPlugins(); std::list::iterator it = plugins.begin (); std::list::iterator end = plugins.end (); std::vector< std::pair > candidates; int priority; for (; it != end; ++it) { priority = (*it)->canResolve(doc); if (priority > 0) { candidates.push_back (std::make_pair(priority, (*it))); } } std::sort(candidates.begin(), candidates.end()); std::vector< std::pair >::reverse_iterator candit = candidates.rbegin (); std::vector< std::pair >::reverse_iterator candend = candidates.rend (); bool success = false; for (; candit != candend; ++candit) { DEBUG ("PluginManager::resolveMetadata: trying module '%1' with priority '%2'", ((*candit).second)->getShortName(), (*candit).first); success = ((*candit).second)->resolve(doc); if (success) { DEBUG ("PluginManager::resolveMetadata: paydirt with module '%1'", ((*candit).second)->getShortName()); break; } } return success; } referencer-1.2.1/src/Linker.C0000664000175000017500000000736012045407417012707 00000000000000 #include #include #include "Document.h" #include "DocumentView.h" #include "RefWindow.h" #include "Utility.h" #include "Linker.h" void Linker::createUI (RefWindow *window, DocumentView *view) { static bool iconCreated = false; if (!iconCreated) { /* Factory for creating stock icons */ Glib::RefPtr iconFactory = Gtk::IconFactory::create(); iconFactory->add_default (); Gtk::IconSource iconSource; iconSource.set_pixbuf( Utility::getThemeIcon ("web-browser") ); iconSource.set_size(Gtk::ICON_SIZE_SMALL_TOOLBAR); iconSource.set_size_wildcarded(); //Icon may be scaled. Gtk::IconSet iconSet; iconSet.add_source (iconSource); Gtk::StockID stockId = Gtk::StockID ("web-browser"); iconFactory->add (stockId, iconSet); iconCreated = true; } Glib::ustring action = Glib::ustring("linker_") + getName(); window->actiongroup_->add ( Gtk::Action::create (action, Gtk::StockID("web-browser"), getLabel()), sigc::bind( sigc::mem_fun (view, &DocumentView::invokeLinker), this)); Glib::ustring ui = "" "" " " " " " " "" ""; window->uimanager_->add_ui_from_string (ui); } Glib::ustring Linker::getURL (Document *doc) { DEBUG ("Linker::getURL called erroneously!"); } void Linker::doLink (Document *doc) { Glib::ustring url = getURL(doc); Gio::AppInfo::launch_default_for_uri (url); } bool DoiLinker::canLink (Document const *doc) { return doc->hasField("doi"); } Glib::ustring DoiLinker::getURL (Document *doc) { Glib::ustring url = Glib::ustring("http://dx.doi.org/") + doc->getField("doi"); return url; } Glib::ustring DoiLinker::getLabel () { return Glib::ustring (_("DOI Link")); } bool ArxivLinker::canLink (Document const *doc) { return doc->hasField("eprint"); } Glib::ustring ArxivLinker::getURL (Document *doc) { Glib::ustring url = Glib::ustring("http://arxiv.org/abs/") + doc->getField ("eprint"); return url; } Glib::ustring ArxivLinker::getLabel () { return Glib::ustring (_("arXiv Link")); } bool UrlLinker::canLink (Document const *doc) { return doc->hasField("url"); } Glib::ustring UrlLinker::getURL (Document *doc) { Glib::ustring url = doc->getField("url"); return url; } Glib::ustring UrlLinker::getLabel () { return Glib::ustring (_("URL Link")); } bool PubmedLinker::canLink (Document const *doc) { return doc->hasField("pmid"); } Glib::ustring PubmedLinker::getURL (Document *doc) { Glib::ustring url = Glib::ustring ("http://www.ncbi.nlm.nih.gov/pubmed/") + doc->getField("pmid"); return url; } Glib::ustring PubmedLinker::getLabel () { return Glib::ustring (_("PubMed Link")); } bool GoogleLinker::canLink (Document const *doc) { return doc->hasField("doi") || doc->hasField("title"); } Glib::ustring GoogleLinker::getURL (Document *doc) { /* * We assert in canLink that we at least have doi or title */ Glib::ustring searchTerm; if (doc->hasField ("doi")) { searchTerm = doc->getField ("doi"); } else { searchTerm = doc->getField ("title"); } if (doc->hasField ("authors")) { searchTerm += Glib::ustring (" "); searchTerm += Utility::firstAuthor(doc->getField ("authors")); } if (doc->hasField ("year")) { searchTerm += Glib::ustring (" "); searchTerm += doc->getField ("year"); } Glib::ustring escaped = Glib::uri_escape_string (searchTerm); DEBUG (escaped); Glib::ustring url = Glib::ustring ("http://scholar.google.co.uk/scholar?q=") + escaped + Glib::ustring("&btnG=Search"); return url; } Glib::ustring GoogleLinker::getLabel () { return Glib::ustring (_("Google Scholar")); } referencer-1.2.1/src/Document.C0000664000175000017500000006107512146752432013246 00000000000000/* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include #include "ucompose.hpp" #include #include "config.h" #include "BibUtils.h" #include "DocumentView.h" #include "Library.h" #include "PluginManager.h" #include "Preferences.h" #include "TagList.h" #include "ThumbnailGenerator.h" #include "Utility.h" #include "Document.h" #include "Library.h" const Glib::ustring Document::defaultKey_ = _("Unnamed"); Glib::RefPtr Document::loadingthumb_; Document::~Document () { ThumbnailGenerator::instance().deregisterRequest (this); } Document::Document (Document const &x) { view_ = NULL; *this = x; setupThumbnail (); } Document::Document (Glib::ustring const &filename) { view_ = NULL; setFileName (filename); } Document::Document () { view_ = NULL; // Pick up the default thumbnail setupThumbnail (); } Document::Document ( Glib::ustring const &filename, Glib::ustring const &relfilename, Glib::ustring const ¬es, Glib::ustring const &key, std::vector const &tagUids, BibData const &bib) { view_ = NULL; setFileName (filename); setNotes (notes); key_ = key; tagUids_ = tagUids; bib_ = bib; relfilename_ = relfilename; } Document::Document(xmlNodePtr docNode) { readXML(docNode); } Glib::ustring Document::keyReplaceDialogNotUnique ( Glib::ustring const &original, Glib::ustring const &replacement) { return keyReplaceDialog(original, replacement, _("The chosen key conflicts with an " "existing one. Replace '%1' with '%2'?")); } Glib::ustring Document::keyReplaceDialogInvalidChars ( Glib::ustring const &original, Glib::ustring const &replacement) { return keyReplaceDialog(original, replacement, _("The chosen key contained invalid characters." " Replace '%1' with '%2'?")); } Glib::ustring Document::keyReplaceDialog ( Glib::ustring const &original, Glib::ustring const &replacement, const char *message_text) { Glib::ustring message = String::ucompose ( "%1\n\n%2", _("Key naming conflict"), String::ucompose ( message_text, original, replacement)); Gtk::MessageDialog dialog (message, true, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE, true); Gtk::Button *button; button = dialog.add_button (_("_Ignore"), Gtk::RESPONSE_CANCEL); Gtk::Image *noImage = Gtk::manage (new Gtk::Image (Gtk::Stock::NO, Gtk::ICON_SIZE_BUTTON)); button->set_image (*noImage); button = dialog.add_button (_("_Replace"), Gtk::RESPONSE_ACCEPT); Gtk::Image *yesImage = Gtk::manage (new Gtk::Image (Gtk::Stock::YES, Gtk::ICON_SIZE_BUTTON)); button->set_image (*yesImage); dialog.set_default_response (Gtk::RESPONSE_ACCEPT); if (dialog.run () == Gtk::RESPONSE_ACCEPT) return replacement; else return original; } Glib::ustring Document::generateKey () { // Ideally Chambers06 // If not then pap104 // If not then Unnamed-5 Glib::ustring name; Glib::ustring::size_type const maxlen = 14; if (!bib_.getAuthors().empty ()) { Glib::ustring year = bib_.getYear (); if (year.size() == 4) year = year.substr (2,3); Glib::ustring authors = bib_.getAuthors (); Glib::ustring::size_type comma = authors.find (","); Glib::ustring::size_type space = authors.find (" "); Glib::ustring::size_type snip = Glib::ustring::npos; if (comma != Glib::ustring::npos) snip = comma; if (space != Glib::ustring::npos && space < comma) snip = space; if (snip != Glib::ustring::npos) authors = authors.substr(0, snip); if (authors.size() > maxlen - 2) { authors = authors.substr(0, maxlen - 2); } // Should: // Truncate it at the first "et al", "and", or "," name = authors + year; } else if (!filename_.empty ()) { Glib::ustring filename = Gio::File::create_for_uri(filename_)->query_info()->get_display_name(); Glib::ustring::size_type periodpos = filename.find_last_of ("."); if (periodpos != std::string::npos) { filename = filename.substr (0, periodpos); } name = filename; if (name.size() > maxlen) { name = name.substr(0, maxlen); } } else { name = defaultKey_; } // Don't confuse LaTeX name = Utility::strip (name, " "); name = Utility::strip (name, "&"); name = Utility::strip (name, "$"); name = Utility::strip (name, "%"); name = Utility::strip (name, "#"); name = Utility::strip (name, "_"); name = Utility::strip (name, "{"); name = Utility::strip (name, "}"); name = Utility::strip (name, ","); name = Utility::strip (name, "@"); return name; } void Document::setThumbnail (Glib::RefPtr thumb) { thumbnail_ = thumb; if (view_) view_->updateDoc(this); } void Document::setupThumbnail () { if (!loadingthumb_) { loadingthumb_ = Utility::getThemeIcon ("image-loading"); if (!loadingthumb_) loadingthumb_ = Gdk::Pixbuf::create_from_file (Utility::findDataFile ("unknown-document.png")); if (loadingthumb_) { /* FIXME magic number duplicated elsewhere */ float const desiredwidth = 64.0 + 9; int oldwidth = loadingthumb_->get_width (); int oldheight = loadingthumb_->get_height (); int newwidth = (int)desiredwidth; int newheight = (int)((float)oldheight * (desiredwidth / (float)oldwidth)); loadingthumb_ = loadingthumb_->scale_simple ( newwidth, newheight, Gdk::INTERP_BILINEAR); } } thumbnail_ = loadingthumb_; ThumbnailGenerator::instance().registerRequest (filename_, this); } Glib::ustring const & Document::getKey() const { return key_; } Glib::ustring const & Document::getFileName() const { return filename_; } Glib::ustring const & Document::getRelFileName() const { return relfilename_; } void Document::setFileName (Glib::ustring const &filename) { ThumbnailGenerator::instance().deregisterRequest (this); if (filename != filename_) { filename_ = filename; setupThumbnail (); } else if (!thumbnail_) { setupThumbnail (); } } Glib::ustring const & Document::getNotes () const { return notes_; } void Document::setNotes (Glib::ustring const ¬es) { if (notes != notes_) notes_ = notes; } void Document::updateRelFileName (Glib::ustring const &libfilename) { const Glib::RefPtr doc_file = Gio::File::create_for_uri(filename_); Glib::RefPtr lib_path = Gio::File::create_for_uri(libfilename)->get_parent(); bool doc_is_relative_to_library = true; std::string relative_path; std::string up_dir_level; if ( !libfilename.empty() && lib_path->get_uri_scheme() == doc_file->get_uri_scheme() ) { for( ;; ) { relative_path = lib_path->get_relative_path(doc_file); if (!relative_path.empty()) { relative_path = up_dir_level + relative_path; break; } lib_path = lib_path->get_parent(); up_dir_level += "../"; if (lib_path == 0) { doc_is_relative_to_library = false; break; } } } else { doc_is_relative_to_library = false; } if ( doc_is_relative_to_library ) { relfilename_ = relative_path; DEBUG (String::ucompose ("Set relfilename_ '%1'", relfilename_)); } else { relfilename_ = ""; DEBUG (String::ucompose ("Not relative")); } } void Document::setKey (Glib::ustring const &key) { key_ = key; } std::vector& Document::getTags() { return tagUids_; } void Document::setTag(int uid) { if (hasTag(uid)) { std::ostringstream num; num << uid; } else { tagUids_.push_back(uid); } } void Document::clearTag(int uid) { std::vector::iterator location = std::find(tagUids_.begin(), tagUids_.end(), uid); if (location != tagUids_.end()) tagUids_.erase(location); } void Document::clearTags() { tagUids_.clear(); } bool Document::hasTag(int uid) { return std::find(tagUids_.begin(), tagUids_.end(), uid) != tagUids_.end(); } using Utility::writeBibKey; /** * Temporarily duplicating functionality in printBibtex and * writeBibtex -- the difference is that writeBibtex requires a * Library reference in order to resolve tag uids to names. * In order to be usable from PythonDocument printBibtex just * doesn't bother printing tags at all. * * This will get fixed when the ill-conceived tag ID system is * replaced with lists of strings */ Glib::ustring Document::printBibtex ( bool const useBraces, bool const utf8) { std::ostringstream out; // BibTeX values cannot be larger than 1000 characters - should make sure of this // We should strip illegal characters from key in a predictable way out << "@" << bib_.getType() << "{" << key_ << ",\n"; BibData::ExtrasMap extras = bib_.getExtras (); BibData::ExtrasMap::iterator it = extras.begin (); BibData::ExtrasMap::iterator const end = extras.end (); for (; it != end; ++it) { // Exceptions to useBraces are editor and author because we // don't want "Foo, B.B. and John Bar" to be literal writeBibKey ( out, (*it).first, (*it).second, ((*it).first.lowercase () != "editor") && useBraces, utf8); } // Ideally should know what's a list of human names and what's an // institution name be doing something different for non-human-name authors? writeBibKey (out, "author", bib_.getAuthors(), false, utf8); writeBibKey (out, "title", bib_.getTitle(), useBraces, utf8); writeBibKey (out, "journal", bib_.getJournal(), useBraces, utf8); writeBibKey (out, "volume", bib_.getVolume(), false, utf8); writeBibKey (out, "number", bib_.getIssue(), false, utf8); writeBibKey (out, "pages", bib_.getPages(), false, utf8); writeBibKey (out, "year", bib_.getYear(), false, utf8); writeBibKey (out, "doi", bib_.getDoi(), false, utf8); out << "}\n\n"; return out.str(); } void Document::writeBibtex ( Library const &lib, std::ostringstream& out, bool const usebraces, bool const utf8) { // BibTeX values cannot be larger than 1000 characters - should make sure of this // We should strip illegal characters from key in a predictable way out << "@" << bib_.getType() << "{" << key_ << ",\n"; BibData::ExtrasMap extras = bib_.getExtras (); BibData::ExtrasMap::iterator it = extras.begin (); BibData::ExtrasMap::iterator const end = extras.end (); for (; it != end; ++it) { // Exceptions to usebraces are editor and author because we // don't want "Foo, B.B. and John Bar" to be literal writeBibKey ( out, (*it).first, (*it).second, ((*it).first.lowercase () != "editor") && usebraces, utf8); } // Ideally should know what's a list of human names and what's an // institution name be doing something different for non-human-name authors? writeBibKey (out, "author", bib_.getAuthors(), false, utf8); writeBibKey (out, "title", bib_.getTitle(), usebraces, utf8); writeBibKey (out, "journal", bib_.getJournal(), usebraces, utf8); writeBibKey (out, "volume", bib_.getVolume(), false, utf8); writeBibKey (out, "number", bib_.getIssue(), false, utf8); writeBibKey (out, "pages", bib_.getPages(), false, utf8); writeBibKey (out, "year", bib_.getYear(), false, utf8); writeBibKey (out, "doi", bib_.getDoi(), false, utf8); if (tagUids_.size () > 0) { out << "\ttags = \""; std::vector::iterator tagit = tagUids_.begin (); std::vector::iterator const tagend = tagUids_.end (); for (; tagit != tagend; ++tagit) { if (tagit != tagUids_.begin ()) out << ", "; out << lib.getTagList()->getName(*tagit); } out << "\"\n"; } out << "}\n\n"; } void Document::writeXML(xmlTextWriterPtr writer) { xmlTextWriterStartElement(writer, BAD_CAST LIB_ELEMENT_DOC); /* Prefer to use write only relative filenames */ if (!relfilename_.empty()) { xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_REL_FILENAME, BAD_CAST relfilename_.c_str()); } else { xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_FILENAME, BAD_CAST filename_.c_str()); } xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_KEY, BAD_CAST getKey().c_str()); xmlTextWriterWriteElement(writer, BAD_CAST LIB_ELEMENT_DOC_NOTES, BAD_CAST getNotes().c_str()); std::vector docvec = getTags(); for (std::vector::iterator it = docvec.begin(); it != docvec.end(); ++it) { xmlTextWriterWriteFormatElement(writer, BAD_CAST LIB_ELEMENT_DOC_TAG, "%d", (*it)); } getBibData().writeXML(writer); xmlTextWriterEndElement(writer); } void Document::readXML(xmlNodePtr docNode) { for (xmlNodePtr child = xmlFirstElementChild(docNode); child; child = xmlNextElementSibling(child)) { if (nodeNameEq(child, LIB_ELEMENT_DOC_TAG)) { SET_FROM_NODE_MAP(setTag, child, atoi); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_REL_FILENAME)) { SET_FROM_NODE(setRelFileName, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_FILENAME)) { SET_FROM_NODE(setFileName, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_KEY)) { SET_FROM_NODE(setKey, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_NOTES)) { SET_FROM_NODE(setNotes, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_AUTHORS)) { SET_FROM_NODE(getBibData().setAuthors, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_DOI)) { SET_FROM_NODE(getBibData().setDoi, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_EXTRA)) { char* extraKey = STR xmlGetProp(child, XSTR LIB_ELEMENT_DOC_BIB_EXTRA_KEY); char* extraText = STR xmlNodeGetContent(child); getBibData().addExtra(extraKey, extraText); xmlFree(extraKey); xmlFree(extraText); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_JOURNAL)) { SET_FROM_NODE(getBibData().setJournal, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_NUMBER)) { SET_FROM_NODE(getBibData().setIssue, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_PAGES)) { SET_FROM_NODE(getBibData().setPages, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_TITLE)) { SET_FROM_NODE(getBibData().setTitle, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_TYPE)) { SET_FROM_NODE(getBibData().setType, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_VOLUME)) { SET_FROM_NODE(getBibData().setVolume, child); } else if (nodeNameEq(child, LIB_ELEMENT_DOC_BIB_YEAR)) { SET_FROM_NODE(getBibData().setYear, child); } } } bool Document::readPDF () { if (filename_.empty()) { DEBUG ("Document::readPDF: has no filename"); return false; } std::string contentType = Gio::File::create_for_uri(filename_)->query_info("standard::content-type")->get_content_type(); if (contentType != "application/pdf") return false; GError *error = NULL; PopplerDocument *popplerdoc = poppler_document_new_from_file (filename_.c_str(), NULL, &error); if (popplerdoc == NULL) { DEBUG ("Document::readPDF: Failed to load '%1'", filename_); g_error_free (error); return false; } Glib::ustring textdump; int num_pages = poppler_document_get_n_pages (popplerdoc); bool got_id = false; if (num_pages == 0) { DEBUG ("Document::readPDF: No pages in '%1'", filename_); return false; } // Read the first page PopplerPage *page; page = poppler_document_get_page (popplerdoc, 0); textdump += poppler_page_get_text(page); g_object_unref (page); // When we read the first page, see if it has the doc info bib_.guessYear (textdump); bib_.guessDoi (textdump); bib_.guessArxiv (textdump); if (!bib_.getDoi ().empty () || !bib_.getExtras ()["eprint"].empty ()) { got_id = true; } //Try to extract PDF metadata char *pdfauthor_c = poppler_document_get_author(popplerdoc); if (pdfauthor_c) { Glib::ustring pdfauthor = pdfauthor_c; if (pdfauthor != "" && pdfauthor.find(" ") != -1) { //If author contains more than one word, it might be sensible //Some bad examples: "Author", "jol", "IEEE", //"U-STAR\bgogul,S-1-5-21-2879401181-1713613690-3240760954-1005" bib_.setAuthors(pdfauthor); } DEBUG ("pdfauthor: %1", pdfauthor); } char *pdftitle_c = poppler_document_get_title(popplerdoc); if (pdftitle_c) { Glib::ustring pdftitle = pdftitle_c; if (pdftitle != "" && pdftitle.find(" ") != -1) { //If title contains more than one word, it might be sensible //Some bad examples: "Title", "ssl-attacks.dvi", //"doi:10.1016/j.scico.2005.02.009", "MAIN", "24690003", //"untitled", "PII: 0304-3975(96)00072-2" bib_.setTitle(pdftitle); } DEBUG ("pdftitle: %1", pdftitle); } g_object_unref (popplerdoc); //DEBUG ("%1", textdump); return !(textdump.empty ()); } bool Document::canGetMetadata () { PluginManager *pluginManager = _global_plugins; return _global_plugins->canResolve(*this); } /* [bert] hack this to handle searches with a space like iTunes. For * now we just treat the whole search string as the boolean "AND" of * each individual component, and check the whole string against each * document. * * A better way to do this would be to change the whole search * procedure to narrow the search progressively by term, so that * additional terms search only through an already-filtered list. * But this would require changing higher-level code, for example, * the DocumentView::isVisible() method that calls this function would * have to change substantially. */ bool Document::matchesSearch (Glib::ustring const &search) { /* This is a bit of a hack, I guess, but it's a low-impact way of * implementing the change. If the search term contains a space, I * iteratively decompose it into substrings and pass those onto * this function. If anything doesn't match, we return a failure. */ if (search.find(' ') != Glib::ustring::npos) { Glib::ustring::size_type p1 = 0; Glib::ustring::size_type p2; do { /* Find the next space in the string, if any. */ p2 = search.find(' ', p1); /* Extract the appropriate substring. */ Glib::ustring const searchTerm = search.substr(p1, p2); /* If the term is empty, ignore it and move on. It might just be a * trailing or duplicate space character. */ if (searchTerm.empty()) { break; } /* Now that we have the substring, which is guaranteed to be * free of spaces, we can pass it recursively into this function. * If the term does NOT match, fail the entire comparison right away. */ if (!matchesSearch(searchTerm)) { return false; } p1 = p2 + 1; /* +1 to skip over the space */ } while (p2 != Glib::ustring::npos); /* Terminate at end of string */ return true; /* All matched, so OK. */ } Glib::ustring const searchNormalised = search.casefold(); FieldMap fields = getFields (); FieldMap::iterator fieldIter = fields.begin (); FieldMap::iterator const fieldEnd = fields.end (); for (; fieldIter != fieldEnd; ++fieldIter) { if (fieldIter->second.casefold().find(searchNormalised) != Glib::ustring::npos) return true; } if (notes_.casefold().find(searchNormalised) != Glib::ustring::npos) return true; if (key_.casefold().find(searchNormalised) != Glib::ustring::npos) return true; return false; } /* * Returns true on success */ bool Document::getMetaData () { if (_global_prefs->getWorkOffline()) return false; PluginManager *pluginManager = _global_plugins; bool success = false; success = _global_plugins->resolveMetadata(*this); /* * Set up the key if it was never set to begin with */ if (success) { if (getKey().substr(0, defaultKey_.size()) == defaultKey_) setKey(generateKey ()); } return success; } void Document::renameFromKey () { if (getFileName().empty () || getKey().empty ()) return; Glib::RefPtr oldfile = Gio::File::create_for_uri(getFileName()); Glib::ustring shortname = oldfile->query_info()->get_display_name(); DEBUG ("Shortname = %1", shortname); Glib::RefPtr parentdir = oldfile->get_parent(); Glib::ustring::size_type pos = shortname.rfind ("."); Glib::ustring extension = ""; if (pos != Glib::ustring::npos) extension = shortname.substr (pos, shortname.length() - 1); Glib::ustring newfilename = getKey() + extension; DEBUG ("Newfilename = %1", newfilename); Glib::RefPtr newfile = parentdir->get_child(newfilename); try { oldfile->move(newfile); setFileName (newfile->get_uri ()); } catch (Gio::Error &ex) { Utility::exceptionDialog (&ex, String::ucompose (_("Moving '%1' to '%2'"), oldfile->get_uri (), newfile->get_uri ()) ); } } void Document::setField (Glib::ustring const &field, Glib::ustring const &value) { DEBUG (String::ucompose ("%1 : %2", field, value)); if (field == "doi") bib_.setDoi (value); else if (field.lowercase() == "title") bib_.setTitle (value); else if (field.lowercase() == "volume") bib_.setVolume (value); else if (field.lowercase() == "number") bib_.setIssue (value); else if (field.lowercase() == "journal") bib_.setJournal (value); else if (field.lowercase() == "author") bib_.setAuthors (value); else if (field.lowercase() == "year") bib_.setYear (value); else if (field.lowercase() == "pages") bib_.setPages (value); else if (field == "key") setKey (value); else { /* The extras map uses a case-folding comparator */ bib_.extras_[field] = value; } } /* Can't be const because of std::map[] */ Glib::ustring Document::getField (Glib::ustring const &field) { if (field == "doi") return bib_.getDoi (); else if (field == "title") return bib_.getTitle (); else if (field == "volume") return bib_.getVolume (); else if (field == "number") return bib_.getIssue (); else if (field == "journal") return bib_.getJournal (); else if (field == "author") return bib_.getAuthors (); else if (field == "year") return bib_.getYear (); else if (field == "pages") return bib_.getPages (); else if (field == "key") return getKey(); else { if (bib_.extras_.find(field) != bib_.extras_.end()) { const Glib::ustring _field = field; return bib_.extras_[_field]; } else { DEBUG ("Document::getField: WARNING: unknown field %1", field); throw std::range_error("Document::getField: unknown field"); } } } bool Document::hasField (Glib::ustring const &field) const { if (field == "doi") return !bib_.getDoi ().empty(); else if (field == "title") return !bib_.getTitle ().empty(); else if (field == "volume") return !bib_.getVolume ().empty(); else if (field == "number") return !bib_.getIssue ().empty(); else if (field == "journal") return !bib_.getJournal ().empty(); else if (field == "author") return !bib_.getAuthors ().empty(); else if (field == "year") return !bib_.getYear ().empty(); else if (field == "pages") return !bib_.getPages ().empty(); else { if (bib_.extras_.find(field) != bib_.extras_.end()) return true; else return false; } } /* * Metadata fields. Does not include document key or type */ std::map Document::getFields () { std::map fields; if (!bib_.getDoi ().empty()) fields["doi"] = bib_.getDoi(); if (!bib_.getTitle ().empty()) fields["title"] = bib_.getTitle(); if (!bib_.getVolume ().empty()) fields["volume"] = bib_.getVolume(); if (!bib_.getIssue ().empty()) fields["number"] = bib_.getIssue(); if (!bib_.getJournal ().empty()) fields["journal"] = bib_.getJournal(); if (!bib_.getAuthors ().empty()) fields["author"] = bib_.getAuthors(); if (!bib_.getYear ().empty()) fields["year"] = bib_.getYear(); if (!bib_.getPages ().empty()) fields["pages"] = bib_.getPages(); BibData::ExtrasMap::iterator it = bib_.extras_.begin (); BibData::ExtrasMap::iterator end = bib_.extras_.end (); for (; it != end; ++it) { fields[(*it).first] = (*it).second; } return fields; } void Document::clearFields () { bib_.extras_.clear (); setField ("doi", ""); setField ("title", ""); setField ("volume", ""); setField ("number", ""); setField ("journal", ""); setField ("author", ""); setField ("year", ""); setField ("pages", ""); } bool Document::parseBibtex (Glib::ustring const &bibtex) { BibUtils::param p; BibUtils::bibl b; BibUtils::bibl_init( &b ); BibUtils::bibl_initparams( &p, BibUtils::FORMAT_BIBTEX, BIBL_MODSOUT); try { /* XXX should convert this to latin1? */ BibUtils::biblFromString (b, bibtex, BibUtils::FORMAT_BIBTEX, p); if (b.nrefs != 1) return false; Document newdoc = BibUtils::parseBibUtils (b.ref[0]); getBibData().mergeIn (newdoc.getBibData()); BibUtils::bibl_free( &b ); } catch (Glib::Error ex) { BibUtils::bibl_free( &b ); Utility::exceptionDialog (&ex, _("Parsing BibTeX")); return false; } } referencer-1.2.1/src/Utility.h0000664000175000017500000001225712042420323013160 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #ifndef UTILITY_H #define UTILITY_H #include #include #include #include #include #include #include "ucompose.hpp" #define DEBUG(x,...) Utility::debug(__PRETTY_FUNCTION__, String::ucompose(x, ##__VA_ARGS__)) #define DELETE(x) { if (x) { delete x; } } #define DELETE_AND_NULL(x) { if (x) { delete x; x = NULL; } } /** * This cast is similar to BAD_CAST in libxml. It is intended as a * shorthand for casts from char* to xmlChar*. */ #define XSTR (xmlChar*) /** * This cast is similar to BAD_CAST in libxml. It is intended as a * shorthand for casts from char* to const xmlChar*. */ #define CXSTR (const xmlChar*) /** * This cast is similar to \ref CXSTR. It is intended to be used for casts from * xmlChar* to const char*. */ #define CSTR (const char*) /** * This cast is similar to \ref CXSTR. It is intended to be used for casts from * xmlChar* to char*. */ #define STR (char*) /** * This is a helper macro for getting a string from a node in libxml, maps it * with the given \c mapFunc before it assings it to some target variable. * Afterwards it frees the string (using libxml's \c xmlFree function). */ #define COPY_NODE_MAP(target, source, mapFunc) { char* __tmp_str = STR xmlNodeGetContent(source); target = mapFunc(__tmp_str); xmlFree(__tmp_str); } /** * This is a helper macro for getting a string from a node in libxml, maps it * with the given \c mapFunc before it assings it via some setter function. * Afterwards it frees the string (using libxml's \c xmlFree function). */ #define SET_FROM_NODE_MAP(setFunc, source, mapFunc) { char* __tmp_str = STR xmlNodeGetContent(source); setFunc(mapFunc(__tmp_str)); xmlFree(__tmp_str); } /** * This is a helper macro for getting a string from a node in libxml. It then * assings the string via some setter function. Afterwards it frees the string * (using libxml's \c xmlFree function). */ #define SET_FROM_NODE(setFunc, source) { char* __tmp_str = STR xmlNodeGetContent(source); setFunc(__tmp_str); xmlFree(__tmp_str); } /** * This is a helper macro for getting a string from the parsed XML, assigning it * to some variable and freeing it afterwards. */ #define COPY_NODE(target, source) { char* __tmp_str = STR xmlNodeGetContent(source); target = __tmp_str; xmlFree(__tmp_str); } namespace Utility { /** * A shorthand for const xmlChar*. */ typedef const xmlChar* cxStr; /** * A shorthand for xmlChar*. */ typedef xmlChar* xStr; typedef std::pair StringPair; Glib::ustring wrap ( Glib::ustring const &str, Glib::ustring::size_type width, int lines, bool const pad); Glib::ustring firstAuthor ( Glib::ustring const &authors); bool hasExtension ( Glib::ustring const &filename, Glib::ustring const &ex); bool uriIsFast ( Glib::RefPtr uri); StringPair twoWaySplit ( Glib::ustring const &str, Glib::ustring const ÷r); Glib::ustring strip ( Glib::ustring const &victim, Glib::ustring const &unwanted); Glib::ustring ensureExtension ( Glib::ustring const &filename, Glib::ustring const &extension); Glib::ustring findDataFile ( Glib::ustring const &filename); bool fileExists ( Glib::ustring const &filename); void exceptionDialog ( Glib::Exception const *ex, Glib::ustring const &context); std::vector recurseFolder ( Glib::ustring const &rootfoldername); void moveToTrash ( Glib::ustring const &uri); void deleteFile ( Glib::ustring const &target_uri_str); void writeBibKey ( std::ostringstream &out, Glib::ustring key, Glib::ustring const & value, bool const usebraces, bool const utf8); std::string escapeBibtexAccents ( Glib::ustring target); Glib::ustring firstCap ( Glib::ustring original); Glib::ustring relPath ( Glib::ustring parent, Glib::ustring child); Glib::RefPtr getThemeIcon(Glib::ustring const &iconname); Glib::RefPtr getThemeMenuIcon(Glib::ustring const &iconname); int wvConvertUnicodeToLaTeX( gunichar char16, Glib::ustring &out); Glib::RefPtr eelEmbedImageInFrame ( Glib::RefPtr source, Glib::RefPtr frame, int left, int top, int right, int bottom); Glib::ustring mozUrlSelectionToUTF8 ( Gtk::SelectionData const &sel); Glib::ustring trimWhiteSpace (Glib::ustring const &str); Glib::ustring trimLeadingString (Glib::ustring const &str, Glib::ustring const &leader); void debug (Glib::ustring tag, Glib::ustring msg); /* [bert] Added this function to remove leading "a", "an" or * "the" from an English string, for comparison purposes. */ Glib::ustring removeLeadingArticle(Glib::ustring const &str); time_t timeValToPosix(Glib::TimeVal time_val); } class TextDialog : public Gtk::Dialog { public: TextDialog ( Glib::ustring const &title, Glib::ustring const &text); }; #endif referencer-1.2.1/src/ArxivPlugin.h0000664000175000017500000000077312043154137013775 00000000000000 #ifndef ARXIVPLUGIN_H #define ARXIVPLUGIN_H #include "Plugin.h" class Document; class ArxivPlugin : public Plugin { public: ArxivPlugin () { loaded_ = true; cap_.add(PluginCapability::ARXIV); } ~ArxivPlugin () {}; virtual int canResolve (Document &doc); virtual bool resolve (Document &doc); virtual Glib::ustring const getShortName (); virtual Glib::ustring const getLongName (); virtual Glib::ustring const getAuthor (); virtual Glib::ustring const getVersion (); }; #endif referencer-1.2.1/src/sexy-icon-entry.c0000664000175000017500000005771012042412720014572 00000000000000/* * @file libsexy/sexy-icon-entry.c Entry widget * * @Copyright (C) 2004-2006 Christian Hammond. * * 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. */ #include #include #include #define ICON_MARGIN 2 #define MAX_ICONS 2 #define IS_VALID_ICON_ENTRY_POSITION(pos) \ ((pos) == SEXY_ICON_ENTRY_PRIMARY || \ (pos) == SEXY_ICON_ENTRY_SECONDARY) typedef struct { GtkImage *icon; gboolean highlight; gboolean hovered; GdkWindow *window; } SexyIconInfo; struct _SexyIconEntryPriv { SexyIconInfo icons[MAX_ICONS]; gulong icon_released_id; }; enum { ICON_PRESSED, ICON_RELEASED, LAST_SIGNAL }; GType sexy_icon_entry_position_get_type (void) { static GType etype = 0; if (etype == 0) { static const GEnumValue values[] = { { SEXY_ICON_ENTRY_PRIMARY, "SEXY_ICON_ENTRY_PRIMARY", "primary" }, { SEXY_ICON_ENTRY_SECONDARY, "SEXY_ICON_ENTRY_SECONDARY", "secondary" }, { 0, NULL, NULL } }; etype = g_enum_register_static ("SexyIconEntryPosition", values); } return etype; } static void sexy_icon_entry_class_init(SexyIconEntryClass *klass); static void sexy_icon_entry_editable_init(GtkEditableClass *iface); static void sexy_icon_entry_init(SexyIconEntry *entry); static void sexy_icon_entry_finalize(GObject *obj); static void sexy_icon_entry_destroy(GtkObject *obj); static void sexy_icon_entry_map(GtkWidget *widget); static void sexy_icon_entry_unmap(GtkWidget *widget); static void sexy_icon_entry_realize(GtkWidget *widget); static void sexy_icon_entry_unrealize(GtkWidget *widget); static void sexy_icon_entry_size_request(GtkWidget *widget, GtkRequisition *requisition); static void sexy_icon_entry_size_allocate(GtkWidget *widget, GtkAllocation *allocation); static gint sexy_icon_entry_expose(GtkWidget *widget, GdkEventExpose *event); static gint sexy_icon_entry_enter_notify(GtkWidget *widget, GdkEventCrossing *event); static gint sexy_icon_entry_leave_notify(GtkWidget *widget, GdkEventCrossing *event); static gint sexy_icon_entry_button_press(GtkWidget *widget, GdkEventButton *event); static gint sexy_icon_entry_button_release(GtkWidget *widget, GdkEventButton *event); static GtkEntryClass *parent_class = NULL; static guint signals[LAST_SIGNAL] = {0}; G_DEFINE_TYPE_EXTENDED(SexyIconEntry, sexy_icon_entry, GTK_TYPE_ENTRY, 0, G_IMPLEMENT_INTERFACE(GTK_TYPE_EDITABLE, sexy_icon_entry_editable_init)); static void sexy_icon_entry_class_init(SexyIconEntryClass *klass) { GObjectClass *gobject_class; GtkObjectClass *object_class; GtkWidgetClass *widget_class; GtkEntryClass *entry_class; parent_class = g_type_class_peek_parent(klass); gobject_class = G_OBJECT_CLASS(klass); object_class = GTK_OBJECT_CLASS(klass); widget_class = GTK_WIDGET_CLASS(klass); entry_class = GTK_ENTRY_CLASS(klass); gobject_class->finalize = sexy_icon_entry_finalize; object_class->destroy = sexy_icon_entry_destroy; widget_class->map = sexy_icon_entry_map; widget_class->unmap = sexy_icon_entry_unmap; widget_class->realize = sexy_icon_entry_realize; widget_class->unrealize = sexy_icon_entry_unrealize; widget_class->size_request = sexy_icon_entry_size_request; widget_class->size_allocate = sexy_icon_entry_size_allocate; widget_class->expose_event = sexy_icon_entry_expose; widget_class->enter_notify_event = sexy_icon_entry_enter_notify; widget_class->leave_notify_event = sexy_icon_entry_leave_notify; widget_class->button_press_event = sexy_icon_entry_button_press; widget_class->button_release_event = sexy_icon_entry_button_release; /** * SexyIconEntry::icon-pressed: * @entry: The entry on which the signal is emitted. * @icon_pos: The position of the clicked icon. * @button: The mouse button clicked. * * The ::icon-pressed signal is emitted when an icon is clicked. */ signals[ICON_PRESSED] = g_signal_new("icon_pressed", G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(SexyIconEntryClass, icon_pressed), NULL, NULL, gtk_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT); /** * SexyIconEntry::icon-released: * @entry: The entry on which the signal is emitted. * @icon_pos: The position of the clicked icon. * @button: The mouse button clicked. * * The ::icon-released signal is emitted on the button release from a * mouse click. */ signals[ICON_RELEASED] = g_signal_new("icon_released", G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(SexyIconEntryClass, icon_released), NULL, NULL, gtk_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT); } static void sexy_icon_entry_editable_init(GtkEditableClass *iface) { }; static void sexy_icon_entry_init(SexyIconEntry *entry) { entry->priv = g_new0(SexyIconEntryPriv, 1); } static void sexy_icon_entry_finalize(GObject *obj) { SexyIconEntry *entry; g_return_if_fail(obj != NULL); g_return_if_fail(SEXY_IS_ICON_ENTRY(obj)); entry = SEXY_ICON_ENTRY(obj); g_free(entry->priv); if (G_OBJECT_CLASS(parent_class)->finalize) G_OBJECT_CLASS(parent_class)->finalize(obj); } static void sexy_icon_entry_destroy(GtkObject *obj) { SexyIconEntry *entry; entry = SEXY_ICON_ENTRY(obj); sexy_icon_entry_set_icon(entry, SEXY_ICON_ENTRY_PRIMARY, NULL); sexy_icon_entry_set_icon(entry, SEXY_ICON_ENTRY_SECONDARY, NULL); if (GTK_OBJECT_CLASS(parent_class)->destroy) GTK_OBJECT_CLASS(parent_class)->destroy(obj); } static void sexy_icon_entry_map(GtkWidget *widget) { if (GTK_WIDGET_REALIZED(widget) && !GTK_WIDGET_MAPPED(widget)) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; GTK_WIDGET_CLASS(parent_class)->map(widget); for (i = 0; i < MAX_ICONS; i++) { if (entry->priv->icons[i].icon != NULL) gdk_window_show(entry->priv->icons[i].window); } } } static void sexy_icon_entry_unmap(GtkWidget *widget) { if (GTK_WIDGET_MAPPED(widget)) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; for (i = 0; i < MAX_ICONS; i++) { if (entry->priv->icons[i].icon != NULL) gdk_window_hide(entry->priv->icons[i].window); } GTK_WIDGET_CLASS(parent_class)->unmap(widget); } } static gint get_icon_width(SexyIconEntry *entry, SexyIconEntryPosition icon_pos) { GtkRequisition requisition; gint menu_icon_width; gint width; SexyIconInfo *icon_info = &entry->priv->icons[icon_pos]; if (icon_info->icon == NULL) return 0; gtk_widget_size_request(GTK_WIDGET(icon_info->icon), &requisition); gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &menu_icon_width, NULL); width = MAX(requisition.width, menu_icon_width); return width; } static void get_borders(SexyIconEntry *entry, gint *xborder, gint *yborder) { GtkWidget *widget = GTK_WIDGET(entry); gint focus_width; gboolean interior_focus; gtk_widget_style_get(widget, "interior-focus", &interior_focus, "focus-line-width", &focus_width, NULL); if (gtk_entry_get_has_frame(GTK_ENTRY(entry))) { *xborder = widget->style->xthickness; *yborder = widget->style->ythickness; } else { *xborder = 0; *yborder = 0; } if (!interior_focus) { *xborder += focus_width; *yborder += focus_width; } } static void get_text_area_size(SexyIconEntry *entry, GtkAllocation *alloc) { GtkWidget *widget = GTK_WIDGET(entry); GtkRequisition requisition; gint xborder, yborder; gtk_widget_get_child_requisition(widget, &requisition); get_borders(entry, &xborder, &yborder); alloc->x = xborder; alloc->y = yborder; alloc->width = widget->allocation.width - xborder * 2; alloc->height = requisition.height - yborder * 2; } static void get_icon_allocation(SexyIconEntry *icon_entry, gboolean left, GtkAllocation *widget_alloc, GtkAllocation *text_area_alloc, GtkAllocation *allocation, SexyIconEntryPosition *icon_pos) { gboolean rtl; rtl = (gtk_widget_get_direction(GTK_WIDGET(icon_entry)) == GTK_TEXT_DIR_RTL); if (left) *icon_pos = (rtl ? SEXY_ICON_ENTRY_SECONDARY : SEXY_ICON_ENTRY_PRIMARY); else *icon_pos = (rtl ? SEXY_ICON_ENTRY_PRIMARY : SEXY_ICON_ENTRY_SECONDARY); allocation->y = text_area_alloc->y; allocation->width = get_icon_width(icon_entry, *icon_pos); allocation->height = text_area_alloc->height; if (left) allocation->x = text_area_alloc->x + ICON_MARGIN; else { allocation->x = text_area_alloc->x + text_area_alloc->width - allocation->width - ICON_MARGIN; } } static void sexy_icon_entry_realize(GtkWidget *widget) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); GdkWindowAttr attributes; gint attributes_mask; int i; GTK_WIDGET_CLASS(parent_class)->realize(widget); attributes.x = 0; attributes.y = 0; attributes.width = 1; attributes.height = 1; attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual(widget); attributes.colormap = gtk_widget_get_colormap(widget); attributes.event_mask = gtk_widget_get_events(widget); attributes.event_mask |= (GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; for (i = 0; i < MAX_ICONS; i++) { SexyIconInfo *icon_info; icon_info = &entry->priv->icons[i]; icon_info->window = gdk_window_new(widget->window, &attributes, attributes_mask); gdk_window_set_user_data(icon_info->window, widget); gdk_window_set_background(icon_info->window, &widget->style->base[GTK_WIDGET_STATE(widget)]); } gtk_widget_queue_resize(widget); } static void sexy_icon_entry_unrealize(GtkWidget *widget) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; GTK_WIDGET_CLASS(parent_class)->unrealize(widget); for (i = 0; i < MAX_ICONS; i++) { SexyIconInfo *icon_info = &entry->priv->icons[i]; gdk_window_destroy(icon_info->window); icon_info->window = NULL; } } static void sexy_icon_entry_size_request(GtkWidget *widget, GtkRequisition *requisition) { GtkEntry *gtkentry; SexyIconEntry *entry; gint icon_widths = 0; int i; gtkentry = GTK_ENTRY(widget); entry = SEXY_ICON_ENTRY(widget); for (i = 0; i < MAX_ICONS; i++) { int icon_width = get_icon_width(entry, i); if (icon_width > 0) icon_widths += icon_width + ICON_MARGIN; } GTK_WIDGET_CLASS(parent_class)->size_request(widget, requisition); if (icon_widths > requisition->width) requisition->width += icon_widths; } static void place_windows(SexyIconEntry *icon_entry, GtkAllocation *widget_alloc) { SexyIconEntryPosition left_icon_pos; SexyIconEntryPosition right_icon_pos; GtkAllocation left_icon_alloc; GtkAllocation right_icon_alloc; GtkAllocation text_area_alloc; get_text_area_size(icon_entry, &text_area_alloc); get_icon_allocation(icon_entry, TRUE, widget_alloc, &text_area_alloc, &left_icon_alloc, &left_icon_pos); get_icon_allocation(icon_entry, FALSE, widget_alloc, &text_area_alloc, &right_icon_alloc, &right_icon_pos); if (left_icon_alloc.width > 0) { text_area_alloc.x = left_icon_alloc.x + left_icon_alloc.width + ICON_MARGIN; } if (right_icon_alloc.width > 0) text_area_alloc.width -= right_icon_alloc.width + ICON_MARGIN; text_area_alloc.width -= text_area_alloc.x; gdk_window_move_resize(icon_entry->priv->icons[left_icon_pos].window, left_icon_alloc.x, left_icon_alloc.y, left_icon_alloc.width, left_icon_alloc.height); gdk_window_move_resize(icon_entry->priv->icons[right_icon_pos].window, right_icon_alloc.x, right_icon_alloc.y, right_icon_alloc.width, right_icon_alloc.height); gdk_window_move_resize(GTK_ENTRY(icon_entry)->text_area, text_area_alloc.x, text_area_alloc.y, text_area_alloc.width, text_area_alloc.height); } static void sexy_icon_entry_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { g_return_if_fail(SEXY_IS_ICON_ENTRY(widget)); g_return_if_fail(allocation != NULL); widget->allocation = *allocation; GTK_WIDGET_CLASS(parent_class)->size_allocate(widget, allocation); if (GTK_WIDGET_REALIZED(widget)) place_windows(SEXY_ICON_ENTRY(widget), allocation); } static GdkPixbuf * get_pixbuf_from_icon(SexyIconEntry *entry, SexyIconEntryPosition icon_pos) { GdkPixbuf *pixbuf = NULL; gchar *stock_id; SexyIconInfo *icon_info = &entry->priv->icons[icon_pos]; GtkIconSize size; switch (gtk_image_get_storage_type(GTK_IMAGE(icon_info->icon))) { case GTK_IMAGE_PIXBUF: pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(icon_info->icon)); g_object_ref(pixbuf); break; case GTK_IMAGE_STOCK: gtk_image_get_stock(GTK_IMAGE(icon_info->icon), &stock_id, &size); pixbuf = gtk_widget_render_icon(GTK_WIDGET(entry), stock_id, size, NULL); break; default: return NULL; } return pixbuf; } /* Kudos to the gnome-panel guys. */ static void colorshift_pixbuf(GdkPixbuf *dest, GdkPixbuf *src, int shift) { gint i, j; gint width, height, has_alpha, src_rowstride, dest_rowstride; guchar *target_pixels; guchar *original_pixels; guchar *pix_src; guchar *pix_dest; int val; guchar r, g, b; has_alpha = gdk_pixbuf_get_has_alpha(src); width = gdk_pixbuf_get_width(src); height = gdk_pixbuf_get_height(src); src_rowstride = gdk_pixbuf_get_rowstride(src); dest_rowstride = gdk_pixbuf_get_rowstride(dest); original_pixels = gdk_pixbuf_get_pixels(src); target_pixels = gdk_pixbuf_get_pixels(dest); for (i = 0; i < height; i++) { pix_dest = target_pixels + i * dest_rowstride; pix_src = original_pixels + i * src_rowstride; for (j = 0; j < width; j++) { r = *(pix_src++); g = *(pix_src++); b = *(pix_src++); val = r + shift; *(pix_dest++) = CLAMP(val, 0, 255); val = g + shift; *(pix_dest++) = CLAMP(val, 0, 255); val = b + shift; *(pix_dest++) = CLAMP(val, 0, 255); if (has_alpha) *(pix_dest++) = *(pix_src++); } } } static void draw_icon(GtkWidget *widget, SexyIconEntryPosition icon_pos) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); SexyIconInfo *icon_info = &entry->priv->icons[icon_pos]; GdkPixbuf *pixbuf; gint x, y, width, height; if (icon_info->icon == NULL || !GTK_WIDGET_REALIZED(widget)) return; if ((pixbuf = get_pixbuf_from_icon(entry, icon_pos)) == NULL) return; gdk_drawable_get_size(icon_info->window, &width, &height); if (width == 1 || height == 1) { /* * size_allocate hasn't been called yet. These are the default values. */ return; } if (gdk_pixbuf_get_height(pixbuf) > height) { GdkPixbuf *temp_pixbuf; int scale; scale = height - (2 * ICON_MARGIN); temp_pixbuf = gdk_pixbuf_scale_simple(pixbuf, scale, scale, GDK_INTERP_BILINEAR); g_object_unref(pixbuf); pixbuf = temp_pixbuf; } x = (width - gdk_pixbuf_get_width(pixbuf)) / 2; y = (height - gdk_pixbuf_get_height(pixbuf)) / 2; if (icon_info->hovered) { GdkPixbuf *temp_pixbuf; temp_pixbuf = gdk_pixbuf_copy(pixbuf); colorshift_pixbuf(temp_pixbuf, pixbuf, 30); g_object_unref(pixbuf); pixbuf = temp_pixbuf; } gdk_draw_pixbuf(icon_info->window, widget->style->black_gc, pixbuf, 0, 0, x, y, -1, -1, GDK_RGB_DITHER_NORMAL, 0, 0); g_object_unref(pixbuf); } static gint sexy_icon_entry_expose(GtkWidget *widget, GdkEventExpose *event) { SexyIconEntry *entry; g_return_val_if_fail(SEXY_IS_ICON_ENTRY(widget), FALSE); g_return_val_if_fail(event != NULL, FALSE); entry = SEXY_ICON_ENTRY(widget); if (GTK_WIDGET_DRAWABLE(widget)) { gboolean found = FALSE; int i; for (i = 0; i < MAX_ICONS && !found; i++) { SexyIconInfo *icon_info = &entry->priv->icons[i]; if (event->window == icon_info->window) { gint width; GtkAllocation text_area_alloc; get_text_area_size(entry, &text_area_alloc); gdk_drawable_get_size(icon_info->window, &width, NULL); gtk_paint_flat_box(widget->style, icon_info->window, GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE, NULL, widget, "entry_bg", 0, 0, width, text_area_alloc.height); draw_icon(widget, i); found = TRUE; } } if (!found) GTK_WIDGET_CLASS(parent_class)->expose_event(widget, event); } return FALSE; } static void update_icon(GObject *obj, GParamSpec *param, SexyIconEntry *entry) { if (param != NULL) { const char *name = g_param_spec_get_name(param); if (strcmp(name, "pixbuf") && strcmp(name, "stock") && strcmp(name, "image") && strcmp(name, "pixmap") && strcmp(name, "icon_set") && strcmp(name, "pixbuf_animation")) { return; } } gtk_widget_queue_resize(GTK_WIDGET(entry)); } static gint sexy_icon_entry_enter_notify(GtkWidget *widget, GdkEventCrossing *event) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; for (i = 0; i < MAX_ICONS; i++) { if (event->window == entry->priv->icons[i].window) { if (sexy_icon_entry_get_icon_highlight(entry, i)) { entry->priv->icons[i].hovered = TRUE; update_icon(NULL, NULL, entry); break; } } } return FALSE; } static gint sexy_icon_entry_leave_notify(GtkWidget *widget, GdkEventCrossing *event) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; for (i = 0; i < MAX_ICONS; i++) { if (event->window == entry->priv->icons[i].window) { if (sexy_icon_entry_get_icon_highlight(entry, i)) { entry->priv->icons[i].hovered = FALSE; update_icon(NULL, NULL, entry); break; } } } return FALSE; } static gint sexy_icon_entry_button_press(GtkWidget *widget, GdkEventButton *event) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; for (i = 0; i < MAX_ICONS; i++) { if (event->window == entry->priv->icons[i].window) { if (event->button == 1 && sexy_icon_entry_get_icon_highlight(entry, i)) { entry->priv->icons[i].hovered = FALSE; update_icon(NULL, NULL, entry); } g_signal_emit(entry, signals[ICON_PRESSED], 0, i, event->button); return TRUE; } } if (GTK_WIDGET_CLASS(parent_class)->button_press_event) return GTK_WIDGET_CLASS(parent_class)->button_press_event(widget, event); return FALSE; } static gint sexy_icon_entry_button_release(GtkWidget *widget, GdkEventButton *event) { SexyIconEntry *entry = SEXY_ICON_ENTRY(widget); int i; for (i = 0; i < MAX_ICONS; i++) { GdkWindow *icon_window = entry->priv->icons[i].window; if (event->window == icon_window) { int width, height; gdk_drawable_get_size(icon_window, &width, &height); if (event->button == 1 && sexy_icon_entry_get_icon_highlight(entry, i) && event->x >= 0 && event->y >= 0 && event->x <= width && event->y <= height) { entry->priv->icons[i].hovered = TRUE; update_icon(NULL, NULL, entry); } g_signal_emit(entry, signals[ICON_RELEASED], 0, i, event->button); return TRUE; } } if (GTK_WIDGET_CLASS(parent_class)->button_release_event) return GTK_WIDGET_CLASS(parent_class)->button_release_event(widget, event); return FALSE; } /** * sexy_icon_entry_new * * Creates a new SexyIconEntry widget. * * Returns a new #SexyIconEntry. */ GtkWidget * sexy_icon_entry_new(void) { return GTK_WIDGET(g_object_new(SEXY_TYPE_ICON_ENTRY, NULL)); } /** * sexy_icon_entry_set_icon * @entry: A #SexyIconEntry. * @position: Icon position. * @icon: A #GtkImage to set as the icon. * * Sets the icon shown in the entry */ void sexy_icon_entry_set_icon(SexyIconEntry *entry, SexyIconEntryPosition icon_pos, GtkImage *icon) { SexyIconInfo *icon_info; g_return_if_fail(entry != NULL); g_return_if_fail(SEXY_IS_ICON_ENTRY(entry)); g_return_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos)); g_return_if_fail(icon == NULL || GTK_IS_IMAGE(icon)); icon_info = &entry->priv->icons[icon_pos]; if (icon == icon_info->icon) return; if (icon_pos == SEXY_ICON_ENTRY_SECONDARY && entry->priv->icon_released_id != 0) { g_signal_handler_disconnect(entry, entry->priv->icon_released_id); entry->priv->icon_released_id = 0; } if (icon == NULL) { if (icon_info->icon != NULL) { gtk_widget_destroy(GTK_WIDGET(icon_info->icon)); icon_info->icon = NULL; /* * Explicitly check, as the pointer may become invalidated * during destruction. */ if (icon_info->window != NULL && GDK_IS_WINDOW(icon_info->window)) gdk_window_hide(icon_info->window); } } else { if (icon_info->window != NULL && icon_info->icon == NULL) gdk_window_show(icon_info->window); g_signal_connect(G_OBJECT(icon), "notify", G_CALLBACK(update_icon), entry); icon_info->icon = icon; g_object_ref(icon); } update_icon(NULL, NULL, entry); } /** * sexy_icon_entry_set_icon_highlight * @entry: A #SexyIconEntry; * @position: Icon position. * @highlight: TRUE if the icon should highlight on mouse-over * * Determines whether the icon will highlight on mouse-over. */ void sexy_icon_entry_set_icon_highlight(SexyIconEntry *entry, SexyIconEntryPosition icon_pos, gboolean highlight) { SexyIconInfo *icon_info; g_return_if_fail(entry != NULL); g_return_if_fail(SEXY_IS_ICON_ENTRY(entry)); g_return_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos)); icon_info = &entry->priv->icons[icon_pos]; if (icon_info->highlight == highlight) return; icon_info->highlight = highlight; } /** * sexy_icon_entry_get_icon * @entry: A #SexyIconEntry. * @position: Icon position. * * Retrieves the image used for the icon * * Returns: A #GtkImage. */ GtkImage * sexy_icon_entry_get_icon(const SexyIconEntry *entry, SexyIconEntryPosition icon_pos) { g_return_val_if_fail(entry != NULL, NULL); g_return_val_if_fail(SEXY_IS_ICON_ENTRY(entry), NULL); g_return_val_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos), NULL); return entry->priv->icons[icon_pos].icon; } /** * sexy_icon_entry_get_icon_highlight * @entry: A #SexyIconEntry. * @position: Icon position. * * Retrieves whether entry will highlight the icon on mouseover. * * Returns: TRUE if icon highlights. */ gboolean sexy_icon_entry_get_icon_highlight(const SexyIconEntry *entry, SexyIconEntryPosition icon_pos) { g_return_val_if_fail(entry != NULL, FALSE); g_return_val_if_fail(SEXY_IS_ICON_ENTRY(entry), FALSE); g_return_val_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos), FALSE); return entry->priv->icons[icon_pos].highlight; } static void clear_button_clicked_cb(SexyIconEntry *icon_entry, SexyIconEntryPosition icon_pos, int button) { if (icon_pos != SEXY_ICON_ENTRY_SECONDARY || button != 1) return; gtk_entry_set_text(GTK_ENTRY(icon_entry), ""); } /** * sexy_icon_entry_add_clear_button * @icon_entry: A #SexyIconEntry. * * A convenience function to add a clear button to the end of the entry. * This is useful for search boxes. */ void sexy_icon_entry_add_clear_button(SexyIconEntry *icon_entry) { GtkWidget *icon; g_return_if_fail(icon_entry != NULL); g_return_if_fail(SEXY_IS_ICON_ENTRY(icon_entry)); icon = gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU); gtk_widget_show(icon); sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(icon_entry), SEXY_ICON_ENTRY_SECONDARY, GTK_IMAGE(icon)); sexy_icon_entry_set_icon_highlight(SEXY_ICON_ENTRY(icon_entry), SEXY_ICON_ENTRY_SECONDARY, TRUE); if (icon_entry->priv->icon_released_id != 0) { g_signal_handler_disconnect(icon_entry, icon_entry->priv->icon_released_id); } icon_entry->priv->icon_released_id = g_signal_connect(G_OBJECT(icon_entry), "icon_released", G_CALLBACK(clear_button_clicked_cb), NULL); } referencer-1.2.1/src/TagList.C0000664000175000017500000000464412045166737013043 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include #include "TagList.h" #include "Utility.h" #include "Library.h" Tag::Tag(int const uid, const std::string& name) { uid_ = uid; name_ = name; } TagList::TagMap& TagList::getTags () { return tags_; } int TagList::newTag(const std::string& name) { tags_[uidCounter_] = Tag(uidCounter_, name); return uidCounter_++; } void TagList::loadTag(const std::string& name, int uid) { if (tagExists(name)) { DEBUG("Duplicate tag name '%1'", name); } else { tags_[uid] = Tag(uid, name); if (uid >= uidCounter_) uidCounter_ = uid + 1; } } void TagList::renameTag(int uid, const std::string& newname) { tags_[uid].name_ = newname; } void TagList::print () { TagMap::iterator it = tags_.begin(); TagMap::iterator const end = tags_.end(); for (; it != end; it++) { DEBUG((*it).second.uid_ + " " + (*it).second.name_); } } void TagList::deleteTag (int uid) { TagMap::iterator found = tags_.find (uid); if (found == tags_.end()) { DEBUG ("TagList::deleteTag: tried to delete non-existent " "tag %1", uid); } else { tags_.erase (tags_.find (uid)); } } std::string TagList::getName(int uid) { return tags_[uid].name_; } void TagList::writeXML(xmlTextWriterPtr writer) { xmlTextWriterStartElement(writer, CXSTR LIB_ELEMENT_TAGLIST); TagMap::iterator it = tags_.begin(); TagMap::iterator const end = tags_.end(); for (; it != end; it++) { xmlTextWriterStartElement(writer, CXSTR LIB_ELEMENT_TAG); xmlTextWriterWriteFormatElement(writer, CXSTR LIB_ELEMENT_TAG_UID, "%d", (*it).second.uid_); xmlTextWriterWriteElement(writer, CXSTR LIB_ELEMENT_TAG_NAME, CXSTR(*it).second.name_.c_str()); xmlTextWriterEndElement(writer); } xmlTextWriterEndElement(writer); } bool TagList::tagExists(const std::string& name) { TagMap::iterator it = tags_.begin(); TagMap::iterator const end = tags_.end(); for (; it != end; it++) { if (it->second.name_ == name) return true; } return false; } int TagList::getTagUid(const std::string& name) { TagMap::iterator it = tags_.begin(); TagMap::iterator const end = tags_.end(); for (; it != end; it++) { if (it->second.name_ == name) return it->second.uid_; } return -1; } referencer-1.2.1/src/CaseFoldCompare.h0000664000175000017500000000043212042412720014476 00000000000000 #ifndef CASEFOLDCOMPARE_H #define CASEFOLDCOMPARE_H struct casefoldCompare : public std::binary_function { bool operator () ( const Glib::ustring &lhs, const Glib::ustring &rhs ) const { return lhs.casefold() < rhs.casefold(); } }; #endif referencer-1.2.1/src/Library.C0000664000175000017500000004003112042420323013043 00000000000000/* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include "RefWindow.h" #include #include #include #include #include #include "TagList.h" #include "DocumentList.h" #include "Progress.h" #include "Utility.h" #include "Library.h" // // Some private helper functions // using namespace Utility; /** * This is a callback function used in the XML parser to fetch data from a GIO * input stream. * @param context should be a pointer to an open/valid Gio::InputStream. * @return -1 upon failure or the number of bytes actually read. */ static int vfsRead(void * context, char * buffer, int len) { if (!context) return -1; Gio::InputStream *in = (Gio::InputStream*)context; return in->read(buffer, len); } /** * This is a callback function used in the XML parser to close a GIO input * stream. * @param context should be a pointer to an open/valid Gio::InputStream. * @return -1 upon failure, or 0 upon success. */ static int vfsCloseInputStream(void * context) { if (!context) return -1; Gio::InputStream *in = (Gio::InputStream*)context; return in->close() ? 0 : -1; } /** * This is a callback function used in the XML parser to close a GIO output * stream. * @param context should be a pointer to an open/valid Gio::OutputStream. * @return -1 upon failure, or 0 upon success. */ static int vfsCloseOutputStream(void * context) { if (!context) return -1; Gio::OutputStream *in = (Gio::OutputStream*)context; return in->close() ? 0 : -1; } /** * This is a callback function used in the XML parser to write data to a GIO * output stream. * @param context should be a pointer to an open/valid Gio::OutputStream. * @return -1 upon failure or the number of bytes actually written. */ static int vfsWrite(void * context, const char * buffer, int len) { if (!context) return -1; Gio::OutputStream *in = (Gio::OutputStream*)context; return in->write(buffer, len); } /** * Compares the two strings and returns \c true if they equal. * @param strA The first string (note that it is of type const * xmlChar*). * @param strB The second string. * @return */ static inline bool xStrEq(cxStr strA, const char * strB) { return strcmp(strB, CSTR strA) == 0; } /** *

Checks whether the value of the attribute with the given name equals to * 'true'.

* *

If the attribute does not exist or if it misformed then this method will * return the default value (provided in the optional parameter 'def').

*/ static inline bool parseBoolAttr(const xmlNodePtr node, const char* attrName, bool def = false) { xStr text = xmlGetProp(node, CXSTR attrName); def = (!text) ? def : (xStrEq(text, "true") && !xStrEq(text, "false")); xmlFree(text); return def; } /** *

Callbacks of this type are used in the function \ref * forEachChild(xmlNodePtr,LibraryData*) to process all child elements of a * node.

*

This function is called for each child of the parent node

* * @param child The current child. * * @param data The context data object to which to store parsed data. */ typedef void (*forEachChildCallback)(xmlNodePtr child, LibraryData* data); /** * Goes through every child element of the node and calls the func * callback function for each child. */ static inline void forEachChild(xmlNodePtr node, LibraryData* data, forEachChildCallback func) { for (xmlNodePtr child = xmlFirstElementChild(node); child; child = xmlNextElementSibling(child)) { func(child, data); } } /** * Extracts the data from the 'manage target' element in the 'reflib' XML * file. */ static void parseManageTargetElement(xmlNodePtr manageTargetElement, LibraryData* data) { COPY_NODE(data->manage_target_, manageTargetElement); data->manage_braces_ = parseBoolAttr(manageTargetElement, LIB_ATTR_MANAGE_TARGET_BRACES); data->manage_utf8_ = parseBoolAttr(manageTargetElement, LIB_ATTR_MANAGE_TARGET_UTF8); } /** * Extracts the data from the 'library folder' element in the 'reflib' XML * file. */ static void parseLibraryFolderElement(xmlNodePtr libraryFolderElement, LibraryData* data) { COPY_NODE(data->library_folder_uri_, libraryFolderElement); data->library_folder_monitor_ = parseBoolAttr(libraryFolderElement, LIB_ATTR_LIBRARY_FOLDER_MONITOR); } /** * Extracts data from the 'tag' element in the 'reflib' XML * file. */ static void parseTagElement(xmlNodePtr tagElement, LibraryData* data) { if (nodeNameEq(tagElement, LIB_ELEMENT_TAG)) { char *name = NULL; int uid = 0; // The 'foundUid' flag is used to throw an error if it happens that we // have not found an ID for a tag. bool foundUid = false; for (xmlNodePtr child = xmlFirstElementChild(tagElement); child; child = xmlNextElementSibling(child)) { if (nodeNameEq(child, LIB_ELEMENT_TAG_UID)) { COPY_NODE_MAP(uid, child, atoi); foundUid = true; } else if (nodeNameEq(child, LIB_ELEMENT_TAG_NAME) && name == NULL) { name = STR xmlNodeGetContent(child); } } if (name && foundUid) { data->taglist_->loadTag(name, uid); xmlFree(name); } else { throw Glib::MarkupError(Glib::MarkupError::PARSE, _( "Stumbled upon a tag without a name or an id.")); } } } /** * Extracts the data from the 'doc' elements in the 'reflib' XML * file. */ static void parseDocElement(xmlNodePtr docElement, LibraryData* data) { if (nodeNameEq(docElement, LIB_ELEMENT_DOC)) data->doclist_->insertDoc(Document(docElement)); } // // LibraryData implementation // LibraryData::LibraryData() { doclist_ = new DocumentList(); taglist_ = new TagList(); manage_braces_ = false; manage_utf8_ = false; library_folder_monitor_ = false; } LibraryData::~LibraryData() { delete doclist_; delete taglist_; } void LibraryData::clear() { taglist_->clear(); doclist_->clear(); manage_target_ = ""; manage_braces_ = false; manage_utf8_ = false; library_folder_monitor_ = false; library_folder_uri_ = ""; } void LibraryData::extractData(xmlDocPtr libDocument) throw (Glib::Exception) { this->clear(); xmlNodePtr node = xmlDocGetRootElement(libDocument); if (node && node->type == XML_ELEMENT_NODE && nodeNameEq(node, LIB_ELEMENT_LIBRARY)) { for (xmlNodePtr child = xmlFirstElementChild(node); child; child = xmlNextElementSibling(child)) { if (nodeNameEq(child, LIB_ELEMENT_DOCLIST)) { // We have found the 'document list' element. forEachChild(child, this, &parseDocElement); } else if (nodeNameEq(child, LIB_ELEMENT_MANAGE_TARGET)) { // We have found the 'manage target' element. parseManageTargetElement(child, this); } else if (nodeNameEq(child, LIB_ELEMENT_LIBRARY_FOLDER)) { // We have found the 'library folder' element. parseLibraryFolderElement(child, this); } else if (nodeNameEq(child, LIB_ELEMENT_TAGLIST)) { // We have found the 'tag list' element. forEachChild(child, this, &parseTagElement); } } } } // // Library implementation // Library::Library(RefWindow &tagwindow) : tagwindow_(tagwindow) { data = new LibraryData(); } Library::~Library() { delete data; } void Library::writeXML(xmlTextWriterPtr writer) { xmlTextWriterStartElement(writer, XSTR LIB_ELEMENT_LIBRARY); xmlTextWriterStartElement(writer, XSTR LIB_ELEMENT_MANAGE_TARGET); xmlTextWriterWriteAttribute(writer, XSTR LIB_ATTR_MANAGE_TARGET_BRACES, XSTR(data->manage_braces_ ? "true" : "false")); xmlTextWriterWriteAttribute(writer, XSTR LIB_ATTR_MANAGE_TARGET_UTF8, XSTR(data->manage_utf8_ ? "true" : "false")); xmlTextWriterWriteString(writer, XSTR data->manage_target_.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, XSTR LIB_ELEMENT_LIBRARY_FOLDER); xmlTextWriterWriteAttribute(writer, XSTR LIB_ATTR_LIBRARY_FOLDER_MONITOR, XSTR(data->library_folder_monitor_ ? "true" : "false")); xmlTextWriterWriteString(writer, XSTR data->library_folder_uri_.c_str()); xmlTextWriterEndElement(writer); data->taglist_->writeXML(writer); data->doclist_->writeXML(writer); xmlTextWriterEndElement(writer); } bool Library::readXML(Gio::InputStream *inputStream) throw(Glib::Exception) { if (inputStream == NULL) return false; LibraryData* tmpData = NULL; xmlDocPtr libDoc = NULL; try { // Parse the library XML file to get the DOM tree. xmlDocPtr libDoc = xmlReadIO(vfsRead, vfsCloseInputStream, inputStream, NULL, NULL, 0); if (!libDoc) { throw Glib::MarkupError(Glib::MarkupError::PARSE, _( "Could not parse the 'reflib' file.")); } // Fetch the data and store it in a new LibraryData instance. tmpData = new LibraryData(); tmpData->extractData(libDoc); } catch (const Glib::Exception& ex) { DELETE(tmpData) if (libDoc != NULL) xmlFreeDoc(libDoc); throw; } xmlFreeDoc(libDoc); DELETE(this->data); this->data = tmpData; return tmpData != NULL; } void Library::clear() { data->clear(); } /** * Show a dialog prompting the user for a folder in which * to download documents and optionally to monitor for new documents * Returns true if there was a change. */ bool Library::libraryFolderDialog () { Glib::RefPtr xml = Gtk::Builder::create_from_file (Utility::findDataFile ("libraryfolder.ui")); Gtk::FileChooserButton *location; xml->get_widget ("Location", location); Gtk::CheckButton *monitor; xml->get_widget ("AutomaticallyAddDocuments", monitor); Gtk::Dialog *dialog; xml->get_widget ("LibraryFolder", dialog); bool oldMonitorState = data->library_folder_monitor_; Glib::ustring const oldFolder = data->library_folder_uri_; monitor->set_active(data->library_folder_monitor_); location->select_uri(data->library_folder_uri_); dialog->run(); data->library_folder_monitor_ = monitor->get_active(); if (!location->get_uri().empty()) data->library_folder_uri_ = location->get_uri(); DEBUG(data->library_folder_uri_); dialog->hide(); return ((oldMonitorState != data->library_folder_monitor_) || (oldFolder != data->library_folder_uri_)); } // True on success bool Library::load (Glib::ustring const &libfilename) { Glib::RefPtr libfile = Gio::File::create_for_uri (libfilename); Glib::RefPtr fileinfo; try{ fileinfo = libfile->query_info (); } catch (const Gio::Error& ex) { Utility::exceptionDialog(&ex, "opening library '" + libfile->get_parse_name () + "'"); return false; } Progress progress (tagwindow_); progress.start (String::ucompose ( _("Opening %1"), fileinfo->get_display_name ())); try { Glib::RefPtr libfile_is = libfile->read(); // We have opened the file for reading, now try to parse the XML library // file into this->data if (!readXML(libfile_is.operator ->())) { return false; } } catch (const Glib::Exception& ex) { Utility::exceptionDialog(&ex, "opening library '" + fileinfo->get_display_name () + "'"); } DEBUG(String::ucompose("Done, got %1 docs", data->doclist_->getDocs().size())); //XXX: progress calls commented out, since they flush events, //causing the thumbnail generator to run but with invalid filenames // -mchro //progress.update(0.2); int i = 0; DocumentList::Container &docs = data->doclist_->getDocs(); DocumentList::Container::iterator docit = docs.begin(); DocumentList::Container::iterator const docend = docs.end(); for (; docit != docend; ++docit) { //progress.update (0.2 + ((double)(i++) / (double)docs.size ()) * 0.8); if (!docit->getRelFileName().empty()) { Glib::ustring full_filename; full_filename = Glib::build_filename ( Glib::path_get_dirname (libfilename), docit->getRelFileName()); docit->setFileName(full_filename); } } progress.finish (); return true; } // True on success bool Library::save(Glib::ustring const &libfilename) { DEBUG("Saving to %1", libfilename); Glib::RefPtr libfile = Gio::File::create_for_uri (libfilename); DEBUG("Updating relative filenames..."); DocumentList::Container &docs = data->doclist_->getDocs(); DocumentList::Container::iterator docit = docs.begin(); DocumentList::Container::iterator const docend = docs.end(); for (; docit != docend; ++docit) { docit->updateRelFileName(libfilename); } DEBUG("Done."); DEBUG("Generating XML..."); try { Glib::RefPtr oStream = libfile->replace (); xmlOutputBufferPtr outBuf = xmlOutputBufferCreateIO(&vfsWrite, &vfsCloseOutputStream, (Gio::OutputStream*)(oStream.operator ->()), NULL); xmlTextWriterPtr writer = xmlNewTextWriter(outBuf); if (writer) { xmlTextWriterSetIndent(writer, true); xmlTextWriterSetIndentString(writer, CXSTR"\t"); xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); writeXML(writer); xmlTextWriterEndDocument(writer); xmlTextWriterFlush(writer); xmlFreeTextWriter(writer); } else throw Glib::FileError(Glib::FileError::FAILED, _("Could not create an XML writer.")); } catch (const Glib::Exception& ex) { Utility::exceptionDialog(&ex, "Generating 'reflib' XML file '" + libfilename + "'"); return false; } DEBUG("Done."); DEBUG("Writing bibtex, manage_target_ = %1", data->manage_target_); // Having successfully saved the library, write the bibtex if needed if (!data->manage_target_.empty()) { // manage_target_ is either an absolute URI or a relative URI Glib::ustring bibtextarget_uri; if (Glib::uri_parse_scheme(data->manage_target_) != "") //absolute URI bibtextarget_uri = data->manage_target_; else bibtextarget_uri = libfile->get_parent()->resolve_relative_path(data->manage_target_)->get_uri(); DEBUG ("bibtextarget_uri = %1", bibtextarget_uri); std::vector docs; DocumentList::Container &docrefs = data->doclist_->getDocs(); DocumentList::Container::iterator it = docrefs.begin(); DocumentList::Container::iterator const end = docrefs.end(); for (; it != end; it++) { docs.push_back(&(*it)); } try { writeBibtex (bibtextarget_uri, docs, data->manage_braces_, data->manage_utf8_); } catch (Glib::Exception const &ex) { Utility::exceptionDialog (&ex, "writing bibtex to " + bibtextarget_uri); return false; } } DEBUG ("Done."); return true; } void Library::writeBibtex ( Glib::ustring const &biburi, std::vector const &docs, bool const usebraces, bool const utf8) { DEBUG ("Writing BibTex to %1", biburi); Glib::RefPtr bibfile = Gio::File::create_for_uri (biburi); std::ostringstream bibtext; std::vector::const_iterator it = docs.begin (); std::vector::const_iterator const end = docs.end (); for (; it != end; ++it) { (*it)->writeBibtex (*this, bibtext, usebraces, utf8); } try { std::string new_etag; bibfile->replace_contents (bibtext.str(), "", new_etag); } catch (const Gio::Error ex) { Utility::exceptionDialog (&ex, "writing to BibTex file"); return; } } void Library::manageBibtex(Glib::ustring const &target, bool const braces, bool const utf8) { data->manage_target_ = target; data->manage_braces_ = braces; data->manage_utf8_ = utf8; } referencer-1.2.1/src/DocumentView.h0000664000175000017500000001224012045403446014130 00000000000000 /* * Referencer is released under the GNU General Public License v2 * See the COPYING file for licensing details. * * Copyright 2007 John Spray * (Exceptions listed in README) * */ #include #include #include class Document; class Library; class Linker; class RefWindow; class DocumentView : public Gtk::VBox { public: DocumentView (RefWindow &refwin, Library &lib, bool const uselistview); ~DocumentView (); void populateDocStore (); void updateAllDocs (); void updateDoc (Document * const doc); void removeDoc (Document * const doc); void addDoc (Document * doc); void updateVisible (); void clear (); Document *getSelectedDoc (); std::vector getSelectedDocs (); std::vector getVisibleDocs (); int getSelectedDocCount (); int getVisibleDocCount (); class Capabilities { public: // XXX unused field? bool weblink; bool open; bool getmetadata; Capabilities () {weblink = open = getmetadata = false;} }; Capabilities getDocSelectionCapabilities (); typedef enum { NONE = 0, ALL, SOME } SubSet; SubSet selectedDocsHaveTag (int uid); void setUseListView (bool const &list); bool getUseListView () {return uselistview_;} sigc::signal& getSelectionChangedSignal () {return selectionchangedsignal_;} // This is Gtk::Managed so when it gets packed that's it Gtk::Entry &getSearchEntry () {return *searchentry_;} /* Called by linker actions */ void invokeLinker (Linker *linker); void select (Document *document); RefWindow &win_; Library &lib_; Document *hoverdoc_; void popupContextMenu (GdkEventButton* event); void doEditTagsDialog(Document *doc); private: bool ignoreSelectionChanged_; /* The search box */ Gtk::Entry *searchentry_; void onSearchChanged (); friend void end_search (GPtrArray * out_array, GError * error, gpointer user_data); std::list trackerUris_; /* Signal that we fire whenever selection changes in one of our views */ sigc::signal selectionchangedsignal_; /* This is the actual store */ Glib::RefPtr docstore_; /* It's a ListStore-TreeModelFilter-TreeModelSort sandwich! */ Glib::RefPtr docstorefilter_; /* Because treeview expects something descended from a sortable, and filter is not */ Glib::RefPtr docstoresort_; /* The columns, a columnrecord is made in the constructor */ Gtk::TreeModelColumn docpointercol_; Gtk::TreeModelColumn doccaptioncol_; Gtk::TreeModelColumn > docthumbnailcol_; #if GTK_VERSION_GE(2,12) Gtk::TreeModelColumn doctooltipcol_; #endif Gtk::TreeModelColumn dockeycol_; Gtk::TreeModelColumn doctitlecol_; Gtk::TreeModelColumn docauthorscol_; Gtk::TreeModelColumn docyearcol_; Gtk::TreeModelColumn docvisiblecol_; /* Two oh-so-innocuous objects */ Gtk::IconView *docsiconview_; Gtk::TreeView *docslistview_; /* This is only for the list view, iconview has inbuilt selection */ Glib::RefPtr docslistselection_; public: /* Public for the benefit of DocumentCellRenderer */ /* Perform the double-click action on a document */ void docActivate (Document *doc); private: /* Double click on IconView */ void docActivated (const Gtk::TreePath& path); /* Treeviews want a different prototype for the signal */ void docListActivated (const Gtk::TreePath& path, Gtk::TreeViewColumn*) { docActivated (path); } void onDocMouseMotion (GdkEventMotion* event); void redraw (Document *document); Gtk::Menu doccontextmenu_; Gtk::ScrolledWindow *docsiconscroll_; Gtk::ScrolledWindow *docslistscroll_; void docSelectionChanged (); bool isVisible (Document * const doc); void loadRow ( Gtk::TreeModel::iterator item, Document * const doc); bool docClicked (GdkEventButton* event); void onIconsDragData ( const Glib::RefPtr &context, int n1, int n2, const Gtk::SelectionData &sel, guint n3, guint n4); bool uselistview_; void onSortColumnChanged (); void onColumnEdited ( const Glib::ustring& path, const Glib::ustring& newText, const Glib::ustring &columnName); class Column { public: Column (Gtk::TreeModelColumn &modelColumn_, Glib::ustring const &caption_) : modelColumn (modelColumn_), caption(caption_) {} Column (Column const ©) : modelColumn (copy.modelColumn), caption(copy.caption) {} Gtk::TreeModelColumn &modelColumn; Glib::ustring caption; }; class SortAction { public: Glib::ustring name; Glib::RefPtr action; Gtk::UIManager::ui_merge_id merge; }; typedef std::map SortActionMap; SortActionMap sortUI_; Gtk::RadioButtonGroup sortUIGroup_; std::map columns_; void sortActionToggled (SortAction const &action); void populateColumns (); void addColumn ( Glib::ustring const &name, Glib::ustring const &caption, Gtk::TreeModelColumn &modelCol, bool const expand, bool const ellipsize); int sortTitles(const Gtk::TreeModel::iterator& a, const Gtk::TreeModel::iterator& b); }; referencer-1.2.1/src/PythonDocument.h0000664000175000017500000000040112042412720014463 00000000000000 #ifndef PYTHONDOCUMENT_H #define PYTHONDOCUMENT_H #include class Document; /* Does this need to be in the header? */ typedef struct { PyObject_HEAD Document *doc_; } referencer_document; extern PyTypeObject t_referencer_document; #endif referencer-1.2.1/src/DocumentTypes.h0000664000175000017500000000305512042412720014316 00000000000000 #ifndef DOCUMENTTYPES_H #define DOCUMENTTYPES_H #include #include #include #include "CaseFoldCompare.h" #include "Utility.h" class DocumentField { // for the moment internalName is bibtexName and vice versa public: Glib::ustring internalName_; Glib::ustring displayName_; bool shortField_; DocumentField ( Glib::ustring internalName, Glib::ustring displayName, bool shortField) { internalName_ = internalName; displayName_ = displayName; shortField_ = shortField; } DocumentField () {} }; class DocumentType { public: std::vector requiredFields_; std::vector optionalFields_; Glib::ustring bibtexName_; Glib::ustring displayName_; DocumentType () {} DocumentType (Glib::ustring bibtex, Glib::ustring display) {bibtexName_ = bibtex; displayName_ = display;} }; class DocumentTypeManager { public: typedef std::map FieldsMap; typedef std::map TypesMap; private: FieldsMap documentFields_; TypesMap documentTypes_; void registerField ( Glib::ustring internalName, Glib::ustring displayName, bool shortField); void registerType ( DocumentType &type) { documentTypes_[type.bibtexName_] = type; } void addField ( DocumentType &type, Glib::ustring internalName, bool required); public: DocumentTypeManager (); DocumentType getType (Glib::ustring bibtexName); // Not const so that one can [] on it TypesMap &getTypes () {return documentTypes_;} }; #endif referencer-1.2.1/COPYING0000664000175000017500000004310312042412720011604 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. referencer-1.2.1/README0000664000175000017500000000653512150641032011441 00000000000000 Referencer ========== A document organiser and bibliography manager http://icculus.org/referencer/ Need help? http://icculus.org/referencer/introduction.html http://icculus.org/referencer/faq.html There is a mailing list. Send a blank email to referencer-subscribe@icculus.org to subscribe. To post to the list, send messages to referencer@icculus.org. Author: John Spray (jcspray at icculus.org) Building ======== A simple './configure && make' should build the referencer executable, if the dependencies are present. The build dependencies are: g++ poppler-glib gtkmm-2.4 (incl. svg support for GDK eg. librsvg2-common) libgnomeuimm-2.6 gnome-vfsmm-2.6 (incl. http support, eg. libgnomevfs2-extra) libglademm-2.4 gconfmm-2.6 boost_regex intltool gnome-icon-theme python python API yelp gnome-doc-utils On Ubuntu 8.10: sudo apt-get install build-essential libpoppler-glib-dev libgtkmm-2.4-dev libgnomeuimm-2.6-dev libgnome-vfsmm-2.6-dev libglademm-2.4-dev libgconfmm-2.6-dev libboost-dev intltool python-dev gnome-icon-theme librsvg2-common libgnomevfs2-extra libboost-regex-dev gnome-common automake gnome-doc-utils On Ubuntu 6.10 (or 6.06 LTS): sudo apt-get install build-essential libpoppler-glib-dev libgtkmm-2.4-dev libgnomeuimm-2.6-dev libgnome-vfsmm-2.6-dev libglademm-2.4-dev libgconfmm-2.6-dev libboost-dev intltool python-dev gnome-icon-theme librsvg2-common libgnomevfs2-extra On 8.04 you will also require libboost-regex-dev (note that libboost-regex-dev is in the 'universe' repository, which is not enabled in a default Ubuntu install. See https://help.ubuntu.com/ubuntu/desktopguide/C/extra-repositories.html) On Fedora Core 5, you will need to do: yum install gtkmm24-devel libgnomeuimm26-devel gnome-vfsmm26-devel libglademm24-devel gconfmm26-devel poppler-devel gcc-c++ boost-devel python-devel Installing ========== Referencer may be run in-place from the build directory (type src/referencer) for convenient evaluation or testing. Alternatively, it maybe installed systemwide: running 'make install' should install Referencer into the /usr/local prefix by default, use "--prefix /somewhere" when running ./configure to install it elsewhere. Attributions ============ libbibutils is copied from the bibutils 3.27 package, Copyright © Chris Putnam 2005 The wvConvertUnicodeToLaTeX function is based on the function of the same name in the wv library, Copyright © Caolan McNamara, Dom Lachowicz, and others The eel_* functions are copied from libeel, Copyright © 2000 Eazel, Inc. The art_rgb_run_alpha function is copied from libart, Copyright © Raph Levien 1998 The thumbnail_frame.png graphic is copied from Nautilus, Copyright © 2003 Redhat, Inc ucompose.hpp is from the string composition library, Copyright © 2003 Ole Laursen, licensed under the LGPL The ev-tooltip class is Copyright (C) 2004 Red Hat, Inc The sexy-icon-entry class is Copyright (C) 2004-2006 Christian Hammond mozUrlSelectionToUTF8 is derived from gnome-terminal, Copyright 2001 Havoc Pennington The EntryMultiCompletion widget is copied from the gtkmm-utils 0.4.1 package, Copyright © Marko Anastasov 2008 ustring.{cc,h} is copied from the gtkmm-utils 0.4.1 package, Copyright © Dodji Seketeli and Marko Anastasov Apart from the aforementioned items, Referencer is Copyright © 2007 John Spray Referencer is released under the terms of the GNU GPLv2 (see COPYING) referencer-1.2.1/libbibutils/0000775000175000017500000000000012150643001013132 500000000000000referencer-1.2.1/libbibutils/wordout.c0000664000175000017500000003515012042412720014727 00000000000000/* * wordout.c * * (Word 2007 format) * * Copyright (c) Chris Putnam 2007 * * Source code released under the GPL * */ #include #include #include #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "fields.h" #include "utf8.h" #include "wordout.h" typedef struct convert { char oldtag[25]; char newtag[25]; int code; } convert; extern char progname[]; enum { TYPE_UNKNOWN = 0, TYPE_ARTICLE, TYPE_BOOK, TYPE_INBOOK, TYPE_INPROCEEDINGS, TYPE_THESIS, TYPE_MASTERSTHESIS, TYPE_PHDTHESIS, }; /* * fixed output */ static void output_fixed( FILE *outptr, char *tag, char *data, int level ) { int i; for ( i=0; i%s\n", tag, data, tag ); } /* detail output * */ static void output_item( fields *info, FILE *outptr, char *tag, int item, int level ) { int i; if ( item==-1 ) return; for ( i=0; i%s\n", tag, info->data[item].data, tag ); fields_setused( info, item ); } /* range output * * start-end * */ static void output_range( fields *info, FILE *outptr, char *tag, int start, int end, int level ) { int i; if ( start==-1 && end==-1 ) return; if ( start==-1 ) output_item( info, outptr, tag, end, 0 ); else if ( end==-1 ) output_item( info, outptr, tag, start, 0 ); else { for ( i=0; i%s-%s\n", tag, info->data[start].data, info->data[end].data, tag ); fields_setused( info, start ); fields_setused( info, end ); } } static void output_list( fields *info, FILE *outptr, convert *c, int nc ) { int i, n; for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "GENRE" )!=0 && strcasecmp( info->tag[i].data, "NGENRE" )!=0 ) continue; genre = info->data[i].data; if ( !strcasecmp( genre, "periodical" ) || !strcasecmp( genre, "academic journal" ) ) type = TYPE_ARTICLE; else if ( !strcasecmp( genre, "book" ) ) { if ( info->level[i]==0 ) type = TYPE_BOOK; else type = TYPE_INBOOK; } else if ( !strcasecmp( genre, "conference publication" ) ) { /* if ( level==0 ) type=TYPE_PROCEEDINGS;*/ /*else */ type = TYPE_INPROCEEDINGS; } else if ( !strcasecmp( genre, "theses" ) ) { if ( type==TYPE_UNKNOWN ) type=TYPE_THESIS; } else if ( !strcasecmp( genre, "Ph.D. thesis" ) ) type = TYPE_PHDTHESIS; else if ( !strcasecmp( genre, "Masters thesis" ) ) type = TYPE_MASTERSTHESIS; } return type; } static void output_titleinfo( fields *info, FILE *outptr, char *tag, int level ) { char *p; int ttl, subttl; ttl = fields_find( info, "TITLE", level ); subttl = fields_find( info, "SUBTITLE", level ); if ( ttl!=-1 || subttl!=-1 ) { fprintf( outptr, "<%s>", tag ); if ( ttl!=-1 ) { fprintf( outptr, "%s", info->data[ttl].data ); fields_setused( info, ttl ); } if ( subttl!=-1 ) { if ( ttl!=-1 ) { p = info->data[ttl].data; if ( p[info->data[ttl].len-1]!='?' ) fprintf( outptr, ":" ); fprintf( outptr, " " ); } fprintf( outptr, "%s", info->data[subttl].data ); fields_setused( info, subttl ); } fprintf( outptr, "\n", tag ); } } static void output_title( fields *info, FILE *outptr, int level ) { int ttl = fields_find( info, "TITLE", level ); int subttl = fields_find( info, "SUBTITLE", level ); int shrttl = fields_find( info, "SHORTTITLE", level ); output_titleinfo( info, outptr, "b:Title", 0 ); /* output shorttitle if it's different from normal title */ if ( shrttl!=-1 ) { if ( ttl==-1 || subttl!=-1 || strcmp(info->data[ttl].data,info->data[shrttl].data) ) { fprintf( outptr, " " ); fprintf( outptr, "%s", info->data[shrttl].data ); fprintf( outptr, "\n" ); } fields_setused( info, shrttl ); } } static void output_name( FILE *outptr, char *p, int level ) { newstr family, part; int n=0, npart=0; newstr_init( &family ); while ( *p && *p!='|' ) newstr_addchar( &family, *p++ ); if ( *p=='|' ) p++; if ( family.len ) { fprintf( outptr, "" ); fprintf( outptr, "%s",family.data ); n++; } newstr_free( &family ); newstr_init( &part ); while ( *p ) { while ( *p && *p!='|' ) newstr_addchar( &part, *p++ ); if ( part.len ) { if ( n==0 ) fprintf( outptr, "" ); if ( npart==0 ) fprintf( outptr, "%s", part.data ); else fprintf( outptr, "%s", part.data ); n++; npart++; } if ( *p=='|' ) { p++; newstr_empty( &part ); } } if ( n ) fprintf( outptr, "\n" ); newstr_free( &part ); } #define NAME (1) #define NAME_ASIS (2) #define NAME_CORP (4) static void output_name_type( fields *info, FILE *outptr, int level, convert *map, int nmap, char *tag ) { int i, n; fprintf( outptr, "<%s>\n", tag ); for ( n=0; nnfields; ++i ) { if ( strcasecmp(info->tag[i].data,map[n].oldtag) ) continue; if ( map[n].code & NAME_ASIS || map[n].code & NAME_CORP ) { fprintf( outptr, "" ); fprintf( outptr, "%s", info->data[i].data ); fprintf( outptr, "\n" ); } else { output_name(outptr, info->data[i].data, level); } fields_setused( info, i ); } } fprintf( outptr, "\n", tag ); } static void output_names( fields *info, FILE *outptr, int level ) { convert authors[] = { { "AUTHOR", "author", NAME }, { "AUTHOR:ASIS", "author", NAME_ASIS }, { "AUTHOR:CORP", "author", NAME_CORP }, { "WRITER", "author", NAME }, { "WRITER:ASIS", "author", NAME_ASIS }, { "WRITER:CORP", "author", NAME_CORP }, { "ASSIGNEE", "author", NAME }, { "ASSIGNEE:ASIS","author", NAME_ASIS }, { "ASSIGNEE:CORP","author", NAME_CORP }, { "ARTIST", "artist", NAME }, { "ARTIST:ASIS", "artist", NAME_ASIS }, { "ARTIST:CORP", "artist", NAME_CORP }, { "CARTOGRAPHER", "cartographer", NAME }, { "CARTOGRAPHER:ASIS", "cartographer", NAME_ASIS}, { "CARTOGRAPHER:CORP", "cartographer", NAME_CORP}, { "INVENTOR", "inventor", NAME }, { "INVENTOR:ASIS","inventor", NAME_ASIS}, { "INVENTOR:CORP","inventor", NAME_CORP}, { "ORGANIZER", "organizer of meeting", NAME }, { "ORGANIZER:ASIS","organizer of meeting",NAME_ASIS }, { "ORGANIZER:CORP","organizer of meeting",NAME_CORP }, { "DIRECTOR", "director", NAME }, { "DIRECTOR:ASIS","director", NAME_ASIS }, { "DIRECTOR:CORP","director", NAME_CORP }, { "PERFORMER", "performer", NAME }, { "PERFORMER:ASIS","performer", NAME_ASIS }, { "PERFORMER:CORP","performer", NAME_CORP }, { "REPORTER", "reporter", NAME }, { "REPORTER:ASIS","reporter", NAME_ASIS }, { "REPORTER:CORP","reporter", NAME_CORP }, { "TRANSLATOR", "translator", NAME }, { "DIRECTOR", "director", NAME }, { "DIRECTOR:ASIS","director", NAME_ASIS }, { "DIRECTOR:CORP","director", NAME_CORP }, { "PERFORMER", "performer", NAME }, { "PERFORMER:ASIS","performer", NAME_ASIS }, { "PERFORMER:CORP","performer", NAME_CORP }, { "TRANSLATOR", "translator", NAME }, { "TRANSLATOR:ASIS", "translator",NAME_ASIS }, { "TRANSLATOR:CORP", "translator",NAME_CORP }, { "RECIPIENT", "recipient", NAME }, { "RECIPIENT:ASIS","recipient", NAME_ASIS }, { "RECIPIENT:CORP","recipient", NAME_CORP }, { "2ND_AUTHOR", "author", NAME }, { "2ND_AUTHOR:ASIS","author", NAME_ASIS }, { "2ND_AUTHOR:CORP","author", NAME_CORP }, { "3RD_AUTHOR", "author", NAME }, { "3RD_AUTHOR:ASIS","author", NAME_ASIS }, { "3RD_AUTHOR:CORP","author", NAME_CORP }, { "SUB_AUTHOR", "author", NAME }, { "SUB_AUTHOR:ASIS","author", NAME_ASIS }, { "COMMITTEE", "author", NAME_CORP }, { "COURT", "author", NAME_CORP }, { "LEGISLATIVEBODY", "author", NAME_CORP } }; int nauthors = sizeof( authors ) / sizeof( convert ); convert editors[] = { { "EDITOR", "editor", NAME }, { "EDITOR:ASIS", "editor", NAME_ASIS }, { "EDITOR:CORP", "editor", NAME_CORP }, }; int neditors = sizeof( editors ) / sizeof( convert ); fprintf( outptr, "\n" ); output_name_type( info, outptr, level, authors, nauthors, "b:Author" ); output_name_type( info, outptr, level, editors, neditors, "b:Editor" ); fprintf( outptr, "\n" ); } static void output_date( fields *info, FILE *outptr, int level ) { convert parts[3] = { { "PARTYEAR", "b:Year", -1 }, { "PARTMONTH", "b:Month", -1 }, { "PARTDAY", "b:Day", -1 } }; convert fulls[3] = { { "YEAR", "", -1 }, { "MONTH", "", -1 }, { "DAY", "", -1 } }; int i, np, nf; for ( i=0; i<3; ++i ) { np = fields_find( info, parts[i].oldtag, level ); nf = fields_find( info, fulls[i].oldtag, level ); if ( np!=-1 ) output_item( info, outptr, parts[i].newtag, np, 0 ); else if ( nf!=-1 ) output_item( info, outptr, parts[i].newtag, nf, 0 ); } } static void output_pages( fields *info, FILE *outptr, int level ) { int start = fields_find( info, "PAGESTART", -1 ); int end = fields_find( info, "PAGEEND", -1 ); int ar = fields_find( info, "ARTICLENUMBER", -1 ); if ( start!=-1 || end!=-1 ) output_range( info, outptr, "b:Pages", start, end, level ); else if ( ar!=-1 ) output_range( info, outptr, "b:Pages", ar, -1, level ); } static void output_includedin( fields *info, FILE *outptr, int type ) { if ( type==TYPE_ARTICLE ) { output_titleinfo( info, outptr, "b:JournalName", 1 ); } else if ( type==TYPE_INBOOK ) { output_titleinfo( info, outptr, "b:ConferenceName", 1 ); /*??*/ } else if ( type==TYPE_INPROCEEDINGS ) { output_titleinfo( info, outptr, "b:ConferenceName", 1 ); } } static int type_is_thesis( int type ) { if ( type==TYPE_THESIS || type==TYPE_PHDTHESIS || type==TYPE_MASTERSTHESIS ) return 1; else return 0; } static void output_thesisdetails( fields *info, FILE *outptr, int type ) { int i; if ( type==TYPE_PHDTHESIS ) output_fixed( outptr, "b:ThesisType", "Ph.D. Thesis", 0 ); else if ( type==TYPE_MASTERSTHESIS ) output_fixed( outptr, "b:ThesisType", "Masters Thesis", 0 ); for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "DEGREEGRANTOR" ) && strcasecmp( info->tag[i].data, "DEGREEGRANTOR:ASIS") && strcasecmp( info->tag[i].data, "DEGREEGRANTOR:CORP")) continue; output_item( info, outptr, "b:Institution", i, 0 ); } } static void output_type( fields *info, FILE *outptr, int type ) { fprintf( outptr, "" ); if ( type==TYPE_UNKNOWN || type==TYPE_BOOK ) fprintf( outptr, "Book" ); else if ( type==TYPE_INBOOK ) fprintf( outptr, "BookSection" ); else if ( type==TYPE_ARTICLE ) fprintf( outptr, "JournalArticle" ); else if ( type==TYPE_INPROCEEDINGS ) fprintf( outptr, "ConferenceProceedings" ); else if ( type_is_thesis( type ) ) fprintf( outptr, "Report" ); fprintf( outptr, "\n" ); if ( type_is_thesis( type ) ) output_thesisdetails( info, outptr, type ); } static void output_comments( fields *info, FILE *outptr, int level ) { int i, written=0; int nabs = fields_find( info, "ABSTRACT", level ); if ( nabs!=-1 ) { fprintf( outptr, "" ); fprintf( outptr, "%s", info->data[nabs].data ); written = 1; } for ( i=0; infields; ++i ) { if ( info->level[i]!=level ) continue; if ( strcasecmp( info->tag[i].data, "NOTES" ) ) continue; if ( !written ) { fprintf( outptr, "" ); written = 1; } fprintf( outptr, "%s", info->data[i].data ); } if ( written ) fprintf( outptr, "\n" ); } static void output_bibkey( fields *info, FILE *outptr ) { int n = fields_find( info, "REFNUM", -1 ); if ( n==-1 ) n = fields_find( info, "BIBKEY", -1 ); output_item( info, outptr, "b:Tag", n, 0 ); } static void output_citeparts( fields *info, FILE *outptr, int level, int max, int type ) { convert origin[] = { { "ADDRESS", "b:City", -1 }, { "PUBLISHER", "b:Publisher", -1 }, { "EDITION", "b:Edition", -1 } }; int norigin = sizeof( origin ) / sizeof ( convert ); convert parts[] = { { "VOLUME", "b:Volume", -1 }, { "SECTION", "b:Section", -1 }, { "ISSUE", "b:Issue", -1 }, { "NUMBER", "b:Issue", -1 }, { "PUBLICLAWNUMBER", "b:Volume", -1 }, { "SESSION", "b:Issue", -1 }, }; int nparts=sizeof(parts)/sizeof(convert); output_bibkey( info, outptr ); output_type( info, outptr, type ); output_list( info, outptr, origin, norigin ); output_date( info, outptr, level ); output_includedin( info, outptr, type ); output_list( info, outptr, parts, nparts ); output_pages( info, outptr, level ); output_names( info, outptr, level); output_title( info, outptr, level ); output_comments( info, outptr, level ); } void wordout_write( fields *info, FILE *outptr, int format_opts, unsigned long numrefs ) { int max = fields_maxlevel( info ); int type = get_type( info ); /* int i, dropkey = ( format_opts & WORDOUT_DROPKEY );*/ fprintf( outptr, "\n" ); output_citeparts( info, outptr, -1, max, type ); /* for ( i=0; infields; ++i ) { if ( !info->used[i] ) { fprintf( stderr, "%s warning: ref %ld " "unused tag: '%s' " "value: '%s' level: %d\n", progname, numrefs+1, info->tag[i].data, info->data[i].data, info->level[i] ); } } */ fprintf( outptr, "\n" ); fflush( outptr ); } static void writebom( FILE *outptr ) { int i, nc; unsigned char code[6]; nc = utf8_encode( 0xFEFF, code ); for ( i=0; i\n"); fprintf(outptr,"\n"); } void wordout_writefooter( FILE *outptr ) { fprintf(outptr,"\n"); fflush( outptr ); } referencer-1.2.1/libbibutils/lists.h0000664000175000017500000000123012042412720014357 00000000000000/* * lists.h * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef LISTS_H #define LISTS_H #include #include #include #include "newstr.h" typedef struct lists { int n, max; newstr *str; } lists; extern void lists_init( lists *a ); extern int lists_add( lists *a, char *value ); extern int lists_find( lists *a, char *searchstr ); extern void lists_empty( lists *a ); extern void lists_free( lists *a ); extern int lists_fill( lists *a, char *filename ); extern newstr* lists_getstr( lists *a, int n ); extern char* lists_getcharptr( lists *a, int n ); #endif referencer-1.2.1/libbibutils/name.c0000664000175000017500000001645212042412720014150 00000000000000/* * name.c * * mangle names w/ and w/o commas * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #include #include #include #include "is_ws.h" #include "newstr.h" #include "fields.h" #include "lists.h" #include "name.h" static void check_case( char *start, char *end, int *upper, int *lower ) { int u = 0, l = 0; char *p = start; while ( p < end ) { if ( islower( *p ) ) l = 1; else if ( isupper( *p ) ) u = 1; p++; } *upper = u; *lower = l; } static int should_split( int upperlast, int lowerlast, int upperfirst, int lowerfirst ) { if ( ( upperlast && lowerlast ) && ( upperfirst && !lowerfirst ) ) return 1; else return 0; } /* name_addmultibytechar * * Add character to newstring s starting at pointer p. * * Handles the case for multibyte Unicode chars (with high bits * set). Do not progress past the lastp barrier. * * Since we can progress more than one byte in the string, * return the properly updated pointer p. */ static char * name_addmultibytechar( newstr *s, char *p, char *lastp ) { if ( ! ((*p) & 128) ) { newstr_addchar( s, *p ); p++; } else { while ( p!=lastp && ((*p) & 128) ) { newstr_addchar( s, *p ); p++; } } return p; } /* name_nocomma() * * names in the format "H. F. Author" */ void name_nocomma( char *start, newstr *outname ) { char *p, *last, *end; int uplast, lowlast, upfirst, lowfirst, splitfirst; /* move to end */ p = start; while ( *p && *(p+1) ) p++; /* point to last name */ end = p; while ( p>start && !is_ws( *p ) ) p--; if ( !strcasecmp( p, "Jr." ) || !strcasecmp( p, "III" ) ) { while ( p>start && is_ws( *p ) ) p--; while ( p>start && !is_ws( *p ) ) p--; } last = p; while ( is_ws( *p ) ) p++; /* look for upper and lower case in last name */ check_case( p, end+1, &uplast, &lowlast ); /* copy last name */ while ( p<=end ) newstr_addchar( outname, *p++ ); if ( start==last ) return; /*Only last name */ /* Given names */ newstr_addchar( outname, '|' ); /* look for upper and lower case in given name(s) */ check_case( start, last, &upfirst, &lowfirst ); splitfirst = should_split( uplast, lowlast, upfirst, lowfirst ); /* copy given name(s), splitfirst to identify cases of "HF Author" */ p = start; while ( p!=last ) { if ( *p!=' ' && *p!='\t' ) { if ( !(splitfirst && ( *p=='.' || *p=='-' ) ) ) { p = name_addmultibytechar( outname, p, last ); if ( splitfirst ) newstr_addchar(outname,'|'); } else p++; } else { while ( p!=last && ( *p==' ' || *p=='\t' ) ) p++; if ( p!=last && !splitfirst ) newstr_addchar( outname, '|' ); } } } /* * name_comma() * * names in the format "Author, H.F.", w/comma */ void name_comma( char *p, newstr *outname ) { char *q; int uplast, lowlast, upfirst, lowfirst, splitfirst; q = p; while ( *q && ( *q!=',' ) ) q++; check_case( p, q, &uplast, &lowlast ); while ( *p && ( *p!=',' ) ) newstr_addchar( outname, *p++ ); if ( *p==',' ) p++; while ( *p && is_ws( *p ) ) p++; q = p; while ( *q ) q++; check_case( p, q, &upfirst, &lowfirst ); splitfirst = should_split( uplast, lowlast, upfirst, lowfirst ); if ( !*p ) return; /* Only last name */ /* add each part of the given name */ newstr_addchar( outname, '|' ); /* splitfirst to identify cases of Author, HF */ while ( *p ) { if ( !is_ws( *p ) ) { if ( ! (splitfirst && ( *p=='.' || *p=='-' ) ) ) { p=name_addmultibytechar(outname,p,NULL); if ( splitfirst ) newstr_addchar( outname, '|' ); } else p++; } else if ( *(p+1)!='\0' ) { if ( !splitfirst ) newstr_addchar( outname, '|' ); p++; } else p++; } } extern lists asis; extern lists corps; /* Determine if name is of type "corporate" or if it * should be added "as-is"; both should not be mangled. * * First check tag for prefixes ":CORP" and ":ASIS", * then optionally check lists, bailing if "corporate" * type can be identified. * * "corporate" is the same as "as-is" plus getting * special MODS treatment, so "corporate" type takes * priority */ static void name_determine_flags( int *ctf, int *clf, int *atf, int *alf, char *tag, char *data ) { int corp_tag_flag = 0, corp_list_flag = 0; int asis_tag_flag = 0, asis_list_flag = 0; if ( strstr( tag, ":CORP" ) ) corp_tag_flag = 1; else if ( lists_find( &corps, data ) != -1 ) corp_list_flag = 1; if ( strstr( tag, ":ASIS" ) ) { asis_tag_flag = 1; if ( lists_find( &corps, data ) != -1 ) corp_list_flag = 1; } else { if ( lists_find( &corps, data ) != -1 ) corp_list_flag = 1; else if ( lists_find( &asis, data ) != -1 ) asis_list_flag = 1; } *ctf = corp_tag_flag; *clf = corp_list_flag; *atf = asis_tag_flag; *alf = asis_list_flag; } /* * return 1 on a nomangle with a newtag value * return 0 on a name to mangle */ static int name_nomangle( char *tag, char *data, newstr *newtag ) { int corp_tag_flag = 0, corp_list_flag = 0; int asis_tag_flag = 0, asis_list_flag = 0; name_determine_flags( &corp_tag_flag, &corp_list_flag, &asis_tag_flag, &asis_list_flag, tag, data ); if ( corp_tag_flag || corp_list_flag || asis_tag_flag || asis_list_flag ) { newstr_strcpy( newtag, tag ); if ( corp_tag_flag ) { /* do nothing else */ } else if ( corp_list_flag && !asis_tag_flag ) { newstr_strcat( newtag, ":CORP" ); } else if ( corp_list_flag && asis_tag_flag ) { newstr_findreplace( newtag, ":ASIS", ":CORP" ); } else if ( asis_tag_flag ) { /* do nothing else */ } else if ( asis_list_flag ) { newstr_strcat( newtag, ":ASIS" ); } return 1; } else return 0; } static void name_process( fields *info, char *tag, int level, newstr *inname ) { newstr newtag, outname; newstr_init( &newtag ); newstr_init( &outname ); if ( name_nomangle( tag, inname->data, &newtag ) ) { fields_add( info, newtag.data, inname->data, level ); } else { newstr_findreplace( inname, ".", ". " ); if ( strchr( inname->data, ',' ) ) name_comma( inname->data, &outname ); else name_nocomma( inname->data, &outname ); if ( outname.len!=0 ) { fields_add( info, tag, outname.data, level ); } } newstr_free( &newtag ); newstr_free( &outname ); } /* * name_add( info, newtag, data, level ) * * take name(s) in data, multiple names should be separated by * '|' characters and divide into individual name, e.g. * "H. F. Author|W. G. Author|Q. X. Author" * * for each name, compare to names in the "as is" or "corporation" * lists...these are not personal names and should be added to the * bibliography fields directly and should not be mangled * * for each personal name, send to appropriate algorithm depending * on if the author name is in the format "H. F. Author" or * "Author, H. F." */ void name_add( fields *info, char *tag, char *q, int level ) { newstr inname; char *p, *start, *end; if ( !q ) return; newstr_init( &inname ); while ( *q ) { /* strip leading whitespace */ while ( is_ws( *q ) ) q++; start = q; /* strip tailing whitespace and commas */ while ( *q && *q!='|' ) q++; end = q; while ( is_ws( *end ) || *end==',' || *end=='|' || *end=='\0' ) end--; for ( p=start; p<=end; p++ ) newstr_addchar( &inname, *p ); /* keep "names" like " , " from coredumping program */ if ( inname.len ) { name_process( info, tag, level, &inname ); newstr_empty( &inname ); } if ( *q=='|' ) q++; } newstr_free( &inname ); } referencer-1.2.1/libbibutils/bibl.h0000664000175000017500000000064012042412720014135 00000000000000/* * bibl.h * * Copyright (c) Chris Putnam 2005-7 * */ #ifndef BIBL_H #define BIBL_H #include #include "newstr.h" #include "fields.h" #include "reftypes.h" typedef struct { long nrefs; long maxrefs; fields **ref; } bibl; extern void bibl_init( bibl *b ); extern void bibl_addref( bibl *b, fields *ref ); extern void bibl_free( bibl *b ); extern void bibl_copy( bibl *bout, bibl *bin ); #endif referencer-1.2.1/libbibutils/newstr.h0000664000175000017500000000273112042412720014552 00000000000000/* * newstring.h * * Copyright (c) Chris Putnam 1999-2007 * * Source code released under the GPL * */ #ifndef NEWSTR_H #define NEWSTR_H #include typedef struct newstr { char *data; unsigned long dim; unsigned long len; } newstr; newstr *newstr_new ( void ); void newstr_init ( newstr *string ); void newstr_free ( newstr *string ); void newstr_addchar ( newstr *string, char newchar ); void newstr_strcat ( newstr *string, char *addstr ); void newstr_segcat ( newstr *string, char *startat, char *endat ); void newstr_prepend ( newstr *string, char *addstr ); void newstr_strcpy ( newstr *string, char *addstr ); void newstr_newstrcpy ( newstr *s, newstr *old ); void newstr_segcpy ( newstr *string, char *startat, char *endat ); void newstr_segdel ( newstr *string, char *startat, char *endat ); void newstr_fprintf ( FILE *fp, newstr *string ); int newstr_fget ( FILE *fp, char *buf, int bufsize, int *pbufpos, newstr *outs ); int newstr_findreplace ( newstr *string, char *find, char *replace ); void newstr_empty ( newstr *string ); void newstr_toupper ( newstr *s ); void newstr_trimendingws( newstr *s ); void newstr_swapstrings ( newstr *s1, newstr *s2 ); /* NEWSTR_PARANOIA * * set to clear memory before it is freed or reallocated * note that this is slower...may be important if string * contains sensitive information */ #undef NEWSTR_PARANOIA #endif referencer-1.2.1/libbibutils/medin.h0000664000175000017500000000110612042412720014317 00000000000000/* * medin.h * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #ifndef MEDIN_H #define MEDIN_H #include "newstr.h" #include "fields.h" #include "reftypes.h" extern int medin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int medin_processf( fields *medin, char *data, char *filename, long nref ); extern void medin_convertf( fields *medin, fields *info, int reftype, int verbose, variants *all, int nall ); extern variants med_all[]; extern int med_nall; #endif referencer-1.2.1/libbibutils/wordout.h0000664000175000017500000000076612042412720014741 00000000000000/* * wordout.h * * Copyright (c) Chris Putnam 2007 * * Source code released under the GPL * */ #ifndef WORDOUT_H #define WORDOUT_H /* format-specific options */ #define WORDOUT_DROPKEY (2) #define WORDOUT_BOM (4) #include #include #include "bibl.h" extern void wordout_writeheader( FILE *outptr, int unicode ); extern void wordout_writefooter( FILE *outptr ); extern void wordout_write( fields *info, FILE *outptr, int format_opts, unsigned long numrefs ); #endif referencer-1.2.1/libbibutils/lists.c0000664000175000017500000000406612042412720014364 00000000000000/* * lists.c * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * * Implements a simple managed array of newstrs. * */ #include "lists.h" static int lists_alloc( lists *a ) { int i, min_alloc = 20; a->str = ( newstr* ) malloc( sizeof( newstr ) * min_alloc ); if ( !(a->str) ) return 0; a->max = min_alloc; a->n = 0; for ( i=0; istr[i]) ); return 1; } static int lists_realloc( lists *a ) { newstr *nd; int i, min_alloc = a->max * 2; nd = ( newstr* ) realloc( a->str, sizeof( newstr ) * min_alloc ); if ( !nd ) return 0; a->max = min_alloc; a->str = nd; for ( i=a->n; imax; ++i ) newstr_init( &(a->str[i]) ); return 1; } int lists_add( lists *a, char *value ) { int ok = 1; /* ensure sufficient space */ if ( a->max==0 ) ok = lists_alloc( a ); else if ( a->n >= a->max ) ok = lists_realloc( a ); if ( ok ) { newstr_strcpy( &(a->str[a->n]), value ); a->n++; } return ok; } newstr * lists_getstr( lists *a, int n ) { if ( n<0 || n>a->n ) return NULL; else return &(a->str[n]); } char * lists_getcharptr( lists *a, int n ) { if ( n<0 || n>a->n ) return NULL; else return a->str[n].data; } void lists_empty( lists *a ) { int i; for ( i=0; imax; ++i ) newstr_empty( &(a->str[i]) ); a->n = 0; } void lists_free( lists *a ) { int i; for ( i=0; imax; ++i ) newstr_free( &(a->str[i]) ); free( a->str ); lists_init( a ); } void lists_init( lists *a ) { a->str = NULL; a->max = 0; a->n = 0; } int lists_find( lists *a, char *searchstr ) { int i; for ( i=0; in; ++i ) if ( !strcmp(a->str[i].data,searchstr) ) return i; return -1; } int lists_fill( lists *a, char *filename ) { newstr line; FILE *fp; char *p; char buf[512]=""; int bufpos = 0; fp = fopen( filename, "r" ); if ( !fp ) return 0; lists_init( a ); newstr_init( &line ); while ( newstr_fget( fp, buf, sizeof(buf), &bufpos, &line ) ) { p = &(line.data[0]); if ( *p=='\0' ) continue; if ( !lists_add( a, line.data ) ) return 0; } newstr_free( &line ); fclose( fp ); return 1; } referencer-1.2.1/libbibutils/strsearch.h0000664000175000017500000000033412042412720015223 00000000000000/* * strsearch.h * * Copyright (c) Chris Putnam 1995-2007 * * Source code released under the GPL * */ #ifndef STRSEARCH_H #define STRSEARCH_H char *strsearch (const char *haystack, const char *needle); #endif referencer-1.2.1/libbibutils/endout.h0000664000175000017500000000030412042412720014520 00000000000000/* * endout.h * * Copyright (c) Chris Putnam 2005-7 */ #ifndef ENDOUT_H #define ENDOUT_H extern void endout_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ); #endif referencer-1.2.1/libbibutils/endtypes.c0000664000175000017500000011613612042412720015063 00000000000000/* * endtypes.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include #include #include "is_ws.h" #include "fields.h" #include "reftypes.h" /* if no specific type can be identified */ static lookups generic[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%J", "TITLE", TITLE, LEVEL_HOST }, /* for refer formats */ { "%E", "2ND_AUTHOR",PERSON, LEVEL_MAIN }, { "%B", "2ND_TITLE", SIMPLE, LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST }, { "%N", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%&", "SECTION", SIMPLE, LEVEL_MAIN }, { "%Y", "3RD_AUTHOR", PERSON, LEVEL_MAIN }, { "%S", "3RD_TITLE", SIMPLE, LEVEL_MAIN }, { "%7", "EDITION", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%?", "SUB_AUTHOR", PERSON, LEVEL_MAIN }, /* subsidiary-authors */ { "%!", "SHORTTITLE", TITLE, LEVEL_MAIN }, { "%@", "SERIALNUM", SERIALNO, LEVEL_MAIN }, { "%(", "ORIGINALPUB", SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%*", "REVIEWEDITEM", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER", SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN } }; static lookups journalarticle[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "PARTYEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%J", "TITLE", TITLE, LEVEL_HOST }, /* journal title */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* journal title */ { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%N", "ISSUE", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "%8", "PARTMONTH", DATE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO, LEVEL_HOST }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%*", "REVIEWEDITEM",SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical", ALWAYS, LEVEL_HOST }, { " ", "GENRE|academic journal", ALWAYS, LEVEL_HOST } }; static lookups magazinearticle[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "PARTYEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE", TITLE, LEVEL_MAIN }, { "%J", "TITLE", TITLE, LEVEL_HOST }, /* magazine name */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* magazine name */ { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME", SIMPLE, LEVEL_MAIN }, { "%N", "ISSUE", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "%8", "PARTMONTH", DATE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO,LEVEL_HOST }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%*", "REVIEWEDITEM",SIMPLE,LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical", ALWAYS, LEVEL_HOST }, { " ", "GENRE|magazine", ALWAYS, LEVEL_HOST } }; static lookups newspaperarticle[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "REPORTER", PERSON, LEVEL_MAIN }, { "%D", "PARTYEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%J", "TITLE", TITLE, LEVEL_HOST }, /* newspaper name */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* newspaper name */ { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%N", "ISSUE", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%7", "EDITION", SIMPLE, LEVEL_MAIN }, { "%8", "PARTMONTH", DATE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE, LEVEL_MAIN }, { "%*", "REVIEWEDITEM",SIMPLE,LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN }, { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|newspaper", ALWAYS, LEVEL_HOST } }; static lookups book[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "AUTHOR", PERSON, LEVEL_HOST }, /* SERIES_AUTHOR */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* SERIES_TITLE */ { "%S", "TITLE", TITLE, LEVEL_SERIES }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_MAIN }, { "%P", "TOTALPAGES", SIMPLE,LEVEL_MAIN }, { "%7", "EDITION", SIMPLE, LEVEL_MAIN }, { "%?", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "GENRE|book", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN } }; static lookups booksection[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_HOST }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "EDITOR", PERSON, LEVEL_HOST }, /* editor for book */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* book title */ { "%C", "ADDRESS", SIMPLE, LEVEL_HOST }, { "%I", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%Y", "EDITOR", PERSON, LEVEL_SERIES }, { "%S", "TITLE", TITLE, LEVEL_SERIES }, { "%7", "EDITION", SIMPLE, LEVEL_HOST }, { "%?", "TRANSLATOR",PERSON, LEVEL_HOST }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO, LEVEL_HOST }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_HOST }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "GENRE|book", ALWAYS, LEVEL_HOST }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN } }; static lookups editedbook[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "EDITOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "EDITOR", PERSON, LEVEL_HOST }, /* SERIES_EDITOR */ { "%B", "TITLE", TITLE, LEVEL_HOST }, /* SERIES_TITLE */ { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST }, { "%P", "TOTALPAGES", SIMPLE,LEVEL_MAIN }, { "%7", "EDITION", SIMPLE, LEVEL_MAIN }, { "%?", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "GENRE|book", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN } }; static lookups manuscript[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE", TITLE, LEVEL_MAIN }, { "%B", "TITLE", TITLE, LEVEL_HOST }, /* COLLECTION_TITLE */ { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%N", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN}, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|manuscript", ALWAYS, LEVEL_MAIN } }; static lookups communication[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "RECIPIENT", PERSON, LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN}, { " ", "GENRE|communication", ALWAYS, LEVEL_MAIN} }; static lookups proceedings[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_HOST }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "EDITOR", PERSON, LEVEL_MAIN }, { "%B", "TITLE", SIMPLE, LEVEL_HOST }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST }, { "%N", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%Y", "EDITOR", PERSON, LEVEL_HOST }, /* SERIES_EDITOR */ { "%S", "TITLE", TITLE, LEVEL_HOST+1 }, /* SERIES_TITLE */ { "%7", "EDITION", SIMPLE, LEVEL_HOST }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE,LEVEL_MAIN}, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|conference publication", ALWAYS, LEVEL_MAIN } }; static lookups thesis[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%B", "ACADEMIC_DEPARTMENT", SIMPLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE , LEVEL_MAIN }, { "%P", "NUMPAGES", PAGES , LEVEL_MAIN }, /* { "%9", "THESIS_TYPE", SIMPLE , LEVEL_MAIN },*/ { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, /* thesis type */ { "%8", "MONTH", DATE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|theses", ALWAYS, LEVEL_MAIN } }; static lookups program[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%7", "VERSION", SIMPLE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "COMPUTER", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN } }; static lookups audiovisual[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "WRITER", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%B", "TITLE", TITLE , LEVEL_HOST }, /* COLLECTION_TITLE */ { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%V", "EXTENTOFWORK", SIMPLE , LEVEL_MAIN }, { "%N", "NUMBER", SIMPLE , LEVEL_MAIN }, { "%8", "MONTH", DATE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%?", "PERFORMER", PERSON , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|mixed material", ALWAYS, LEVEL_MAIN } }; static lookups broadcast[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "AUTHOR", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%E", "DIRECTOR", PERSON , LEVEL_MAIN }, { "%B", "TITLE", TITLE , LEVEL_HOST }, /* SERIES_TITLE */ { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%Y", "PRODUCER", PERSON , LEVEL_MAIN }, { "%8", "MONTH", DATE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO , LEVEL_MAIN }, { "%?", "PERFORMER", PERSON , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|moving image", ALWAYS, LEVEL_MAIN } }; static lookups electronic[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "AUTHOR", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%V", "ACCESS_YEAR", SIMPLE , LEVEL_MAIN }, { "%N", "ACCESS_DATE", DATE , LEVEL_MAIN }, { "%7", "EDITION", SIMPLE , LEVEL_MAIN }, { "%8", "UPDATE_DATE", DATE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%V", "VOLUME", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { "%+", "AUTHORADDRESS",SIMPLE , LEVEL_MAIN }, { " ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|electronic", ALWAYS, LEVEL_MAIN }, }; static lookups artwork[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "ARTIST", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%8", "MONTH", DATE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "GENRE|art original", ALWAYS, LEVEL_MAIN } }; static lookups report[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "AUTHOR", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%P", "PAGES", PAGES , LEVEL_MAIN }, { "%8", "MONTH", DATE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%@", "SERIALNUMBER", SERIALNO , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|report", ALWAYS, LEVEL_MAIN } }; static lookups map[] = { { "%0", "TYPE", TYPE , LEVEL_MAIN }, { "%A", "CARTOGRAPHER", PERSON , LEVEL_MAIN }, { "%D", "YEAR", SIMPLE , LEVEL_MAIN }, { "%T", "TITLE" , TITLE , LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE , LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE , LEVEL_MAIN }, { "%7", "EDITION", SIMPLE , LEVEL_MAIN }, { "%9", "GENRE", SIMPLE , LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE , LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE , LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE , LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE , LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE , LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE , LEVEL_MAIN }, { "%O", "NOTES", SIMPLE , LEVEL_MAIN }, { "%U", "URL", SIMPLE , LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE , LEVEL_MAIN }, { "%1", "SCALE", SIMPLE , LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE , LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE , LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE , LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE , LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE , LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|cartographic", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|map", ALWAYS, LEVEL_MAIN } }; static lookups patent[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%B", "PUBLISHED_SOURCE", SIMPLE, LEVEL_MAIN}, { "%C", "COUNTRY", SIMPLE, LEVEL_MAIN }, { "%I", "ASSIGNEE", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME", SIMPLE, LEVEL_MAIN }, { "%N", "ISSUE", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", SIMPLE, LEVEL_MAIN }, { "%@", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "SCALE", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|patent", ALWAYS, LEVEL_MAIN } }; static lookups hearing[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%B", "COMMITTEE", SIMPLE, LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_MAIN }, { "%N", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "NUMPAGES", PAGES, LEVEL_MAIN }, { "%S", "LEGISLATIVEBODY", SIMPLE, LEVEL_MAIN }, { "%7", "SESSION", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "GENRE|hearing", ALWAYS, LEVEL_MAIN } }; static lookups bill[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%B", "CODE", SIMPLE, LEVEL_MAIN }, { "%V", "CODEVOLUME",SIMPLE, LEVEL_MAIN }, { "%N", "BILLNUMBER",SIMPLE, LEVEL_MAIN }, { "%P", "CODEPAGES", SIMPLE, LEVEL_MAIN }, { "%&", "CODESECTION",SIMPLE, LEVEL_MAIN }, { "%S", "LEGISLATIVEBODY", SIMPLE, LEVEL_MAIN }, { "%7", "SESSION", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%?", "SPONSOR", PERSON, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|legislation", ALWAYS, LEVEL_MAIN } }; static lookups statute[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%B", "CODE", SIMPLE, LEVEL_MAIN }, { "%V", "CODENUMBER",SIMPLE, LEVEL_MAIN }, { "%N", "PUBLICLAWNUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%&", "SECTION", SIMPLE, LEVEL_MAIN }, { "%7", "SESSION", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER",SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|legislation", ALWAYS, LEVEL_MAIN } }; static lookups lawcase[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%E", "REPORTER", TITLE, LEVEL_HOST }, /*Reporter is name of book*/ { "%B", "CODE", SIMPLE, LEVEL_MAIN }, { "%I", "COURT", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME", SIMPLE, LEVEL_MAIN }, { "%N", "PUBLICLAWNUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "STARTPAGE", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%?", "COUNSEL", PERSON, LEVEL_MAIN }, { "%!", "SHORTTITLE",TITLE, LEVEL_MAIN }, { "%(", "ORIGINALPUB",SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER", SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|legal case and case notes", ALWAYS, LEVEL_MAIN } }; static lookups chart[] = { { "%0", "TYPE", TYPE, LEVEL_MAIN }, { "%A", "AUTHOR", PERSON, LEVEL_MAIN }, { "%D", "YEAR", SIMPLE, LEVEL_MAIN }, { "%T", "TITLE" , TITLE, LEVEL_MAIN }, { "%J", "TITLE", TITLE, LEVEL_HOST }, /* for refer formats */ { "%E", "2ND_AUTHOR",PERSON, LEVEL_MAIN }, { "%B", "2ND_TITLE", SIMPLE, LEVEL_MAIN }, { "%C", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "%I", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "%V", "VOLUME" , SIMPLE, LEVEL_MAIN }, { "%6", "NUMVOLUMES",SIMPLE, LEVEL_HOST }, { "%N", "NUMBER", SIMPLE, LEVEL_MAIN }, { "%P", "PAGES", PAGES, LEVEL_MAIN }, { "%&", "SECTION", SIMPLE, LEVEL_MAIN }, { "%Y", "3RD_AUTHOR", PERSON, LEVEL_MAIN }, { "%S", "3RD_TITLE", SIMPLE, LEVEL_MAIN }, { "%7", "EDITION", SIMPLE, LEVEL_MAIN }, { "%8", "MONTH", DATE, LEVEL_MAIN }, { "%9", "GENRE", SIMPLE, LEVEL_MAIN }, { "%?", "SUB_AUTHOR", PERSON, LEVEL_MAIN }, /* subsidiary-authors */ { "%!", "SHORTTITLE", TITLE, LEVEL_MAIN }, { "%@", "SERIALNUM", SERIALNO, LEVEL_MAIN }, { "%(", "ORIGINALPUB", SIMPLE, LEVEL_MAIN }, { "%)", "REPRINTEDITION",SIMPLE,LEVEL_MAIN }, { "%*", "REVIEWEDITEM", SIMPLE, LEVEL_MAIN }, { "%1", "CUSTOM1", SIMPLE, LEVEL_MAIN }, { "%2", "CUSTOM2", SIMPLE, LEVEL_MAIN }, { "%3", "CUSTOM3", SIMPLE, LEVEL_MAIN }, { "%4", "CUSTOM4", SIMPLE, LEVEL_MAIN }, { "%#", "CUSTOM5", SIMPLE, LEVEL_MAIN }, { "%$", "CUSTOM6", SIMPLE, LEVEL_MAIN }, { "%M", "ACCESSNUM", SIMPLE, LEVEL_MAIN }, { "%L", "CALLNUMBER", SIMPLE, LEVEL_MAIN }, { "%F", "REFNUM", SIMPLE, LEVEL_MAIN }, { "%K", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "%X", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "%O", "NOTES", SIMPLE, LEVEL_MAIN }, { "%U", "URL", SIMPLE, LEVEL_MAIN }, { "%Z", "NOTES", SIMPLE, LEVEL_MAIN }, { "%W", "PHYSICALLOC", SIMPLE, LEVEL_MAIN }, /* physical location */ { "%+", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { " ", "GENRE|chart", ALWAYS, LEVEL_MAIN } }; /* order is important....."Book" matches "Book" and "Book Section", hence * "Book Section must come first */ variants end_all[] = { {"Generic", &(generic[0]), sizeof(generic)/sizeof(lookups)}, {"Journal Article", &(journalarticle[0]), sizeof(journalarticle)/sizeof(lookups)}, {"Book Section", &(booksection[0]),sizeof(booksection)/sizeof(lookups)}, {"Book", &(book[0]), sizeof(book)/sizeof(lookups)}, {"Edited Book", &(editedbook[0]),sizeof(editedbook)/sizeof(lookups)}, {"Magazine Article", &(magazinearticle[0]), sizeof(magazinearticle)/sizeof(lookups)}, {"Newspaper Article", &(newspaperarticle[0]), sizeof(newspaperarticle)/sizeof(lookups)}, {"Manuscript", &(manuscript[0]), sizeof(manuscript)/sizeof(lookups)}, {"Personal Communication", &(communication[0]), sizeof(communication)/sizeof(lookups)}, {"Conference Proceeding", &(proceedings[0]), sizeof(proceedings)/sizeof(lookups)}, {"Thesis", &(thesis[0]), sizeof(thesis)/sizeof(lookups)}, {"Computer Program", &(program[0]), sizeof(program)/sizeof(lookups)}, {"Audiovisual Material", &(audiovisual[0]), sizeof(audiovisual)/sizeof(lookups)}, {"Film or Broadcast", &(broadcast[0]), sizeof(broadcast)/sizeof(lookups)}, {"Artwork", &(artwork[0]), sizeof(artwork)/sizeof(lookups)}, {"Electronic Source", &(electronic[0]), sizeof(electronic)/sizeof(lookups)}, {"Report", &(report[0]), sizeof(report)/sizeof(lookups)}, {"Map", &(map[0]), sizeof(map)/sizeof(lookups)}, {"Patent", &(patent[0]), sizeof(patent)/sizeof(lookups)}, {"Hearing", &(hearing[0]), sizeof(hearing)/sizeof(lookups)}, {"Bill", &(bill[0]), sizeof(bill)/sizeof(lookups)}, {"Statute", &(statute[0]), sizeof(statute)/sizeof(lookups)}, {"Case", &(lawcase[0]), sizeof(lawcase)/sizeof(lookups)}, {"Chart or Table", &(chart[0]), sizeof(chart)/sizeof(lookups)} }; int end_nall = sizeof( end_all ) / sizeof( variants ); #if 0 int get_reftype( char *p, long refnum ) { int i; while ( is_ws( *p ) ) p++; for ( i=0; i #include "fields.h" #include "reftypes.h" /* Entry types from the IEEEtran Bibtex Style + others as observed */ /* * Journal Article */ static lookups article[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "year", "PARTYEAR", SIMPLE, LEVEL_MAIN }, { "month", "PARTMONTH", SIMPLE, LEVEL_MAIN }, { "day", "PARTDAY", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "pages", "PAGES", PAGES, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "issue", "ISSUE", SIMPLE, LEVEL_MAIN }, { "journal", "TITLE", TITLE, LEVEL_HOST }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "address", "ADDRESS", SIMPLE, LEVEL_HOST }, { "issn", "ISSN", SIMPLE, LEVEL_HOST }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|ARTICLE", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical", ALWAYS, LEVEL_HOST }, { " ", "GENRE|academic journal", ALWAYS, LEVEL_HOST } }; /* Book */ static lookups book[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "series", "TITLE", TITLE, LEVEL_HOST }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_MAIN }, { "lccn", "LCCN", SIMPLE, LEVEL_MAIN }, { "edition", "EDITION", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|BOOK", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|book", ALWAYS, LEVEL_MAIN } }; /* Technical reports */ static lookups report[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "institution", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_MAIN }, { "lccn", "LCCN", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|REPORT", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|report", ALWAYS, LEVEL_MAIN } }; static lookups manual[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_MAIN }, { "lccn", "LCCN", SIMPLE, LEVEL_MAIN }, { "edition", "EDITION", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|REPORT", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|instruction", ALWAYS, LEVEL_MAIN } }; /* Part of a book (e.g. chapter or section) */ static lookups inbook[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_HOST }, { "chapter", "TITLE", TITLE, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_HOST }, { "booktitle", "TITLE", TITLE, LEVEL_HOST }, { "series", "TITLE", TITLE, LEVEL_SERIES }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "address", "ADDRESS", SIMPLE, LEVEL_HOST }, { "year", "YEAR", SIMPLE, LEVEL_HOST }, { "month", "MONTH", SIMPLE, LEVEL_HOST }, { "day", "DAY", SIMPLE, LEVEL_HOST }, { "volume", "VOLUME", SIMPLE, LEVEL_SERIES }, { "number", "NUMBER", SIMPLE, LEVEL_SERIES }, { "pages", "PAGES", PAGES, LEVEL_HOST }, { "isbn", "ISBN", SIMPLE, LEVEL_HOST }, { "lccn", "LCCN", SIMPLE, LEVEL_HOST }, { "edition", "EDITION", SIMPLE, LEVEL_HOST }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_HOST }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_HOST }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|INBOOK", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_HOST }, { " ", "GENRE|book", ALWAYS, LEVEL_HOST } }; /* References of papers in conference proceedings */ static lookups inproceedings[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_HOST }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_HOST }, { "series", "TITLE", TITLE, LEVEL_SERIES }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_HOST }, { "address", "ADDRESS", SIMPLE, LEVEL_HOST }, { "year", "PARTYEAR", SIMPLE, LEVEL_MAIN }, { "month", "PARTMONTH", SIMPLE, LEVEL_MAIN }, { "day", "PARTDAY", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "pages", "PAGES", PAGES, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_HOST }, { "lccn", "LCCN", SIMPLE, LEVEL_HOST }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_HOST }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "paper", "PAPER", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_HOST }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|INPROCEEDINGS", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|conference publication", ALWAYS, LEVEL_HOST } }; /* Used for a section of a book with its own title */ static lookups incollection[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_HOST }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "chapter", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_HOST }, { "series", "TITLE", TITLE, LEVEL_SERIES }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "address", "ADDRESS", SIMPLE, LEVEL_HOST }, { "year", "YEAR", SIMPLE, LEVEL_HOST }, { "month", "MONTH", SIMPLE, LEVEL_HOST }, { "day", "DAY", SIMPLE, LEVEL_HOST }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "pages", "PAGES", PAGES, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_HOST }, { "lccn", "LCCN", SIMPLE, LEVEL_HOST }, { "edition", "EDITION", SIMPLE, LEVEL_HOST }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_HOST }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_HOST }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|INCOLLECTION", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|collection", ALWAYS, LEVEL_HOST } }; /* Proceedings */ static lookups proceedings[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "series", "TITLE", TITLE, LEVEL_HOST }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", SIMPLE, LEVEL_MAIN }, { "pages", "PAGES", PAGES, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_MAIN }, { "lccn", "LCCN", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|PROCEEDINGS", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|conference publication", ALWAYS, LEVEL_MAIN } }; static lookups phds[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "school", "DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL" , BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|THESIS", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|theses", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|Ph.D. thesis", ALWAYS, LEVEL_MAIN } }; static lookups masters[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "school", "DEGREEGRANTOR:ASIS",SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|THESIS", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|theses", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|Masters thesis", ALWAYS, LEVEL_MAIN } }; /* Unpublished */ static lookups unpublished[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|BOOK", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|unpublished", ALWAYS, LEVEL_MAIN } }; /* * For Published Standards */ static lookups standard[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "institution", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "isbn", "ISBN", SIMPLE, LEVEL_MAIN }, { "lccn", "LCCN", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "number", "NUMBER", TITLE, LEVEL_MAIN }, { "revision", "REVISION", TITLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "TYPE|STANDARD", ALWAYS, LEVEL_MAIN } }; /* * For Journals and Magazines */ static lookups periodical[] = { { "title", "TITLE", TITLE, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "series", "TITLE", TITLE, LEVEL_HOST }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "issn", "ISSN", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", TITLE, LEVEL_MAIN }, { "number", "NUMBER", TITLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical",ALWAYS, LEVEL_MAIN } }; /* * For Patent */ static lookups patent[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "assignee", "ASSIGNEE", PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, /* date granted */ { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "yearfiled", "YEAR", SIMPLE, LEVEL_MAIN }, /* date filed */ { "monthfiled","MONTH", SIMPLE, LEVEL_MAIN }, { "dayfiled", "DAY", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "nationality", "NATIONALITY", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "type", "TYPE", SIMPLE, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "TYPE|PATENT", ALWAYS, LEVEL_MAIN }, }; /* * Electronic Source */ static lookups electronic[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "volume", "VOLUME", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|electronic", ALWAYS, LEVEL_MAIN }, }; static lookups misc[] = { { "author", "AUTHOR", PERSON, LEVEL_MAIN }, { "translator", "TRANSLATOR",PERSON, LEVEL_MAIN }, { "title", "TITLE", TITLE, LEVEL_MAIN }, { "booktitle", "TITLE", TITLE, LEVEL_MAIN }, { "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "organization", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN }, { "pages", "PAGES", PAGES, LEVEL_MAIN }, { "address", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "editor", "EDITOR", PERSON, LEVEL_MAIN }, { "year", "YEAR", SIMPLE, LEVEL_MAIN }, { "month", "MONTH", SIMPLE, LEVEL_MAIN }, { "day", "DAY", SIMPLE, LEVEL_MAIN }, { "abstract", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "contents", "CONTENTS", SIMPLE, LEVEL_MAIN }, { "ftp", "URL", BIBTEX_URL, LEVEL_MAIN }, { "doi", "DOI", SIMPLE, LEVEL_MAIN }, { "url", "URL", BIBTEX_URL, LEVEL_MAIN }, { "howpublished", "URL", BIBTEX_URL, LEVEL_MAIN }, { "refnum", "REFNUM", SIMPLE, LEVEL_MAIN }, { "crossref", "CROSSREF", SIMPLE, LEVEL_MAIN }, { "location", "LOCATION", SIMPLE, LEVEL_MAIN }, { "note", "NOTES", SIMPLE, LEVEL_MAIN }, { "key", "BIBKEY", SIMPLE, LEVEL_MAIN }, { "language", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "keywords", "KEYWORD", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|MISC", ALWAYS, LEVEL_MAIN }, }; variants bibtex_all[] = { { "article", &(article[0]), sizeof(article)/sizeof(lookups)}, { "book", &(book[0]), sizeof(book)/sizeof(lookups)}, { "booklet", &(book[0]), sizeof(book)/sizeof(lookups)}, { "inbook", &(inbook[0]), sizeof(inbook)/sizeof(lookups)}, { "proceedings", &(proceedings[0]), sizeof(proceedings)/sizeof(lookups)}, { "inproceedings", &(inproceedings[0]), sizeof(inproceedings)/sizeof(lookups)}, { "inconference", &(inproceedings[0]), sizeof(inproceedings)/sizeof(lookups)}, { "incollection", &(incollection[0]), sizeof(incollection)/sizeof(lookups)}, { "phdthesis", &(phds[0]), sizeof(phds)/sizeof(lookups)}, { "mastersthesis", &(masters[0]), sizeof(masters)/sizeof(lookups)}, { "report", &(report[0]), sizeof(report)/sizeof(lookups)}, { "techreport", &(report[0]), sizeof(report)/sizeof(lookups)}, { "manual", &(manual[0]), sizeof(manual)/sizeof(lookups)}, { "unpublished", &(unpublished[0]), sizeof(unpublished)/sizeof(lookups)}, { "periodical", &(periodical[0]), sizeof(periodical)/sizeof(lookups)}, { "electronic", &(electronic[0]), sizeof(electronic)/sizeof(lookups)}, { "patent", &(patent[0]), sizeof(patent)/sizeof(lookups)}, { "standard", &(standard[0]), sizeof(standard)/sizeof(lookups)}, { "misc", &(misc[0]), sizeof(misc)/sizeof(lookups)} }; int bibtex_nall = sizeof( bibtex_all ) / sizeof( variants ); referencer-1.2.1/libbibutils/isiout.c0000664000175000017500000001632012042412720014536 00000000000000/* * isiout.c * * Copyright (c) Chris Putnam 2007 * * Source code released under the GPL */ #include #include #include #include #include "newstr.h" #include "strsearch.h" #include "fields.h" #include "bibutils.h" enum { TYPE_UNKNOWN = 0, TYPE_ARTICLE = 1, TYPE_INBOOK = 2, TYPE_BOOK = 3, }; static void output_type( FILE *fp, int type ) { fprintf( fp, "PT " ); if ( type==TYPE_ARTICLE ) fprintf( fp, "Journal" ); else if ( type==TYPE_INBOOK ) fprintf( fp, "Chapter" ); else if ( type==TYPE_BOOK ) fprintf( fp, "Book" ); else fprintf( fp, "Unknown" ); fprintf( fp, "\n" ); } static int get_type( fields *info ) { char *tag, *data; int type = TYPE_UNKNOWN, i; for ( i=0; infields; ++i ) { tag = info->tag[i].data; if ( strcasecmp( tag, "GENRE" ) && strcasecmp( tag, "NGENRE") ) continue; data = info->data[i].data; if ( !strcasecmp( data, "periodical" ) || !strcasecmp( data, "academic journal" ) ) type = TYPE_ARTICLE; else if ( !strcasecmp( data, "book" ) ) { if ( info->level[i]==0 ) type=TYPE_BOOK; else type=TYPE_INBOOK; } } return type; } static void output_title( FILE *fp, fields *info, char *isitag, int level ) { int n1 = fields_find( info, "TITLE", level ); int n2 = fields_find( info, "SUBTITLE", level ); if ( n1!=-1 ) { fprintf( fp, "%s %s", isitag, info->data[n1].data ); if ( n2!=-1 ) { if ( info->data[n1].data[info->data[n1].len]!='?' ) fprintf( fp, ": " ); else fprintf( fp, " " ); fprintf( fp, "%s", info->data[n2].data ); } fprintf( fp, "\n" ); } } static void output_abbrtitle( FILE *fp, fields *info, char *isitag, int level ) { int n1 = fields_find( info, "SHORTTITLE", level ); int n2 = fields_find( info, "SHORTSUBTITLE", level ); if ( n1!=-1 ) { fprintf( fp, "%s %s", isitag, info->data[n1].data ); if ( n2!=-1 ){ if ( info->data[n1].data[info->data[n1].len]!='?' ) fprintf( fp, ": " ); else fprintf( fp, " " ); fprintf( fp, "%s", info->data[n2].data ); } fprintf( fp, "\n" ); } } static void output_person( FILE *fp, char *name ) { int n = 0, nchars = 0; char *p = name; while ( *p ) { if ( *p=='|' ) { n++; nchars=0; } else { if ( n==1 && nchars<2 ) fprintf( fp, ", " ); if ( n==0 || (n>0 && nchars<2) ) { fprintf( fp, "%c", *p ); } } nchars++; p++; } } static void output_keywords( FILE *fp, fields *info ) { int n = 0, i; for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "KEYWORD" ) ) continue; if ( n==0 ) fprintf( fp, "DE " ); if ( n>0 ) fprintf( fp, "; " ); fprintf( fp, "%s", info->data[i].data ); n++; } if ( n ) fprintf( fp, "\n" ); } static void output_people( FILE *fp, fields *info, char *tag, char *isitag, int level ) { int n = 0, i; for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, tag ) ) continue; if ( level!=-1 && info->level[i]!=level ) continue; if ( n==0 ) { fprintf( fp, "%s ", isitag ); } else { fprintf( fp, " " ); } output_person( fp, info->data[i].data ); fprintf( fp, "\n" ); n++; } } static void output_easy( FILE *fp, fields *info, char *tag, char *isitag, int level ) { int n = fields_find( info, tag, level ); if ( n!=-1 ) fprintf( fp, "%s %s\n", isitag, info->data[n].data ); } static void output_date( FILE *fp, fields *info ) { int n; n = fields_find( info, "PARTMONTH", -1 ); if ( n==-1 ) n = fields_find( info, "MONTH", -1 ); if ( n!=-1 ) fprintf( fp, "%s %s\n", "PD", info->data[n].data ); n = fields_find( info, "PARTYEAR", -1 ); if ( n==-1 ) n = fields_find( info, "YEAR", -1 ); if ( n!=-1 ) fprintf( fp, "%s %s\n", "PY", info->data[n].data ); } static void output_verbose( fields *info, unsigned long refnum ) { int i; fprintf( stderr, "REF #%lu----\n", refnum+1 ); for ( i=0; infields; ++i ) { fprintf( stderr, "\t'%s'\t'%s'\t%d\n", info->tag[i].data, info->data[i].data, info->level[i]); } } void isi_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ) { int type = get_type( info ); if ( format_opts & BIBL_FORMAT_VERBOSE ) output_verbose( info, refnum ); output_type( fp, type ); output_people( fp, info, "AUTHOR", "AU", 0 ); /* output_people( fp, info, "AUTHOR:CORP", "AU", 0 ); output_people( fp, info, "AUTHOR:ASIS", "AU", 0 ); output_people( fp, info, "AUTHOR", "A2", 1 ); output_people( fp, info, "AUTHOR:CORP", "A2", 1 ); output_people( fp, info, "AUTHOR:ASIS", "A2", 1 ); output_people( fp, info, "AUTHOR", "A3", 2 ); output_people( fp, info, "AUTHOR:CORP", "A3", 2 ); output_people( fp, info, "AUTHOR:ASIS", "A3", 2 ); output_people( fp, info, "EDITOR", "ED", -1 ); output_people( fp, info, "EDITOR:CORP", "ED", -1 ); output_people( fp, info, "EDITOR:ASIS", "ED", -1 );*/ /* output_date( fp, info, refnum );*/ output_title( fp, info, "TI", 0 ); if ( type==TYPE_ARTICLE ) { output_title( fp, info, "SO", 1 ); output_abbrtitle( fp, info, "JI", 1 ); } else output_title( fp, info, "BT", 1 ); output_date( fp, info ); /* output_easy( fp, info, "PARTMONTH", "PD", -1 ); output_easy( fp, info, "PARTYEAR", "PY", -1 );*/ output_easy( fp, info, "PAGESTART", "BP", -1 ); output_easy( fp, info, "PAGEEND", "EP", -1 ); output_easy( fp, info, "ARTICLENUMBER", "AR", -1 ); /* output article number as pages */ output_easy( fp, info, "TOTALPAGES","PG", -1 ); output_easy( fp, info, "VOLUME", "VL", -1 ); output_easy( fp, info, "ISSUE", "IS", -1 ); output_easy( fp, info, "NUMBER", "IS", -1 ); output_easy( fp, info, "DOI", "DI", -1 ); output_easy( fp, info, "ISIREFNUM", "UT", -1 ); output_easy( fp, info, "LANGUAGE", "LA", -1 ); output_easy( fp, info, "ISIDELIVERNUM", "GA", -1 ); output_keywords( fp, info ); output_easy( fp, info, "ABSTRACT", "AB", -1 ); output_easy( fp, info, "TIMESCITED", "TC", -1 ); output_easy( fp, info, "NUMBERREFS", "NR", -1 ); output_easy( fp, info, "CITEDREFS", "CR", -1 ); output_easy( fp, info, "ADDRESS", "PI", -1 ); /* output_easy( fp, info, "PUBLISHER", "PB", -1 ); output_easy( fp, info, "DEGREEGRANTOR", "PB", -1 ); output_easy( fp, info, "ADDRESS", "CY", -1 ); output_easy( fp, info, "ABSTRACT", "AB", -1 ); output_easy( fp, info, "ISSN", "SN", -1 ); output_easy( fp, info, "ISBN", "SN", -1 ); output_easy( fp, info, "URL", "UR", -1 ); output_pubmed( fp, info, refnum ); output_easy( fp, info, "NOTES", "N1", -1 ); output_easy( fp, info, "REFNUM", "ID", -1 );*/ fprintf( fp, "ER\n\n" ); fflush( fp ); } referencer-1.2.1/libbibutils/risout.h0000664000175000017500000000030712042412720014552 00000000000000/* * risout.h * * Copyright (c) Chris Putnam 2005-7 * */ #ifndef RISOUT_H #define RISOUT_H extern void risout_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ); #endif referencer-1.2.1/libbibutils/ristypes.c0000664000175000017500000013113512042412720015106 00000000000000/* * ristypes.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include #include #include #include "fields.h" #include "reftypes.h" static lookups generic[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, }; static lookups article[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_HOST }, { "PY", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y1", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y2", "PARTMONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_SERIES }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|ARTICLE", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical", ALWAYS, LEVEL_HOST }, { " ", "GENRE|academic journal", ALWAYS, LEVEL_HOST } }; /* magazine article */ static lookups magarticle[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_HOST }, { "PY", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y1", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y2", "PARTMONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_SERIES }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|periodical", ALWAYS, LEVEL_HOST }, { " ", "GENRE|magazine", ALWAYS, LEVEL_HOST } }; static lookups newsarticle[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_HOST }, { "PY", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y1", "PARTYEAR", DATE, LEVEL_MAIN }, { "Y2", "PARTMONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_SERIES }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|NEWSARTICLE", ALWAYS, LEVEL_MAIN }, { " ", "ISSUANCE|continuing", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|newspaper", ALWAYS, LEVEL_HOST } }; static lookups book[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "JOURNAL", SIMPLE, LEVEL_MAIN }, { "JA", "JOURNAL", SIMPLE, LEVEL_MAIN }, { "JF", "JOURNAL", SIMPLE, LEVEL_MAIN }, { "J1", "JOURNAL", SIMPLE, LEVEL_MAIN }, { "J2", "JOURNAL", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_MAIN }, /* BOOKTITLE */ { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|book", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN } }; static lookups inbook[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_HOST }, { "PY", "YEAR", DATE, LEVEL_HOST }, { "Y1", "YEAR", DATE, LEVEL_HOST }, { "Y2", "MONTH", SIMPLE, LEVEL_HOST }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_HOST }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "VL", "VOLUME", SIMPLE, LEVEL_HOST }, { "VO", "VOLUME", SIMPLE, LEVEL_HOST }, { "IS", "ISSUE", SIMPLE, LEVEL_HOST }, { "CP", "ISSUE", SIMPLE, LEVEL_HOST }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, /* BOOKTITLE */ { "CT", "ADDRESS", SIMPLE, LEVEL_HOST }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "GENRE|book", ALWAYS, LEVEL_HOST }, { " ", "ISSUANCE|monographic", ALWAYS, LEVEL_HOST }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN } }; static lookups conference[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_HOST }, { "Y1", "YEAR", DATE, LEVEL_HOST }, { "Y2", "MONTH", SIMPLE, LEVEL_HOST }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_HOST }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_HOST }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|CONFERENCE", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|conference publication", ALWAYS, LEVEL_HOST } }; static lookups statute[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, /* book title */ { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|STATUTE", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|legislation", ALWAYS, LEVEL_MAIN } }; static lookups hearing[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, /* series title */ { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_MAIN }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|HEARING", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|hearing", ALWAYS, LEVEL_MAIN } }; static lookups cases[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_MAIN }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|CASE", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|legal case and case notes", ALWAYS, LEVEL_MAIN } }; static lookups communication[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "RECIPIENT", PERSON, LEVEL_MAIN }, { "A3", "AUTHOR", PERSON, LEVEL_HOST }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_MAIN }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "GENRE", SIMPLE, LEVEL_MAIN }, { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|ARTICLE", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|communication", ALWAYS, LEVEL_MAIN } }; static lookups thesis[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|THESIS", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text",ALWAYS, LEVEL_MAIN }, { " ", "GENRE|theses", ALWAYS, LEVEL_MAIN }, }; static lookups report[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "TYPE|REPORT", ALWAYS, LEVEL_MAIN }, { " ", "RESOURCE|text",ALWAYS, LEVEL_MAIN }, { " ", "GENRE|report", ALWAYS, LEVEL_MAIN } }; static lookups abstract[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "GENRE|abstract or summary", ALWAYS, LEVEL_MAIN } }; static lookups program[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN } }; static lookups patent[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|patent", ALWAYS, LEVEL_MAIN } }; static lookups electric[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|software, multimedia", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|electronic", ALWAYS, LEVEL_MAIN }, }; static lookups pamphlet[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|pamphlet", ALWAYS, LEVEL_MAIN }, }; static lookups unpublished[] = { { "AU", "AUTHOR", PERSON, LEVEL_MAIN }, { "A1", "AUTHOR", PERSON, LEVEL_MAIN }, { "A2", "AUTHOR", PERSON, LEVEL_HOST }, { "A3", "AUTHOR", PERSON, LEVEL_SERIES }, { "ED", "EDITOR", PERSON, LEVEL_MAIN }, { "PY", "YEAR", DATE, LEVEL_MAIN }, { "Y1", "YEAR", DATE, LEVEL_MAIN }, { "Y2", "MONTH", SIMPLE, LEVEL_MAIN }, { "SN", "SERIALNUMBER", SERIALNO,LEVEL_MAIN }, { "TI", "TITLE", TITLE, LEVEL_MAIN }, { "T1", "TITLE", TITLE, LEVEL_MAIN }, { "T2", "SHORTTITLE", SIMPLE, LEVEL_HOST }, { "T3", "TITLE", SIMPLE, LEVEL_SERIES }, { "JO", "TITLE", SIMPLE, LEVEL_HOST }, /* JOURNAL */ { "JA", "TITLE", SIMPLE, LEVEL_HOST }, { "JF", "TITLE", SIMPLE, LEVEL_HOST }, { "J1", "TITLE", SIMPLE, LEVEL_HOST }, { "J2", "TITLE", SIMPLE, LEVEL_HOST }, { "VL", "VOLUME", SIMPLE, LEVEL_MAIN }, { "VO", "VOLUME", SIMPLE, LEVEL_MAIN }, { "IS", "ISSUE", SIMPLE, LEVEL_MAIN }, { "CP", "ISSUE", SIMPLE, LEVEL_MAIN }, { "SP", "PAGESTART", SIMPLE, LEVEL_MAIN }, { "EP", "PAGEEND", SIMPLE, LEVEL_MAIN }, { "AB", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "N1", "NOTES", SIMPLE, LEVEL_MAIN }, { "N2", "ABSTRACT", SIMPLE, LEVEL_MAIN }, { "KW", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "PB", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "BT", "TITLE", SIMPLE, LEVEL_HOST }, { "CT", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "AD", "AUTHORADDRESS",SIMPLE, LEVEL_MAIN }, { "CY", "ADDRESS", SIMPLE, LEVEL_MAIN }, { "RP", "REPRINTSTATUS",SIMPLE, LEVEL_MAIN }, { "UR", "URL", SIMPLE, LEVEL_MAIN }, { "ID", "REFNUM", SIMPLE, LEVEL_MAIN }, { "U1", "NOTES", SIMPLE, LEVEL_MAIN }, /*user defined */ { "U2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "U3", "NOTES", SIMPLE, LEVEL_MAIN }, { "U4", "NOTES", SIMPLE, LEVEL_MAIN }, { "U5", "NOTES", SIMPLE, LEVEL_MAIN }, { "M1", "NOTES", SIMPLE, LEVEL_MAIN }, /*misc */ { "M2", "NOTES", SIMPLE, LEVEL_MAIN }, /* put in "notes" */ { "M3", "NOTES", SIMPLE, LEVEL_MAIN }, { " ", "RESOURCE|text", ALWAYS, LEVEL_MAIN }, { " ", "GENRE|unpublished", ALWAYS, LEVEL_MAIN } }; variants ris_all[] = { { "STD", &(generic[0]), sizeof(generic)/sizeof(lookups)}, { "GEN", &(generic[0]), sizeof(generic)/sizeof(lookups)}, { "JOUR", &(article[0]), sizeof(article)/sizeof(lookups)}, { "MGZN", &(magarticle[0]), sizeof(magarticle)/sizeof(lookups)}, { "BOOK", &(book[0]), sizeof(book)/sizeof(lookups)}, { "CHAP", &(inbook[0]), sizeof(inbook)/sizeof(lookups)}, { "CONF", &(conference[0]), sizeof(conference)/sizeof(lookups)}, { "STAT", &(statute[0]), sizeof(statute)/sizeof(lookups)}, { "HEAR", &(hearing[0]), sizeof(hearing)/sizeof(lookups)}, { "CASE", &(cases[0]), sizeof(cases)/sizeof(lookups)}, { "NEWS", &(newsarticle[0]), sizeof(newsarticle)/sizeof(lookups)}, { "MPCT", &(generic[0]), sizeof(generic)/sizeof(lookups)}, { "PCOMM", &(communication[0]), sizeof(communication)/sizeof(lookups)}, { "PAMP", &(pamphlet[0]), sizeof(pamphlet)/sizeof(lookups)}, { "ELEC", &(electric[0]), sizeof(electric)/sizeof(lookups)}, { "THES", &(thesis[0]), sizeof(thesis)/sizeof(lookups)}, { "RPRT", &(report[0]), sizeof(report)/sizeof(lookups)}, { "ABST", &(abstract[0]), sizeof(abstract)/sizeof(lookups)}, { "COMP", &(program[0]), sizeof(program)/sizeof(lookups)}, { "PAT", &(patent[0]), sizeof(patent)/sizeof(lookups)}, { "UNPB", &(unpublished[0]), sizeof(unpublished)/sizeof(lookups)}, }; int ris_nall = sizeof( ris_all ) / sizeof( variants ); referencer-1.2.1/libbibutils/isiout.h0000664000175000017500000000030212042412720014534 00000000000000/* * isiout.h * * Copyright (c) Chris Putnam 2007 * */ #ifndef ISIOUT_H #define ISIOUT_H extern void isi_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ); #endif referencer-1.2.1/libbibutils/bibtexin.h0000664000175000017500000000141012042412720015025 00000000000000/* * bibtexiin.h * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #ifndef BIBTEXIN_H #define BIBTEXIN_H #include "newstr.h" #include "fields.h" #include "bibl.h" #include "reftypes.h" extern void bibtexin_convertf( fields *bibin, fields *info, int reftype, int verbose, variants *all, int nall ); extern int bibtexin_processf( fields *bibin, char *data, char *filename, long nref ); extern void bibtexin_cleanf( bibl *bin ); extern int bibtexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int bibtexin_typef( fields *bibin, char *filename, int nrefs, variants *all, int nall ); extern variants bibtex_all[]; extern int bibtex_nall; #endif referencer-1.2.1/libbibutils/newstr_conv.h0000664000175000017500000000102612042412720015573 00000000000000/* * newstring_conv.h * * Copyright (c) Chris Putnam 1999-2007 * * Source code released under the GPL * */ #ifndef NEWSTR_CONV_H #define NEWSTR_CONV_H #include "newstr.h" #define CHARSET_UNKNOWN (-1) #define CHARSET_UNICODE (-2) #define CHARSET_DEFAULT (66) /* Latin-1/ISO8859-1 */ extern int get_charset( char *name ); extern void list_charsets( FILE *fp ); extern void newstr_convert( newstr *s, int charsetin, int latexin, int utf8in, int xmlin, int charsetout, int latexout, int utf8out, int xmlout ); #endif referencer-1.2.1/libbibutils/medin.c0000664000175000017500000002555712042412720014332 00000000000000/* * medin.c * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #include #include #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "fields.h" #include "xml.h" #include "xml_encoding.h" #include "medin.h" int medin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { newstr tmp; char *startptr = NULL, *endptr; int haveref = 0, inref = 0, file_charset = CHARSET_UNKNOWN, m; newstr_init( &tmp ); while ( !haveref && newstr_fget( fp, buf, bufsize, bufpos, line ) ) { if ( line->data ) { m = xml_getencoding( line ); if ( m!=CHARSET_UNKNOWN ) file_charset = m; } if ( line->data ) startptr = xml_findstart( line->data, "PubmedArticle" ); if ( startptr || inref ) { if ( inref ) newstr_strcat( &tmp, line->data ); else { newstr_strcat( &tmp, startptr ); inref = 1; } endptr = xml_findend( tmp.data, "PubmedArticle" ); if ( endptr ) { /* newstr_segcpy( reference, tmp.data, endptr+1 );*/ newstr_segcpy( reference, tmp.data, endptr ); haveref = 1; /* newstr_empty( &buffer ); */ /* startptr = xml_findstart( buffer.data, "PubmedArticle" ); if ( startptr ) inref=1; else inref = 0;*/ } } } newstr_free( &tmp ); *fcharset = file_charset; return haveref; } /* Mechanism and..... */ static void medin_articletitle( xml *node, fields *info ) { if ( node->value && node->value->data ) fields_add( info, "TITLE", node->value->data, 0 ); } /* 2003 Jan-Feb */ static void medin_medlinedate( fields *info, char *string, int level ) { newstr tmp; char *p, *q; newstr_init( &tmp ); /* extract year */ p = q = string; while ( *q && !is_ws(*q) ) q++; newstr_segcpy( &tmp, p, q ); fields_add( info, "PARTYEAR", tmp.data, level ); while ( is_ws(*q) ) q++; /* extract month */ if ( q ) { p = q; newstr_empty( &tmp ); while ( *q && !is_ws(*q) ) q++; newstr_segcpy( &tmp, p, q ); newstr_findreplace( &tmp, "-", "/" ); fields_add( info, "PARTMONTH", tmp.data, level ); while ( is_ws(*q) ) q++; } /* extract day */ if ( q ) { p = q; newstr_empty( &tmp ); while ( *q && !is_ws(*q) ) q++; newstr_segcpy( &tmp, p, q ); fields_add( info, "PARTDAY", tmp.data, level ); } newstr_free( &tmp ); } /* * 0027-8424 * * 100 * 21 * * 2003 * Oct * 14 * * * * * or.... * * * 0735-0414 * * 38 * 1 * * 2003 Jan-Feb * * * Alcohol and alcoholism (Oxford, Oxfordshire) * Alcohol Alcohol. * */ static void medin_journal1( xml *node, fields *info ) { if ( node->value && node->value->data ) { if ( xml_tagexact( node, "ISSN" ) ) fields_add( info, "ISSN", node->value->data, 1 ); else if ( xml_tagexact( node, "Volume" ) ) fields_add( info, "VOLUME", node->value->data, 1 ); else if ( xml_tagexact( node, "Issue" ) ) fields_add( info, "ISSUE", node->value->data, 1 ); else if ( xml_tagexact( node, "Year" ) ) fields_add( info, "PARTYEAR", node->value->data, 1 ); else if ( xml_tagexact( node, "Month" ) ) fields_add( info, "PARTMONTH", node->value->data, 1 ); else if ( xml_tagexact( node, "Day" ) ) fields_add( info, "PARTDAY", node->value->data, 1 ); else if ( xml_tagexact( node, "MedlineDate" ) ) medin_medlinedate( info, node->value->data, 1 ); } if ( node->down ) medin_journal1( node->down, info ); if ( node->next ) medin_journal1( node->next, info ); } /* * 12111-6 * */ static void medin_pagination( xml *node, fields *info ) { newstr sp, ep; char *p; int i; if ( xml_tagexact( node, "MedlinePgn" ) && node->value ) { newstr_init( &sp ); newstr_init( &ep ); p = node->value->data; while ( *p && *p!='-' ) newstr_addchar( &sp, *p++ ); if ( *p=='-' ) p++; while ( *p ) newstr_addchar( &ep, *p++ ); if ( sp.len ) fields_add( info, "PAGESTART", sp.data, 1 ); if ( ep.len ) { if ( sp.len > ep.len ) { for ( i=sp.len-ep.len; idown ) medin_pagination( node->down, info ); if ( node->next ) medin_pagination( node->next, info ); } /* * ljwejrelr * */ static void medin_abstract( xml *node, fields *info ) { if ( xml_tagexact( node, "AbstractText" ) && node->value && node->value->data ) fields_add( info, "ABSTRACT", node->value->data, 0 ); else if ( node->next ) medin_abstract( node->next, info ); } /* * * Barondeau * David P * DP * * */ static void medin_author( xml *node, newstr *name ) { char *p; if ( xml_tagexact( node, "LastName" ) ) { if ( name->len ) { newstr_prepend( name, "|" ); newstr_prepend( name, node->value->data ); } else newstr_strcat( name, node->value->data ); } else if ( xml_tagexact( node, "ForeName" ) ) { p = node->value->data; while ( p && *p ) { if ( name->len ) newstr_addchar( name, '|' ); while ( *p && *p==' ' ) p++; while ( *p && *p!=' ' ) newstr_addchar( name, *p++ ); } } if ( node->down ) medin_author( node->down, name ); if ( node->next ) medin_author( node->next, name ); } static void medin_authorlist( xml *node, fields *info ) { newstr name; newstr_init( &name ); node = node->down; while ( node ) { if ( xml_tagexact( node, "Author" ) && node->down ) { medin_author( node->down, &name ); if ( name.len ) fields_add(info,"AUTHOR",name.data,0); newstr_empty( &name ); } node = node->next; } newstr_free( &name ); } /* * Journal Article * */ /* * United States * Proc Natl Acad Sci U S A * 7507876 * */ static void medin_journal2( xml *node, fields *info ) { if ( xml_tagexact( node, "MedlineTA" ) && node->value && node->value->data ) fields_add( info, "TITLE", node->value->data, 1 ); if ( node->down ) medin_journal2( node->down, info ); if ( node->next ) medin_journal2( node->next, info ); } /* Biophysics Crystallography, X-Ray */ static void medin_meshheading( xml *node, fields *info ) { if ( xml_tagexact( node, "DescriptorName" ) && node->value && node->value->data ) { fields_add( info, "KEYWORD", node->value->data, 0 ); } if ( node->next ) medin_meshheading( node->next, info ); } static void medin_meshheadinglist( xml *node, fields *info ) { if ( xml_tagexact( node, "MeshHeading" ) && node->down ) medin_meshheading( node->down, info ); if ( node->next ) medin_meshheadinglist( node->next, info ); } /* * .... * * 14523232 * 10.1073/pnas.2133463100 * 2133463100 * 22922082 * * * * I think "pii" is "Publisher Item Identifier" */ static void medin_pubmeddata( xml *node, fields *info ) { if ( xml_tag_attrib( node, "ArticleId", "IdType", "doi" ) ) fields_add( info, "DOI", node->value->data, 0 ); if ( xml_tag_attrib( node, "ArticleId", "IdType", "pubmed" ) ) fields_add( info, "PUBMED", node->value->data, 0 ); if ( xml_tag_attrib( node, "ArticleId", "IdType", "medline" ) ) fields_add( info, "MEDLINE", node->value->data, 0 ); if ( xml_tag_attrib( node, "ArticleId", "IdType", "pii" ) ) fields_add( info, "PII", node->value->data, 0 ); if ( node->next ) medin_pubmeddata( node->next, info ); if ( node->down ) medin_pubmeddata( node->down, info ); } static void medin_article( xml *node, fields *info ) { if ( xml_tagexact( node, "Journal" ) ) medin_journal1( node, info ); else if ( xml_tagexact( node, "ArticleTitle" ) ) medin_articletitle( node, info ); else if ( xml_tagexact( node, "Pagination" ) && node->down ) medin_pagination( node->down, info ); else if ( xml_tagexact( node, "Abstract" ) && node->down ) medin_abstract( node->down, info ); else if ( xml_tagexact( node, "AuthorList" ) ) medin_authorlist( node, info ); if ( node->next ) medin_article( node->next, info ); } static void medin_medlinecitation( xml *node, fields *info ) { if ( xml_tagexact( node, "Article" ) && node->down ) medin_article( node->down, info ); else if ( xml_tagexact( node, "MedlineJournalInfo" ) && node->down ) medin_journal2( node->down, info ); else if ( xml_tagexact( node, "MeshHeadingList" ) && node->down ) medin_meshheadinglist( node->down, info ); if ( node->next ) medin_medlinecitation( node->next, info ); } static void medin_pubmedarticle( xml *node, fields *info ) { if ( xml_tagexact( node, "MedlineCitation" ) && node->down ) medin_medlinecitation( node->down, info ); else if ( xml_tagexact( node, "PubmedData" ) && node->down ) medin_pubmeddata( node->down, info ); if ( node->next ) medin_pubmedarticle( node->next, info ); } static void medin_assembleref( xml *node, fields *info ) { if ( xml_tagexact( node, "PubmedArticle" ) ) { if ( node->down ) medin_pubmedarticle( node->down, info ); } else if ( node->down ) medin_assembleref( node->down, info ); if ( node->next ) medin_assembleref( node->next, info ); /* assume everything is a journal article */ if ( info->nfields ) { fields_add( info, "RESOURCE", "text", 0 ); fields_add( info, "ISSUANCE", "continuing", 1 ); fields_add( info, "GENRE", "periodical", 1 ); fields_add( info, "GENRE", "academic journal", 1 ); } } int medin_processf( fields *medin, char *data, char *filename, long nref ) { xml top; xml_init( &top ); xml_tree( data, & top ); medin_assembleref( &top, medin ); xml_free( &top ); return 1; } void medin_convertf( fields *medin, fields *info, int reftype, int verbose, variants *all, int nall ) { int i; for ( i=0; infields; ++i ) fields_add( info, medin->tag[i].data, medin->data[i].data, medin->level[i] ); } referencer-1.2.1/libbibutils/Makefile.in0000664000175000017500000004666412150642771015154 00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = libbibutils DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/python.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru libbibutils_a_AR = $(AR) $(ARFLAGS) libbibutils_a_LIBADD = am__objects_1 = is_ws.$(OBJEXT) strsearch.$(OBJEXT) charsets.$(OBJEXT) am__objects_2 = newstr.$(OBJEXT) newstr_conv.$(OBJEXT) \ entities.$(OBJEXT) latex.$(OBJEXT) utf8.$(OBJEXT) am__objects_3 = fields.$(OBJEXT) lists.$(OBJEXT) modstypes.$(OBJEXT) \ xml.$(OBJEXT) xml_encoding.$(OBJEXT) am__objects_4 = bibtexin.$(OBJEXT) bibtypes.$(OBJEXT) \ bibtexout.$(OBJEXT) copacin.$(OBJEXT) copactypes.$(OBJEXT) \ endin.$(OBJEXT) endtypes.$(OBJEXT) endout.$(OBJEXT) \ endxmlin.$(OBJEXT) isiin.$(OBJEXT) isitypes.$(OBJEXT) \ medin.$(OBJEXT) modsin.$(OBJEXT) risin.$(OBJEXT) \ ristypes.$(OBJEXT) risout.$(OBJEXT) reftypes.$(OBJEXT) am__objects_5 = isiout.$(OBJEXT) modsout.$(OBJEXT) wordout.$(OBJEXT) am_libbibutils_a_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) \ name.$(OBJEXT) title.$(OBJEXT) bibl.$(OBJEXT) \ serialno.$(OBJEXT) bibutils.$(OBJEXT) libbibutils_a_OBJECTS = $(am_libbibutils_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libbibutils_a_SOURCES) DIST_SOURCES = $(libbibutils_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPS_CFLAGS = @DEPS_CFLAGS@ DEPS_LIBS = @DEPS_LIBS@ DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ DOC_USER_FORMATS = @DOC_USER_FORMATS@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ HELP_DIR = @HELP_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ OMF_DIR = @OMF_DIR@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYTHON = @PYTHON@ PYTHON_CFLAGS = @PYTHON_CFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_LIB_LOC = @PYTHON_LIB_LOC@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ enable_python = @enable_python@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libbibutils.a SIMPLE_SOURCES = \ is_ws.c \ is_ws.h \ strsearch.c \ strsearch.h \ charsets.c \ charsets.h NEWSTR_SOURCES = \ newstr.c \ newstr.h \ newstr_conv.c \ newstr_conv.h \ entities.c \ entities.h \ latex.c \ latex.h \ utf8.c \ utf8.h CONTAIN_SOURCES = \ fields.c \ fields.h \ lists.c \ lists.h \ modstypes.c \ modstypes.h \ xml.c \ xml.h \ xml_encoding.c \ xml_encoding.h INPUT_SOURCES = \ bibtexin.c \ bibtexin.h \ bibtypes.c \ bibtexout.c \ bibtexout.h \ copacin.c \ copacin.h \ copactypes.c \ endin.c \ endin.h \ endtypes.c \ endout.c \ endout.h \ endxmlin.c \ endxmlin.h \ isiin.c \ isiin.h \ isitypes.c \ medin.c \ medin.h \ modsin.c \ modsin.h \ risin.c \ risin.h \ ristypes.c \ risout.c \ risout.h \ reftypes.c \ reftypes.h OUTPUT_SOURCES = \ isiout.c \ isiout.h \ modsout.c \ modsout.h \ wordout.c \ wordout.h libbibutils_a_SOURCES = \ $(SIMPLE_SOURCES) \ $(NEWSTR_SOURCES) \ $(CONTAIN_SOURCES) \ $(INPUT_SOURCES) \ $(OUTPUT_SOURCES) \ name.c \ name.h \ title.c \ title.h \ bibl.c \ bibl.h \ serialno.c \ serialno.h \ bibutils.c \ bibutils.h all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libbibutils/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libbibutils/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libbibutils.a: $(libbibutils_a_OBJECTS) $(libbibutils_a_DEPENDENCIES) $(EXTRA_libbibutils_a_DEPENDENCIES) -rm -f libbibutils.a $(libbibutils_a_AR) libbibutils.a $(libbibutils_a_OBJECTS) $(libbibutils_a_LIBADD) $(RANLIB) libbibutils.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bibl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bibtexin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bibtexout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bibtypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bibutils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/charsets.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copacin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copactypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endtypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endxmlin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entities.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fields.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ws.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isiin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isiout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isitypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lists.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/medin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modsin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modsout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modstypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/name.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newstr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newstr_conv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reftypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/risin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/risout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ristypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serialno.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strsearch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/title.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wordout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_encoding.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: referencer-1.2.1/libbibutils/reftypes.c0000664000175000017500000000204012042412720015055 00000000000000/* * reftypes.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include #include #include "is_ws.h" #include "fields.h" #include "reftypes.h" extern char progname[]; int get_reftype( char *p, long refnum, variants *all, int nall, char *tag ) { int i; while ( is_ws( *p ) ) p++; for ( i=0; intags; ++i ) /* if ( !strcasecmp( ((all[reftype]).tags[i]).oldstr, oldtag ) )*/ if ( !strcasecmp( (v->tags[i]).oldstr, oldtag ) ) return i; return -1; } referencer-1.2.1/libbibutils/bibtexout.c0000664000175000017500000003147112042412720015233 00000000000000/* * bibtexout.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include #include #include #include #include "newstr.h" #include "strsearch.h" #include "xml.h" #include "fields.h" #include "bibl.h" #include "bibtexout.h" enum { TYPE_UNKNOWN = 0, TYPE_ARTICLE, TYPE_INBOOK, TYPE_INPROCEEDINGS, TYPE_PROCEEDINGS, TYPE_INCOLLECTION, TYPE_COLLECTION, TYPE_BOOK, TYPE_PHDTHESIS, TYPE_MASTERSTHESIS, TYPE_REPORT, TYPE_MANUAL, TYPE_UNPUBLISHED, TYPE_ELECTRONIC, TYPE_MISC }; static void output_citekey( FILE *fp, fields *info, unsigned long refnum ) { int n = fields_find( info, "REFNUM", -1 ); char *p; if ( n!=-1 ) { p = info->data[n].data; while ( p && *p && *p!='|' ) { if ( *p!=' ' && *p!='\t' ) { fprintf( fp, "%c", *p ); } p++; } } } static int bibtexout_type( fields *info, char *filename, int refnum ) { char *genre; int type = TYPE_UNKNOWN, i, maxlevel, n, level; /* determine bibliography type */ for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "GENRE" ) && strcasecmp( info->tag[i].data, "NGENRE" ) ) continue; genre = info->data[i].data; level = info->level[i]; if ( !strcasecmp( genre, "periodical" ) || !strcasecmp( genre, "academic journal" ) || !strcasecmp( genre, "magazine" ) || !strcasecmp( genre, "newspaper" ) ) type = TYPE_ARTICLE; else if ( !strcasecmp( genre, "instruction" ) ) type = TYPE_MANUAL; else if ( !strcasecmp( genre, "unpublished" ) ) type = TYPE_UNPUBLISHED; else if ( !strcasecmp( genre, "conference publication" ) ) { if ( level==0 ) type=TYPE_PROCEEDINGS; else type = TYPE_INPROCEEDINGS; } else if ( !strcasecmp( genre, "collection" ) ) { if ( level==0 ) type=TYPE_COLLECTION; else type = TYPE_INCOLLECTION; } else if ( !strcasecmp( genre, "report" ) ) type = TYPE_REPORT; else if ( !strcasecmp( genre, "book" ) ) { if ( level==0 ) type=TYPE_BOOK; else type=TYPE_INBOOK; } else if ( !strcasecmp( genre, "theses" ) ) { if ( type==TYPE_UNKNOWN ) type=TYPE_PHDTHESIS; } else if ( !strcasecmp( genre, "Ph.D. thesis" ) ) type = TYPE_PHDTHESIS; else if ( !strcasecmp( genre, "Masters thesis" ) ) type = TYPE_MASTERSTHESIS; else if ( !strcasecmp( genre, "electronic" ) ) type = TYPE_ELECTRONIC; } if ( type==TYPE_UNKNOWN ) { for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "ISSUANCE" ) ) continue; if ( !strcasecmp( info->data[i].data, "monographic" ) ) { if ( info->level[i]==0 ) type = TYPE_BOOK; else if ( info->level[i]==1 ) type=TYPE_INBOOK; } } } /* default to BOOK type */ if ( type==TYPE_UNKNOWN ) { maxlevel = fields_maxlevel( info ); if ( maxlevel > 0 ) type = TYPE_INBOOK; else { fprintf( stderr, "xml2bib warning: cannot identify " "TYPE in reference %d ",refnum+1 ); n = fields_find( info, "REFNUM", -1 ); if ( n!=-1 ) fprintf( stderr, " %s", info->data[n].data); fprintf( stderr, " (defaulting to @Misc)\n" ); type = TYPE_MISC; } } return type; } static void output_type( FILE *fp, int type, int format_opts ) { typedef struct { int bib_type; char *type_name; } typenames; typenames types[] = { { TYPE_ARTICLE, "Article" }, { TYPE_INBOOK, "Inbook" }, { TYPE_PROCEEDINGS, "Proceedings" }, { TYPE_INPROCEEDINGS, "InProceedings" }, { TYPE_BOOK, "Book" }, { TYPE_PHDTHESIS, "PhdThesis" }, { TYPE_MASTERSTHESIS, "MastersThesis" }, { TYPE_REPORT, "TechReport" }, { TYPE_MANUAL, "Manual" }, { TYPE_COLLECTION, "Collection" }, { TYPE_INCOLLECTION, "InCollection" }, { TYPE_UNPUBLISHED, "Unpublished" }, { TYPE_ELECTRONIC, "Electronic" }, { TYPE_MISC, "Misc" } }; int i, len, ntypes = sizeof( types ) / sizeof( types[0] ); char *s = NULL; for ( i=0; i0 && data[i-1]=='\\' ) ) fprintf( fp, "\"" ); else { if ( nquotes % 2 == 0 ) fprintf( fp, "``" ); else fprintf( fp, "\'\'" ); nquotes++; } } } if ( format_opts & BIBOUT_BRACKETS ) fprintf( fp, "}" ); else fprintf( fp, "\"" ); } static void add_person( newstr *s, char *p ) { int nseps = 0, nch; while ( *p ) { nch = 0; if ( nseps ) newstr_addchar( s, ' ' ); while ( *p && *p!='|' ) { newstr_addchar( s, *p++ ); nch++; } if ( *p=='|' ) p++; if ( nseps==0 ) newstr_addchar( s, ',' ); else if ( nch==1 ) newstr_addchar( s, '.' ); nseps++; } } static void output_people( FILE *fp, fields *info, unsigned long refnum, char *tag, char *ctag, char *atag, char *bibtag, int level, int format_opts ) { newstr allpeople; int i, npeople, person, corp, asis; /* primary citation authors */ npeople = 0; for ( i=0; infields; ++i ) { if ( level!=-1 && info->level[i]!=level ) continue; person = ( strcasecmp( info->tag[i].data, tag ) == 0 ); corp = ( strcasecmp( info->tag[i].data, ctag ) == 0 ); asis = ( strcasecmp( info->tag[i].data, atag ) == 0 ); if ( person || corp || asis ) { if ( npeople==0 ) newstr_init( &allpeople ); else { if ( format_opts & BIBOUT_WHITESPACE ) newstr_strcat(&allpeople,"\n\t\tand "); else newstr_strcat( &allpeople, "\nand " ); } if ( corp ) { newstr_addchar( &allpeople, '{' ); newstr_strcat( &allpeople, info->data[i].data ); newstr_addchar( &allpeople, '}' ); } else if ( asis ) { newstr_addchar( &allpeople, '{' ); newstr_strcat( &allpeople, info->data[i].data ); newstr_addchar( &allpeople, '}' ); } else add_person( &allpeople, info->data[i].data ); fields_setused( info, i ); npeople++; } } if ( npeople ) { output_element( fp, bibtag, allpeople.data, format_opts ); newstr_free( &allpeople ); } } static void output_title( FILE *fp, fields *info, unsigned long refnum, char *bibtag, int level, int format_opts ) { newstr title; int n1 = fields_find( info, "TITLE", level ); int n2 = fields_find( info, "SUBTITLE", level ); if ( n1!=-1 ) { newstr_init( &title ); newstr_newstrcpy( &title, &(info->data[n1]) ); fields_setused( info, n1 ); if ( n2!=-1 ) { if ( info->data[n1].data[info->data[n1].len]!='?' ) newstr_strcat( &title, ": " ); else newstr_addchar( &title, ' ' ); newstr_strcat( &title, info->data[n2].data ); fields_setused( info, n2 ); } output_element( fp, bibtag, title.data, format_opts ); newstr_free( &title ); } } static void output_date( FILE *fp, fields *info, unsigned long refnum, int format_opts ) { char *months[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; int n, month; n = fields_find( info, "YEAR", -1 ); if ( n==-1 ) n = fields_find( info, "PARTYEAR", -1 ); if ( n!=-1 ) { output_element( fp, "year", info->data[n].data, format_opts ); fields_setused( info, n ); } n = fields_find( info, "MONTH", -1 ); if ( n==-1 ) n = fields_find( info, "PARTMONTH", -1 ); if ( n!=-1 ) { month = atoi( info->data[n].data ); if ( month>0 && month<13 ) output_element( fp, "month", months[month-1], format_opts ); else output_element( fp, "month", info->data[n].data, format_opts ); fields_setused( info, n ); } n = fields_find( info, "DAY", -1 ); if ( n==-1 ) n = fields_find( info, "PARTDAY", -1 ); if ( n!=-1 ) { output_element( fp, "day", info->data[n].data, format_opts ); fields_setused( info, n ); } } /* output article number as pages if true pages aren't found */ static void output_articlenumber( FILE *fp, fields *info, unsigned long refnum, int format_opts ) { int ar = fields_find( info, "ARTICLENUMBER", -1 ); if ( ar!=-1 ) { newstr pages; newstr_init( &pages ); newstr_strcat( &pages, info->data[ar].data ); output_element( fp, "pages", pages.data, format_opts ); fields_setused( info, ar ); newstr_free( &pages ); } } static void output_pages( FILE *fp, fields *info, unsigned long refnum, int format_opts ) { newstr pages; int sn, en; sn = fields_find( info, "PAGESTART", -1 ); en = fields_find( info, "PAGEEND", -1 ); if ( sn==-1 && en==-1 ) { output_articlenumber( fp, info, refnum, format_opts ); return; } newstr_init( &pages ); if ( sn!=-1 ) { newstr_strcat( &pages, info->data[sn].data ); fields_setused( info, sn ); } if ( sn!=-1 && en!=-1 ) { if ( format_opts & BIBOUT_SINGLEDASH ) newstr_strcat( &pages, "-" ); else newstr_strcat( &pages, "--" ); } if ( en!=-1 ) { newstr_strcat( &pages, info->data[en].data ); fields_setused( info, en ); } output_element( fp, "pages", pages.data, format_opts ); newstr_free( &pages ); } static void output_simple( FILE *fp, fields *info, char *intag, char *outtag, int format_opts ) { int n = fields_find( info, intag, -1 ); if ( n!=-1 ) { output_element( fp, outtag, info->data[n].data, format_opts ); fields_setused( info, n ); } } static void output_simpleall( FILE *fp, fields *info, char *intag, char *outtag, int format_opts ) { int i; for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, intag ) ) continue; output_element( fp, outtag, info->data[i].data, format_opts ); fields_setused( info, i ); } } void bibtexout_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ) { int type; fields_clearused( info ); type = bibtexout_type( info, "", refnum ); output_type( fp, type, format_opts ); output_citekey( fp, info, refnum ); output_people( fp, info, refnum, "AUTHOR", "AUTHOR:CORP", "AUTHOR:ASIS", "author", 0, format_opts ); output_people( fp, info, refnum, "EDITOR", "EDITOR:CORP", "EDITOR:ASIS", "editor", -1, format_opts ); output_people( fp, info, refnum, "TRANSLATOR", "TRANSLATOR:CORP", "TRANSLATOR:ASIS", "translator", -1, format_opts ); /* item=main level title */ if ( type==TYPE_INBOOK ) output_title( fp, info, refnum, "chapter", 0, format_opts ); else output_title( fp, info, refnum, "title", 0, format_opts ); /* item=host level title */ if ( type==TYPE_ARTICLE ) output_title( fp, info, refnum, "journal", 1, format_opts ); else if ( type==TYPE_INBOOK ) { output_title( fp, info, refnum, "title", 1, format_opts ); output_title( fp, info, refnum, "series", 2, format_opts ); } else if ( type==TYPE_INPROCEEDINGS || type==TYPE_INCOLLECTION ) { output_title( fp, info, refnum, "booktitle", 1, format_opts ); output_title( fp, info, refnum, "series", 2, format_opts ); } else if ( type==TYPE_PHDTHESIS || type==TYPE_MASTERSTHESIS ) { output_title( fp, info, refnum, "series", 1, format_opts ); } else if ( type==TYPE_BOOK || type==TYPE_COLLECTION || type==TYPE_PROCEEDINGS ) output_title( fp, info, refnum, "series", 1, format_opts ); output_date( fp, info, refnum, format_opts ); output_simple( fp, info, "EDITION", "edition", format_opts ); output_simple( fp, info, "PUBLISHER", "publisher", format_opts ); output_simple( fp, info, "ADDRESS", "address", format_opts ); output_simple( fp, info, "VOLUME", "volume", format_opts ); output_simple( fp, info, "ISSUE", "issue", format_opts ); output_simple( fp, info, "NUMBER", "number", format_opts ); output_pages( fp, info, refnum, format_opts ); output_simpleall( fp, info, "KEYWORD", "keywords", format_opts ); output_simple( fp, info, "CONTENTS", "contents", format_opts ); output_simple( fp, info, "ABSTRACT", "abstract", format_opts ); output_simple( fp, info, "LOCATION", "location", format_opts ); output_simple( fp, info, "DEGREEGRANTOR", "school", format_opts ); output_simple( fp, info, "DEGREEGRANTOR:ASIS", "school", format_opts ); output_simple( fp, info, "DEGREEGRANTOR:CORP", "school", format_opts ); output_simpleall( fp, info, "NOTES", "note", format_opts ); output_simple( fp, info, "ISBN", "isbn", format_opts ); output_simple( fp, info, "ISSN", "issn", format_opts ); output_simple( fp, info, "DOI", "doi", format_opts ); output_simpleall( fp, info, "URL", "url", format_opts ); if ( format_opts & BIBOUT_FINALCOMMA ) fprintf( fp, "," ); fprintf( fp, "\n}\n\n" ); fflush( fp ); } referencer-1.2.1/libbibutils/strsearch.c0000664000175000017500000000164212042412720015221 00000000000000/* strsearch.c * * Copyright (c) Chris Putnam 1995-2007 * * Source code released under the GPL * * strsearch() locates a case-independent substring * e.g. a case-independent version of strstr() * * returns pointer to first occurrence of substring needle in * the string haystack when found, NULL if not found * * '\0' characters terminating strings are not compared * * strsearch returns haystack when needle is empty as per strstr() * conventions */ #include #include #include "strsearch.h" char *strsearch (const char *haystack, const char *needle) { char *returnptr=NULL; unsigned long pos=0; if ( !(*needle) ) returnptr = (char *) haystack; while (*(haystack+pos) && returnptr==NULL) { if ( toupper(*(haystack+pos)) == toupper(*(needle+pos)) ) pos++; else { pos = 0; haystack++; } if ( ! (*(needle+pos)) ) returnptr = (char *) haystack; } return returnptr; } referencer-1.2.1/libbibutils/xml_encoding.c0000664000175000017500000000252012042412720015665 00000000000000/* xml_getencoding.c */ #include #include #include #include "newstr.h" #include "newstr_conv.h" #include "xml.h" static int xml_getencodingr( xml *node ) { newstr *s; int n = CHARSET_UNKNOWN, m; if ( xml_tagexact( node, "xml" ) ) { s = xml_getattrib( node, "encoding" ); if ( s && s->data ) { if ( !strcasecmp( s->data, "UTF-8" ) ) n = CHARSET_UNICODE; else n = get_charset( s->data ); if ( n==CHARSET_UNKNOWN ) { fprintf( stderr, "Warning: did not recognize " "encoding '%s'\n", s->data ); } } } if ( node->down ) { m = xml_getencodingr( node->down ); if ( m!=CHARSET_UNKNOWN ) n = m; } if ( node->next ) { m = xml_getencodingr( node->next ); if ( m!=CHARSET_UNKNOWN ) n = m; } return n; } int xml_getencoding( newstr *s ) { newstr descriptor; xml descriptxml; int file_charset = CHARSET_UNKNOWN; char *p, *q; p = strstr( s->data, "data, "" ); if ( q ) { newstr_init( &descriptor ); newstr_segcpy( &descriptor, p, q+2 ); xml_init( &descriptxml ); xml_tree( descriptor.data, &descriptxml ); file_charset = xml_getencodingr( &descriptxml ); xml_free( &descriptxml ); newstr_free( &descriptor ); newstr_segdel( s, p, q+2 ); } } return file_charset; } referencer-1.2.1/libbibutils/endout.c0000664000175000017500000002405712042412720014526 00000000000000/* * endout.c * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #include #include #include #include #include "newstr.h" #include "strsearch.h" #include "fields.h" #include "endout.h" enum { TYPE_UNKNOWN = 0, TYPE_GENERIC, TYPE_ARTICLE, TYPE_MAGARTICLE, TYPE_BOOK, TYPE_INBOOK, TYPE_INPROCEEDINGS, TYPE_HEARING, TYPE_BILL, TYPE_CASE, TYPE_NEWSPAPER, TYPE_COMMUNICATION, TYPE_BROADCAST, TYPE_MANUSCRIPT, TYPE_REPORT, TYPE_THESIS, TYPE_MASTERSTHESIS, TYPE_PHDTHESIS, TYPE_DIPLOMATHESIS, TYPE_DOCTORALTHESIS, TYPE_HABILITATIONTHESIS, TYPE_PATENT, TYPE_PROGRAM }; typedef struct match_type { char *name; int type; } match_type; static int get_type( fields *info ) { match_type match_genres[] = { { "academic journal", TYPE_ARTICLE }, { "magazine", TYPE_MAGARTICLE }, { "conference publication", TYPE_INPROCEEDINGS }, { "hearing", TYPE_HEARING }, { "Ph.D. thesis", TYPE_PHDTHESIS }, { "Masters thesis", TYPE_MASTERSTHESIS }, { "Diploma thesis", TYPE_DIPLOMATHESIS }, { "Doctoral thesis", TYPE_DOCTORALTHESIS }, { "Habilitation thesis", TYPE_HABILITATIONTHESIS }, { "legislation", TYPE_BILL }, { "newspaper", TYPE_NEWSPAPER }, { "communication", TYPE_COMMUNICATION }, { "manuscript", TYPE_MANUSCRIPT }, { "report", TYPE_REPORT }, { "legal case and case notes", TYPE_CASE }, { "patent", TYPE_PATENT }, }; int nmatch_genres = sizeof( match_genres ) / sizeof( match_genres[0] ); char *tag, *data; int i, j, type = TYPE_UNKNOWN; for ( i=0; infields; ++i ) { tag = info->tag[i].data; if ( strcasecmp( tag, "GENRE" )!=0 && strcasecmp( tag, "NGENRE" )!=0 ) continue; data = info->data[i].data; for ( j=0; jlevel[i]==0 ) type = TYPE_BOOK; else type = TYPE_INBOOK; } else if ( !strcasecmp( data, "collection" ) ) { if ( info->level[i]==0 ) type = TYPE_BOOK; else type = TYPE_INBOOK; } if ( type!=TYPE_UNKNOWN ) fields_setused( info, i ); } } if ( type==TYPE_UNKNOWN ) { for ( i=0; infields; ++i ) { if ( strcasecmp( info->tag[i].data, "RESOURCE" ) ) continue; data = info->data[i].data; if ( !strcasecmp( data, "moving image" ) ) type = TYPE_BROADCAST; else if ( !strcasecmp( data, "software, multimedia" ) ) type = TYPE_PROGRAM; if ( type!=TYPE_UNKNOWN ) fields_setused( info, i ); } } /* default to generic */ if ( type==TYPE_UNKNOWN ) type = TYPE_GENERIC; return type; } static void output_type( FILE *fp, int type ) { fprintf( fp, "%%0 "); switch( type ) { case TYPE_GENERIC: fprintf( fp, "Generic" ); break; case TYPE_ARTICLE: fprintf( fp, "Journal Article" ); break; case TYPE_MAGARTICLE: fprintf( fp, "Magazine Article" ); break; case TYPE_INBOOK: fprintf( fp, "Book Section" ); break; case TYPE_BOOK: fprintf( fp, "Book" ); break; case TYPE_HEARING: fprintf( fp, "Hearing" ); break; case TYPE_BILL: fprintf( fp, "Bill" ); break; case TYPE_CASE: fprintf( fp, "Case" ); break; case TYPE_BROADCAST: fprintf( fp, "Film or Broadcast" ); break; case TYPE_NEWSPAPER: fprintf( fp, "Newspaper Article" ); break; case TYPE_MANUSCRIPT: fprintf( fp, "Manuscript" ); break; case TYPE_REPORT: fprintf( fp, "Report" ); break; case TYPE_THESIS: case TYPE_PHDTHESIS: case TYPE_MASTERSTHESIS: case TYPE_DIPLOMATHESIS: case TYPE_DOCTORALTHESIS: case TYPE_HABILITATIONTHESIS: fprintf( fp, "Thesis" ); break; case TYPE_COMMUNICATION: fprintf( fp, "Personal Communication" ); break; case TYPE_INPROCEEDINGS: fprintf( fp, "Conference Proceedings" ); break; case TYPE_PATENT: fprintf( fp, "Patent" ); break; case TYPE_PROGRAM: fprintf( fp, "Computer Program" ); break; } fprintf( fp, "\n" ); } static void output_title( FILE *fp, fields *info, char *full, char *sub, char *endtag, int level ) { int n1 = fields_find( info, full, level ); int n2 = fields_find( info, sub, level ); if ( n1!=-1 ) { fprintf( fp, "%s %s", endtag, info->data[n1].data ); fields_setused( info, n1 ); if ( n2!=-1 ) { if ( info->data[n1].data[info->data[n1].len]!='?' ) fprintf( fp, ": " ); else fprintf( fp, " " ); fprintf( fp, "%s", info->data[n2].data ); fields_setused( info, n2 ); } fprintf( fp, "\n" ); } } static void output_person( FILE *fp, char *p ) { int nseps = 0, nch; while ( *p ) { nch = 0; if ( nseps ) fprintf( fp, " " ); while ( *p && *p!='|' ) { fprintf( fp, "%c", *p++ ); nch++; } if ( *p=='|' ) p++; if ( nseps==0 ) fprintf( fp, "," ); else if ( nch==1 ) fprintf( fp, "." ); nseps++; } } static void output_people( FILE *fp, fields *info, char *tag, char *entag, int level ) { int i; for ( i=0; infields; ++i ) { if ( level!=-1 && info->level[i]!=level ) continue; if ( !strcasecmp( info->tag[i].data, tag ) ) { fprintf( fp, "%s ", entag ); output_person( fp, info->data[i].data ); fprintf( fp, "\n" ); } } } static void output_pages( FILE *fp, fields *info ) { int sn = fields_find( info, "PAGESTART", -1 ); int en = fields_find( info, "PAGEEND", -1 ); int ar = fields_find( info, "ARTICLENUMBER", -1 ); if ( sn!=-1 || en!=-1 ) { fprintf( fp, "%%P "); if ( sn!=-1 ) fprintf( fp, "%s", info->data[sn].data ); if ( sn!=-1 && en!=-1 ) fprintf( fp, "-" ); if ( en!=-1 ) fprintf( fp, "%s", info->data[en].data ); fprintf( fp, "\n"); } else if ( ar!=-1 ) { fprintf( fp, "%%P %s", info->data[ar].data ); } } static void output_year( FILE *fp, fields *info, int level ) { int year = fields_find( info, "YEAR", level ); if ( year==-1 ) year = fields_find( info, "PARTYEAR", level ); if ( year!=-1 ) fprintf( fp, "%%D %s\n", info->data[year].data ); } static void output_monthday( FILE *fp, fields *info, int level ) { char *months[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int m; int month = fields_find( info, "MONTH", level ); int day = fields_find( info, "DAY", level ); if ( month==-1 ) month = fields_find( info, "PARTMONTH", level ); if ( day==-1 ) day = fields_find( info, "PARTDAY", level ); if ( month!=-1 || day!=-1 ) { fprintf( fp, "%%8 " ); if ( month!=-1 ) { m = atoi( info->data[month].data ); if ( m>0 && m<13 ) fprintf( fp, "%s", months[m-1] ); else fprintf( fp, "%s", info->data[month].data ); } if ( month!=-1 && day!=-1 ) fprintf( fp, " " ); if ( day!=-1 ) fprintf( fp, "%s", info->data[day].data ); fprintf( fp, "\n" ); } } static void output_thesishint( FILE *fp, int type ) { if ( type==TYPE_MASTERSTHESIS ) fprintf( fp, "%%9 Masters thesis\n" ); else if ( type==TYPE_PHDTHESIS ) fprintf( fp, "%%9 Ph.D. thesis\n" ); else if ( type==TYPE_DIPLOMATHESIS ) fprintf( fp, "%%9 Diploma thesis\n" ); else if ( type==TYPE_DOCTORALTHESIS ) fprintf( fp, "%%9 Doctoral thesis\n" ); else if ( type==TYPE_HABILITATIONTHESIS ) fprintf( fp, "%%9 Habilitation thesis\n" ); } static void output_easyall( FILE *fp, fields *info, char *tag, char *entag, int level ) { int i; for ( i=0; infields; ++i ) { if ( level!=-1 && info->level[i]!=level ) continue; if ( !strcmp( info->tag[i].data, tag ) ) fprintf( fp, "%s %s\n", entag, info->data[i].data ); } } static void output_easy( FILE *fp, fields *info, char *tag, char *entag, int level ) { int n = fields_find( info, tag, level ); if ( n!=-1 ) fprintf( fp, "%s %s\n", entag, info->data[n].data ); } void endout_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ) { int type; fields_clearused( info ); type = get_type( info ); output_type( fp, type ); output_title( fp, info, "TITLE", "SUBTITLE", "%T", 0 ); output_title( fp, info, "SHORTTITLE", "SHORTSUBTITLE", "%!", 0 ); output_people( fp, info, "AUTHOR", "%A", 0 ); output_people( fp, info, "EDITOR", "%E", -1 ); if ( type==TYPE_CASE ) output_easy( fp, info, "AUTHOR:CORP", "%I", 0 ); else if ( type==TYPE_HEARING ) output_easyall( fp, info, "AUTHOR:CORP", "%S", 0 ); else if ( type==TYPE_NEWSPAPER ) output_people( fp, info, "REPORTER", "%A", 0 ); else if ( type==TYPE_COMMUNICATION ) output_people( fp, info, "RECIPIENT", "%E", -1 ); else { output_easy( fp, info, "AUTHOR:CORP", "%A", 0 ); output_easy( fp, info, "AUTHOR:ASIS", "%A", 0 ); output_easy( fp, info, "EDITOR:CORP", "%E", -1 ); output_easy( fp, info, "EDITOR:ASIS", "%E", -1 ); } if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE ) output_title( fp, info, "TITLE", "SUBTITLE", "%J", 1 ); else output_title( fp, info, "TITLE", "SUBTITLE", "%B", 1 ); output_year( fp, info, -1 ); output_monthday( fp, info, -1 ); output_easy( fp, info, "VOLUME", "%V", -1 ); output_easy( fp, info, "ISSUE", "%N", -1 ); output_easy( fp, info, "NUMBER", "%N", -1 ); output_easy( fp, info, "EDITION", "%7", -1 ); output_easy( fp, info, "PUBLISHER", "%I", -1 ); output_easy( fp, info, "ADDRESS", "%C", -1 ); output_easy( fp, info, "DEGREEGRANTOR", "%C", -1 ); output_easy( fp, info, "DEGREEGRANTOR:CORP", "%C", -1 ); output_easy( fp, info, "DEGREEGRANTOR:ASIS", "%C", -1 ); output_easy( fp, info, "SERIALNUM", "%@", -1 ); output_easy( fp, info, "ISSN", "%@", -1 ); output_easy( fp, info, "ISBN", "%@", -1 ); output_easy( fp, info, "REFNUM", "%F", -1 ); output_easyall( fp, info, "NOTES", "%O", -1 ); output_easy( fp, info, "ABSTRACT", "%X", -1 ); output_easy( fp, info, "CLASSIFICATION", "%L", -1 ); output_easyall( fp, info, "KEYWORD", "%K", -1 ); output_easyall( fp, info, "NGENRE", "%9", -1 ); output_thesishint( fp, type ); output_easyall( fp, info, "URL", "%U", -1 ); output_pages( fp, info ); fprintf( fp, "\n" ); fflush( fp ); } referencer-1.2.1/libbibutils/title.c0000664000175000017500000000220112042412720014334 00000000000000/* * title.c * * process titles into title/subtitle pairs for MODS * * Copyright (c) Chris Putnam 2004-5 * * Source code released under the GPL * */ #include #include #include #include "newstr.h" #include "fields.h" #include "title.h" #include "is_ws.h" void title_process( fields *info, char *tag, char *data, int level ) { newstr title, subtitle; char *p, *q; newstr_init( &title ); newstr_init( &subtitle ); q = strstr( data, ": " ); if ( !q ) q = strstr( data, "? " ); if ( !q ) newstr_strcpy( &title, data ); else { p = data; while ( p!=q ) newstr_addchar( &title, *p++ ); if ( *q=='?' ) newstr_addchar( &title, '?' ); /* q += 2;*/ q++; while ( is_ws( *q ) ) q++; while ( *q ) newstr_addchar( &subtitle, *q++ ); } if ( strncasecmp( "SHORT", tag, 5 ) ) { if ( title.len>0 ) fields_add( info, "TITLE", title.data, level ); if ( subtitle.len>0 ) fields_add( info, "SUBTITLE", subtitle.data, level ); } else { if ( title.len>0 ) fields_add( info, "SHORTTITLE", title.data, level ); /* no SHORT-SUBTITLE! */ } newstr_free( &subtitle ); newstr_free( &title ); } referencer-1.2.1/libbibutils/xml.c0000664000175000017500000002067012042412720014025 00000000000000/* * xml.c * * Copyright (c) Chris Putnam 2004-5 * * Source code released under the GPL * */ #include #include #include #include "is_ws.h" #include "strsearch.h" #include "newstr.h" #include "xml.h" #define TRUE (1) #define FALSE (0) static xml_attrib * xmlattrib_new( void ) { xml_attrib *a = (xml_attrib *) malloc( sizeof( xml_attrib ) ); if ( a ) { lists_init( &(a->attrib) ); lists_init( &(a->value) ); } return a; } static void xmlattrib_add( xml_attrib *a, char *attrib, char *value ) { lists_add( &(a->attrib), attrib ); lists_add( &(a->value), value ); } static void xmlattrib_free( xml_attrib *a ) { lists_free( &(a->attrib) ); lists_free( &(a->value ) ); } static xml * xml_new( void ) { xml *x = ( xml * ) malloc( sizeof( xml ) ); if ( x ) xml_init( x ); return x; } void xml_free( xml *x ) { if ( x->tag ) newstr_free( x->tag ); if ( x->value ) newstr_free( x->value ); if ( x->a ) xmlattrib_free( x->a ); if ( x->down ) xml_free( x->down ); if ( x->next ) xml_free( x->next ); } void xml_init( xml *x ) { x->tag = newstr_new(); x->value = newstr_new(); x->a = NULL; x->down = NULL; x->next = NULL; if ( !(x->tag) || !(x->value) ) { fprintf(stderr,"xml_init: memory error.\n"); exit( EXIT_FAILURE ); } #ifdef COUNT_TRAVERSAL x->count = 0; #endif } enum { XML_DESCRIPTOR, XML_COMMENT, XML_OPEN, XML_CLOSE, XML_OPENCLOSE }; static int xml_terminator( char *p, int *type ) { if ( *p=='>' ) { return 1; } else if ( *p=='/' && *(p+1)=='>' ) { if ( *type==XML_OPENCLOSE ) return 1; else if ( *type==XML_OPEN ) { *type = XML_OPENCLOSE; return 1; } } else if ( *p=='?' && *(p+1)=='>' && *type==XML_DESCRIPTOR ) { return 1; } else if ( *p=='!' && *(p+1)=='>' && *type==XML_COMMENT ) { return 1; } return 0; } static char * xml_processattrib( char *p, xml_attrib **ap, int *type ) { xml_attrib *a = NULL; char quote_character = '\"'; int inquotes = 0; newstr aname, aval; newstr_init( &aname ); newstr_init( &aval ); while ( *p && !xml_terminator(p,type) ) { /* get attribute name */ while ( *p==' ' || *p=='\t' ) p++; while ( *p && !strchr( "= \t", *p ) && !xml_terminator(p,type)){ newstr_addchar( &aname, *p ); p++; } while ( *p==' ' || *p=='\t' ) p++; if ( *p=='=' ) p++; /* get attribute value */ while ( *p==' ' || *p=='\t' ) p++; if ( *p=='\"' || *p=='\'' ) { if ( *p=='\'' ) quote_character = *p; inquotes=1; p++; } while ( *p && ((!xml_terminator(p,type) && !strchr("= \t", *p ))||inquotes)){ if ( *p==quote_character ) inquotes=0; else newstr_addchar( &aval, *p ); p++; } if ( aname.len ) { if ( !a ) a = xmlattrib_new(); xmlattrib_add( a, aname.data, aval.data ); } newstr_empty( &aname ); newstr_empty( &aval ); } newstr_free( &aname ); newstr_free( &aval ); *ap = a; return p; } /* * xml_processtag * * XML_COMMENT * XML_DESCRIPTOR * XML_OPEN * XML_CLOSE * XML_OPENCLOSE */ static char * xml_processtag( char *p, newstr *tag, xml_attrib **attrib, int *type ) { *attrib = NULL; if ( *p=='<' ) p++; if ( *p=='!' ) { while ( *p && *p!='>' ) newstr_addchar( tag, *p++ ); *type = XML_COMMENT; } else if ( *p=='?' ) { *type = XML_DESCRIPTOR; p++; /* skip '?' */ while ( *p && !strchr( " \t", *p ) && !xml_terminator(p,type) ) newstr_addchar( tag, *p++ ); if ( *p==' ' || *p=='\t' ) p = xml_processattrib( p, attrib, type ); } else if ( *p=='/' ) { while ( *p && !strchr( " \t", *p ) && !xml_terminator(p,type) ) newstr_addchar( tag, *p++ ); *type = XML_CLOSE; if ( *p==' ' || *p=='\t' ) p = xml_processattrib( p, attrib, type ); } else { *type = XML_OPEN; while ( *p && !strchr( " \t", *p ) && !xml_terminator(p,type) ) newstr_addchar( tag, *p++ ); if ( *p==' ' || *p=='\t' ) p = xml_processattrib( p, attrib, type ); } while ( *p && *p!='>' ) p++; if ( *p=='>' ) p++; return p; } static void xml_appendnode( xml *onode, xml *nnode ) { if ( !onode->down ) onode->down = nnode; else { xml *p = onode->down; while ( p->next ) p = p->next; p->next = nnode; } } char * xml_tree( char *p, xml *onode ) { newstr tag; xml_attrib *attrib; int type, is_style = 0; newstr_init( &tag ); while ( *p ) { /* retain white space for * * * aaaaaa * * * * */ void endxmlin_datar( xml *node, newstr *s ) { if ( node->value && node->value->len ) newstr_strcat( s, node->value->data ); if ( node->down && xml_tagexact( node->down, "style" ) ) endxmlin_datar( node->down, s ); if ( xml_tagexact( node, "style" ) && node->next ) endxmlin_datar( node->next, s ); } void endxmlin_data( xml *node, char *inttag, fields *info, int level ) { newstr s; newstr_init( &s ); endxmlin_datar( node, &s ); if ( s.len ) fields_add( info, inttag, s.data, level ); newstr_free( &s ); } /* * * <style>ACTUAL TITLE HERE</style><style>MORE TITLE</style> * * */ void endxmlin_titles( xml *node, fields *info ) { attribs a[] = { { "title", "%T" }, { "secondary-title", "%B" }, { "tertiary-title", "%S" }, { "alt-title", "%!" }, { "short-title", "SHORTTITLE" }, }; int i, n = sizeof( a ) / sizeof ( a[0] ); newstr title; newstr_init( &title ); for ( i=0; idown ) { newstr_empty( &title ); endxmlin_datar( node, &title ); fields_add( info, a[i].internal, title.data, 0); } } if ( node->next ) endxmlin_titles( node->next, info ); newstr_free( &title ); } /* * * * * * * */ /* * * Don't use endxmlin_data() as we need to add these as names... */ void endxmlin_contributor( xml *node, fields *info, char *int_tag ) { if ( node->down && xml_tagexact( node->down, "author" ) ) { endxmlin_contributor( node->down, info, int_tag ); } else if ( node->down && xml_tagexact( node->down, "style" ) ) { endxmlin_contributor( node->down, info, int_tag ); } else { if ( node->value && node->value->len ) fields_add( info, int_tag, node->value->data, 0 ); } if ( node->next ) endxmlin_contributor( node->next, info, int_tag ); } static void endxmlin_contributors( xml *node, fields *info ) { attribs contrib[] = { { "authors", "%A" }, { "secondary-authors", "%E" }, { "tertiary-authors", "%Y" }, { "subsidiary-authors", "%?" }, { "translated-authors", "%?" }, }; int i, n = sizeof( contrib ) / sizeof ( contrib[0] ); for ( i=0; idown ) endxmlin_contributor( node->down, info, contrib[i].internal ); } if ( node->next ) endxmlin_contributors( node->next, info ); } static void endxmlin_keyword( xml *node, fields *info ) { if ( xml_tagexact( node, "keyword" ) ) endxmlin_data( node, "%K", info, 0 ); if ( node->next ) endxmlin_keyword( node->next, info ); } static void endxmlin_keywords( xml *node, fields *info ) { if ( node->down && xml_tagexact( node->down, "keyword" ) ) endxmlin_keyword( node->down, info ); } static void endxmlin_urls( xml *node, fields *info ) { if ( xml_tagexact( node, "url" ) ) endxmlin_data( node, "%U", info, 0 ); else { if ( node->down ) { if ( xml_tagexact( node->down, "related-urls" ) || xml_tagexact( node->down, "url" ) ) endxmlin_urls( node->down, info ); } } if ( node->next ) endxmlin_urls( node->next, info ); } static void endxmlin_pubdates( xml *node, fields *info ) { if ( xml_tagexact( node, "date" ) ) endxmlin_data( node, "%8", info, 0 ); else { if ( node->down && xml_tagexact( node->down, "date" ) ) endxmlin_pubdates( node->down, info ); } } static void endxmlin_dates( xml *node, fields *info ) { if ( xml_tagexact( node, "year" ) ) endxmlin_data( node, "%D", info, 0 ); else { if ( node->down ) { if ( xml_tagexact( node->down, "year" ) ) endxmlin_dates( node->down, info ); if ( xml_tagexact( node->down, "pub-dates" ) ) endxmlin_pubdates( node->down, info ); } } if ( node->next ) endxmlin_dates( node->next, info ); } #ifdef NOCOMPILE /* * There are a lot of elements in the end2xml stuff buried in element * attributes for which it's not clear where they should get stuck * -- for now put into notes */ static void endxmlin_makeattribnotes( xml *node, fields *info, int level, attribs *a, int na ) { newstr *attrib, note; int i; newstr_init( ¬e ); for ( i=0; idata ); fields_add( info, "%O", note.data, level ); newstr_empty( ¬e ); } } newstr_free( ¬e ); } #endif #ifdef NOCOMPILE /* * */ static void endxmlin_sourceapp( xml *node, fields *info ) { attribs a[] = { { "name", "SOURCE APPLICATION NAME" }, { "version", "SOURCE APPLICATION VERSION" } }; int na = sizeof( a ) / sizeof( a[0] ); endxmlin_makeattribnotes( node, info, 0, a, na ); } /* * */ static void endxmlin_database( xml *node, fields *info ) { attribs a[] = { { "name", "DATABASE NAME" }, { "path", "DATABASE PATH" } }; int na = sizeof( a ) / sizeof( a[0] ); endxmlin_makeattribnotes( node, info, 0, a, na ); } #endif /* * 17 */ static void endxmlin_reftype( xml *node, fields *info ) { newstr *s; s = xml_getattrib( node, "name" ); if ( s && s->dim ) { fields_add( info, "%0", s->data, 0 ); newstr_free( s ); } } static void endxmlin_record( xml *node, fields *info ) { attribs a[] = { { "volume", "%V" }, { "num-vol", "%6" }, { "pages", "%P" }, { "number", "%N" }, { "issue", "%N" }, { "label", "%F" }, { "auth-address", "%C" }, { "auth-affiliation", "%C" }, { "publisher", "%I" }, { "abstract", "%X" }, { "edition", "%7" }, { "reprint-edition", "%)" }, { "section", "%&" }, { "accession-num", "%M" }, { "call-num", "%L" }, { "isbn", "%@" }, { "notes", "%O" }, { "custom1", "%1" }, { "custom2", "%2" }, { "custom3", "%3" }, { "custom4", "%4" }, { "custom5", "%#" }, { "custom6", "%$" }, }; int i, n = sizeof ( a ) / sizeof( a[0] ); if ( xml_tagexact( node, "DATABASE" ) ) { /* endxmlin_database( node, info );*/ } else if ( xml_tagexact( node, "SOURCE-APP" ) ) { /* endxmlin_sourceapp( node, info );*/ } else if ( xml_tagexact( node, "REC-NUMBER" ) ) { } else if ( xml_tagexact( node, "ref-type" ) ) { endxmlin_reftype( node, info ); } else if ( xml_tagexact( node, "contributors" ) ) { if ( node->down ) endxmlin_contributors( node->down, info ); } else if ( xml_tagexact( node, "titles" ) ) { if ( node->down ) endxmlin_titles( node->down, info ); } else if ( xml_tagexact( node, "keywords" ) ) { endxmlin_keywords( node, info ); } else if ( xml_tagexact( node, "urls" ) ) { endxmlin_urls( node, info ); } else if ( xml_tagexact( node, "dates" ) ) { endxmlin_dates( node, info ); } else if ( xml_tagexact( node, "periodical" ) ) { } else if ( xml_tagexact( node, "secondary-volume" ) ) { } else if ( xml_tagexact( node, "secondary-issue" ) ) { } else if ( xml_tagexact( node, "reprint-status" ) ) { } else if ( xml_tagexact( node, "pub-location" ) ) { } else if ( xml_tagexact( node, "orig-pub" ) ) { } else if ( xml_tagexact( node, "report-id" ) ) { } else if ( xml_tagexact( node, "coden" ) ) { } else if ( xml_tagexact( node, "electronic-resource-num" ) ) { } else if ( xml_tagexact( node, "caption" ) ) { } else if ( xml_tagexact( node, "research-notes" ) ) { } else if ( xml_tagexact( node, "work-type" ) ) { } else if ( xml_tagexact( node, "reviewed-item" ) ) { } else if ( xml_tagexact( node, "availability" ) ) { } else if ( xml_tagexact( node, "remote-source" ) ) { } else if ( xml_tagexact( node, "meeting-place" ) ) { } else if ( xml_tagexact( node, "work-location" ) ) { } else if ( xml_tagexact( node, "work-extent" ) ) { } else if ( xml_tagexact( node, "pack-method" ) ) { } else if ( xml_tagexact( node, "size" ) ) { } else if ( xml_tagexact( node, "repro-ratio" ) ) { } else if ( xml_tagexact( node, "remote-database-name" ) ) { } else if ( xml_tagexact( node, "remote-database-provider" ) ) { } else if ( xml_tagexact( node, "language" ) ) { } else if ( xml_tagexact( node, "access-date" ) ) { } else if ( xml_tagexact( node, "modified-data" ) ) { } else if ( xml_tagexact( node, "misc1" ) ) { } else if ( xml_tagexact( node, "misc2" ) ) { } else if ( xml_tagexact( node, "misc3" ) ) { } else { for ( i=0; inext ) endxmlin_record( node->next, info ); } static void endxmlin_assembleref( xml *node, fields *info ) { if ( node->tag->len==0 ) { if ( node->down ) endxmlin_assembleref( node->down, info ); return; } else if ( xml_tagexact( node, "RECORD" ) ) { if ( node->down ) endxmlin_record( node->down, info ); } } /* endxmlin_processf first operates by converting to endnote input * the endnote->mods conversion happens in convertf. * * this is necessary as the xml format is as nasty and as overloaded * as the tags used in the Refer format output */ int endxmlin_processf( fields *fin, char *data, char *filename, long nref ) { xml top; xml_init( &top ); xml_tree( data, &top ); endxmlin_assembleref( &top, fin ); xml_free( &top ); return 1; } referencer-1.2.1/libbibutils/fields.c0000664000175000017500000001023112042412720014463 00000000000000/* * fields.c * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #include #include #include #include "strsearch.h" #include "fields.h" int fields_add( fields *info, char *tag, char *data, int level ) { newstr *newtags, *newdata; int *newused, *newlevel; int min_alloc = 20, i, found; if ( !tag || !data ) return 1; if ( info->maxfields==0 ){ info->tag = (newstr*)malloc( sizeof(newstr) * min_alloc ); info->data= (newstr*)malloc( sizeof(newstr) * min_alloc ); info->used= (int*) malloc( sizeof(int) * min_alloc ); info->level=(int*) malloc( sizeof(int) * min_alloc ); if ( !info->tag || !info->data || !info->used || !info->level ){ if ( info->tag ) free( info->tag ); if ( info->data ) free( info->data ); if ( info->used ) free( info->used ); if ( info->level ) free( info->level ); return 0; } info->maxfields = min_alloc; info->nfields = 0; for ( i=0; itag[i])); newstr_init(&(info->data[i])); } } else if ( info->nfields >= info->maxfields ){ min_alloc = info->maxfields * 2; newtags = (newstr*) realloc( info->tag, sizeof(newstr) * min_alloc ); newdata = (newstr*) realloc( info->data, sizeof(newstr) * min_alloc ); newused = (int*) realloc( info->used, sizeof(int) * min_alloc ); newlevel= (int*) realloc( info->level, sizeof(int) * min_alloc ); if ( !newtags || !newdata || !newused || !newlevel ) { if ( newtags ) info->tag=newtags; if ( newdata ) info->data=newdata; if ( newused ) info->used=newused; if ( newlevel ) info->level=newlevel; return 0; } info->tag = newtags; info->data = newdata; info->used = newused; info->level = newlevel; info->maxfields = min_alloc; for ( i=info->nfields; itag[i])); newstr_init(&(info->data[i])); } } found = 0; for ( i=0; infields && !found; ++i ) { if ( info->level[i]==level && !strcasecmp( info->tag[i].data, tag ) && !strcasecmp( info->data[i].data, data ) ) found=1; } if ( !found ) { newstr_strcpy( &(info->tag[info->nfields]), tag ); newstr_strcpy( &(info->data[info->nfields]), data ); info->used[ info->nfields ] = 0; info->level[ info->nfields ] = level; info->nfields++; } return 1; } int fields_add_tagsuffix( fields *info, char *tag, char *suffix, char *data, int level ) { char *buf; int len, ret; len = strlen( tag ) + strlen( suffix ) + 1; buf = ( char * ) malloc( sizeof(char)*len ); if ( !buf ) return 0; strcpy( buf, tag ); strcat( buf, suffix ); ret = fields_add( info, buf, data, level ); free( buf ); return ret; } fields* fields_new( void ) { fields *info = ( fields * ) malloc( sizeof( fields ) ); if ( info ) fields_init( info ); return info; } void fields_init( fields *info ) { info->used = NULL; info->level = NULL; info->tag = NULL; info->data = NULL; info->maxfields = info->nfields = 0; } void fields_free( fields *info ) { int i; for (i=0; imaxfields; ++i) { newstr_free( &(info->tag[i]) ); newstr_free( &(info->data[i]) ); } if ( info->tag ) free( info->tag ); if ( info->data ) free( info->data ); if ( info->used ) free( info->used ); if ( info->level ) free( info->level ); fields_init( info ); } int fields_find( fields *info, char *searchtag, int level ) { int i, found = -1; for ( i=0; infields && found==-1; ++i ) { if ( (level==-1 || level==info->level[i]) && // strsearch( info->tag[i].data, searchtag )==info->tag[i].data ) { !strcasecmp( info->tag[i].data, searchtag ) ) { found = i; /* if there is no data for the tag, mark as unfound */ /* but set "used" so noise is suppressed */ if ( info->data[i].len==0 ) { found=-1; info->used[i] = 1; } } } return found; } int fields_maxlevel( fields *info ) { int i, max = 0; for ( i=0; infields; ++i ) { if ( info->level[i]>max ) max = info->level[i]; } return max; } void fields_clearused( fields *info ) { int i; for ( i=0; infields; ++i ) info->used[i] = 0; } void fields_setused( fields *info, int n ) { if ( n < info->nfields ) info->used[n] = 1; } referencer-1.2.1/libbibutils/xml_encoding.h0000664000175000017500000000010212042412720015664 00000000000000/* xml_getencoding.h */ extern int xml_getencoding( newstr *s ); referencer-1.2.1/libbibutils/serialno.h0000664000175000017500000000037012042412720015041 00000000000000/* * serialno.h * * Copyright (c) Chris Putnam 2005-7 * * Source code released under the GPL * */ #ifndef SERIALNO_H #define SERIALNO_H #include #include "fields.h" extern void addsn( fields *info, char *buf, int level ); #endif referencer-1.2.1/libbibutils/risin.c0000664000175000017500000001540012042412720014344 00000000000000/* * risin.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include #include #include #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "lists.h" #include "fields.h" #include "name.h" #include "title.h" #include "serialno.h" #include "reftypes.h" #include "risin.h" extern lists asis; extern lists corps; /* RIS definition of a tag is strict: character 1 = uppercase alphabetic character character 2 = uppercase alphabetic character or digit character 3 = space (ansi 32) character 4 = space (ansi 32) character 5 = dash (ansi 45) character 6 = space (ansi 32) */ static int risin_istag( char *buf ) { if (! (buf[0]>='A' && buf[0]<='Z') ) return 0; if (! (((buf[1]>='A' && buf[1]<='Z'))||(buf[1]>='0'&&buf[1]<='9')) ) return 0; if (buf[2]!=' ') return 0; if (buf[3]!=' ') return 0; if (buf[4]!='-') return 0; if (buf[5]!=' ') return 0; return 1; } static int readmore( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line ) { if ( line->len ) return 1; else return newstr_fget( fp, buf, bufsize, bufpos, line ); } int risin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { int haveref = 0, inref = 0, readtoofar = 0; char *p; while ( !haveref && readmore( fp, buf, bufsize, bufpos, line ) ) { if ( !line->data || line->len==0 ) continue; p = &( line->data[0] ); /* Each reference starts with 'TY - ' && ends with 'ER - ' */ if ( strncmp(p,"TY - ",6)==0 ) { if ( !inref ) { inref = 1; } else { /* we've read too far.... */ readtoofar = 1; inref = 0; } } if ( risin_istag( p ) ) { if ( !inref ) { fprintf(stderr,"Warning. Tagged line not " "in properly started reference.\n"); fprintf(stderr,"Ignored: '%s'\n", p ); } else if ( !strncmp(p,"ER -",5) ) { inref = 0; } else { newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); } } /* not a tag, but we'll append to last values ...*/ else if ( inref && strncmp(p,"ER -",5)) { newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); } if ( !inref && reference->len ) haveref = 1; if ( !readtoofar ) newstr_empty( line ); } if ( inref ) haveref = 1; *fcharset = CHARSET_UNKNOWN; return haveref; } /* * risprocess.c * * Copyright (c) Chris Putnam 2003-5 * * Program and source code released under the GPL * */ static char* process_line2( newstr *tag, newstr *data, char *p ) { while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) newstr_addchar( data, *p++ ); while ( *p=='\r' || *p=='\n' ) p++; return p; } static char* process_line( newstr *tag, newstr *data, char *p ) { int i = 0; while ( i<6 && *p ) { if ( i<2 ) newstr_addchar( tag, *p ); p++; i++; } while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) newstr_addchar( data, *p++ ); newstr_trimendingws( data ); while ( *p=='\n' || *p=='\r' ) p++; return p; } int risin_processf( fields *risin, char *p, char *filename, long nref ) { newstr tag, data; newstr_init( &tag ); newstr_init( &data ); while ( *p ) { if ( risin_istag( p ) ) { p = process_line( &tag, &data, p ); /* no anonymous or empty fields allowed */ if ( tag.len && data.len ) fields_add( risin, tag.data, data.data, 0 ); } else { p = process_line2( &tag, &data, p ); if ( data.len && risin->nfields>0 ) { newstr *od; od = &(risin->data[risin->nfields-1] ); newstr_addchar( od, ' ' ); newstr_strcat( od, data.data ); } } newstr_empty( &tag ); newstr_empty( &data ); } newstr_free( &tag ); newstr_free( &data ); return 1; } static void adddate( fields *info, char *tag, char *p, int level ) { newstr date; int part = ( !strncasecmp( tag, "PART", 4 ) ); newstr_init( &date ); while ( *p && *p!='/' ) newstr_addchar( &date, *p++ ); if ( *p=='/' ) p++; if ( date.len>0 ) { if ( part ) fields_add( info, "PARTYEAR", date.data, level ); else fields_add( info, "YEAR", date.data, level ); } newstr_empty( &date ); while ( *p && *p!='/' ) newstr_addchar( &date, *p++ ); if ( *p=='/' ) p++; if ( date.len>0 ) { if ( part ) fields_add( info, "PARTMONTH", date.data, level ); else fields_add( info, "MONTH", date.data, level ); } newstr_empty( &date ); while ( *p && *p!='/' ) newstr_addchar( &date, *p++ ); if ( *p=='/' ) p++; if ( date.len>0 ) { if ( part ) fields_add( info, "PARTDAY", date.data, level ); else fields_add( info, "DAY", date.data, level ); } newstr_empty( &date ); while ( *p ) newstr_addchar( &date, *p++ ); if ( date.len>0 ) { if ( part ) fields_add( info, "PARTDATEOTHER", date.data,level); else fields_add( info, "DATEOTHER", date.data, level ); } newstr_free( &date ); } int risin_typef( fields *risin, char *filename, int nref, variants *all, int nall ) { char *refnum = ""; int n, reftype, nreftype; n = fields_find( risin, "TY", 0 ); nreftype = fields_find( risin, "ID", 0 ); if ( nreftype!=-1 ) refnum = risin[n].data->data; if ( n!=-1 ) reftype = get_reftype( (risin[n].data)->data, nref, all, nall, refnum ); else reftype = get_reftype( "", nref, all, nall, refnum ); /*default */ return reftype; } void risin_convertf( fields *risin, fields *info, int reftype, int verbose, variants *all, int nall ) { newstr *t, *d; int process, level, i, n; char *newtag; for ( i=0; infields; ++i ) { t = &( risin->tag[i] ); d = &( risin->data[i] ); n = process_findoldtag( t->data, reftype, all, nall ); if ( n==-1 ) { if ( verbose && strcmp(t->data,"TY") ) { fprintf( stderr, "Did not identify RIS tag " "'%s'\n", t->data ); } continue; } process = ((all[reftype]).tags[n]).processingtype; level = ((all[reftype]).tags[n]).level; newtag = ((all[reftype]).tags[n]).newstr; if ( process==SIMPLE ) fields_add( info, newtag, d->data, level ); else if ( process==PERSON ) name_add( info, newtag, d->data, level ); else if ( process==TITLE ) title_process( info, newtag, d->data, level ); else if ( process==DATE ) adddate( info, newtag, d->data, level ); else if ( process==SERIALNO ) addsn( info, d->data, level ); else { /* do nothing */ } } /* look for thesis-type hint */ if ( !strcasecmp( all[reftype].type, "THES" ) ) { for ( i=0; infields; ++i ) { if ( strcasecmp(risin->tag[i].data, "U1") ) continue; if ( !strcasecmp(risin->data[i].data,"Ph.D. Thesis")|| !strcasecmp(risin->data[i].data,"Masters Thesis")|| !strcasecmp(risin->data[i].data,"Diploma Thesis")|| !strcasecmp(risin->data[i].data,"Doctoral Thesis")|| !strcasecmp(risin->data[i].data,"Habilitation Thesis")) fields_add( info, "GENRE", risin->data[i].data, 0 ); } } } referencer-1.2.1/libbibutils/newstr.c0000664000175000017500000002067512042412720014554 00000000000000/* * newstr.c * * Copyright (c) Chris Putnam 1999-2007 * * Source code released under the GPL * * * newstring routines for dynamically allocated strings * * C. Putnam 3/29/02 Clean up newstr_findreplace() (x4 speed increase too) * */ #include #include #include #include #include #include "newstr.h" #include "is_ws.h" #include #define newstr_initlen (64) void newstr_init( newstr *s ) { assert( s ); s->dim=0; s->len=0; s->data=NULL; } static void newstr_initalloc( newstr *s, unsigned long minsize ) { unsigned long size = newstr_initlen; assert( s ); if ( minsize > newstr_initlen ) size = minsize; s->data = (char *) malloc (sizeof( *(s->data) ) * size); if ( !s->data ) { fprintf(stderr,"Error. Cannot allocate memory in newstr_initalloc.\n"); exit(1); } s->data[0]='\0'; s->dim=size; s->len=0; } newstr * newstr_new( void ) { newstr *s; s = (newstr *) malloc( sizeof( *s ) ); if ( s ) newstr_initalloc( s, newstr_initlen ); return s; } /* newstr_empty() * * empty data in string */ void newstr_empty( newstr *s ) { assert( s ); if ( s->data ) { s->data[0]='\0'; s->len=0; } } #ifndef NEWSTR_PARANOIA void newstr_free( newstr *s ) { assert( s ); s->dim=0; s->len=0; if ( s->data ) free( s->data ); s->data=NULL; } static void newstr_realloc( newstr *s, unsigned long minsize ) { char *newptr; unsigned long size; assert( s ); size = 2 * s->dim; if (size < minsize) size = minsize; newptr = (char *) realloc( s->data, sizeof( *(s->data) )*size ); if (newptr==NULL) { fprintf(stderr,"Error. Cannot reallocate memory (%ld bytes) in newstr_realloc.\n", sizeof(*(s->data))*size); exit(1); } s->data = newptr; s->dim = size; } #else void newstr_free( newstr *s ) { unsigned long i; assert( s ); for ( i=0; idim; ++i ) s->data[i]='\0'; s->dim = 0; if ( s->data ) free( s->data ); s->data = NULL; } void newstr_realloc(newstr *s, unsigned long minsize) { char *newptr; unsigned long size, i; assert( s ); size = 2 * s->dim; if ( size < minsize ) size = minsize; newptr = (char *) malloc( sizeof( *(s->data) ) * size ); if ( !newptr ) { fprintf( stderr, "Error. Cannot reallocate memory (%d bytes)" " in newstr_realloc.\n", sizeof(*(s->data))*size ); exit(1); } for ( i=0; idim; ++i ) s->data[i]='\0'; if ( s->data ) free( s->data ); s->data = newptr; s->dim = size; } #endif void newstr_addchar( newstr *s, char newchar ) { assert( s ); if ( !s->data || s->dim==0 ) newstr_initalloc( s, newstr_initlen ); if ( s->len + 2 > s->dim ) newstr_realloc( s, s->len+2 ); s->data[s->len++] = newchar; s->data[s->len] = '\0'; } void newstr_fprintf( FILE *fp, newstr *s ) { if ( s && s->data ) fprintf( fp, "%s", s->data ); } void newstr_prepend( newstr *s, char *addstr ) { unsigned long lenaddstr, i; assert( s && addstr ); lenaddstr = strlen( addstr ); if ( !s->data || !s->dim ) newstr_initalloc( s, lenaddstr+1 ); else { if ( s->len + lenaddstr + 1 > s->dim ) newstr_realloc( s, s->len + lenaddstr + 1 ); for ( i=s->len+lenaddstr-1; i>=lenaddstr; i-- ) s->data[i] = s->data[i-lenaddstr]; } strncpy( s->data, addstr, lenaddstr ); s->len += lenaddstr; s->data[ s->len ] = '\0'; } void newstr_strcat( newstr *s, char *addstr ) { unsigned long lenaddstr; assert( s && addstr ); lenaddstr = strlen( addstr ); if ( !s->data || !s->dim ) newstr_initalloc( s, lenaddstr+1 ); else { if ( s->len + lenaddstr + 1 > s->dim ) newstr_realloc( s, s->len + lenaddstr + 1 ); } strncpy( &(s->data[s->len]), addstr, lenaddstr ); s->len += lenaddstr; s->data[s->len]='\0'; } void newstr_segcat( newstr *s, char *startat, char *endat ) { size_t seglength; char *p, *q; assert( s && startat && endat ); assert( (size_t) startat < (size_t) endat ); seglength=(size_t) endat - (size_t) startat; if ( !s->data || !s->dim ) newstr_initalloc( s, seglength+1 ); else { if ( s->len + seglength + 1 > s->dim ) newstr_realloc(s, s->len + seglength+1); } q = &(s->data[s->len]); p = startat; while ( *p && p!=endat ) *q++ = *p++; *q = '\0'; s->len += seglength; } void newstr_newstrcpy( newstr *s, newstr *old ) { assert( s && old ); if ( !old->data || !old->dim ) { s->dim = 0; if ( s->data ) s->data[0]='\0'; /* modify for NEWSTR_PARANOIA */ } else newstr_strcpy( s, old->data ); } void newstr_strcpy( newstr *s, char *addstr ) { unsigned long n; assert( s && addstr ); n = strlen( addstr ); if ( !s->data || !s->dim ) newstr_initalloc( s, n+1 ); else if ( n+1 > s->dim ) newstr_realloc( s, n+1 ); strncpy( s->data, addstr, n ); s->data[n] = '\0'; s->len = n; } /* newstr_segcpy( s, start, end ); * * copies [start,end) into s */ void newstr_segcpy( newstr *s, char *startat, char *endat ) { size_t seglength; char *p, *q; assert( s && startat && endat ); assert( ((size_t) startat) <= ((size_t) endat) ); seglength=(size_t) endat - (size_t) startat; if ( seglength==0 ) return; if (s->data==NULL || s->dim==0) newstr_initalloc( s, seglength+1 ); else { if ( seglength+1 > s->dim ) newstr_realloc( s, seglength+1 ); } q = s->data; p = startat; while ( *p && p!=endat ) *q++ = *p++; *q = '\0'; s->len = seglength; } void newstr_segdel( newstr *s, char *p, char *q ) { newstr tmp1, tmp2; char *r; assert( s ); r = &(s->data[s->len]); newstr_init( &tmp1 ); newstr_init( &tmp2 ); newstr_segcpy( &tmp1, s->data, p ); newstr_segcpy( &tmp2, q, r ); newstr_empty( s ); if ( tmp1.data ) newstr_strcat( s, tmp1.data ); if ( tmp2.data ) newstr_strcat( s, tmp2.data ); newstr_free( &tmp2 ); newstr_free( &tmp1 ); } /* * newstr_findreplace() * * if replace is "" or NULL, then delete find */ int newstr_findreplace( newstr *s, char *find, char *replace ) { long diff; size_t findstart, searchstart; size_t p1, p2; size_t find_len, rep_len, curr_len; char empty[2] = ""; unsigned long minsize; char *p; int n = 0; assert ( s && find ); if ( !s->data || !s->dim ) return n; if ( !replace ) replace = empty; find_len = strlen( find ); rep_len = strlen( replace ); diff = rep_len - find_len; if ( diff < 0 ) diff = 0; searchstart=0; while ((p=strstr(s->data + searchstart,find))!=NULL) { curr_len = strlen(s->data); findstart=(size_t) p - (size_t) s->data; minsize = curr_len + diff + 1; if (s->dim <= minsize) newstr_realloc( s, minsize ); if ( find_len > rep_len ) { p1 = findstart + rep_len; p2 = findstart + find_len; while( s->data[p2] ) s->data[p1++]=s->data[p2++]; s->data[p1]='\0'; n++; } else if ( find_len < rep_len ) { for ( p1=curr_len; p1>=findstart+find_len; p1-- ) s->data[p1+diff] = s->data[p1]; n++; } for (p1=0; p1data[findstart+p1]=replace[p1]; searchstart = findstart + rep_len; s->len += rep_len - find_len; } return n; } /* newstr_fget() * returns 0 if we're done, 1 if we're not done * extracts line by line (regardless of end characters) * and feeds from buf.... */ int newstr_fget( FILE *fp, char *buf, int bufsize, int *pbufpos, newstr *outs ) { int bufpos = *pbufpos, done = 0; char *ok; newstr_empty( outs ); while ( !done ) { while ( buf[bufpos] && buf[bufpos]!='\r' && buf[bufpos]!='\n' ) newstr_addchar( outs, buf[bufpos++] ); if ( buf[bufpos]=='\0' ) { ok = fgets( buf, bufsize, fp ); bufpos=*pbufpos=0; if ( !ok && feof(fp) ) { /* end-of-file */ buf[bufpos] = 0; if ( outs->len==0 ) return 0; /*nothing in out*/ else return 1; /*one last out */ } } else if ( buf[bufpos]=='\r' || buf[bufpos]=='\n' ) done=1; } if ( ( buf[bufpos]=='\n' && buf[bufpos+1]=='\r') || ( buf[bufpos]=='\r' && buf[bufpos+1]=='\n') ) bufpos+=2; else if ( buf[bufpos]=='\n' || buf[bufpos]=='\r' ) bufpos+=1; *pbufpos = bufpos; return 1; } void newstr_toupper( newstr *s ) { unsigned long i; assert( s ); for ( i=0; ilen; ++i ) s->data[i] = toupper( s->data[i] ); } /* newstr_swapstrings( s1, s2 ) * be sneaky and swap internal newstring data from one * string to another */ void newstr_swapstrings( newstr *s1, newstr *s2 ) { char *tmpp; int tmp; assert( s1 && s2 ); /* swap dimensioning info */ tmp = s1->dim; s1->dim = s2->dim; s2->dim = tmp; /* swap length info */ tmp = s1->len; s1->len = s2->len; s2->len = tmp; /* swap data */ tmpp = s1->data; s1->data = s2->data; s2->data = tmpp; } void newstr_trimendingws( newstr *s ) { assert( s ); while ( s->len > 0 && is_ws( s->data[s->len-1] ) ) { s->data[s->len-1] = '\0'; s->len--; } } referencer-1.2.1/libbibutils/serialno.c0000664000175000017500000000154512042412720015041 00000000000000/* * serialno.c * * Copyright (c) Chris Putnam 2005-7 * * Source code released under the GPL * */ #include #include "serialno.h" void addsn( fields *info, char *buf, int level ) { int ndigits=0, issn=0, isbn=0; char *p = buf; if ( !strncasecmp( p, "ISSN", 4 ) ) issn=1; else if ( !strncasecmp( p, "ISBN", 4 ) ) isbn=1; if ( !issn && !isbn ) { /* a lot have semicolons between multiple ISBN's for paperbacks and hardbacks with different numbers */ while ( *p && !(ndigits && (*p==';'||*p==':')) ) { if ( ( *p>='0' && *p<='9' ) || *p=='x' || *p=='X' ) ndigits++; p++; } if ( ndigits==8 ) issn = 1; else if ( ndigits==10 || ndigits==13 ) isbn = 1; } if ( issn ) fields_add( info, "ISSN", buf, level ); else if ( isbn ) fields_add( info, "ISBN", buf, level ); else fields_add( info, "SERIALNUMBER", buf, level ); } referencer-1.2.1/libbibutils/reftypes.h0000664000175000017500000000134312042412720015067 00000000000000/* * reftypes.h * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #ifndef REFTYPES_H #define REFTYPES_H #define SIMPLE (0) #define TYPE (1) #define PERSON (2) #define DATE (3) #define PAGES (4) #define SERIALNO (5) #define TITLE (6) #define ALWAYS (7) #define BIBTEX_URL (8) #define ISI_KEYWORD (9) typedef struct { char *oldstr; char *newstr; int processingtype; int level; } lookups; typedef struct { char type[25]; lookups *tags; int ntags; } variants; extern int get_reftype( char *p, long refnum, variants *all, int nall, char *tag ); extern int process_findoldtag( char *oldtag, int reftype, variants all[], int nall ); #endif referencer-1.2.1/libbibutils/bibutils.h0000664000175000017500000000423412042412720015045 00000000000000/* * bibutils.h * * Copyright (c) Chris Putnam 2005-7 * */ #ifndef BIBUTILS_H #define BIBUTILS_H #include #include "lists.h" #include "bibl.h" #define BIBL_OK (0) #define BIBL_ERR_BADINPUT (-1) #define BIBL_ERR_MEMERR (-2) #define BIBL_ERR_CANTOPEN (-3) #define BIBL_FIRSTIN (100) #define BIBL_MODSIN (BIBL_FIRSTIN) #define BIBL_BIBTEXIN (BIBL_FIRSTIN+1) #define BIBL_RISIN (BIBL_FIRSTIN+2) #define BIBL_ENDNOTEIN (BIBL_FIRSTIN+3) #define BIBL_COPACIN (BIBL_FIRSTIN+4) #define BIBL_ISIIN (BIBL_FIRSTIN+5) #define BIBL_MEDLINEIN (BIBL_FIRSTIN+6) #define BIBL_ENDNOTEXMLIN (BIBL_FIRSTIN+7) #define BIBL_LASTIN (BIBL_FIRSTIN+7) #define BIBL_FIRSTOUT (200) #define BIBL_MODSOUT (BIBL_FIRSTOUT) #define BIBL_BIBTEXOUT (BIBL_FIRSTOUT+1) #define BIBL_RISOUT (BIBL_FIRSTOUT+2) #define BIBL_ENDNOTEOUT (BIBL_FIRSTOUT+3) #define BIBL_ISIOUT (BIBL_FIRSTOUT+4) #define BIBL_WORD2007OUT (BIBL_FIRSTOUT+5) #define BIBL_LASTOUT (BIBL_FIRSTOUT+5) #define BIBL_FORMAT_VERBOSE (1) #define BIBL_RAW_WITHCHARCONVERT (4) #define BIBL_RAW_WITHMAKEREFID (8) #define BIBL_CHARSET_UNKNOWN (-1) #define BIBL_CHARSET_UNICODE (-2) #define BIBL_CHARSET_DEFAULT (66) /* Latin-1/ISO8859-1 */ #define BIBL_SRC_DEFAULT (0) /* value from program default */ #define BIBL_SRC_FILE (1) /* value from file, priority over default */ #define BIBL_SRC_USER (2) /* value from user, priority over file, default */ typedef struct param { int charsetin; int charsetin_src; /* BIBL_SRC_DEFAULT, BIBL_SRC_FILE, BIBL_SRC_USER */ int latexin; int utf8in; int xmlin; int charsetout; int charsetout_src; /* BIBL_SRC_PROG, BIBL_SRC_USER */ int latexout; int utf8out; int xmlout; int output_raw; int format_opts; /* options for specific formats */ int verbose; int addcount; /* add reference count to reference id */ int singlerefperfile; } param; extern void bibl_initparams( param *p, int readmode, int writemode ); extern int bibl_read( bibl *b, FILE *fp, char *filename, int mode, param *p ); extern int bibl_write( bibl *b, FILE *fp, int mode, param *p ); extern void bibl_reporterr( int err ); #endif referencer-1.2.1/libbibutils/modsout.c0000664000175000017500000006206712042412720014725 00000000000000/* * modsout.c * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #include #include #include #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "fields.h" #include "utf8.h" #include "modsout.h" #include "modstypes.h" extern char progname[]; static void output_tab0( FILE *outptr, int level ) { int i; for ( i=0; i<=level; ++i ) fprintf( outptr, " " ); } static void output_tab1( FILE *outptr, int level, char *tag ) { output_tab0( outptr, level ); fprintf( outptr, "%s", tag ); } static void output_tab2( FILE *outptr, int level, char *tag, char *data, int cr ) { output_tab0( outptr, level ); fprintf( outptr, "<%s>%s", tag, data, tag ); if ( cr ) fprintf( outptr, "\n" ); } static void output_tab4( FILE *outptr, int level, char *tag, char *aname, char *avalue, char *data, int cr ) { output_tab0( outptr, level ); fprintf( outptr, "<%s %s=\"%s\">%s", tag,aname,avalue,data,tag); if ( cr ) fprintf( outptr, "\n" ); } static void output_fill2( FILE *outptr, int level, char *tag, fields *info, int n, int cr ) { if ( n!=-1 ) { output_tab2( outptr, level, tag, info->data[n].data, cr ); fields_setused( info, n ); } } static void output_fill4( FILE *outptr, int level, char *tag, char *aname, char *avalue, fields *info, int n, int cr ) { if ( n!=-1 ) { output_tab4( outptr, level, tag, aname, avalue, info->data[n].data, cr ); fields_setused( info, n ); } } static void output_title( fields *info, FILE *outptr, int level ) { int ttl = fields_find( info, "TITLE", level ); int subttl = fields_find( info, "SUBTITLE", level ); int shrttl = fields_find( info, "SHORTTITLE", level ); output_tab1( outptr, level, "\n" ); output_fill2( outptr, level+1, "title", info, ttl, 1); output_fill2( outptr, level+1, "subTitle", info, subttl, 1 ); if ( ttl==-1 && subttl==-1 ) output_tab1( outptr, level+1, "\n" ); output_tab1( outptr, level, "</titleInfo>\n" ); /* output shorttitle if it's different from normal title */ if ( shrttl!=-1 ) { if ( ttl==-1 || subttl!=-1 || strcmp(info->data[ttl].data,info->data[shrttl].data) ) { output_tab1( outptr, level, "<titleInfo type=\"abbreviated\">\n" ); output_fill2( outptr, level+1, "title", info, shrttl,1); output_tab1( outptr, level, "</titleInfo>\n" ); } fields_setused( info, shrttl ); } } static void output_personalstart( FILE *outptr, int level ) { int j; for ( j=0; j<=level; ++j ) fprintf( outptr, " " ); fprintf( outptr, "<name type=\"personal\">\n" ); } static void output_name( FILE *outptr, char *p, int level ) { newstr family, part; int n=0; newstr_init( &family ); newstr_init( &part ); while ( *p && *p!='|' ) newstr_addchar( &family, *p++ ); if ( *p=='|' ) p++; while ( *p ) { while ( *p && *p!='|' ) newstr_addchar( &part, *p++ ); /* truncate periods from "A. B. Jones" names */ if ( part.len ) { if ( part.len==2 && part.data[1]=='.' ) { part.len=1; part.data[1]='\0'; } if ( n==0 ) output_personalstart( outptr, level ); output_tab4( outptr, level+1, "namePart", "type", "given", part.data, 1 ); n++; } if ( *p=='|' ) { p++; newstr_empty( &part ); } } if ( family.len ) { if ( n==0 ) output_personalstart( outptr, level ); output_tab4( outptr, level+1, "namePart", "type", "family", family.data, 1 ); } newstr_free( &part ); newstr_free( &family ); } #define NO_AUTHORITY (0) #define MARC_AUTHORITY (1) #define NAME_ASIS (2) #define NAME_CORP (4) static void output_names( fields *info, FILE *outptr, int level ) { convert names[] = { { "author", "AUTHOR", MARC_AUTHORITY }, { "author", "AUTHOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "author", "AUTHOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "writer", "WRITER", MARC_AUTHORITY }, { "writer", "WRITER:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "writer", "WRITER:CORP", MARC_AUTHORITY | NAME_CORP }, { "patent holder", "ASSIGNEE", MARC_AUTHORITY }, { "patent holder", "ASSIGNEE:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "patent holder", "ASSIGNEE:CORP", MARC_AUTHORITY | NAME_CORP }, { "editor", "EDITOR", MARC_AUTHORITY }, { "editor", "EDITOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "editor", "EDITOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "artist", "ARTIST", MARC_AUTHORITY }, { "artist", "ARTIST:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "artist", "ARTIST:CORP", MARC_AUTHORITY | NAME_CORP }, { "cartographer", "CARTOGRAPHER", MARC_AUTHORITY }, { "cartographer", "CARTOGRAPHER:ASIS", MARC_AUTHORITY | NAME_ASIS}, { "cartographer", "CARTOGRAPHER:CORP", MARC_AUTHORITY | NAME_CORP}, { "degree grantor","DEGREEGRANTOR", MARC_AUTHORITY }, { "degree grantor","DEGREEGRANTOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "degree grantor","DEGREEGRANTOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "inventor", "INVENTOR", MARC_AUTHORITY }, { "inventor", "INVENTOR:ASIS", MARC_AUTHORITY | NAME_ASIS}, { "inventor", "INVENTOR:CORP", MARC_AUTHORITY | NAME_CORP}, { "organizer of meeting","ORGANIZER", MARC_AUTHORITY }, { "organizer of meeting","ORGANIZER:ASIS",MARC_AUTHORITY| NAME_ASIS }, { "organizer of meeting","ORGANIZER:CORP",MARC_AUTHORITY| NAME_CORP }, { "director", "DIRECTOR", MARC_AUTHORITY }, { "director", "DIRECTOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "director", "DIRECTOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "performer", "PERFORMER", MARC_AUTHORITY }, { "performer", "PERFORMER:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "performer", "PERFORMER:CORP", MARC_AUTHORITY | NAME_CORP }, { "reporter", "REPORTER", NO_AUTHORITY }, { "reporter", "REPORTER:ASIS", NO_AUTHORITY | NAME_ASIS }, { "reporter", "REPORTER:CORP", NO_AUTHORITY | NAME_CORP }, { "translator", "TRANSLATOR", MARC_AUTHORITY }, { "director", "DIRECTOR", MARC_AUTHORITY }, { "director", "DIRECTOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "director", "DIRECTOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "performer", "PERFORMER", MARC_AUTHORITY }, { "performer", "PERFORMER:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "performer", "PERFORMER:CORP", MARC_AUTHORITY | NAME_CORP }, { "translator", "TRANSLATOR", MARC_AUTHORITY }, { "translator", "TRANSLATOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "translator", "TRANSLATOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "recipient", "RECIPIENT", MARC_AUTHORITY }, { "recipient", "RECIPIENT:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "recipient", "RECIPIENT:CORP", MARC_AUTHORITY | NAME_CORP }, { "author", "2ND_AUTHOR", MARC_AUTHORITY }, { "author", "2ND_AUTHOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "author", "2ND_AUTHOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "author", "3RD_AUTHOR", MARC_AUTHORITY }, { "author", "3RD_AUTHOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "author", "3RD_AUTHOR:CORP", MARC_AUTHORITY | NAME_CORP }, { "author", "SUB_AUTHOR", MARC_AUTHORITY }, { "author", "SUB_AUTHOR:ASIS", MARC_AUTHORITY | NAME_ASIS }, { "author", "COMMITTEE", MARC_AUTHORITY | NAME_CORP }, { "author", "COURT", MARC_AUTHORITY | NAME_CORP }, { "author", "LEGISLATIVEBODY", MARC_AUTHORITY | NAME_CORP } }; int i, n, ntypes = sizeof( names ) / sizeof( convert ); for ( n=0; n<ntypes; ++n ) { for ( i=0; i<info->nfields; ++i ) { if ( info->level[i]!=level ) continue; if ( strcasecmp(info->tag[i].data,names[n].internal) ) continue; if ( names[n].code & NAME_ASIS ) { output_tab0( outptr, level ); fprintf( outptr, "<name>\n" ); output_fill2( outptr, level+1, "namePart", info, i, 1 ); } else if ( names[n].code & NAME_CORP ) { output_tab0( outptr, level ); fprintf( outptr, "<name type=\"corporate\">\n" ); output_fill2( outptr, level+1, "namePart", info, i, 1 ); } else { output_name(outptr, info->data[i].data, level); } output_tab1( outptr, level+1, "<role>\n" ); output_tab1( outptr, level+2, "<roleTerm" ); if ( names[n].code & MARC_AUTHORITY ) fprintf( outptr, " authority=\"marcrelator\""); fprintf( outptr, " type=\"text\">"); fprintf( outptr, "%s", names[n].mods ); fprintf( outptr, "</roleTerm>\n"); output_tab1( outptr, level+1, "</role>\n" ); output_tab1( outptr, level, "</name>\n" ); fields_setused( info, i ); } } } static int output_finddateissued( fields *info, int level, int pos[3] ) { char *src_names[] = { "YEAR", "MONTH", "DAY" }; char *alt_names[] = { "PARTYEAR", "PARTMONTH", "PARTDAY" }; int i, found = -1, ntypes = 3; for ( i=0; i<ntypes; ++i ) { pos[i] = fields_find( info, src_names[i], level ); if ( pos[i]!=-1 ) found = pos[i]; } /* for LEVEL_MAIN, do what it takes to find a date */ if ( found==-1 && level==0 ) { for ( i=0; i<ntypes; ++i ) { pos[i] = fields_find( info, src_names[i], -1 ); if ( pos[i]!=-1 ) found = pos[i]; } } if ( found==-1 && level==0 ) { for ( i=0; i<ntypes; ++i ) { pos[i] = fields_find( info, alt_names[i], -1 ); if ( pos[i]!=-1 ) found = pos[i]; } } return found; } static void output_dateissued( fields *info, FILE *outptr, int level, int pos[3] ) { int nprinted = 0, i; output_tab1( outptr, level+1, "<dateIssued>" ); for ( i=0; i<3 && pos[i]!=-1; ++i ) { if ( nprinted>0 ) fprintf( outptr, "-" ); if ( i>0 && info->data[pos[i]].len==1 ) fprintf( outptr, "0" ); /*zero pad Jan,Feb,etc*/ fprintf( outptr,"%s",info->data[pos[i]].data ); nprinted++; fields_setused( info, pos[i] ); } fprintf( outptr, "</dateIssued>\n" ); } static void output_origin( fields *info, FILE *outptr, int level ) { convert origin[] = { { "issuance", "ISSUANCE", 0 }, { "publisher", "PUBLISHER", 0 }, { "place", "ADDRESS", 1 }, { "edition", "EDITION", 0 } }; int n, ntypes = sizeof( origin ) / sizeof ( convert ); int found, datefound, pos[5], date[3]; /* find all information to be outputted */ found = -1; for ( n=0; n<ntypes; ++n ) { pos[n] = fields_find( info, origin[n].internal, level ); if ( pos[n]!=-1 ) found = pos[n]; } datefound = output_finddateissued( info, level, date ); if ( found==-1 && datefound==-1 ) return; output_tab1( outptr, level, "<originInfo>\n" ); output_fill2( outptr, level+1, "issuance", info, pos[0], 1 ); if ( datefound!=-1 ) output_dateissued( info, outptr, level, date ); for ( n=1; n<ntypes; n++ ) { if ( pos[n]==-1 ) continue; output_tab0( outptr, level+1 ); fprintf( outptr, "<%s", origin[n].mods ); fprintf( outptr, ">" ); if ( origin[n].code ) { fprintf( outptr, "\n" ); output_fill4( outptr, level+2, "placeTerm", "type", "text", info, pos[n], 1 ); output_tab0( outptr, level+1 ); } else { fprintf( outptr, "%s", info->data[pos[n]].data ); fields_setused( info, pos[n] ); } fprintf( outptr, "</%s>\n", origin[n].mods ); } output_tab1( outptr, level, "</originInfo>\n" ); } static void output_language( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "LANGUAGE", level ); output_fill2( outptr, level, "language", info, n, 1 ); } static void output_description( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "DESCRIPTION", level ); output_fill2( outptr, level, "physicalDescription", info, n, 1 ); } static void output_toc( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "CONTENTS", level ); output_fill2( outptr, level, "tableOfContents", info, n, 1 ); } /* part date output * * <date>xxxx-xx-xx</date> * */ static void output_partdate( fields *info, FILE *outptr, int level, int *wrote_header ) { convert parts[3] = { { "", "PARTYEAR", -1 }, { "", "PARTMONTH", -1 }, { "", "PARTDAY", -1 }, }; int i, found = 0; for ( i=0; i<3; ++i ) { parts[i].code = fields_find( info, parts[i].internal, level ); found += ( parts[i].code!=-1 ); } if ( !found ) return; if ( !*wrote_header ) { output_tab1( outptr, level, "<part>\n" ); *wrote_header = 1; } output_tab1( outptr, level+1, "<date>" ); if ( parts[0].code!=-1 ) { fprintf( outptr, "%s", info->data[ parts[0].code ].data); fields_setused( info, parts[0].code ); } if ( parts[1].code!=-1 ) { if ( parts[0].code!=-1 ) fprintf( outptr, "-" ); else fprintf( outptr, "XXXX-" ); fprintf( outptr, "%s", info->data[parts[1].code].data ); fields_setused( info, parts[1].code ); } if ( parts[2].code!=-1 ) { if ( parts[1].code!=-1 ) fprintf( outptr, "-" ); else if ( parts[0].code!=-1 ) fprintf( outptr, "-XX-" ); fprintf( outptr, "%s", info->data[parts[2].code].data ); fields_setused( info, parts[2].code ); } fprintf( outptr,"</date>\n"); } /* detail output * * for example: * * <detail type="volume"><number>xxx</number></detail */ static void mods_output_detail( fields *info, FILE *outptr, int item, char *item_name, int level ) { if ( item==-1 ) return; output_tab0( outptr, level+1 ); fprintf( outptr, "<detail type=\"%s\"><number>", item_name ); fprintf( outptr, "%s</number></detail>\n", info->data[item].data ); fields_setused( info, item ); } /* extents output * * <extent unit="page"> * <start>xxx</start> * <end>xxx</end> * </extent> */ static void mods_output_extents( fields *info, FILE *outptr, int start, int end, int total, char *extype, int level ) { output_tab0( outptr, level+1 ); fprintf( outptr, "<extent unit=\"%s\">\n", extype); output_fill2( outptr, level+2, "start", info, start, 1 ); output_fill2( outptr, level+2, "end", info, end, 1 ); output_fill2( outptr, level+2, "total", info, total, 1 ); output_tab1 ( outptr, level+1, "</extent>\n" ); } static void mods_output_partpages( fields *info, FILE *outptr, int level, int *wrote_header ) { convert parts[3] = { { "", "PAGESTART", -1 }, { "", "PAGEEND", -1 }, { "", "TOTALPAGES", -1 } }; int i, found = 0; for ( i=0; i<3; ++i ) { parts[i].code = fields_find( info, parts[i].internal, level ); found += ( parts[i].code!=-1 ); } if ( !found ) return; if ( !*wrote_header ) { output_tab1( outptr, level, "<part>\n" ); *wrote_header = 1; } /* If PAGESTART or PAGEEND are undefined */ if ( parts[0].code==-1 || parts[1].code==-1 ) { if ( parts[0].code!=-1 ) mods_output_detail( info, outptr, parts[0].code, "page", level ); if ( parts[1].code!=-1 ) mods_output_detail( info, outptr, parts[1].code, "page", level ); if ( parts[2].code!=-1 ) mods_output_extents( info, outptr, -1, -1, parts[2].code, "page", level ); } /* If both PAGESTART and PAGEEND are defined */ else { mods_output_extents( info, outptr, parts[0].code, parts[1].code, parts[2].code, "page", level ); } } static void output_partelement( fields *info, FILE *outptr, int level, int *wrote_header ) { convert parts[] = { { "volume", "VOLUME", -1 }, { "section", "SECTION", -1 }, { "issue", "ISSUE", -1 }, { "number", "NUMBER", -1 }, { "publiclawnumber", "PUBLICLAWNUMBER", -1 }, { "session", "SESSION", -1 }, { "articlenumber", "ARTICLENUMBER", -1 } }; int i, nparts = sizeof( parts ) / sizeof( convert ), found = 0; for ( i=0; i<nparts; ++i ) { parts[i].code = fields_find( info, parts[i].internal, level ); found += ( parts[i].code!=-1 ); } if ( !found ) return; if ( !(*wrote_header) ) { output_tab1( outptr, level, "<part>\n" ); *wrote_header = 1; } for ( i=0; i<nparts; ++i ) { if ( parts[i].code==-1 ) continue; mods_output_detail( info, outptr, parts[i].code, parts[i].mods, level ); } } static void output_part( fields *info, FILE *outptr, int level ) { int wrote_header = 0; output_partdate( info, outptr, level, &wrote_header ); output_partelement( info, outptr, level, &wrote_header ); mods_output_partpages( info, outptr, level, &wrote_header ); if ( wrote_header ) output_tab1( outptr, level, "</part>\n" ); } static void output_genre( fields *info, FILE *outptr, int level ) { char *marc[] = { "abstract or summary", "art original", "art reproduction", "atlas", "autobiography", "bibliography", "book", "catalog", "chart", "comic strip", "conference publication", "database", "dictionary", "diorama", "directory", "discography", "drama", "encyclopedia", "essay", "festschrift", "fiction", "filmography", "filmstrip", "flash card", "folktale", "font", "game", "government publication", "graphic", "globe", "handbook", "history", "humor, satire", "index", "instruction", "interview", "kit", "language instruction", "law report or digest", "legal article", "legal case and case notes", "legislation", "letter", "loose-leaf", "map", "memoir", "microscope slide", "model", "motion picture", "multivolume monograph", "newspaper", "novel", "numeric data", "online system or service", "patent", "periodical", "picture", "poetry", "programmed text", "realia", "rehersal", "remote sensing image", "reporting", "review", "series", "short story", "slide", "sound", "speech", "statistics", "survey of literature", "technical drawing", "technical report", "theses", "toy", "transparency", "treaty", "videorecording", "web site" }; int nmarc = sizeof( marc ) / sizeof( char* ); int i, j, ismarc; for ( i=0; i<info->nfields; ++i ) { if ( info->level[i]!=level ) continue; if ( strcasecmp( info->tag[i].data, "GENRE" ) ) continue; ismarc = 0; for ( j=0; j<nmarc && ismarc==0; ++j ) { if ( !strcasecmp( info->data[i].data, marc[j] ) ) ismarc = 1; } output_tab1( outptr, level, "<genre" ); if ( ismarc ) fprintf( outptr, " authority=\"marcgt\"" ); fprintf( outptr, ">%s</genre>\n", info->data[i].data ); fields_setused( info, i ); } } static void output_typeresource( fields *info, FILE *outptr, int level ) { char *marc[] = { "text", "cartographic", "notated music", "sound recording", "still image", "moving image", "three dimensional object", "software, multimedia", "mixed material" }; int nmarc = sizeof( marc ) / sizeof( char* ); int resource, j, ismarc; resource = fields_find( info, "RESOURCE", level ); if ( resource!=-1 ) { ismarc = 0; for ( j=0; j<nmarc && ismarc==0; ++j ) if ( !strcasecmp( info->data[resource].data, marc[j] )) ismarc = 1; if ( ismarc==0 ) { fprintf( stderr, "Illegal typeofResource = '%s'\n", info->data[resource].data ); } else { for ( j=0; j<=level; ++j ) fprintf( outptr, " " ); fprintf( outptr, "<typeOfResource>%s</typeOfResource>\n", info->data[resource].data ); } fields_setused( info, resource ); } } static void output_type( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "TYPE", 0 ); if ( n!=-1 ) fields_setused( info, n ); output_typeresource( info, outptr, level ); output_genre( info, outptr, level ); } static void output_abs( fields *info, FILE *outptr, int level ) { int i; int nabs = fields_find( info, "ABSTRACT", level ); output_fill2( outptr, level, "abstract", info, nabs, 1 ); for ( i=0; i<info->nfields; ++i ) { if ( info->level[i]!=level ) continue; if ( strcasecmp( info->tag[i].data, "NOTES" ) ) continue; output_fill2( outptr, level, "note", info, i, 1 ); } } static void output_timescited( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "TIMESCITED", level ); if ( n!=-1 ) { output_tab0( outptr, level ); fprintf( outptr, "<note>Times Cited: %s</note>\n", info->data[n].data ); fields_setused( info, n ); } } static void output_indexkey( fields *info, FILE *outptr, int level ) { int n = fields_find( info, "BIBKEY", level ); if ( n!=-1 ) { output_tab0( outptr, level ); fprintf( outptr, "<note>Key: %s</note>\n", info->data[n].data ); fields_setused( info, n ); } } static void output_key( fields *info, FILE *outptr, int level ) { int i; for ( i=0; i<info->nfields; ++i ) { if ( info->level[i]!=level ) continue; if ( !strcasecmp( info->tag[i].data, "KEYWORD" ) ) { output_tab1( outptr, level, "<subject>\n" ); output_fill2( outptr, level+1, "topic", info, i, 1 ); output_tab1( outptr, level, "</subject>\n" ); } } } static void output_sn( fields *info, FILE *outptr, int level ) { char *internal_names[] = { "ISBN", "LCCN", "ISSN", "REFNUM", "DOI" , "PUBMED", "MEDLINE", "PII", "ISIREFNUM", "ACCESSNUM" }; char *mods_types[] = { "isbn", "lccn", "issn", "citekey", "doi", "pubmed", "medline", "pii", "isi", "accessnum" }; int n, ntypes = sizeof( internal_names ) / sizeof( char* ); int found, i; found = fields_find ( info, "CALLNUMBER", level ); output_fill2( outptr, level, "classification", info, found, 1 ); for ( n=0; n<ntypes; ++n ) { found = fields_find( info, internal_names[n], level ); if ( found==-1 ) continue; output_tab0( outptr, level ); fprintf( outptr, "<identifier type=\"%s\">%s</identifier>\n", mods_types[n], info->data[found].data ); fields_setused( info, found ); } for ( i=0; i<info->nfields;++i ) { if ( info->level[i]!=level ) continue; if ( !strcasecmp( info->tag[i].data, "SERIALNUMBER" ) ) { output_tab0( outptr, level ); fprintf( outptr, "<identifier type=\"%s\">%s</identifier>\n", "serial number", info->data[i].data ); fields_setused( info, i ); } } } static void output_url( fields *info, FILE *outptr, int level ) { int location = fields_find( info, "LOCATION", level ); int url = fields_find( info, "URL", level ); int i; if ( url==-1 && location==-1 ) return; output_tab1( outptr, level, "<location>\n" ); for ( i=0; i<info->nfields; ++i ) { if ( info->level[i]!=level ) continue; if ( !strcasecmp( info->tag[i].data, "URL" ) ) { output_fill2( outptr, level+1, "url", info, i, 1 ); } } /* if ( url!=-1 ) output_fill2( outptr, level+1, "url", info, url, 1 );*/ if ( location!=-1 ) output_fill2( outptr, level+1, "physicalLocation", info, location, 1 ); output_tab1( outptr, level, "</location>\n" ); } /* refnum should start with a non-number and not include spaces */ static void output_refnum( fields *info, int n, FILE *outptr ) { char *p = info->data[n].data; if ( p && ((*p>='0' && *p<='9') || *p=='-' || *p=='_' )) fprintf( outptr, "ref" ); while ( p && *p ) { if ( !is_ws(*p) ) fprintf( outptr, "%c", *p ); /* if ( (*p>='A' && *p<='Z') || (*p>='a' && *p<='z') || (*p>='0' && *p<='9') || (*p=='-') || (*p==' (*p=='_') ) fprintf( outptr, "%c", *p );*/ p++; } } static void output_head( fields *info, FILE *outptr, int dropkey, unsigned long numrefs ) { int n; fprintf( outptr, "<mods"); if ( !dropkey ) { n = fields_find( info, "REFNUM", 0 ); if ( n!=-1 ) { fprintf( outptr, " ID=\""); output_refnum( info, n, outptr ); fprintf( outptr, "\""); } } fprintf( outptr, ">\n" ); } static void output_citeparts( fields *info, FILE *outptr, int level, int max ) { int i; output_title( info, outptr, level ); output_names( info, outptr, level); output_origin( info, outptr, level ); output_type( info, outptr, level ); output_language( info, outptr, level ); output_description( info, outptr, level ); if ( level < max ) { for ( i=0; i<=level; ++i ) fprintf( outptr, " " ); fprintf( outptr, "<relatedItem type=\"host\">\n"); output_citeparts(info, outptr, level+1, max); for ( i=0; i<=level; ++i ) fprintf( outptr, " " ); fprintf( outptr, "</relatedItem>\n"); } output_abs( info, outptr, level ); output_timescited( info, outptr, level ); output_indexkey( info, outptr, level ); output_toc( info, outptr, level ); output_key( info, outptr, level ); output_sn( info, outptr, level ); output_url( info, outptr, level ); /* as of MODS 3.1, <part> tags can be in the main items */ /*if ( level>0 ) */ output_part( info, outptr, level ); } void modsout_write( fields *info, FILE *outptr, int format_opts, unsigned long numrefs ) { int i, max, dropkey; max = fields_maxlevel( info ); dropkey = ( format_opts & MODSOUT_DROPKEY ); output_head( info, outptr, dropkey, numrefs ); output_citeparts( info, outptr, 0, max ); for ( i=0; i<info->nfields; ++i ) { if ( !info->used[i] ) { fprintf( stderr, "%s warning: ref %ld " "unused tag: '%s' " "value: '%s' level: %d\n", progname, numrefs+1, info->tag[i].data, info->data[i].data, info->level[i] ); } } fprintf( outptr, "</mods>\n" ); fflush( outptr ); } static void modsout_writebom( FILE *outptr ) { int i, nc; unsigned char code[6]; nc = utf8_encode( 0xFEFF, code ); for ( i=0; i<nc; ++i ) fprintf(outptr,"%c",code[i]); } void modsout_writeheader( FILE *outptr, int format ) { if ( format & MODSOUT_BOM ) modsout_writebom( outptr ); fprintf(outptr,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); fprintf(outptr,"<modsCollection xmlns=\"http://www.loc.gov/mods/v3\">\n"); } void modsout_writefooter( FILE *outptr ) { fprintf(outptr,"</modsCollection>\n"); fflush( outptr ); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/copactypes.c�����������������������������������������������������������0000664�0001750�0001750�00000002456�12042412720�015401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * copactypes.c * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <string.h> #include "is_ws.h" #include "fields.h" #include "reftypes.h" /* if no specific type can be identified */ static lookups generic[] = { { "TI-", "TITLE" , TITLE, LEVEL_MAIN }, { "AU-", "AUTHOR", PERSON, LEVEL_MAIN }, { "MV-", "VOLUME", SIMPLE, LEVEL_MAIN }, { "SE-", "TITLE", TITLE, LEVEL_HOST }, { "ED-", "EDITION", SIMPLE, LEVEL_MAIN }, { "SC-", "SCALE", SIMPLE, LEVEL_MAIN }, /* for maps */ { "PU-", "PUBLISHER", SIMPLE, LEVEL_MAIN }, { "PY-", "YEAR", SIMPLE, LEVEL_MAIN }, { "PD-", "DESCRIPTION",SIMPLE, LEVEL_MAIN }, /* physical description */ { "DT-", "TYPE", SIMPLE, LEVEL_MAIN }, { "LA-", "LANGUAGE", SIMPLE, LEVEL_MAIN }, { "IS-", "SERIALNUM", SERIALNO, LEVEL_MAIN }, { "NT-", "NOTES", SIMPLE, LEVEL_MAIN }, { "KW-", "KEYWORD", SIMPLE, LEVEL_MAIN }, { "UL-", "URL", SIMPLE, LEVEL_MAIN }, { "HL-", "LOCATION", SIMPLE, LEVEL_MAIN } }; /* order is important....."Book" matches "Book" and "Book Section", hence * "Book Section must come first */ variants copac_all[] = { {"Generic", &(generic[0]), sizeof(generic)/sizeof(lookups)}, }; int copac_nall = sizeof( copac_all ) / sizeof( variants ); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/endxmlin.h�������������������������������������������������������������0000664�0001750�0001750�00000000663�12042412720�015050� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * endxmlin.h * * Copyright (c) Chris Putnam 2006-7 * * Program and source code released under the GPL * */ #ifndef ENDXMLIN_H #define ENDXMLIN_H #include "newstr.h" #include "fields.h" #include "reftypes.h" extern int endxmlin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int endxmlin_processf( fields *endin, char *p, char *filename, long nref ); #endif �����������������������������������������������������������������������������referencer-1.2.1/libbibutils/modsout.h��������������������������������������������������������������0000664�0001750�0001750�00000000770�12042412720�014723� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * modsout.h * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #ifndef MODSOUT_H #define MODSOUT_H /* format-specific options */ #define MODSOUT_DROPKEY (2) #define MODSOUT_BOM (4) #include <stdio.h> #include <stdlib.h> #include "bibl.h" extern void modsout_writeheader( FILE *outptr, int unicode ); extern void modsout_writefooter( FILE *outptr ); extern void modsout_write( fields *info, FILE *outptr, int format_opts, unsigned long numrefs ); #endif ��������referencer-1.2.1/libbibutils/copacin.c��������������������������������������������������������������0000664�0001750�0001750�00000015343�12042412720�014642� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * copacin.c * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "lists.h" #include "name.h" #include "title.h" #include "fields.h" #include "reftypes.h" #include "serialno.h" #include "copacin.h" extern lists asis; extern lists corps; /* Endnote-Refer/Copac tag definition: character 1 = alphabetic character character 2 = alphabetic character character 3 = dash character 4 = space */ static int copacin_istag( char *buf ) { if (! ((buf[0]>='A' && buf[0]<='Z')) || (buf[0]>='a' && buf[0]<='z') ) return 0; if (! ((buf[1]>='A' && buf[1]<='Z')) || (buf[1]>='a' && buf[1]<='z') ) return 0; if (buf[2]!='-' ) return 0; if (buf[3]!=' ' ) return 0; return 1; } static int readmore( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line ) { if ( line->len ) return 1; else return newstr_fget( fp, buf, bufsize, bufpos, line ); } int copacin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { int haveref = 0, inref=0; char *p; while ( !haveref && readmore( fp, buf, bufsize, bufpos, line ) ) { /* blank line separates */ if ( line->data==NULL ) continue; if ( inref && line->len==0 ) haveref=1; p = &(line->data[0]); if ( copacin_istag( p ) ) { if ( inref ) newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); newstr_empty( line ); inref = 1; } else if ( inref ) { if ( p ) { /* copac puts tag only on 1st line */ newstr_addchar( reference, ' ' ); if ( *p ) p++; if ( *p ) p++; if ( *p ) p++; newstr_strcat( reference, p ); } newstr_empty( line ); } else { newstr_empty( line ); } } *fcharset = CHARSET_UNKNOWN; return haveref; } static char* copacin_addtag2( char *p, newstr *tag, newstr *data ) { int i; i =0; while ( i<3 && *p ) { newstr_addchar( tag, *p++ ); i++; } while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) { newstr_addchar( data, *p ); p++; } newstr_trimendingws( data ); while ( *p=='\n' || *p=='\r' ) p++; return p; } static char * copacin_nextline( char *p ) { while ( *p && *p!='\n' && *p!='\r') p++; while ( *p=='\n' || *p=='\r' ) p++; return p; } int copacin_processf( fields *copacin, char *p, char *filename, long nref ) { newstr tag, data; newstr_init( &tag ); newstr_init( &data ); while ( *p ) { while ( is_ws( *p ) ) p++; if ( copacin_istag( p ) ) { p = copacin_addtag2( p, &tag, &data ); /* don't add empty strings */ if ( tag.len && data.len ) fields_add( copacin, tag.data, data.data, 0 ); newstr_empty( &tag ); newstr_empty( &data ); } else p = copacin_nextline( p ); } newstr_free( &tag ); newstr_free( &data ); return 1; } /* copac names appear to always start with last name first, but don't * always seem to have a comma after the name * * editors seem to be stuck in as authors with the tag "[Editor]" in it */ static void copacin_addname( fields *info, char *tag, newstr *name, int level ) { char *usetag = tag, editor[]="EDITOR", *p; int comma = 0; if ( strstr( name->data,"[Editor]" ) ) { newstr_findreplace( name, "[Editor]", "" ); usetag = editor; } p = name->data; while ( is_ws( *p ) ) p++; while ( *p && !is_ws( *p ) ) { if ( *p==',' ) comma++; p++; } if ( !comma && is_ws( *p ) ) *p = ','; name_add( info, usetag, name->data, level ); } static void copacin_addpage( fields *info, char *p, int level ) { newstr page; newstr_init( &page ); while ( *p && is_ws(*p) ) p++; while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) newstr_addchar( &page, *p++ ); if ( page.len>0 ) fields_add( info, "PAGESTART", page.data, level ); newstr_empty( &page ); while ( *p && (is_ws(*p) || *p=='-' ) ) p++; while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) newstr_addchar( &page, *p++ ); if ( page.len>0 ) fields_add( info, "PAGEEND", page.data, level ); newstr_free( &page ); } static void copacin_adddate( fields *info, char *tag, char *newtag, char *p, int level ) { char *months[12]={ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; char month[10]; int found,i,part; newstr date; newstr_init( &date ); part = (!strncasecmp(newtag,"PART",4)); if ( !strcasecmp( tag, "%D" ) ) { while ( *p ) newstr_addchar( &date, *p++ ); if ( date.len>0 ) { if ( part ) fields_add(info, "PARTYEAR", date.data, level); else fields_add( info, "YEAR", date.data, level ); } } else if ( !strcasecmp( tag, "%8" ) ) { while ( *p && *p!=' ' && *p!=',' ) newstr_addchar( &date, *p++ ); if ( date.len>0 ) { found = -1; for ( i=0; i<12 && found==-1; ++i ) if ( !strncasecmp( date.data, months[i], 3 ) ) found = i; if ( found!=-1 ) { if (found>8) sprintf( month, "%d", found+1 ); else sprintf( month, "0%d", found+1 ); if ( part ) fields_add( info, "PARTMONTH", month, level ); else fields_add( info, "MONTH", month, level ); } else { if ( part ) fields_add( info, "PARTMONTH", date.data, level ); else fields_add( info, "MONTH", date.data, level ); } } newstr_empty( &date ); while ( is_ws( *p ) ) p++; while ( *p && *p!='\n' && *p!=',' ) newstr_addchar( &date, *p++ ); if ( date.len>0 && date.len<3 ) { if ( part ) fields_add( info, "PARTDAY", date.data, level ); else fields_add( info, "DAY", date.data, level ); } } newstr_free( &date ); } void copacin_convertf( fields *copacin, fields *info, int reftype, int verbose, variants *all, int nall ) { newstr *t, *d; int process, level, i, n; char *newtag; for ( i=0; i<copacin->nfields; ++i ) { t = &( copacin->tag[i] ); d = &( copacin->data[i] ); n = process_findoldtag( t->data, reftype, all, nall ); if ( n==-1 ) { if ( verbose ) fprintf( stderr, "Cannot find tag '%s'\n", t->data ); continue; } process = ((all[reftype]).tags[n]).processingtype; if ( process == ALWAYS ) continue; /*add these later*/ level = ((all[reftype]).tags[n]).level; newtag = ((all[reftype]).tags[n]).newstr; if ( process==SIMPLE ) fields_add( info, newtag, d->data, level ); else if ( process==TITLE ) title_process( info, newtag, d->data, level ); else if ( process==PERSON ) copacin_addname( info, newtag, d, level ); else if ( process==DATE ) copacin_adddate(info,all[reftype]. tags[i].oldstr,newtag,d->data,level); else if ( process==PAGES ) copacin_addpage( info, d->data, level ); else if ( process==SERIALNO ) addsn( info, d->data, level ); /* else { fprintf(stderr,"%s: internal error -- " "illegal process %d\n", r->progname, process ); }*/ } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/modsin.c���������������������������������������������������������������0000664�0001750�0001750�00000060142�12042412720�014514� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * modsin.c * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "newstr.h" #include "newstr_conv.h" #include "xml.h" #include "xml_encoding.h" #include "fields.h" #include "name.h" #include "reftypes.h" #include "modstypes.h" #ifdef NOCOMPILE typedef struct convert { char *o; /* old */ char *n; /* new */ } convert; #endif static void modsin_detailr( xml *node, newstr *value ) { if ( node->value && node->value->len ) { if ( value->len ) newstr_addchar( value, ' ' ); newstr_strcat( value, node->value->data ); } if ( node->down ) modsin_detailr( node->down, value ); if ( node->next ) modsin_detailr( node->next, value ); } static void modsin_detail( xml *node, fields *info, int level ) { newstr type, value, *tp; if ( node->down ) { newstr_init( &type ); newstr_init( &value ); tp = xml_getattrib( node, "type" ); if ( tp ) { newstr_newstrcpy( &type, tp ); newstr_toupper( &type ); } modsin_detailr( node->down, &value ); if ( !strcasecmp( type.data, "PAGE" ) ) { fields_add( info, "PAGESTART", value.data, level ); } else fields_add( info, type.data, value.data, level ); newstr_free( &type ); newstr_free( &value ); } } static void modsin_date( xml *node, fields *info, int level, int part ) { /* char *month[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };*/ newstr s; char *p = NULL; /* int m;*/ if ( node->value ) p = node->value->data; if ( p ) { newstr_init( &s ); while ( *p && *p!='-' ) newstr_addchar( &s, *p++ ); if ( !part ) fields_add( info, "YEAR", s.data, level ); else fields_add( info, "PARTYEAR", s.data, level ); if ( *p=='-' ) p++; newstr_empty( &s ); while ( *p && *p!='-' ) newstr_addchar( &s, *p++ ); /* m = atoi( s.data );*/ /* if ( m > 0 && m < 13 ) { if ( !part ) fields_add( info, "MONTH", month[m-1], level ); else fields_add( info, "PARTMONTH", month[m-1], level ); } else {*/ if ( !part ) fields_add( info, "MONTH", s.data, level ); else fields_add( info, "PARTMONTH", s.data, level ); /* }*/ if ( *p=='-' ) p++; newstr_empty( &s ); while ( *p ) newstr_addchar( &s, *p++ ); if ( !part ) fields_add( info, "DAY", s.data, level ); else fields_add( info, "PARTDAY", s.data, level ); newstr_free( &s ); } } static void modsin_pager( xml *node, newstr *sp, newstr *ep, newstr *tp ) { if ( xml_tagexact( node, "start" ) ) { newstr_newstrcpy( sp, node->value ); } else if ( xml_tagexact( node, "end" ) ) { newstr_newstrcpy( ep, node->value ); } else if ( xml_tagexact( node, "total" ) ) { newstr_newstrcpy( tp, node->value ); } if ( node->down ) modsin_pager( node->down, sp, ep, tp ); if ( node->next ) modsin_pager( node->next, sp, ep, tp ); } static void modsin_page( xml *node, fields *info, int level ) { newstr sp, ep, tp; if ( node->down ) { newstr_init( &sp ); newstr_init( &ep ); newstr_init( &tp ); modsin_pager( node->down, &sp, &ep, &tp ); if ( sp.len || ep.len ) { if ( sp.len ) fields_add( info, "PAGESTART", sp.data, level ); if ( ep.len ) fields_add( info, "PAGEEND", ep.data, level ); } if ( tp.len ) fields_add( info, "TOTALPAGES", tp.data, level ); newstr_free( &sp ); newstr_free( &ep ); newstr_free( &tp ); } } static void modsin_titler( xml *node, newstr *title, newstr *subtitle ) { if ( xml_tagexact( node, "title" ) ) newstr_strcat( title, node->value->data ); else if ( xml_tagexact( node, "subTitle" ) ) newstr_strcat( subtitle, node->value->data ); if ( node->down ) modsin_titler( node->down, title, subtitle ); if ( node->next ) modsin_titler( node->next, title, subtitle ); } static void modsin_title( xml *node, fields *info, int level ) { newstr title, subtitle; int abbr = xml_tag_attrib( node, "titleInfo", "type", "abbreviated" ); if ( node->down ) { newstr_init( &title ); newstr_init( &subtitle ); modsin_titler( node->down, &title, &subtitle ); if ( title.len ) { if ( abbr ) fields_add( info, "SHORTTITLE", title.data, level ); else fields_add( info, "TITLE", title.data, level ); } if ( subtitle.len ) { if ( abbr ) fields_add( info, "SHORTSUBTITLE", subtitle.data, level ); else fields_add( info, "SUBTITLE", subtitle.data, level ); } newstr_free( &title ); newstr_free( &subtitle ); } } static void modsin_asisr( xml *node, newstr *name, newstr *role ) { if ( xml_tagexact( node, "namePart" ) ) newstr_newstrcpy( name, node->value ); else if ( xml_tagexact( node, "roleTerm" ) ) newstr_strcat( role, node->value->data ); if ( node->down ) modsin_asisr( node->down, name, role ); if ( node->next ) modsin_asisr( node->next, name, role ); } static void modsin_asis( xml *node, fields *info, int level ) { convert roles_convert[] = { { "author", "AUTHOR:ASIS" }, { "creator", "AUTHOR:ASIS" }, { "editor", "EDITOR:ASIS" }, { "degree grantor", "DEGREEGRANTOR:ASIS" }, { "organizer of meeting","ORGANIZER:ASIS" }, { "patent holder", "ASSIGNEE:ASIS" } }; newstr name, role; int i, found; int nroles = sizeof( roles_convert ) / sizeof( roles_convert[0] ); xml *dnode = node->down; if ( dnode ) { newstr_init( &name ); newstr_init( &role ); modsin_asisr( dnode, &name, &role ); if ( role.len ) { found = -1; for ( i=0; i<nroles; ++i ) { if ( !strcasecmp( role.data, roles_convert[i].mods ) ) found = i; } if ( found!=-1 ) { fields_add( info, roles_convert[found].internal, name.data, level ); } else { fields_add( info, role.data, name.data, level ); } } else fields_add( info, "AUTHOR:ASIS", name.data, level ); /* if ( !role.len || !strcasecmp( role.data, "author" ) || !strcasecmp( role.data, "creator" ) ) fields_add( info, "AUTHOR:CORP", name.data, level ); else if ( !strcasecmp( role.data, "editor" ) ) fields_add( info, "EDITOR:CORP", name.data, level ); else if ( !strcasecmp( role.data, "degree grantor" ) ) fields_add( info, "DEGREEGRANTOR", name.data, level ); else fields_add( info, role.data, name.data, level ); */ newstr_free( &name ); newstr_free( &role ); } } static void modsin_corpr( xml *node, newstr *name, newstr *role ) { if ( xml_tagexact( node, "namePart" ) ) newstr_newstrcpy( name, node->value ); else if ( xml_tagexact( node, "roleTerm" ) ) newstr_strcat( role, node->value->data ); if ( node->down ) modsin_corpr( node->down, name, role ); if ( node->next ) modsin_corpr( node->next, name, role ); } static void modsin_corp( xml *node, fields *info, int level ) { convert roles_convert[] = { { "author", "AUTHOR:CORP" }, { "creator", "AUTHOR:CORP" }, { "editor", "EDITOR:CORP" }, { "degree grantor", "DEGREEGRANTOR:CORP" }, { "organizer of meeting","ORGANIZER:CORP" }, { "patent holder", "ASSIGNEE:CORP" } }; newstr name, role; int i, found; int nroles = sizeof( roles_convert ) / sizeof( roles_convert[0] ); xml *dnode = node->down; if ( dnode ) { newstr_init( &name ); newstr_init( &role ); modsin_corpr( dnode, &name, &role ); if ( role.len ) { found = -1; for ( i=0; i<nroles; ++i ) { if ( !strcasecmp( role.data, roles_convert[i].mods ) ) found = i; } if ( found!=-1 ) { fields_add( info, roles_convert[found].internal, name.data, level ); } else { fields_add( info, role.data, name.data, level ); } } else fields_add( info, "AUTHOR:CORP", name.data, level ); /* if ( !role.len || !strcasecmp( role.data, "author" ) || !strcasecmp( role.data, "creator" ) ) fields_add( info, "AUTHOR:CORP", name.data, level ); else if ( !strcasecmp( role.data, "editor" ) ) fields_add( info, "EDITOR:CORP", name.data, level ); else if ( !strcasecmp( role.data, "degree grantor" ) ) fields_add( info, "DEGREEGRANTOR", name.data, level ); else fields_add( info, role.data, name.data, level ); */ newstr_free( &name ); newstr_free( &role ); } } static void modsin_personr( xml *node, newstr *name, newstr *roles ) { if ( xml_tagexact( node, "namePart" ) ) { if ( xml_tag_attrib( node, "namePart", "type", "family" ) ) { if ( name->len ) newstr_prepend( name, "|" ); newstr_prepend( name, node->value->data ); } else if (xml_tag_attrib( node, "namePart", "type", "date")){ } else { /*fprintf(stderr,"modsin_personr: node->tag->data='%s'\n",node->tag->data); fprintf(stderr,"modsin_personr: node->value->data='%s'\n",node->value->data);*/ if ( name->len ) newstr_addchar( name, '|' ); if ( strchr( node->value->data, ',' ) ) name_comma( node->value->data, name ); else name_nocomma( node->value->data, name ); /* newstr_strcat( name, node->value->data ); */ /*fprintf(stderr,"modsin_personr: name->data='%s'\n",name->data);*/ } } else if ( xml_tagexact( node, "roleTerm" ) ) { if ( roles->len ) newstr_addchar( roles, '|' ); newstr_strcat( roles, node->value->data ); } if ( node->down ) modsin_personr( node->down, name, roles ); if ( node->next ) modsin_personr( node->next, name, roles ); } static void modsin_person( xml *node, fields *info, int level ) { newstr name, roles, role; char *p; xml *dnode = node->down; if ( dnode ) { newstr_init( &name ); newstr_init( &role ); newstr_init( &roles ); modsin_personr( dnode, &name, &roles ); /* no defined role, default to author */ if ( !roles.len ) newstr_strcpy( &roles, "author" ); p = roles.data; while ( p && *p ) { while ( p && *p && *p!='|' ) newstr_addchar(&role,*p++); if ( !strcasecmp( role.data, "author" ) || !strcasecmp( role.data, "creator" ) ) fields_add( info, "AUTHOR", name.data, level ); else if ( !strcasecmp( role.data, "editor" ) ) fields_add( info, "EDITOR", name.data, level ); else fields_add( info, role.data, name.data, level ); if ( *p=='|' ) p++; newstr_empty( &role ); } newstr_free( &name ); newstr_free( &roles ); newstr_free( &role ); } } static void modsin_placer( xml *node, fields *info, int level, int school ) { char address_tag[]="ADDRESS", addresscode_tag[]="CODEDADDRESS", school_tag[]="SCHOOL", *newtag = address_tag; newstr *type, s; if ( xml_tag_attrib( node, "place", "type", "school" ) ) { school = 1; } else if ( xml_tagexact( node, "placeTerm" ) ) { if ( school ) newtag = school_tag; type = xml_getattrib( node, "type" ); if ( type && type->len && !strcmp( type->data, "text" ) ) { fields_add( info, newtag, node->value->data, level ); } else if ( !strcmp( type->data, "code" ) ) { newstr_init( &s ); newtag = addresscode_tag; type = xml_getattrib( node, "authority" ); if ( type && type->len ) newstr_newstrcpy(&s, type); newstr_addchar( &s, '|' ); newstr_strcat( &s, node->value->data ); fields_add( info, newtag, s.data, level ); newstr_free( &s ); } } if ( node->down ) modsin_placer( node->down, info, level, school ); if ( node->next ) modsin_placer( node->next, info, level, school ); } static void modsin_origininfor( xml *node, fields *info, int level, newstr *pub, newstr *add, newstr *addc, newstr *ed, newstr *iss ) { if ( xml_tagexact( node, "dateIssued" ) ) modsin_date( node, info, level, 0 ); else if ( xml_tagexact( node, "publisher" ) ) newstr_strcat( pub, node->value->data ); else if ( xml_tagexact( node, "edition" ) ) newstr_strcat( ed, node->value->data ); else if ( xml_tagexact( node, "issuance" ) ) newstr_strcat( iss, node->value->data ); else if ( xml_tagexact( node, "place" ) ) modsin_placer( node, info, level, 0 ); /* else if ( xml_tagexact( node, "placeTerm" ) ) { if ( xml_tag_attrib( node, "placeTerm", "type", "text" ) ) { if ( add->len ) newstr_addchar( add, ' ' ); newstr_strcat( add, node->value->data ); } else if (xml_tag_attrib( node, "placeTerm", "type", "code" )){ newstr *s; s = xml_getattrib( node, "authority" ); if ( addc->len ) newstr_addchar( addc, '|' ); if ( s && s->len ) newstr_strcat( addc, node->value->data ); newstr_addchar( addc, '|' ); newstr_strcat( addc, node->value->data ); } } */ if ( node->down ) modsin_origininfor( node->down, info, level, pub, add, addc, ed, iss ); if ( node->next ) modsin_origininfor( node->next, info, level, pub, add, addc, ed, iss ); } static void modsin_origininfo( xml *node, fields *info, int level ) { newstr publisher, address, addcode, edition, issuance; if ( node->down ) { newstr_init( &publisher ); newstr_init( &address ); newstr_init( &addcode ); newstr_init( &edition ); newstr_init( &issuance ); modsin_origininfor( node->down, info, level, &publisher, &address, &addcode, &edition, &issuance ); if ( publisher.len ) fields_add( info, "PUBLISHER", publisher.data, level ); if ( address.len ) fields_add( info, "ADDRESS", address.data, level ); if ( addcode.len ) fields_add( info, "CODEDADDRESS", addcode.data, level ); if ( edition.len ) fields_add( info, "EDITION", edition.data, level ); if ( issuance.len ) fields_add( info, "ISSUANCE", issuance.data, level ); newstr_free( &publisher ); newstr_free( &address ); newstr_free( &addcode ); newstr_free( &edition ); newstr_free( &issuance ); } } static void modsin_subjectr( xml *node, fields *info, int level ) { if ( xml_tagexact( node, "topic" ) || xml_tagexact( node, "geographic" )) { fields_add( info, "KEYWORD", node->value->data, level ); } if ( node->down ) modsin_subjectr( node->down, info, level ); if ( node->next ) modsin_subjectr( node->next, info, level ); } static void modsin_subject( xml *node, fields *info, int level ) { if ( node->down ) modsin_subjectr( node->down, info, level ); } static void modsin_id1( xml *node, fields *info, int level ) { newstr *ns; ns = xml_getattrib( node, "ID" ); if ( ns ) { fields_add( info, "REFNUM", ns->data, level ); } } static void modsin_genre( xml *node, fields *info, int level ) { char *marc[] = { "abstract or summary", "art original", "art reproduction", "atlas", "autobiography", "bibliography", "book", "catalog", "chart", "comic strip", "conference publication", "database", "dictionary", "diorama", "directory", "discography", "drama", "encyclopedia", "essay", "festschrift", "fiction", "filmography", "filmstrip", "flash card", "folktale", "font", "game", "government publication", "graphic", "globe", "handbook", "history", "humor, satire", "index", "instruction", "interview", "kit", "language instruction", "law report or digest", "legal article", "legal case and case notes", "legislation", "letter", "loose-leaf", "map", "memoir", "microscope slide", "model", "motion picture", "multivolume monograph", "newspaper", "novel", "numeric data", "online system or service", "patent", "periodical", "picture", "poetry", "programmed text", "realia", "rehersal", "remote sensing image", "reporting", "review", "series", "short story", "slide", "sound", "speech", "statistics", "survey of literature", "technical drawing", "technical report", "theses", "toy", "transparency", "treaty", "videorecording", "web site" }; char *added[] = { "manuscript", "academic journal", "magazine", "hearing", "report", "Ph.D. thesis", "Masters thesis", "Diploma thesis", "Doctoral thesis", "Habilitation thesis", "collection", "handwritten note", "communication", "teletype", "airtel", "memo", "e-mail communication", "press release", "television broadcast", "electronic" }; int nmarc = sizeof( marc ) / sizeof( char* ); int nadded = sizeof( added ) /sizeof( char *); int j, ismarc = 0, isadded = 0; if ( node->value && node->value->len ) { for ( j=0; j<nmarc && ismarc==0; ++j ) { if ( !strcasecmp( node->value->data, marc[j] ) ) ismarc = 1; } for ( j=0; j<nadded && ismarc==0 && isadded==0; ++j ) { if ( !strcasecmp( node->value->data, added[j] ) ) isadded = 1; } if ( ismarc || isadded ) fields_add( info, "GENRE", node->value->data, level ); else fields_add( info, "NGENRE", node->value->data, level ); } } static void modsin_resource( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) fields_add( info, "RESOURCE", node->value->data, level ); } static void modsin_language( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) fields_add( info, "LANGUAGE", node->value->data, level ); } static void modsin_toc( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) fields_add( info, "CONTENTS", node->value->data, level ); } static void modsin_note( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) fields_add( info, "NOTES", node->value->data, level ); } static void modsin_abstract( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) fields_add( info, "ABSTRACT", node->value->data, level ); } static void modsin_locationr( xml *node, fields *info, int level ) { char url[]="URL", school[]="SCHOOL", loc[]="LOCATION", *tag=NULL; if ( xml_tagexact( node, "url" ) ) { tag = url; } if ( xml_tag_attrib( node, "physicalLocation", "type", "school" ) ) { tag = school; } else if ( xml_tagexact( node, "physicalLocation" ) ) { tag = loc; } if ( tag ) fields_add( info, tag, node->value->data, level ); if ( node->down ) modsin_locationr( node->down, info, level ); if ( node->next ) modsin_locationr( node->next, info, level ); } static void modsin_location( xml *node, fields *info, int level ) { if ( node->down ) modsin_locationr( node->down, info, level ); } static void modsin_descriptionr( xml *node, newstr *s ) { if ( xml_tagexact( node, "extent" ) ) newstr_newstrcpy( s, node->value ); if ( node->down ) modsin_descriptionr( node->down, s ); if ( node->next ) modsin_descriptionr( node->next, s ); } static void modsin_description( xml *node, fields *info, int level ) { newstr s; newstr_init( &s ); if ( node->down ) modsin_descriptionr( node->down, &s ); else { if ( node->value && node->value->data ); newstr_newstrcpy( &s, node->value ); } if ( s.len ) fields_add( info, "DESCRIPTION", s.data, level ); newstr_free( &s ); } static void modsin_partr( xml *node, fields *info, int level ) { if ( xml_tagexact( node, "detail" ) ) modsin_detail( node, info, level ); else if ( xml_tag_attrib( node, "extent", "unit", "page" ) ) modsin_page( node, info, level ); else if ( xml_tag_attrib( node, "extent", "unit", "pages" ) ) modsin_page( node, info, level ); else if ( xml_tagexact( node, "date" ) ) modsin_date( node, info, level, 1 ); if ( node->next ) modsin_partr( node->next, info, level ); } static void modsin_part( xml *node, fields *info, int level ) { if ( node->down ) modsin_partr( node->down, info, level ); } /* <classification authority="lcc">Q3 .A65</classification> */ static void modsin_classification( xml *node, fields *info, int level ) { if ( node->value && node->value->len ) { if (xml_tag_attrib(node, "classification", "authority", "lcc")){ fields_add( info, "LCC", node->value->data, level ); } else fields_add( info, "CLASSIFICATION", node->value->data, level ); } if ( node->down ) modsin_classification( node->down, info, level ); } static void modsin_identifier( xml *node, fields *info, int level ) { convert ids[] = { { "citekey", "REFNUM" }, { "issn", "ISSN" }, { "isbn", "ISBN" }, { "doi", "DOI" }, { "url", "URL" }, { "uri", "URL" }, { "pubmed", "PUBMED" }, { "medline", "MEDLINE" }, { "pii", "PII" }, { "isi", "ISIREFNUM" }, { "serial number", "SERIALNUMBER" }, { "accessnum", "ACCESSNUM" } }; int i , n = sizeof( ids ) / sizeof( ids[0] ); if ( !node->value || !node->value->data ) return; for ( i=0; i<n; ++i ) { if ( xml_tag_attrib( node, "identifier", "type", ids[i].mods ) ) fields_add( info, ids[i].internal, node->value->data, level ); } } static void modsin_mods( xml *node, fields *info, int level ) { if ( xml_tagexact( node, "titleInfo" ) ) modsin_title( node, info, level ); else if ( xml_tag_attrib( node, "name", "type", "personal" ) ) modsin_person( node, info, level ); else if ( xml_tag_attrib( node, "name", "type", "corporate" ) ) modsin_corp( node, info, level ); else if ( xml_tagexact( node, "name" ) ) modsin_asis( node, info, level ); else if ( xml_tagexact( node, "part" ) ) modsin_part( node, info, level ); else if ( xml_tagexact( node, "identifier" ) ) modsin_identifier( node, info, level ); else if ( xml_tagexact( node, "originInfo" ) ) modsin_origininfo( node, info, level ); else if ( xml_tagexact( node, "typeOfResource" ) ) modsin_resource( node, info, level ); else if ( xml_tagexact( node, "language" ) ) modsin_language( node, info, level ); else if ( xml_tagexact( node, "tableOfContents" ) ) modsin_toc( node, info, level ); else if ( xml_tagexact( node, "genre" ) ) modsin_genre( node, info, level ); else if ( xml_tagexact( node, "date" ) ) modsin_date( node, info, level, 0 ); else if ( xml_tagexact( node, "note" ) ) modsin_note( node, info, level ); else if ( xml_tagexact( node, "abstract" ) ) modsin_abstract( node, info, level ); else if ( xml_tagexact( node, "subject" ) ) modsin_subject( node, info, level ); else if ( xml_tagexact( node, "classification" ) ) modsin_classification( node, info, level ); else if ( xml_tagexact( node, "location" ) ) modsin_location( node, info, level ); else if ( xml_tagexact( node, "physicalDescription" ) ) modsin_description( node, info, level ); else if ( xml_tag_attrib( node, "relatedItem", "type", "host" ) || xml_tag_attrib( node, "relatedItem", "type", "series" ) ) { if ( node->down ) modsin_mods( node->down, info, level+1 ); } if ( node->next ) modsin_mods( node->next, info, level ); } static void modsin_assembleref( xml *node, fields *info ) { if ( xml_tagexact( node, "mods" ) ) { modsin_id1( node, info, 0 ); if ( node->down ) modsin_mods( node->down, info, 0 ); } else if ( node->down ) modsin_assembleref( node->down, info ); if ( node->next ) modsin_assembleref( node->next, info ); } void modsin_convertf( fields *modsin, fields *info, int reftype, int verbose, variants *all, int nall ) { int i; for ( i=0; i<modsin->nfields; ++i ) fields_add( info, modsin->tag[i].data, modsin->data[i].data, modsin->level[i] ); } int modsin_processf( fields *modsin, char *data, char *filename, long nref ) { xml top; xml_init( &top ); xml_tree( data, &top ); modsin_assembleref( &top, modsin ); xml_free( &top ); return 1; } static char * modsin_startptr( char *p ) { char *startptr; startptr = xml_findstart( p, "mods" ); if ( !startptr ) startptr = xml_findstart( p, "mods:mods" ); return startptr; } static char * modsin_endptr( char *p ) { char *endptr; endptr = xml_findend( p, "mods" ); if ( !endptr ) endptr = xml_findend( p, "mods:mods" ); return endptr; } int modsin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { newstr tmp; int m, file_charset = CHARSET_UNKNOWN; char *startptr = NULL, *endptr = NULL; newstr_init( &tmp ); do { if ( line->data ) newstr_strcat( &tmp, line->data ); if ( tmp.data ) { m = xml_getencoding( &tmp ); if ( m!=CHARSET_UNKNOWN ) file_charset = m; startptr = modsin_startptr( tmp.data ); endptr = modsin_endptr( tmp.data ); } else startptr = endptr = NULL; newstr_empty( line ); if ( startptr && endptr ) { newstr_segcpy( reference, startptr, endptr ); newstr_strcpy( line, endptr ); } } while ( !endptr && newstr_fget( fp, buf, bufsize, bufpos, line ) ); newstr_free( &tmp ); *fcharset = file_charset; return ( reference->len > 0 ); } #ifdef NOCOMPILE int main( int argc, char *argv[] ) { printf("Number refs=%ld\n",modsin_readrefs(stdin,stdout)); // xml top; // newstr s, t; // newstr_init( &s ); // newstr_init( &t ); // while ( fgets(buf,sizeof(buf),stdin ) ) { // newstr_strcat( &s, buf ); // } // p = xml_findstart( s.data, "mods" ); // if ( !p ) p = xml_findstart( s.data, "mods:mods" ); // if ( !p ) { // fprintf(stderr,"Can't find starting mods\n"); // exit( EXIT_FAILURE ); // } // q = xml_findend( p, "mods" ); //// if ( !q ) q = xml_findend( p, "mods:mods" ); //// for ( r=p; r!=q+1; r++ ) // newstr_addchar( &t, *r ); // printf("mod='\n%s\n'\n",t.data); // xml_init( &top ); //// printf("buf = '%s'\n",s.data); // xml_tree( t.data, &top ); // xml_draw( &top, 0 ); // xml_free( &top ); return EXIT_SUCCESS; } #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/is_ws.h����������������������������������������������������������������0000664�0001750�0001750�00000000255�12042412720�014353� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * is_ws.h * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #ifndef IS_WS_H #define IS_WS_H extern int is_ws( char ch ); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/risin.h����������������������������������������������������������������0000664�0001750�0001750�00000001240�12042412720�014346� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * risin.h * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #ifndef RISIN_H #define RISIN_H #include "newstr.h" #include "fields.h" #include "reftypes.h" extern int risin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int risin_processf( fields *risin, char *p, char *filename, long nref ); extern int risin_typef( fields *risin, char *filename, int nref, variants *all, int nall ); extern void risin_convertf( fields *risin, fields *info, int reftype, int verbose, variants *all, int nall ); extern variants ris_all[]; extern int ris_nall; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/endin.c����������������������������������������������������������������0000664�0001750�0001750�00000021520�12042412720�014315� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * endin.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "lists.h" #include "fields.h" #include "name.h" #include "title.h" #include "serialno.h" #include "reftypes.h" #include "endin.h" extern lists asis; extern lists corps; extern char progname[]; /* Endnote tag definition: character 1 = '%' character 2 = alphabetic character or digit character 3 = space (ansi 32) */ static int endin_istag( char *buf ) { if (! (buf[0]=='%' ) ) return 0; if (! (((buf[1]>='A' && buf[1]<='Z'))||(buf[1]>='0'&&buf[1]<='9')|| (buf[1]>='a' && buf[1]<='z')|| (buf[1]=='?'||buf[1]=='@'||buf[1]=='!' || buf[1]=='#' || buf[1]=='$' || buf[1]=='&' || buf[1]=='(' || buf[1]==')' || buf[1]=='*' || buf[1]=='+')) ) return 0; if (buf[2]!=' ') return 0; return 1; } static int readmore( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line ) { if ( line->len ) return 1; else return newstr_fget( fp, buf, bufsize, bufpos, line ); } int endin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { int haveref = 0, inref = 0; unsigned char *up; char *p; *fcharset = CHARSET_UNKNOWN; while ( !haveref && readmore( fp, buf, bufsize, bufpos, line ) ) { if ( !line->data ) continue; p = &(line->data[0]); /* Skip <feff> Unicode header information */ /* <feff> = ef bb bf */ up = (unsigned char* ) p; if ( *up==239 && *(up+1)==187 && *(up+2)==191 ) { *fcharset = CHARSET_UNICODE; p += 3; } if ( !*p ) { if ( inref ) haveref = 1; /* blank line separates */ else continue; /* blank line to ignore */ } /* Each reference starts with a tag && ends with a blank line */ if ( endin_istag( p ) ) { if ( reference->len ) newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); inref = 1; } else if ( inref && p ) { newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); } newstr_empty( line ); } if ( reference->len ) haveref = 1; return haveref; } static char* process_endline( newstr *tag, newstr *data, char *p ) { int i; i = 0; while ( i<2 && *p ) { newstr_addchar( tag, *p++); i++; } while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) newstr_addchar( data, *p++ ); newstr_trimendingws( data ); while ( *p=='\r' || *p=='\n' ) p++; return p; } static char * process_endline2( newstr *tag, newstr *data, char *p ) { while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) newstr_addchar( data, *p++ ); newstr_trimendingws( data ); while ( *p=='\r' || *p=='\n' ) p++; return p; } int endin_processf( fields *endin, char *p, char *filename, long nref ) { newstr tag, data; int n; newstr_init( &tag ); newstr_init( &data ); while ( *p ) { if ( endin_istag( p ) ) { p = process_endline( &tag, &data, p ); /* no empty fields allowed */ if ( data.len ) { fields_add( endin, tag.data, data.data, 0 ); } } else { p = process_endline2( &tag, &data, p ); /* endnote puts %K only on 1st line of keywords */ n = endin->nfields; if ( n>0 && data.len ) { if ( !strncmp( endin->tag[n-1].data, "%K", 2 ) ) { fields_add( endin, "%K", data.data, 0 ); } else { newstr_addchar( &(endin->data[n-1]), ' ' ); newstr_strcat( &(endin->data[n-1]), data.data ); } } } newstr_empty( &tag ); newstr_empty( &data ); } newstr_free( &tag ); newstr_free( &data ); return 1; } static void addtype( fields *info, char *data, int level ) { lookups types[] = { { "GENERIC", "ARTICLE" }, { "BOOK", "BOOK" }, { "MANUSCRIPT", "MANUSCRIPT" }, { "CONFERENCE PROCEEDINGS", "INPROCEEDINGS"}, { "REPORT", "REPORT" }, { "COMPUTER PROGRAM", "BOOK" }, { "AUDIOVISUAL MATERIAL", "AUDIOVISUAL" }, { "ARTWORK", "BOOK" }, { "PATENT", "BOOK" }, { "BILL", "BILL" }, { "CASE", "CASE" }, { "JOURNAL ARTICLE", "ARTICLE" }, { "MAGAZINE ARTICLE", "ARTICLE" }, { "BOOK SECTION", "INBOOK" }, { "EDITED BOOK", "BOOK" }, { "NEWSPAPER ARTICLE", "NEWSARTICLE" }, { "THESIS", "PHDTHESIS" }, { "PERSONAL COMMUNICATION", "COMMUNICATION" }, { "ELECTRONIC SOURCE", "TEXT" }, { "FILM OR BROADCAST", "AUDIOVISUAL" }, { "MAP", "MAP" }, { "HEARING", "HEARING" }, { "STATUTE", "STATUTE" }, { "CHART OR TABLE", "CHART" }, }; int ntypes = sizeof( types ) / sizeof( lookups ); int i, found=0; for ( i=0; i<ntypes; ++i ) { if ( !strcasecmp( types[i].oldstr, data ) ) { found = 1; fields_add( info, "TYPE", types[i].newstr, level ); } } if ( !found ) { fprintf( stderr, "Did not identify reference type '%s'\n", data ); fprintf( stderr, "Defaulting to journal article type\n"); fields_add( info, "TYPE", types[0].newstr, level ); } } static void addpage( fields *info, char *p, int level ) { newstr page; newstr_init( &page ); while ( *p && is_ws(*p) ) p++; while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) newstr_addchar( &page, *p++ ); if ( page.len>0 ) fields_add( info, "PAGESTART", page.data, level ); newstr_empty( &page ); while ( *p && (is_ws(*p) || *p=='-' ) ) p++; while ( *p && !is_ws(*p) && *p!='-' && *p!='\r' && *p!='\n' ) newstr_addchar( &page, *p++ ); if ( page.len>0 ) fields_add( info, "PAGEEND", page.data, level ); newstr_free( &page ); } static void adddate( fields *info, char *tag, char *newtag, char *p, int level ) { char *months[12]={ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; char month[10]; int found,i,part; newstr date; newstr_init( &date ); part = (!strncasecmp(newtag,"PART",4)); if ( !strcasecmp( tag, "%D" ) ) { while ( *p ) newstr_addchar( &date, *p++ ); if ( date.len>0 ) { if ( part ) fields_add(info, "PARTYEAR", date.data, level); else fields_add( info, "YEAR", date.data, level ); } } else if ( !strcasecmp( tag, "%8" ) ) { while ( *p && *p!=' ' && *p!=',' ) newstr_addchar( &date, *p++ ); if ( date.len>0 ) { found = -1; for ( i=0; i<12 && found==-1; ++i ) if ( !strncasecmp( date.data, months[i], 3 ) ) found = i; if ( found!=-1 ) { if (found>8) sprintf( month, "%d", found+1 ); else sprintf( month, "0%d", found+1 ); if ( part ) fields_add( info, "PARTMONTH", month, level ); else fields_add( info, "MONTH", month, level ); } else { if ( part ) fields_add( info, "PARTMONTH", date.data, level ); else fields_add( info, "MONTH", date.data, level ); } } newstr_empty( &date ); while ( is_ws( *p ) ) p++; while ( *p && *p!='\n' && *p!=',' ) newstr_addchar( &date, *p++ ); if ( date.len>0 && date.len<3 ) { if ( part ) fields_add( info, "PARTDAY", date.data, level ); else fields_add( info, "DAY", date.data, level ); } } newstr_free( &date ); } int endin_typef( fields *endin, char *filename, int nrefs, variants *all, int nall ) { char *refnum = ""; int n, reftype, nrefnum; n = fields_find( endin, "%0", 0 ); nrefnum = fields_find( endin, "%F", 0 ); if ( nrefnum!=-1 ) refnum = endin->data[nrefnum].data; if ( n!=-1 ) reftype = get_reftype( endin->data[n].data, nrefs, all, nall, refnum ); else reftype = get_reftype( "", nrefs, all, nall, refnum ); /* default */ return reftype; } void endin_convertf( fields *endin, fields *info, int reftype, int verbose, variants *all, int nall ) { newstr *d; int i, level, n, process; char *newtag, *t; for ( i=0; i<endin->nfields; ++i ) { /* Ensure that data exists */ d = &( endin->data[i] ); if ( !(d->data) || d->len==0 ) continue; /* * All refer format tags start with '%'. If we have one * that doesn't, assume that it comes from endx2xml * and just copy and paste to output */ t = endin->tag[i].data; if ( t[0]!='%' ) { fields_add( info, t, d->data, endin->level[i] ); continue; } n = process_findoldtag( t, reftype, all, nall ); if ( n==-1 ) { if ( verbose ) fprintf( stderr, "%s: Cannot find tag '%s'='%s'\n", progname, t, d->data ); continue; } process = ((all[reftype]).tags[n]).processingtype; if ( process == ALWAYS ) continue; /* add these later */ level = ((all[reftype]).tags[n]).level; newtag = ((all[reftype]).tags[n]).newstr; if ( process==SIMPLE ) fields_add( info, newtag, d->data, level ); else if ( process==TYPE ) addtype( info, d->data, level ); else if ( process==TITLE ) title_process( info, newtag, d->data, level ); else if ( process==PERSON ) name_add( info, newtag, d->data, level ); else if ( process==DATE ) adddate( info, t, newtag,d->data,level); else if ( process==PAGES ) addpage( info, d->data, level ); else if ( process==SERIALNO ) addsn( info, d->data, level ); else { /* fprintf(stderr,"%s: internal error -- illegal process %d\n", r->progname, process ); */ } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/bibl.c�����������������������������������������������������������������0000664�0001750�0001750�00000002756�12042412720�014142� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * bibl.c * * Copyright (c) Chris Putnam 2005-7 * * Source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include "bibl.h" void bibl_init( bibl *b ) { b->nrefs = b->maxrefs = 0L; b->ref = NULL; } static void bibl_malloc( bibl * b ) { int alloc = 50; b->nrefs = 0; b->ref = ( fields ** ) malloc( sizeof( fields* ) * alloc ); if ( b->ref ) { b->maxrefs = alloc; } else { fprintf( stderr, "bibl_malloc: allocation error\n" ); exit( EXIT_FAILURE ); } } static void bibl_realloc( bibl * b ) { int alloc = b->maxrefs * 2; fields **more; more = ( fields ** ) realloc( b->ref, sizeof( fields* ) * alloc ); if ( more ) { b->ref = more; b->maxrefs = alloc; } else { fprintf( stderr, "bibl_realloc: allocation error\n" ); exit( EXIT_FAILURE ); } } void bibl_addref( bibl *b, fields *ref ) { if ( b->maxrefs==0 ) bibl_malloc( b ); else if ( b->nrefs >= b->maxrefs ) bibl_realloc( b ); b->ref[ b->nrefs ] = ref; b->nrefs++; } void bibl_free( bibl *b ) { long i; for ( i=0; i<b->nrefs; ++i ) fields_free( b->ref[i] ); free( b->ref ); b->nrefs = b->maxrefs = 0; } void bibl_copy( bibl *bout, bibl *bin ) { fields *refin; fields *refout; int i, j; for ( i=0; i<bin->nrefs; ++i ) { refin = bin->ref[i]; refout = fields_new(); for ( j=0; j<refin->nfields; ++j ) { if ( refin->tag[j].data && refin->data[j].data ) fields_add( refout, refin->tag[j].data, refin->data[j].data, refin->level[j] ); } bibl_addref( bout, refout ); } } ������������������referencer-1.2.1/libbibutils/name.h�����������������������������������������������������������������0000664�0001750�0001750�00000000617�12042412720�014151� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * name.h * * mangle names w/ and w/o commas * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef NAME_H #define NAME_H #include "newstr.h" #include "fields.h" extern void name_nocomma( char *start, newstr *outname ); extern void name_comma( char *p, newstr *outname ); extern void name_add( fields *info, char *tag, char *q, int level ); #endif �����������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/latex.h����������������������������������������������������������������0000664�0001750�0001750�00000000441�12042412720�014341� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * latex.h * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef LATEX_H #define LATEX_H extern unsigned int latex2char( char *s, unsigned int *pos, int *unicode ); extern void uni2latex( unsigned int ch, char buf[], int buf_size ); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/utf8.h�����������������������������������������������������������������0000664�0001750�0001750�00000000417�12042412720�014115� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * utf8.h * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef UTF8_H #define UTF8_H extern int utf8_encode( unsigned int value, unsigned char out[6] ); extern unsigned int utf8_decode( char *s, unsigned int *pi ); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/title.h����������������������������������������������������������������0000664�0001750�0001750�00000000475�12042412720�014354� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * title.h * * process titles into title/subtitle pairs for MODS * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef TITLE_H #define TITLE_H #include "newstr.h" #include "fields.h" extern void title_process( fields *info, char *tag, char *data, int level ); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/risout.c���������������������������������������������������������������0000664�0001750�0001750�00000027563�12042412720�014562� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * risout.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include "newstr.h" #include "strsearch.h" #include "fields.h" #include "risout.h" enum { TYPE_UNKNOWN, TYPE_STD, /* standard/generic */ TYPE_ARTICLE, TYPE_INBOOK, TYPE_BOOK, TYPE_CONF, /* conference */ TYPE_STAT, /* statute */ TYPE_HEAR, /* hearing */ TYPE_CASE, /* case */ TYPE_NEWS, /* newspaper */ TYPE_MPCT, TYPE_PCOMM, /* personal communication */ TYPE_PAMP, /* pamphlet */ TYPE_ELEC, /* electronic */ TYPE_THESIS, TYPE_REPORT, TYPE_MASTERSTHESIS, TYPE_PHDTHESIS, TYPE_DIPLOMATHESIS, TYPE_DOCTORALTHESIS, TYPE_HABILITATIONTHESIS, TYPE_MAGARTICLE, TYPE_ABSTRACT, TYPE_PATENT, TYPE_PROGRAM, TYPE_UNPUBLISHED, }; typedef struct match_type { char *name; int type; } match_type; /* Try to determine type of reference from <genre></genre> * and <TypeOfResource></TypeOfResource> */ static int get_type_genre( fields *info ) { match_type match_genres[] = { { "academic journal", TYPE_ARTICLE }, { "magazine", TYPE_MAGARTICLE }, { "conference publication", TYPE_CONF }, { "newspaper", TYPE_NEWS }, { "legislation", TYPE_STAT }, { "communication", TYPE_PCOMM }, { "hearing", TYPE_HEAR }, { "electronic", TYPE_ELEC }, { "legal case and case notes", TYPE_CASE }, { "Ph.D. thesis", TYPE_PHDTHESIS }, { "Masters thesis", TYPE_MASTERSTHESIS }, { "Diploma thesis", TYPE_DIPLOMATHESIS }, { "Doctoral thesis", TYPE_DOCTORALTHESIS }, { "Habilitation thesis", TYPE_HABILITATIONTHESIS }, { "report", TYPE_REPORT }, { "abstract or summary", TYPE_ABSTRACT }, { "patent", TYPE_PATENT }, { "unpublished", TYPE_UNPUBLISHED }, }; int nmatch_genres = sizeof( match_genres ) / sizeof( match_genres[0] ); match_type match_res[] = { { "software, multimedia", TYPE_PROGRAM }, }; int nmatch_res = sizeof( match_res ) / sizeof( match_res[0] ); char *tag, *data; int type = TYPE_UNKNOWN, i, j; for ( i=0; i<info->nfields; ++i ) { tag = info->tag[i].data; if ( strcasecmp( tag, "GENRE" ) && strcasecmp( tag, "NGENRE") ) continue; data = info->data[i].data; for ( j=0; j<nmatch_genres; ++j ) { if ( !strcasecmp( data, match_genres[j].name ) ) type = match_genres[j].type; } if ( type==TYPE_UNKNOWN ) { if ( !strcasecmp( data, "periodical" ) ) type = TYPE_ARTICLE; else if ( !strcasecmp( data, "theses" ) ) type = TYPE_THESIS; else if ( !strcasecmp( data, "book" ) ) { if ( info->level[i]==0 ) type=TYPE_BOOK; else type=TYPE_INBOOK; } else if ( !strcasecmp( data, "collection" ) ) { if ( info->level[i]==0 ) type=TYPE_BOOK; else type=TYPE_INBOOK; } } } if ( type==TYPE_UNKNOWN ) { for ( i=0; i<info->nfields; ++i ) { tag = info->tag[i].data; if ( strcasecmp( tag, "RESOURCE" ) ) continue; data = info->data[i].data; for ( j=0; j<nmatch_res; ++j ) { if ( !strcasecmp( data, match_res[j].name ) ) type = match_res[j].type; } } } return type; } /* Try to determine type of reference from <issuance></issuance> and */ /* <typeOfReference></typeOfReference> */ static int get_type_issuance( fields *info ) { int type = TYPE_UNKNOWN; int i, monographic = 0, text = 0, monographic_level = 0; for ( i=0; i<info->nfields; ++i ) { if ( !strcasecmp( info->tag[i].data, "issuance" ) && !strcasecmp( info->data[i].data, "MONOGRAPHIC" ) ){ monographic = 1; monographic_level = info->level[i]; } if ( !strcasecmp( info->tag[i].data, "typeOfResource" ) && !strcasecmp( info->data[i].data,"text") ) { text = 1; } } if ( monographic && text ) { if ( monographic_level==0 ) type=TYPE_BOOK; else if ( monographic_level>0 ) type=TYPE_INBOOK; } return type; } static int get_type( fields *info ) { int type; type = get_type_genre( info ); if ( type==TYPE_UNKNOWN ) type = get_type_issuance( info ); if ( type==TYPE_UNKNOWN ) type = TYPE_STD; return type; } static void output_type( FILE *fp, int type ) { fprintf( fp, "TY - " ); switch ( type ) { case TYPE_STD: fprintf( fp, "STD\n" ); break; case TYPE_ARTICLE: fprintf( fp, "JOUR\n" ); break; case TYPE_BOOK: fprintf( fp, "BOOK\n" ); break; case TYPE_INBOOK: fprintf( fp, "CHAP\n" ); break; case TYPE_CONF: fprintf( fp, "CONF\n" ); break; case TYPE_STAT: fprintf( fp, "STAT\n" ); break; case TYPE_HEAR: fprintf( fp, "HEAR\n" ); break; case TYPE_CASE: fprintf( fp, "CASE\n" ); break; case TYPE_NEWS: fprintf( fp, "NEWS\n" ); break; case TYPE_MPCT: fprintf( fp, "MPCT\n" ); break; case TYPE_PCOMM: fprintf( fp, "PCOMM\n" ); break; case TYPE_PAMP: fprintf( fp, "PAMP\n" ); break; case TYPE_ELEC: fprintf( fp, "ELEC\n" ); break; case TYPE_THESIS: case TYPE_PHDTHESIS: case TYPE_MASTERSTHESIS: case TYPE_DIPLOMATHESIS: case TYPE_DOCTORALTHESIS: case TYPE_HABILITATIONTHESIS: fprintf( fp, "THES\n" ); break; case TYPE_REPORT: fprintf( fp, "RPRT\n" ); break; case TYPE_MAGARTICLE: fprintf( fp, "MGZN\n" ); break; case TYPE_ABSTRACT: fprintf( fp, "ABST\n" ); break; case TYPE_PATENT: fprintf( fp, "PAT\n" ); break; case TYPE_PROGRAM: fprintf( fp, "COMP\n" ); break; case TYPE_UNPUBLISHED: fprintf( fp, "UNPB\n" ); break; } } static void output_person ( FILE *fp, char *p ) { int nseps = 0, nch; while ( *p ) { nch = 0; if ( nseps ) fprintf( fp, " " ); while ( *p && *p!='|' ) { fprintf( fp, "%c", *p++ ); nch++; } if ( *p=='|' ) p++; if ( nseps==0 ) fprintf( fp, "," ); else if ( nch==1 ) fprintf( fp, "." ); nseps++; } } static void output_people( FILE *fp, fields *info, long refnum, char *tag, char *ristag, int level ) { int i; for ( i=0; i<info->nfields; ++i ) { if ( level!=-1 && info->level[i]!=level ) continue; if ( !strcasecmp( info->tag[i].data, tag ) ) { fprintf( fp, "%s - ", ristag ); output_person ( fp, info->data[i].data ); fprintf( fp, "\n" ); } } } static void output_date( FILE *fp, fields *info, long refnum ) { int year = fields_find( info, "YEAR", -1 ); int month = fields_find( info, "MONTH", -1 ); int day = fields_find( info, "DAY", -1 ); if ( year==-1 ) year = fields_find( info, "PARTYEAR", -1 ); if ( month==-1 ) month = fields_find( info, "PARTMONTH", -1 ); if ( day==-1 ) day = fields_find( info, "PARTDAY", -1 ); if ( year==-1 && month==-1 && day==-1 ) return; fprintf( fp, "PY - " ); if ( year!=-1 ) fprintf( fp, "%s", info->data[year].data ); fprintf( fp, "/" ); if ( month!=-1 ) fprintf( fp, "%s", info->data[month].data ); fprintf( fp, "/" ); if ( day!=-1 ) fprintf( fp, "%s", info->data[day].data ); fprintf( fp, "\n" ); } static void output_title( FILE *fp, fields *info, char *ristag, int level ) { int n1 = fields_find( info, "TITLE", level ); int n2 = fields_find( info, "SUBTITLE", level ); if ( n1!=-1 ) { fprintf( fp, "%s - %s", ristag, info->data[n1].data ); if ( n2!=-1 ) { if ( info->data[n1].data[info->data[n1].len]!='?' ) fprintf( fp, ": " ); else fprintf( fp, " " ); fprintf( fp, "%s", info->data[n2].data ); } fprintf( fp, "\n" ); } } static void output_abbrtitle( FILE *fp, fields *info, char *ristag, int level ) { int n1 = fields_find( info, "SHORTTITLE", level ); int n2 = fields_find( info, "SHORTSUBTITLE", level ); if ( n1!=-1 ) { fprintf( fp, "%s - %s", ristag, info->data[n1].data ); if ( n2!=-1 ){ if ( info->data[n1].data[info->data[n1].len]!='?' ) fprintf( fp, ": " ); else fprintf( fp, " " ); fprintf( fp, "%s", info->data[n2].data ); } fprintf( fp, "\n" ); } } static void output_pages( FILE *fp, fields *info, long refnum ) { int sn = fields_find( info, "PAGESTART", -1 ); int en = fields_find( info, "PAGEEND", -1 ); int ar = fields_find( info, "ARTICLENUMBER", -1 ); if ( sn!=-1 || en!=-1 ) { if ( sn!=-1 ) fprintf( fp, "SP - %s\n", info->data[sn].data ); if ( en!=-1 ) fprintf( fp, "EP - %s\n", info->data[en].data ); } else if ( ar!=-1 ) { fprintf( fp, "SP - %s\n", info->data[ar].data ); } } static void output_keywords( FILE *fp, fields *info ) { int i; for ( i=0; i<info->nfields; ++i ) { if ( !strcmp( info->tag[i].data, "KEYWORD" ) ) fprintf( fp, "KW - %s\n", info->data[i].data ); } } static void output_pubmed( FILE *fp, fields *info ) { int i; for ( i=0; i<info->nfields; ++i ) { if ( !strcmp( info->tag[i].data, "PUBMED" ) ) fprintf( fp, "UR - PM:%s\n", info->data[i].data ); } } static void output_thesishint( FILE *fp, int type ) { if ( type==TYPE_MASTERSTHESIS ) fprintf( fp, "%s - %s\n", "U1", "Masters thesis" ); else if ( type==TYPE_PHDTHESIS ) fprintf( fp, "%s - %s\n", "U1", "Ph.D. thesis" ); else if ( type==TYPE_DIPLOMATHESIS ) fprintf( fp, "%s - %s\n", "U1", "Diploma thesis" ); else if ( type==TYPE_DOCTORALTHESIS ) fprintf( fp, "%s - %s\n", "U1", "Doctoral thesis" ); else if ( type==TYPE_HABILITATIONTHESIS ) fprintf( fp, "%s - %s\n", "U1", "Habilitation thesis" ); } static void output_easy( FILE *fp, fields *info, long refnum, char *tag, char *ristag, int level ) { int n = fields_find( info, tag, level ); if ( n!=-1 ) { fprintf( fp, "%s - %s\n", ristag, info->data[n].data ); } } static void output_easyall( FILE *fp, fields *info, long refnum, char *tag, char *ristag, int level ) { int i; for ( i=0; i<info->nfields; ++i ) { if ( !strcmp( info->tag[i].data, tag ) ) fprintf( fp, "%s - %s\n", ristag, info->data[i].data ); } } void risout_write( fields *info, FILE *fp, int format_opts, unsigned long refnum ) { int type; /* { int i; fprintf(stderr,"REF----\n"); for ( i=0; i<info->nfields; ++i ) fprintf(stderr,"\t'%s'\t'%s'\t%d\n",info->tag[i].data,info->data[i].data,info->level[i]); } */ type = get_type( info ); output_type( fp, type ); output_people( fp, info, refnum, "AUTHOR", "AU", 0 ); output_people( fp, info, refnum, "AUTHOR:CORP", "AU", 0 ); output_people( fp, info, refnum, "AUTHOR:ASIS", "AU", 0 ); output_people( fp, info, refnum, "AUTHOR", "A2", 1 ); output_people( fp, info, refnum, "AUTHOR:CORP", "A2", 1 ); output_people( fp, info, refnum, "AUTHOR:ASIS", "A2", 1 ); output_people( fp, info, refnum, "AUTHOR", "A3", 2 ); output_people( fp, info, refnum, "AUTHOR:CORP", "A3", 2 ); output_people( fp, info, refnum, "AUTHOR:ASIS", "A3", 2 ); output_people( fp, info, refnum, "EDITOR", "ED", -1 ); output_people( fp, info, refnum, "EDITOR:CORP", "ED", -1 ); output_people( fp, info, refnum, "EDITOR:ASIS", "ED", -1 ); output_date( fp, info, refnum ); output_title( fp, info, "TI", 0 ); output_abbrtitle( fp, info, "T2", -1 ); if ( type==TYPE_ARTICLE || type==TYPE_MAGARTICLE ) { output_title( fp, info, "JO", 1 ); } else output_title( fp, info, "BT", 1 ); output_title( fp, info, "T3", 2 ); output_pages( fp, info, refnum ); output_easy( fp, info, refnum, "VOLUME", "VL", -1 ); output_easy( fp, info, refnum, "ISSUE", "IS", -1 ); output_easy( fp, info, refnum, "NUMBER", "IS", -1 ); /* output article number as pages */ output_easy( fp, info, refnum, "PUBLISHER", "PB", -1 ); output_easy( fp, info, refnum, "DEGREEGRANTOR", "PB", -1 ); output_easy( fp, info, refnum, "DEGREEGRANTOR:ASIS", "PB", -1 ); output_easy( fp, info, refnum, "DEGREEGRANTOR:CORP", "PB", -1 ); output_easy( fp, info, refnum, "ADDRESS", "CY", -1 ); output_keywords( fp, info ); output_easy( fp, info, refnum, "ABSTRACT", "AB", -1 ); output_easy( fp, info, refnum, "ISSN", "SN", -1 ); output_easy( fp, info, refnum, "ISBN", "SN", -1 ); output_easyall( fp, info, refnum, "URL", "UR", -1 ); output_pubmed( fp, info ); output_easy( fp, info, refnum, "NOTES", "N1", -1 ); output_easy( fp, info, refnum, "REFNUM", "ID", -1 ); output_thesishint( fp, type ); fprintf( fp, "ER - \n" ); fflush( fp ); } ���������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/utf8.c�����������������������������������������������������������������0000664�0001750�0001750�00000006511�12042412720�014111� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * utf8.c * * Copyright (c) Chris Putnam 2004-5 * * Source code released under the GPL * */ #include <stdio.h> #include "utf8.h" /* UTF-8 encryption U-00000000 - U-0000007F: 0xxxxxxx U-00000080 - U-000007FF: 110xxxxx 10xxxxxx U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */ static void utf8_build( unsigned int value, unsigned char out[6], int in_pos, int out_pos ) { unsigned int in_mask, out_mask; int byte = 0; while ( in_pos < 32 ) { in_mask = 1 << ( 31 - in_pos ); out_mask = 1 << ( 7 - out_pos ); if ( value & in_mask ) out[byte] |= out_mask; in_pos++; out_pos++; if ( out_pos > 7 ) { out_pos=2; byte++; } } } /* int utf8( in, out[6] ); * * in is character code 0x0 -> 0x7FFFFFFF * int is number of characters for output * */ int utf8_encode( unsigned int value, unsigned char out[6] ) { int i; for ( i=1; i<6; ++i ) out[i] = 0x80; /* 10xxxxxx */ if ( value < 0x80 ) { out[0] = 0x0; /* 0xxxxxxx */ utf8_build( value, out, 25, 1 ); return 1; } else if ( value < 0x800 ) { out[0] = 0xC0; /* 110xxxxx */ utf8_build( value, out, 21, 3 ); return 2; } else if ( value < 0x10000 ) { out[0] = 0xE0; /* 1110xxxx */ utf8_build( value, out, 16, 4 ); return 3; } else if ( value < 0x200000 ) { out[0] = 0xF0; /* 11110xxx */ utf8_build( value, out, 11, 5 ); return 4; } else if ( value < 0x4000000 ) { out[0] = 0xF8; /* 111110xx */ utf8_build( value, out, 6, 6 ); return 5; } else if ( value < (unsigned int ) 0x80000000 ) { out[0] = 0xFC; /* 1111110x */ utf8_build( value, out, 1, 7 ); return 6; } else { /* error, above 2^31 bits encodable by UTF-8 */ return 0; } } unsigned int utf8_decode( char *s, unsigned int *pi ) { unsigned int c; int i = *pi; /* one digit utf-8 */ if ((s[i] & 128)== 0 ) { c = (unsigned int) s[i]; i += 1; } else if ((s[i] & 224)== 192 ) { /* 110xxxxx & 111xxxxx == 110xxxxx */ c = (( (unsigned int) s[i] & 31 ) << 6) + ( (unsigned int) s[i+1] & 63 ); i += 2; } else if ((s[i] & 240)== 224 ) { /* 1110xxxx & 1111xxxx == 1110xxxx */ c = ( ( (unsigned int) s[i] & 15 ) << 12 ) + ( ( (unsigned int) s[i+1] & 63 ) << 6 ) + ( (unsigned int) s[i+2] & 63 ); i += 3; } else if ((s[i] & 248)== 240 ) { /* 11110xxx & 11111xxx == 11110xxx */ c = ( ( (unsigned int) s[i] & 7 ) << 18 ) + ( ( (unsigned int) s[i+1] & 63 ) << 12 ) + ( ( (unsigned int) s[i+2] & 63 ) << 6 ) + ( (unsigned int) s[i+3] & 63 ); i+= 4; } else if ((s[i] & 252)== 248 ) { /* 111110xx & 111111xx == 111110xx */ c = ( ( (unsigned int) s[i] & 3 ) << 24 ) + ( ( (unsigned int) s[i+1] & 63 ) << 18 ) + ( ( (unsigned int) s[i+2] & 63 ) << 12 ) + ( ( (unsigned int) s[i+3] & 63 ) << 6 ) + ( (unsigned int) s[i+4] & 63 ); i += 5; } else if ((s[i] & 254)== 252 ) { /* 1111110x & 1111111x == 1111110x */ c = ( ( (unsigned int) s[i] & 1 ) << 30 ) + ( ( (unsigned int) s[i+1] & 63 ) << 24 ) + ( ( (unsigned int) s[i+2] & 63 ) << 18 ) + ( ( (unsigned int) s[i+3] & 63 ) << 12 ) + ( ( (unsigned int) s[i+4] & 63 ) << 6 ) + ( (unsigned int) s[i+5] & 63 ); i += 6; } else { c = '?'; i++; } *pi = i; return c; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/modstypes.c������������������������������������������������������������0000664�0001750�0001750�00000002352�12042412720�015251� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <stdio.h> #include <string.h> #include "modstypes.h" /* Conversion information for identifier type attributes: * * <identifier type="issn">XXXX-XXXX</identifier> * */ convert identifier_types[] = { { "citekey", "REFNUM" }, { "issn", "ISSN" }, { "isbn", "ISBN" }, { "doi", "DOI" }, { "url", "URL" }, { "uri", "URL" }, { "pubmed", "PUBMED" }, { "medline", "MEDLINE" }, { "pii", "PII" }, { "isi", "ISIREFNUM" }, { "lccn", "LCCN" }, { "serial number", "SERIALNUMBER" }, { "accessnum", "ACCESSNUM" } }; int nidentifier_types = sizeof( identifier_types ) / sizeof( identifier_types[0] ); char * mods_find_attrib( char *internal_name, convert *data, int ndata ) { int i; for ( i=0; i<ndata; ++i ) { if ( !strcasecmp( data[i].internal, internal_name ) ) return data[i].mods; } return NULL; } char * mods_find_internal( char *mods_name, convert *data, int ndata ) { int i; for ( i=0; i<ndata; ++i ) { if ( !strcasecmp( data[i].mods, mods_name ) ) return data[i].internal; } return NULL; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/newstr_conv.c����������������������������������������������������������0000664�0001750�0001750�00000011737�12042412720�015600� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * newstr_conv.c * * Copyright (c) Chris Putnam 1999-2007 * * Source code released under the GPL * * newstring routines for dynamically allocated strings * conversions between character sets * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <limits.h> #include "newstr.h" #include "is_ws.h" #include "latex.h" #include "entities.h" #include "utf8.h" #include "newstr_conv.h" #include "charsets.h" int get_charset( char *name ) { int i; if ( name==NULL ) return CHARSET_UNKNOWN; for ( i=0; i<nallcharconvert; ++i ){ if ( !strcasecmp( name, allcharconvert[i].name ) ) return i; else if ( allcharconvert[i].name2[0]!='\0' && !strcasecmp( name, allcharconvert[i].name2 ) ) return i; } return CHARSET_UNKNOWN; } void list_charsets( FILE *fp ) { int i; for ( i=0; i<nallcharconvert; ++i ){ fprintf( fp, " %s", allcharconvert[i].name ); if ( (i>0 && i%5==0) || (i==nallcharconvert-1) ) fprintf( fp, "\n"); } } static void addentity( newstr *s, unsigned int ch ) { char buf[512]; sprintf( buf, "&#%d;", ch ); newstr_strcat( s, buf ); } static void addutf8char( newstr *s, unsigned int ch, int xmlout, int utf8out ) { unsigned char code[6]; int nc, i; if ( xmlout ) { if ( ch==60 ) { newstr_strcat( s, "<" ); return; } else if ( ch==62 ) { newstr_strcat( s, ">" ); return; } else if ( ch==38 ) { newstr_strcat( s, "&" ); return; } else if ( ch > 127 && !utf8out ) { addentity( s, ch ); return; } } nc = utf8_encode( ch, code ); for ( i=0; i<nc; ++i ) newstr_addchar( s, code[i] ); } static void addlatexchar( newstr *s, unsigned int ch, int xmlout, int utf8out ) { char buf[512]; uni2latex( ch, buf, sizeof( buf ) ); /* If the unicode character isn't recognized as latex output * a '?' unless the user has requested unicode output. If so, * output the unicode. */ if ( utf8out && !strcmp( buf, "?" ) ) { addutf8char( s, ch, xmlout, utf8out ); } else { newstr_strcat( s, buf ); } } static void addxmlchar( newstr *s, unsigned int ch ) { if ( ch==60 ) newstr_strcat ( s, "<" ); else if ( ch==62 ) newstr_strcat ( s, ">" ); else if ( ch==38 ) newstr_strcat ( s, "&" ); else if ( ch > 127 ) addentity( s, ch ); else newstr_addchar( s, ch ); } static unsigned int lookupchar( int charsetin, char c ) { return allcharconvert[charsetin].table[(int)c]; } static unsigned int lookupuni( int charsetout, unsigned int unicode ) { int i; if ( charsetout==CHARSET_UNICODE ) return unicode; for ( i=0; i<256; ++i ) { if ( unicode == allcharconvert[charsetout].table[i] ) return i; } return '?'; } /* * get_unicode() * * This can be a little tricky. If the character is simply encoded * such as UTF8 for > 128 or by numeric xml entities such as "Ȗ" * then the output of decode_entity() and utf8_decode will necessarily * be in the charsetin character set. On the other hand, if it's a * fancy latex expression, such as "\alpha", or a non-numeric xml entity * like "&", then we'll get the Unicode value (because our lists only * keep the Unicode equivalent). * * The unicode variable indicates whether or not a Unicode-based listing * was used to convert the character (remember that charsetin could be * Unicode independently). * * The charset variable is used to keep track of what character set * the character is in prior to conversion. * */ static unsigned int get_unicode( newstr *s, unsigned int *pi, int charsetin, int latexin, int utf8in, int xmlin ) { unsigned int ch; int unicode = 0, err = 0; if ( xmlin && s->data[*pi]=='&' ) ch = decode_entity( s->data, pi, &unicode, &err ); else if ( latexin ) { /* Must handle bibtex files in UTF8 */ if ( utf8in && ( s->data[*pi] & 128 ) ) { ch = utf8_decode( s->data, pi ); } else ch = latex2char( s->data, pi, &unicode ); } else if ( utf8in ) ch = utf8_decode( s->data, pi ); else { ch = (unsigned int) s->data[*pi]; *pi = *pi + 1; } if ( !unicode && charsetin!=CHARSET_UNICODE ) ch = lookupchar( charsetin, ch ); return ch; } static void write_unicode( newstr *s, unsigned int ch, int charsetout, int latexout, int utf8out, int xmlout ) { unsigned int c; if ( latexout ) addlatexchar( s, ch, xmlout, utf8out ); else if ( utf8out ) addutf8char( s, ch, xmlout, utf8out ); else { c = lookupuni( charsetout, ch ); if ( xmlout ) addxmlchar( s, c ); else newstr_addchar( s, c ); } } void newstr_convert( newstr *s, int charsetin, int latexin, int utf8in, int xmlin, int charsetout, int latexout, int utf8out, int xmlout ) { unsigned int ch; newstr ns; unsigned int pos = 0; if ( s->len==0 ) return; newstr_init( &ns ); if ( charsetin==CHARSET_UNKNOWN ) charsetin = CHARSET_DEFAULT; if ( charsetout==CHARSET_UNKNOWN ) charsetout = CHARSET_DEFAULT; while ( s->data[pos] ) { ch = get_unicode( s, &pos, charsetin, latexin, utf8in, xmlin ); write_unicode( &ns, ch, charsetout, latexout, utf8out, xmlout ); } newstr_swapstrings( s, &ns ); newstr_free( &ns ); } ���������������������������������referencer-1.2.1/libbibutils/xml.h������������������������������������������������������������������0000664�0001750�0001750�00000001450�12042412720�014025� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * xml.h * * Copyright (c) Chris Putnam 2004-7 * * Source code released under the GPL * */ #ifndef XML_H #define XML_H #include "lists.h" #include "newstr.h" typedef struct xml_attrib { lists attrib; lists value; } xml_attrib; typedef struct xml { newstr *tag; newstr *value; xml_attrib *a; struct xml *down; struct xml *next; #ifdef COUNT_TRAVERSAL int count; #endif } xml; extern void xml_init( xml *x ); extern newstr * xml_getattrib( xml *node, char *attrib ); extern char * xml_findstart( char *buffer, char *tag ); extern char * xml_findend( char *buffer, char *tag ); extern int xml_tagexact( xml *node, char *s ); extern int xml_tag_attrib( xml *node, char *s, char *attrib, char *value ); extern void xml_free( xml *x ); extern char * xml_tree( char *p, xml *onode ); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/bibtexin.c�������������������������������������������������������������0000664�0001750�0001750�00000035121�12042412720�015026� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * bibtexin.c * * Copyright (c) Chris Putnam 2003-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include "is_ws.h" #include "strsearch.h" #include "newstr.h" #include "newstr_conv.h" #include "fields.h" #include "lists.h" #include "name.h" #include "title.h" #include "reftypes.h" #include "bibtexin.h" extern lists asis; extern lists corps; lists find = { 0, 0, NULL }; lists replace = { 0, 0, NULL }; /* * readf can "read too far", so we store this information in line, thus * the next new text is in line, either from having read too far or * from the next chunk obtained via newstr_fget() * * return 1 on success, 0 on error/end-of-file * */ static int readmore( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line ) { if ( line->len ) return 1; else return newstr_fget( fp, buf, bufsize, bufpos, line ); } /* * readf() * * returns zero if cannot get reference and hit end of-file * returns 1 if last reference in file, 2 if reference within file */ int bibtexin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { int haveref = 0; char *p; while ( haveref!=2 && readmore( fp, buf, bufsize, bufpos, line ) ) { if ( line->len == 0 ) continue; /* blank line */ p = &(line->data[0]); while ( is_ws( *p ) ) p++; if ( *p == '%' ) { /* commented out line */ newstr_empty( line ); continue; } if ( *p == '@' ) haveref++; if ( haveref && haveref<2 ) { newstr_strcat( reference, p ); newstr_addchar( reference, '\n' ); newstr_empty( line ); } else if ( !haveref ) newstr_empty( line ); } *fcharset = CHARSET_UNKNOWN; return haveref; } static char * bibtex_item( char *p, newstr *s ) { int nquotes = 0; int nbrackets = 0; while ( *p ) { if ( !nquotes && !nbrackets ) { if ( /*is_ws( *p ) ||*/ *p==',' || *p=='=' || *p=='}' || *p==')' ) goto out; } if ( *p=='\"' && *(p-1)!='\\') { nquotes = ( nquotes==0 ); newstr_addchar( s, *p ); } else if ( *p=='{' ) { nbrackets++; /*if ( s->len!=0 )*/ newstr_addchar( s, *p ); } else if ( *p=='}' ) { nbrackets--; /*if ( nbrackets>0 )*/ newstr_addchar( s, *p ); } else { if ( s->len!=0 || ( s->len==0 && !is_ws( *p ) ) ) newstr_addchar( s, *p ); } p++; } out: newstr_trimendingws( s ); return p; } static char * process_bibtexline( char *p, newstr *tag, newstr *data ) { while ( is_ws( *p ) ) p++; p = bibtex_item( p, tag ); while ( is_ws( *p ) ) p++; if ( *p=='=' ) { p++; while ( is_ws ( *p ) ) p++; p = bibtex_item( p, data ); while ( is_ws ( *p ) ) p++; } if ( *p==',' || *p=='}' || *p==')' ) p++; while ( is_ws ( *p ) ) p++; return p; } static void bibtex_cleantoken( newstr *s ) { /* 'textcomp' annotations */ newstr_findreplace( s, "\\textit", "" ); newstr_findreplace( s, "\\textbf", "" ); newstr_findreplace( s, "\\textsl", "" ); newstr_findreplace( s, "\\textsc", "" ); newstr_findreplace( s, "\\textsf", "" ); newstr_findreplace( s, "\\texttt", "" ); newstr_findreplace( s, "\\textsubscript", "" ); newstr_findreplace( s, "\\textsuperscript", "" ); newstr_findreplace( s, "\\emph", "" ); newstr_findreplace( s, "\\url", "" ); /* Other text annotations */ newstr_findreplace( s, "\\it ", "" ); newstr_findreplace( s, "\\em ", "" ); newstr_findreplace( s, "\\%", "%" ); newstr_findreplace( s, "\\$", "$" ); newstr_findreplace( s, "{", "" ); newstr_findreplace( s, "}", "" ); while ( newstr_findreplace( s, " ", " " ) ) {} /* 'textcomp' annotations that we don't want to substitute on output*/ newstr_findreplace( s, "\\textdollar", "$" ); newstr_findreplace( s, "\\textunderscore", "_" ); } static void bibtex_addstring( char *p ) { newstr s1, s2; newstr_init( &s1 ); newstr_init( &s2 ); while ( is_ws( *p ) ) p++; if ( *p=='(' || *p=='{' ) p++; p = process_bibtexline( p, &s1, &s2 ); lists_add( &find, s1.data ); newstr_findreplace( &s2, "\\ ", " " ); /* newstr_findreplace( &s2, "\&", "&" );*/ bibtex_cleantoken( &s2 ); lists_add( &replace, s2.data ); /* if ( verbose ) { fprintf( stderr, "String replacement: '%s' = '%s'\n", s1.data, s2.data ); } */ newstr_free( &s1 ); newstr_free( &s2 ); } static int bibtex_protected( newstr *data ) { if ( data->data[0]=='{' && data->data[data->len-1]=='}' ) return 1; if ( data->data[0]=='\"' && data->data[data->len-1]=='\"' ) return 1; return 0; } static void bibtex_removeprotection( newstr *data ) { newstr s; if ( data->len<3 ) newstr_empty( data ); /* "", {} to nothing */ else { newstr_init( &s ); newstr_segcpy( &s, &(data->data[1]), &(data->data[data->len-1]) ); newstr_newstrcpy( data, &s ); newstr_free( &s ); } } static void bibtex_split( lists *tokens, newstr *s ) { newstr currtok; int nquotes = 0, nbrackets = 0; int i, n = s->len; newstr_init( &currtok ); for ( i=0; i<n; ++i ) { if ( s->data[i]=='\"' ) { if ( nquotes ) nquotes = 0; else nquotes = 1; newstr_addchar( &currtok, '\"' ); } else if ( s->data[i]=='{' ) { nbrackets++; newstr_addchar( &currtok, '{' ); } else if ( s->data[i]=='}' ) { nbrackets--; newstr_addchar( &currtok, '}' ); } else if ( s->data[i]=='#' && !nquotes && !nbrackets ) { lists_add( tokens, currtok.data ); newstr_empty( &currtok ); } else if ( !is_ws( s->data[i] ) || nquotes || nbrackets ) { newstr_addchar( &currtok, s->data[i] ); } } if ( currtok.len ) lists_add( tokens, currtok.data ); for ( i=0; i<tokens->n; ++i ) { newstr_trimendingws( &(tokens->str[i]) ); } newstr_free( &currtok ); } static int bibtex_usestrings( newstr *s ) { int i; for ( i=0; i<find.n; ++i ) { if ( !strcasecmp( s->data, (find.str[i]).data ) ) { newstr_findreplace( s, (find.str[i]).data, (replace.str[i]).data ); return 1; } } return 0; } /* get reference type */ static char* process_bibtextype( char *p, newstr *data ) { newstr tmp; newstr_init( &tmp ); newstr_empty( data ); if ( *p=='@' ) p++; /* skip '@' character */ while ( *p && *p!='{' && *p!='(' ) newstr_addchar( &tmp, *p++ ); if ( *p=='{' || *p=='(' ) p++; if ( is_ws( *p ) ) p++; if ( tmp.len ) { /* add '{' and '}' to protect from string expansion */ newstr_addchar( data, '{' ); newstr_strcat( data, tmp.data ); newstr_addchar( data, '}' ); } newstr_free( &tmp ); return p; } /* get reference name */ static char* process_bibtexid( char *p, newstr *data ) { newstr tmp; char *start_p = p; newstr_init( &tmp ); newstr_empty( data ); while ( *p && *p!=',' ) newstr_addchar( &tmp, *p++ ); if ( *p==',' ) p++; if ( is_ws( *p ) ) p++; /* skip ending newline/carriage return */ if ( tmp.len ) { if ( strchr( tmp.data, '=' ) ) { /* Endnote writes bibtex files w/o fields, try to * distinguish via presence of an equal sign.... if * it's there, assume that it's a tag/data pair instead * and roll back. */ p = start_p; } else { /* add '{' and '}' to protect from string expansion */ newstr_addchar( data, '{' ); newstr_strcat( data, tmp.data ); newstr_addchar( data, '}' ); } } newstr_free( &tmp ); return p; } static void process_cite( fields *bibin, char *p, char *filename, long nref ) { newstr tag, data; newstr_init( &tag ); newstr_init( &data ); p = process_bibtextype( p, &data ); if ( data.len ) fields_add( bibin, "TYPE", data.data, 0 ); if ( *p ) p = process_bibtexid ( p, &data ); if ( data.len ) fields_add( bibin, "REFNUM", data.data, 0 ); newstr_empty( &data ); while ( *p ) { p = process_bibtexline( p, &tag, &data ); /* no anonymous or empty fields allowed */ if ( tag.len && data.len ) fields_add( bibin, tag.data, data.data, 0 ); newstr_empty( &tag ); newstr_empty( &data ); } newstr_free( &tag ); newstr_free( &data ); } static void process_string( char *p ) { while ( *p && *p!='{' && *p!='(' ) p++; bibtex_addstring( p ); } int bibtexin_processf( fields *bibin, char *data, char *filename, long nref ) { if ( !strncasecmp( data, "@STRING", 7 ) ) { process_string( data ); return 0; } else if ( !strncasecmp( data, "@COMMENT", 8 ) ) { /* Not sure if these are real Bibtex, but not references */ return 0; } else { process_cite( bibin, data, filename, nref ); return 1; } } static void bibtex_addtitleurl( fields *info, newstr *in ) { newstr s; char *p,*q; newstr_init( &s ); q = p = in->data + 6; /*skip past \href{ */ while ( *q && *q!='}' ) q++; newstr_segcpy( &s, p, q ); fields_add( info, "URL", s.data, 0 ); newstr_empty( &s ); if ( *q=='}' ) q++; p = q; while ( *q ) q++; newstr_segcpy( &s, p, q ); newstr_swapstrings( &s, in ); newstr_free( &s ); } static void bibtex_cleandata( newstr *s, fields *info ) { lists tokens = { 0, 0, NULL }; int i; if ( !s->len ) return; bibtex_split( &tokens, s ); for ( i=0; i<tokens.n; ++i ) { if ( !bibtex_protected( &(tokens.str[i] ) ) ) { bibtex_usestrings( &(tokens.str[i]) ); } else { if (!strncasecmp(tokens.str[i].data,"\\href{", 6)) { bibtex_addtitleurl( info, &(tokens.str[i]) ); } bibtex_cleantoken( &(tokens.str[i]) ); } } newstr_empty( s ); for ( i=0; i<tokens.n; ++i ) { if ( bibtex_protected( &(tokens.str[i]) ) ) bibtex_removeprotection( &(tokens.str[i])); newstr_strcat( s, tokens.str[i].data ); } lists_free( &tokens ); } static long bibtexin_findref( bibl *bin, char *citekey ) { int n; long i; for ( i=0; i<bin->nrefs; ++i ) { n = fields_find( bin->ref[i], "refnum", -1 ); if ( n==-1 ) continue; if ( !strcmp( bin->ref[i]->data[n].data, citekey ) ) return i; } return -1; } static void bibtexin_crossref( bibl *bin ) { char booktitle[] = "booktitle"; long i, j, ncross; char *nt, *nd, *type; int n, ntype, nl; for ( i=0; i<bin->nrefs; ++i ) { n = fields_find( bin->ref[i], "CROSSREF", -1 ); if ( n==-1 ) continue; ncross = bibtexin_findref( bin, bin->ref[i]->data[n].data ); if ( ncross==-1 ) { int n1 = fields_find( bin->ref[i], "REFNUM", -1 ); fprintf( stderr, "Cannot find cross-reference '%s'", bin->ref[i]->data[n].data); if ( n1!=-1 ) fprintf( stderr, " for reference '%s'\n", bin->ref[i]->data[n1].data ); fprintf( stderr, "\n" ); continue; } ntype = fields_find( bin->ref[i], "TYPE", -1 ); type = bin->ref[i]->data[ntype].data; fields_setused( bin->ref[i], n ); /* bin->ref[i]->used[n] = 1; */ for ( j=0; j<bin->ref[ncross]->nfields; ++j ) { nt = bin->ref[ncross]->tag[j].data; if ( !strcasecmp( nt, "TYPE" ) ) continue; if ( !strcasecmp( nt, "REFNUM" ) ) continue; if ( !strcasecmp( nt, "TITLE" ) ) { if ( !strcasecmp( type, "Inproceedings" ) || !strcasecmp( type, "Incollection" ) ) nt = booktitle; } nd = bin->ref[ncross]->data[j].data; nl = bin->ref[ncross]->level[j] + 1; fields_add( bin->ref[i], nt, nd, nl ); } } } static void bibtexin_cleanref( fields *bibin ) { newstr *t, *d; int i; for ( i=0; i<bibin->nfields; ++i ) { t = &( bibin->tag[i] ); d = &( bibin->data[i] ); bibtex_cleandata( d, bibin ); if ( !strsearch( t->data, "AUTHORS" ) ) { newstr_findreplace( d, "\n", " " ); newstr_findreplace( d, "\r", " " ); } else if ( !strsearch( t->data, "ABSTRACT" ) || !strsearch( t->data, "SUMMARY" ) || !strsearch( t->data, "NOTE" ) ) { newstr_findreplace( d, "\n", "" ); newstr_findreplace( d, "\r", "" ); } } } void bibtexin_cleanf( bibl *bin ) { long i; for ( i=0; i<bin->nrefs; ++i ) bibtexin_cleanref( bin->ref[i] ); bibtexin_crossref( bin ); } /* * process_names( info, newtag, field, level); * * split names in author list separated by and's (use '|' character) * and add names */ static void process_names( fields *info, char *tag, newstr *data, int level ) { newstr_findreplace( data, " and ", "|" ); name_add( info, tag, data->data, level ); } static void process_pages( fields *info, newstr *s, int level ) { char *p, *q; newstr sp, ep; newstr_init( &sp ); newstr_init( &ep ); newstr_findreplace( s, " ", "" ); p = q = s->data; while ( isdigit( *q ) ) q++; newstr_segcpy( &sp, p, q ); if ( sp.len>0 ) fields_add( info, "PAGESTART", sp.data, level ); p = q; while ( *p && !isdigit(*p) ) p++; q = p; while ( isdigit( *q ) ) q++; newstr_segcpy( &ep, p, q ); if ( ep.len>0 ) fields_add( info, "PAGEEND", ep.data, level ); newstr_free(&sp); newstr_free(&ep); } static void process_url( fields *info, char *p, int level ) { if ( !strncasecmp( p, "\\urllink", 8 ) ) fields_add( info, "URL", p+8, level ); else if ( !strncasecmp( p, "\\url", 4 ) ) fields_add( info, "URL", p+4, level ); else fields_add( info, "URL", p, level ); } int bibtexin_typef( fields *bibin, char *filename, int nrefs, variants *all, int nall ) { char *refnum = ""; int reftype, n, nrefnum; n = fields_find( bibin, "TYPE", 0 ); nrefnum = fields_find( bibin, "REFNUM", 0 ); if ( nrefnum!=-1 ) refnum = (bibin->data[nrefnum]).data; if ( n!=-1 ) /* figure out type */ reftype = get_reftype( (bibin->data[n]).data, nrefs, all, nall, refnum ); else /* no type info, go for default */ reftype = get_reftype( "", nrefs, all, nall, refnum ); return reftype; } static void report( fields *info ) { int i; for ( i=0; i<info->nfields; ++i ) fprintf(stderr, "'%s' %d = '%s'\n",info->tag[i].data,info->level[i], info->data[i].data); } void bibtexin_convertf( fields *bibin, fields *info, int reftype, int verbose, variants *all, int nall ) { newstr *t, *d; int process, level, i, n; char *newtag; for ( i=0; i<bibin->nfields; ++i ) { d = &( bibin->data[i] ); if ( d->len == 0 ) continue; /* skip ones with no data */ /* skip ones already "used" such as successful crossref */ if ( bibin->used[i] ) continue; t = &( bibin->tag[i] ); n = process_findoldtag( t->data, reftype, all, nall ); if ( n==-1 ) { /* * Referencer hack: pass unknown stuff (eg eprint) * right through like last night's curry. */ #if 0 if (verbose && strcmp(t->data,"TYPE") ) { fprintf( stderr, "Cannot find tag '%s'\n", t->data ); } continue; #endif fprintf (stderr, "bibtexin_convertf: *would* have discarded %s\n", t->data); fields_add(info, t->data, d->data, LEVEL_MAIN ); continue; } process = ((all[reftype]).tags[n]).processingtype; if ( process == ALWAYS ) continue; /* add these later */ level = ((all[reftype]).tags[n]).level; newtag = ((all[reftype]).tags[n]).newstr; if ( process==SIMPLE ) fields_add( info, newtag, d->data, level ); else if ( process==TITLE ) title_process( info, "TITLE", d->data, level); else if ( process==PERSON ) process_names( info, newtag, d, level); else if ( process==PAGES ) process_pages( info, d, level); else if ( process==BIBTEX_URL ) process_url( info, d->data, level ); } if ( verbose ) report( info ); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/isiin.h����������������������������������������������������������������0000664�0001750�0001750�00000001240�12042412720�014335� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * isiin.h * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #ifndef ISIIN_H #define ISIIN_H #include "newstr.h" #include "fields.h" #include "reftypes.h" extern int isiin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int isiin_typef( fields *isiin, char *filename, int nref, variants *all, int nall ); extern void isiin_convertf( fields *isiin, fields *info, int reftype, int verbose, variants *all, int nall ); extern int isiin_processf( fields *isiin, char *p, char *filename, long nref ); extern variants isi_all[]; extern int isi_nall; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/bibutils.c�������������������������������������������������������������0000664�0001750�0001750�00000042041�12042412720�015036� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * bibutils.c * * Copyright (c) Chris Putnam 2005-7 * * Source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include "bibutils.h" /* internal includes */ #include "reftypes.h" #include "bibtexin.h" #include "bibtexout.h" #include "copacin.h" #include "endin.h" #include "endxmlin.h" #include "endout.h" #include "isiin.h" #include "isiout.h" #include "medin.h" #include "modsin.h" #include "risin.h" #include "risout.h" #include "modsout.h" #include "wordout.h" #include "newstr_conv.h" #include "is_ws.h" typedef struct convert_rules { int (*readf)(FILE*,char*,int,int*,newstr*,newstr*,int*); int (*processf)(fields*,char*,char*,long); void (*cleanf)(bibl*); int (*typef) (fields*,char*,int,variants*,int); void (*convertf)(fields*,fields*,int,int,variants*,int); void (*headerf)(FILE*,int); void (*footerf)(FILE*); void (*writef)(fields*,FILE*,int,unsigned long); variants *all; int nall; } convert_rules; void bibl_initparams( param *p, int readmode, int writemode ) { p->format_opts = 0; p->charsetin = BIBL_CHARSET_DEFAULT; p->charsetin_src = BIBL_SRC_DEFAULT; p->charsetout = BIBL_CHARSET_DEFAULT; p->charsetout_src = BIBL_SRC_DEFAULT; p->latexin = 0; p->latexout = 0; p->utf8in = 0; p->utf8out = 0; p->xmlout = 0; p->verbose = 0; p->addcount = 0; p->singlerefperfile = 0; p->output_raw = 0; /* keep MODS tags for output filter */ if ( readmode == BIBL_BIBTEXIN ) { p->latexin = 1; } else if ( readmode == BIBL_MODSIN ) { p->xmlin = 1; p->utf8in = 1; p->output_raw = BIBL_RAW_WITHMAKEREFID | BIBL_RAW_WITHCHARCONVERT; p->charsetin = BIBL_CHARSET_UNICODE; } else if ( readmode == BIBL_MEDLINEIN ) { /* default medline to UTF8 Unicode */ p->charsetin = BIBL_CHARSET_UNICODE; p->utf8in = 1; p->xmlin = 1; p->output_raw = BIBL_RAW_WITHMAKEREFID | BIBL_RAW_WITHCHARCONVERT; } else if ( readmode == BIBL_ENDNOTEXMLIN ) { p->xmlin = 1; p->utf8in = 1; } if ( writemode == BIBL_BIBTEXOUT ) { p->latexout = 1; } else if ( writemode == BIBL_MODSOUT ) { if ( !p->utf8out ) p->xmlout = 1; p->charsetout = BIBL_CHARSET_UNICODE; } else if ( writemode == BIBL_WORD2007OUT ) { if ( !p->utf8out ) p->xmlout = 1; p->charsetout = BIBL_CHARSET_UNICODE; } else p->xmlout = 0; } void bibl_reporterr( int err ) { fprintf( stderr, "Bibutils: " ); switch( err ) { case BIBL_OK: fprintf( stderr, "No error." ); break; case BIBL_ERR_BADINPUT: fprintf( stderr, "Bad input." ); break; case BIBL_ERR_MEMERR: fprintf( stderr, "Memory error." ); break; case BIBL_ERR_CANTOPEN: fprintf( stderr, "Can't open." ); break; default: fprintf( stderr, "Cannot identify error code."); break; } fprintf( stderr, "\n" ); } static int bibl_illegalinmode( int mode ) { if ( mode < BIBL_FIRSTIN || mode > BIBL_LASTIN ) return 1; else return 0; } static int bibl_illegaloutmode( int mode ) { if ( mode < BIBL_FIRSTOUT || mode > BIBL_LASTOUT ) return 1; else return 0; } void bibl_verbose2( fields *info, char *filename, long nrefs ) { int i; fprintf( stderr, "======== %s %ld : converted\n", filename, nrefs ); for ( i=0; i<info->nfields; ++i ) { fprintf( stderr, "'%s'='%s' level=%d\n", info->tag[i].data, info->data[i].data , info->level[i]); } fprintf( stderr, "\n" ); fflush( stderr ); } void bibl_verbose1( fields *info, fields *orig, char *filename, long nrefs ) { int i; fprintf( stderr, "======== %s %ld : processed\n", filename, nrefs ); for ( i=0; i<orig->nfields; ++i ) { fprintf( stderr, "'%s'='%s' level=%d\n", orig->tag[i].data, orig->data[i].data , orig->level[i]); } bibl_verbose2( info, filename, nrefs ); } void bibl_verbose0( bibl *bin ) { int i; for ( i=0; i<bin->nrefs; ++i ) bibl_verbose2( bin->ref[i], "", i+1 ); } static void process_alwaysadd( fields *info, int reftype, convert_rules *r ) { char tag[512], data[512], *p, *q; int i, process, level; for ( i=0; i<r->all[reftype].ntags; ++i ) { process = ((r->all[reftype]).tags[i]).processingtype; if ( process!=ALWAYS ) continue; level = ((r->all[reftype]).tags[i]).level; p = ((r->all[reftype]).tags[i]).newstr; q = tag; while ( p && *p && *p!='|' ) { *q = *p; q++; p++; } *q = '\0'; q = data; if ( p && *p=='|' ) p++; while ( p && *p ) { *q = *p; q++; p++; } *q = '\0'; fields_add( info, tag, data, level ); } } static int read_ref( FILE *fp, bibl *bin, char *filename, convert_rules *r, param *p ) { newstr reference, line; fields *ref; char buf[256]=""; int nrefs = 0, bufpos = 0, fcharset; newstr_init( &reference ); newstr_init( &line ); while ( r->readf( fp, buf, sizeof(buf), &bufpos, &line, &reference, &fcharset ) ) { if ( reference.len==0 ) continue; ref = fields_new(); if ( !ref ) return BIBL_ERR_MEMERR; if ( r->processf( ref, reference.data, filename, nrefs+1 )){ bibl_addref( bin, ref ); } else { fields_free( ref ); free( ref ); } newstr_empty( &reference ); if ( fcharset!=CHARSET_UNKNOWN ) { /* charset from file takes priority over default, but * not user-specified */ if ( p->charsetin_src!=BIBL_SRC_USER ) { p->charsetin_src = BIBL_SRC_FILE; p->charsetin = fcharset; if ( fcharset!=CHARSET_UNICODE ) p->utf8in = 0; } } } newstr_free( &line ); newstr_free( &reference ); return BIBL_OK; } static void bibl_fixcharsets( bibl *b, param *p ) { fields *ref; long i, j; int swap = 0; int latexout = p->latexout; int latexin = p->latexin; for ( i=0; i<b->nrefs; ++i ) { ref = b->ref[i]; for ( j=0; j<ref->nfields; ++j ) { if ( latexin || latexout ) { /* don't texify/detexify URL's and the like */ if ( !strcasecmp( ref->tag[j].data, "DOI" ) || !strcasecmp( ref->tag[j].data, "URL" ) || !strcasecmp( ref->tag[j].data, "REFNUM" )){ latexin = 0; latexout = 0; swap = 1; } } newstr_convert( &(ref->data[j]), p->charsetin, latexin, p->utf8in, p->xmlin, p->charsetout, latexout, p->utf8out, p->xmlout ); if ( swap ) { swap = 0; latexin = p->latexin; latexout = p->latexout; } } } } static int build_refnum( fields *info, long nrefs ) { newstr refnum; char *p, num[512]; int y, a; newstr_init( &refnum ); y = fields_find( info, "YEAR", -1 ); if ( y==-1 ) y = fields_find( info, "PARTYEAR", -1 ); a = fields_find( info, "AUTHOR", -1 ); if ( a==-1 ) a = fields_find( info, "AUTHOR:CORP", -1 ); if ( a!=-1 && y!=-1 ) { p = info->data[a].data; while ( p && *p && *p!='|' ) newstr_addchar( &refnum, *p++ ); p = info->data[y].data; while ( p && *p && *p!=' ' && *p!='\t' ) newstr_addchar( &refnum, *p++ ); } else { sprintf( num, "%ld", nrefs ); newstr_strcpy( &refnum, "ref" ); newstr_strcat( &refnum, num ); } fields_add( info, "REFNUM", refnum.data, 0 ); newstr_free( &refnum ); return fields_find( info, "REFNUM", 0 ); } static void bibl_checkrefid( bibl *b, param *p ) { fields *ref; long i; char buf[512]; int n; for ( i=0; i<b->nrefs; ++i ) { ref = b->ref[i]; n = fields_find( ref, "REFNUM", 0 ); if ( n==-1 ) n = build_refnum( ref, i+1 ); if ( p->addcount ) { sprintf( buf, "_%ld", i+1 ); newstr_strcat( &(ref->data[n]), buf ); } } } static int generate_citekey( fields *info, int nref ) { newstr citekey; int n1, n2; char *p, buf[100]; newstr_init( &citekey ); n1 = fields_find( info, "AUTHOR", 0 ); if ( n1==-1 ) n1 = fields_find( info, "AUTHOR", -1 ); n2 = fields_find( info, "YEAR", 0 ); if ( n2==-1 ) n2 = fields_find( info, "YEAR", -1 ); if ( n2==-1 ) n2 = fields_find( info, "PARTYEAR", 0 ); if ( n2==-1 ) n2 = fields_find( info, "PARTYEAR", -1 ); if ( n1!=-1 && n2!=-1 ) { p = info->data[n1].data; while ( p && *p && *p!='|' ) { if ( !is_ws( *p ) ) newstr_addchar( &citekey, *p ); p++; } p = info->data[n2].data; while ( p && *p ) { if ( !is_ws( *p ) ) newstr_addchar( &citekey, *p ); p++; } fields_add( info, "REFNUM", citekey.data, 0 ); } else { sprintf( buf, "ref%d\n", nref ); newstr_strcpy( &citekey, buf ); } newstr_free( &citekey ); return fields_find( info, "REFNUM", -1 ); } static void resolve_citekeys( bibl *b, lists *citekeys, int *dup ) { char abc[]="abcdefghijklmnopqrstuvwxyz"; newstr tmp; int nsame, ntmp, n, i, j; newstr_init( &tmp ); for ( i=0; i<citekeys->n; ++i ) { if ( dup[i]==-1 ) continue; nsame = 0; for ( j=i; j<citekeys->n; ++j ) { if ( dup[j]!=i ) continue; newstr_strcpy( &tmp, citekeys->str[j].data ); ntmp = nsame; while ( ntmp >= 26 ) { newstr_addchar( &tmp, 'a' ); ntmp -= 26; } if ( ntmp<26 && ntmp>=0 ) newstr_addchar( &tmp, abc[ntmp] ); nsame++; dup[j] = -1; n = fields_find( b->ref[j], "REFNUM", -1 ); if ( n!=-1 ) newstr_strcpy( &((b->ref[j])->data[n]), tmp.data); } } newstr_free( &tmp ); } static void get_citekeys( bibl *b, lists *citekeys ) { fields *info; int i, n; for ( i=0; i<b->nrefs; ++i ) { info = b->ref[i]; n = fields_find( info, "REFNUM", -1 ); if ( n==-1 ) n = generate_citekey( info, i ); if ( n!=-1 ) lists_add( citekeys, info->data[n].data ); else lists_add( citekeys, "" ); } } static int dup_citekeys( bibl *b, lists *citekeys ) { int i, j, *dup, ndup=0; dup = ( int * ) malloc( sizeof( int ) * citekeys->n ); if ( !dup ) return 0; for ( i=0; i<citekeys->n; ++i ) dup[i] = -1; for ( i=0; i<citekeys->n-1; ++i ) { if ( dup[i]!=-1 ) continue; for ( j=i+1; j<citekeys->n; ++j ) { if ( !strcmp( citekeys->str[i].data, citekeys->str[j].data ) ) { dup[i] = i; dup[j] = i; ndup++; } } } if ( ndup ) resolve_citekeys( b, citekeys, dup ); free( dup ); return ndup; } static void uniqueify_citekeys( bibl *b ) { lists citekeys; lists_init( &citekeys ); get_citekeys( b, &citekeys ); dup_citekeys( b, &citekeys ); lists_free( &citekeys ); } static int convert_ref( bibl *bin, char *fname, bibl *bout, convert_rules *r, param *p ) { fields *rin, *rout; long i; int reftype; if ( r->cleanf ) r->cleanf( bin ); for ( i=0; i<bin->nrefs; ++i ) { rin = bin->ref[i]; rout = fields_new(); if ( !rout ) return BIBL_ERR_MEMERR; if ( r->typef ) reftype = r->typef( rin, fname, i+1, r->all, r->nall ); else reftype = 0; r->convertf( rin, rout, reftype, p->verbose, r->all, r->nall ); if ( r->all ) process_alwaysadd( rout, reftype, r ); /* if ( p->verbose>1 ) */ if ( p->verbose ) bibl_verbose1( rout, rin, fname, i+1 ); bibl_addref( bout, rout ); } uniqueify_citekeys( bout ); return BIBL_OK; } static void rules_init( convert_rules *r, int mode ) { switch ( mode ) { case BIBL_BIBTEXIN: r->readf = bibtexin_readf; r->processf = bibtexin_processf; r->cleanf = bibtexin_cleanf; r->typef = bibtexin_typef; r->convertf = bibtexin_convertf; r->all = bibtex_all; r->nall = bibtex_nall; break; case BIBL_BIBTEXOUT: r->headerf = NULL; r->footerf = NULL; r->writef = bibtexout_write; break; case BIBL_ENDNOTEIN: r->readf = endin_readf; r->cleanf = NULL; r->processf = endin_processf; r->typef = endin_typef; r->convertf = endin_convertf; r->all = end_all; r->nall = end_nall; break; case BIBL_ENDNOTEXMLIN: r->readf = endxmlin_readf; r->cleanf = NULL; r->processf = endxmlin_processf; r->typef = endin_typef; r->convertf = endin_convertf; r->all = end_all; r->nall = end_nall; break; case BIBL_ENDNOTEOUT: r->headerf = NULL; r->footerf = NULL; r->writef = endout_write; break; case BIBL_RISIN: r->readf = risin_readf; r->cleanf = NULL; r->processf = risin_processf; r->typef = risin_typef; r->convertf = risin_convertf; r->all = ris_all; r->nall = ris_nall; break; case BIBL_RISOUT: r->headerf = NULL; r->footerf = NULL; r->writef = risout_write; break; case BIBL_ISIIN: r->readf = isiin_readf; r->cleanf = NULL; r->processf = isiin_processf; r->typef = isiin_typef; r->convertf = isiin_convertf; r->all = isi_all; r->nall = isi_nall; break; case BIBL_ISIOUT: r->headerf = NULL; r->footerf = NULL; r->writef = isi_write; break; case BIBL_COPACIN: r->readf = copacin_readf; r->cleanf = NULL; r->processf = copacin_processf; r->typef = NULL; r->convertf = copacin_convertf; r->all = copac_all; r->nall = copac_nall; break; case BIBL_MEDLINEIN: r->readf = medin_readf; r->cleanf = NULL; r->processf = medin_processf; r->typef = NULL; r->convertf = NULL; r->all = NULL; r->nall = 0; break; case BIBL_MODSIN: r->readf = modsin_readf; r->cleanf = NULL; r->processf = modsin_processf; r->typef = NULL; r->convertf = NULL; r->all = NULL; r->nall = 0; break; case BIBL_MODSOUT: r->headerf = modsout_writeheader; r->footerf = modsout_writefooter; r->writef = modsout_write; break; case BIBL_WORD2007OUT: r->headerf = wordout_writeheader; r->footerf = wordout_writefooter; r->writef = wordout_write; break; default: break; } } static void bibl_setreadparams( param *np, param *op, int mode ) { if ( !op ) bibl_initparams( np, mode, 0 ); else { np->latexin = op->latexin; np->utf8in = op->utf8in; np->xmlin = op->xmlin; np->charsetin = op->charsetin; np->charsetin_src = op->charsetin_src; np->verbose = op->verbose; np->format_opts = op->format_opts; np->addcount = op->addcount; np->output_raw = op->output_raw; } np->utf8out = 1; np->charsetout = BIBL_CHARSET_UNICODE; np->charsetout_src = BIBL_SRC_DEFAULT; np->xmlout = 0; np->latexout = 0; } int bibl_read( bibl *b, FILE *fp, char *filename, int mode, param *p ) { convert_rules r; param lp; bibl bin; if ( !b || !fp || bibl_illegalinmode( mode ) ) return BIBL_ERR_BADINPUT; bibl_setreadparams( &lp, p, mode ); bibl_init( &bin ); rules_init( &r, mode ); read_ref( fp, &bin, filename, &r, &lp ); if ( !lp.output_raw || ( lp.output_raw & BIBL_RAW_WITHCHARCONVERT ) ) bibl_fixcharsets( &bin, &lp ); if ( !lp.output_raw ) convert_ref( &bin, filename, b, &r, &lp ); else { if ( p->verbose > 1 ) bibl_verbose0( &bin ); bibl_copy( b, &bin ); } if ( !lp.output_raw || ( lp.output_raw & BIBL_RAW_WITHMAKEREFID ) ) bibl_checkrefid( b, &lp ); bibl_free( &bin ); return BIBL_OK; } static FILE * singlerefname( fields *reffields, long nref, int mode ) { char outfile[2048]; char suffix[5] = "xml"; FILE *fp; long count; int found; if ( mode==BIBL_BIBTEXOUT ) strcpy( suffix, "bib" ); else if ( mode==BIBL_RISOUT ) strcpy( suffix, "ris" ); else if ( mode==BIBL_ENDNOTEOUT ) strcpy( suffix, "end" ); found = fields_find( reffields, "REFNUM", 0 ); /* find new filename based on reference */ if ( found!=-1 ) { sprintf( outfile,"%s.%s",reffields->data[found].data, suffix ); } else sprintf( outfile,"%ld.%s",nref, suffix ); count = 0; fp = fopen( outfile, "r" ); while ( fp ) { fclose(fp); count++; if ( count==60000 ) return NULL; if ( found!=-1 ) sprintf( outfile, "%s_%ld.%s", reffields->data[found].data, count, suffix ); else sprintf( outfile,"%ld_%ld.%s",nref, count, suffix ); fp = fopen( outfile, "r" ); } fp = fopen( outfile, "w" ); if ( !fp ) return NULL; return fp; } static int output_bibl( FILE *fp, bibl *b, convert_rules *r, param *p, int mode ) { long i; if ( !p->singlerefperfile && r->headerf ) r->headerf( fp, p->format_opts ); for ( i=0; i<b->nrefs; ++i ) { if ( p->singlerefperfile ) { fp = singlerefname( b->ref[i], i, mode ); if ( fp ) { if ( r->headerf ) r->headerf(fp,p->format_opts); } else return BIBL_ERR_CANTOPEN; } r->writef( b->ref[i], fp, p->format_opts, i ); if ( p->singlerefperfile ) { if ( r->footerf ) r->footerf( fp ); fclose( fp ); } } if ( !p->singlerefperfile && r->footerf ) r->footerf( fp ); return 1; } static void bibl_setwriteparams( param *np, param *op, int mode ) { if ( !op ) bibl_initparams( np, 0, mode ); else { np->utf8out = op->utf8out; np->charsetout = op->charsetout; np->charsetout_src = op->charsetout_src; np->latexout = op->latexout; np->xmlout = op->xmlout; np->verbose = op->verbose; np->format_opts = op->format_opts; np->addcount = op->addcount; np->output_raw = op->output_raw; np->singlerefperfile = op->singlerefperfile; } np->xmlin = 0; np->latexin = 0; np->utf8in = 1; np->charsetin = BIBL_CHARSET_UNICODE; np->charsetin_src = BIBL_SRC_DEFAULT; } int bibl_write( bibl *b, FILE *fp, int mode, param *p ) { convert_rules r; param lp; if ( !b || bibl_illegaloutmode( mode ) ) return BIBL_ERR_BADINPUT; if ( !fp && ( !p || !p->singlerefperfile ) ) return BIBL_ERR_BADINPUT; rules_init( &r, mode ); bibl_setwriteparams( &lp, p, mode ); bibl_fixcharsets( b, &lp ); output_bibl( fp, b, &r, &lp, mode ); return BIBL_OK; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/isiin.c����������������������������������������������������������������0000664�0001750�0001750�00000014531�12042412720�014337� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * isiin.c * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "is_ws.h" #include "newstr.h" #include "newstr_conv.h" #include "fields.h" #include "name.h" #include "title.h" #include "serialno.h" #include "lists.h" #include "reftypes.h" #include "isiin.h" extern lists asis; extern lists corps; /* ISI definition of a tag is strict: * char 1 = uppercase alphabetic character * char 2 = uppercase alphabetic character or digit */ static int isiin_istag( char *buf ) { if ( ! (buf[0]>='A' && buf[0]<='Z') ) return 0; if ( ! (((buf[1]>='A' && buf[1]<='Z'))||(buf[1]>='0'&&buf[1]<='9'))) return 0; return 1; } static int readmore( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line ) { if ( line->len ) return 1; else return newstr_fget( fp, buf, bufsize, bufpos, line ); } int isiin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ) { int haveref = 0, inref = 0; char *p; while ( !haveref && readmore( fp, buf, bufsize, bufpos, line ) ) { if ( !line->data ) continue; p = &(line->data[0]); /* Each reference ends with 'ER ' */ if ( isiin_istag( p ) ) { if ( !strncmp( p, "FN ", 3 ) ) { if (strncasecmp( p, "FN ISI Export Format",20)){ fprintf( stderr, ": warning file FN type not '%s' not recognized.\n", /*r->progname,*/ p ); } } else if ( !strncmp( p, "VR ", 3 ) ) { if ( strncasecmp( p, "VR 1.0", 6 ) ) { fprintf(stderr,": warning file version number '%s' not recognized, expected 'VR 1.0'\n", /*r->progname,*/ p ); } } else if ( !strncmp( p, "ER", 2 ) ) haveref = 1; else { newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); inref = 1; } newstr_empty( line ); } /* not a tag, but we'll append to the last values */ else if ( inref ) { newstr_addchar( reference, '\n' ); newstr_strcat( reference, p ); newstr_empty( line ); } else { newstr_empty( line ); /* fprintf( stderr, "%s warning: '%s' outside of tag\n", r->progname, p ); */ } } *fcharset = CHARSET_UNKNOWN; return haveref; } static char * process_isiline( newstr *tag, newstr *data, char *p ) { int i; /* collect tag and skip past it */ i = 0; while ( i<2 && *p && *p!='\r' && *p!='\n') { newstr_addchar( tag, *p++ ); i++; } while ( *p==' ' || *p=='\t' ) p++; while ( *p && *p!='\r' && *p!='\n' ) newstr_addchar( data, *p++ ); newstr_trimendingws( data ); while ( *p=='\r' || *p=='\n' ) p++; return p; } int isiin_processf( fields *isiin, char *p, char *filename, long nref ) { newstr tag, data; int n; newstr_init( &tag ); newstr_init( &data ); while ( *p ) { newstr_empty( &tag ); newstr_empty( &data ); p = process_isiline( &tag, &data, p ); if ( !data.len ) continue; if ( (tag.len>1) && isiin_istag( tag.data ) ) { fields_add( isiin, tag.data, data.data, 0 ); } else { n = isiin->nfields; if ( n>0 ) { /* only one AU or AF for list of authors */ if ( !strcmp( isiin->tag[n-1].data,"AU") ){ fields_add( isiin, "AU", data.data, 0); } else if ( !strcmp( isiin->tag[n-1].data,"AF") ){ fields_add( isiin, "AF", data.data, 0); } /* otherwise append multiline data */ else { newstr_addchar( &(isiin->data[n-1]),' '); newstr_strcat( &(isiin->data[n-1]), data.data ); } } } } newstr_free( &data ); newstr_free( &tag ); return 1; } static void keyword_process( fields *info, char *newtag, char *p, int level ) { newstr keyword; newstr_init( &keyword ); while ( *p ) { while ( is_ws( *p ) ) p++; while ( *p && *p!=';' ) newstr_addchar( &keyword, *p++ ); if ( keyword.len ) { fields_add( info, newtag, keyword.data, level ); newstr_empty( &keyword ); } if ( *p==';' ) p++; } newstr_free( &keyword ); } int isiin_typef( fields *isiin, char *filename, int nref, variants *all, int nall ) { char *refnum = ""; int n, reftype, nrefnum; n = fields_find( isiin, "PT", 0 ); nrefnum = fields_find ( isiin, "UT", 0 ); if ( nrefnum!=-1 ) refnum = isiin->data[nrefnum].data; if ( n!=-1 ) reftype = get_reftype( (isiin->data[n]).data, nref, all, nall, refnum ); else reftype = get_reftype( "", nref, all, nall, refnum ); /* default */ return reftype; } /* pull off authors first--use AF before AU */ static void isiin_addauthors( fields *isiin, fields *info, int reftype, variants *all, int nall ) { newstr *t, *d; char *newtag, *authortype, use_af[]="AF", use_au[]="AU"; int level, i, n, has_af=0, has_au=0; for ( i=0; i<isiin->nfields && has_af==0; ++i ) { t = &( isiin->tag[i] ); if ( !strcasecmp( t->data, "AU" ) ) has_au++; if ( !strcasecmp( t->data, "AF" ) ) has_af++; } if ( has_af ) authortype = use_af; else authortype = use_au; for ( i=0; i<isiin->nfields; ++i ) { t = &( isiin->tag[i] ); if ( !strcasecmp( t->data, "AU" ) ) has_au++; if ( strcasecmp( t->data, authortype ) ) continue; d = &( isiin->data[i] ); n = process_findoldtag( authortype, reftype, all, nall ); level = ((all[reftype]).tags[n]).level; newtag = all[reftype].tags[n].newstr; name_add( info, newtag, d->data, level ); } } void isiin_convertf( fields *isiin, fields *info, int reftype, int verbose, variants *all, int nall ) { newstr *t, *d; int process, level, i, n; char *newtag; isiin_addauthors( isiin, info, reftype, all, nall ); for ( i=0; i<isiin->nfields; ++i ) { t = &( isiin->tag[i] ); if ( !strcasecmp( t->data, "AU" ) || !strcasecmp( t->data, "AF" ) ) continue; d = &( isiin->data[i] ); n = process_findoldtag( t->data, reftype, all, nall ); if ( n==-1 ) { if ( verbose && strcmp( t->data, "PT" ) ) { fprintf( stderr, "Did not identify ISI tag '" ); fprintf( stderr, "%s", t->data ); fprintf( stderr, "'\n" ); } continue; } process = ((all[reftype]).tags[n]).processingtype; level = ((all[reftype]).tags[n]).level; newtag = all[reftype].tags[n].newstr; if ( process == SIMPLE || process == DATE ) fields_add( info, newtag, d->data, level ); else if ( process == PERSON ) name_add( info, newtag, d->data, level ); else if ( process == TITLE ) title_process( info, newtag, d->data, level ); else if ( process == ISI_KEYWORD ) keyword_process( info, newtag, d->data, level ); else if ( process == SERIALNO ) addsn( info, d->data, level ); /* do nothing if process==TYPE || process==ALWAYS */ } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/is_ws.c����������������������������������������������������������������0000664�0001750�0001750�00000000377�12042412720�014353� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * is_ws.c * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL * */ #include "is_ws.h" /* is_ws(), is whitespace */ int is_ws( char ch ) { if (ch==' ' || ch=='\n' || ch=='\t' || ch=='\r' ) return 1; else return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/copacin.h��������������������������������������������������������������0000664�0001750�0001750�00000001134�12042412720�014640� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * copacin.h * * Copyright (c) Chris Putnam 2004-7 * * Program and source code released under the GPL * */ #ifndef COPACIN_H #define COPACIN_H #include "newstr.h" #include "fields.h" #include "reftypes.h" extern int copacin_readf( FILE *fp, char *buf, int bufsize, int *bufpos, newstr *line, newstr *reference, int *fcharset ); extern int copacin_processf( fields *copacin, char *p, char *filename, long nref ); extern void copacin_convertf( fields *copacin, fields *info, int reftype, int verbose, variants *all, int nall ); extern variants copac_all[]; extern int copac_nall; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/entities.h�������������������������������������������������������������0000664�0001750�0001750�00000000362�12042412720�015052� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * entities.h * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL */ #ifndef ENTITIES_H #define ENTITIES_H extern unsigned int decode_entity( char *s, unsigned int *pi, int *unicode, int *err ); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/libbibutils/entities.c�������������������������������������������������������������0000664�0001750�0001750�00000033600�12042412720�015046� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * entities.c * * Copyright (c) Chris Putnam 2003-7 * * Source code released under the GPL */ #include <stdio.h> #include <string.h> #include <ctype.h> #include "entities.h" /* HTML 4.0 entities */ typedef struct entities { char html[20]; unsigned int unicode; } entities; entities html_entities[] = { /* Special Entities */ { """, 34 }, /* quotation mark */ { "&", 38 }, /* ampersand */ { "'", 39 }, /* apostrophe */ { "(", 40 }, /* left parenthesis */ { ")", 41 }, /* right parenthesis */ { "‐", 45 }, /* hyphen */ { "<", 60 }, /* less-than sign */ { ">", 62 }, /* greater-than sign */ { "?", 63 }, /* question mark */ { "Œ", 338 }, /* Latin cap ligature OE */ { "œ", 339 }, /* Latin small ligature OE */ { "Š", 352 }, /* Latin cap S with caron */ { "š", 353 }, /* Latin cap S with caron */ { "Ÿ", 376 }, /* Latin cap y with diaeresis */ { "ˆ", 710 }, /* modifier letter circumflex */ { "˜", 732 }, /* small tilde */ { " ", 8194 }, /* en space */ { " ", 8195 }, /* em space */ { " ", 8201 }, /* thin space */ { "‌", 8204 }, /* zero width non-joiner */ { "‍", 8205 }, /* zero width joiner */ { "‎", 8206 }, /* left-to-right mark */ { "‏", 8207 }, /* right-to-left mark */ { "–", 8211 }, /* en dash */ { "—", 8212 }, /* em dash */ { "‘", 8216 }, /* left single quotation mark */ { "’", 8217 }, /* right single quot. mark */ { "‚", 8218 }, /* single low-9 quot. mark */ { "“", 8220 }, /* left double quot. mark */ { "”", 8221 }, /* right double quot. mark */ { "„", 8222 }, /* double low-9 quot. mark */ { "†", 8224 }, /* dagger */ { "‡", 8225 }, /* double dagger */ { "‰", 8240 }, /* per mille sign */ { "‹", 8249 }, /* sin. left angle quot mark */ { "›", 8250 }, /* sin. right angle quot mark */ { "€", 8364 }, /* euro sign */ /* Symbols and Greek characters */ { "ƒ", 402 }, /* small f with hook = function */ { "Α", 913 }, /* capital alpha */ { "Β", 914 }, /* capital beta */ { "Γ", 915 }, /* capital gamma */ { "Δ", 916 }, /* capital delta */ { "Ε", 917 }, /* capital epsilon */ { "Ζ", 918 }, /* capital zeta */ { "Η", 919 }, /* capital eta */ { "Θ", 920 }, /* capital theta */ { "Ι", 921 }, /* capital iota */ { "Κ", 922 }, /* capital kappa */ { "Λ", 923 }, /* capital lambda */ { "Μ", 924 }, /* capital mu */ { "Ν", 925 }, /* capital nu */ { "Ξ", 926 }, /* capital xi */ { "Ο", 927 }, /* capital omicron */ { "Π", 928 }, /* capital pi */ { "Ρ", 929 }, /* capital rho */ { "Σ", 931 }, /* capital sigma */ { "Τ", 932 }, /* capital tau */ { "Υ", 933 }, /* capital upsilon */ { "Φ", 934 }, /* capital phi */ { "Χ", 935 }, /* capital chi */ { "Ψ", 936 }, /* capital psi */ { "Ω", 937 }, /* capital omega */ { "α", 945 }, /* small alpha */ { "β", 946 }, /* small beta */ { "γ", 947 }, /* small gamma */ { "δ", 948 }, /* small delta */ { "ε", 949 }, /* small epsilon */ { "ζ", 950 }, /* small zeta */ { "η", 951 }, /* small eta */ { "θ", 952 }, /* small theta */ { "ι", 953 }, /* small iota */ { "κ", 954 }, /* small kappa */ { "λ", 955 }, /* small lambda */ { "μ", 956 }, /* small mu */ { "ν", 957 }, /* small nu */ { "ξ", 958 }, /* small xi */ { "ο", 959 }, /* small omicron */ { "π", 960 }, /* small pi */ { "ρ", 961 }, /* small rho */ { "ς", 962 }, /* small final sigma */ { "σ", 963 }, /* small simga */ { "τ", 964 }, /* small tau */ { "υ", 965 }, /* small upsilon */ { "φ", 966 }, /* small phi */ { "χ", 967 }, /* small chi */ { "ψ", 968 }, /* small psi */ { "ω", 969 }, /* small omega */ { "ϑ",977 }, /* small theta symbol */ { "ϒ", 978 }, /* small upsilon with hook */ { "ϖ", 982 }, /* pi symbol */ { "•", 8226 }, /* bullet = small blk circle */ { "…", 8230 }, /* horizontal ellipsis */ { "′", 8242 }, /* prime = minutes = feet */ { "″", 8243 }, /* double prime */ { "‾", 8254 }, /* overline */ { "⁄", 8260 }, /* fraction slash */ { "℘", 8472 }, /* Weierstrass p = power set */ { "ℑ", 8465 }, /* imaginary part-black cap I */ { "ℜ", 8476 }, /* real part-black cap R */ { "™", 8482 }, /* trademark sign */ { "ℵ",8501 }, /* alef symbol */ { "←", 8592 }, /* left arrow */ { "↑", 8593 }, /* up arrow */ { "→", 8594 }, /* right arrow */ { "↓", 8595 }, /* down arrow */ { "↔", 8596 }, /* left/right arrow */ { "↵", 8629 }, /* down arrow with corner left */ { "⇐", 8656 }, /* left double arrow */ { "⇑", 8657 }, /* up double arrow */ { "⇒", 8658 }, /* up double arrow */ { "⇓", 8659 }, /* up double arrow */ { "⇔", 8660 }, /* up double arrow */ { "∀", 8704}, /* for all */ { "∂", 8706}, /* partial differential */ { "∃", 8707}, /* there exists */ { "∅", 8709}, /* empty set */ { "∇", 8711}, /* nabla=backwards difference */ { "∈", 8712}, /* element of */ { "∉", 8713}, /* not an element of */ { "∋", 8715}, /* contains as member */ { "∏", 8719}, /* n-ary product */ { "∑", 8721}, /* n-ary summation */ { "−", 8722}, /* minuss sign */ { "∗", 8727}, /* asterisk operator */ { "√", 8730}, /* square root */ { "∝", 8733}, /* proportional to */ { "∞", 8734}, /* infinity */ { "∠", 8736}, /* angle */ { "∧", 8743}, /* logical and */ { "∨", 8744}, /* logical or */ { "∩", 8745}, /* intersection */ { "∪", 8746}, /* union */ { "∫", 8747}, /* integral */ { "∴", 8756}, /* therefore */ { "∼", 8764}, /* tilde operator */ { "≅", 8773}, /* approximately equal to */ { "≈", 8776}, /* asymptotic to */ { "≠", 8800}, /* not equal to */ { "≡", 8801}, /* identical to */ { "≤", 8804}, /* less-than or equal to */ { "≥", 8805}, /* greater-than or equal to */ { "⊂", 8834}, /* subset of */ { "⊃", 8835}, /* superset of */ { "⊄", 8836}, /* not a subset of */ { "⊆", 8838}, /* subset of or equal to */ { "⊇", 8839}, /* superset of or equal to */ { "⊕", 8853}, /* circled plus = direct sum */ { "⊗", 8855}, /* circled times = vec prod */ { "⊥", 8869}, /* perpendicular */ { "⋅", 8901}, /* dot operator */ { "⌈", 8968}, /* left ceiling */ { "⌉", 8969}, /* right ceiling */ { "⌊", 8970}, /* left floor */ { "⌋", 8971}, /* right floor */ { "⟨", 9001}, /* left angle bracket */ { "⟩", 9002}, /* right angle bracket */ { "◊", 9674}, /* lozenge */ { "♠", 9824}, /* spades */ { "♣", 9827}, /* clubs */ { "♥", 9829}, /* hearts */ { "♦", 9830}, /* diamonds */ /* Latin-1 */ { " ", 32 }, /* non-breaking space */ { "¡", 161 }, /* inverted exclamation mark */ { "¢", 162 }, /* cent sign */ { "£", 163 }, /* pound sign */ { "¤", 164 }, /* currency sign */ { "¥", 165 }, /* yen sign */ { "¦", 166 }, /* broken vertical bar */ { "§", 167 }, /* section sign */ { "¨", 168 }, /* diaeresis - spacing diaeresis */ { "©", 169 }, /* copyright sign */ { "ª", 170 }, /* feminine ordinal indicator */ { "«", 171 }, /* left-pointing guillemet */ { "¬", 172 }, /* not sign */ { "­", 173 }, /* soft (discretionary) hyphen */ { "®", 174 }, /* registered sign */ { "¯", 175 }, /* macron = overline */ { "°", 176 }, /* degree sign */ { "±", 177 }, /* plus-minus sign */ { "²", 178 }, /* superscript two */ { "³", 179 }, /* superscript three */ { "´", 180 }, /* acute accent = spacing acute */ { "µ", 181 }, /* micro sign */ { "¶", 182 }, /* pilcrow (paragraph) sign */ { "·", 183 }, /* middle dot (georgian comma) */ { "¸", 184 }, /* cedilla = spacing cedilla */ { "¹", 185 }, /* superscript one */ { "º", 186 }, /* masculine ordinal indicator */ { "»", 187 }, /* right pointing guillemet */ { "¼", 188 }, /* 1/4 */ { "½", 189 }, /* 1/2 */ { "¾", 190 }, /* 3/4 */ { "¿", 191 }, /* inverted question mark */ { "À", 192 }, /* cap A with grave */ { "Á", 193 }, /* cap A with acute */ { "Â", 194 }, /* cap A with circumflex */ { "Ã", 195 }, /* cap A with tilde */ { "Ä", 196 }, /* cap A with diaeresis */ { "Å", 197 }, /* cap A with ring */ { "Æ", 198 }, /* cap AE ligature */ { "Ç", 199 }, /* cap C with cedilla */ { "È", 200 }, /* cap E with grave */ { "É", 201 }, /* cap E with acute */ { "Ê", 202 }, /* cap E with circumflex */ { "Ë", 203 }, /* cap E with diaeresis */ { "Ì", 204 }, /* cap I with grave */ { "Í", 205 }, /* cap I with acute */ { "Î", 206 }, /* cap I with circumflex */ { "Ï", 207 }, /* cap I with diaeresis */ { "Ð", 208 }, /* cap letter ETH */ { "Ñ", 209 }, /* cap N with tilde */ { "Ò", 210 }, /* cap O with grave */ { "Ó", 211 }, /* cap O with acute */ { "Ô", 212 }, /* cap O with circumflex */ { "Õ", 213 }, /* cap O with tilde */ { "Ö", 214 }, /* cap O with diaeresis */ { "×", 215 }, /* multiplication sign */ { "Ø", 216 }, /* cap O with stroke */ { "Ù", 217 }, /* cap U with grave */ { "Ú", 218 }, /* cap U with acute */ { "Û", 219 }, /* cap U with circumflex */ { "Ü", 220 }, /* cap U with diaeresis */ { "Ý", 221 }, /* cap Y with acute */ { "Þ", 222 }, /* cap letter THORN */ { "ß", 223 }, /* small sharp s = ess-zed */ { "à", 224 }, /* small a with grave */ { "á", 225 }, /* small a with acute */ { "â", 226 }, /* small a with cirucmflex */ { "ã", 227 }, /* small a with tilde */ { "&amul;", 228 }, /* small a with diaeresis */ { "å", 229 }, /* small a with ring */ { "æ", 230 }, /* small ligature ae */ { "ç", 231 }, /* small c with cedilla */ { "è", 232 }, /* small e with grave */ { "é", 233 }, /* small e with acute */ { "ê", 234 }, /* small e with circumflex */ { "&emul;", 235 }, /* small e with diaeresis */ { "ì", 236 }, /* small i with grave */ { "í", 237 }, /* small i with acute */ { "î", 238 }, /* small i with circumflex */ { "ï", 239 }, /* small i with diaeresis */ { "ð", 240 }, /* latin small letter eth */ { "ñ", 241 }, /* small n with tilde */ { "ò", 242 }, /* small o with grave */ { "ó", 243 }, /* small o with acute */ { "ô", 244 }, /* small o with circumflex */ { "õ", 245 }, /* small o with tilde */ { "ö", 246 }, /* small o with diaeresis */ { "÷", 247 }, /* division sign */ { "ø", 248 }, /* small o with slash */ { "ù", 249 }, /* small u with grave */ { "ú", 250 }, /* small u with acute */ { "û", 251 }, /* small u with circumflex */ { "ü", 252 }, /* small u with diaeresis */ { "ý", 253 }, /* small y with acute */ { "þ", 254 }, /* latin small letter thorn */ { "ÿ", 255 }, /* small y with diaeresis */ }; static unsigned int decode_html_entity( char *s, unsigned int *pi, int *err ) { int nhtml_entities = sizeof( html_entities ) / sizeof( entities ); char *e; int i, n=-1, len; for ( i=0; i<nhtml_entities && n==-1; ++i ) { e = &(html_entities[i].html[0]); len = strlen( e ); if ( !strncasecmp( &(s[*pi]), e, len ) ) { n = i; *pi += len; } } if ( n==-1 ) { *err = 1; return '&'; } else { *err = 0; return html_entities[n].unicode; } } /* * decode decimal entity * * extract a decimal entity from &#NNNN; * s[*pi] points to the '&' character */ static unsigned int decode_decimal_entity( char *s, unsigned int *pi, int *err ) { unsigned int c = 0, d; int i = *pi, j = 2; while ( isdigit( s[i+j] ) ) { d = s[i+j] - '0'; c = 10 * c + d; j++; } if ( s[i+j]!=';' ) *err = 1; else *pi = i+j+1; return c; } /* * decode hex entity * * extract a hex entity from &#xNNNN; * s[*pi] points to the '&' character */ static unsigned int decode_hex_entity( char *s, unsigned int *pi, int *err ) { unsigned int c = 0, d; int i = *pi, j = 3; while ( isxdigit( s[i+j] ) ) { if ( isdigit( s[i+j] ) ) d = s[i+j]-'0'; else d = toupper(s[i+j])-'A' + 10; c = 16 * c + d; j++; } if ( s[i+j]!=';' ) *err = 1; else *pi = i+j+1; return c; } /* * decode numeric entity * * extract a numeric entity from &#NNN; or &#xNNNN; */ static unsigned int decode_numeric_entity( char *s, unsigned int *pi, int *err ) { unsigned int c; *err = 0; if ( s[*pi+2]!='x' ) c = decode_decimal_entity( s, pi, err ); else c = decode_hex_entity( s, pi, err ); if ( *err ) { *pi = *pi + 1; c = '&'; } return c; } /* * decode entity * extract entity from &xxxx; * */ unsigned int decode_entity( char *s, unsigned int *pi, int *unicode, int *err ) { unsigned int c = '&'; *unicode = 0; if ( s[*pi]!='&' ) { *err = 1; /* need to start with ampersand */ c = s[*pi]; } else *err = 0; if ( !*err ) { if ( s[*pi+1]=='#' ) c = decode_numeric_entity( s, pi, err ); else { c = decode_html_entity( s, pi, err ); *unicode = 1; } } if ( *err ) *pi = *pi + 1; return c; } ��������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/ChangeLog��������������������������������������������������������������������������0000664�0001750�0001750�00000016347�12042412720�012335� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������1.1.6: - Work around gconf bug (gnome #586532) - Include document key when searching - Don't attempt to retrieve text for non-pdf files - Improved search (Robert Vincent) - Strip leading tokens from DOIs (Bug 385913) - Clickable document icon in DocumentProperties - Support complimentary crossref accounts (Bug 373342) - Fix mnemonic for Type field in DocumentProperties (Bug 377221) - Prevent creation of duplicate tag names (Bug 339593) - Include document notes in searches - Plugin interface: add bibtex_to_fields utility function, add print_bibtex method to PythonDocument - Docbook manual (Mario Blätterman) - UI tweaks (Kai Willadsen, Bugs 297081, 297079) 1.1.5: - Change 'keywords' to 'tags' in bibtex export - Add DOI entry to document properties (Andreas Dalsgaard) - Add menu item for selecting sort mode - Mark library as dirty when executing plugin action - Fix crash when tagging (Bug 258780) 1.1.4: - Fix python get_filename and set_filename (Bug 258103) - Fix import of 'series' field in bibtex InProceedings (Bug 255815) - Fix escaping URLs in crossref plugin (Bug 246421) - Fix exceptions with exotic characters on latin1 systems - Fix out of date tag action strings (Bug 247557) - Fix crashing on opening docs with keybaord (Bug 235270) 1.1.3: - Annotation support (Charlotte Curtis) - Support import of UTF8 bibtex (Bug 223763, Sergey B Kirpichev's patch) - Fix detection of crossref query failure - Fix crash in crossref parsing (Bug 222340) - Fix crash in bibtex import (Bug 217866) - Fix failing to set fields in list view (Bug 208184) 1.1.2: - Remove tooltips on old GTK versions - Report errors when a plugin cannot be enabled - Updated translations - Shortcut buttons on document icons - Fix using old tooltip code even with recent GTK - UI for attaching tags during adding files - Pubmed: fill out DOI field, use full first names (Aurélien Naldi) - Search searches all fields (Bug 198671) - Revised tagging UI - Expand plugin API - Unbreak sorting in list view (Bug 202188) 1.1.1: - Updated Russian translation (Sergey Kirpichev) - Updated simplified Chinese translation (Zhi-Wei Huang) - Updated Danish translation (Andreas Dalsgaard) - Fix parsing data-less elements in pubmed plugin (Bug 196174) - Fix paste in document properties (Bug 195819) - Fix add doc with ID dialog - Make "All" and "Untagged" immutable, add separator (Bug 192680, Jochen Martin Eppler) - Check for zero-sized thumbnails (Bug 192279) - Add parse_bibtex to PythonDocument - Fix compilation with gcc 4.3 (Deji Akingunola) 1.1.0: - Update to bibutils 3.39 - Detailed report in add documents dialog - Thumbnails generated asynchronously for more responsive loading - Support document action plugins (AN + JCS) - Lyx citation plugin (Aurélien Naldi) - Added documents are scrolled to - DocumentProperties shows correct fields depending on document type - Add google scholar web link - Add PubMed web link - Allow specific selection of different web links - Add builtin generic document icon - Paste BibTeX button in document properties - Clear button in document properties - Editable list view - Fix crash in tagging - Revised icon view - Pick up when citebase gives us a doi: in the URL field - Add preferences options for crossref username/password - Remove preferences options for crossref path + dx.doi.org path - Metadata plugins (C++ or python) - DOI->Pubmed resolver (Simon Greenhill) - Make multiple-tag filtering AND instead of OR - Fix losing bibtex fields in import (Bug 158581) - Fix missing some fields in getArxiv (Bug 158815) - Use gtkmm 2.12 IconView tooltip support if available - Add online/offline indicator in statusbar - Change sizing options of icon view to work around Gnome 2.20 - Use filename as title when adding files without metadata - Make the extras store case insensitive on the key: multiple fields differing only in case are no longer allowed (Alexey Balmashnov) - Use the 'url' extra field for web linking (Alexey Balmashnov) - Handle multiple keyword fields in import (Alexey Balmashnov) - Include doi field in bibtex export - Fix generating thumbnails for non-pdf files 1.0.4: - Fix import in non-UTF8 locales - Tags exported as "keywords" bibtex field - Add clear icon to search entry - Remember window size - Tags sorted by name - Tooltips in icon view - German translation (Joachim Sauer) - Don't add .svn,CVS,.bib,.reflib when adding folder - Spanish translation (Mario César Señoranis Ayala) - Fixes for 64 bit architecture - Remove "Add Tag" dialog (Eric Lesh) - Add statusbar, replace progressdialog with progressbar in statusbar. - Prompt user to resolve duplicated files - Update bibutils to 3.32 - Generate thumbnails for files on NFS mounts - Improved internationalization support - Prevent search box getting hidden in small windows - Ability to paste bibtex - Ability to copy \cite{keys} 1.0.3: - Option to export unicode bibtex - Implement "Manage BibTeX File" - Support new arXiv id format - Stop reading document if DOI/Arxiv is found on first page - Fix setting dirtyness of library in "Rename from Key" (Jordy Potman) - Reduce window clutter (Kai Willadsen) - Italian translation (Michele Mattioni) - Improve translatability of code (Kai Willadsen) - Intltool fixes (Eric Lesh) - Fix(?) taglist corruption bug - Use poppler glib bindings (Kai Willadsen) - Start using ucompose.hpp for string composition - Compile against mt-only boost_regex (Damien Thébault) - Fix "All files" filter to be * instead of *.* - Support InProceedings crossref records - RPM spec file (Davyd Madeley) - Add texttrademark unicode->latex - Make configure fail properly when boost_regex is absent (Aiden Delaney) - Fix handling of escape key in dialogs 1.0.2: - Handle "Digital Object Identifier 10.1109..." (Jordy Potman) - Handle CDATA enclosure of titles (Jordy Potman) - Escape ampersands in bibtex export - Options for setting gnome proxy in Preferences - Fix thumbnail sizing bug - Special case for getting dois like "doi: blah/blah, more text" to ignore trailing comma. - Add progress dialog when loading library - Improved keyboard behaviour in main window and in document properties - Fix 'remove' failing with duplicate keys - Add "Delete File from Drive" - Add "Rename File to Key" - Add/fix some accelerators - Fix ./configure failing on Ubuntu 6.06 - Add option to enclose all values in {} when exporting bibtex - Fix crash opening files which no longer exist (Andreas Dalsgaard) - Fix saving broken to FS away from $HOME (Andreas Dalsgaard) 1.0.1: - Save and load relative filenames as well as absolute filenames - When opening library, clear bibdata in between docs (Rodrigo Kassick) - Make SaveLibrary insensitive when library not dirty - Switch to autotools (Eric Lesh) - Open properties on double click as last resort - Import stuff: - Fix getting type wrong for PhdThesis - Fix bibtex import getting confused about certain accents (Chris Putnam) - Fix import dialog ignoring choice of file format - Fix chapter fields in incollection items in bibtex import - Understand translator fields in import - Don't extra fields for import fields with no value string - Import from MODS - Hide non-functional "auto-detect" option in import dialog 1.0.0: Initial release �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/mkinstalldirs����������������������������������������������������������������������0000755�0001750�0001750�00000006722�12127517024�013372� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman <friedman@prep.ai.mit.edu> # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to <bug-automake@gnu.org> or send patches to # <automake-patches@gnu.org>. nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to <bug-automake@gnu.org>." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ����������������������������������������������referencer-1.2.1/AUTHORS����������������������������������������������������������������������������0000664�0001750�0001750�00000000041�12042412720�011613� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������John Spray <jcspray@icculus.org> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/missing����������������������������������������������������������������������������0000755�0001750�0001750�00000024152�12042420505�012151� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # 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, see <http://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to <bug-automake@gnu.org>." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/intltool-update.in�����������������������������������������������������������������0000664�0001750�0001750�00000000000�12127517024�014221� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������referencer-1.2.1/TODO�������������������������������������������������������������������������������0000664�0001750�0001750�00000005765�12042412720�011255� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Plugin ideas: mangle/demangle Doe, J vs Doe, J. Browse/search: Z39.50 PubMed "More by this author" on pubmed and google There is no release schedule. Fix the document properties and storage - Merge BibData and Document - Add protect flag for user edits - Revise file format (dublin core?) - Properties pane in RefWindow Simplify tagging internals - Do away with magic UIDs and pass strings around ListView users are people too: - Sort out the column sizing - Adding/removing columns Getting text from .ps files (a la ps2ascii) Refine tagging UI: Text entry view of tags Deal with external added URIs UI for setting "library directory" Offer to move files not in subdir of reflib location OAI support: Arxiv database http://arxiv.org/oai2 PubMed database http://www.pubmedcentral.nih.gov/oai/oai.cgi Integration with Tracker and/or Beagle Bugs ==== In TagWindow::onIconsDragData, we do get_file_info on remote URIs synchronously in order to support directory recursion on remote filesystems -- this is a bad thing when adding stuff from really remote things like websites Paste from gecko doesn't seem to work When importing endnote, %Y is series editor, but this is lost by bibutils for refs of inappropriate type. %Y is used in pablo's file as generic author. - that was with endnote 3, try with more recent endnote Unscheduled items ================= Import of reflib files (merge in documents, resolve tag IDs) Verify that UTF-8 export works as per user expectations Improve BibTeX export robustness What about underscores? Need an "escape everything" mode? Insert \url bits Document requirements/exceptions Support new endxmlin, isiout and wordout from bibutils >= 3.31 Possible items ============== Edit menu: - Copy key - copy filename - copy bibtex Functionality wishlist: Parse strings "Title: foo\nISBN: bar\n" like recipe manager Formatted bibliographies with Rtfbtx? Import "keywords" field in bibtex, map to referencer tags Move file to trash instead of deleting Set tags based on folder names when doing recursive import (Wilhelms, C.) Create a gconf schema Get document type from crossref XML instead of assuming Article When generating keys from authorYEAR, should get rid of LaTeX unfriendly accented characters Where we use ".tmp" in writing files, we should use something more unique Do something with PDF-embedded metadata if there is any Assign a color to a tag and highlight refs with it Use installed libsexy if available, a la rhythmbox Resolve symlinks before doing relative filename magic UI wishlist: say "1 document" instead of "1 documents" in statusbar Drag and drop to make LaTeX citations Drag and drop to import bibtex snippets Configuration of max_timeout in BibData::getCrossRef The Competition =============== EndNote EndNote is somewhat DOI aware, dx.doi.org URLs generated when importing reference from eg INSPEC Reference Manager ProCite RefWorks Zotero Yep http://mekentosj.com/papers/ http://refbase.sourceforge.net/ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������