Merge swig-redo branch back into trunk.

g-wrap is gone.  I, for one, welcome our new swig overlords.



git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15024 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Chris Shoemaker
2006-10-15 19:02:05 +00:00
parent 8d27b20661
commit 31e926c486
272 changed files with 4301 additions and 10514 deletions

View File

@@ -48,7 +48,7 @@ EXTRA_DIST = \
macros/as-scrub-include.m4 \ macros/as-scrub-include.m4 \
macros/binreloc.m4 \ macros/binreloc.m4 \
macros/compiler-flags.m4 \ macros/compiler-flags.m4 \
macros/g-wrap.m4 \ macros/ac_pkg_swig.m4 \
macros/gnome-guile-checks.m4 \ macros/gnome-guile-checks.m4 \
macros/legacy_macros.m4 \ macros/legacy_macros.m4 \
po/gnucash.pot \ po/gnucash.pot \

View File

@@ -151,6 +151,19 @@ if test "x$ac_cv_header_ltdl_h" = xno; then
AC_MSG_ERROR([Cannot find ltdl.h -- libtool-devel (or libtool-ltdl-devel) not installed?]) AC_MSG_ERROR([Cannot find ltdl.h -- libtool-devel (or libtool-ltdl-devel) not installed?])
fi fi
# test whether we are building directly from SVN/SVK
${srcdir}/util/gnc-svnversion ${srcdir} >/dev/null 2>&1
if test $? = 0 ; then
BUILDING_FROM_SVN=yes
# We need at least version 1.3.28 of SWIG because
# that's when SWIG added %delobject
AC_PROG_SWIG(1.3.28)
else
BUILDING_FROM_SVN=no
fi
AM_CONDITIONAL(BUILDING_FROM_SVN, test "x$BUILDING_FROM_SVN" = "xyes")
# These are unavailable on windows/mingw32 # These are unavailable on windows/mingw32
AC_CHECK_HEADERS(X11/Xlib.h glob.h) AC_CHECK_HEADERS(X11/Xlib.h glob.h)
AC_CHECK_FUNCS(chown gethostname getppid getuid gettimeofday gmtime_r) AC_CHECK_FUNCS(chown gethostname getppid getuid gettimeofday gmtime_r)
@@ -272,8 +285,7 @@ esac
### -------------------------------------------------------------------------- ### --------------------------------------------------------------------------
### Guile and g-wrap version checks (should this be something other than ### Guile version checks (should this be something other than the Gnome check?)
### the Gnome check?)
# If the user has given these values, cache them to override the # If the user has given these values, cache them to override the
# detected values. # detected values.
@@ -296,9 +308,6 @@ fi
AS_SCRUB_INCLUDE(GUILE_INCS) AS_SCRUB_INCLUDE(GUILE_INCS)
AC_SUBST(GUILE_LIBS) AC_SUBST(GUILE_LIBS)
### --------------------------------------------------------------------------
### G-wrap (libraries and executable)
AM_GUILE_VERSION_CHECK(1.6.0, , , [AC_MSG_ERROR([ AM_GUILE_VERSION_CHECK(1.6.0, , , [AC_MSG_ERROR([
guile does not appear to be installed correctly, or is not in the guile does not appear to be installed correctly, or is not in the
@@ -318,92 +327,10 @@ AM_GUILE_VERSION_CHECK(1.8.0, , [
AC_DEFINE(HAVE_GUILE18,1,[System has guile 1.8 or better]) AC_DEFINE(HAVE_GUILE18,1,[System has guile 1.8 or better])
], ) ], )
AM_PATH_GWRAP(1.3.3, , [AC_MSG_ERROR([
g-wrap does not appear to be installed correctly, or is not new
enough. GnuCash requires at least version 1.3.3 to build,
and 1.9.6 to build cleanly with GCC4. If you need to install g-wrap,
you can find it at http://www.nongnu.org/g-wrap/ .
])])
# Find out what the g-wrap compile and link flags are.
AC_MSG_CHECKING(for g-wrap compile args)
if test "x$G_WRAP_COMPILE_ARGS" = "x" ; then
G_WRAP_COMPILE_ARGS=`${G_WRAP_CONFIG} --c-compile-args guile`
fi
AC_MSG_RESULT($G_WRAP_COMPILE_ARGS)
AC_MSG_CHECKING(for g-wrap link args)
if test "x$G_WRAP_LINK_ARGS" = "x" ; then
G_WRAP_LINK_ARGS=`${G_WRAP_CONFIG} --c-link-args guile`
fi
# Dear g-wrap: adding -L/usr/lib is very silly. Do not do this.
G_WRAP_LINK_ARGS=`echo ${G_WRAP_LINK_ARGS} | sed -e 's|-L/usr/lib ||'`
AC_MSG_RESULT($G_WRAP_LINK_ARGS)
AC_MSG_CHECKING(for g-wrap module directory)
G_WRAP_MODULE_DIR=`${G_WRAP_CONFIG} --guile-module-directory`
G_WRAP_LIB_DIR=`echo $G_WRAP_MODULE_DIR | sed -e 's|share/guile.*$|lib|'`
AC_MSG_RESULT($G_WRAP_MODULE_DIR)
AC_GWRAP_CHECK_GUILE($G_WRAP_MODULE_DIR)
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $GUILE_INCS $G_WRAP_COMPILE_ARGS"
AC_CHECK_HEADER(g-wrap-wct.h,,
[AC_MSG_ERROR([
cannot find g-wrap-wct.h where g-wrap claims it should be.
are you on Debian or Ubuntu and still using g-wrap 1.9.6-2?
See: http://bugzilla.gnome.org/show_bug.cgi?id=330539
])])
CPPFLAGS=$save_CPPFLAGS
AC_SUBST(G_WRAP_CONFIG)
AC_SUBST(G_WRAP_COMPILE_ARGS)
AC_SUBST(G_WRAP_LINK_ARGS)
AC_SUBST(G_WRAP_MODULE_DIR)
AC_SUBST(G_WRAP_LIB_DIR)
AS_SCRUB_INCLUDE(CFLAGS) AS_SCRUB_INCLUDE(CFLAGS)
AC_MSG_CHECKING([for (g-wrap) guile module])
if LD_LIBRARY_PATH="${G_WRAP_LIB_DIR}:${LD_LIBRARY_PATH}" \
GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \
${GUILE} -c "(use-modules (g-wrap))" > /dev/null 2>&1
then
AC_MSG_RESULT(yes)
else
AC_MSG_ERROR([
Cannot find the (g-wrap) guile module.
Are you sure you have g-wrap compile-time environment installed?
See http://bugzilla.gnome.org/show_bug.cgi?id=347680
])
fi
AC_MSG_CHECKING([for (g-wrap gw-glib-spec) guile module])
if LD_LIBRARY_PATH="${G_WRAP_LIB_DIR}:${LD_LIBRARY_PATH}" \
GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \
${GUILE} -c "(use-modules (g-wrap gw-glib-spec))" > /dev/null 2>&1
then
AC_MSG_RESULT(yes)
else
AC_MSG_ERROR([
Cannot find the (g-wrap gw-glib-spec) guile module.
Are you sure you have g-wrap installed with glib support?
See http://bugzilla.gnome.org/show_bug.cgi?id=347404
])
fi
AC_MSG_CHECKING([for SLIB support]) AC_MSG_CHECKING([for SLIB support])
if LD_LIBRARY_PATH="${G_WRAP_LIB_DIR}:${LD_LIBRARY_PATH}" \ if ${GUILE} -c "(use-modules (ice-9 slib)) (require 'printf)" > /dev/null 2>&1
GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \
${GUILE} -c "(use-modules (ice-9 slib)) (require 'printf)" > /dev/null 2>&1
then then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
else else
@@ -415,31 +342,6 @@ else
]) ])
fi fi
AC_MSG_CHECKING([for (g-wrap gw-standard) guile module])
if LD_LIBRARY_PATH="${G_WRAP_LIB_DIR}:${LD_LIBRARY_PATH}" \
GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \
${GUILE} -c "(use-modules (g-wrap gw-standard))" > /dev/null 2>&1
then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
AC_MSG_CHECKING([for (g-wrap gw standard) guile module])
if LD_LIBRARY_PATH="${G_WRAP_LIB_DIR}:${LD_LIBRARY_PATH}" \
GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \
${GUILE} -c "(use-modules (g-wrap gw standard))" > /dev/null 2>&1
then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
AC_MSG_WARN([
Unable to find the g-wrap standard module, a.k.a. guile-g-wrap.
You won't be able to run GnuCash without it!
])
fi
fi
### Check size of long_long - some guile's are broken. ### Check size of long_long - some guile's are broken.
AC_MSG_CHECKING(if guile long_long is at least as big as gint64) AC_MSG_CHECKING(if guile long_long is at least as big as gint64)
GNC_OLDCFLAGS="$CFLAGS" GNC_OLDCFLAGS="$CFLAGS"
@@ -648,7 +550,6 @@ GNC_LIBEXECDIR='${libexecdir}/gnucash'
GNC_ACCOUNTS_DIR='${GNC_SHAREDIR}/accounts' GNC_ACCOUNTS_DIR='${GNC_SHAREDIR}/accounts'
GNC_GLADE_DIR='${GNC_SHAREDIR}/glade' GNC_GLADE_DIR='${GNC_SHAREDIR}/glade'
GNC_UI_DIR='${GNC_SHAREDIR}/ui' GNC_UI_DIR='${GNC_SHAREDIR}/ui'
GNC_GWRAP_LIBDIR='${GNC_SHAREDIR}/guile-modules/g-wrapped'
GNC_MODULE_DIR='${pkglibdir}' GNC_MODULE_DIR='${pkglibdir}'
GNC_PIXMAP_DIR='${GNC_SHAREDIR}/pixmaps' GNC_PIXMAP_DIR='${GNC_SHAREDIR}/pixmaps'
@@ -657,7 +558,6 @@ AC_SUBST(GNC_CONFIGDIR)
AC_SUBST(GNC_DOC_INSTALL_DIR) AC_SUBST(GNC_DOC_INSTALL_DIR)
AC_SUBST(GNC_GLADE_DIR) AC_SUBST(GNC_GLADE_DIR)
AC_SUBST(GNC_UI_DIR) AC_SUBST(GNC_UI_DIR)
AC_SUBST(GNC_GWRAP_LIBDIR)
AC_SUBST(GNC_INCLUDE_DIR) AC_SUBST(GNC_INCLUDE_DIR)
AC_SUBST(GNC_LIBDIR) AC_SUBST(GNC_LIBDIR)
AC_SUBST(GNC_MODULE_DIR) AC_SUBST(GNC_MODULE_DIR)
@@ -2050,10 +1950,10 @@ AC_SUBST(LC_MESSAGES_ENUM)
### GnuCash flags and libs configuration ### GnuCash flags and libs configuration
GNUCASH_ENGINE_BASE_LIBS="${GLIB_LIBS}" GNUCASH_ENGINE_BASE_LIBS="${GLIB_LIBS}"
GNUCASH_ENGINE_LIBS="-L${GNC_MODULE_DIR} -L${GNC_GWRAP_LIBDIR} ${GNUCASH_ENGINE_BASE_LIBS} ${GUILE_LIBS} -lgncmod-engine -lgw-engine -lgw-kvp -lgncmodule" GNUCASH_ENGINE_LIBS="-L${GNC_MODULE_DIR} ${GNUCASH_ENGINE_BASE_LIBS} ${GUILE_LIBS} -lgncmod-engine -lgncmodule"
GNUCASH_ENGINE_BASE_CFLAGS="-DGNUCASH ${GLIB_CFLAGS} ${G_WRAP_COMPILE_ARGS}" GNUCASH_ENGINE_BASE_CFLAGS="-DGNUCASH ${GLIB_CFLAGS} ${GUILE_INCS}"
GNUCASH_ENGINE_CFLAGS="${GNUCASH_ENGINE_BASE_CFLAGS} ${GUILE_INCS}" GNUCASH_ENGINE_CFLAGS="${GNUCASH_ENGINE_BASE_CFLAGS}"
AC_SUBST(GNUCASH_ENGINE_BASE_LIBS) AC_SUBST(GNUCASH_ENGINE_BASE_LIBS)
AC_SUBST(GNUCASH_ENGINE_LIBS) AC_SUBST(GNUCASH_ENGINE_LIBS)
@@ -2096,9 +1996,7 @@ AC_MSG_CHECKING(what extra warning flags to pass to the C compiler)
if test ${GCC}x = yesx if test ${GCC}x = yesx
then then
warnFLAGS= warnFLAGS=
# These two are because of g-wrap -- it can't avoid unused and uninitialized. CFLAGS="${CFLAGS} -Wno-unused"
#warnFLAGS="${warnFLAGS} -Wno-uninitialized"
#warnFLAGS="${warnFLAGS} -Wno-unused"
# other flags... # other flags...
# These next two are included in the GNOME_COMPILE_WARNINGS # These next two are included in the GNOME_COMPILE_WARNINGS
#warnFLAGS="${warnFLAGS} -Wmissing-prototypes" #warnFLAGS="${warnFLAGS} -Wmissing-prototypes"
@@ -2106,8 +2004,7 @@ then
#warnFLAGS="${warnFLAGS} -Werror-implicit-function-declaration" # In -Wall #warnFLAGS="${warnFLAGS} -Werror-implicit-function-declaration" # In -Wall
# error-on-warning should not be active in (stable) release tarballs # error-on-warning should not be active in (stable) release tarballs
${srcdir}/util/gnc-svnversion ${srcdir} >/dev/null 2>&1 if test "x$BUILDING_FROM_SVN" = "xyes"
if test $? = 0
then then
# This code is from SVN/SVK, so enable error-on-warning # This code is from SVN/SVK, so enable error-on-warning
error_on_warning_as_default="yes" error_on_warning_as_default="yes"
@@ -2147,36 +2044,11 @@ then
warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement -Wno-pointer-sign" warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement -Wno-pointer-sign"
# rpmbuild on FC4 forces this flag. Can't hurt to always compile with it. # rpmbuild on FC4 forces this flag. Can't hurt to always compile with it.
warnFLAGS="${warnFLAGS} -D_FORTIFY_SOURCE=2" warnFLAGS="${warnFLAGS} -D_FORTIFY_SOURCE=2"
if test x$gwrap_major_version = x1 -a "$gwrap_minor_version" -lt 9 ; then
# This is g-wrap 1.3 + gcc4. Test error-on-warning
case "$gnc_error_on_warning" in
auto)
AC_MSG_ERROR([
Sorry, your current configuration will not compile. You are
running g-wrap 1.3.x, GCC4, and --enable-error-on-warning, which
do not work together. You have three options: You can update
g-wrap to 1.9.6, you can downgrade gcc to GCC3, or you can
--disable-error-on-warning on the configure line. We recommend
you update g-wrap to 1.9.6 so gnucash can compile cleanly on GCC4
You can find it at http://www.nongnu.org/g-wrap/ .
])
;;
yes)
AC_MSG_WARN([
g-wrap 1.3.x and GCC4 may cause build problems. You have been warned!
])
;;
esac
fi
fi fi
fi fi
fi fi
CFLAGS="${CFLAGS} ${warnFLAGS}" CFLAGS="${warnFLAGS} ${CFLAGS}"
else else
warnFLAGS=none warnFLAGS=none
@@ -2331,8 +2203,6 @@ AC_CONFIG_FILES(po/Makefile.in
src/network-utils/Makefile src/network-utils/Makefile
src/network-utils/test/Makefile src/network-utils/test/Makefile
src/optional/Makefile src/optional/Makefile
src/optional/swig/Makefile
src/optional/swig/examples/Makefile
src/optional/xsl/Makefile src/optional/xsl/Makefile
src/pixmaps/Makefile src/pixmaps/Makefile
src/quotes/Makefile src/quotes/Makefile

View File

@@ -1253,7 +1253,7 @@ void qof_query_add_guid_list_match (QofQuery *q, GSList *param_list,
} }
void qof_query_add_guid_match (QofQuery *q, GSList *param_list, void qof_query_add_guid_match (QofQuery *q, GSList *param_list,
const GUID *guid, QofQueryOp op) const GUID *guid, QofQueryOp op)
{ {
GList *g = NULL; GList *g = NULL;

155
macros/ac_pkg_swig.m4 Normal file
View File

@@ -0,0 +1,155 @@
dnl @synopsis AC_PROG_SWIG([major.minor.micro])
dnl
dnl This macro searches for a SWIG installation on your system. If
dnl found you should call SWIG via $(SWIG). You can use the optional
dnl first argument to check if the version of the available SWIG is
dnl greater than or equal to the value of the argument. It should have
dnl the format: N[.N[.N]] (N is a number between 0 and 999. Only the
dnl first N is mandatory.)
dnl
dnl If the version argument is given (e.g. 1.3.17), AC_PROG_SWIG checks
dnl that the swig package is this version number or higher.
dnl
dnl In configure.in, use as:
dnl
dnl AC_PROG_SWIG(1.3.17)
dnl SWIG_ENABLE_CXX
dnl SWIG_MULTI_MODULE_SUPPORT
dnl SWIG_PYTHON
dnl
dnl @category InstalledPackages
dnl @author Sebastian Huber <sebastian-huber@web.de>
dnl @author Alan W. Irwin <irwin@beluga.phys.uvic.ca>
dnl @author Rafael Laboissiere <rafael@laboissiere.net>
dnl @author Andrew Collier <abcollier@yahoo.com>
dnl @version 2004-09-20
dnl @license GPLWithACException
AC_DEFUN([AC_PROG_SWIG],[
AC_PATH_PROG([SWIG],[swig])
if test -z "$SWIG" ; then
AC_MSG_WARN([cannot find 'swig' program. You should look at http://www.swig.org])
SWIG='echo "Error: SWIG is not installed. You should look at http://www.swig.org" ; false'
elif test -n "$1" ; then
AC_MSG_CHECKING([for SWIG version])
[swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`]
AC_MSG_RESULT([$swig_version])
if test -n "$swig_version" ; then
# Calculate the required version number components
[required=$1]
[required_major=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_major" ; then
[required_major=0]
fi
[required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
[required_minor=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_minor" ; then
[required_minor=0]
fi
[required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
[required_patch=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_patch" ; then
[required_patch=0]
fi
# Calculate the available version number components
[available=$swig_version]
[available_major=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_major" ; then
[available_major=0]
fi
[available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
[available_minor=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_minor" ; then
[available_minor=0]
fi
[available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
[available_patch=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_patch" ; then
[available_patch=0]
fi
if test $available_major -ne $required_major \
-o $available_minor -ne $required_minor \
-o $available_patch -lt $required_patch ; then
AC_MSG_ERROR([SWIG version >= $1 is required. You have $swig_version. You should look at http://www.swig.org])
SWIG='echo "Error: SWIG version >= $1 is required. You have '"$swig_version"'. You should look at http://www.swig.org" ; false'
else
AC_MSG_NOTICE([SWIG executable is '$SWIG'])
SWIG_LIB=`$SWIG -swiglib`
AC_MSG_NOTICE([SWIG library directory is '$SWIG_LIB'])
fi
else
AC_MSG_ERROR([cannot determine SWIG version])
SWIG='echo "Error: Cannot determine SWIG version. You should look at http://www.swig.org" ; false'
fi
fi
AC_SUBST([SWIG_LIB])
])
# SWIG_ENABLE_CXX()
#
# Enable SWIG C++ support. This affects all invocations of $(SWIG).
AC_DEFUN([SWIG_ENABLE_CXX],[
AC_REQUIRE([AC_PROG_SWIG])
AC_REQUIRE([AC_PROG_CXX])
SWIG="$SWIG -c++"
])
# SWIG_MULTI_MODULE_SUPPORT()
#
# Enable support for multiple modules. This effects all invocations
# of $(SWIG). You have to link all generated modules against the
# appropriate SWIG runtime library. If you want to build Python
# modules for example, use the SWIG_PYTHON() macro and link the
# modules against $(SWIG_PYTHON_LIBS).
#
AC_DEFUN([SWIG_MULTI_MODULE_SUPPORT],[
AC_REQUIRE([AC_PROG_SWIG])
SWIG="$SWIG -noruntime"
])
# SWIG_PYTHON([use-shadow-classes = {no, yes}])
#
# Checks for Python and provides the $(SWIG_PYTHON_CPPFLAGS),
# and $(SWIG_PYTHON_OPT) output variables.
#
# $(SWIG_PYTHON_OPT) contains all necessary SWIG options to generate
# code for Python. Shadow classes are enabled unless the value of the
# optional first argument is exactly 'no'. If you need multi module
# support (provided by the SWIG_MULTI_MODULE_SUPPORT() macro) use
# $(SWIG_PYTHON_LIBS) to link against the appropriate library. It
# contains the SWIG Python runtime library that is needed by the type
# check system for example.
AC_DEFUN([SWIG_PYTHON],[
AC_REQUIRE([AC_PROG_SWIG])
AC_REQUIRE([AC_PYTHON_DEVEL])
test "x$1" != "xno" || swig_shadow=" -noproxy"
AC_SUBST([SWIG_PYTHON_OPT],[-python$swig_shadow])
AC_SUBST([SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS])
])
dnl @synopsis AC_LIB_WAD
dnl
dnl This macro searches for installed WAD library.
dnl
AC_DEFUN([AC_LIB_WAD],
[
AC_REQUIRE([AC_PYTHON_DEVEL])
AC_ARG_ENABLE(wad,
AC_HELP_STRING([--enable-wad], [enable wad module]),
[
case "${enableval}" in
no) ;;
*) if test "x${enableval}" = xyes;
then
check_wad="yes"
fi ;;
esac
], [])
if test -n "$check_wad";
then
AC_CHECK_LIB(wadpy, _init, [WADPY=-lwadpy], [], $PYTHON_LDFLAGS $PYTHON_EXTRA_LIBS)
AC_SUBST(WADPY)
fi
])

View File

@@ -1,81 +0,0 @@
dnl g-wrap.m4
dnl Written by Robert Merkel <rgmerk@mira.net>
dnl Parts ripped off from guile.m4 and ORBit.m4
dnl check whether we use the old or new guile smobs
AC_DEFUN([AC_GWRAP_CHECK_GUILE],
[if test x$GUILE = x ; then
AC_PATH_PROG(GUILE, guile, no)
fi
dnl AC_MSG_WARN(guile is $GUILE)
if test "${GUILE}" = "no" ; then
AC_MSG_ERROR(g-wrap couldn't find guile.)
fi
])
dnl AM_PATH_GWRAP ([MINIMUM-VERSION, [ACTION-IF-FOUND.
dnl [ACTION-IF-NOT-FOUND]]])
dnl tests for minimum version of g-wrap.
dnl sets G_WRAP_CONFIG and GWRAP_OLD_GUILE_SMOB if needed.
AC_DEFUN([AM_PATH_GWRAP],
[dnl
dnl
dnl
AC_ARG_WITH(g-wrap-prefix,[ --with-g-wrap-prefix=PFX Prefix where g-wrap is installed (optional)],
gwrap_prefix="$withval", g_wrap_prefix="")
min_gwrap_version=ifelse([$1], , 0.9.1,$1)
if test x${GUILE} = x ; then
AC_PATH_PROG(GUILE, guile, no)
fi
dnl if prefix set, then set them explicitly
if test x${gwrap_prefix} != x ; then
G_WRAP_CONFIG=${gwrap_prefix}/bin/g-wrap-config
else
AC_PATH_PROG(G_WRAP_CONFIG, g-wrap-config, no)
if test x${G_WRAP_CONFIG} = xno ; then
CHECK_VERSION="no"
ifelse([$3], , true , [AC_MSG_WARN(g-wrap-config failed)
$3])
fi
fi
if test x$CHECK_VERSION != xno ; then
AC_MSG_CHECKING(for g-wrap - version >= ${min_gwrap_version})
gwrap_major_version=`${G_WRAP_CONFIG} --version | \
sed 's/g-wrap-config \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
gwrap_minor_version=`${G_WRAP_CONFIG} --version | \
sed 's/g-wrap-config \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
gwrap_micro_version=`${G_WRAP_CONFIG} --version | \
sed 's/g-wrap-config \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
major_required=`echo ${min_gwrap_version} |\
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
minor_required=`echo ${min_gwrap_version} |\
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
micro_required=`echo ${min_gwrap_version} |\
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if ${GUILE} -c "(cond ((> ${gwrap_major_version} ${major_required}) (exit 0))\
((< ${gwrap_major_version} ${major_required}) (exit 1))\
((> ${gwrap_minor_version} ${minor_required}) (exit 0))\
((< ${gwrap_minor_version} ${minor_required}) (exit 1))\
((< ${gwrap_micro_version} ${micro_required}) (exit 1))\
(else (exit 0)))" ; then
AC_MSG_RESULT(yes)
ifelse([$2], , true, [$2])
else
AC_MSG_RESULT(no)
ifelse([$3], , true , [AC_MSG_WARN(guile check failed)
$3])
fi
dnl check version
fi])

View File

@@ -28,17 +28,24 @@ GUI_SUBDIRS_2 = \
DIST_SUBDIRS = $(NONGUI_SUBDIRS) $(GUI_SUBDIRS_1) report $(GUI_SUBDIRS_2) DIST_SUBDIRS = $(NONGUI_SUBDIRS) $(GUI_SUBDIRS_1) report $(GUI_SUBDIRS_2)
if GNUCASH_ENABLE_GUI if GNUCASH_ENABLE_GUI
SUBDIRS = $(DIST_SUBDIRS) SUBDIRS = . $(DIST_SUBDIRS)
else else
SUBDIRS = $(NONGUI_SUBDIRS) report SUBDIRS = . $(NONGUI_SUBDIRS) report
endif endif
noinst_HEADERS = \ noinst_HEADERS = \
RecnWindow.h \ RecnWindow.h \
swig-runtime.h \
gnc-ui.h gnc-ui.h
bin_SCRIPTS = gnc-test-env bin_SCRIPTS = gnc-test-env
if BUILDING_FROM_SVN
swig-runtime.h:
$(SWIG) -guile -external-runtime $@
endif
MAINTAINERCLEANFILES = swig-runtime.h
EXTRA_DIST = \ EXTRA_DIST = \
README.modules \ README.modules \
gnc-test-env \ gnc-test-env \

View File

@@ -1,7 +1,7 @@
SUBDIRS = . test SUBDIRS = . test
PWD := $(shell pwd) PWD := $(shell pwd)
pkglib_LTLIBRARIES = libgncmod-app-utils.la libgw-app-utils.la pkglib_LTLIBRARIES = libgncmod-app-utils.la
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src \ -I${top_srcdir}/src \
@@ -10,13 +10,13 @@ AM_CFLAGS = \
-I${top_srcdir}/src/core-utils \ -I${top_srcdir}/src/core-utils \
-I${top_srcdir}/src/engine \ -I${top_srcdir}/src/engine \
${GUILE_INCS} \ ${GUILE_INCS} \
${G_WRAP_COMPILE_ARGS} \
${GLIB_CFLAGS} \ ${GLIB_CFLAGS} \
${QOF_CFLAGS} \ ${QOF_CFLAGS} \
${GCONF_CFLAGS} \ ${GCONF_CFLAGS} \
${GTK_CFLAGS} ${GTK_CFLAGS}
libgncmod_app_utils_la_SOURCES = \ libgncmod_app_utils_la_SOURCES = \
swig-app-utils.c \
file-utils.c \ file-utils.c \
gfec.c \ gfec.c \
gnc-account-merge.c \ gnc-account-merge.c \
@@ -67,27 +67,19 @@ gncinclude_HEADERS = \
libgncmod_app_utils_la_LIBADD = \ libgncmod_app_utils_la_LIBADD = \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/engine/libgw-engine.la \
${top_builddir}/src/calculation/libgncmod-calculation.la \ ${top_builddir}/src/calculation/libgncmod-calculation.la \
${top_builddir}/src/core-utils/libcore-utils.la \ ${top_builddir}/src/core-utils/libcore-utils.la \
${GCONF_LIBS} \ ${GCONF_LIBS} \
${GTK_LIBS} \ ${GTK_LIBS} \
${G_WRAP_LINK_ARGS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \
${GLIB_LIBS} ${GLIB_LIBS}
libgw_app_utils_la_LIBADD = \ if BUILDING_FROM_SVN
libgncmod-app-utils.la \ swig-app-utils.c: app-utils.i ${gncinclude_HEADERS}
${top_builddir}/src/engine/libgncmod-engine.la \ $(SWIG) -guile $(SWIG_ARGS) -Linkage module \
${top_builddir}/src/engine/libgw-engine.la \ -I${top_srcdir}/src/engine -I${top_srcdir}/lib/libqof/qof -o $@ $<
${top_builddir}/src/core-utils/libcore-utils.la \ endif
${G_WRAP_LINK_ARGS} \
${GUILE_LIBS} \
${QOF_LIBS} \
${GLIB_LIBS}
nodist_libgw_app_utils_la_SOURCES = gw-app-utils.c
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gncmod_DATA = app-utils.scm gncmod_DATA = app-utils.scm
@@ -98,34 +90,27 @@ gncscm_DATA = \
config-var.scm \ config-var.scm \
date-utilities.scm \ date-utilities.scm \
hooks.scm \ hooks.scm \
kvp-option-registry.scm \
options.scm \ options.scm \
prefs.scm \ prefs.scm \
simple-obj.scm simple-obj.scm
gwmoddir = ${GNC_GWRAP_LIBDIR}
gwmod_DATA = gw-app-utils-spec.scm
nodist_gwmod_DATA = gw-app-utils.scm
noinst_DATA = .scm-links noinst_DATA = .scm-links
EXTRA_DIST = \ EXTRA_DIST = \
app-utils.i \
${gncmod_DATA} \ ${gncmod_DATA} \
${gncscm_DATA} \ ${gncscm_DATA}
${gwmod_DATA}
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#For compiling
SCM_FILE_LINKS = gw-app-utils-spec.scm
#For executing test cases #For executing test cases
SCM_FILE_LINKS += \ SCM_FILE_LINKS = \
${gncmod_DATA} \ ${gncmod_DATA} \
${gncscm_DATA} ${gncscm_DATA}
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
@@ -134,25 +119,5 @@ endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done ) ( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: CLEANFILES = ${SCM_FILE_LINKS} gnucash .scm-links
$(RM) -rf gnucash g-wrapped MAINTAINERCLEANFILES = swig-app-utils.c
.INTERMEDIATE: gwrap-files
gw-app-utils.scm gw-app-utils.c gw-app-utils.h: \
gwrap-files
gwrap-files: \
.scm-links gw-app-utils-spec.scm ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(set! %load-path (cons \"${top_builddir}/src/engine\" %load-path)) \
(primitive-load \"./gw-app-utils-spec.scm\") \
(gw:generate-wrapset \"gw-app-utils\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-*.scm . )
BUILT_SOURCES = gw-app-utils.scm gw-app-utils.c gw-app-utils.h
CLEANFILES = $(BUILT_SOURCES) ${SCM_FILE_LINKS} \
.scm-links gw-app-utils.html

99
src/app-utils/app-utils.i Normal file
View File

@@ -0,0 +1,99 @@
%module sw_app_utils
%{
/* Includes the header in the wrapper code */
#include <config.h>
#include <option-util.h>
#include <gnc-euro.h>
#include <gnc-exp-parser.h>
#include <gnc-ui-util.h>
#include <gnc-gettext-util.h>
#include <gnc-helpers.h>
#include <gnc-accounting-period.h>
#include <gnc-session.h>
#include <gnc-component-manager.h>
#include "engine-helpers.h"
SCM scm_init_sw_app_utils_module (void);
%}
//%import "engine.i"
%typemap(in) GNCPrintAmountInfo "$1 = gnc_scm2printinfo($input);"
%typemap(out) GNCPrintAmountInfo "$result = gnc_printinfo2scm($1);"
%typemap(out) GncCommodityList {
SCM list = SCM_EOL;
GList *node;
for (node = $1; node; node = node->next)
list = scm_cons(gnc_quoteinfo2scm(node->data), list);
$result = scm_reverse(list);
}
// Temporary SWIG<->G-wrap converters for engine types
%typemap(in) gboolean "$1 = SCM_NFALSEP($input) ? TRUE : FALSE;"
%typemap(out) gboolean "$result = $1 ? SCM_BOOL_T : SCM_BOOL_F;"
%typemap(in) gnc_numeric "$1 = gnc_scm_to_numeric($input);"
%typemap(out) gnc_numeric "$result = gnc_numeric_to_scm($1);"
// End of temporary typemaps.
typedef void (*GNCOptionChangeCallback) (gpointer user_data);
typedef int GNCOptionDBHandle;
QofBook * gnc_get_current_book (void);
AccountGroup * gnc_get_current_group (void);
char * gnc_gettext_helper(const char *string);
GNCOptionDB * gnc_option_db_new(SCM guile_options);
void gnc_option_db_destroy(GNCOptionDB *odb);
void gnc_option_db_set_option_selectable_by_name(SCM guile_option,
const char *section, const char *name, gboolean selectable);
%inline %{
typedef GList GncCommodityList;
GncCommodityList *
gnc_commodity_table_get_quotable_commodities(const gnc_commodity_table * table);
%}
gnc_commodity * gnc_default_currency (void);
gnc_commodity * gnc_default_report_currency (void);
void gncp_option_invoke_callback(GNCOptionChangeCallback callback, void *data);
void gnc_option_db_register_option(GNCOptionDBHandle handle,
SCM guile_option);
const char * gnc_locale_default_iso_currency_code (void);
char * gnc_account_get_full_name (const Account *account);
GNCPrintAmountInfo gnc_default_print_info (gboolean use_symbol);
GNCPrintAmountInfo gnc_account_print_info (const Account *account,
gboolean use_symbol);
GNCPrintAmountInfo gnc_commodity_print_info (const gnc_commodity *commodity,
gboolean use_symbol);
GNCPrintAmountInfo gnc_share_print_info_places (int decplaces);
const char * xaccPrintAmount (gnc_numeric val, GNCPrintAmountInfo info);
gboolean gnc_reverse_balance (const Account *account);
gboolean gnc_is_euro_currency(const gnc_commodity * currency);
gnc_numeric gnc_convert_to_euro(const gnc_commodity * currency,
gnc_numeric value);
gnc_numeric gnc_convert_from_euro(const gnc_commodity * currency,
gnc_numeric value);
typedef int time_t;
time_t gnc_accounting_period_fiscal_start(void);
time_t gnc_accounting_period_fiscal_end(void);
SCM gnc_make_kvp_options(QofIdType id_type);
void gnc_register_kvp_option_generator(QofIdType id_type, SCM generator);

View File

@@ -1,8 +1,8 @@
(define-module (gnucash app-utils)) (define-module (gnucash app-utils))
(use-modules (g-wrapped gw-app-utils)) (use-modules (sw_app_utils))
(use-modules (srfi srfi-1)) (use-modules (srfi srfi-1))
(use-modules (gnucash main) (g-wrapped gw-gnc)) ;; FIXME: delete after we finish modularizing. (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing.
(use-modules (gnucash gnc-module)) (use-modules (gnucash gnc-module))
(gnc:module-load "gnucash/engine" 0) (gnc:module-load "gnucash/engine" 0)
@@ -125,7 +125,7 @@
(export gnc:config-file-format-version) (export gnc:config-file-format-version)
;; gw-engine-spec.scm ;; gw-engine-spec.scm
(re-export gnc:*save-options-hook*) (re-export HOOK-SAVE-OPTIONS)
;; date-utilities.scm ;; date-utilities.scm
@@ -225,14 +225,9 @@
(export gnc:reldate-initialize) (export gnc:reldate-initialize)
;; hooks ;; hooks
(re-export gnc:hook-define)
(export gnc:hook-run-danglers) ;; from hooks.scm (export gnc:hook-run-danglers) ;; from hooks.scm
(re-export gnc:hook-add-dangler) (re-export gnc-hook-add-scm-dangler)
(re-export gnc:hook-remove-dangler) (re-export HOOK-REPORT)
(re-export gnc:*book-opened-hook*)
(re-export gnc:*new-book-hook*)
(re-export gnc:*book-closed-hook*)
(re-export gnc:*report-hook*)
;; simple-obj ;; simple-obj
(export make-simple-class) (export make-simple-class)
@@ -243,16 +238,12 @@
(export simple-obj-from-list) (export simple-obj-from-list)
(export make-simple-obj) (export make-simple-obj)
;; kvp-option-registry (define gnc:*kvp-option-path* '("options"))
(export gnc:register-kvp-option-generator)
(export gnc:unregister-kvp-option-generator)
(export gnc:make-kvp-options)
(export gnc:*kvp-option-path*) (export gnc:*kvp-option-path*)
(load-from-path "c-interface.scm") (load-from-path "c-interface.scm")
(load-from-path "config-var.scm") (load-from-path "config-var.scm")
(load-from-path "options.scm") (load-from-path "options.scm")
(load-from-path "kvp-option-registry.scm")
(load-from-path "hooks.scm") (load-from-path "hooks.scm")
(load-from-path "prefs.scm") (load-from-path "prefs.scm")
(load-from-path "date-utilities.scm") (load-from-path "date-utilities.scm")

View File

@@ -41,7 +41,7 @@
;; gettext functions ;; gettext functions
(define gnc:gettext gnc:gettext-helper) (define gnc:gettext gnc-gettext-helper)
(define gnc:_ gnc:gettext) (define gnc:_ gnc:gettext)
(define _ gnc:gettext) (define _ gnc:gettext)
(define-syntax N_ (define-syntax N_

View File

@@ -203,22 +203,22 @@
;; date-granularity comparison functions. ;; date-granularity comparison functions.
(define (gnc:timepair-earlier-date t1 t2) (define (gnc:timepair-earlier-date t1 t2)
(gnc:timepair-earlier (gnc:timepair-canonical-day-time t1) (gnc:timepair-earlier (timespecCanonicalDayTime t1)
(gnc:timepair-canonical-day-time t2))) (timespecCanonicalDayTime t2)))
(define (gnc:timepair-later-date t1 t2) (define (gnc:timepair-later-date t1 t2)
(gnc:timepair-earlier-date t2 t1)) (gnc:timepair-earlier-date t2 t1))
(define (gnc:timepair-le-date t1 t2) (define (gnc:timepair-le-date t1 t2)
(gnc:timepair-le (gnc:timepair-canonical-day-time t1) (gnc:timepair-le (timespecCanonicalDayTime t1)
(gnc:timepair-canonical-day-time t2))) (timespecCanonicalDayTime t2)))
(define (gnc:timepair-ge-date t1 t2) (define (gnc:timepair-ge-date t1 t2)
(gnc:timepair-le t2 t1)) (gnc:timepair-le t2 t1))
(define (gnc:timepair-eq-date t1 t2) (define (gnc:timepair-eq-date t1 t2)
(gnc:timepair-eq (gnc:timepair-canonical-day-time t1) (gnc:timepair-eq (timespecCanonicalDayTime t1)
(gnc:timepair-canonical-day-time t2))) (timespecCanonicalDayTime t2)))
;; Build a list of time intervals. ;; Build a list of time intervals.
;; ;;
@@ -454,10 +454,10 @@
(gnc:date->timepair now))) (gnc:date->timepair now)))
(define (gnc:get-start-accounting-period) (define (gnc:get-start-accounting-period)
(gnc:secs->timepair (gnc:accounting-period-start))) (gnc:secs->timepair (gnc-accounting-period-fiscal-start)))
(define (gnc:get-end-accounting-period) (define (gnc:get-end-accounting-period)
(gnc:secs->timepair (gnc:accounting-period-end))) (gnc:secs->timepair (gnc-accounting-period-fiscal-end)))
(define (gnc:get-start-this-month) (define (gnc:get-start-this-month)
(let ((now (localtime (current-time)))) (let ((now (localtime (current-time))))

View File

@@ -163,3 +163,26 @@ gfec_apply(SCM proc, SCM arglist, gfec_error_handler error_handler)
return result; return result;
} }
static int error_in_scm_eval = FALSE;
static void
error_handler(const char *msg)
{
g_warning(msg);
error_in_scm_eval = TRUE;
}
gboolean
gfec_try_load(gchar *fn)
{
g_message("looking for %s", fn);
if (g_file_test(fn, G_FILE_TEST_EXISTS)) {
g_message("trying to load %s", fn);
error_in_scm_eval = FALSE;
gfec_eval_file(fn, error_handler);
return !error_in_scm_eval;
}
return FALSE;
}

View File

@@ -10,6 +10,7 @@
#define GFEC_H #define GFEC_H
#include <libguile.h> #include <libguile.h>
#include <glib.h>
#include "guile-mappings.h" #include "guile-mappings.h"
typedef void (*gfec_error_handler)(const char *error_message); typedef void (*gfec_error_handler)(const char *error_message);
@@ -17,5 +18,6 @@ typedef void (*gfec_error_handler)(const char *error_message);
SCM gfec_eval_file(const char *file, gfec_error_handler error_handler); SCM gfec_eval_file(const char *file, gfec_error_handler error_handler);
SCM gfec_eval_string(const char *str, gfec_error_handler error_handler); SCM gfec_eval_string(const char *str, gfec_error_handler error_handler);
SCM gfec_apply(SCM proc, SCM arglist, gfec_error_handler error_handler); SCM gfec_apply(SCM proc, SCM arglist, gfec_error_handler error_handler);
gboolean gfec_try_load(gchar *fn);
#endif #endif

View File

@@ -51,9 +51,6 @@ typedef struct
GNCComponentCloseHandler close_handler; GNCComponentCloseHandler close_handler;
gpointer user_data; gpointer user_data;
SCM refresh_handler_scm;
SCM close_handler_scm;
ComponentEventInfo watch_info; ComponentEventInfo watch_info;
char *component_class; char *component_class;
@@ -404,9 +401,6 @@ gnc_register_gui_component_internal (const char * component_class)
/* found one, add the handler */ /* found one, add the handler */
ci = g_new0 (ComponentInfo, 1); ci = g_new0 (ComponentInfo, 1);
ci->refresh_handler_scm = SCM_BOOL_F;
ci->close_handler_scm = SCM_BOOL_F;
ci->watch_info.event_masks = g_hash_table_new (g_str_hash, g_str_equal); ci->watch_info.event_masks = g_hash_table_new (g_str_hash, g_str_equal);
ci->watch_info.entity_events = guid_hash_table_new (); ci->watch_info.entity_events = guid_hash_table_new ();
@@ -453,32 +447,6 @@ gnc_register_gui_component (const char *component_class,
return ci->component_id; return ci->component_id;
} }
gint
gnc_register_gui_component_scm (const char * component_class,
SCM refresh_handler,
SCM close_handler)
{
ComponentInfo *ci;
/* sanity check */
if (!component_class)
{
PERR ("no class specified");
return NO_COMPONENT;
}
ci = gnc_register_gui_component_internal (component_class);
g_return_val_if_fail (ci, NO_COMPONENT);
ci->refresh_handler_scm = refresh_handler;
scm_gc_protect_object (refresh_handler);
ci->close_handler_scm = close_handler;
scm_gc_protect_object (close_handler);
return ci->component_id;
}
void void
gnc_gui_component_watch_entity (gint component_id, gnc_gui_component_watch_entity (gint component_id,
const GUID *entity, const GUID *entity,
@@ -579,14 +547,6 @@ gnc_unregister_gui_component (gint component_id)
g_free (ci->component_class); g_free (ci->component_class);
ci->component_class = NULL; ci->component_class = NULL;
if (ci->refresh_handler_scm != SCM_BOOL_F)
scm_gc_unprotect_object (ci->refresh_handler_scm);
ci->refresh_handler_scm = SCM_BOOL_F;
if (ci->close_handler_scm != SCM_BOOL_F)
scm_gc_unprotect_object (ci->close_handler_scm);
ci->close_handler_scm = SCM_BOOL_F;
g_free (ci); g_free (ci);
#if CM_DEBUG #if CM_DEBUG
@@ -745,8 +705,7 @@ gnc_gui_refresh_internal (gboolean force)
if (!ci) if (!ci)
continue; continue;
if (!ci->refresh_handler && if (!ci->refresh_handler) {
!SCM_PROCEDUREP (ci->refresh_handler_scm)) {
#if CM_DEBUG #if CM_DEBUG
fprintf (stderr, "no handlers for %s:%d\n", ci->component_class, ci->component_id); fprintf (stderr, "no handlers for %s:%d\n", ci->component_class, ci->component_id);
#endif #endif
@@ -760,11 +719,6 @@ gnc_gui_refresh_internal (gboolean force)
fprintf (stderr, "calling %s:%d C handler\n", ci->component_class, ci->component_id); fprintf (stderr, "calling %s:%d C handler\n", ci->component_class, ci->component_id);
#endif #endif
ci->refresh_handler (NULL, ci->user_data); ci->refresh_handler (NULL, ci->user_data);
} else {
#if CM_DEBUG
fprintf (stderr, "calling %s:%d SCM handler\n", ci->component_class, ci->component_id);
#endif
scm_call_0 (ci->refresh_handler_scm);
} }
} }
else if (changes_match (&ci->watch_info, &changes_backup)) else if (changes_match (&ci->watch_info, &changes_backup))
@@ -774,11 +728,6 @@ gnc_gui_refresh_internal (gboolean force)
fprintf (stderr, "calling %s:%d C handler\n", ci->component_class, ci->component_id); fprintf (stderr, "calling %s:%d C handler\n", ci->component_class, ci->component_id);
#endif #endif
ci->refresh_handler (changes_backup.entity_events, ci->user_data); ci->refresh_handler (changes_backup.entity_events, ci->user_data);
} else {
#if CM_DEBUG
fprintf (stderr, "calling %s:%d SCM handler\n", ci->component_class, ci->component_id);
#endif
scm_call_0 (ci->refresh_handler_scm);
} }
} }
else else
@@ -827,14 +776,11 @@ gnc_close_gui_component (gint component_id)
return; return;
} }
if (!ci->close_handler && if (!ci->close_handler)
!SCM_PROCEDUREP (ci->close_handler_scm))
return; return;
if (ci->close_handler) if (ci->close_handler)
ci->close_handler (ci->user_data); ci->close_handler (ci->user_data);
else
scm_call_0 (ci->close_handler_scm);
} }
void void

View File

@@ -21,8 +21,6 @@
#define GNC_COMPONENT_MANAGER_H #define GNC_COMPONENT_MANAGER_H
#include <glib.h> #include <glib.h>
#include <libguile.h>
#include "guile-mappings.h"
#include "GNCId.h" #include "GNCId.h"
#include "qof.h" #include "qof.h"
@@ -154,24 +152,6 @@ gint gnc_register_gui_component (const char *component_class,
GNCComponentCloseHandler close_handler, GNCComponentCloseHandler close_handler,
gpointer user_data); gpointer user_data);
/* gnc_register_gui_component_scm
* Register a GUI component with the manager with scheme callbacks.
*
* component_class: same as gnc_register_gui_component
* refresh_cb: refresh handler, may be SCM_BOOL_F, indicating
* no handler. the handler is invoked with no
* arguments
* close_cb: close handler, may be SCM_BOOL_F, invoked
* with no arguments
*
* Notes: The same notes apply as in gnc_register_gui_component.
*
* Return: id of component, or NO_COMPONENT if error
*/
gint gnc_register_gui_component_scm (const char * component_class,
SCM refresh_handler,
SCM close_handler);
/* gnc_gui_component_set_session /* gnc_gui_component_set_session
* Set the associated session of this component * Set the associated session of this component
* *

View File

@@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* gnc-helpers.c -- gnucash g-wrap helper functions * * gnc-helpers.c -- gnucash app-util helper functions *
* Copyright (C) 2000 Linas Vepstas * * Copyright (C) 2000 Linas Vepstas *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@@ -26,7 +26,7 @@
#include <libguile.h> #include <libguile.h>
#include "guile-mappings.h" #include "guile-mappings.h"
#include <string.h> #include <string.h>
#include <g-wrap-wct.h> #include "swig-runtime.h"
#include "gnc-engine.h" #include "gnc-engine.h"
#include "engine-helpers.h" #include "engine-helpers.h"
@@ -67,10 +67,12 @@ gnc_scm2printinfo(SCM info_scm)
info.commodity = gnc_scm_to_commodity (SCM_CAR (info_scm)); info.commodity = gnc_scm_to_commodity (SCM_CAR (info_scm));
info_scm = SCM_CDR (info_scm); info_scm = SCM_CDR (info_scm);
info.max_decimal_places = scm_num2int (SCM_CAR (info_scm), SCM_ARG1, __FUNCTION__); info.max_decimal_places = scm_num2int (SCM_CAR (info_scm), SCM_ARG1,
__FUNCTION__);
info_scm = SCM_CDR (info_scm); info_scm = SCM_CDR (info_scm);
info.min_decimal_places = scm_num2int (SCM_CAR (info_scm), SCM_ARG1, __FUNCTION__); info.min_decimal_places = scm_num2int (SCM_CAR (info_scm), SCM_ARG1,
__FUNCTION__);
info_scm = SCM_CDR (info_scm); info_scm = SCM_CDR (info_scm);
info.use_separators = SCM_NFALSEP (SCM_CAR (info_scm)); info.use_separators = SCM_NFALSEP (SCM_CAR (info_scm));
@@ -117,7 +119,7 @@ gnc_printinfo_p(SCM info_scm)
* attempt to optimize the speed of price quote retrieval, this * attempt to optimize the speed of price quote retrieval, this
* routine only converts the fields that price-quotes.scm uses. Since * routine only converts the fields that price-quotes.scm uses. Since
* it converts these fields all at once, it should prevent multiple * it converts these fields all at once, it should prevent multiple
* transitions back and forth from Scheme to C (via g-wrap) to extract * transitions back and forth from Scheme to C to extract
* the data from a pointers to a gnc-commodity (the older method). * the data from a pointers to a gnc-commodity (the older method).
* This is *not* a reversible conversion as it drops data. * This is *not* a reversible conversion as it drops data.
* *
@@ -139,9 +141,9 @@ gnc_quoteinfo2scm(gnc_commodity *comm)
source = gnc_commodity_get_quote_source (comm); source = gnc_commodity_get_quote_source (comm);
name = gnc_quote_source_get_internal_name (source); name = gnc_quote_source_get_internal_name (source);
tz = gnc_commodity_get_quote_tz (comm); tz = gnc_commodity_get_quote_tz (comm);
comm_scm = gw_wcp_assimilate_ptr (comm, scm_c_eval_string("<gnc:commodity*>")); comm_scm = SWIG_NewPointerObj(comm, SWIG_TypeQuery("_p_gnc_commodity"), 0);
def_comm_scm = gw_wcp_assimilate_ptr (gnc_default_currency (), def_comm_scm = SWIG_NewPointerObj(gnc_default_currency (),
scm_c_eval_string("<gnc:commodity*>")); SWIG_TypeQuery("_p_gnc_commodity"), 0);
if (tz) if (tz)
info_scm = scm_cons (scm_makfrom0str (tz), info_scm); info_scm = scm_cons (scm_makfrom0str (tz), info_scm);

View File

@@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* gnc-helpers.h -- gnucash g-wrap helper functions * * gnc-helpers.h -- gnucash app-util helper functions *
* Copyright (C) 2000 Linas Vepstas * * Copyright (C) 2000 Linas Vepstas *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *

View File

@@ -24,6 +24,7 @@
#include <glib.h> #include <glib.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <libguile.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>

View File

@@ -57,6 +57,9 @@ app_utils_shutdown(void)
gnc_hook_run(HOOK_SAVE_OPTIONS, NULL); gnc_hook_run(HOOK_SAVE_OPTIONS, NULL);
} }
extern SCM scm_init_sw_app_utils_module(void);
int int
libgncmod_app_utils_LTX_gnc_module_init(int refcount) libgncmod_app_utils_LTX_gnc_module_init(int refcount)
{ {
@@ -70,9 +73,10 @@ libgncmod_app_utils_LTX_gnc_module_init(int refcount)
return FALSE; return FALSE;
} }
/* publish g-wrapped bindings */ scm_init_sw_app_utils_module();
/* publish swig bindings */
/* load the scheme code */ /* load the scheme code */
lmod("(g-wrapped gw-app-utils)"); lmod("(sw_app_utils)");
lmod("(gnucash app-utils)"); lmod("(gnucash app-utils)");
if (refcount == 0) { if (refcount == 0) {

View File

@@ -23,7 +23,7 @@
#include <glib.h> #include <glib.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <string.h> #include <string.h>
#include <g-wrap-wct.h> #include "swig-runtime.h"
#include <libguile.h> #include <libguile.h>
#include "qof.h" #include "qof.h"
@@ -367,7 +367,7 @@ gnc_scm_lookup(const char *module, const char *symbol)
SCM SCM
gnc_copy_split(Split *split, gboolean use_cut_semantics) gnc_copy_split(Split *split, gboolean use_cut_semantics)
{ {
static SCM split_type = SCM_UNDEFINED; static swig_type_info *split_type = NULL;
SCM func; SCM func;
SCM arg; SCM arg;
@@ -378,13 +378,10 @@ gnc_copy_split(Split *split, gboolean use_cut_semantics)
if (!SCM_PROCEDUREP(func)) if (!SCM_PROCEDUREP(func))
return SCM_UNDEFINED; return SCM_UNDEFINED;
if(split_type == SCM_UNDEFINED) { if (!split_type)
split_type = scm_c_eval_string("<gnc:Split*>"); split_type = SWIG_TypeQuery("_p_Split");
/* don't really need this - types are bound globally anyway. */
if(split_type != SCM_UNDEFINED) scm_gc_protect_object(split_type);
}
arg = gw_wcp_assimilate_ptr(split, split_type); arg = SWIG_NewPointerObj(split, split_type, 0);
return scm_call_2(func, arg, SCM_BOOL(use_cut_semantics)); return scm_call_2(func, arg, SCM_BOOL(use_cut_semantics));
} }
@@ -402,7 +399,7 @@ void
gnc_copy_split_scm_onto_split(SCM split_scm, Split *split, gnc_copy_split_scm_onto_split(SCM split_scm, Split *split,
QofBook * book) QofBook * book)
{ {
static SCM split_type = SCM_UNDEFINED; static swig_type_info *split_type = NULL;
SCM result; SCM result;
SCM func; SCM func;
SCM arg; SCM arg;
@@ -427,13 +424,10 @@ gnc_copy_split_scm_onto_split(SCM split_scm, Split *split,
if (!SCM_PROCEDUREP(func)) if (!SCM_PROCEDUREP(func))
return; return;
if(split_type == SCM_UNDEFINED) { if (!split_type)
split_type = scm_c_eval_string("<gnc:Split*>"); split_type = SWIG_TypeQuery("_p_Split");
/* don't really need this - types are bound globally anyway. */
if(split_type != SCM_UNDEFINED) scm_gc_protect_object(split_type);
}
arg = gw_wcp_assimilate_ptr(split, split_type); arg = SWIG_NewPointerObj(split, split_type, 0);
scm_call_3(func, split_scm, arg, gnc_book_to_scm (book)); scm_call_3(func, split_scm, arg, gnc_book_to_scm (book));
} }
@@ -736,7 +730,7 @@ gnc_split_scm_get_value(SCM split_scm)
SCM SCM
gnc_copy_trans(Transaction *trans, gboolean use_cut_semantics) gnc_copy_trans(Transaction *trans, gboolean use_cut_semantics)
{ {
static SCM trans_type = SCM_UNDEFINED; static swig_type_info *trans_type = NULL;
SCM func; SCM func;
SCM arg; SCM arg;
@@ -747,13 +741,10 @@ gnc_copy_trans(Transaction *trans, gboolean use_cut_semantics)
if (!SCM_PROCEDUREP(func)) if (!SCM_PROCEDUREP(func))
return SCM_UNDEFINED; return SCM_UNDEFINED;
if(trans_type == SCM_UNDEFINED) { if (!trans_type)
trans_type = scm_c_eval_string("<gnc:Transaction*>"); trans_type = SWIG_TypeQuery("_p_Transaction");
/* don't really need this - types are bound globally anyway. */
if(trans_type != SCM_UNDEFINED) scm_gc_protect_object(trans_type);
}
arg = gw_wcp_assimilate_ptr(trans, trans_type); arg = SWIG_NewPointerObj(trans, trans_type, 0);
return scm_call_2(func, arg, SCM_BOOL(use_cut_semantics)); return scm_call_2(func, arg, SCM_BOOL(use_cut_semantics));
} }
@@ -798,7 +789,7 @@ gnc_copy_trans_scm_onto_trans_swap_accounts(SCM trans_scm,
gboolean do_commit, gboolean do_commit,
QofBook *book) QofBook *book)
{ {
static SCM trans_type = SCM_UNDEFINED; static swig_type_info *trans_type = NULL;
SCM result; SCM result;
SCM func; SCM func;
SCM arg; SCM arg;
@@ -823,13 +814,10 @@ gnc_copy_trans_scm_onto_trans_swap_accounts(SCM trans_scm,
if (!SCM_PROCEDUREP(func)) if (!SCM_PROCEDUREP(func))
return; return;
if(trans_type == SCM_UNDEFINED) { if (!trans_type)
trans_type = scm_c_eval_string("<gnc:Transaction*>"); trans_type = SWIG_TypeQuery("_p_Transaction");
/* don't really need this - types are bound globally anyway. */
if(trans_type != SCM_UNDEFINED) scm_gc_protect_object(trans_type);
}
arg = gw_wcp_assimilate_ptr(trans, trans_type); arg = SWIG_NewPointerObj(trans, trans_type, 0);
if ((guid_1 == NULL) || (guid_2 == NULL)) if ((guid_1 == NULL) || (guid_2 == NULL))
{ {
@@ -1088,7 +1076,6 @@ gnc_trans_scm_get_num_splits(SCM trans_scm)
char * char *
gnc_get_debit_string(GNCAccountType account_type) gnc_get_debit_string(GNCAccountType account_type)
{ {
const char *type_string;
const gchar *string; const gchar *string;
SCM result; SCM result;
SCM arg; SCM arg;
@@ -1101,9 +1088,7 @@ gnc_get_debit_string(GNCAccountType account_type)
if ((account_type < ACCT_TYPE_NONE) || (account_type >= NUM_ACCOUNT_TYPES)) if ((account_type < ACCT_TYPE_NONE) || (account_type >= NUM_ACCOUNT_TYPES))
account_type = ACCT_TYPE_NONE; account_type = ACCT_TYPE_NONE;
type_string = xaccAccountTypeEnumAsString(account_type); arg = scm_long2num(account_type);
arg = scm_str2symbol(type_string);
result = scm_call_1(getters.debit_string, arg); result = scm_call_1(getters.debit_string, arg);
if (!SCM_STRINGP(result)) if (!SCM_STRINGP(result))
@@ -1126,7 +1111,6 @@ gnc_get_debit_string(GNCAccountType account_type)
char * char *
gnc_get_credit_string(GNCAccountType account_type) gnc_get_credit_string(GNCAccountType account_type)
{ {
const char *type_string;
const gchar *string; const gchar *string;
SCM result; SCM result;
SCM arg; SCM arg;
@@ -1139,9 +1123,7 @@ gnc_get_credit_string(GNCAccountType account_type)
if ((account_type < ACCT_TYPE_NONE) || (account_type >= NUM_ACCOUNT_TYPES)) if ((account_type < ACCT_TYPE_NONE) || (account_type >= NUM_ACCOUNT_TYPES))
account_type = ACCT_TYPE_NONE; account_type = ACCT_TYPE_NONE;
type_string = xaccAccountTypeEnumAsString(account_type); arg = scm_long2num(account_type);
arg = scm_str2symbol(type_string);
result = scm_call_1(getters.credit_string, arg); result = scm_call_1(getters.credit_string, arg);
if (!SCM_STRINGP(result)) if (!SCM_STRINGP(result))

View File

@@ -1,394 +0,0 @@
(define-module (g-wrapped gw-app-utils-spec))
(debug-set! maxdepth 100000)
(debug-set! stack 200000)
(use-modules (g-wrap))
(use-modules (g-wrap simple-type))
(use-modules (g-wrap gw-standard-spec))
(use-modules (g-wrap gw-wct-spec))
(use-modules (g-wrap gw-glib-spec))
(use-modules (g-wrapped gw-engine-spec))
(let ((ws (gw:new-wrapset "gw-app-utils")))
(gw:wrapset-depends-on ws "gw-standard")
(gw:wrapset-depends-on ws "gw-wct")
(gw:wrapset-depends-on ws "gw-glib")
(gw:wrapset-depends-on ws "gw-engine")
(gw:wrapset-set-guile-module! ws '(g-wrapped gw-app-utils))
(gw:wrapset-add-cs-declarations!
ws
(lambda (wrapset client-wrapset)
(list
"#include <config.h>\n"
"#include <option-util.h>\n"
"#include <gnc-euro.h>\n"
"#include <gnc-exp-parser.h>\n"
"#include <gnc-ui-util.h>\n"
"#include <gnc-gettext-util.h>\n"
"#include <gnc-helpers.h>\n"
"#include <gnc-accounting-period.h>\n"
"#include <gnc-session.h>\n"
"#include <gnc-component-manager.h>\n")))
(gw:wrap-simple-type ws '<gnc:print-amount-info-scm> "GNCPrintAmountInfo"
'("gnc_printinfo_p(" scm-var ")")
'(c-var " = gnc_scm2printinfo(" scm-var ");\n")
'(scm-var " = gnc_printinfo2scm(" c-var ");\n"))
(gw:wrap-simple-type ws '<gnc:quote-info-scm> "gnc_commodity *"
'("FALSE")
'(c-var " = NULL;\n")
'(scm-var " = gnc_quoteinfo2scm(" c-var ");\n"))
(gw:wrap-as-wct ws
'<gnc:OptionChangeCallback>
"GNCOptionChangeCallback" "const GNCOptionChangeCallback")
(gw:wrap-as-wct ws '<gnc:OptionDB*> "GNCOptionDB*" "const GNCOptionDB*")
(gw:wrap-function
ws
'gnc:get-current-group
'<gnc:AccountGroup*>
"gnc_get_current_group"
'()
"Get the current top-level group.")
(gw:wrap-function
ws
'gnc:get-current-book
'<gnc:Book*>
"gnc_get_current_book"
'()
"Get the current top-level book.")
(gw:wrap-function
ws
'gnc:get-current-session
'<gnc:Session*>
"gnc_get_current_session"
'()
"Get the current session.")
(gw:wrap-function
ws
'gnc:parse-amount
'<gw:scm>
"gnc_parse_amount_helper"
'(((<gw:mchars> caller-owned const) str)
(<gw:bool> monetary))
"Parse the expression and return either a gnc numeric or #f.")
(gw:wrap-function
ws
'gnc:gettext-helper
'(<gw:mchars> caller-owned const)
"gnc_gettext_helper"
'(((<gw:mchars> caller-owned const) str))
"Returns the translated version of string")
(gw:wrap-function
ws
'gnc:option-db-new
'<gnc:OptionDB*>
"gnc_option_db_new"
'((<gw:scm> guile-options))
"Create an option DB with the set of guile options")
(gw:wrap-function
ws
'gnc:option-db-destroy
'<gw:void>
"gnc_option_db_destroy"
'((<gnc:OptionDB*> option-db))
"Destroy the OptionDB")
(gw:wrap-function
ws
'gnc:option-db-set-option-selectable-by-name
'<gw:void>
"gnc_option_db_set_option_selectable_by_name"
'((<gw:scm> guile-options)
((<gw:mchars> caller-owned const) section)
((<gw:mchars> caller-owned const) name)
(<gw:bool> selectable))
"Set the appropriate option widget to be selectable or not selectable, depending on if <gw:bool> selectable is true or false respectively.")
(gw:wrap-function
ws
'gnc:default-currency
'(<gnc:commodity*> const)
"gnc_default_currency"
'()
"Return the new-account default currency set by the user.")
(gw:wrap-function
ws
'gnc:default-report-currency
'(<gnc:commodity*> const)
"gnc_default_report_currency"
'()
"Return the default report currency set by the user.")
(gw:wrap-function
ws
'gnc:amount->string
'(<gw:mchars> callee-owned const)
"xaccPrintAmount"
'((<gnc:numeric> amount)
(<gnc:print-amount-info-scm> info))
"Print amount using current locale. The info argument
determines formatting details.")
(gw:wrap-function
ws
'gnc:option-invoke-callback
'<gw:void>
"gncp_option_invoke_callback"
'((<gnc:OptionChangeCallback> callback) (<gw:void*> data))
"Invoke the c option callback on the given data.")
(gw:wrap-function
ws
'gnc:option-db-register-option
'<gw:void>
"gncp_option_db_register_option"
'((<gw:int> db_handle) (<gw:scm> option))
"Register the option with the option database db_handle.")
(gw:wrap-function
ws
'gnc:locale-decimal-places
'<gw:int>
"gnc_locale_decimal_places"
'()
"Return the number of decimal places for this locale.")
(gw:wrap-function
ws
'gnc:locale-default-currency
'(<gnc:commodity*> const)
"gnc_locale_default_currency"
'()
"Return the default currency for the current locale.")
(gw:wrap-function
ws
'gnc:locale-default-iso-currency-code
'(<gw:mchars> callee-owned const)
"gnc_locale_default_iso_currency_code"
'()
"Return the default iso currency code for the current locale.")
(gw:wrap-function
ws
'gnc:register-gui-component
'<gw:int>
"gnc_register_gui_component_scm"
'(((<gw:mchars> caller-owned const) component-class)
(<gw:scm> refresh-handler)
(<gw:scm> close-handler))
"Register a gui component with the component manager.")
(gw:wrap-function
ws
'gnc:gui-component-watch-entity
'<gw:void>
"gnc_gui_component_watch_entity_direct"
'((<gw:int> component-id)
(<gnc:guid-scm> entity)
(<gnc:event-type> event-type-mask))
"Watch the events for a particular entity.")
(gw:wrap-function
ws
'gnc:gui-component-watch-entity-type
'<gw:void>
"gnc_gui_component_watch_entity_type"
'((<gw:int> component-id)
((<gw:mchars> caller-owned const) id-type)
(<gnc:event-type> event-type-mask))
"Watch the events for a particular entity type.")
(gw:wrap-function
ws
'gnc:unregister-gui-component
'<gw:void>
"gnc_unregister_gui_component"
'((<gw:int> component-id))
"Unregister a gui component by id.")
(gw:wrap-function
ws
'gnc:gui-refresh-all
'<gw:void>
"gnc_gui_refresh_all"
'()
"Refresh all gui components.")
(gw:wrap-function
ws
'gnc:close-gui-component
'<gw:void>
"gnc_close_gui_component"
'((<gw:int> component-id))
"Close a gui component by id.")
(gw:wrap-function
ws
'gnc:account-get-full-name
'(<gw:mchars> caller-owned)
"gnc_account_get_full_name"
'((<gnc:Account*> account))
"Return the fully-qualified name of the account.")
(gw:wrap-function
ws
'gnc:default-print-info
'<gnc:print-amount-info-scm>
"gnc_default_print_info"
'((<gw:bool> use_symbol))
"Return the default print info object.")
(gw:wrap-function
ws
'gnc:commodity-print-info
'<gnc:print-amount-info-scm>
"gnc_commodity_print_info"
'((<gnc:commodity*> commodity) (<gw:bool> use_symbol))
"Return the default print info for commodity.")
(gw:wrap-function
ws
'gnc:account-print-info
'<gnc:print-amount-info-scm>
"gnc_account_print_info"
'((<gnc:Account*> account) (<gw:bool> use_symbol))
"Return a print info for printing account balances.")
(gw:wrap-function
ws
'gnc:split-amount-print-info
'<gnc:print-amount-info-scm>
"gnc_split_amount_print_info"
'((<gnc:Split*> split) (<gw:bool> use_symbol))
"Return a print info for printing split amounts.")
(gw:wrap-function
ws
'gnc:split-value-print-info
'<gnc:print-amount-info-scm>
"gnc_split_value_print_info"
'((<gnc:Split*> split) (<gw:bool> use_symbol))
"Return a print info for print split value quantities.")
(gw:wrap-function
ws
'gnc:share-print-info-places
'<gnc:print-amount-info-scm>
"gnc_share_print_info_places"
'((<gw:int> decplaces))
"Return a print info for printing share quantities to 'n' places.")
(gw:wrap-function
ws
'gnc:default-share-print-info
'<gnc:print-amount-info-scm>
"gnc_default_share_print_info"
'()
"Return a print info for printing generic share quantities.")
(gw:wrap-function
ws
'gnc:default-price-print-info
'<gnc:print-amount-info-scm>
"gnc_default_price_print_info"
'()
"Return a print info for printing generic price quantities.")
(gw:wrap-function
ws
'gnc:account-reverse-balance?
'<gw:bool>
"gnc_reverse_balance"
'((<gnc:Account*> account))
"Given an account, find out whether the balance should be reversed for display")
(gw:wrap-function
ws
'gnc:is-euro-currency
'<gw:bool>
"gnc_is_euro_currency"
'((<gnc:commodity*> currency))
"Check if a given currency is a EURO currency")
(gw:wrap-function
ws
'gnc:is-euro-currency-code
'<gw:bool>
"gnc_is_euro_currency_code"
'(((<gw:mchars> caller-owned const) str))
"Check if a given currency is a EURO currency")
(gw:wrap-function
ws
'gnc:convert-to-euro
'<gnc:numeric>
"gnc_convert_to_euro"
'((<gnc:commodity*> currency) (<gnc:numeric> value))
"Convert the value from the given currency to EURO")
(gw:wrap-function
ws
'gnc:convert-from-euro
'<gnc:numeric>
"gnc_convert_from_euro"
'((<gnc:commodity*> currency) (<gnc:numeric> value))
"Convert the value from EURO to the given currency")
(gw:wrap-function
ws
'gnc:euro-currency-get-rate
'<gnc:numeric>
"gnc_euro_currency_get_rate"
'((<gnc:commodity*> currency))
"Returns the exchange rate from the given currency to EURO")
(gw:wrap-function
ws
'gnc:get-euro
'<gnc:commodity*>
"gnc_get_euro"
'()
"Returns the commodity EURO")
(gw:wrap-function
ws
'gnc:commodity-table-get-quotable-commodities-info
'(gw:glist-of <gnc:quote-info-scm> caller-owned)
"gnc_commodity_table_get_quotable_commodities"
'((<gnc:commodity-table*> table))
"Return a list of all the quotable commodities in a given namespace in the table.")
(gw:wrap-function
ws
'gnc:accounting-period-start
'<gw:int>
"gnc_accounting_period_fiscal_start"
'()
"Returns the beginning of the preferred accounting period")
(gw:wrap-function
ws
'gnc:accounting-period-end
'<gw:int>
"gnc_accounting_period_fiscal_end"
'()
"Returns the end of the preferred accounting period"))

View File

@@ -17,6 +17,6 @@
(define (gnc:hook-run-danglers hook . args) (define (gnc:hook-run-danglers hook . args)
(if (null? args) (if (null? args)
(set! args #f) (set! args '())
(set! args (car args))) (set! args (car args)))
(gnc:hook-run-danglers-real hook args)) (gnc-hook-run hook args))

View File

@@ -1,61 +0,0 @@
;; Code for the kvp/option registry
;;
;; Copyright (C) 2002, Derek Atkins <derek@ihtfp.com>
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, contact:
;;
;; Free Software Foundation Voice: +1-617-542-5942
;; 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
;; Boston, MA 02110-1301, USA gnu@gnu.org
(use-modules (ice-9 slib))
(require 'hash)
(define gnc:*kvp-option-path* '("options"))
(define gnc:*kvp-option-registry* (make-hash-table 23))
(define (get-ref id-type)
(let ((gen-list (hash-ref gnc:*kvp-option-registry* id-type)))
(if gen-list gen-list '())))
;;
;; the generator should be a procedure that takes one argument,
;; an options object. The procedure should fill in the options with
;; its defined kvp options.
;;
(define (gnc:register-kvp-option-generator id-type generator)
(let ((gen-list (get-ref id-type)))
(hash-set! gnc:*kvp-option-registry*
id-type (append gen-list (list generator)))))
(define (gnc:unregister-kvp-option-generator id-type generator)
(let ((gen-list (get-ref id-type)))
(hash-set! gnc:*kvp-option-registry*
id-type (delq! generator gen-list))))
;;
;; create a new options object for the requested type
;;
(define (gnc:make-kvp-options id-type)
(let ((gen-list (get-ref id-type))
(options (gnc:new-options)))
(map
(lambda (generator)
(generator options))
gen-list)
options))

View File

@@ -34,7 +34,7 @@
#include "qof.h" #include "qof.h"
#include "guile-mappings.h" #include "guile-mappings.h"
#include <g-wrap-wct.h> #include "swig-runtime.h"
/* TODO: /* TODO:
@@ -267,23 +267,12 @@ gnc_option_db_find (SCM guile_options)
/* Create an option DB for a particular data type */ /* Create an option DB for a particular data type */
GNCOptionDB * GNCOptionDB *
gnc_option_db_new_for_type(SCM id_type) gnc_option_db_new_for_type(QofIdType id_type)
{ {
static SCM make_option_proc = SCM_UNDEFINED;
SCM options; SCM options;
if (!id_type) return NULL; if (!id_type) return NULL;
options = gnc_make_kvp_options(id_type);
if (make_option_proc == SCM_UNDEFINED) {
make_option_proc = scm_c_eval_string("gnc:make-kvp-options");
if (!SCM_PROCEDUREP (make_option_proc)) {
PERR ("not a procedure\n");
make_option_proc = SCM_UNDEFINED;
return NULL;
}
}
options = scm_call_1 (make_option_proc, id_type);
return gnc_option_db_new (options); return gnc_option_db_new (options);
} }
@@ -312,8 +301,7 @@ gnc_option_db_load_from_kvp(GNCOptionDB* odb, kvp_frame *slots)
return; return;
} }
} }
scm_slots = SWIG_NewPointerObj(slots, SWIG_TypeQuery("_p_KvpFrame"), 0);
scm_slots = gw_wcp_assimilate_ptr (slots, scm_c_eval_string("<gnc:kvp-frame*>"));
scm_call_3 (kvp_to_scm, odb->guile_options, scm_slots, kvp_option_path); scm_call_3 (kvp_to_scm, odb->guile_options, scm_slots, kvp_option_path);
} }
@@ -344,7 +332,7 @@ gnc_option_db_save_to_kvp(GNCOptionDB* odb, kvp_frame *slots)
} }
} }
scm_slots = gw_wcp_assimilate_ptr (slots, scm_c_eval_string("<gnc:kvp-frame*>")); scm_slots = SWIG_NewPointerObj(slots, SWIG_TypeQuery("p_KvpFrame"), 0);
scm_call_3 (scm_to_kvp, odb->guile_options, scm_slots, kvp_option_path); scm_call_3 (scm_to_kvp, odb->guile_options, scm_slots, kvp_option_path);
} }
@@ -443,9 +431,6 @@ gnc_option_db_register_change_callback(GNCOptionDB *odb,
const char *section, const char *section,
const char *name) const char *name)
{ {
static SCM void_type = SCM_UNDEFINED;
static SCM callback_type = SCM_UNDEFINED;
SCM register_proc; SCM register_proc;
SCM arg; SCM arg;
SCM args; SCM args;
@@ -461,18 +446,6 @@ gnc_option_db_register_change_callback(GNCOptionDB *odb,
return SCM_UNDEFINED; return SCM_UNDEFINED;
} }
if(void_type == SCM_UNDEFINED) {
void_type = scm_c_eval_string("<gw:void*>");
/* don't really need this - types are bound globally anyway. */
if(void_type != SCM_UNDEFINED) scm_gc_protect_object(void_type);
}
if(callback_type == SCM_UNDEFINED) {
callback_type = scm_c_eval_string("<gnc:OptionChangeCallback>");
/* don't really need this - types are bound globally anyway. */
if(callback_type != SCM_UNDEFINED)
scm_gc_protect_object(callback_type);
}
/* Now build the args list for apply */ /* Now build the args list for apply */
args = SCM_EOL; args = SCM_EOL;
@@ -480,11 +453,12 @@ gnc_option_db_register_change_callback(GNCOptionDB *odb,
args = scm_cons(odb->guile_options, args); args = scm_cons(odb->guile_options, args);
/* next the data */ /* next the data */
arg = gw_wcp_assimilate_ptr(data, void_type); arg = SWIG_NewPointerObj(data, SWIG_TypeQuery("_p_void"), 0);
args = scm_cons(arg, args); args = scm_cons(arg, args);
/* next the callback */ /* next the callback */
arg = gw_wcp_assimilate_ptr(callback, callback_type); arg = SWIG_NewPointerObj(
callback, SWIG_TypeQuery("GNCOptionChangeCallback"), 0);
args = scm_cons(arg, args); args = scm_cons(arg, args);
/* next the name */ /* next the name */
@@ -1040,7 +1014,6 @@ gnc_option_get_account_type_list(GNCOption *option)
{ {
SCM pair; SCM pair;
SCM lst; SCM lst;
SCM conv_func;
GList *type_list = NULL; GList *type_list = NULL;
initialize_getters(); initialize_getters();
@@ -1048,12 +1021,6 @@ gnc_option_get_account_type_list(GNCOption *option)
pair = scm_call_1(getters.option_data, option->guile_option); pair = scm_call_1(getters.option_data, option->guile_option);
lst = SCM_CDR(pair); lst = SCM_CDR(pair);
conv_func = scm_c_eval_string ("gw:enum-<gnc:AccountType>-val->int");
if (!SCM_PROCEDUREP (conv_func)) {
PERR ("Cannot obtain conv_func");
return NULL;
}
while (!SCM_NULLP (lst)) { while (!SCM_NULLP (lst)) {
GNCAccountType type; GNCAccountType type;
SCM item; SCM item;
@@ -1062,8 +1029,6 @@ gnc_option_get_account_type_list(GNCOption *option)
item = SCM_CAR (lst); item = SCM_CAR (lst);
lst = SCM_CDR (lst); lst = SCM_CDR (lst);
item = scm_call_1(conv_func, item);
if (SCM_FALSEP (scm_integer_p (item))) { if (SCM_FALSEP (scm_integer_p (item))) {
PERR ("Invalid type"); PERR ("Invalid type");
} else { } else {
@@ -1451,7 +1416,7 @@ gnc_option_db_clean(GNCOptionDB *odb)
* Returns: nothing * * Returns: nothing *
\********************************************************************/ \********************************************************************/
void void
gncp_option_db_register_option(GNCOptionDBHandle handle, SCM guile_option) gnc_option_db_register_option(GNCOptionDBHandle handle, SCM guile_option)
{ {
GNCOptionDB *odb; GNCOptionDB *odb;
GNCOption *option; GNCOption *option;
@@ -2816,3 +2781,51 @@ SCM gnc_dateformat_option_set_value(QofDateFormat format, GNCDateMonthFormat mon
return value; return value;
} }
/* For now, this is global, just like when it was in guile.
But, it should be make per-book. */
static GHashTable *kvp_registry = NULL;
static void
init_table(void)
{
if (!kvp_registry)
kvp_registry = g_hash_table_new(g_str_hash, g_str_equal);
}
/*
* the generator should be a procedure that takes one argument,
* an options object. The procedure should fill in the options with
* its defined kvp options.
*/
void
gnc_register_kvp_option_generator(QofIdType id_type, SCM generator)
{
GList *list;
init_table();
list = g_hash_table_lookup(kvp_registry, id_type);
list = g_list_prepend(list, generator);
g_hash_table_insert(kvp_registry, (gpointer) id_type, list);
scm_gc_protect_object(generator);
}
/* create a new options object for the requested type */
SCM
gnc_make_kvp_options(QofIdType id_type)
{
GList *list, *p;
SCM gnc_new_options = SCM_UNDEFINED;
SCM options = SCM_UNDEFINED;
init_table();
list = g_hash_table_lookup(kvp_registry, id_type);
gnc_new_options = scm_c_eval_string("gnc:new-options");
options = scm_call_0(gnc_new_options);
for (p = list; p; p = p->next) {
SCM generator = p->data;
scm_call_1(generator, options);
}
return options;
}

View File

@@ -65,14 +65,14 @@ void gnc_option_db_destroy(GNCOptionDB *odb);
/* Create an option DB for a particular type, and save/load from a kvp. /* Create an option DB for a particular type, and save/load from a kvp.
* This assumes the gnc:*kvp-option-path* location for the options * This assumes the gnc:*kvp-option-path* location for the options
* in the kvp. * in the kvp.
*
* Note: the id_type MUST be a reference to the actual SCM
* gnc:id-type. Just wrapping the type in scheme is *NOT* sufficient.
*/ */
GNCOptionDB * gnc_option_db_new_for_type(SCM id_type); GNCOptionDB * gnc_option_db_new_for_type(QofIdType id_type);
void gnc_option_db_load_from_kvp(GNCOptionDB* odb, kvp_frame *slots); void gnc_option_db_load_from_kvp(GNCOptionDB* odb, kvp_frame *slots);
void gnc_option_db_save_to_kvp(GNCOptionDB* odb, kvp_frame *slots); void gnc_option_db_save_to_kvp(GNCOptionDB* odb, kvp_frame *slots);
void gnc_register_kvp_option_generator(QofIdType id_type, SCM generator);
SCM gnc_make_kvp_options(QofIdType id_type);
void gnc_option_db_set_ui_callbacks (GNCOptionDB *odb, void gnc_option_db_set_ui_callbacks (GNCOptionDB *odb,
GNCOptionGetUIValue get_ui_value, GNCOptionGetUIValue get_ui_value,
GNCOptionSetUIValue set_ui_value, GNCOptionSetUIValue set_ui_value,
@@ -260,10 +260,10 @@ SCM gnc_dateformat_option_set_value(QofDateFormat format, GNCDateMonthFormat mon
gboolean years, const char *custom); gboolean years, const char *custom);
/* private */ void gnc_option_db_register_option(GNCOptionDBHandle handle,
void gncp_option_db_register_option(GNCOptionDBHandle handle, SCM guile_option);
SCM guile_option);
/* private */
void gncp_option_invoke_callback(GNCOptionChangeCallback callback, void gncp_option_invoke_callback(GNCOptionChangeCallback callback,
gpointer data); gpointer data);

View File

@@ -196,9 +196,9 @@
(lambda (x) (set! value x)) (lambda (x) (set! value x))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
(lambda (x) (lambda (x)
@@ -220,9 +220,9 @@
(lambda (x) (set! value x)) (lambda (x) (set! value x))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
(lambda (x) (lambda (x)
@@ -254,9 +254,9 @@
(lambda (x) (set! value x)) (lambda (x) (set! value x))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
(lambda (x) (lambda (x)
@@ -276,12 +276,12 @@
(define (currency->scm currency) (define (currency->scm currency)
(if (string? currency) (if (string? currency)
currency currency
(gnc:commodity-get-mnemonic currency))) (gnc-commodity-get-mnemonic currency)))
(define (scm->currency currency) (define (scm->currency currency)
(if (string? currency) (if (string? currency)
(gnc:commodity-table-lookup (gnc-commodity-table-lookup
(gnc:book-get-commodity-table (gnc:get-current-book)) (gnc-commodity-table-get-table (gnc-get-current-book))
GNC_COMMODITY_NS_CURRENCY currency) GNC_COMMODITY_NS_CURRENCY currency)
currency)) currency))
@@ -293,9 +293,9 @@
(lambda (x) (set! value (currency->scm x))) (lambda (x) (set! value (currency->scm x)))
(lambda () (scm->currency default-value)) (lambda () (scm->currency default-value))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
(lambda (x) (list #t x)) (lambda (x) (list #t x))
@@ -312,14 +312,14 @@
(define (budget->guid budget) (define (budget->guid budget)
(if (string? budget) (if (string? budget)
budget budget
(gnc:budget-get-guid budget))) (gncBudgetGetGUID budget)))
(define (guid->budget budget) (define (guid->budget budget)
(if (string? budget) (if (string? budget)
(gnc:budget-lookup budget (gnc:get-current-book)) (gnc-budget-lookup budget (gnc-get-current-book))
budget)) budget))
(let* ((default-value (gnc:budget-get-default (gnc:get-current-book))) (let* ((default-value (gnc-budget-get-default (gnc-get-current-book)))
(value (budget->guid default-value)) (value (budget->guid default-value))
(option-set #f) (option-set #f)
(value->string (lambda () (value->string (lambda ()
@@ -340,11 +340,11 @@
(set! option-set #t)) ;; setter (set! option-set #t)) ;; setter
(lambda () (lambda ()
(guid->budget (guid->budget
(gnc:budget-get-default (gnc:get-current-book)))) ;; default-getter (gnc-budget-get-default (gnc-get-current-book)))) ;; default-getter
(gnc:restore-form-generator value->string) ;; ?? (gnc:restore-form-generator value->string) ;; ??
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
(lambda (x) (list #t x)) ;; value-validator (lambda (x) (list #t x)) ;; value-validator
@@ -365,12 +365,12 @@
GNC_COMMODITY_NS_CURRENCY GNC_COMMODITY_NS_CURRENCY
commodity) commodity)
(list 'commodity-scm (list 'commodity-scm
(gnc:commodity-get-namespace commodity) (gnc-commodity-get-namespace commodity)
(gnc:commodity-get-mnemonic commodity)))) (gnc-commodity-get-mnemonic commodity))))
(define (scm->commodity scm) (define (scm->commodity scm)
(gnc:commodity-table-lookup (gnc-commodity-table-lookup
(gnc:book-get-commodity-table (gnc:get-current-book)) (gnc-commodity-table-get-table (gnc-get-current-book))
(cadr scm) (caddr scm))) (cadr scm) (caddr scm)))
(let* ((value (commodity->scm default-value)) (let* ((value (commodity->scm default-value))
@@ -385,11 +385,11 @@
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (lambda (f p)
(gnc:kvp-frame-set-slot-path f (cadr value) (append p '("ns"))) (kvp-frame-set-slot-path-gslist f (cadr value) (append p '("ns")))
(gnc:kvp-frame-set-slot-path f (caddr value) (append p '("monic")))) (kvp-frame-set-slot-path-gslist f (caddr value) (append p '("monic"))))
(lambda (f p) (lambda (f p)
(let ((ns (gnc:kvp-frame-get-slot-path f (append p '("ns")))) (let ((ns (kvp-frame-get-slot-path-gslist f (append p '("ns"))))
(monic (gnc:kvp-frame-get-slot-path f (append p '("monic"))))) (monic (kvp-frame-get-slot-path-gslist f (append p '("monic")))))
(if (and ns monic (string? ns) (string? monic)) (if (and ns monic (string? ns) (string? monic))
(set! value (list 'commodity-scm ns monic))))) (set! value (list 'commodity-scm ns monic)))))
(lambda (x) (list #t x)) (lambda (x) (list #t x))
@@ -443,9 +443,9 @@
(setter-function-called-cb x))) (setter-function-called-cb x)))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (boolean? v) (not (equal? v default-value))) (if (and v (boolean? v) (not (equal? v default-value)))
(set! value v)))) (set! value v))))
(lambda (x) (lambda (x)
@@ -517,16 +517,16 @@
default-getter default-getter
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (lambda (f p)
(gnc:kvp-frame-set-slot-path f (symbol->string (car value)) (kvp-frame-set-slot-path-gslist f (symbol->string (car value))
(append p '("type"))) (append p '("type")))
(gnc:kvp-frame-set-slot-path f (kvp-frame-set-slot-path-gslist f
(if (symbol? (cdr value)) (if (symbol? (cdr value))
(symbol->string (cdr value)) (symbol->string (cdr value))
(cdr value)) (cdr value))
(append p '("value")))) (append p '("value"))))
(lambda (f p) (lambda (f p)
(let ((t (gnc:kvp-frame-get-slot-path f (append p '("type")))) (let ((t (kvp-frame-get-slot-path-gslist f (append p '("type"))))
(v (gnc:kvp-frame-get-slot-path f (append p '("value"))))) (v (kvp-frame-get-slot-path-gslist f (append p '("value")))))
(if (and t v (string? t)) (if (and t v (string? t))
(set! value (cons (string->symbol t) (set! value (cons (string->symbol t)
(if (string? v) (string->symbol v) v)))))) (if (string? v) (string->symbol v) v))))))
@@ -613,11 +613,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:account-get-guid item))) (gncAccountGetGUID item)))
(define (convert-to-account item) (define (convert-to-account item)
(if (string? item) (if (string? item)
(gnc:account-lookup item (gnc:get-current-book)) (xaccAccountLookup item (gnc-get-current-book))
item)) item))
(let* ((option (map convert-to-guid (default-getter))) (let* ((option (map convert-to-guid (default-getter)))
@@ -640,8 +640,8 @@
(if (not account-list) (set! account-list (default-getter))) (if (not account-list) (set! account-list (default-getter)))
(set! account-list (set! account-list
(filter (lambda (x) (if (string? x) (filter (lambda (x) (if (string? x)
(gnc:account-lookup (xaccAccountLookup
x (gnc:get-current-book)) x (gnc-get-current-book))
x)) account-list)) x)) account-list))
(let* ((result (validator account-list)) (let* ((result (validator account-list))
(valid (car result)) (valid (car result))
@@ -657,20 +657,20 @@
(define (save-acc list count) (define (save-acc list count)
(if (not (null? list)) (if (not (null? list))
(let ((key (string-append "acc" (gnc:value->string count)))) (let ((key (string-append "acc" (gnc:value->string count))))
(gnc:kvp-frame-set-slot-path f (car list) (append p (list key))) (kvp-frame-set-slot-path-gslist f (car list) (append p (list key)))
(save-acc (cdr list) (+ 1 count))))) (save-acc (cdr list) (+ 1 count)))))
(if option-set (if option-set
(begin (begin
(gnc:kvp-frame-set-slot-path f (length option) (kvp-frame-set-slot-path-gslist f (length option)
(append p '("len"))) (append p '("len")))
(save-acc option 0)))) (save-acc option 0))))
(lambda (f p) (lambda (f p)
(let ((len (gnc:kvp-frame-get-slot-path f (append p '("len"))))) (let ((len (kvp-frame-get-slot-path-gslist f (append p '("len")))))
(define (load-acc count) (define (load-acc count)
(if (< count len) (if (< count len)
(let* ((key (string-append "acc" (gnc:value->string count))) (let* ((key (string-append "acc" (gnc:value->string count)))
(guid (gnc:kvp-frame-get-slot-path (guid (kvp-frame-get-slot-path-gslist
f (append p (list key))))) f (append p (list key)))))
(cons guid (load-acc (+ count 1)))) (cons guid (load-acc (+ count 1))))
'())) '()))
@@ -715,26 +715,27 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:account-get-guid item))) (gncAccountGetGUID item)))
(define (convert-to-account item) (define (convert-to-account item)
(if (string? item) (if (string? item)
(gnc:account-lookup item (gnc:get-current-book)) (xaccAccountLookup item (gnc-get-current-book))
item)) item))
(define (find-first-account) (define (find-first-account)
(define (find-first account-list) (define (find-first account-list)
(if (null? account-list) (if (null? account-list)
#f '()
(let* ((this-account (car account-list)) (let* ((this-account (car account-list))
(account-type (gw:enum-<gnc:AccountType>-val->sym (account-type (xaccAccountGetType this-account)))
(gnc:account-get-type this-account) #f))) (if (if (null? acct-type-list)
(if (if (null? acct-type-list) #t (member account-type acct-type-list)) #t
(member account-type acct-type-list))
this-account this-account
(find-first (cdr account-list)))))) (find-first (cdr account-list))))))
(let* ((current-group (gnc:get-current-group)) (let* ((current-group (gnc-get-current-group))
(account-list (gnc:group-get-subaccounts current-group))) (account-list (xaccGroupGetSubAccountsSorted current-group)))
(find-first account-list))) (find-first account-list)))
(define (get-default) (define (get-default)
@@ -771,9 +772,9 @@
(gnc:error "Illegal account value set")))) (gnc:error "Illegal account value set"))))
(lambda () (convert-to-account (get-default))) (lambda () (convert-to-account (get-default)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f value p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f value p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value v)))) (set! value v))))
validator validator
@@ -850,9 +851,9 @@
(gnc:error "Illegal Multichoice option set"))) (gnc:error "Illegal Multichoice option set")))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f (symbol->string value) p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f (symbol->string value) p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value (string->symbol v))))) (set! value (string->symbol v)))))
(lambda (x) (lambda (x)
@@ -936,9 +937,9 @@
(gnc:error "Illegal Radiobutton option set"))) (gnc:error "Illegal Radiobutton option set")))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f (symbol->string value) p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f (symbol->string value) p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(set! value (string->symbol v))))) (set! value (string->symbol v)))))
(lambda (x) (lambda (x)
@@ -1002,16 +1003,16 @@
(define (save-item list count) (define (save-item list count)
(if (not (null? list)) (if (not (null? list))
(let ((key (string-append "item" (gnc:value->string count)))) (let ((key (string-append "item" (gnc:value->string count))))
(gnc:kvp-frame-set-slot-path f (car list) (append p (list key))) (kvp-frame-set-slot-path-gslist f (car list) (append p (list key)))
(save-item (cdr list) (+ 1 count))))) (save-item (cdr list) (+ 1 count)))))
(gnc:kvp-frame-set-slot-path f (length value) (append p '("len"))) (kvp-frame-set-slot-path-gslist f (length value) (append p '("len")))
(save-item value 0)) (save-item value 0))
(lambda (f p) (lambda (f p)
(let ((len (gnc:kvp-frame-get-slot-path f (append p '("len"))))) (let ((len (kvp-frame-get-slot-path-gslist f (append p '("len")))))
(define (load-item count) (define (load-item count)
(if (< count len) (if (< count len)
(let* ((key (string-append "item" (gnc:value->string count))) (let* ((key (string-append "item" (gnc:value->string count)))
(val (gnc:kvp-frame-get-slot-path (val (kvp-frame-get-slot-path-gslist
f (append p (list key))))) f (append p (list key)))))
(cons val (load-item (+ count 1)))) (cons val (load-item (+ count 1))))
'())) '()))
@@ -1050,9 +1051,9 @@
(lambda (x) (set! value x)) (lambda (x) (set! value x))
(lambda () default-value) (lambda () default-value)
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f (symbol->string value) p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f (symbol->string value) p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (number? v)) (if (and v (number? v))
(set! value v)))) (set! value v))))
(lambda (x) (lambda (x)
@@ -1089,16 +1090,16 @@
default-value) default-value)
(let* ((value (if (list? default-value) (let* ((value (if (list? default-value)
default-value default-value
(gnc:query->scm default-value))) (gnc-query2scm default-value)))
(value->string (lambda () (value->string (lambda ()
(string-append "'" (gnc:value->string value))))) (string-append "'" (gnc:value->string value)))))
(gnc:make-option (gnc:make-option
section name "" 'query #f section name "" 'query #f
(lambda () value) (lambda () value)
(lambda (x) (set! value (if (list? x) x (gnc:query->scm x)))) (lambda (x) (set! value (if (list? x) x (gnc-query2scm x))))
(lambda () (if (list? default-value) (lambda () (if (list? default-value)
default-value default-value
(gnc:query->scm default-value))) (gnc-query2scm default-value)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
#f #f
#f #f
@@ -1210,18 +1211,18 @@
(lambda () (def-value)) (lambda () (def-value))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (lambda (f p)
(gnc:kvp-frame-set-slot-path (kvp-frame-set-slot-path-gslist
f (symbol->string (car value)) (append p '("fmt"))) f (symbol->string (car value)) (append p '("fmt")))
(gnc:kvp-frame-set-slot-path (kvp-frame-set-slot-path-gslist
f (symbol->string (cadr value)) (append p '("month"))) f (symbol->string (cadr value)) (append p '("month")))
(gnc:kvp-frame-set-slot-path (kvp-frame-set-slot-path-gslist
f (if (caddr value) 1 0) (append p '("years"))) f (if (caddr value) 1 0) (append p '("years")))
(gnc:kvp-frame-set-slot-path f (cadddr value) (append p '("custom")))) (kvp-frame-set-slot-path-gslist f (cadddr value) (append p '("custom"))))
(lambda (f p) (lambda (f p)
(let ((fmt (gnc:kvp-frame-get-slot-path f (append p '("fmt")))) (let ((fmt (kvp-frame-get-slot-path-gslist f (append p '("fmt"))))
(month (gnc:kvp-frame-get-slot-path f (append p '("month")))) (month (kvp-frame-get-slot-path-gslist f (append p '("month"))))
(years (gnc:kvp-frame-get-slot-path f (append p '("years")))) (years (kvp-frame-get-slot-path-gslist f (append p '("years"))))
(custom (gnc:kvp-frame-get-slot-path f (append p '("custom"))))) (custom (kvp-frame-get-slot-path-gslist f (append p '("custom")))))
(if (and (if (and
fmt (string? fmt) fmt (string? fmt)
month (string? month) month (string? month)
@@ -1447,7 +1448,7 @@
((options 'register-callback) section name callback)) ((options 'register-callback) section name callback))
(define (gnc:options-register-c-callback section name c-callback data options) (define (gnc:options-register-c-callback section name c-callback data options)
(let ((callback (lambda () (gnc:option-invoke-callback c-callback data)))) (let ((callback (lambda () (gncp-option-invoke-callback c-callback data))))
((options 'register-callback) section name callback))) ((options 'register-callback) section name callback)))
(define (gnc:options-unregister-callback-id id options) (define (gnc:options-unregister-callback-id id options)
@@ -1467,7 +1468,7 @@
(define (gnc:options-scm->kvp options kvp-frame key-path clear-kvp?) (define (gnc:options-scm->kvp options kvp-frame key-path clear-kvp?)
(if clear-kvp? (if clear-kvp?
(gnc:kvp-frame-delete-at-path kvp-frame key-path)) (gnc-kvp-frame-delete-at-path kvp-frame key-path))
((options 'scm->kvp) kvp-frame key-path)) ((options 'scm->kvp) kvp-frame key-path))
(define (gnc:options-kvp->scm options kvp-frame key-path) (define (gnc:options-kvp->scm options kvp-frame key-path)
@@ -1507,7 +1508,7 @@
(define (gnc:send-options db_handle options) (define (gnc:send-options db_handle options)
(gnc:options-for-each (gnc:options-for-each
(lambda (option) (lambda (option)
(gnc:option-db-register-option db_handle option)) (gnc-option-db-register-option db_handle option))
options)) options))
(define (gnc:save-options options options-string file header truncate?) (define (gnc:save-options options options-string file header truncate?)

View File

@@ -19,7 +19,6 @@
(require 'sort) (require 'sort)
(require 'hash-table) (require 'hash-table)
(use-modules (g-wrapped gw-core-utils))
;; (define gnc:*double-entry-restriction* ;; (define gnc:*double-entry-restriction*
;; (gnc:make-config-var ;; (gnc:make-config-var
@@ -64,36 +63,36 @@
;;;;;; Create config vars ;;;;;; Create config vars
(define gnc:*debit-strings* (define gnc:*debit-strings*
(list (cons 'ACCT_TYPE_NONE (N_ "Funds In")) (list (cons ACCT-TYPE-NONE (N_ "Funds In"))
(cons 'ACCT_TYPE_BANK (N_ "Deposit")) (cons ACCT-TYPE-BANK (N_ "Deposit"))
(cons 'ACCT_TYPE_CASH (N_ "Receive")) (cons ACCT-TYPE-CASH (N_ "Receive"))
(cons 'ACCT_TYPE_CREDIT (N_ "Payment")) (cons ACCT-TYPE-CREDIT (N_ "Payment"))
(cons 'ACCT_TYPE_ASSET (N_ "Increase")) (cons ACCT-TYPE-ASSET (N_ "Increase"))
(cons 'ACCT_TYPE_LIABILITY (N_ "Decrease")) (cons ACCT-TYPE-LIABILITY (N_ "Decrease"))
(cons 'ACCT_TYPE_STOCK (N_ "Buy")) (cons ACCT-TYPE-STOCK (N_ "Buy"))
(cons 'ACCT_TYPE_MUTUAL (N_ "Buy")) (cons ACCT-TYPE-MUTUAL (N_ "Buy"))
(cons 'ACCT_TYPE_CURRENCY (N_ "Buy")) (cons ACCT-TYPE-CURRENCY (N_ "Buy"))
(cons 'ACCT_TYPE_INCOME (N_ "Charge")) (cons ACCT-TYPE-INCOME (N_ "Charge"))
(cons 'ACCT_TYPE_EXPENSE (N_ "Expense")) (cons ACCT-TYPE-EXPENSE (N_ "Expense"))
(cons 'ACCT_TYPE_PAYABLE (N_ "Payment")) (cons ACCT-TYPE-PAYABLE (N_ "Payment"))
(cons 'ACCT_TYPE_RECEIVABLE (N_ "Invoice")) (cons ACCT-TYPE-RECEIVABLE (N_ "Invoice"))
(cons 'ACCT_TYPE_EQUITY (N_ "Decrease")))) (cons ACCT-TYPE-EQUITY (N_ "Decrease"))))
(define gnc:*credit-strings* (define gnc:*credit-strings*
(list (cons 'ACCT_TYPE_NONE (N_ "Funds Out")) (list (cons ACCT-TYPE-NONE (N_ "Funds Out"))
(cons 'ACCT_TYPE_BANK (N_ "Withdrawal")) (cons ACCT-TYPE-BANK (N_ "Withdrawal"))
(cons 'ACCT_TYPE_CASH (N_ "Spend")) (cons ACCT-TYPE-CASH (N_ "Spend"))
(cons 'ACCT_TYPE_CREDIT (N_ "Charge")) (cons ACCT-TYPE-CREDIT (N_ "Charge"))
(cons 'ACCT_TYPE_ASSET (N_ "Decrease")) (cons ACCT-TYPE-ASSET (N_ "Decrease"))
(cons 'ACCT_TYPE_LIABILITY (N_ "Increase")) (cons ACCT-TYPE-LIABILITY (N_ "Increase"))
(cons 'ACCT_TYPE_STOCK (N_ "Sell")) (cons ACCT-TYPE-STOCK (N_ "Sell"))
(cons 'ACCT_TYPE_MUTUAL (N_ "Sell")) (cons ACCT-TYPE-MUTUAL (N_ "Sell"))
(cons 'ACCT_TYPE_CURRENCY (N_ "Sell")) (cons ACCT-TYPE-CURRENCY (N_ "Sell"))
(cons 'ACCT_TYPE_INCOME (N_ "Income")) (cons ACCT-TYPE-INCOME (N_ "Income"))
(cons 'ACCT_TYPE_EXPENSE (N_ "Rebate")) (cons ACCT-TYPE-EXPENSE (N_ "Rebate"))
(cons 'ACCT_TYPE_PAYABLE (N_ "Bill")) (cons ACCT-TYPE-PAYABLE (N_ "Bill"))
(cons 'ACCT_TYPE_RECEIVABLE (N_ "Payment")) (cons ACCT-TYPE-RECEIVABLE (N_ "Payment"))
(cons 'ACCT_TYPE_EQUITY (N_ "Increase")))) (cons ACCT-TYPE-EQUITY (N_ "Increase"))))
(define (gnc:get-debit-string type) (define (gnc:get-debit-string type)
(_ (assoc-ref gnc:*debit-strings* type))) (_ (assoc-ref gnc:*debit-strings* type)))

View File

@@ -1,7 +1,6 @@
TESTS = \ TESTS = \
test-link-module \ test-link-module \
test-load-module \ test-load-module \
test-component-manager \
test-exp-parser \ test-exp-parser \
test-scm-query-string \ test-scm-query-string \
test-print-parse-amount test-print-parse-amount
@@ -22,15 +21,14 @@ GNC_TEST_DEPS := @GNC_TEST_SRFI_LOAD_CMD@ \
--gnc-module-dir ${top_builddir}/src/app-utils \ --gnc-module-dir ${top_builddir}/src/app-utils \
--gnc-module-dir ${top_srcdir}/src/engine \ --gnc-module-dir ${top_srcdir}/src/engine \
--gnc-module-dir ${top_srcdir}/src/app-utils \ --gnc-module-dir ${top_srcdir}/src/app-utils \
--guile-load-dir ${G_WRAP_MODULE_DIR} \
--guile-load-dir ${top_srcdir}/src/scm \ --guile-load-dir ${top_srcdir}/src/scm \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--guile-load-dir ${top_builddir}/src/gnome-utils \ --guile-load-dir ${top_builddir}/src/gnome-utils \
--guile-load-dir ${top_builddir}/src/core-utils \
--guile-load-dir ${top_builddir}/src/gnome \ --guile-load-dir ${top_builddir}/src/gnome \
--library-dir ${top_builddir}/src/gnome-utils \ --library-dir ${top_builddir}/src/gnome-utils \
--library-dir ${top_builddir}/src/gnome \
--library-dir ${top_builddir}/lib/libqof/qof \ --library-dir ${top_builddir}/lib/libqof/qof \
--library-dir ${G_WRAP_LIB_DIR} --library-dir ${top_builddir}/src/gnome
TESTS_ENVIRONMENT := \ TESTS_ENVIRONMENT := \
$(shell ${top_srcdir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS}) $(shell ${top_srcdir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})
@@ -39,7 +37,6 @@ LDADD = \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/app-utils/libgncmod-app-utils.la \ ${top_builddir}/src/app-utils/libgncmod-app-utils.la \
${top_builddir}/src/engine/libgw-engine.la \
${top_builddir}/src/test-core/libgncmod-test.la \ ${top_builddir}/src/test-core/libgncmod-test.la \
${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \ ${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \
${top_builddir}/src/core-utils/libcore-utils.la \ ${top_builddir}/src/core-utils/libcore-utils.la \
@@ -55,8 +52,7 @@ noinst_PROGRAMS = \
test-print-queries test-print-queries
EXTRA_DIST = \ EXTRA_DIST = \
test-load-module \ test-load-module
test-component-manager
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src \ -I${top_srcdir}/src \

View File

@@ -1,49 +0,0 @@
#! /bin/bash
exec guile -s "$0"
!#
(use-modules (gnucash gnc-module))
(gnc:module-system-init)
(or (gnc:module-load "gnucash/app-utils" 0)
(error "can't load module"))
(let ((id #f)
(refresh-ran #f)
(close-ran #f))
(define (refresh-handler)
(set! refresh-ran #t))
(define (close-handler)
(set! close-ran #t)
(gnc:unregister-gui-component id))
(set! id (gnc:register-gui-component "test-class"
refresh-handler
close-handler))
(or (not (equal? id -1))
(error "can't register"))
(gnc:gui-refresh-all)
(or refresh-ran (error "refresh didn't run"))
(gnc:close-gui-component id)
(or close-ran (error "close didn't run"))
(set! refresh-ran #f)
(set! close-ran #f)
(gnc:gui-refresh-all)
(gnc:close-gui-component id)
(or (not (or refresh-ran close-ran))
(error "component not removed")))
(exit 0)
;; Local Variables:
;; mode: scheme
;; End:

View File

@@ -8,7 +8,7 @@ exec guile -s "$0"
(if (gnc:module-load "gnucash/app-utils" 0) (if (gnc:module-load "gnucash/app-utils" 0)
(begin (begin
(if (and (procedure? gnc:error->string) (if (and (procedure? gnc:error->string)
(procedure? gnc:guid-new) (procedure? gnc-default-currency)
(macro? N_) (macro? N_)
(string=? (N_ "foobar") "foobar")) (string=? (N_ "foobar") "foobar"))
(exit 0) (exit 0)

View File

@@ -181,11 +181,9 @@ GNC_TEST_DEPS := \
--gnc-module-dir ${top_builddir}/src/gnc-module \ --gnc-module-dir ${top_builddir}/src/gnc-module \
--gnc-module-dir ${top_builddir}/src/engine \ --gnc-module-dir ${top_builddir}/src/engine \
--gnc-module-dir ${top_srcdir}/src/gnc-module \ --gnc-module-dir ${top_srcdir}/src/gnc-module \
--gnc-module-dir ${top_srcdir}/src/engine \
--guile-load-dir ${G_WRAP_MODULE_DIR} \
--library-dir ${top_builddir}/src/backend/file \ --library-dir ${top_builddir}/src/backend/file \
--library-dir ${top_builddir}/lib/libqof/qof \ --library-dir ${top_builddir}/lib/libqof/qof \
--library-dir ${G_WRAP_LIB_DIR} --gnc-module-dir ${top_srcdir}/src/engine
TESTS_ENVIRONMENT := \ TESTS_ENVIRONMENT := \
GNC_ACCOUNT_PATH=${top_srcdir}/accounts/C \ GNC_ACCOUNT_PATH=${top_srcdir}/accounts/C \
@@ -219,8 +217,6 @@ noinst_HEADERS = test-file-stuff.h
LDADD = ${top_builddir}/src/test-core/libgncmod-test.la \ LDADD = ${top_builddir}/src/test-core/libgncmod-test.la \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/engine/libgw-engine.la \
${top_builddir}/src/engine/libgw-kvp.la \
${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \ ${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \
${top_builddir}/src/core-utils/libcore-utils.la \ ${top_builddir}/src/core-utils/libcore-utils.la \
./libgnc-test-file-stuff.la \ ./libgnc-test-file-stuff.la \

View File

@@ -8,9 +8,7 @@ GNC_TEST_DEPS := \
--gnc-module-dir ${top_builddir}/src/engine \ --gnc-module-dir ${top_builddir}/src/engine \
--guile-load-dir ${top_srcdir}/src/engine \ --guile-load-dir ${top_srcdir}/src/engine \
--gnc-module-dir ${top_builddir}/src/backend/file \ --gnc-module-dir ${top_builddir}/src/backend/file \
--gnc-module-dir ${top_builddir}/src/backend/postgres \ --gnc-module-dir ${top_builddir}/src/backend/postgres
--guile-load-dir ${G_WRAP_MODULE_DIR} \
--library-dir ${G_WRAP_LIB_DIR}
TESTS_ENVIRONMENT := \ TESTS_ENVIRONMENT := \
TEST_DB_SOCKET_DIR=`pwd`/gnc_test_db_sock \ TEST_DB_SOCKET_DIR=`pwd`/gnc_test_db_sock \
@@ -26,8 +24,6 @@ LDADD = ${top_builddir}/src/test-core/libgncmod-test.la \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/engine/libgw-engine.la \
${top_builddir}/src/engine/libgw-kvp.la \
${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \ ${top_builddir}/src/engine/test-core/libgncmod-test-engine.la \
-lltdl \ -lltdl \
-lpq -lpq

View File

@@ -31,8 +31,6 @@ gnucash: gnucash.in ${top_builddir}/config.status Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's#@-BIN_DIR-@#${bindir}#g' \ -e 's#@-BIN_DIR-@#${bindir}#g' \
-e 's#@-G_WRAP_MODULE_DIR-@#${G_WRAP_MODULE_DIR}#g' \
-e 's#@-G_WRAP_LIB_DIR-@#${G_WRAP_LIB_DIR}#g' \
-e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \ -e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \
-e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \ -e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \
-e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \ -e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \
@@ -46,8 +44,6 @@ gnucash-valgrind: gnucash-valgrind.in ${top_builddir}/config.status Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's#@-BIN_DIR-@#${bindir}#g' \ -e 's#@-BIN_DIR-@#${bindir}#g' \
-e 's#@-G_WRAP_MODULE_DIR-@#${G_WRAP_MODULE_DIR}#g' \
-e 's#@-G_WRAP_LIB_DIR-@#${G_WRAP_LIB_DIR}#g' \
-e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \ -e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \
-e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \ -e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \
-e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \ -e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \

View File

@@ -50,6 +50,9 @@
#include "gnc-plugin-file-history.h" #include "gnc-plugin-file-history.h"
#include "gnc-gconf-utils.h" #include "gnc-gconf-utils.h"
#include "dialog-new-user.h" #include "dialog-new-user.h"
#include "gnc-session.h"
#include "engine-helpers.h"
#include "swig-runtime.h"
#ifdef HAVE_GETTEXT #ifdef HAVE_GETTEXT
# include <libintl.h> # include <libintl.h>
@@ -103,28 +106,6 @@ envt_override()
help_path = path; help_path = path;
} }
static int error_in_scm_eval = FALSE;
static void
error_handler(const char *msg)
{
g_warning(msg);
error_in_scm_eval = TRUE;
}
static gboolean
try_load(gchar *fn)
{
g_message("looking for %s", fn);
if (g_file_test(fn, G_FILE_TEST_EXISTS)) {
g_message("trying to load %s", fn);
error_in_scm_eval = FALSE;
gfec_eval_file(fn, error_handler);
return !error_in_scm_eval;
}
return FALSE;
}
static gboolean static gboolean
try_load_config_array(const gchar *fns[]) try_load_config_array(const gchar *fns[])
{ {
@@ -133,7 +114,7 @@ try_load_config_array(const gchar *fns[])
for (i = 0; fns[i]; i++) { for (i = 0; fns[i]; i++) {
filename = gnc_build_dotgnucash_path(fns[i]); filename = gnc_build_dotgnucash_path(fns[i]);
if (try_load(filename)) { if (gfec_try_load(filename)) {
g_free(filename); g_free(filename);
return TRUE; return TRUE;
} }
@@ -160,7 +141,7 @@ load_system_config(void)
update_message("loading system configuration"); update_message("loading system configuration");
/* FIXME: use runtime paths from gnc-path.c here */ /* FIXME: use runtime paths from gnc-path.c here */
system_config = g_build_filename(config_path, "config", NULL); system_config = g_build_filename(config_path, "config", NULL);
is_system_config_loaded = try_load(system_config); is_system_config_loaded = gfec_try_load(system_config);
g_free(system_config); g_free(system_config);
} }
@@ -394,7 +375,8 @@ load_gnucash_modules()
static void static void
inner_main_add_price_quotes(void *closure, int argc, char **argv) inner_main_add_price_quotes(void *closure, int argc, char **argv)
{ {
SCM mod, add_quotes, scm_filename, scm_result; SCM mod, add_quotes, scm_book, scm_result = SCM_BOOL_F;
QofSession *session;
mod = scm_c_resolve_module("gnucash price-quotes"); mod = scm_c_resolve_module("gnucash price-quotes");
scm_set_current_module(mod); scm_set_current_module(mod);
@@ -404,22 +386,42 @@ inner_main_add_price_quotes(void *closure, int argc, char **argv)
qof_event_suspend(); qof_event_suspend();
scm_c_eval_string("(gnc:price-quotes-install-sources)"); scm_c_eval_string("(gnc:price-quotes-install-sources)");
if (gnc_quote_source_fq_installed()) { if (!gnc_quote_source_fq_installed()) {
add_quotes = scm_c_eval_string("gnc:add-quotes-to-book-at-url"); g_print(_("No quotes retrieved. Finance::Quote isn't "
scm_filename = scm_makfrom0str (add_quotes_file); "installed properly.\n"));
scm_result = scm_call_1(add_quotes, scm_filename); goto fail;
}
if (!SCM_NFALSEP(scm_result)) { add_quotes = scm_c_eval_string("gnc:book-add-quotes");
session = gnc_get_current_session();
if (!session) goto fail;
qof_session_begin(session, add_quotes_file, FALSE, FALSE);
if (qof_session_get_error(session) != ERR_BACKEND_NO_ERR) goto fail;
qof_session_load(session, NULL);
if (qof_session_get_error(session) != ERR_BACKEND_NO_ERR) goto fail;
scm_book = gnc_book_to_scm(qof_session_get_book(session));
scm_result = scm_call_2(add_quotes, SCM_BOOL_F, scm_book);
qof_session_save(session, NULL);
if (qof_session_get_error(session) != ERR_BACKEND_NO_ERR) goto fail;
qof_session_destroy(session);
if (!SCM_NFALSEP(scm_result)) {
g_error("Failed to add quotes to %s.", add_quotes_file); g_error("Failed to add quotes to %s.", add_quotes_file);
gnc_shutdown(1); goto fail;
}
} else {
g_print(_("No quotes retrieved. Finance::Quote isn't installed properly.\n"));
} }
qof_event_resume(); qof_event_resume();
gnc_shutdown(0); gnc_shutdown(0);
return; return;
fail:
if (session && qof_session_get_error(session) != ERR_BACKEND_NO_ERR)
g_error("Session Error: %s", qof_session_get_error_message(session));
qof_event_resume();
gnc_shutdown(1);
} }
static char * static char *

View File

@@ -8,7 +8,6 @@ export GUILE_WARN_DEPRECATED
GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@:${GNC_MODULE_PATH}" GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@:${GNC_MODULE_PATH}"
EXTRA_PATH="@-G_WRAP_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}:@-GNC_GUILE_MODULE_DIR-@" EXTRA_PATH="${EXTRA_PATH}:@-GNC_GUILE_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}:@-GNC_SCM_INSTALL_DIR-@" EXTRA_PATH="${EXTRA_PATH}:@-GNC_SCM_INSTALL_DIR-@"
GUILE_LOAD_PATH="${EXTRA_PATH}:${GUILE_LOAD_PATH}" GUILE_LOAD_PATH="${EXTRA_PATH}:${GUILE_LOAD_PATH}"
@@ -16,7 +15,6 @@ GUILE_LOAD_PATH="${EXTRA_PATH}:${GUILE_LOAD_PATH}"
EXTRA_LIBS="${GNC_MODULE_PATH}" EXTRA_LIBS="${GNC_MODULE_PATH}"
EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_LIB_INSTALLDIR-@" EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_LIB_INSTALLDIR-@"
EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_MODULE_DIR-@" EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_MODULE_DIR-@"
EXTRA_LIBS="${EXTRA_LIBS}:@-G_WRAP_LIB_DIR-@"
LD_LIBRARY_PATH="${EXTRA_LIBS}:${LD_LIBRARY_PATH}" LD_LIBRARY_PATH="${EXTRA_LIBS}:${LD_LIBRARY_PATH}"
LTDL_LIBRARY_PATH="${EXTRA_LIBS}:${LTDL_LIBRARY_PATH}" LTDL_LIBRARY_PATH="${EXTRA_LIBS}:${LTDL_LIBRARY_PATH}"

View File

@@ -8,7 +8,6 @@ export GUILE_WARN_DEPRECATED
GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@@-PATH_SEPARATOR-@${GNC_MODULE_PATH}" GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@@-PATH_SEPARATOR-@${GNC_MODULE_PATH}"
EXTRA_PATH="@-G_WRAP_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@@-GNC_GUILE_MODULE_DIR-@" EXTRA_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@@-GNC_GUILE_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@@-GNC_SCM_INSTALL_DIR-@" EXTRA_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@@-GNC_SCM_INSTALL_DIR-@"
GUILE_LOAD_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@${GUILE_LOAD_PATH}" GUILE_LOAD_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@${GUILE_LOAD_PATH}"
@@ -16,7 +15,6 @@ GUILE_LOAD_PATH="${EXTRA_PATH}@-PATH_SEPARATOR-@${GUILE_LOAD_PATH}"
EXTRA_LIBS="${GNC_MODULE_PATH}" EXTRA_LIBS="${GNC_MODULE_PATH}"
EXTRA_LIBS="${EXTRA_LIBS}@-PATH_SEPARATOR-@@-GNC_LIB_INSTALLDIR-@" EXTRA_LIBS="${EXTRA_LIBS}@-PATH_SEPARATOR-@@-GNC_LIB_INSTALLDIR-@"
EXTRA_LIBS="${EXTRA_LIBS}@-PATH_SEPARATOR-@@-GNC_MODULE_DIR-@" EXTRA_LIBS="${EXTRA_LIBS}@-PATH_SEPARATOR-@@-GNC_MODULE_DIR-@"
EXTRA_LIBS="${EXTRA_LIBS}@-PATH_SEPARATOR-@@-G_WRAP_LIB_DIR-@"
LD_LIBRARY_PATH="${EXTRA_LIBS}@-PATH_SEPARATOR-@${LD_LIBRARY_PATH}" LD_LIBRARY_PATH="${EXTRA_LIBS}@-PATH_SEPARATOR-@${LD_LIBRARY_PATH}"
LTDL_LIBRARY_PATH="${EXTRA_LIBS}@-PATH_SEPARATOR-@${LTDL_LIBRARY_PATH}" LTDL_LIBRARY_PATH="${EXTRA_LIBS}@-PATH_SEPARATOR-@${LTDL_LIBRARY_PATH}"

View File

@@ -31,8 +31,6 @@ CLEANFILES = guile
gnucash-env: gnucash-env.in ${top_builddir}/config.status Makefile gnucash-env: gnucash-env.in ${top_builddir}/config.status Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's#@-G_WRAP_MODULE_DIR-@#${G_WRAP_MODULE_DIR}#g' \
-e 's#@-G_WRAP_LIB_DIR-@#${G_WRAP_LIB_DIR}#g' \
-e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \ -e 's#@-GNC_GUILE_MODULE_DIR-@#${GNC_SHAREDIR}/guile-modules#g' \
-e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \ -e 's#@-GNC_SCM_INSTALL_DIR-@#${GNC_SCM_INSTALL_DIR}#g' \
-e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \ -e 's#@-GNC_LIB_INSTALLDIR-@#${libdir}#' \
@@ -47,8 +45,6 @@ gnucash-build-env: gnucash-build-env.in ${top_builddir}/config.status Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's#@-GNC_TEST_SRFI_LOAD_CMD-@#@GNC_TEST_SRFI_LOAD_CMD@#g' \ -e 's#@-GNC_TEST_SRFI_LOAD_CMD-@#@GNC_TEST_SRFI_LOAD_CMD@#g' \
-e 's#@-G_WRAP_MODULE_DIR-@#${G_WRAP_MODULE_DIR}#g' \
-e 's#@-G_WRAP_LIB_DIR-@#${G_WRAP_LIB_DIR}#g' \
-e 's#@-GNC_BUILDDIR-@#${PWD}/${top_builddir}#g' \ -e 's#@-GNC_BUILDDIR-@#${PWD}/${top_builddir}#g' \
-e 's#@-GNC_SRCDIR-@#${PWD}/${top_srcdir}#g' -e 's#@-GNC_SRCDIR-@#${PWD}/${top_srcdir}#g'
mv $@.tmp $@ mv $@.tmp $@

View File

@@ -10,8 +10,6 @@
top_srcdir="@-GNC_SRCDIR-@" top_srcdir="@-GNC_SRCDIR-@"
top_builddir="@-GNC_BUILDDIR-@" top_builddir="@-GNC_BUILDDIR-@"
G_WRAP_MODULE_DIR="@-G_WRAP_MODULE_DIR-@"
G_WRAP_LIB_DIR="@-G_WRAP_LIB_DIR-@"
if test "${GNC_CONFIG_PATH}"x = x if test "${GNC_CONFIG_PATH}"x = x
then then
@@ -33,8 +31,6 @@ fi
eval `@-GNC_SRCDIR-@/src/gnc-test-env @-GNC_TEST_SRFI_LOAD_CMD-@ \ eval `@-GNC_SRCDIR-@/src/gnc-test-env @-GNC_TEST_SRFI_LOAD_CMD-@ \
--library-dir ${top_builddir}/src/gnome \ --library-dir ${top_builddir}/src/gnome \
--library-dir ${G_WRAP_LIB_DIR} \
--guile-load-dir ${G_WRAP_MODULE_DIR} \
--guile-load-dir ${top_builddir}/src/scm \ --guile-load-dir ${top_builddir}/src/scm \
--guile-load-dir ${top_builddir}/lib/guile-www \ --guile-load-dir ${top_builddir}/lib/guile-www \
--guile-load-dir ${top_builddir}/src/gnome \ --guile-load-dir ${top_builddir}/src/gnome \

View File

@@ -6,7 +6,6 @@
GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@:${GNC_MODULE_PATH}" GNC_MODULE_PATH="@-GNC_PKGLIB_INSTALLDIR-@:${GNC_MODULE_PATH}"
EXTRA_PATH="@-G_WRAP_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}:@-GNC_GUILE_MODULE_DIR-@" EXTRA_PATH="${EXTRA_PATH}:@-GNC_GUILE_MODULE_DIR-@"
EXTRA_PATH="${EXTRA_PATH}:@-GNC_SCM_INSTALL_DIR-@" EXTRA_PATH="${EXTRA_PATH}:@-GNC_SCM_INSTALL_DIR-@"
@@ -15,7 +14,6 @@ GUILE_LOAD_PATH="${EXTRA_PATH}:${GUILE_LOAD_PATH}"
EXTRA_LIBS="${GNC_MODULE_PATH}" EXTRA_LIBS="${GNC_MODULE_PATH}"
EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_LIB_INSTALLDIR-@" EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_LIB_INSTALLDIR-@"
EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_MODULE_DIR-@" EXTRA_LIBS="${EXTRA_LIBS}:@-GNC_MODULE_DIR-@"
EXTRA_LIBS="${EXTRA_LIBS}:@-G_WRAP_LIB_DIR-@"
LD_LIBRARY_PATH="${EXTRA_LIBS}:${LD_LIBRARY_PATH}" LD_LIBRARY_PATH="${EXTRA_LIBS}:${LD_LIBRARY_PATH}"
LTDL_LIBRARY_PATH="${EXTRA_LIBS}:${LTDL_LIBRARY_PATH}" LTDL_LIBRARY_PATH="${EXTRA_LIBS}:${LTDL_LIBRARY_PATH}"

View File

@@ -1,18 +1,19 @@
SUBDIRS = . test file SUBDIRS = . test file
PWD := $(shell pwd) PWD := $(shell pwd)
pkglib_LTLIBRARIES = libgncmod-business-core.la libgw-business-core.la pkglib_LTLIBRARIES = libgncmod-business-core.la
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src \ -I${top_srcdir}/src \
-I${top_srcdir}/src/engine \ -I${top_srcdir}/src/engine \
-I${top_srcdir}/src/gnc-module \ -I${top_srcdir}/src/gnc-module \
${G_WRAP_COMPILE_ARGS} \
${GUILE_INCS} \ ${GUILE_INCS} \
${QOF_CFLAGS} \ ${QOF_CFLAGS} \
${GLIB_CFLAGS} ${GLIB_CFLAGS}
libgncmod_business_core_la_SOURCES = \ libgncmod_business_core_la_SOURCES = \
swig-business-core.c \
gncBusGuile.c \
businessmod-core.c \ businessmod-core.c \
gncAddress.c \ gncAddress.c \
gncBillTerm.c \ gncBillTerm.c \
@@ -57,7 +58,6 @@ noinst_HEADERS = \
libgncmod_business_core_la_LIBADD = \ libgncmod_business_core_la_LIBADD = \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${G_WRAP_LINK_ARGS} \
${QOF_LIBS} \ ${QOF_LIBS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \
@@ -65,43 +65,25 @@ libgncmod_business_core_la_LIBADD = \
# business-core-helpers.c # business-core-helpers.c
libgw_business_core_la_SOURCES = \ if BUILDING_FROM_SVN
gncBusGuile.c swig-business-core.c: business-core.i ${noinst_HEADERS}
$(SWIG) -guile $(SWIG_ARGS) -Linkage module \
nodist_libgw_business_core_la_SOURCES = \ -I${top_srcdir}/src/engine -o $@ $<
gw-business-core.c endif
libgw_business_core_la_LDFLAGS = ${G_WRAP_LINK_ARGS}
libgw_business_core_la_LIBADD = \
libgncmod-business-core.la \
${top_builddir}/src/engine/libgw-engine.la \
${top_builddir}/src/engine/libgncmod-engine.la \
${QOF_LIBS} \
${GLIB_LIBS}
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gncmod_DATA = business-core.scm gncmod_DATA = business-core.scm
gwmoddir = ${GNC_GWRAP_LIBDIR} EXTRA_DIST = business-core.i ${gncmod_DATA}
gwmod_DATA = \
gw-business-core-spec.scm
nodist_gwmod_DATA = \
gw-business-core.scm
EXTRA_DIST = \
${gncmod_DATA} \
${gwmod_DATA}
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#For compiling
SCM_FILE_LINKS = gw-business-core-spec.scm
#For executing test cases #For executing test cases
SCM_FILE_LINKS += ${gncmod_DATA} SCM_FILE_LINKS = ${gncmod_DATA}
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
@@ -110,25 +92,6 @@ endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done ) ( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: noinst_DATA = .scm-links
$(RM) -rf gnucash g-wrapped CLEANFILES = gnucash .scm-links ${SCM_FILE_LINKS}
MAINTAINERCLEANFILES = swig-business-core.c
.INTERMEDIATE: gwrap-files
gw-business-core.scm gw-business-core.c gw-business-core.h: \
gwrap-files
gwrap-files: \
.scm-links gw-business-core-spec.scm ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(set! %load-path (cons \"../../engine\" %load-path)) \
(primitive-load \"./gw-business-core-spec.scm\") \
(gw:generate-wrapset \"gw-business-core\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-*.scm . )
BUILT_SOURCES = gw-business-core.scm gw-business-core.c gw-business-core.h
CLEANFILES = $(BUILT_SOURCES) gw-business-core.html \
.scm-links ${SCM_FILE_LINKS}

View File

@@ -0,0 +1,157 @@
%module sw_business_core
%{
/* Includes the header in the wrapper code */
#include <config.h>
#include <gncAddress.h>
#include <gncBillTerm.h>
#include <gncCustomer.h>
#include <gncEmployee.h>
#include <gncEntry.h>
#include <gncInvoice.h>
#include <gncJob.h>
#include <gncOrder.h>
#include <gncOwner.h>
#include <gncTaxTable.h>
#include <gncVendor.h>
#include <gncBusGuile.h>
#include "engine-helpers.h"
#include "gncBusGuile.h"
SCM scm_init_sw_business_core_module (void);
%}
// Temporary SWIG<->G-wrap converters for engine types
%typemap(in) gboolean "$1 = SCM_NFALSEP($input) ? TRUE : FALSE;"
%typemap(out) gboolean "$result = $1 ? SCM_BOOL_T : SCM_BOOL_F;"
%typemap(in) Timespec "$1 = gnc_timepair2timespec($input);"
%typemap(out) Timespec "$result = gnc_timespec2timepair($1);"
%typemap(in) GUID "$1 = gnc_scm2guid($input);"
%typemap(out) GUID "$result = gnc_guid2scm($1);"
%typemap(in) gnc_numeric "$1 = gnc_scm_to_numeric($input);"
%typemap(out) gnc_numeric "$result = gnc_numeric_to_scm($1);"
// End of temporary typemaps.
%rename(gncOwnerReturnGUID) gncOwnerRetGUID;
%inline %{
static GUID gncTaxTableReturnGUID(GncTaxTable *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GUID gncInvoiceReturnGUID(GncInvoice *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GUID gncJobReturnGUID(GncJob *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GUID gncVendorReturnGUID(GncVendor *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GUID gncCustomerReturnGUID(GncCustomer *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GUID gncEmployeeReturnGUID(GncEmployee *x)
{ return (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())); }
static GncTaxTable * gncTaxTableLookupFlip(GUID g, QofBook *b)
{ return gncTaxTableLookup(b, &g); }
static GncInvoice * gncInvoiceLookupFlip(GUID g, QofBook *b)
{ return gncInvoiceLookup(b, &g); }
static GncJob * gncJobLookupFlip(GUID g, QofBook *b)
{ return gncJobLookup(b, &g); }
static GncVendor * gncVendorLookupFlip(GUID g, QofBook *b)
{ return gncVendorLookup(b, &g); }
static GncCustomer * gncCustomerLookupFlip(GUID g, QofBook *b)
{ return gncCustomerLookup(b, &g); }
static GncEmployee * gncEmployeeLookupFlip(GUID g, QofBook *b)
{ return gncEmployeeLookup(b, &g); }
%}
%typemap(out) EntryList * {
SCM list = SCM_EOL;
GList *node;
for (node = $1; node; node = node->next)
list = scm_cons(SWIG_NewPointerObj(node->data,
SWIGTYPE_p__gncEntry, 0), list);
$result = scm_reverse(list);
}
%typemap(out) AccountValueList * {
SCM list = SCM_EOL;
GList *node;
for (node = $1; node; node = node->next)
list = scm_cons(SWIG_NewPointerObj(node->data,
SWIGTYPE_p__gncAccountValue, 0), list);
$result = scm_reverse(list);
}
%typemap(in) GncAccountValue * "$1 = gnc_scm_to_account_value_ptr($input);"
%typemap(out) GncAccountValue * "$result = gnc_account_value_ptr_to_scm($1);"
/* Parse the header file to generate wrappers */
%include <gncAddress.h>
%include <gncBillTerm.h>
%include <gncCustomer.h>
%include <gncEmployee.h>
%include <gncEntry.h>
%include <gncInvoice.h>
%include <gncJob.h>
%include <gncOrder.h>
%include <gncOwner.h>
%include <gncTaxTable.h>
%include <gncVendor.h>
%include <gncBusGuile.h>
#define URL_TYPE_CUSTOMER GNC_ID_CUSTOMER
#define URL_TYPE_VENDOR GNC_ID_VENDOR
#define URL_TYPE_EMPLOYEE GNC_ID_EMPLOYEE
#define URL_TYPE_INVOICE GNC_ID_INVOICE
// not exactly clean
#define URL_TYPE_OWNERREPORT "owner-report"
%init {
{
char tmp[100];
#define SET_ENUM(e) snprintf(tmp, 100, "(set! %s (%s))", (e), (e)); \
scm_c_eval_string(tmp);
SET_ENUM("GNC-OWNER-CUSTOMER");
SET_ENUM("GNC-OWNER-VENDOR");
SET_ENUM("GNC-OWNER-EMPLOYEE");
SET_ENUM("GNC-OWNER-JOB");
SET_ENUM("GNC-AMT-TYPE-VALUE");
SET_ENUM("GNC-AMT-TYPE-PERCENT");
SET_ENUM("URL-TYPE-CUSTOMER");
SET_ENUM("URL-TYPE-VENDOR");
SET_ENUM("URL-TYPE-EMPLOYEE");
SET_ENUM("URL-TYPE-INVOICE");
SET_ENUM("URL-TYPE-OWNERREPORT");
SET_ENUM("INVOICE-FROM-TXN");
SET_ENUM("INVOICE-FROM-LOT");
SET_ENUM("INVOICE-OWNER");
SET_ENUM("OWNER-PARENTG");
SET_ENUM("OWNER-FROM-LOT");
#undefine SET_ENUM
}
}

View File

@@ -1,25 +1,24 @@
(define-module (gnucash business-core)) (define-module (gnucash business-core))
(use-modules (g-wrapped gw-business-core)) (use-modules (sw_business_core))
(use-modules (gnucash gnc-module)) (use-modules (gnucash gnc-module))
(gnc:module-load "gnucash/engine" 0) (gnc:module-load "gnucash/engine" 0)
(define (gnc:owner-get-address owner) (define (gnc:owner-get-address owner)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType owner)))
(gnc:owner-get-type owner) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer) (let ((c (gncOwnerGetCustomer owner)))
(let ((c (gnc:owner-get-customer owner))) (gncCustomerGetAddr c)))
(gnc:customer-get-addr c))) ((eqv? type GNC-OWNER-VENDOR)
((gnc-owner-vendor) (let ((v (gncOwnerGetVendor owner)))
(let ((v (gnc:owner-get-vendor owner))) (gncVendorGetAddr v)))
(gnc:vendor-get-addr v))) ((eqv? type GNC-OWNER-EMPLOYEE)
((gnc-owner-employee) (let ((e (gncOwnerGetEmployee owner)))
(let ((e (gnc:owner-get-employee owner))) (gncEmployeeGetAddr e)))
(gnc:employee-get-addr e))) ((eqv? type GNC-OWNER-JOB)
((gnc-owner-job)
(gnc:owner-get-address (gnc:job-get-owner (gnc:owner-get-address (gnc:job-get-owner
(gnc:owner-get-job owner)))) (gncOwnerGetJob owner))))
(else "")))) (else '()))))
; ;
; The -dep functions return combined strings of the appropriate ; The -dep functions return combined strings of the appropriate
@@ -36,13 +35,12 @@
(define (just-name name) (define (just-name name)
(if name name "")) (if name name ""))
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType owner)))
(gnc:owner-get-type owner) #f))) (cond
(case type ((eqv? type GNC-OWNER-JOB)
((gnc-owner-job)
(gnc:owner-get-name-dep (gnc:job-get-owner (gnc:owner-get-name-dep (gnc:job-get-owner
(gnc:owner-get-job owner)))) (gncOwnerGetJob owner))))
(else (just-name (gnc:owner-get-name owner)))))) (else (just-name (gncOwnerGetName owner))))))
(define (gnc:owner-get-address-dep owner) (define (gnc:owner-get-address-dep owner)
(define (add-if-exists lst new) (define (add-if-exists lst new)
@@ -56,10 +54,10 @@
(else (string-append (build-string (cdr lst)) "\n" (car lst))))) (else (string-append (build-string (cdr lst)) "\n" (car lst)))))
(let ((lst '()) (let ((lst '())
(addr (gnc:owner-get-address owner))) (addr (gnc:owner-get-address owner)))
(set! lst (add-if-exists lst (gnc:address-get-addr1 addr))) (set! lst (add-if-exists lst (gncAddressGetAddr1 addr)))
(set! lst (add-if-exists lst (gnc:address-get-addr2 addr))) (set! lst (add-if-exists lst (gncAddressGetAddr2 addr)))
(set! lst (add-if-exists lst (gnc:address-get-addr3 addr))) (set! lst (add-if-exists lst (gncAddressGetAddr3 addr)))
(set! lst (add-if-exists lst (gnc:address-get-addr4 addr))) (set! lst (add-if-exists lst (gncAddressGetAddr4 addr)))
(build-string lst))) (build-string lst)))
(define (gnc:owner-get-name-and-address-dep owner) (define (gnc:owner-get-name-and-address-dep owner)
@@ -70,45 +68,44 @@
addr))) addr)))
(define (gnc:owner-get-owner-id owner) (define (gnc:owner-get-owner-id owner)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType owner)))
(gnc:owner-get-type owner) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer) (let ((c (gncOwnerGetCustomer owner)))
(let ((c (gnc:owner-get-customer owner))) (gncCustomerGetID c)))
(gnc:customer-get-id c))) ((eqv? type GNC-OWNER-VENDOR)
((gnc-owner-vendor) (let ((v (gncOwnerGetVendor owner)))
(let ((v (gnc:owner-get-vendor owner))) (gncVendorGetID v)))
(gnc:vendor-get-id v))) ((eqv? type GNC-OWNER-EMPLOYEE)
((gnc-owner-employee) (let ((e (gncOwnerGetEmployee owner)))
(let ((e (gnc:owner-get-employee owner))) (gncEmployeeGetID e)))
(gnc:employee-get-id e))) ((eqv? type GNC-OWNER-JOB)
((gnc-owner-job) (gnc:owner-get-owner-id (gncJobGetOwner (gncOwnerGetJob owner))))
(gnc:owner-get-owner-id (gnc:job-get-owner (gnc:owner-get-job owner))))
(else "")))) (else ""))))
(define (gnc:entry-type-percent-p type-val) (define (gnc:entry-type-percent-p type-val)
(let ((type (gw:enum-<gnc:GncAmountType>-val->sym type-val #f))) (let ((type type-val))
(equal? type 'gnc-amount-type-percent))) (equal? type GNC-AMT-TYPE-PERCENT)))
(define (gnc:owner-from-split split result-owner) (define (gnc:owner-from-split split result-owner)
(let* ((trans (gnc:split-get-parent split)) (let* ((trans (xaccSplitGetParent split))
(invoice (gnc:invoice-get-invoice-from-txn trans)) (invoice (gncInvoiceGetInvoiceFromTxn trans))
(temp-owner (gnc:owner-create)) (temp-owner (gncOwnerCreate))
(owner #f)) (owner #f))
(if invoice (if invoice
(set! owner (gnc:invoice-get-owner invoice)) (set! owner (gncInvoiceGetOwner invoice))
(let ((split-list (gnc:transaction-get-splits trans))) (let ((split-list (xaccTransGetSplits trans)))
(define (check-splits splits) (define (check-splits splits)
(if (and splits (not (null? splits))) (if (and splits (not (null? splits)))
(let* ((split (car splits)) (let* ((split (car splits))
(lot (gnc:split-get-lot split))) (lot (xaccSplitGetLot split)))
(if lot (if lot
(let* ((invoice (gnc:invoice-get-invoice-from-lot lot)) (let* ((invoice (gncInvoiceGetInvoiceFromLot lot))
(owner? (gnc:owner-get-owner-from-lot (owner? (gnc:owner-get-owner-from-lot
lot temp-owner))) lot temp-owner)))
(if invoice (if invoice
(set! owner (gnc:invoice-get-owner invoice)) (set! owner (gncInvoiceGetOwner invoice))
(if owner? (if owner?
(set! owner temp-owner) (set! owner temp-owner)
(check-splits (cdr splits))))) (check-splits (cdr splits)))))
@@ -117,12 +114,12 @@
(if owner (if owner
(begin (begin
(gnc:owner-copy-into-owner (gnc:owner-get-end-owner owner) result-owner) (gncOwnerCopy (gncOwnerGetEndOwner owner) result-owner)
(gnc:owner-destroy temp-owner) (gncOwnerDestroy temp-owner)
result-owner) result-owner)
(begin (begin
(gnc:owner-destroy temp-owner) (gncOwnerDestroy temp-owner)
#f)))) #f)))) ;; FIXME!
(export gnc:owner-get-address) (export gnc:owner-get-address)

View File

@@ -30,7 +30,6 @@
#include "gnc-module.h" #include "gnc-module.h"
#include "gnc-module-api.h" #include "gnc-module-api.h"
#include "gw-business-core.h"
#include "gncAddressP.h" #include "gncAddressP.h"
#include "gncBillTermP.h" #include "gncBillTermP.h"
@@ -44,6 +43,8 @@
#include "gncTaxTableP.h" #include "gncTaxTableP.h"
#include "gncVendorP.h" #include "gncVendorP.h"
extern SCM scm_init_sw_business_core_module (void);
/* version of the gnc module system interface we require */ /* version of the gnc module system interface we require */
int libgncmod_business_core_LTX_gnc_module_system_interface = 0; int libgncmod_business_core_LTX_gnc_module_system_interface = 0;
@@ -94,7 +95,8 @@ libgncmod_business_core_LTX_gnc_module_init(int refcount)
gncVendorRegister (); gncVendorRegister ();
} }
scm_c_eval_string("(use-modules (g-wrapped gw-business-core))"); scm_init_sw_business_core_module();
scm_c_eval_string("(use-modules (sw_business_core))");
scm_c_eval_string("(use-modules (gnucash business-core))"); scm_c_eval_string("(use-modules (gnucash business-core))");
return TRUE; return TRUE;

View File

@@ -59,17 +59,19 @@ typedef struct _gncBillTerm GncBillTerm;
* ??? huh? * ??? huh?
* NOTE: This enum /depends/ on starting at value 1 * NOTE: This enum /depends/ on starting at value 1
*/ */
#ifndef SWIG
#define ENUM_TERMS_TYPE(_) \ #define ENUM_TERMS_TYPE(_) \
_(GNC_TERM_TYPE_DAYS,=1) \ _(GNC_TERM_TYPE_DAYS,=1) \
_(GNC_TERM_TYPE_PROXIMO,) _(GNC_TERM_TYPE_PROXIMO,)
DEFINE_ENUM(GncBillTermType, ENUM_TERMS_TYPE) DEFINE_ENUM(GncBillTermType, ENUM_TERMS_TYPE)
#else
/*typedef enum { typedef enum {
GNC_TERM_TYPE_DAYS = 1, GNC_TERM_TYPE_DAYS = 1,
GNC_TERM_TYPE_PROXIMO, GNC_TERM_TYPE_PROXIMO,
} GncBillTermType; } GncBillTermType;
*/ #endif
/** @name Create/Destroy Functions /** @name Create/Destroy Functions
@{ */ @{ */
GncBillTerm * gncBillTermCreate (QofBook *book); GncBillTerm * gncBillTermCreate (QofBook *book);
@@ -108,7 +110,6 @@ void gncBillTermSetCutoff (GncBillTerm *term, gint cutoff);
GncBillTerm *gncBillTermLookupByName (QofBook *book, const char *name); GncBillTerm *gncBillTermLookupByName (QofBook *book, const char *name);
GList * gncBillTermGetTerms (QofBook *book); GList * gncBillTermGetTerms (QofBook *book);
KvpFrame* gncBillTermGetSlots (GncBillTerm *term);
const char *gncBillTermGetName (GncBillTerm *term); const char *gncBillTermGetName (GncBillTerm *term);
const char *gncBillTermGetDescription (GncBillTerm *term); const char *gncBillTermGetDescription (GncBillTerm *term);

View File

@@ -25,28 +25,26 @@
#include "gncBusGuile.h" #include "gncBusGuile.h"
#include "engine-helpers.h" #include "engine-helpers.h"
#include <g-wrap-wct.h> #include "swig-runtime.h"
#define FUNC_NAME __FUNCTION__
static SCM static swig_type_info *
get_acct_type () get_acct_type ()
{ {
static SCM account_type = SCM_UNDEFINED; static swig_type_info * account_type = NULL;
if(account_type == SCM_UNDEFINED) { if (!account_type)
account_type = scm_c_eval_string("<gnc:Account*>"); account_type = SWIG_TypeQuery("_p_Account");
/* don't really need this - types are bound globally anyway. */
if(account_type != SCM_UNDEFINED) scm_gc_protect_object(account_type);
}
return account_type; return account_type;
} }
int gnc_account_value_pointer_p (SCM arg) int gnc_account_value_pointer_p (SCM arg)
{ {
SCM account_type = get_acct_type(); swig_type_info * account_type = get_acct_type();
return (SCM_CONSP (arg) && return (SCM_CONSP (arg) &&
gw_wcp_is_of_type_p(account_type, SCM_CAR (arg)) && SWIG_IsPointerOfType(SCM_CAR (arg), account_type) &&
gnc_numeric_p (SCM_CDR (arg))); gnc_numeric_p (SCM_CDR (arg)));
} }
@@ -55,15 +53,15 @@ GncAccountValue * gnc_scm_to_account_value_ptr (SCM valuearg)
GncAccountValue *res; GncAccountValue *res;
Account *acc = NULL; Account *acc = NULL;
gnc_numeric value; gnc_numeric value;
SCM account_type = get_acct_type(); swig_type_info * account_type = get_acct_type();
SCM val; SCM val;
/* Get the account */ /* Get the account */
val = SCM_CAR (valuearg); val = SCM_CAR (valuearg);
if (!gw_wcp_is_of_type_p (account_type, val)) if (!SWIG_IsPointerOfType (val, account_type))
return NULL; return NULL;
acc = gw_wcp_get_ptr (val); acc = SWIG_MustGetPtr(val, account_type, 1, 0);
/* Get the value */ /* Get the value */
val = SCM_CDR (valuearg); val = SCM_CDR (valuearg);
@@ -78,7 +76,7 @@ GncAccountValue * gnc_scm_to_account_value_ptr (SCM valuearg)
SCM gnc_account_value_ptr_to_scm (GncAccountValue *av) SCM gnc_account_value_ptr_to_scm (GncAccountValue *av)
{ {
SCM account_type = get_acct_type(); swig_type_info * account_type = get_acct_type();
gnc_commodity * com; gnc_commodity * com;
gnc_numeric val; gnc_numeric val;
@@ -88,6 +86,6 @@ SCM gnc_account_value_ptr_to_scm (GncAccountValue *av)
val = gnc_numeric_convert (av->value, gnc_commodity_get_fraction (com), val = gnc_numeric_convert (av->value, gnc_commodity_get_fraction (com),
GNC_RND_ROUND); GNC_RND_ROUND);
return scm_cons (gw_wcp_assimilate_ptr (av->account, account_type), return scm_cons (SWIG_NewPointerObj(av->account, account_type, 0),
gnc_numeric_to_scm (val)); gnc_numeric_to_scm (val));
} }

View File

@@ -120,7 +120,6 @@ gnc_commodity * gncCustomerGetCurrency (GncCustomer *customer);
gboolean gncCustomerGetTaxTableOverride (GncCustomer *customer); gboolean gncCustomerGetTaxTableOverride (GncCustomer *customer);
GncTaxTable* gncCustomerGetTaxTable (GncCustomer *customer); GncTaxTable* gncCustomerGetTaxTable (GncCustomer *customer);
KvpFrame *gncCustomerGetSlots (GncCustomer *customer);
GList * gncCustomerGetJoblist (GncCustomer *customer, gboolean show_all); GList * gncCustomerGetJoblist (GncCustomer *customer, gboolean show_all);
/** @} */ /** @} */

View File

@@ -1141,7 +1141,7 @@ gnc_numeric gncEntryReturnTaxValue (GncEntry *entry, gboolean is_inv)
return (is_inv ? entry->i_tax_value_rounded : entry->b_tax_value_rounded); return (is_inv ? entry->i_tax_value_rounded : entry->b_tax_value_rounded);
} }
GList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv) AccountValueList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv)
{ {
if (!entry) return NULL; if (!entry) return NULL;
gncEntryRecomputeValues (entry); gncEntryRecomputeValues (entry);

View File

@@ -169,7 +169,8 @@ void gncEntryCopy (const GncEntry *src, GncEntry *dest);
gnc_numeric gncEntryReturnValue (GncEntry *entry, gboolean is_inv); gnc_numeric gncEntryReturnValue (GncEntry *entry, gboolean is_inv);
gnc_numeric gncEntryReturnDiscountValue (GncEntry *entry, gboolean is_inv); gnc_numeric gncEntryReturnDiscountValue (GncEntry *entry, gboolean is_inv);
gnc_numeric gncEntryReturnTaxValue (GncEntry *entry, gboolean is_inv); gnc_numeric gncEntryReturnTaxValue (GncEntry *entry, gboolean is_inv);
GList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv); typedef GList AccountValueList;
AccountValueList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv);
/** Compute the Entry value, tax-value, and discount_value, based on /** Compute the Entry value, tax-value, and discount_value, based on
* the quantity, price, discount, tax-table, and types. The value is * the quantity, price, discount, tax-table, and types. The value is

View File

@@ -94,6 +94,11 @@ mark_invoice (GncInvoice *invoice)
qof_event_gen (&invoice->inst.entity, QOF_EVENT_MODIFY, NULL); qof_event_gen (&invoice->inst.entity, QOF_EVENT_MODIFY, NULL);
} }
QofBook * gncInvoiceGetBook(GncInvoice *x)
{
return qof_instance_get_book(QOF_INSTANCE(x));
}
/* ================================================================== */ /* ================================================================== */
/* Create/Destroy Functions */ /* Create/Destroy Functions */
@@ -639,7 +644,7 @@ gnc_numeric gncInvoiceGetToChargeAmount (GncInvoice *invoice)
return invoice->to_charge_amount; return invoice->to_charge_amount;
} }
GList * gncInvoiceGetEntries (GncInvoice *invoice) EntryList * gncInvoiceGetEntries (GncInvoice *invoice)
{ {
if (!invoice) return NULL; if (!invoice) return NULL;
return invoice->entries; return invoice->entries;

View File

@@ -43,6 +43,7 @@ typedef struct _gncInvoice GncInvoice;
#include "gncEntry.h" #include "gncEntry.h"
#include "gncOwner.h" #include "gncOwner.h"
#include "gnc-lot.h" #include "gnc-lot.h"
#include "qofbook.h"
#define GNC_ID_INVOICE "gncInvoice" #define GNC_ID_INVOICE "gncInvoice"
#define GNC_IS_INVOICE(obj) (QOF_CHECK_TYPE((obj), GNC_ID_INVOICE)) #define GNC_IS_INVOICE(obj) (QOF_CHECK_TYPE((obj), GNC_ID_INVOICE))
@@ -108,7 +109,8 @@ gnc_numeric gncInvoiceGetTotalOf (GncInvoice *invoice, GncEntryPaymentType type)
gnc_numeric gncInvoiceGetTotalSubtotal (GncInvoice *invoice); gnc_numeric gncInvoiceGetTotalSubtotal (GncInvoice *invoice);
gnc_numeric gncInvoiceGetTotalTax (GncInvoice *invoice); gnc_numeric gncInvoiceGetTotalTax (GncInvoice *invoice);
GList * gncInvoiceGetEntries (GncInvoice *invoice); typedef GList EntryList;
EntryList * gncInvoiceGetEntries (GncInvoice *invoice);
/** Post this invoice to an account. Returns the new Transaction /** Post this invoice to an account. Returns the new Transaction
* that is tied to this invoice. The transaction is set with * that is tied to this invoice. The transaction is set with
@@ -164,7 +166,6 @@ GncInvoice * gncInvoiceGetInvoiceFromLot (GNCLot *lot);
#define gncInvoiceLookup(book,guid) \ #define gncInvoiceLookup(book,guid) \
QOF_BOOK_LOOKUP_ENTITY((book),(guid),GNC_ID_INVOICE, GncInvoice) QOF_BOOK_LOOKUP_ENTITY((book),(guid),GNC_ID_INVOICE, GncInvoice)
gboolean gncInvoiceIsDirty (GncInvoice *invoice);
void gncInvoiceBeginEdit (GncInvoice *invoice); void gncInvoiceBeginEdit (GncInvoice *invoice);
void gncInvoiceCommitEdit (GncInvoice *invoice); void gncInvoiceCommitEdit (GncInvoice *invoice);
int gncInvoiceCompare (GncInvoice *a, GncInvoice *b); int gncInvoiceCompare (GncInvoice *a, GncInvoice *b);
@@ -192,8 +193,9 @@ gboolean gncInvoiceIsPaid (GncInvoice *invoice);
#define INVOICE_FROM_LOT "invoice-from-lot" #define INVOICE_FROM_LOT "invoice-from-lot"
#define INVOICE_FROM_TXN "invoice-from-txn" #define INVOICE_FROM_TXN "invoice-from-txn"
QofBook *gncInvoiceGetBook(GncInvoice *x);
/** deprecated functions */ /** deprecated functions */
#define gncInvoiceGetBook(x) qof_instance_get_book(QOF_INSTANCE(x))
#define gncInvoiceGetGUID(x) qof_instance_get_guid(QOF_INSTANCE(x)) #define gncInvoiceGetGUID(x) qof_instance_get_guid(QOF_INSTANCE(x))
#define gncInvoiceRetGUID(x) (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null())) #define gncInvoiceRetGUID(x) (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null()))
#define gncInvoiceLookupDirect(G,B) gncInvoiceLookup((B),&(G)) #define gncInvoiceLookupDirect(G,B) gncInvoiceLookup((B),&(G))

View File

@@ -70,7 +70,6 @@ GncOwner * gncJobGetOwner (GncJob *job);
/** @} */ /** @} */
gboolean gncJobGetActive (GncJob *job); gboolean gncJobGetActive (GncJob *job);
gboolean gncJobIsDirty (GncJob *job);
/** Return a pointer to the instance gncJob that is identified /** Return a pointer to the instance gncJob that is identified
* by the guid, and is residing in the book. Returns NULL if the * by the guid, and is residing in the book. Returns NULL if the

View File

@@ -76,7 +76,6 @@ gboolean gncOrderGetActive (GncOrder *order);
/* Get the list Entries */ /* Get the list Entries */
GList * gncOrderGetEntries (GncOrder *order); GList * gncOrderGetEntries (GncOrder *order);
gboolean gncOrderIsDirty (GncOrder *order);
void gncOrderBeginEdit (GncOrder *order); void gncOrderBeginEdit (GncOrder *order);
void gncOrderCommitEdit (GncOrder *order); void gncOrderCommitEdit (GncOrder *order);
int gncOrderCompare (GncOrder *a, GncOrder *b); int gncOrderCompare (GncOrder *a, GncOrder *b);

View File

@@ -33,7 +33,7 @@
#ifndef GNC_OWNER_H_ #ifndef GNC_OWNER_H_
#define GNC_OWNER_H_ #define GNC_OWNER_H_
typedef struct gnc_owner_s GncOwner; typedef struct _gncOwner GncOwner;
#define GNC_ID_OWNER "gncOwner" #define GNC_ID_OWNER "gncOwner"
@@ -67,17 +67,13 @@ QofEntity* qofOwnerGetOwner (GncOwner *owner);
/** set the owner from the entity. */ /** set the owner from the entity. */
void qofOwnerSetEntity (GncOwner *owner, QofEntity *ent); void qofOwnerSetEntity (GncOwner *owner, QofEntity *ent);
/** \brief Set the parent owner. */
void qofOwnerSetEndOwner (GncOwner *owner, GncOwner *parent);
GncOwner* qofOwnerCreate (QofBook *book);
gboolean gboolean
gncOwnerRegister(void); gncOwnerRegister(void);
/** @} */ /** @} */
/** \struct GncOwner */ /** \struct GncOwner */
struct gnc_owner_s { struct _gncOwner {
GncOwnerType type; /**< Customer, Job, Vendor, Employee or Undefined. */ GncOwnerType type; /**< Customer, Job, Vendor, Employee or Undefined. */
union { union {
gpointer undefined; gpointer undefined;

File diff suppressed because it is too large Load Diff

View File

@@ -13,9 +13,7 @@ LDADD = \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/test-core/libgncmod-test.la \ ${top_builddir}/src/test-core/libgncmod-test.la \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${top_builddir}/src/engine/libgw-engine.la \
../libgncmod-business-core.la \ ../libgncmod-business-core.la \
../libgw-business-core.la \
${GLIB_LIBS} \ ${GLIB_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \
-lltdl -lltdl
@@ -35,10 +33,8 @@ GNC_TEST_DEPS := \
--gnc-module-dir ${top_builddir}/src/engine \ --gnc-module-dir ${top_builddir}/src/engine \
--gnc-module-dir ${top_builddir}/src/business/business-core \ --gnc-module-dir ${top_builddir}/src/business/business-core \
--gnc-module-dir ${top_srcdir}/src/gnc-module \ --gnc-module-dir ${top_srcdir}/src/gnc-module \
--gnc-module-dir ${top_srcdir}/src/engine \
--library-dir ${top_builddir}/lib/libqof/qof \ --library-dir ${top_builddir}/lib/libqof/qof \
--library-dir ${G_WRAP_LIB_DIR} \ --gnc-module-dir ${top_srcdir}/src/engine
--guile-load-dir ${G_WRAP_MODULE_DIR}
TESTS_ENVIRONMENT := \ TESTS_ENVIRONMENT := \
$(shell ${top_srcdir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS}) $(shell ${top_srcdir}/src/gnc-test-env --no-exports ${GNC_TEST_DEPS})

View File

@@ -1,7 +1,7 @@
SUBDIRS = . glade schemas ui SUBDIRS = . glade schemas ui
PWD := $(shell pwd) PWD := $(shell pwd)
pkglib_LTLIBRARIES = libgncmod-business-gnome.la libgw-business-gnome.la pkglib_LTLIBRARIES = libgncmod-business-gnome.la
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src \ -I${top_srcdir}/src \
@@ -22,7 +22,6 @@ AM_CFLAGS = \
${GTKHTML_CFLAGS} \ ${GTKHTML_CFLAGS} \
${GDK_PIXBUF_CFLAGS} \ ${GDK_PIXBUF_CFLAGS} \
${GLIB_CFLAGS} \ ${GLIB_CFLAGS} \
${G_WRAP_COMPILE_ARGS} \
${GUILE_INCS} \ ${GUILE_INCS} \
${QOF_CFLAGS} \ ${QOF_CFLAGS} \
-I${top_srcdir}/src/register/register-core \ -I${top_srcdir}/src/register/register-core \
@@ -81,21 +80,11 @@ libgncmod_business_gnome_la_LIBADD = \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${GLADE_LIBS} \ ${GLADE_LIBS} \
${GNOME_LIBS} \ ${GNOME_LIBS} \
${G_WRAP_LINK_ARGS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \
${EFENCE_LIBS} ${EFENCE_LIBS}
nodist_libgw_business_gnome_la_SOURCES = gw-business-gnome.c
libgw_business_gnome_la_LDFLAGS = ${G_WRAP_LINK_ARGS}
libgw_business_gnome_la_LIBADD = \
libgncmod-business-gnome.la \
${G_WRAP_LINK_ARGS} \
${GUILE_LIBS}
# For Business Reports # For Business Reports
gncscmmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash/report/ gncscmmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash/report/
gncscmmod_DATA = gncscmmod_DATA =
@@ -103,28 +92,19 @@ gncscmmod_DATA =
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gncmod_DATA = business-gnome.scm gncmod_DATA = business-gnome.scm
gwmoddir = ${GNC_GWRAP_LIBDIR}
gwmod_DATA = \
gw-business-gnome-spec.scm
nodist_gwmod_DATA = \
gw-business-gnome.scm
EXTRA_DIST = \ EXTRA_DIST = \
${gncmod_DATA} \ ${gncmod_DATA} \
${gwmod_DATA} \
${gncscmmod_DATA} ${gncscmmod_DATA}
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#Only needed when srcdir and builddir are different #Only needed when srcdir and builddir are different
#for compiling
SCM_FILE_LINKS = gw-business-gnome-spec.scm
#for running #for running
SCM_FILE_LINKS += ${gncmod_DATA} SCM_FILE_LINKS = ${gncmod_DATA}
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
@@ -133,29 +113,5 @@ endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done ) ( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: noinst_DATA = .scm-links
$(RM) -rf gnucash g-wrapped CLEANFILES = $(BUILT_SOURCES) gnucash .scm-links ${SCM_FILE_LINKS}
.INTERMEDIATE: gwrap-files
gw-business-gnome.scm gw-business-gnome.c gw-business-gnome.h: \
gwrap-files
gwrap-files: \
.scm-links gw-business-gnome-spec.scm ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(set! %load-path (cons \"../business-core\" %load-path)) \
(set! %load-path (cons \"${srcdir}/../business-core\" %load-path)) \
(set! %load-path (cons \"../../engine\" %load-path)) \
(set! %load-path (cons \"../../app-utils\" %load-path)) \
(set! %load-path (cons \"../../gnome-utils\" %load-path)) \
(primitive-load \"./gw-business-gnome-spec.scm\") \
(gw:generate-wrapset \"gw-business-gnome\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-*.scm . )
BUILT_SOURCES = gw-business-gnome.scm gw-business-gnome.c gw-business-gnome.h
CLEANFILES = $(BUILT_SOURCES) .scm-links \
${SCM_FILE_LINKS} gw-business-gnome.html

View File

@@ -1,5 +1,4 @@
(define-module (gnucash business-gnome)) (define-module (gnucash business-gnome))
(use-modules (g-wrapped gw-business-gnome))
(use-modules (gnucash gnc-module)) (use-modules (gnucash gnc-module))
(gnc:module-load "gnucash/gnome-utils" 0) (gnc:module-load "gnucash/gnome-utils" 0)
@@ -22,8 +21,8 @@
(set-current-module m))) (set-current-module m)))
(define (business-report-function) (define (business-report-function)
(gnc:add-extension (gnc-add-scm-extension
(gnc:make-menu gnc:menuname-business-reports (gnc:make-menu gnc:menuname-business-reports
(list gnc:menuname-reports)))) (list gnc:menuname-reports))))
(gnc:hook-add-dangler gnc:*report-hook* business-report-function) (gnc-hook-add-scm-dangler HOOK-REPORT business-report-function)

View File

@@ -26,7 +26,7 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <g-wrap-wct.h> #include "swig-runtime.h"
#include <libguile.h> #include <libguile.h>
#include "gnc-ui-util.h" #include "gnc-ui-util.h"
@@ -39,6 +39,8 @@
#include "business-gnome-utils.h" #include "business-gnome-utils.h"
#include "dialog-invoice.h" #include "dialog-invoice.h"
#define FUNC_NAME __FUNCTION__
static GtkWidget * static GtkWidget *
create_owner_widget (GNCOption *option, GncOwnerType type, GtkWidget *hbox) create_owner_widget (GNCOption *option, GncOwnerType type, GtkWidget *hbox)
{ {
@@ -94,12 +96,9 @@ static GncOwnerType
get_owner_type_from_option (GNCOption *option) get_owner_type_from_option (GNCOption *option)
{ {
SCM odata = gnc_option_get_option_data (option); SCM odata = gnc_option_get_option_data (option);
SCM conv_func;
conv_func = scm_c_eval_string ("gw:enum-<gnc:GncOwnerType>-val->int"); /* The option data is enum-typed. It's just the enum value. */
odata = scm_call_1 (conv_func, odata); return (GncOwnerType) scm_num2int(odata, SCM_ARG1, __FUNCTION__);
return scm_num2long (odata, SCM_ARG1, __FUNCTION__);
} }
@@ -135,11 +134,11 @@ owner_set_value (GNCOption *option, gboolean use_default,
GncOwner owner_def; GncOwner owner_def;
GncOwner *owner; GncOwner *owner;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:owner_set_value", scm_misc_error("business_options:owner_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
owner = gw_wcp_get_ptr (value); owner = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncOwner"), 1, 0);
/* XXX: should we verify that the owner type is correct? */ /* XXX: should we verify that the owner type is correct? */
if (!owner) { if (!owner) {
@@ -164,7 +163,7 @@ owner_get_value (GNCOption *option, GtkWidget *widget)
owner.type = type; owner.type = type;
gnc_owner_get_owner (widget, &owner); gnc_owner_get_owner (widget, &owner);
return gw_wcp_assimilate_ptr (&owner, scm_c_eval_string("<gnc:GncOwner*>")); return SWIG_NewPointerObj(&owner, SWIG_TypeQuery("_p__gncOwner"), 0);
} }
@@ -203,11 +202,11 @@ customer_set_value (GNCOption *option, gboolean use_default,
GncOwner owner; GncOwner owner;
GncCustomer *customer; GncCustomer *customer;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:customer_set_value", scm_misc_error("business_options:customer_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
customer = gw_wcp_get_ptr (value); customer = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0);
gncOwnerInitCustomer (&owner, customer); gncOwnerInitCustomer (&owner, customer);
widget = gnc_option_get_widget (option); widget = gnc_option_get_widget (option);
@@ -222,9 +221,8 @@ customer_get_value (GNCOption *option, GtkWidget *widget)
GncOwner owner; GncOwner owner;
gnc_owner_get_owner (widget, &owner); gnc_owner_get_owner (widget, &owner);
return SWIG_NewPointerObj(owner.owner.undefined,
return gw_wcp_assimilate_ptr (owner.owner.undefined, SWIG_TypeQuery("_p__gncCustomer"), 0);
scm_c_eval_string("<gnc:GncCustomer*>"));
} }
@@ -263,11 +261,11 @@ vendor_set_value (GNCOption *option, gboolean use_default,
GncOwner owner; GncOwner owner;
GncVendor *vendor; GncVendor *vendor;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:vendor_set_value", scm_misc_error("business_options:vendor_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
vendor = gw_wcp_get_ptr (value); vendor = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0);
gncOwnerInitVendor (&owner, vendor); gncOwnerInitVendor (&owner, vendor);
widget = gnc_option_get_widget (option); widget = gnc_option_get_widget (option);
@@ -282,9 +280,8 @@ vendor_get_value (GNCOption *option, GtkWidget *widget)
GncOwner owner; GncOwner owner;
gnc_owner_get_owner (widget, &owner); gnc_owner_get_owner (widget, &owner);
return SWIG_NewPointerObj(owner.owner.undefined,
return gw_wcp_assimilate_ptr (owner.owner.undefined, SWIG_TypeQuery("_p__gncVendor"), 0);
scm_c_eval_string("<gnc:GncVendor*>"));
} }
/********************************************************************/ /********************************************************************/
@@ -322,11 +319,11 @@ employee_set_value (GNCOption *option, gboolean use_default,
GncOwner owner; GncOwner owner;
GncEmployee *employee; GncEmployee *employee;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:employee_set_value", scm_misc_error("business_options:employee_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
employee = gw_wcp_get_ptr (value); employee = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncEmployee"), 1, 0);
gncOwnerInitEmployee (&owner, employee); gncOwnerInitEmployee (&owner, employee);
widget = gnc_option_get_widget (option); widget = gnc_option_get_widget (option);
@@ -342,8 +339,8 @@ employee_get_value (GNCOption *option, GtkWidget *widget)
gnc_owner_get_owner (widget, &owner); gnc_owner_get_owner (widget, &owner);
return gw_wcp_assimilate_ptr (owner.owner.undefined, return SWIG_NewPointerObj(owner.owner.undefined,
scm_c_eval_string("<gnc:GncEmployee*>")); SWIG_TypeQuery("_p__gncEmployee"), 0);
} }
/********************************************************************/ /********************************************************************/
@@ -396,11 +393,11 @@ invoice_set_value (GNCOption *option, gboolean use_default,
{ {
GncInvoice *invoice; GncInvoice *invoice;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:invoice_set_value", scm_misc_error("business_options:invoice_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
invoice = gw_wcp_get_ptr (value); invoice = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0);
widget = gnc_option_get_widget (option); widget = gnc_option_get_widget (option);
gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice); gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice);
@@ -414,7 +411,7 @@ invoice_get_value (GNCOption *option, GtkWidget *widget)
GncInvoice *invoice; GncInvoice *invoice;
invoice = gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); invoice = gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget));
return gw_wcp_assimilate_ptr (invoice, scm_c_eval_string("<gnc:GncInvoice*>")); return SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0);
} }
@@ -471,11 +468,11 @@ taxtable_set_value (GNCOption *option, gboolean use_default,
{ {
GncTaxTable *taxtable; GncTaxTable *taxtable;
if (!gw_wcp_p (value)) if (!SWIG_IsPointer (value))
scm_misc_error("business_options:taxtable_set_value", scm_misc_error("business_options:taxtable_set_value",
"Item is not a gw:wcp.", value); "SCM is not a wrapped pointer.", value);
taxtable = gw_wcp_get_ptr (value); taxtable = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0);
widget = gnc_option_get_widget (option); widget = gnc_option_get_widget (option);
gnc_ui_optionmenu_set_value (widget, taxtable); gnc_ui_optionmenu_set_value (widget, taxtable);
@@ -489,7 +486,7 @@ taxtable_get_value (GNCOption *option, GtkWidget *widget)
GncTaxTable *taxtable; GncTaxTable *taxtable;
taxtable = gnc_ui_optionmenu_get_value (widget); taxtable = gnc_ui_optionmenu_get_value (widget);
return gw_wcp_assimilate_ptr (taxtable, scm_c_eval_string("<gnc:GncTaxTable*>")); return SWIG_NewPointerObj(taxtable, SWIG_TypeQuery("_p__gncTaxTable"), 0);
} }
@@ -510,6 +507,7 @@ gnc_business_options_gnome_initialize (void)
{ NULL } { NULL }
}; };
SWIG_GetModule(NULL); /* Work-around for SWIG bug. */
for (i = 0; options[i].option_name; i++) for (i = 0; options[i].option_name; i++)
gnc_options_ui_register_option (&(options[i])); gnc_options_ui_register_option (&(options[i]));
} }

View File

@@ -35,7 +35,6 @@
#include "gnc-hooks.h" #include "gnc-hooks.h"
#include "gnc-module.h" #include "gnc-module.h"
#include "gnc-module-api.h" #include "gnc-module-api.h"
#include "gw-business-gnome.h"
#include "search-core-type.h" #include "search-core-type.h"
#include "search-owner.h" #include "search-owner.h"
@@ -101,10 +100,28 @@ libgncmod_business_gnome_LTX_gnc_module_init(int refcount)
// return FALSE; // return FALSE;
// } // }
scm_c_eval_string("(use-modules (g-wrapped gw-business-gnome))");
scm_c_eval_string("(use-modules (gnucash business-gnome))"); scm_c_eval_string("(use-modules (gnucash business-gnome))");
scm_c_eval_string("(use-modules (gnucash report business-reports))"); scm_c_eval_string("(use-modules (gnucash report business-reports))");
// temp code until gnc:url-type is wrapped
/*
{
SCM wct_gnc_url_type = scm_c_eval_string("<gnc:url-type>");
SCM tmp;
tmp = gw_wcp_assimilate_ptr(GNC_CUSTOMER_MODULE_NAME, wct_gnc_url_type);
scm_c_define("gnc:url-type-customer", tmp);
tmp = gw_wcp_assimilate_ptr(GNC_VENDOR_MODULE_NAME, wct_gnc_url_type);
scm_c_define("gnc:url-type-vendor", tmp);
tmp = gw_wcp_assimilate_ptr(GNC_EMPLOYEE_MODULE_NAME, wct_gnc_url_type);
scm_c_define("gnc:url-type-employee", tmp);
tmp = gw_wcp_assimilate_ptr(GNC_INVOICE_MODULE_NAME, wct_gnc_url_type);
scm_c_define("gnc:url-type-invoice", tmp);
tmp = gw_wcp_assimilate_ptr(URL_TYPE_OWNERREPORT, wct_gnc_url_type);
scm_c_define("gnc:url-type-ownerreport", tmp);
}
*/
if (refcount == 0) { if (refcount == 0) {
/* Register the Owner search type */ /* Register the Owner search type */
gnc_search_core_register_type (GNC_OWNER_MODULE_NAME, gnc_search_core_register_type (GNC_OWNER_MODULE_NAME,

View File

@@ -27,8 +27,8 @@
#include <gnome.h> #include <gnome.h>
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <g-wrap-wct.h>
#include <libguile.h> #include <libguile.h>
#include "swig-runtime.h"
#include "gncObject.h" #include "gncObject.h"
#include "QueryCore.h" #include "QueryCore.h"
@@ -569,7 +569,7 @@ gnc_invoice_window_printCB (GtkWidget *widget, gpointer data)
func = scm_c_eval_string ("gnc:invoice-report-create"); func = scm_c_eval_string ("gnc:invoice-report-create");
g_return_if_fail (SCM_PROCEDUREP (func)); g_return_if_fail (SCM_PROCEDUREP (func));
arg = gw_wcp_assimilate_ptr (invoice, scm_c_eval_string("<gnc:GncInvoice*>")); arg = SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0);
args = scm_cons (arg, args); args = scm_cons (arg, args);
/* scm_gc_protect_object(func); */ /* scm_gc_protect_object(func); */
@@ -734,7 +734,6 @@ void gnc_invoice_window_new_invoice_cb (GtkWidget *widget, gpointer data)
void gnc_business_call_owner_report (GncOwner *owner, Account *acc) void gnc_business_call_owner_report (GncOwner *owner, Account *acc)
{ {
int id; int id;
SCM qtype;
SCM args; SCM args;
SCM func; SCM func;
SCM arg; SCM arg;
@@ -747,20 +746,17 @@ void gnc_business_call_owner_report (GncOwner *owner, Account *acc)
g_return_if_fail (SCM_PROCEDUREP (func)); g_return_if_fail (SCM_PROCEDUREP (func));
if (acc) { if (acc) {
qtype = scm_c_eval_string("<gnc:Account*>"); swig_type_info * qtype = SWIG_TypeQuery("_p_Account");
g_return_if_fail (qtype != SCM_UNDEFINED); g_return_if_fail (qtype);
arg = gw_wcp_assimilate_ptr (acc, qtype); arg = SWIG_NewPointerObj(acc, qtype, 0);
g_return_if_fail (arg != SCM_UNDEFINED); g_return_if_fail (arg != SCM_UNDEFINED);
args = scm_cons (arg, args); args = scm_cons (arg, args);
} else { } else {
args = scm_cons (SCM_BOOL_F, args); args = scm_cons (SCM_BOOL_F, args);
} }
qtype = scm_c_eval_string("<gnc:GncOwner*>"); arg = SWIG_NewPointerObj(owner, SWIG_TypeQuery("_p__gncOwner"), 0);
g_return_if_fail (qtype != SCM_UNDEFINED);
arg = gw_wcp_assimilate_ptr (owner, qtype);
g_return_if_fail (arg != SCM_UNDEFINED); g_return_if_fail (arg != SCM_UNDEFINED);
args = scm_cons (arg, args); args = scm_cons (arg, args);

View File

@@ -1,267 +0,0 @@
;;; -*-scheme-*-
;(debug-enable 'backtrace)
;(debug-enable 'debug)
;(read-enable 'positions)
(debug-set! maxdepth 100000)
(debug-set! stack 200000)
(define-module (g-wrapped gw-business-gnome-spec)
:use-module (g-wrap))
(use-modules (g-wrap))
(use-modules (g-wrap gw-standard-spec))
(use-modules (g-wrap gw-wct-spec))
(use-modules (g-wrapped gw-business-core-spec))
(use-modules (g-wrapped gw-gnome-utils-spec))
(let ((ws (gw:new-wrapset "gw-business-gnome")))
(gw:wrapset-depends-on ws "gw-standard")
(gw:wrapset-depends-on ws "gw-business-core")
(gw:wrapset-depends-on ws "gw-engine")
(gw:wrapset-depends-on ws "gw-gnome-utils")
(gw:wrapset-set-guile-module! ws '(g-wrapped gw-business-gnome))
(gw:wrapset-add-cs-declarations!
ws
(lambda (wrapset client-wrapset)
(list
"#include <config.h>\n"
"#include <gtk/gtk.h>\n"
"#include <business-urls.h>\n"
"#include <dialog-billterms.h>\n"
"#include <dialog-customer.h>\n"
"#include <dialog-employee.h>\n"
"#include <dialog-invoice.h>\n"
"#include <dialog-job.h>\n"
"#include <dialog-order.h>\n"
"#include <dialog-payment.h>\n"
"#include <dialog-vendor.h>\n"
)))
(gw:wrapset-add-cs-initializers!
ws
(lambda (wrapset client-wrapset status-var)
(if client-wrapset
'()
(gw:inline-scheme '(use-modules (gnucash business-gnome))))))
;;
;; Business URL Types
;;
(gw:wrap-value ws 'gnc:url-type-customer '<gnc:url-type>
"GNC_CUSTOMER_MODULE_NAME")
(gw:wrap-value ws 'gnc:url-type-vendor '<gnc:url-type>
"GNC_VENDOR_MODULE_NAME")
(gw:wrap-value ws 'gnc:url-type-employee '<gnc:url-type>
"GNC_EMPLOYEE_MODULE_NAME")
(gw:wrap-value ws 'gnc:url-type-invoice '<gnc:url-type>
"GNC_INVOICE_MODULE_NAME")
(gw:wrap-value ws 'gnc:url-type-ownerreport '<gnc:url-type>
"URL_TYPE_OWNERREPORT")
;;
;; dialog-billterms.h
;;
(gw:wrap-function
ws
'gnc:billterms-new
'<gw:void>
"gnc_ui_billterms_window_new"
'((<gnc:Book*> book))
"Dialog: view and edit the available Billing Terms.")
;;
;; dialog-customer.h
;;
(gw:wrap-function
ws
'gnc:customer-new
'<gw:void>
"gnc_ui_customer_new"
'((<gnc:Book*> book))
"Dialog: create a new GncCustomer.")
(gw:wrap-function
ws
'gnc:customer-edit
'<gw:void>
"gnc_ui_customer_edit"
'((<gnc:GncCustomer*> customer))
"Dialog: Edit a GncCustomer.")
(gw:wrap-function
ws
'gnc:customer-search
'<gw:void>
"gnc_customer_search"
'((<gnc:GncCustomer*> start_selection) (<gnc:Book*> book) )
"Dialog: Find a GncCustomer. Start_selection may be NULL.")
;;
;; dialog-employee.h
;;
(gw:wrap-function
ws
'gnc:employee-new
'<gw:void>
"gnc_ui_employee_new"
'((<gnc:Book*> book))
"Dialog: create a new GncEmployee.")
(gw:wrap-function
ws
'gnc:employee-edit
'<gw:void>
"gnc_ui_employee_edit"
'((<gnc:GncEmployee*> employee))
"Dialog: Edit a GncEmployee.")
(gw:wrap-function
ws
'gnc:employee-search
'<gw:void>
"gnc_employee_search"
'((<gnc:GncEmployee*> start_selection) (<gnc:Book*> book))
"Dialog: Find a GncEmployee. Start_selection may be NULL.")
;;
;; dialog-invoice.h
;;
(gw:wrap-function
ws
'gnc:invoice-new
'<gw:void>
"gnc_ui_invoice_new"
'((<gnc:GncOwner*> owner) (<gnc:Book*> book))
"Dialog: create a new GncInvoice.")
(gw:wrap-function
ws
'gnc:invoice-edit
'<gw:void>
"gnc_ui_invoice_edit"
'((<gnc:GncInvoice*> invoice))
"Dialog: Edit a GncInvoice.")
(gw:wrap-function
ws
'gnc:invoice-search
'<gw:void>
"gnc_invoice_search"
'((<gnc:GncInvoice*> start_selection) (<gnc:GncOwner*> owner)
(<gnc:Book*> book))
"Dialog: Select a GncInvoice. Either start_selection or "
"owner may be NULL.")
;;
;; dialog-job.h
;;
(gw:wrap-function
ws
'gnc:job-new
'<gw:void>
"gnc_ui_job_new"
'((<gnc:GncOwner*> default_owner) (<gnc:Book*> book))
"Dialog: create a new GncJob. Owner may be NULL.")
(gw:wrap-function
ws
'gnc:job-edit
'<gw:void>
"gnc_ui_job_edit"
'((<gnc:GncJob*> job))
"Dialog: Edit a GncJob.")
(gw:wrap-function
ws
'gnc:job-search
'<gw:void>
"gnc_job_search"
'((<gnc:GncJob*> job) (<gnc:GncOwner*> owner) (<gnc:Book*> book))
"Dialog: Search for a job. Job and Owner may be NULL.")
;;
;; dialog-order.h
;;
(gw:wrap-function
ws
'gnc:order-new
'<gw:void>
"gnc_ui_order_new"
'((<gnc:GncOwner*> owner) (<gnc:Book*> book))
"Dialog: create a new GncOrder.")
(gw:wrap-function
ws
'gnc:order-edit
'<gw:void>
"gnc_ui_order_edit"
'((<gnc:GncOrder*> order))
"Dialog: Edit a GncOrder.")
(gw:wrap-function
ws
'gnc:order-search
'<gw:void>
"gnc_order_search"
'((<gnc:GncOrder*> start_selection) (<gnc:GncOwner*> order_owner)
(<gnc:Book*> book) )
"Dialog: Select a GncOrder. Either start_selection or "
"order_owner may be NULL.")
;;
;; dialog-payment.h
;;
(gw:wrap-function
ws
'gnc:payment-new
'<gw:void>
"gnc_ui_payment_new"
'((<gnc:GncOwner*> owner) (<gnc:Book*> book))
"Dialog: Enter a payment. The owner may be NULL.")
;;
;; dialog-vendor.h
;;
(gw:wrap-function
ws
'gnc:vendor-new
'<gw:void>
"gnc_ui_vendor_new"
'((<gnc:Book*> book))
"Dialog: create a new GncVendor.")
(gw:wrap-function
ws
'gnc:vendor-edit
'<gw:void>
"gnc_ui_vendor_edit"
'((<gnc:GncVendor*> vendor))
"Dialog: Edit a GncVendor.")
(gw:wrap-function
ws
'gnc:vendor-search
'<gw:void>
"gnc_vendor_search"
'((<gnc:GncVendor*> start_selection) (<gnc:Book*> book))
"Dialog: Select a GncVendor. Start_selection may be NULL.")
)

View File

@@ -276,8 +276,6 @@ void gnc_entry_ledger_load_xfer_cells (GncEntryLedger *ledger)
*/ */
void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list) void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list)
{ {
static SCM id_book = SCM_UNDEFINED;
GncEntry *blank_entry, *find_entry; GncEntry *blank_entry, *find_entry;
CursorBuffer *cursor_buffer; CursorBuffer *cursor_buffer;
Table *table; Table *table;
@@ -359,11 +357,8 @@ void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list)
break; break;
} }
if (id_book == SCM_UNDEFINED)
id_book = scm_c_eval_string ("gnc:id-book");
/* Compute the proper taxtable */ /* Compute the proper taxtable */
odb = gnc_option_db_new_for_type (id_book); odb = gnc_option_db_new_for_type (GNC_ID_BOOK);
gnc_option_db_load_from_kvp (odb, gnc_book_get_slots (ledger->book)); gnc_option_db_load_from_kvp (odb, gnc_book_get_slots (ledger->book));
switch (gncOwnerGetType (owner)) { switch (gncOwnerGetType (owner)) {

View File

@@ -67,13 +67,13 @@
(define num-buckets 4) (define num-buckets 4)
(define (new-bucket-vector) (define (new-bucket-vector)
(make-vector num-buckets (gnc:numeric-zero))) (make-vector num-buckets (gnc-numeric-zero)))
(define make-company-private (define make-company-private
(record-constructor company-info '(currency bucket-vector overpayment owner-obj))) (record-constructor company-info '(currency bucket-vector overpayment owner-obj)))
(define (make-company currency owner-obj) (define (make-company currency owner-obj)
(make-company-private currency (new-bucket-vector) (gnc:numeric-zero) owner-obj)) (make-company-private currency (new-bucket-vector) (gnc-numeric-zero) owner-obj))
(define company-get-currency (define company-get-currency
(record-accessor company-info 'currency)) (record-accessor company-info 'currency))
@@ -116,11 +116,11 @@
(find-bucket (+ current-bucket 1) bucket-intervals date))))) (find-bucket (+ current-bucket 1) bucket-intervals date)))))
(define (calculate-adjusted-values amount overpayment) (define (calculate-adjusted-values amount overpayment)
(if (>= (gnc:numeric-compare amount overpayment) 0) (if (>= (gnc-numeric-compare amount overpayment) 0)
(cons (gnc:numeric-sub-fixed amount overpayment) (cons (gnc-numeric-sub-fixed amount overpayment)
(gnc:numeric-zero)) (gnc-numeric-zero))
(cons (gnc:numeric-zero) (cons (gnc-numeric-zero)
(gnc:numeric-sub-fixed overpayment amount)))) (gnc-numeric-sub-fixed overpayment amount))))
(let* ((current-overpayment (company-get-overpayment company)) (let* ((current-overpayment (company-get-overpayment company))
(adjusted-values (calculate-adjusted-values amount current-overpayment)) (adjusted-values (calculate-adjusted-values amount current-overpayment))
@@ -129,7 +129,7 @@
(bucket-index (find-bucket 0 bucket-intervals date)) (bucket-index (find-bucket 0 bucket-intervals date))
(buckets (company-get-buckets company)) (buckets (company-get-buckets company))
(new-bucket-value (new-bucket-value
(gnc:numeric-add-fixed adjusted-amount (vector-ref buckets bucket-index)))) (gnc-numeric-add-fixed adjusted-amount (vector-ref buckets bucket-index))))
(vector-set! buckets bucket-index new-bucket-value) (vector-set! buckets bucket-index new-bucket-value)
(company-set-buckets company buckets) (company-set-buckets company buckets)
(company-set-overpayment company adjusted-overpayment))) (company-set-overpayment company adjusted-overpayment)))
@@ -144,15 +144,15 @@
(if (>= current-bucket-index (vector-length buckets)) (if (>= current-bucket-index (vector-length buckets))
amount amount
(let ((current-bucket-amt (vector-ref buckets current-bucket-index))) (let ((current-bucket-amt (vector-ref buckets current-bucket-index)))
(if (>= (gnc:numeric-compare current-bucket-amt amount) 0) (if (>= (gnc-numeric-compare current-bucket-amt amount) 0)
(begin (begin
(vector-set! buckets current-bucket-index (gnc:numeric-sub-fixed (vector-set! buckets current-bucket-index (gnc-numeric-sub-fixed
current-bucket-amt amount)) current-bucket-amt amount))
(gnc:numeric-zero)) (gnc-numeric-zero))
(begin (begin
(vector-set! buckets current-bucket-index (gnc:numeric-zero)) (vector-set! buckets current-bucket-index (gnc-numeric-zero))
(process-payment-driver (process-payment-driver
(gnc:numeric-sub-fixed amount current-bucket-amt) (gnc-numeric-sub-fixed amount current-bucket-amt)
buckets buckets
(+ current-bucket-index 1))))))) (+ current-bucket-index 1)))))))
@@ -161,8 +161,8 @@
(gnc:debug "processing payment of " amount) (gnc:debug "processing payment of " amount)
(gnc:debug "overpayment was " overpayment) (gnc:debug "overpayment was " overpayment)
(if (gnc:numeric-positive-p overpayment) (if (gnc-numeric-positive-p overpayment)
(company-set-overpayment company (gnc:numeric-add-fixed overpayment amount)) (company-set-overpayment company (gnc-numeric-add-fixed overpayment amount))
(let ((result (process-payment-driver amount (company-get-buckets company) 0))) (let ((result (process-payment-driver amount (company-get-buckets company) 0)))
(gnc:debug "payment-driver processed. new overpayment: " result) (gnc:debug "payment-driver processed. new overpayment: " result)
@@ -179,36 +179,36 @@
reverse? show-zeros) reverse? show-zeros)
(define (do-update value) (define (do-update value)
(let* ((transaction (gnc:split-get-parent split)) (let* ((transaction (xaccSplitGetParent split))
(temp-owner (gnc:owner-create)) (temp-owner (gncOwnerCreate))
(owner (gnc:owner-from-split split temp-owner))) (owner (gnc:owner-from-split split temp-owner)))
(if (if
owner owner
(let* ((guid (gnc:owner-get-guid owner)) (let* ((guid (gncOwnerReturnGUID owner))
(this-currency (gnc:transaction-get-currency transaction)) (this-currency (xaccTransGetCurrency transaction))
(this-date (gnc:transaction-get-date-posted transaction)) (this-date (gnc-transaction-get-date-posted transaction))
(company-info (hash-ref hash guid))) (company-info (hash-ref hash guid)))
(gnc:debug "update-company-hash called") (gnc:debug "update-company-hash called")
(gnc:debug "owner: " owner ", guid: " guid) (gnc:debug "owner: " owner ", guid: " guid)
(gnc:debug "split-value: " value) (gnc:debug "split-value: " value)
(if reverse? (set! value (gnc:numeric-neg value))) (if reverse? (set! value (gnc-numeric-neg value)))
(if company-info (if company-info
;; if it's an existing company, destroy the temp owner and ;; if it's an existing company, destroy the temp owner and
;; then make sure the currencies match ;; then make sure the currencies match
(begin (begin
(gnc:owner-destroy temp-owner) (gncOwnerDestroy temp-owner)
(if (not (gnc:commodity-equiv? (if (not (gnc-commodity-equiv
this-currency this-currency
(company-get-currency company-info))) (company-get-currency company-info)))
(cons #f (sprintf (cons #f (sprintf
(_ "Transactions relating to '%s' contain \ (_ "Transactions relating to '%s' contain \
more than one currency. This report is not designed to cope with this possibility.") (gnc:owner-get-name owner))) more than one currency. This report is not designed to cope with this possibility.") (gncOwnerGetName owner)))
(begin (begin
(gnc:debug "it's an old company") (gnc:debug "it's an old company")
(if (gnc:numeric-negative-p value) (if (gnc-numeric-negative-p value)
(process-invoice company-info (gnc:numeric-neg value) bucket-intervals this-date) (process-invoice company-info (gnc-numeric-neg value) bucket-intervals this-date)
(process-payment company-info value)) (process-payment company-info value))
(hash-set! hash guid company-info) (hash-set! hash guid company-info)
(cons #t guid)))) (cons #t guid))))
@@ -217,19 +217,19 @@ more than one currency. This report is not designed to cope with this possibili
(begin (begin
(gnc:debug "value" value) (gnc:debug "value" value)
(let ((new-company (make-company this-currency owner))) (let ((new-company (make-company this-currency owner)))
(if (gnc:numeric-negative-p value) (if (gnc-numeric-negative-p value)
(process-invoice new-company (gnc:numeric-neg value) bucket-intervals this-date) (process-invoice new-company (gnc-numeric-neg value) bucket-intervals this-date)
(process-payment new-company value)) (process-payment new-company value))
(hash-set! hash guid new-company)) (hash-set! hash guid new-company))
(cons #t guid)))) (cons #t guid))))
; else (no owner) ; else (no owner)
(gnc:owner-destroy temp-owner)))) (gncOwnerDestroy temp-owner))))
;; figure out if this split is part of a closed lot ;; figure out if this split is part of a closed lot
;; also save the split value... ;; also save the split value...
(let* ((lot (gnc:split-get-lot split)) (let* ((lot (xaccSplitGetLot split))
(value (gnc:split-get-value split)) (value (xaccSplitGetValue split))
(is-paid? (if (null? lot) #f (gnc:lot-closed? lot)))) (is-paid? (if (null? lot) #f (gnc-lot-is-closed lot))))
;; if it's closed, then ignore it because it doesn't matter. ;; if it's closed, then ignore it because it doesn't matter.
;; XXX: we _could_ just set the value to 0 in order to list ;; XXX: we _could_ just set the value to 0 in order to list
@@ -240,11 +240,11 @@ more than one currency. This report is not designed to cope with this possibili
;; get the total debt from the buckets ;; get the total debt from the buckets
(define (buckets-get-total buckets) (define (buckets-get-total buckets)
(let ((running-total (gnc:numeric-zero)) (let ((running-total (gnc-numeric-zero))
(buckets-list (vector->list buckets))) (buckets-list (vector->list buckets)))
(for-each (lambda (bucket) (for-each (lambda (bucket)
(set! running-total (set! running-total
(gnc:numeric-add-fixed bucket running-total))) (gnc-numeric-add-fixed bucket running-total)))
buckets-list) buckets-list)
running-total)) running-total))
@@ -258,7 +258,7 @@ more than one currency. This report is not designed to cope with this possibili
(bucket-b (company-get-buckets company-b)) (bucket-b (company-get-buckets company-b))
(total-a (buckets-get-total bucket-a)) (total-a (buckets-get-total bucket-a))
(total-b (buckets-get-total bucket-b)) (total-b (buckets-get-total bucket-b))
(difference-sign (gnc:numeric-compare (gnc:numeric-sub-fixed total-a total-b) (gnc:numeric-zero)))) (difference-sign (gnc-numeric-compare (gnc-numeric-sub-fixed total-a total-b) (gnc-numeric-zero))))
;; if same totals, compare by name ;; if same totals, compare by name
(if (= difference-sign 0) (if (= difference-sign 0)
(gnc:safe-strcmp (car litem-a) (car litem-b)) (gnc:safe-strcmp (car litem-a) (car litem-b))
@@ -270,11 +270,11 @@ more than one currency. This report is not designed to cope with this possibili
(define (driver buckets-a buckets-b) (define (driver buckets-a buckets-b)
(if (null? buckets-a) (if (null? buckets-a)
0 0
(let ((diff (gnc:numeric-compare (let ((diff (gnc-numeric-compare
(gnc:numeric-sub-fixed (gnc-numeric-sub-fixed
(car buckets-a) (car buckets-a)
(car buckets-b)) (car buckets-b))
(gnc:numeric-zero)))) (gnc-numeric-zero))))
(if (= diff 0) (if (= diff 0)
(driver (cdr buckets-a) (cdr buckets-b)) (driver (cdr buckets-a) (cdr buckets-b))
diff)))) diff))))
@@ -304,14 +304,14 @@ more than one currency. This report is not designed to cope with this possibili
(set! begindate (decdate begindate NinetyDayDelta)) ;XXX - 360 days!?! (set! begindate (decdate begindate NinetyDayDelta)) ;XXX - 360 days!?!
(gnc:debug "begindate" begindate) (gnc:debug "begindate" begindate)
(gnc:debug "date" date) (gnc:debug "date" date)
(gnc:query-set-book query (gnc:get-current-book)) (qof-query-set-book query (gnc-get-current-book))
(gnc:query-set-match-non-voids-only! query (gnc:get-current-book)) (gnc:query-set-match-non-voids-only! query (gnc-get-current-book))
(gnc:query-add-single-account-match query account 'query-and) (xaccQueryAddSingleAccountMatch query account QOF-QUERY-AND)
(gnc:query-add-date-match-timepair query #t begindate #t date 'query-and) (xaccQueryAddDateMatchTS query #t begindate #t date QOF-QUERY-AND)
(gnc:query-set-sort-order query (qof-query-set-sort-order query
(list gnc:split-trans gnc:trans-date-posted) (list SPLIT-TRANS TRANS-DATE-POSTED)
'() '()) '() '())
(gnc:query-set-sort-increasing query #t #t #t))) (qof-query-set-sort-increasing query #t #t #t)))
(define (aging-options-generator options) (define (aging-options-generator options)
@@ -386,7 +386,7 @@ totals to report currency")
(define (get-name a) (define (get-name a)
(let* ((owner (company-get-owner-obj (cdr a)))) (let* ((owner (company-get-owner-obj (cdr a))))
(gnc:owner-get-name owner))) (gncOwnerGetName owner)))
;; Predicates for sorting the companys once the data has been collected ;; Predicates for sorting the companys once the data has been collected
@@ -472,12 +472,12 @@ totals to report currency")
;; convert the buckets in the header data structure ;; convert the buckets in the header data structure
(define (convert-to-monetary-list bucket-list currency overpayment) (define (convert-to-monetary-list bucket-list currency overpayment)
(let* ((running-total (gnc:numeric-neg overpayment)) (let* ((running-total (gnc-numeric-neg overpayment))
(monetised-buckets (monetised-buckets
(map (lambda (bucket-list-entry) (map (lambda (bucket-list-entry)
(begin (begin
(set! running-total (set! running-total
(gnc:numeric-add-fixed running-total bucket-list-entry)) (gnc-numeric-add-fixed running-total bucket-list-entry))
(gnc:make-gnc-monetary currency bucket-list-entry))) (gnc:make-gnc-monetary currency bucket-list-entry)))
(vector->list bucket-list)))) (vector->list bucket-list))))
(append (reverse monetised-buckets) (append (reverse monetised-buckets)
@@ -533,7 +533,7 @@ totals to report currency")
(exchange-fn (gnc:case-exchange-fn price-source report-currency report-date)) (exchange-fn (gnc:case-exchange-fn price-source report-currency report-date))
(total-collector-list (make-collector-list)) (total-collector-list (make-collector-list))
(table (gnc:make-html-table)) (table (gnc:make-html-table))
(query (gnc:malloc-query)) (query (qof-query-create-for-splits))
(company-list '()) (company-list '())
(work-done 0) (work-done 0)
(work-to-do 0) (work-to-do 0)
@@ -546,7 +546,7 @@ totals to report currency")
(if account (if account
(begin (begin
(gnc:html-document-set-title! (gnc:html-document-set-title!
document (string-append report-title ": " (gnc:account-get-name account))) document (string-append report-title ": " (xaccAccountGetName account)))
(gnc:html-document-set-headline! document (gnc:html-document-set-headline! document
(gnc:html-markup (gnc:html-markup
"!" "!"
@@ -554,7 +554,7 @@ totals to report currency")
": " ": "
(gnc:html-markup-anchor (gnc:html-markup-anchor
(gnc:account-anchor-text account) (gnc:account-anchor-text account)
(gnc:account-get-name account)))))) (xaccAccountGetName account))))))
(gnc:html-table-set-col-headers! table heading-list) (gnc:html-table-set-col-headers! table heading-list)
@@ -562,7 +562,7 @@ totals to report currency")
(begin (begin
(setup-query query account report-date) (setup-query query account report-date)
;; get the appropriate splits ;; get the appropriate splits
(let ((splits (gnc:query-get-splits query))) (let ((splits (qof-query-run query)))
; (gnc:debug "splits" splits) ; (gnc:debug "splits" splits)
;; build the table ;; build the table
@@ -602,7 +602,7 @@ totals to report currency")
(cdr company-list-entry)))) (cdr company-list-entry))))
(owner (company-get-owner-obj (owner (company-get-owner-obj
(cdr company-list-entry))) (cdr company-list-entry)))
(company-name (gnc:owner-get-name owner))) (company-name (gncOwnerGetName owner)))
(add-to-column-totals total-collector-list (add-to-column-totals total-collector-list
monetary-list) monetary-list)
@@ -627,7 +627,7 @@ totals to report currency")
(gnc:owner-anchor-text owner) (gnc:owner-anchor-text owner)
company-name)) company-name))
monetary-list)) monetary-list))
(gnc:owner-destroy owner))) (gncOwnerDestroy owner)))
company-list) company-list)
;; add the totals ;; add the totals
@@ -644,7 +644,7 @@ totals to report currency")
document document
(gnc:make-html-text (gnc:make-html-text
(_ "No valid account selected. Click on the Options button and select the account to use.")))) (_ "No valid account selected. Click on the Options button and select the account to use."))))
(gnc:free-query query) (qof-query-destroy query)
(gnc:report-finished) (gnc:report-finished)
document)) document))

View File

@@ -28,74 +28,72 @@
(gnc:module-load "gnucash/report/standard-reports" 0) (gnc:module-load "gnucash/report/standard-reports" 0)
(gnc:module-load "gnucash/business-utils" 0) (gnc:module-load "gnucash/business-utils" 0)
;; this defines gnc:url-type-ownerreport and pulls in gnome-utils ;; this defines URL-TYPE-OWNERREPORT and pulls in gnome-utils
;; to define gnc:html-build-url ;; to define gnc-build-url
(gnc:module-load "gnucash/business-gnome" 0) (gnc:module-load "gnucash/business-gnome" 0)
(define gnc:menuname-business-reports (N_ "_Business")) (define gnc:menuname-business-reports (N_ "_Business"))
(define (guid-ref idstr type guid) (define (guid-ref idstr type guid)
(gnc:html-build-url type (string-append idstr guid) #f)) (gnc-build-url type (string-append idstr guid) ""))
(define (gnc:customer-anchor-text customer) (define (gnc:customer-anchor-text customer)
(guid-ref "customer=" gnc:url-type-customer (gnc:customer-get-guid customer))) (guid-ref "customer=" URL-TYPE-CUSTOMER (gncCustomerReturnGUID customer)))
(define (gnc:job-anchor-text job) (define (gnc:job-anchor-text job)
(guid-ref "job=" gnc:url-type-job (gnc:job-get-guid job))) (guid-ref "job=" URL-TYPE-JOB (gncJobReturnGUID job)))
(define (gnc:vendor-anchor-text vendor) (define (gnc:vendor-anchor-text vendor)
(guid-ref "vendor=" gnc:url-type-vendor (gnc:vendor-get-guid vendor))) (guid-ref "vendor=" URL-TYPE-VENDOR (gncVendorReturnGUID vendor)))
(define (gnc:employee-anchor-text employee) (define (gnc:employee-anchor-text employee)
(guid-ref "employee=" gnc:url-type-employee (gnc:employee-get-guid employee))) (guid-ref "employee=" URL-TYPE-EMPLOYEE (gncEmployeeReturnGUID employee)))
(define (gnc:invoice-anchor-text invoice) (define (gnc:invoice-anchor-text invoice)
(guid-ref "invoice=" gnc:url-type-invoice (gnc:invoice-get-guid invoice))) (guid-ref "invoice=" URL-TYPE-INVOICE (gncInvoiceReturnGUID invoice)))
(define (gnc:owner-anchor-text owner) (define (gnc:owner-anchor-text owner)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType (gncOwnerGetEndOwner owner))))
(gnc:owner-get-type (gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer) (gnc:customer-anchor-text (gncOwnerGetCustomer owner)))
(gnc:customer-anchor-text (gnc:owner-get-customer owner)))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(gnc:vendor-anchor-text (gnc:owner-get-vendor owner))) (gnc:vendor-anchor-text (gncOwnerGetVendor owner)))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(gnc:employee-anchor-text (gnc:owner-get-employee owner))) (gnc:employee-anchor-text (gncOwnerGetEmployee owner)))
((gnc-owner-job) ((eqv? type GNC-OWNER-JOB)
(gnc:job-anchor-text (gnc:owner-get-job owner))) (gnc:job-anchor-text (gncOwnerGetJob owner)))
(else (else
"")))) ""))))
(define (gnc:owner-report-text owner acc) (define (gnc:owner-report-text owner acc)
(let* ((end-owner (gnc:owner-get-end-owner owner)) (let* ((end-owner (gncOwnerGetEndOwner owner))
(type (gw:enum-<gnc:GncOwnerType>-val->sym (type (gncOwnerGetType end-owner))
(gnc:owner-get-type end-owner) #f))
(ref #f)) (ref #f))
(case type (cond
((gnc-owner-customer) ((eqv? type GNC-OWNER-CUSTOMER)
(set! ref "owner=c:")) (set! ref "owner=c:"))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(set! ref "owner=v:")) (set! ref "owner=v:"))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(set! ref "owner=e:")) (set! ref "owner=e:"))
(else (set! ref "unknown-type="))) (else (set! ref "unknown-type=")))
(if ref (if ref
(begin (begin
(set! ref (string-append ref (gnc:owner-get-guid end-owner))) (set! ref (string-append ref (gncOwnerReturnGUID end-owner)))
(if acc (if acc
(set! ref (string-append ref "&acct=" (set! ref (string-append ref "&acct="
(gnc:account-get-guid acc)))) (gncAccountGetGUID acc))))
(gnc:html-build-url gnc:url-type-ownerreport ref #f)) (gnc-build-url URL-TYPE-OWNERREPORT ref ""))
ref))) ref)))
(export gnc:menuname-business-reports) (export gnc:menuname-business-reports)

View File

@@ -142,7 +142,7 @@
(val (cdr item)) (val (cdr item))
(ref (hash-ref hash acct))) (ref (hash-ref hash acct)))
(hash-set! hash acct (if ref (gnc:numeric-add-fixed ref val) val)))) (hash-set! hash acct (if ref (gnc-numeric-add-fixed ref val) val))))
values)) values))
@@ -167,54 +167,54 @@
(let* ((row-contents '()) (let* ((row-contents '())
(entry-value (gnc:make-gnc-monetary (entry-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-value entry invoice?))) (gncEntryReturnValue entry invoice?)))
(entry-tax-value (gnc:make-gnc-monetary (entry-tax-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-tax-value entry invoice?)))) (gncEntryReturnTaxValue entry invoice?))))
(if (date-col column-vector) (if (date-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:print-date (gnc:entry-get-date entry)))) (gnc-print-date (gncEntryGetDate entry))))
(if (description-col column-vector) (if (description-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-description entry))) (gncEntryGetDescription entry)))
(if (action-col column-vector) (if (action-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-action entry))) (gncEntryGetAction entry)))
(if (quantity-col column-vector) (if (quantity-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:entry-get-quantity entry)))) (gncEntryGetQuantity entry))))
(if (price-col column-vector) (if (price-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:make-gnc-monetary (gnc:make-gnc-monetary
currency (if invoice? (gnc:entry-get-inv-price entry) currency (if invoice? (gncEntryGetInvPrice entry)
(gnc:entry-get-bill-price entry)))))) (gncEntryGetBillPrice entry))))))
(if (discount-col column-vector) (if (discount-col column-vector)
(addto! row-contents (addto! row-contents
(if invoice? (if invoice?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(monetary-or-percent (gnc:entry-get-inv-discount entry) (monetary-or-percent (gncEntryGetInvDiscount entry)
currency currency
(gnc:entry-get-inv-discount-type entry))) (gncEntryGetInvDiscountType entry)))
""))) "")))
(if (tax-col column-vector) (if (tax-col column-vector)
(addto! row-contents (addto! row-contents
(if (if invoice? (if (if invoice?
(and (gnc:entry-get-inv-taxable entry) (and (gncEntryGetInvTaxable entry)
(gnc:entry-get-inv-tax-table entry)) (gncEntryGetInvTaxTable entry))
(and (gnc:entry-get-bill-taxable entry) (and (gncEntryGetBillTaxable entry)
(gnc:entry-get-bill-tax-table entry))) (gncEntryGetBillTaxTable entry)))
;; This "T" is supposed to be an abbrev. for Tax? ;; This "T" is supposed to be an abbrev. for Tax?
(_ "T") ""))) (_ "T") "")))
@@ -244,7 +244,7 @@
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-invoice-option invoice-page invoice-name "x" "" (gnc:make-invoice-option invoice-page invoice-name "x" ""
(lambda () #f) #f)) (lambda () '()) #f))
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-simple-boolean-option (gnc:make-simple-boolean-option
@@ -376,9 +376,9 @@
(let ((show-payments (opt-val "Display" "Payments")) (let ((show-payments (opt-val "Display" "Payments"))
(display-all-taxes (opt-val "Display" "Individual Taxes")) (display-all-taxes (opt-val "Display" "Individual Taxes"))
(lot (gnc:invoice-get-posted-lot invoice)) (lot (gncInvoiceGetPostedLot invoice))
(txn (gnc:invoice-get-posted-txn invoice)) (txn (gncInvoiceGetPostedTxn invoice))
(currency (gnc:invoice-get-currency invoice))) (currency (gncInvoiceGetCurrency invoice)))
(define (colspan monetary used-columns) (define (colspan monetary used-columns)
(cond (cond
@@ -391,7 +391,7 @@
monetary monetary
(let ((amt (gnc:gnc-monetary-amount monetary))) (let ((amt (gnc:gnc-monetary-amount monetary)))
(if amt (if amt
(if (gnc:numeric-negative-p amt) (if (gnc-numeric-negative-p amt)
(gnc:monetary-neg monetary) (gnc:monetary-neg monetary)
monetary) monetary)
monetary)))) monetary))))
@@ -415,10 +415,10 @@
currency-totals))) currency-totals)))
(define (add-payment-row table used-columns split total-collector) (define (add-payment-row table used-columns split total-collector)
(let* ((t (gnc:split-get-parent split)) (let* ((t (xaccSplitGetParent split))
(currency (gnc:transaction-get-currency t)) (currency (xaccTransGetCurrency t))
;; XXX Need to know when to reverse the value ;; XXX Need to know when to reverse the value
(amt (gnc:make-gnc-monetary currency (gnc:split-get-value split))) (amt (gnc:make-gnc-monetary currency (xaccSplitGetValue split)))
(payment-style "grand-total") (payment-style "grand-total")
(row '())) (row '()))
@@ -428,7 +428,7 @@
(if (date-col used-columns) (if (date-col used-columns)
(addto! row (addto! row
(gnc:print-date (gnc:transaction-get-date-posted t)))) (gnc-print-date (gnc-transaction-get-date-posted t))))
(if (description-col used-columns) (if (description-col used-columns)
(addto! row (_ "Payment, thank you"))) (addto! row (_ "Payment, thank you")))
@@ -462,8 +462,8 @@
(hash-for-each (hash-for-each
(lambda (acct value) (lambda (acct value)
(let ((collector (gnc:make-commodity-collector)) (let ((collector (gnc:make-commodity-collector))
(commodity (gnc:account-get-commodity acct)) (commodity (xaccAccountGetCommodity acct))
(name (gnc:account-get-name acct))) (name (xaccAccountGetName acct)))
(collector 'add commodity value) (collector 'add commodity value)
(add-subtotal-row table used-columns collector (add-subtotal-row table used-columns collector
"grand-total" name))) "grand-total" name)))
@@ -475,14 +475,14 @@
(if (and show-payments lot) (if (and show-payments lot)
(let ((splits (sort-list! (let ((splits (sort-list!
(gnc:lot-get-splits lot) (gnc-lot-get-split-list lot)
(lambda (s1 s2) (lambda (s1 s2)
(let ((t1 (gnc:split-get-parent s1)) (let ((t1 (xaccSplitGetParent s1))
(t2 (gnc:split-get-parent s2))) (t2 (xaccSplitGetParent s2)))
(< (gnc:transaction-order t1 t2) 0)))))) (< (xaccTransOrder t1 t2) 0))))))
(for-each (for-each
(lambda (split) (lambda (split)
(if (not (equal? (gnc:split-get-parent split) txn)) (if (not (equal? (xaccSplitGetParent split) txn))
(add-payment-row table used-columns (add-payment-row table used-columns
split total-collector))) split total-collector)))
splits))) splits)))
@@ -506,7 +506,7 @@
invoice?))) invoice?)))
(if display-all-taxes (if display-all-taxes
(let ((tax-list (gnc:entry-get-tax-values current invoice?))) (let ((tax-list (gncEntryReturnTaxValues current invoice?)))
(update-account-hash acct-hash tax-list)) (update-account-hash acct-hash tax-list))
(tax-collector 'add (tax-collector 'add
(gnc:gnc-monetary-commodity (cdr entry-values)) (gnc:gnc-monetary-commodity (cdr entry-values))
@@ -539,7 +539,7 @@
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(used-columns (build-column-used options)) (used-columns (build-column-used options))
(width (num-columns-required used-columns)) (width (num-columns-required used-columns))
(entries (gnc:invoice-get-entries invoice)) (entries (gncInvoiceGetEntries invoice))
(totals (gnc:make-commodity-collector))) (totals (gnc:make-commodity-collector)))
(gnc:html-table-set-col-headers! (gnc:html-table-set-col-headers!
@@ -591,7 +591,7 @@
(list "<br>")) (list "<br>"))
(for-each (for-each
(lambda (order) (lambda (order)
(let* ((reference (gnc:order-get-reference order))) (let* ((reference (gncOrderGetReference order)))
(if (and reference (> (string-length reference) 0)) (if (and reference (> (string-length reference) 0))
(gnc:html-table-append-row! (gnc:html-table-append-row!
table table
@@ -609,7 +609,7 @@
table table
(list (list
(string-append label ":&nbsp;") (string-append label ":&nbsp;")
(string-expand (gnc:print-date date) #\space "&nbsp;")))) (string-expand (gnc-print-date date) #\space "&nbsp;"))))
(define (make-date-table) (define (make-date-table)
(let ((table (gnc:make-html-table))) (let ((table (gnc:make-html-table)))
@@ -624,11 +624,11 @@
(define (make-myname-table book) (define (make-myname-table book)
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(name (gnc:kvp-frame-get-slot-path (name (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-name*)))) (list gnc:*business-label* gnc:*company-name*))))
(addy (gnc:kvp-frame-get-slot-path (addy (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-addy*))))) (list gnc:*business-label* gnc:*company-addy*)))))
@@ -674,7 +674,7 @@
(table '()) (table '())
(orders '()) (orders '())
(invoice (opt-val invoice-page invoice-name)) (invoice (opt-val invoice-page invoice-name))
(owner #f) (owner '())
(references? (opt-val "Display" "References")) (references? (opt-val "Display" "References"))
(title (_ "Invoice")) (title (_ "Invoice"))
(invoice? #f)) (invoice? #f))
@@ -685,19 +685,18 @@
(if invoice (if invoice
(begin (begin
(set! owner (gnc:invoice-get-owner invoice)) (set! owner (gncInvoiceGetOwner invoice))
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType
(gnc:owner-get-type (gncOwnerGetEndOwner owner))))
(gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer)
(set! invoice? #t)) (set! invoice? #t))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(set! title (_ "Bill"))) (set! title (_ "Bill")))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(set! title (_ "Expense Voucher"))))) (set! title (_ "Expense Voucher")))))
(set! title (sprintf #f (_"%s #%d") title (set! title (sprintf #f (_"%s #%d") title
(gnc:invoice-get-id invoice))))) (gncInvoiceGetID invoice)))))
; (gnc:html-document-set-title! document title) ; (gnc:html-document-set-title! document title)
@@ -715,14 +714,14 @@
(add-html! document "<td align='left'>") (add-html! document "<td align='left'>")
(add-html! document "<b><u>") (add-html! document "<b><u>")
(add-html! document (sprintf #f (_ "Invoice #%d") (add-html! document (sprintf #f (_ "Invoice #%d")
(gnc:invoice-get-id invoice))) (gncInvoiceGetID invoice)))
(add-html! document "</u></b></td>") (add-html! document "</u></b></td>")
(add-html! document "<td align='right'>") (add-html! document "<td align='right'>")
(if (opt-val "Display" "My Company ID") (if (opt-val "Display" "My Company ID")
(let* ((book (gnc:invoice-get-book invoice)) (let* ((book (gncInvoiceGetBook invoice))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(taxid (gnc:kvp-frame-get-slot-path (taxid (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-id*))))) (list gnc:*business-label* gnc:*company-id*)))))
(if (and taxid (> (string-length taxid) 0)) (if (and taxid (> (string-length taxid) 0))
@@ -738,7 +737,7 @@
(make-break! document) (make-break! document)
; add the client and company name table ; add the client and company name table
(let ((book (gnc:invoice-get-book invoice))) (let ((book (gncInvoiceGetBook invoice)))
(set! table (make-entry-table invoice (set! table (make-entry-table invoice
(gnc:report-options report-obj) (gnc:report-options report-obj)
add-order invoice?)) add-order invoice?))
@@ -760,9 +759,8 @@
) )
; add the date ; add the date
(let ((date-table #f) (let ((post-date (gncInvoiceGetDatePosted invoice))
(post-date (gnc:invoice-get-date-posted invoice)) (due-date (gncInvoiceGetDateDue invoice)))
(due-date (gnc:invoice-get-date-due invoice)))
(if (not (equal? post-date (cons 0 0))) (if (not (equal? post-date (cons 0 0)))
(begin (begin
(add-html! document "<table border=0><tr>") (add-html! document "<table border=0><tr>")
@@ -770,7 +768,7 @@
(add-html! document "Date: ") (add-html! document "Date: ")
(add-html! document "</td>") (add-html! document "</td>")
(add-html! document "<td>") (add-html! document "<td>")
(add-html! document (gnc:print-date post-date)) (add-html! document (gnc-print-date post-date))
(add-html! document "</td>") (add-html! document "</td>")
(if (opt-val "Display" "Due Date") (if (opt-val "Display" "Due Date")
(begin (begin
@@ -778,7 +776,7 @@
(add-html! document "Due: ") (add-html! document "Due: ")
(add-html! document "</td>") (add-html! document "</td>")
(add-html! document "<td>") (add-html! document "<td>")
(add-html! document (gnc:print-date due-date)) (add-html! document (gnc-print-date due-date))
(add-html! document "</td>"))) (add-html! document "</td>")))
(add-html! document "</tr></table>")) (add-html! document "</tr></table>"))
(add-html! document (add-html! document
@@ -791,7 +789,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Billing ID") (if (opt-val "Display" "Billing ID")
(let ((billing-id (gnc:invoice-get-billing-id invoice))) (let ((billing-id (gncInvoiceGetBillingID invoice)))
(if (and billing-id (> (string-length billing-id) 0)) (if (and billing-id (> (string-length billing-id) 0))
(begin (begin
(gnc:html-document-add-object! (gnc:html-document-add-object!
@@ -803,8 +801,8 @@
(make-break! document))))) (make-break! document)))))
(if (opt-val "Display" "Billing Terms") (if (opt-val "Display" "Billing Terms")
(let* ((term (gnc:invoice-get-terms invoice)) (let* ((term (gncInvoiceGetTerms invoice))
(terms (gnc:bill-term-get-description term))) (terms (gncBillTermGetDescription term)))
(if (and terms (> (string-length terms) 0)) (if (and terms (> (string-length terms) 0))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
@@ -829,7 +827,7 @@
(if (opt-val "Display" "Invoice Notes") (if (opt-val "Display" "Invoice Notes")
(begin (begin
(let ((notes (gnc:invoice-get-notes invoice))) (let ((notes (gncInvoiceGetNotes invoice)))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
(gnc:make-html-text (gnc:make-html-text

View File

@@ -160,7 +160,7 @@
(val (cdr item)) (val (cdr item))
(ref (hash-ref hash acct))) (ref (hash-ref hash acct)))
(hash-set! hash acct (if ref (gnc:numeric-add-fixed ref val) val)))) (hash-set! hash acct (if ref (gnc-numeric-add-fixed ref val) val))))
values)) values))
(define (monetary-or-percent numeric currency entry-type) (define (monetary-or-percent numeric currency entry-type)
@@ -173,54 +173,54 @@
(let* ((row-contents '()) (let* ((row-contents '())
(entry-value (gnc:make-gnc-monetary (entry-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-value entry invoice?))) (gncEntryReturnValue entry invoice?)))
(entry-tax-value (gnc:make-gnc-monetary (entry-tax-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-tax-value entry invoice?)))) (gncEntryReturnTaxValue entry invoice?))))
(if (date-col column-vector) (if (date-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:print-date (gnc:entry-get-date entry)))) (gnc-print-date (gncEntryGetDate entry))))
(if (description-col column-vector) (if (description-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-description entry))) (gncEntryGetDescription entry)))
(if (action-col column-vector) (if (action-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-action entry))) (gncEntryGetAction entry)))
(if (quantity-col column-vector) (if (quantity-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:entry-get-quantity entry)))) (gncEntryGetQuantity entry))))
(if (price-col column-vector) (if (price-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:make-gnc-monetary (gnc:make-gnc-monetary
currency (if invoice? (gnc:entry-get-inv-price entry) currency (if invoice? (gncEntryGetInvPrice entry)
(gnc:entry-get-bill-price entry)))))) (gncEntryGetBillPrice entry))))))
(if (discount-col column-vector) (if (discount-col column-vector)
(addto! row-contents (addto! row-contents
(if invoice? (if invoice?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(monetary-or-percent (gnc:entry-get-inv-discount entry) (monetary-or-percent (gncEntryGetInvDiscount entry)
currency currency
(gnc:entry-get-inv-discount-type entry))) (gncEntryGetInvDiscountType entry)))
""))) "")))
(if (tax-col column-vector) (if (tax-col column-vector)
(addto! row-contents (addto! row-contents
(if (if invoice? (if (if invoice?
(and (gnc:entry-get-inv-taxable entry) (and (gncEntryGetInvTaxable entry)
(gnc:entry-get-inv-tax-table entry)) (gncEntryGetInvTaxTable entry))
(and (gnc:entry-get-bill-taxable entry) (and (gncEntryGetBillTaxable entry)
(gnc:entry-get-bill-tax-table entry))) (gncEntryGetBillTaxTable entry)))
(_ "T") ""))) (_ "T") "")))
(if (taxvalue-col column-vector) (if (taxvalue-col column-vector)
@@ -251,7 +251,7 @@
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-invoice-option invoice-page invoice-name "x" "" (gnc:make-invoice-option invoice-page invoice-name "x" ""
(lambda () #f) #f)) (lambda () '()) #f))
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-simple-boolean-option (gnc:make-simple-boolean-option
@@ -349,7 +349,7 @@
(gnc:make-complex-boolean-option (gnc:make-complex-boolean-option
(N_ "Display") (N_ "Payable to") (N_ "Display") (N_ "Payable to")
"ua1" (N_ "Display the Payable to: information") #t #f "ua1" (N_ "Display the Payable to: information") #t #f
(lambda (x) (gnc:option-db-set-option-selectable-by-name (lambda (x) (gnc-option-db-set-option-selectable-by-name
gnc:*report-options* "Display" "Payable to string" x)))) gnc:*report-options* "Display" "Payable to string" x))))
(gnc:register-inv-option (gnc:register-inv-option
@@ -362,7 +362,7 @@
(gnc:make-complex-boolean-option (gnc:make-complex-boolean-option
(N_ "Display") (N_ "Company contact") (N_ "Display") (N_ "Company contact")
"ub1" (N_ "Display the Company contact information") #t #f "ub1" (N_ "Display the Company contact information") #t #f
(lambda (x) (gnc:option-db-set-option-selectable-by-name (lambda (x) (gnc-option-db-set-option-selectable-by-name
gnc:*report-options* "Display" "Company contact string" x)))) gnc:*report-options* "Display" "Company contact string" x))))
(gnc:register-inv-option (gnc:register-inv-option
@@ -389,9 +389,9 @@
(let ((show-payments (opt-val "Display" "Payments")) (let ((show-payments (opt-val "Display" "Payments"))
(display-all-taxes (opt-val "Display" "Individual Taxes")) (display-all-taxes (opt-val "Display" "Individual Taxes"))
(lot (gnc:invoice-get-posted-lot invoice)) (lot (gncInvoiceGetPostedLot invoice))
(txn (gnc:invoice-get-posted-txn invoice)) (txn (gncInvoiceGetPostedTxn invoice))
(currency (gnc:invoice-get-currency invoice)) (currency (gncInvoiceGetCurrency invoice))
(entries-added 0)) (entries-added 0))
(define (colspan monetary used-columns) (define (colspan monetary used-columns)
@@ -405,7 +405,7 @@
monetary monetary
(let ((amt (gnc:gnc-monetary-amount monetary))) (let ((amt (gnc:gnc-monetary-amount monetary)))
(if amt (if amt
(if (gnc:numeric-negative-p amt) (if (gnc-numeric-negative-p amt)
(gnc:monetary-neg monetary) (gnc:monetary-neg monetary)
monetary) monetary)
monetary)))) monetary))))
@@ -432,10 +432,10 @@
currency-totals))) currency-totals)))
(define (add-payment-row table used-columns split total-collector) (define (add-payment-row table used-columns split total-collector)
(let* ((t (gnc:split-get-parent split)) (let* ((t (xaccSplitGetParent split))
(currency (gnc:transaction-get-currency t)) (currency (xaccTransGetCurrency t))
;; XXX Need to know when to reverse the value ;; XXX Need to know when to reverse the value
(amt (gnc:make-gnc-monetary currency (gnc:split-get-value split))) (amt (gnc:make-gnc-monetary currency (xaccSplitGetValue split)))
(payment-style "grand-total") (payment-style "grand-total")
(row '())) (row '()))
@@ -445,7 +445,7 @@
(if (date-col used-columns) (if (date-col used-columns)
(addto! row (addto! row
(gnc:print-date (gnc:transaction-get-date-posted t)))) (gnc-print-date (gnc-transaction-get-date-posted t))))
(if (description-col used-columns) (if (description-col used-columns)
(addto! row (_ "Payment, thank you"))) (addto! row (_ "Payment, thank you")))
@@ -488,8 +488,8 @@
(hash-for-each (hash-for-each
(lambda (acct value) (lambda (acct value)
(let ((collector (gnc:make-commodity-collector)) (let ((collector (gnc:make-commodity-collector))
(commodity (gnc:account-get-commodity acct)) (commodity (xaccAccountGetCommodity acct))
(name (gnc:account-get-name acct))) (name (xaccAccountGetName acct)))
(collector 'add commodity value) (collector 'add commodity value)
(add-subtotal-row table used-columns collector (add-subtotal-row table used-columns collector
"grand-total" (string-expand "grand-total" (string-expand
@@ -502,14 +502,14 @@
(if (and show-payments lot) (if (and show-payments lot)
(let ((splits (sort-list! (let ((splits (sort-list!
(gnc:lot-get-splits lot) (gnc-lot-get-split-list lot)
(lambda (s1 s2) (lambda (s1 s2)
(let ((t1 (gnc:split-get-parent s1)) (let ((t1 (xaccSplitGetParent s1))
(t2 (gnc:split-get-parent s2))) (t2 (xaccSplitGetParent s2)))
(< (gnc:transaction-order t1 t2) 0)))))) (< (xaccTransOrder t1 t2) 0))))))
(for-each (for-each
(lambda (split) (lambda (split)
(if (not (equal? (gnc:split-get-parent split) txn)) (if (not (equal? (xaccSplitGetParent split) txn))
(add-payment-row table used-columns (add-payment-row table used-columns
split total-collector))) split total-collector)))
splits))) splits)))
@@ -534,7 +534,7 @@
invoice?))) invoice?)))
(if display-all-taxes (if display-all-taxes
(let ((tax-list (gnc:entry-get-tax-values current invoice?))) (let ((tax-list (gncEntryReturnTaxValues current invoice?)))
(update-account-hash acct-hash tax-list)) (update-account-hash acct-hash tax-list))
(tax-collector 'add (tax-collector 'add
(gnc:gnc-monetary-commodity (cdr entry-values)) (gnc:gnc-monetary-commodity (cdr entry-values))
@@ -569,7 +569,7 @@
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(used-columns (build-column-used options)) (used-columns (build-column-used options))
(width (num-columns-required used-columns)) (width (num-columns-required used-columns))
(entries (gnc:invoice-get-entries invoice)) (entries (gncInvoiceGetEntries invoice))
(totals (gnc:make-commodity-collector))) (totals (gnc:make-commodity-collector)))
(gnc:html-table-set-col-headers! (gnc:html-table-set-col-headers!
@@ -628,7 +628,7 @@
(list "<br>")) (list "<br>"))
(for-each (for-each
(lambda (order) (lambda (order)
(let* ((reference (gnc:order-get-reference order))) (let* ((reference (gncOrderGetReference order)))
(if (and reference (> (string-length reference) 0)) (if (and reference (> (string-length reference) 0))
(gnc:html-table-append-row! (gnc:html-table-append-row!
table table
@@ -649,7 +649,7 @@
;; for the invoice date/due date fields ;; for the invoice date/due date fields
;; I could have taken the format from the report options, but... ;) ;; I could have taken the format from the report options, but... ;)
(string-expand (strftime "%B %e, %Y" (localtime (car date))) #\space "&nbsp;") (string-expand (strftime "%B %e, %Y" (localtime (car date))) #\space "&nbsp;")
;;(string-expand (gnc:print-date date) #\space "&nbsp;") ;;(string-expand (gnc-print-date date) #\space "&nbsp;")
))) )))
(define (make-date-table) (define (make-date-table)
@@ -665,26 +665,26 @@
(define (make-myname-table book date-format) (define (make-myname-table book date-format)
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(name (gnc:kvp-frame-get-slot-path (name (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-name*)))) (list gnc:*business-label* gnc:*company-name*))))
;; (contact (gnc:kvp-frame-get-slot-path ;; (contact (kvp-frame-get-slot-path-gslist
;; slots (append gnc:*kvp-option-path* ;; slots (append gnc:*kvp-option-path*
;; (list gnc:*business-label* gnc:*company-contact*)))) ;; (list gnc:*business-label* gnc:*company-contact*))))
(addy (gnc:kvp-frame-get-slot-path (addy (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-addy*)))) (list gnc:*business-label* gnc:*company-addy*))))
(id (gnc:kvp-frame-get-slot-path (id (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-id*)))) (list gnc:*business-label* gnc:*company-id*))))
(phone (gnc:kvp-frame-get-slot-path (phone (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-phone*)))) (list gnc:*business-label* gnc:*company-phone*))))
(fax (gnc:kvp-frame-get-slot-path (fax (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-fax*)))) (list gnc:*business-label* gnc:*company-fax*))))
(url (gnc:kvp-frame-get-slot-path (url (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-url*)))) (list gnc:*business-label* gnc:*company-url*))))
(invoice-cell (gnc:make-html-table-cell)) (invoice-cell (gnc:make-html-table-cell))
@@ -757,7 +757,7 @@
(table '()) (table '())
(orders '()) (orders '())
(invoice (opt-val invoice-page invoice-name)) (invoice (opt-val invoice-page invoice-name))
(owner #f) (owner '())
(references? (opt-val "Display" "References")) (references? (opt-val "Display" "References"))
(title (_ "Invoice")) (title (_ "Invoice"))
(invoice? #f)) (invoice? #f))
@@ -768,26 +768,25 @@
(if invoice (if invoice
(begin (begin
(set! owner (gnc:invoice-get-owner invoice)) (set! owner (gncInvoiceGetOwner invoice))
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType
(gnc:owner-get-type (gncOwnerGetEndOwner owner))))
(gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer)
(set! invoice? #t)) (set! invoice? #t))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(set! title (_ "Bill"))) (set! title (_ "Bill")))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(set! title (_ "Expense Voucher"))))) (set! title (_ "Expense Voucher")))))
(set! title (sprintf #f (_"%s #%d") title (set! title (sprintf #f (_"%s #%d") title
(gnc:invoice-get-id invoice))))) (gncInvoiceGetID invoice)))))
;; oli-custom - title redundant, "Invoice" moved to myname-table, ;; oli-custom - title redundant, "Invoice" moved to myname-table,
;; invoice number moved below ;; invoice number moved below
;;(gnc:html-document-set-title! document title) ;;(gnc:html-document-set-title! document title)
(if invoice (if invoice
(let* ((book (gnc:invoice-get-book invoice)) (let* ((book (gncInvoiceGetBook invoice))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(date-object #f) (date-object #f)
(helper-table (gnc:make-html-table))) (helper-table (gnc:make-html-table)))
(set! table (make-entry-table invoice (set! table (make-entry-table invoice
@@ -835,8 +834,8 @@
'attribute (list "width" "100%")) 'attribute (list "width" "100%"))
(set! date-object (let ((date-table #f) (set! date-object (let ((date-table #f)
(post-date (gnc:invoice-get-date-posted invoice)) (post-date (gncInvoiceGetDatePosted invoice))
(due-date (gnc:invoice-get-date-due invoice))) (due-date (gncInvoiceGetDateDue invoice)))
(if (not (equal? post-date (cons 0 0))) (if (not (equal? post-date (cons 0 0)))
(begin (begin
@@ -844,7 +843,7 @@
;; oli-custom - moved invoice number here ;; oli-custom - moved invoice number here
(gnc:html-table-append-row! (gnc:html-table-append-row!
date-table (list (sprintf #f (_ "Invoice&nbsp;#&nbsp;%d") date-table (list (sprintf #f (_ "Invoice&nbsp;#&nbsp;%d")
(gnc:invoice-get-id invoice)))) (gncInvoiceGetID invoice))))
(make-date-row! date-table (_ "Invoice&nbsp;Date") post-date) (make-date-row! date-table (_ "Invoice&nbsp;Date") post-date)
(make-date-row! date-table (_ "Due&nbsp;Date") due-date) (make-date-row! date-table (_ "Due&nbsp;Date") due-date)
date-table) date-table)
@@ -876,7 +875,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Billing ID") (if (opt-val "Display" "Billing ID")
(let ((billing-id (gnc:invoice-get-billing-id invoice))) (let ((billing-id (gncInvoiceGetBillingID invoice)))
(if (and billing-id (> (string-length billing-id) 0)) (if (and billing-id (> (string-length billing-id) 0))
(begin (begin
(gnc:html-document-add-object! (gnc:html-document-add-object!
@@ -888,8 +887,8 @@
(make-break! document))))) (make-break! document)))))
(if (opt-val "Display" "Billing Terms") (if (opt-val "Display" "Billing Terms")
(let* ((term (gnc:invoice-get-terms invoice)) (let* ((term (gncInvoiceGetTerms invoice))
(terms (gnc:bill-term-get-description term))) (terms (gncBillTermGetDescription term)))
(if (and terms (> (string-length terms) 0)) (if (and terms (> (string-length terms) 0))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
@@ -906,7 +905,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Invoice Notes") (if (opt-val "Display" "Invoice Notes")
(let ((notes (gnc:invoice-get-notes invoice))) (let ((notes (gncInvoiceGetNotes invoice)))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
(gnc:make-html-text (gnc:make-html-text
@@ -915,7 +914,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Payable to") (if (opt-val "Display" "Payable to")
(let* ((name (gnc:kvp-frame-get-slot-path (let* ((name (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* (list gnc:*business-label*
gnc:*company-name*)))) gnc:*company-name*))))
@@ -930,7 +929,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Company contact") (if (opt-val "Display" "Company contact")
(let* ((contact (gnc:kvp-frame-get-slot-path (let* ((contact (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* (list gnc:*business-label*
gnc:*company-contact*)))) gnc:*company-contact*))))

View File

@@ -136,7 +136,7 @@
(val (cdr item)) (val (cdr item))
(ref (hash-ref hash acct))) (ref (hash-ref hash acct)))
(hash-set! hash acct (if ref (gnc:numeric-add-fixed ref val) val)))) (hash-set! hash acct (if ref (gnc-numeric-add-fixed ref val) val))))
values)) values))
@@ -161,54 +161,54 @@
(let* ((row-contents '()) (let* ((row-contents '())
(entry-value (gnc:make-gnc-monetary (entry-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-value entry invoice?))) (gncEntryReturnValue entry invoice?)))
(entry-tax-value (gnc:make-gnc-monetary (entry-tax-value (gnc:make-gnc-monetary
currency currency
(gnc:entry-get-tax-value entry invoice?)))) (gncEntryReturnTaxValue entry invoice?))))
(if (date-col column-vector) (if (date-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:print-date (gnc:entry-get-date entry)))) (gnc-print-date (gncEntryGetDate entry))))
(if (description-col column-vector) (if (description-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-description entry))) (gncEntryGetDescription entry)))
(if (action-col column-vector) (if (action-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:entry-get-action entry))) (gncEntryGetAction entry)))
(if (quantity-col column-vector) (if (quantity-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:entry-get-quantity entry)))) (gncEntryGetQuantity entry))))
(if (price-col column-vector) (if (price-col column-vector)
(addto! row-contents (addto! row-contents
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(gnc:make-gnc-monetary (gnc:make-gnc-monetary
currency (if invoice? (gnc:entry-get-inv-price entry) currency (if invoice? (gncEntryGetInvPrice entry)
(gnc:entry-get-bill-price entry)))))) (gncEntryGetBillPrice entry))))))
(if (discount-col column-vector) (if (discount-col column-vector)
(addto! row-contents (addto! row-contents
(if invoice? (if invoice?
(gnc:make-html-table-cell/markup (gnc:make-html-table-cell/markup
"number-cell" "number-cell"
(monetary-or-percent (gnc:entry-get-inv-discount entry) (monetary-or-percent (gncEntryGetInvDiscount entry)
currency currency
(gnc:entry-get-inv-discount-type entry))) (gncEntryGetInvDiscountType entry)))
""))) "")))
(if (tax-col column-vector) (if (tax-col column-vector)
(addto! row-contents (addto! row-contents
(if (if invoice? (if (if invoice?
(and (gnc:entry-get-inv-taxable entry) (and (gncEntryGetInvTaxable entry)
(gnc:entry-get-inv-tax-table entry)) (gncEntryGetInvTaxTable entry))
(and (gnc:entry-get-bill-taxable entry) (and (gncEntryGetBillTaxable entry)
(gnc:entry-get-bill-tax-table entry))) (gncEntryGetBillTaxTable entry)))
(_ "T") ""))) (_ "T") "")))
(if (taxvalue-col column-vector) (if (taxvalue-col column-vector)
@@ -237,7 +237,7 @@
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-invoice-option invoice-page invoice-name "x" "" (gnc:make-invoice-option invoice-page invoice-name "x" ""
(lambda () #f) #f)) (lambda () '()) #f))
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-simple-boolean-option (gnc:make-simple-boolean-option
@@ -342,9 +342,9 @@
(let ((show-payments (opt-val "Display" "Payments")) (let ((show-payments (opt-val "Display" "Payments"))
(display-all-taxes (opt-val "Display" "Individual Taxes")) (display-all-taxes (opt-val "Display" "Individual Taxes"))
(lot (gnc:invoice-get-posted-lot invoice)) (lot (gncInvoiceGetPostedLot invoice))
(txn (gnc:invoice-get-posted-txn invoice)) (txn (gncInvoiceGetPostedTxn invoice))
(currency (gnc:invoice-get-currency invoice))) (currency (gncInvoiceGetCurrency invoice)))
(define (colspan monetary used-columns) (define (colspan monetary used-columns)
(cond (cond
@@ -357,7 +357,7 @@
monetary monetary
(let ((amt (gnc:gnc-monetary-amount monetary))) (let ((amt (gnc:gnc-monetary-amount monetary)))
(if amt (if amt
(if (gnc:numeric-negative-p amt) (if (gnc-numeric-negative-p amt)
(gnc:monetary-neg monetary) (gnc:monetary-neg monetary)
monetary) monetary)
monetary)))) monetary))))
@@ -381,10 +381,10 @@
currency-totals))) currency-totals)))
(define (add-payment-row table used-columns split total-collector) (define (add-payment-row table used-columns split total-collector)
(let* ((t (gnc:split-get-parent split)) (let* ((t (xaccSplitGetParent split))
(currency (gnc:transaction-get-currency t)) (currency (xaccTransGetCurrency t))
;; XXX Need to know when to reverse the value ;; XXX Need to know when to reverse the value
(amt (gnc:make-gnc-monetary currency (gnc:split-get-value split))) (amt (gnc:make-gnc-monetary currency (xaccSplitGetValue split)))
(payment-style "grand-total") (payment-style "grand-total")
(row '())) (row '()))
@@ -394,7 +394,7 @@
(if (date-col used-columns) (if (date-col used-columns)
(addto! row (addto! row
(gnc:print-date (gnc:transaction-get-date-posted t)))) (gnc-print-date (gnc-transaction-get-date-posted t))))
(if (description-col used-columns) (if (description-col used-columns)
(addto! row (_ "Payment, thank you"))) (addto! row (_ "Payment, thank you")))
@@ -426,8 +426,8 @@
(hash-for-each (hash-for-each
(lambda (acct value) (lambda (acct value)
(let ((collector (gnc:make-commodity-collector)) (let ((collector (gnc:make-commodity-collector))
(commodity (gnc:account-get-commodity acct)) (commodity (xaccAccountGetCommodity acct))
(name (gnc:account-get-name acct))) (name (xaccAccountGetName acct)))
(collector 'add commodity value) (collector 'add commodity value)
(add-subtotal-row table used-columns collector (add-subtotal-row table used-columns collector
"grand-total" name))) "grand-total" name)))
@@ -439,14 +439,14 @@
(if (and show-payments lot) (if (and show-payments lot)
(let ((splits (sort-list! (let ((splits (sort-list!
(gnc:lot-get-splits lot) (gnc-lot-get-split-list lot)
(lambda (s1 s2) (lambda (s1 s2)
(let ((t1 (gnc:split-get-parent s1)) (let ((t1 (xaccSplitGetParent s1))
(t2 (gnc:split-get-parent s2))) (t2 (xaccSplitGetParent s2)))
(< (gnc:transaction-order t1 t2) 0)))))) (< (xaccTransOrder t1 t2) 0))))))
(for-each (for-each
(lambda (split) (lambda (split)
(if (not (equal? (gnc:split-get-parent split) txn)) (if (not (equal? (xaccSplitGetParent split) txn))
(add-payment-row table used-columns (add-payment-row table used-columns
split total-collector))) split total-collector)))
splits))) splits)))
@@ -470,7 +470,7 @@
invoice?))) invoice?)))
(if display-all-taxes (if display-all-taxes
(let ((tax-list (gnc:entry-get-tax-values current invoice?))) (let ((tax-list (gncEntryReturnTaxValues current invoice?)))
(update-account-hash acct-hash tax-list)) (update-account-hash acct-hash tax-list))
(tax-collector 'add (tax-collector 'add
(gnc:gnc-monetary-commodity (cdr entry-values)) (gnc:gnc-monetary-commodity (cdr entry-values))
@@ -503,7 +503,7 @@
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(used-columns (build-column-used options)) (used-columns (build-column-used options))
(width (num-columns-required used-columns)) (width (num-columns-required used-columns))
(entries (gnc:invoice-get-entries invoice)) (entries (gncInvoiceGetEntries invoice))
(totals (gnc:make-commodity-collector))) (totals (gnc:make-commodity-collector)))
(gnc:html-table-set-col-headers! (gnc:html-table-set-col-headers!
@@ -555,7 +555,7 @@
(list "<br>")) (list "<br>"))
(for-each (for-each
(lambda (order) (lambda (order)
(let* ((reference (gnc:order-get-reference order))) (let* ((reference (gncOrderGetReference order)))
(if (and reference (> (string-length reference) 0)) (if (and reference (> (string-length reference) 0))
(gnc:html-table-append-row! (gnc:html-table-append-row!
table table
@@ -572,7 +572,7 @@
table table
(list (list
(string-append label ":&nbsp;") (string-append label ":&nbsp;")
(string-expand (gnc:print-date date) #\space "&nbsp;")))) (string-expand (gnc-print-date date) #\space "&nbsp;"))))
(define (make-date-table) (define (make-date-table)
(let ((table (gnc:make-html-table))) (let ((table (gnc:make-html-table)))
@@ -587,11 +587,11 @@
(define (make-myname-table book date-format) (define (make-myname-table book date-format)
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(name (gnc:kvp-frame-get-slot-path (name (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-name*)))) (list gnc:*business-label* gnc:*company-name*))))
(addy (gnc:kvp-frame-get-slot-path (addy (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-addy*))))) (list gnc:*business-label* gnc:*company-addy*)))))
@@ -627,7 +627,7 @@
(table '()) (table '())
(orders '()) (orders '())
(invoice (opt-val invoice-page invoice-name)) (invoice (opt-val invoice-page invoice-name))
(owner #f) (owner '())
(references? (opt-val "Display" "References")) (references? (opt-val "Display" "References"))
(title (_ "Invoice")) (title (_ "Invoice"))
(invoice? #f)) (invoice? #f))
@@ -638,24 +638,23 @@
(if invoice (if invoice
(begin (begin
(set! owner (gnc:invoice-get-owner invoice)) (set! owner (gncInvoiceGetOwner invoice))
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType
(gnc:owner-get-type (gncOwnerGetEndOwner owner))))
(gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer)
(set! invoice? #t)) (set! invoice? #t))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(set! title (_ "Bill"))) (set! title (_ "Bill")))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(set! title (_ "Expense Voucher"))))) (set! title (_ "Expense Voucher")))))
(set! title (sprintf #f (_"%s #%d") title (set! title (sprintf #f (_"%s #%d") title
(gnc:invoice-get-id invoice))))) (gncInvoiceGetID invoice)))))
(gnc:html-document-set-title! document title) (gnc:html-document-set-title! document title)
(if invoice (if invoice
(let ((book (gnc:invoice-get-book invoice))) (let ((book (gncInvoiceGetBook invoice)))
(set! table (make-entry-table invoice (set! table (make-entry-table invoice
(gnc:report-options report-obj) (gnc:report-options report-obj)
add-order invoice?)) add-order invoice?))
@@ -671,8 +670,8 @@
(make-myname-table book (opt-val "Display" "Today Date Format"))) (make-myname-table book (opt-val "Display" "Today Date Format")))
(let ((date-table #f) (let ((date-table #f)
(post-date (gnc:invoice-get-date-posted invoice)) (post-date (gncInvoiceGetDatePosted invoice))
(due-date (gnc:invoice-get-date-due invoice))) (due-date (gncInvoiceGetDateDue invoice)))
(if (not (equal? post-date (cons 0 0))) (if (not (equal? post-date (cons 0 0)))
(begin (begin
@@ -696,7 +695,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Billing ID") (if (opt-val "Display" "Billing ID")
(let ((billing-id (gnc:invoice-get-billing-id invoice))) (let ((billing-id (gncInvoiceGetBillingID invoice)))
(if (and billing-id (> (string-length billing-id) 0)) (if (and billing-id (> (string-length billing-id) 0))
(begin (begin
(gnc:html-document-add-object! (gnc:html-document-add-object!
@@ -708,8 +707,8 @@
(make-break! document))))) (make-break! document)))))
(if (opt-val "Display" "Billing Terms") (if (opt-val "Display" "Billing Terms")
(let* ((term (gnc:invoice-get-terms invoice)) (let* ((term (gncInvoiceGetTerms invoice))
(terms (gnc:bill-term-get-description term))) (terms (gncBillTermGetDescription term)))
(if (and terms (> (string-length terms) 0)) (if (and terms (> (string-length terms) 0))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
@@ -726,7 +725,7 @@
(make-break! document) (make-break! document)
(if (opt-val "Display" "Invoice Notes") (if (opt-val "Display" "Invoice Notes")
(let ((notes (gnc:invoice-get-notes invoice))) (let ((notes (gncInvoiceGetNotes invoice)))
(gnc:html-document-add-object! (gnc:html-document-add-object!
document document
(gnc:make-html-text (gnc:make-html-text

View File

@@ -115,7 +115,7 @@
(define num-buckets 4) (define num-buckets 4)
(define (new-bucket-vector) (define (new-bucket-vector)
(make-vector num-buckets (gnc:numeric-zero))) (make-vector num-buckets (gnc-numeric-zero)))
(define (make-interval-list to-date) (define (make-interval-list to-date)
(let ((begindate to-date)) (let ((begindate to-date))
@@ -126,10 +126,10 @@
(define (make-aging-table options query bucket-intervals reverse?) (define (make-aging-table options query bucket-intervals reverse?)
(let ((lots (gnc:query-get-lots query 'query-txn-match-any)) (let ((lots (xaccQueryGetLots query QUERY-TXN-MATCH-ANY))
(buckets (new-bucket-vector)) (buckets (new-bucket-vector))
(payments (gnc:numeric-zero)) (payments (gnc-numeric-zero))
(currency (gnc:default-currency)) ;XXX (currency (gnc-default-currency)) ;XXX
(table (gnc:make-html-table))) (table (gnc:make-html-table)))
(define (in-interval this-date current-bucket) (define (in-interval this-date current-bucket)
@@ -145,24 +145,24 @@
(define (apply-invoice date value) (define (apply-invoice date value)
(let* ((bucket-index (find-bucket 0 bucket-intervals date)) (let* ((bucket-index (find-bucket 0 bucket-intervals date))
(new-value (gnc:numeric-add-fixed (new-value (gnc-numeric-add-fixed
value value
(vector-ref buckets bucket-index)))) (vector-ref buckets bucket-index))))
(vector-set! buckets bucket-index new-value))) (vector-set! buckets bucket-index new-value)))
(define (apply-payment value) (define (apply-payment value)
(set! payments (gnc:numeric-add-fixed value payments))) (set! payments (gnc-numeric-add-fixed value payments)))
(for-each (for-each
(lambda (lot) (lambda (lot)
(let* ((bal (gnc:lot-get-balance lot)) (let* ((bal (gnc-lot-get-balance lot))
(invoice (gnc:invoice-get-invoice-from-lot lot)) (invoice (gncInvoiceGetInvoiceFromLot lot))
(post-date (gnc:invoice-get-date-posted invoice))) (post-date (gncInvoiceGetDatePosted invoice)))
(if (not (gnc:numeric-zero-p bal)) (if (not (gnc-numeric-zero-p bal))
(begin (begin
(if reverse? (if reverse?
(set! bal (gnc:numeric-neg bal))) (set! bal (gnc-numeric-neg bal)))
(if invoice (if invoice
(begin (begin
(apply-invoice post-date bal)) (apply-invoice post-date bal))
@@ -192,13 +192,13 @@
;; ;;
(define (add-txn-row table txn acc column-vector odd-row? printed? (define (add-txn-row table txn acc column-vector odd-row? printed?
inv-str reverse? start-date total) inv-str reverse? start-date total)
(let* ((type (gnc:transaction-get-txn-type txn)) (let* ((type (xaccTransGetTxnType txn))
(date (gnc:transaction-get-date-posted txn)) (date (gnc-transaction-get-date-posted txn))
(due-date #f) (due-date #f)
(value (gnc:transaction-get-account-value txn acc)) (value (xaccTransGetAccountValue txn acc))
(split (gnc:transaction-get-split txn 0)) (split (xaccTransGetSplit txn 0))
(invoice (gnc:invoice-get-invoice-from-txn txn)) (invoice (gncInvoiceGetInvoiceFromTxn txn))
(currency (gnc:transaction-get-currency txn)) (currency (xaccTransGetCurrency txn))
(type-str (type-str
(cond (cond
((equal? type gnc:transaction-type-invoice) ((equal? type gnc:transaction-type-invoice)
@@ -215,12 +215,12 @@
(define (make-row date due-date num type-str memo value) (define (make-row date due-date num type-str memo value)
(let ((row-contents '())) (let ((row-contents '()))
(if (date-col column-vector) (if (date-col column-vector)
(addto! row-contents (gnc:print-date date))) (addto! row-contents (gnc-print-date date)))
(if (date-due-col column-vector) (if (date-due-col column-vector)
(addto! row-contents (addto! row-contents
(if (and due-date (if (and due-date
(not (equal? due-date (cons 0 0)))) (not (equal? due-date (cons 0 0))))
(gnc:print-date due-date) (gnc-print-date due-date)
""))) "")))
(if (num-col column-vector) (if (num-col column-vector)
(addto! row-contents num)) (addto! row-contents num))
@@ -236,7 +236,7 @@
row-contents)) row-contents))
(if reverse? (if reverse?
(set! value (gnc:numeric-neg value))) (set! value (gnc-numeric-neg value)))
(if (gnc:timepair-later start-date date) (if (gnc:timepair-later start-date date)
(begin (begin
@@ -245,7 +245,7 @@
(if (not printed?) (if (not printed?)
(begin (begin
(set! printed? #t) (set! printed? #t)
(if (not (gnc:numeric-zero-p total)) (if (not (gnc-numeric-zero-p total))
(let ((row (make-row start-date #f "" (_ "Balance") "" total)) (let ((row (make-row start-date #f "" (_ "Balance") "" total))
(row-style (if odd-row? "normal-row" "alternate-row"))) (row-style (if odd-row? "normal-row" "alternate-row")))
(gnc:html-table-append-row/markup! table row-style (gnc:html-table-append-row/markup! table row-style
@@ -256,10 +256,10 @@
; Now print out the invoice row ; Now print out the invoice row
(if invoice (if invoice
(set! due-date (gnc:invoice-get-date-due invoice))) (set! due-date (gncInvoiceGetDateDue invoice)))
(let ((row (make-row date due-date (gnc:transaction-get-num txn) (let ((row (make-row date due-date (xaccTransGetNum txn)
type-str (gnc:split-get-memo split) value)) type-str (xaccSplitGetMemo split) value))
(row-style (if odd-row? "normal-row" "alternate-row"))) (row-style (if odd-row? "normal-row" "alternate-row")))
(gnc:html-table-append-row/markup! table row-style (gnc:html-table-append-row/markup! table row-style
@@ -273,10 +273,10 @@
(define (make-txn-table options query acc start-date end-date) (define (make-txn-table options query acc start-date end-date)
(let ((txns (gnc:query-get-transactions query 'query-txn-match-any)) (let ((txns (xaccQueryGetTransactions query QUERY-TXN-MATCH-ANY))
(used-columns (build-column-used options)) (used-columns (build-column-used options))
(total (gnc:numeric-zero)) (total (gnc-numeric-zero))
(currency (gnc:default-currency)) ;XXX (currency (gnc-default-currency)) ;XXX
(table (gnc:make-html-table)) (table (gnc:make-html-table))
(inv-str (gnc:option-value (gnc:lookup-option options "__reg" (inv-str (gnc:option-value (gnc:lookup-option options "__reg"
"inv-str"))) "inv-str")))
@@ -288,13 +288,13 @@
(make-heading-list used-columns)) (make-heading-list used-columns))
; Order the transactions properly ; Order the transactions properly
(set! txns (sort txns (lambda (a b) (> 0 (gnc:transaction-order a b))))) (set! txns (sort txns (lambda (a b) (> 0 (xaccTransOrder a b)))))
(let ((printed? #f) (let ((printed? #f)
(odd-row? #t)) (odd-row? #t))
(for-each (for-each
(lambda (txn) (lambda (txn)
(let ((type (gnc:transaction-get-txn-type txn))) (let ((type (xaccTransGetTxnType txn)))
(if (if
(or (equal? type gnc:transaction-type-invoice) (or (equal? type gnc:transaction-type-invoice)
(equal? type gnc:transaction-type-payment)) (equal? type gnc:transaction-type-payment))
@@ -302,7 +302,7 @@
inv-str reverse? start-date total))) inv-str reverse? start-date total)))
(set! printed? (car result)) (set! printed? (car result))
(set! total (gnc:numeric-add-fixed total (cadr result))) (set! total (gnc-numeric-add-fixed total (cadr result)))
(set! odd-row? (caddr result)) (set! odd-row? (caddr result))
)))) ))))
txns)) txns))
@@ -312,7 +312,7 @@
"grand-total" "grand-total"
(append (cons (gnc:make-html-table-cell/markup (append (cons (gnc:make-html-table-cell/markup
"total-label-cell" "total-label-cell"
(if (gnc:numeric-negative-p total) (if (gnc-numeric-negative-p total)
(_ "Total Credit") (_ "Total Credit")
(_ "Total Due"))) (_ "Total Due")))
'()) '())
@@ -348,7 +348,7 @@
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-owner-option owner-page owner-string "v" (gnc:make-owner-option owner-page owner-string "v"
(N_ "The company for this report") (N_ "The company for this report")
(lambda () #f) #f owner-type)) (lambda () '()) #f owner-type))
(gnc:register-inv-option (gnc:register-inv-option
(gnc:make-internal-option "__reg" "owner-type" owner-type)) (gnc:make-internal-option "__reg" "owner-type" owner-type))
@@ -403,13 +403,16 @@
gnc:*report-options*) gnc:*report-options*)
(define (customer-options-generator) (define (customer-options-generator)
(options-generator '(receivable) 'gnc-owner-customer (_ "Invoice") #f)) (options-generator (list ACCT-TYPE-RECEIVABLE) GNC-OWNER-CUSTOMER
(_ "Invoice") #f))
(define (vendor-options-generator) (define (vendor-options-generator)
(options-generator '(payable) 'gnc-owner-vendor (_ "Bill") #t)) (options-generator (list ACCT-TYPE-PAYABLE) GNC-OWNER-VENDOR
(_ "Bill") #t))
(define (employee-options-generator) (define (employee-options-generator)
(options-generator '(payable) 'gnc-owner-employee (_ "Expense Report") #t)) (options-generator (list ACCT-TYPE-PAYABLE) GNC-OWNER-EMPLOYEE
(_ "Expense Report") #t))
(define (string-expand string character replace-string) (define (string-expand string character replace-string)
(define (car-line chars) (define (car-line chars)
@@ -430,26 +433,26 @@
(line-helper (string->list string))) (line-helper (string->list string)))
(define (setup-query q owner account end-date) (define (setup-query q owner account end-date)
(let* ((guid (gnc:owner-get-guid (gnc:owner-get-end-owner owner)))) (let* ((guid (gncOwnerReturnGUID (gncOwnerGetEndOwner owner))))
(gnc:query-add-guid-match (qof-query-add-guid-match
q q
(list gnc:split-trans gnc:invoice-from-txn gnc:invoice-owner (list SPLIT-TRANS INVOICE-FROM-TXN INVOICE-OWNER
gnc:owner-parentg) OWNER-PARENTG)
guid 'query-or) guid QOF-QUERY-OR)
(gnc:query-add-guid-match (qof-query-add-guid-match
q q
(list gnc:split-lot gnc:owner-from-lot gnc:owner-parentg) (list SPLIT-LOT OWNER-FROM-LOT OWNER-PARENTG)
guid 'query-or) guid QOF-QUERY-OR)
(gnc:query-add-guid-match (qof-query-add-guid-match
q q
(list gnc:split-lot gnc:invoice-from-lot gnc:invoice-owner (list SPLIT-LOT INVOICE-FROM-LOT INVOICE-OWNER
gnc:owner-parentg) OWNER-PARENTG)
guid 'query-or) guid QOF-QUERY-OR)
(gnc:query-add-single-account-match q account 'query-and) (xaccQueryAddSingleAccountMatch q account QOF-QUERY-AND)
(gnc:query-add-date-match-timepair q #f end-date #t end-date 'query-and) (xaccQueryAddDateMatchTS q #f end-date #t end-date QOF-QUERY-AND)
(gnc:query-set-book q (gnc:get-current-book)) (qof-query-set-book q (gnc-get-current-book))
q)) q))
(define (make-owner-table owner) (define (make-owner-table owner)
@@ -476,7 +479,7 @@
table table
(list (list
(string-append label ":&nbsp;") (string-append label ":&nbsp;")
(string-expand (gnc:print-date date) #\space "&nbsp;")))) (string-expand (gnc-print-date date) #\space "&nbsp;"))))
(define (make-date-table) (define (make-date-table)
(let ((table (gnc:make-html-table))) (let ((table (gnc:make-html-table)))
@@ -491,11 +494,11 @@
(define (make-myname-table book date-format) (define (make-myname-table book date-format)
(let* ((table (gnc:make-html-table)) (let* ((table (gnc:make-html-table))
(slots (gnc:book-get-slots book)) (slots (gnc-book-get-slots book))
(name (gnc:kvp-frame-get-slot-path (name (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-name*)))) (list gnc:*business-label* gnc:*company-name*))))
(addy (gnc:kvp-frame-get-slot-path (addy (kvp-frame-get-slot-path-gslist
slots (append gnc:*kvp-option-path* slots (append gnc:*kvp-option-path*
(list gnc:*business-label* gnc:*company-addy*))))) (list gnc:*business-label* gnc:*company-addy*)))))
@@ -531,7 +534,7 @@
(let* ((document (gnc:make-html-document)) (let* ((document (gnc:make-html-document))
(table '()) (table '())
(orders '()) (orders '())
(query (gnc:malloc-query)) (query (qof-query-create-for-splits))
(account (opt-val owner-page acct-string)) (account (opt-val owner-page acct-string))
(owner (opt-val owner-page owner-string)) (owner (opt-val owner-page owner-string))
(start-date (gnc:timepair-start-day-time (start-date (gnc:timepair-start-day-time
@@ -540,28 +543,28 @@
(end-date (gnc:timepair-end-day-time (end-date (gnc:timepair-end-day-time
(gnc:date-option-absolute-time (gnc:date-option-absolute-time
(opt-val gnc:pagename-general (N_ "To"))))) (opt-val gnc:pagename-general (N_ "To")))))
(book (gnc:get-current-book)) ;XXX Grab this from elsewhere (book (gnc-get-current-book)) ;XXX Grab this from elsewhere
(owner-type (opt-val "__reg" "owner-type")) (type (opt-val "__reg" "owner-type"))
(type-str "")) (type-str ""))
(case owner-type (cond
((gnc-owner-customer) ((eqv? type GNC-OWNER-CUSTOMER)
(set! type-str (N_ "Customer"))) (set! type-str (N_ "Customer")))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(set! type-str (N_ "Vendor"))) (set! type-str (N_ "Vendor")))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(set! type-str (N_ "Employee")))) (set! type-str (N_ "Employee"))))
(gnc:html-document-set-title! (gnc:html-document-set-title!
document (string-append (_ type-str) " " (_ "Report"))) document (string-append (_ type-str) " " (_ "Report")))
(if (gnc:owner-is-valid? owner) (if (gncOwnerIsValid owner)
(begin (begin
(setup-query query owner account end-date) (setup-query query owner account end-date)
(gnc:html-document-set-title! (gnc:html-document-set-title!
document document
(string-append (_ type-str ) " " (_ "Report:") " " (gnc:owner-get-name owner))) (string-append (_ type-str ) " " (_ "Report:") " " (gncOwnerGetName owner)))
(gnc:html-document-set-headline! (gnc:html-document-set-headline!
document (gnc:html-markup document (gnc:html-markup
@@ -570,7 +573,7 @@
" " (_ "Report:") " " " " (_ "Report:") " "
(gnc:html-markup-anchor (gnc:html-markup-anchor
(gnc:owner-anchor-text owner) (gnc:owner-anchor-text owner)
(gnc:owner-get-name owner)))) (gncOwnerGetName owner))))
(if account (if account
(begin (begin
@@ -603,9 +606,9 @@
(string-append (string-append
(_ "Date Range") (_ "Date Range")
": " ": "
(gnc:print-date start-date) (gnc-print-date start-date)
" - " " - "
(gnc:print-date end-date)))) (gnc-print-date end-date))))
(make-break! document) (make-break! document)
@@ -619,45 +622,43 @@
(_ "No valid %s selected. Click on the Options button to select a company.") (_ "No valid %s selected. Click on the Options button to select a company.")
(_ type-str))))) ;; FIXME because of translations: Please change this string into full sentences instead of sprintf, because in non-english languages the "no valid" has different forms depending on the grammatical gender of the "%s". (_ type-str))))) ;; FIXME because of translations: Please change this string into full sentences instead of sprintf, because in non-english languages the "no valid" has different forms depending on the grammatical gender of the "%s".
(gnc:free-query query) (qof-query-destroy query)
document)) document))
(define (find-first-account type) (define (find-first-account type)
(define (find-first group num index) (define (find-first group num index)
(if (>= index num) (if (>= index num)
#f '()
(let* ((this-account (gnc:group-get-account group index)) (let* ((this-account (xaccGroupGetAccount group index))
(account-type (gw:enum-<gnc:AccountType>-val->sym (account-type (xaccAccountGetType this-account)))
(gnc:account-get-type this-account) #f)))
(if (eq? account-type type) (if (eq? account-type type)
this-account this-account
(find-first group num (+ index 1)))))) (find-first group num (+ index 1))))))
(let* ((current-group (gnc:get-current-group)) (let* ((current-group (gnc-get-current-group))
(num-accounts (gnc:group-get-num-accounts (num-accounts (xaccGroupGetNumAccounts
current-group))) current-group)))
(if (> num-accounts 0) (if (> num-accounts 0)
(find-first current-group num-accounts 0) (find-first current-group num-accounts 0)
#f))) '())))
(define (find-first-account-for-owner owner) (define (find-first-account-for-owner owner)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType (gncOwnerGetEndOwner owner))))
(gnc:owner-get-type (gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer) (find-first-account ACCT-TYPE-RECEIVABLE))
(find-first-account 'receivable))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(find-first-account 'payable)) (find-first-account ACCT-TYPE-PAYABLE))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(find-first-account 'payable)) (find-first-account ACCT-TYPE-PAYABLE))
((gnc-owner-job) ((eqv? type GNC-OWNER-JOB)
(find-first-account-for-owner (gnc:owner-get-end-owner owner))) (find-first-account-for-owner (gncOwnerGetEndOwner owner)))
(else (else
#f)))) '()))))
(gnc:define-report (gnc:define-report
'version 1 'version 1
@@ -693,16 +694,15 @@
(gnc:make-report report-name options))) (gnc:make-report report-name options)))
(define (owner-report-create owner account) (define (owner-report-create owner account)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (gncOwnerGetType (gncOwnerGetEndOwner owner))))
(gnc:owner-get-type (gnc:owner-get-end-owner owner)) #f))) (cond
(case type ((eqv? type GNC-OWNER-CUSTOMER)
((gnc-owner-customer)
(owner-report-create-internal (N_ "Customer Report") owner account)) (owner-report-create-internal (N_ "Customer Report") owner account))
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(owner-report-create-internal (N_ "Vendor Report") owner account)) (owner-report-create-internal (N_ "Vendor Report") owner account))
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(owner-report-create-internal (N_ "Employee Report") owner account)) (owner-report-create-internal (N_ "Employee Report") owner account))
(else #f)))) (else #f))))
@@ -718,20 +718,20 @@
account split query journal? double? title account split query journal? double? title
debit-string credit-string) debit-string credit-string)
(let* ((temp-owner (gnc:owner-create)) (let* ((temp-owner (gncOwnerCreate))
(owner (gnc:owner-from-split split temp-owner)) (owner (gnc:owner-from-split split temp-owner))
(res #f)) (res #f))
(if owner (if owner
(set! res (gnc:owner-report-create owner account))) (set! res (gnc:owner-report-create owner account)))
(gnc:owner-destroy temp-owner) (gncOwnerDestroy temp-owner)
res)) res))
(gnc:register-report-hook 'receivable #t (gnc:register-report-hook ACCT-TYPE-RECEIVABLE #t
gnc:owner-report-create-internal) gnc:owner-report-create-internal)
(gnc:register-report-hook 'payable #t (gnc:register-report-hook ACCT-TYPE-PAYABLE #t
gnc:owner-report-create-internal) gnc:owner-report-create-internal)
(export gnc:owner-report-create) (export gnc:owner-report-create)

View File

@@ -49,7 +49,7 @@
(gnc:make-account-sel-limited-option (gnc:make-account-sel-limited-option
acc-page this-acc acc-page this-acc
(N_ "The payable account you wish to examine") "zz" (N_ "The payable account you wish to examine") "zz"
#f #f '(payable))) #f #f (list ACCT-TYPE-PAYABLE)))
(aging-options-generator options))) (aging-options-generator options)))
@@ -83,5 +83,5 @@
debit-string credit-string) debit-string credit-string)
(payables-report-create-internal account)) (payables-report-create-internal account))
(gnc:register-report-hook 'payable #f (gnc:register-report-hook ACCT-TYPE-PAYABLE #f
gnc:payables-report-create-internal) gnc:payables-report-create-internal)

View File

@@ -49,7 +49,7 @@
(gnc:make-account-sel-limited-option (gnc:make-account-sel-limited-option
acc-page this-acc acc-page this-acc
(N_ "The receivables account you wish to examine") "w" (N_ "The receivables account you wish to examine") "w"
#f #f '(receivable))) #f #f (list ACCT-TYPE-RECEIVABLE)))
(aging-options-generator options))) (aging-options-generator options)))
@@ -84,5 +84,5 @@
debit-string credit-string) debit-string credit-string)
(receivables-report-create-internal account)) (receivables-report-create-internal account))
(gnc:register-report-hook 'receivable #f (gnc:register-report-hook ACCT-TYPE-RECEIVABLE #f
gnc:receivables-report-create-internal) gnc:receivables-report-create-internal)

View File

@@ -6,7 +6,6 @@ AM_CFLAGS = \
-I${top_srcdir}/src/gnc-module \ -I${top_srcdir}/src/gnc-module \
-I${top_srcdir}/src/app-utils \ -I${top_srcdir}/src/app-utils \
-I${top_srcdir}/src/business/business-core \ -I${top_srcdir}/src/business/business-core \
${G_WRAP_COMPILE_ARGS} \
${GUILE_INCS} \ ${GUILE_INCS} \
${GLIB_CFLAGS} \ ${GLIB_CFLAGS} \
${QOF_CFLAGS} \ ${QOF_CFLAGS} \
@@ -22,7 +21,6 @@ noinst_HEADERS = \
libgncmod_business_utils_la_LIBADD = \ libgncmod_business_utils_la_LIBADD = \
${top_builddir}/src/gnc-module/libgncmodule.la \ ${top_builddir}/src/gnc-module/libgncmodule.la \
${top_builddir}/src/app-utils/libgncmod-app-utils.la \ ${top_builddir}/src/app-utils/libgncmod-app-utils.la \
${G_WRAP_LINK_ARGS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \

View File

@@ -25,11 +25,11 @@
#include "config.h" #include "config.h"
#include "business-options.h" #include "business-options.h"
#include "swig-runtime.h"
#include <g-wrap-wct.h> #define FUNC_NAME __FUNCTION__
#define LOOKUP_OPTION(fcn) \
#define LOOKUP_OPTION(fcn) { \
GNCOption *option; \ GNCOption *option; \
SCM getter; \ SCM getter; \
SCM value; \ SCM value; \
@@ -46,13 +46,9 @@
value = scm_call_0 (getter); \ value = scm_call_0 (getter); \
if (value == SCM_BOOL_F) \ if (value == SCM_BOOL_F) \
return NULL; \ return NULL; \
\ SWIG_GetModule(NULL); /* Work-around for SWIG bug. */ \
if (!gw_wcp_p(value)) \ if (!SWIG_IsPointer(value)) \
scm_misc_error(fcn, "Item is not a gw:wcp.", value); \ scm_misc_error(fcn, "SCM is not a wrapped pointer.", value)
\
return gw_wcp_get_ptr(value); \
}
GncTaxTable* GncTaxTable*
gnc_option_db_lookup_taxtable_option(GNCOptionDB *odb, gnc_option_db_lookup_taxtable_option(GNCOptionDB *odb,
@@ -61,6 +57,7 @@ gnc_option_db_lookup_taxtable_option(GNCOptionDB *odb,
GncTaxTable * default_value) GncTaxTable * default_value)
{ {
LOOKUP_OPTION("gnc_option_db_lookup_taxtable_option"); LOOKUP_OPTION("gnc_option_db_lookup_taxtable_option");
return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0);
} }
GncInvoice* GncInvoice*
@@ -70,6 +67,7 @@ gnc_option_db_lookup_invoice_option(GNCOptionDB *odb,
GncInvoice * default_value) GncInvoice * default_value)
{ {
LOOKUP_OPTION("gnc_option_db_lookup_invoice_option"); LOOKUP_OPTION("gnc_option_db_lookup_invoice_option");
return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0);
} }
GncCustomer* GncCustomer*
@@ -79,6 +77,7 @@ gnc_option_db_lookup_customer_option(GNCOptionDB *odb,
GncCustomer * default_value) GncCustomer * default_value)
{ {
LOOKUP_OPTION("gnc_option_db_lookup_customer_option"); LOOKUP_OPTION("gnc_option_db_lookup_customer_option");
return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0);
} }
GncVendor* GncVendor*
@@ -88,4 +87,5 @@ gnc_option_db_lookup_vendor_option(GNCOptionDB *odb,
GncVendor * default_value) GncVendor * default_value)
{ {
LOOKUP_OPTION("gnc_option_db_lookup_vendor_option"); LOOKUP_OPTION("gnc_option_db_lookup_vendor_option");
return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0);
} }

View File

@@ -24,6 +24,8 @@
;; invoice pointers may be used to set the value of the option. The ;; invoice pointers may be used to set the value of the option. The
;; option always returns a single invoice pointer. ;; option always returns a single invoice pointer.
(use-modules (gnucash main))
(define (gnc:make-invoice-option (define (gnc:make-invoice-option
section section
name name
@@ -35,11 +37,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:invoice-get-guid item))) (gncInvoiceReturnGUID item)))
(define (convert-to-invoice item) (define (convert-to-invoice item)
(if (string? item) (if (string? item)
(gnc:invoice-lookup item (gnc:get-current-book)) (gncInvoiceLookupFlip item (gnc-get-current-book))
item)) item))
(let* ((option (convert-to-guid (default-getter))) (let* ((option (convert-to-guid (default-getter)))
@@ -71,9 +73,9 @@
(gnc:error "Illegal invoice value set")))) (gnc:error "Illegal invoice value set"))))
(lambda () (convert-to-invoice (default-getter))) (lambda () (convert-to-invoice (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f option p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f option p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(begin (begin
(set! option v) (set! option v)
@@ -96,11 +98,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:customer-get-guid item))) (gncCustomerReturnGUID item)))
(define (convert-to-customer item) (define (convert-to-customer item)
(if (string? item) (if (string? item)
(gnc:customer-lookup item (gnc:get-current-book)) (gncCustomerLookupFlip item (gnc-get-current-book))
item)) item))
(let* ((option (convert-to-guid (default-getter))) (let* ((option (convert-to-guid (default-getter)))
@@ -132,9 +134,9 @@
(gnc:error "Illegal customer value set")))) (gnc:error "Illegal customer value set"))))
(lambda () (convert-to-customer (default-getter))) (lambda () (convert-to-customer (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f option p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f option p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(begin (begin
(set! option v) (set! option v)
@@ -157,11 +159,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:vendor-get-guid item))) (gncVendorReturnGUID item)))
(define (convert-to-vendor item) (define (convert-to-vendor item)
(if (string? item) (if (string? item)
(gnc:vendor-lookup item (gnc:get-current-book)) (gncVendorLookupFlip item (gnc-get-current-book))
item)) item))
(let* ((option (convert-to-guid (default-getter))) (let* ((option (convert-to-guid (default-getter)))
@@ -193,9 +195,9 @@
(gnc:error "Illegal vendor value set")))) (gnc:error "Illegal vendor value set"))))
(lambda () (convert-to-vendor (default-getter))) (lambda () (convert-to-vendor (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f option p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f option p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(begin (begin
(set! option v) (set! option v)
@@ -218,11 +220,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:employee-get-guid item))) (gncEmployeeReturnGUID item)))
(define (convert-to-employee item) (define (convert-to-employee item)
(if (string? item) (if (string? item)
(gnc:employee-lookup item (gnc:get-current-book)) (gncEmployeeLookupFlip item (gnc-get-current-book))
item)) item))
(let* ((option (convert-to-guid (default-getter))) (let* ((option (convert-to-guid (default-getter)))
@@ -254,9 +256,9 @@
(gnc:error "Illegal employee value set")))) (gnc:error "Illegal employee value set"))))
(lambda () (convert-to-employee (default-getter))) (lambda () (convert-to-employee (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f option p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f option p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(begin (begin
(set! option v) (set! option v)
@@ -277,44 +279,43 @@
value-validator value-validator
owner-type) owner-type)
(let ((option-value (gnc:owner-create))) (let ((option-value (gncOwnerCreate)))
(define (convert-to-pair item) (define (convert-to-pair item)
(if (pair? item) (if (pair? item)
item item
(cons (gw:enum-<gnc:GncOwnerType>-val->sym (cons (gncOwnerGetType item)
(gnc:owner-get-type item) #f) (gncOwnerReturnGUID item))))
(gnc:owner-get-guid item))))
(define (convert-to-owner pair) (define (convert-to-owner pair)
(if (pair? pair) (if (pair? pair)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (car pair) #f))) (let ((type (car pair)))
(case type (cond
((gnc-owner-customer) ((eqv? type GNC-OWNER-CUSTOMER)
(gnc:owner-init-customer (gncOwnerInitCustomer
option-value option-value
(gnc:customer-lookup (cdr pair) (gnc:get-current-book))) (gncCustomerLookupFlip (cdr pair) (gnc-get-current-book)))
option-value) option-value)
((gnc-owner-vendor) ((eqv? type GNC-OWNER-VENDOR)
(gnc:owner-init-vendor (gncOwnerInitVendor
option-value option-value
(gnc:vendor-lookup (cdr pair) (gnc:get-current-book))) (gncVendorLookupFlip (cdr pair) (gnc-get-current-book)))
option-value) option-value)
((gnc-owner-employee) ((eqv? type GNC-OWNER-EMPLOYEE)
(gnc:owner-init-employee (gncOwnerInitEmployee
option-value option-value
(gnc:employee-lookup (cdr pair) (gnc:get-current-book))) (gncEmployeeLookupFlip (cdr pair) (gnc-get-current-book)))
option-value) option-value)
((gnc-owner-job) ((eqv? type GNC-OWNER-JOB)
(gnc:owner-init-job (gncOwnerInitJob
option-value option-value
(gnc:job-lookup (cdr pair) (gnc:get-current-book))) (gncJobLookupFlip (cdr pair) (gnc-get-current-book)))
option-value) option-value)
(else #f))) (else '())))
pair)) pair))
(let* ((option (convert-to-pair (default-getter))) (let* ((option (convert-to-pair (default-getter)))
@@ -330,10 +331,9 @@
(validator (validator
(if (not value-validator) (if (not value-validator)
(lambda (owner) (lambda (owner)
(let ((type (gw:enum-<gnc:GncOwnerType>-val->sym (let ((type (if (pair? owner)
(if (pair? owner) (car owner)
(car owner) (gncOwnerGetType owner))))
(gnc:owner-get-type owner)) #f)))
(if (equal? type owner-type) (if (equal? type owner-type)
(list #t owner) (list #t owner)
(list #f "Owner-Type Mismatch")))) (list #f "Owner-Type Mismatch"))))
@@ -356,13 +356,13 @@
(lambda () (convert-to-owner (default-getter))) (lambda () (convert-to-owner (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (lambda (f p)
(gnc:kvp-frame-set-slot-path f (symbol->string (car option)) (kvp-frame-set-slot-path-gslist f (symbol->string (car option))
(append p '("type"))) (append p '("type")))
(gnc:kvp-frame-set-slot-path f (cdr option) (kvp-frame-set-slot-path-gslist f (cdr option)
(append p '("value")))) (append p '("value"))))
(lambda (f p) (lambda (f p)
(let ((t (gnc:kvp-frame-get-slot-path f (append p '("type")))) (let ((t (kvp-frame-get-slot-path-gslist f (append p '("type"))))
(v (gnc:kvp-frame-get-slot-path f (append p '("value"))))) (v (kvp-frame-get-slot-path-gslist f (append p '("value")))))
(if (and t v (string? t) (string? v)) (if (and t v (string? t) (string? v))
(begin (begin
(set! option (cons (string->symbol t) v)) (set! option (cons (string->symbol t) v))
@@ -386,11 +386,11 @@
(define (convert-to-guid item) (define (convert-to-guid item)
(if (string? item) (if (string? item)
item item
(gnc:taxtable-get-guid item))) (gncTaxTableReturnGUID item)))
(define (convert-to-taxtable item) (define (convert-to-taxtable item)
(if (string? item) (if (string? item)
(gnc:taxtable-lookup item (gnc:get-current-book)) (gncTaxTableLookupFlip item (gnc-get-current-book))
item)) item))
(let* ((option (convert-to-guid (default-getter))) (let* ((option (convert-to-guid (default-getter)))
@@ -422,9 +422,9 @@
(gnc:error "Illegal taxtable value set")))) (gnc:error "Illegal taxtable value set"))))
(lambda () (convert-to-taxtable (default-getter))) (lambda () (convert-to-taxtable (default-getter)))
(gnc:restore-form-generator value->string) (gnc:restore-form-generator value->string)
(lambda (f p) (gnc:kvp-frame-set-slot-path f option p)) (lambda (f p) (kvp-frame-set-slot-path-gslist f option p))
(lambda (f p) (lambda (f p)
(let ((v (gnc:kvp-frame-get-slot-path f p))) (let ((v (kvp-frame-get-slot-path-gslist f p)))
(if (and v (string? v)) (if (and v (string? v))
(begin (begin
(set! option v) (set! option v)

View File

@@ -68,13 +68,13 @@
(gnc:make-taxtable-option (gnc:make-taxtable-option
gnc:*business-label* (N_ "Default Customer TaxTable") gnc:*business-label* (N_ "Default Customer TaxTable")
"e" (N_ "The default tax table to apply to customers.") "e" (N_ "The default tax table to apply to customers.")
(lambda () #f) #f)) (lambda () '()) #f))
(reg-option (reg-option
(gnc:make-taxtable-option (gnc:make-taxtable-option
gnc:*business-label* (N_ "Default Vendor TaxTable") gnc:*business-label* (N_ "Default Vendor TaxTable")
"f" (N_ "The default tax table to apply to vendors.") "f" (N_ "The default tax table to apply to vendors.")
(lambda () #f) #f)) (lambda () '()) #f))
(reg-option (reg-option
(gnc:make-dateformat-option (gnc:make-dateformat-option
@@ -83,4 +83,4 @@
#f)) #f))
) )
(gnc:register-kvp-option-generator gnc:id-book book-options-generator) (gnc-register-kvp-option-generator QOF-ID-BOOK-SCM book-options-generator)

View File

@@ -1,6 +1,6 @@
PWD := $(shell pwd) PWD := $(shell pwd)
pkglib_LTLIBRARIES = libgncmod-dialog-tax-table.la libgw-dialog-tax-table.la pkglib_LTLIBRARIES = libgncmod-dialog-tax-table.la
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/src \ -I${top_srcdir}/src \
@@ -17,10 +17,10 @@ AM_CFLAGS = \
${GDK_PIXBUF_CFLAGS} \ ${GDK_PIXBUF_CFLAGS} \
${GLIB_CFLAGS} \ ${GLIB_CFLAGS} \
${QOF_CFLAGS} \ ${QOF_CFLAGS} \
${G_WRAP_COMPILE_ARGS} \
${GUILE_INCS} ${GUILE_INCS}
libgncmod_dialog_tax_table_la_SOURCES = \ libgncmod_dialog_tax_table_la_SOURCES = \
swig-dialog-tax-table.c \
gncmod-dialog-tax-table.c \ gncmod-dialog-tax-table.c \
dialog-tax-table.c dialog-tax-table.c
@@ -36,22 +36,14 @@ libgncmod_dialog_tax_table_la_LIBADD = \
${GLADE_LIBS} \ ${GLADE_LIBS} \
${GUILE_LIBS} \ ${GUILE_LIBS} \
${GNOME_LIBS} \ ${GNOME_LIBS} \
${G_WRAP_LINK_ARGS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \
${EFENCE_LIBS} ${EFENCE_LIBS}
nodist_libgw_dialog_tax_table_la_SOURCES = gw-dialog-tax-table.c if BUILDING_FROM_SVN
swig-dialog-tax-table.c: dialog-tax-table.i ${noinst_HEADERS}
libgw_dialog_tax_table_la_LIBADD = \ $(SWIG) -guile $(SWIG_ARGS) -Linkage module -o $@ $<
libgncmod-dialog-tax-table.la \ endif
${G_WRAP_LINK_ARGS}
gwmoddir = ${GNC_GWRAP_LIBDIR}
gwmod_DATA = \
gw-dialog-tax-table-spec.scm
nodist_gwmod_DATA = \
gw-dialog-tax-table.scm
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gncmod_DATA = dialog-tax-table.scm gncmod_DATA = dialog-tax-table.scm
@@ -60,21 +52,19 @@ gladedir = $(GNC_GLADE_DIR)
glade_DATA = tax-tables.glade glade_DATA = tax-tables.glade
EXTRA_DIST = \ EXTRA_DIST = \
dialog-tax-table.i \
${glade_DATA} \ ${glade_DATA} \
${gwmod_DATA} \
${gncmod_DATA} ${gncmod_DATA}
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#Only needed when srcdir and builddir are different #Only needed when srcdir and builddir are different
# for compline
SCM_FILE_LINKS = gw-dialog-tax-table-spec.scm
# for running # for running
SCM_FILE_LINKS += ${gncmod_DATA} SCM_FILE_LINKS = ${gncmod_DATA}
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
@@ -83,29 +73,6 @@ endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done ) ( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: noinst_DATA = .scm-links
$(RM) -rf gnucash g-wrapped CLEANFILES = gnucash .scm-links ${SCM_FILE_LINKS}
MAINTAINERCLEANFILES = swig-dialog-tax-table.c
.INTERMEDIATE: gwrap-files
gw-dialog-tax-table.scm gw-dialog-tax-table.c gw-dialog-tax-table.h: \
gwrap-files
gwrap-files: \
.scm-links gw-dialog-tax-table-spec.scm ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(set! %load-path (cons \"../business-core\" %load-path)) \
(set! %load-path (cons \"../../engine\" %load-path)) \
(set! %load-path (cons \"../../app-utils\" %load-path)) \
(set! %load-path (cons \"../../gnome-utils\" %load-path)) \
(primitive-load \"./gw-dialog-tax-table-spec.scm\") \
(gw:generate-wrapset \"gw-dialog-tax-table\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-*.scm . )
BUILT_SOURCES = gw-dialog-tax-table.scm gw-dialog-tax-table.c \
gw-dialog-tax-table.h
CLEANFILES = $(BUILT_SOURCES) .scm-links \
${SCM_FILE_LINKS} gw-dialog-tax-table.html

View File

@@ -0,0 +1,10 @@
%module sw_dialog_tax_table
%{
/* Includes the header in the wrapper code */
#include <config.h>
#include <dialog-tax-table.h>
SCM scm_init_sw_dialog_tax_table_module (void);
%}
TaxTableWindow * gnc_ui_tax_table_window_new (GNCBook *book);

View File

@@ -1,2 +1 @@
(define-module (gnucash dialog-tax-table)) (define-module (gnucash dialog-tax-table))
(use-modules (g-wrapped gw-dialog-tax-table))

View File

@@ -29,8 +29,8 @@
#include "gnc-module.h" #include "gnc-module.h"
#include "gnc-module-api.h" #include "gnc-module-api.h"
#include "gw-dialog-tax-table.h"
extern SCM scm_init_sw_dialog_tax_table_module(void);
/* version of the gnc module system interface we require */ /* version of the gnc module system interface we require */
int libgncmod_dialog_tax_table_LTX_gnc_module_system_interface = 0; int libgncmod_dialog_tax_table_LTX_gnc_module_system_interface = 0;
@@ -73,8 +73,8 @@ libgncmod_dialog_tax_table_LTX_gnc_module_init(int refcount)
return FALSE; return FALSE;
} }
scm_c_eval_string("(use-modules (g-wrapped gw-dialog-tax-table))"); scm_init_sw_dialog_tax_table_module();
// scm_c_eval_string("(use-modules (gnucash dialog-tax-table))"); scm_c_eval_string("(use-modules (sw_dialog_tax_table))");
return TRUE; return TRUE;
} }

View File

@@ -1,57 +0,0 @@
;;; -*-scheme-*-
;(debug-enable 'backtrace)
;(debug-enable 'debug)
;(read-enable 'positions)
(debug-set! maxdepth 100000)
(debug-set! stack 200000)
(define-module (g-wrapped gw-dialog-tax-table-spec)
:use-module (g-wrap))
(use-modules (g-wrap))
(use-modules (g-wrap gw-standard-spec))
(use-modules (g-wrap gw-wct-spec))
(use-modules (g-wrapped gw-business-core-spec))
(use-modules (g-wrapped gw-gnome-utils-spec))
(let ((ws (gw:new-wrapset "gw-dialog-tax-table")))
(gw:wrapset-depends-on ws "gw-standard")
(gw:wrapset-depends-on ws "gw-business-core")
(gw:wrapset-depends-on ws "gw-engine")
(gw:wrapset-depends-on ws "gw-gnome-utils")
(gw:wrapset-set-guile-module! ws '(g-wrapped gw-dialog-tax-table))
(gw:wrapset-add-cs-declarations!
ws
(lambda (wrapset client-wrapset)
(list
"#include <config.h>\n"
"#include <dialog-tax-table.h>\n"
)))
(gw:wrapset-add-cs-initializers!
ws
(lambda (wrapset client-wrapset status-var)
(if client-wrapset
'()
(gw:inline-scheme '(use-modules (gnucash dialog-tax-table))))))
;;
;; dialog-tax-table.h
;;
(gw:wrap-function
ws
'gnc:tax-table-new
'<gw:void>
"gnc_ui_tax_table_window_new"
'((<gnc:Book*> book))
"Dialog: Edit the Tax Tables.")
)

View File

@@ -1,4 +1,4 @@
lib_LTLIBRARIES = libcore-utils.la libgw-core-utils.la lib_LTLIBRARIES = libcore-utils.la
libcore_utils_la_SOURCES = \ libcore_utils_la_SOURCES = \
gnc-main.c \ gnc-main.c \
@@ -7,6 +7,7 @@ libcore_utils_la_SOURCES = \
gnc-gkeyfile-utils.c \ gnc-gkeyfile-utils.c \
gnc-glib-utils.c \ gnc-glib-utils.c \
gnc-gobject-utils.c \ gnc-gobject-utils.c \
swig-core-utils.c \
gnc-gtk-utils.c gnc-gtk-utils.c
libcore_utils_la_LIBADD = \ libcore_utils_la_LIBADD = \
@@ -14,15 +15,6 @@ libcore_utils_la_LIBADD = \
${GCONF_LIBS} \ ${GCONF_LIBS} \
${GTK_LIBS} ${GTK_LIBS}
nodist_libgw_core_utils_la_SOURCES = \
gw-core-utils.c
libgw_core_utils_la_LDFLAGS = ${G_WRAP_LINK_ARGS}
libgw_core_utils_la_LIBADD = \
libcore-utils.la \
${GLIB_LIBS} \
${GUILE_LIBS}
noinst_HEADERS = \ noinst_HEADERS = \
gnc-main.h \ gnc-main.h \
gnc-gconf-utils.h \ gnc-gconf-utils.h \
@@ -32,51 +24,38 @@ noinst_HEADERS = \
gnc-gobject-utils.h \ gnc-gobject-utils.h \
gnc-gtk-utils.h gnc-gtk-utils.h
EXTRA_DIST = ${gwmod_DATA} if BUILDING_FROM_SVN
swig-core-utils.c: core-utils.i
$(SWIG) -guile $(SWIG_ARGS) -Linkage module -o $@ $<
endif
AM_CFLAGS = \ AM_CFLAGS = \
${G_WRAP_COMPILE_ARGS} \
${GUILE_INCS} \ ${GUILE_INCS} \
${GLIB_CFLAGS} \ ${GLIB_CFLAGS} \
${GCONF_CFLAGS} \ ${GCONF_CFLAGS} \
${GTK_CFLAGS} ${GTK_CFLAGS}
gwmoddir = ${GNC_GWRAP_LIBDIR} gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gwmod_DATA = gw-core-utils-spec.scm gncmod_DATA = core-utils.scm
nodist_gwmod_DATA = gw-core-utils.scm
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#Only needed when srcdir and builddir are different #Only needed when srcdir and builddir are different
SCM_FILE_LINKS = gw-core-utils-spec.scm #for running
SCM_FILE_LINKS = ${gncmod_DATA}
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
done done
endif endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: noinst_DATA = .scm-links
$(RM) -rf gnucash g-wrapped EXTRA_DIST = $(gncmod_DATA) core-utils.i
CLEANFILES = gnucash .scm-links
.INTERMEDIATE: gwrap-files MAINTAINERCLEANFILES = swig-core-utils.c
gw-core-utils.scm gw-core-utils.h gw-core-utils.c gw-core-utils.html: \
gwrap-files
gwrap-files: \
gw-core-utils-spec.scm .scm-links ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(primitive-load \"./gw-core-utils-spec.scm\") \
(gw:generate-wrapset \"gw-core-utils\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-*.scm . )
BUILT_SOURCES = gw-core-utils.scm gw-core-utils.h gw-core-utils.c
CLEANFILES = $(BUILT_SOURCES) .scm-links \
${SCM_FILE_LINKS} gw-core-utils.html

View File

@@ -0,0 +1,27 @@
%module sw_core_utils
%{
//#include <gnc-gconf-utils.h>
#include <gnc-glib-utils.h>
#include <gnc-main.h>
#include <glib.h>
SCM scm_init_sw_core_utils_module (void);
%}
typedef char gchar;
%typemap(newfree) gchar * "g_free($1);"
%typemap(in) gboolean " $1 = SCM_NFALSEP($input) ? TRUE : FALSE; "
%typemap(out) gboolean " $result = $1 ? SCM_BOOL_T : SCM_BOOL_F; "
%newobject g_find_program_in_path;
gchar * g_find_program_in_path(const gchar *);
gboolean gnc_is_debugging(void);
/* Special treatment because the string changes in place. */
%typemap(in) gchar * " $1 = SCM_STRING_CHARS($input); "
%typemap(freearg) gchar * ""
void gnc_utf8_strip_invalid (gchar *str);

View File

@@ -0,0 +1,14 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; core-utils.scm
;;; Guile module for core-utils
;;;
;;; Copyright 2006 Chris Shoemaker <c.shoemaker@cox.net>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-module (gnucash core-utils))
(load-extension "libcore-utils" "scm_init_sw_core_utils_module")
(use-modules (sw_core_utils))
(export gnc-is-debugging)
(export g-find-program-in-path)
(export gnc-utf8-strip-invalid)

View File

@@ -24,11 +24,11 @@
#include "config.h" #include "config.h"
#include "gnc-main.h" #include "gnc-main.h"
static char *namespace_regexp = NULL; static gchar *namespace_regexp = NULL;
static int is_debugging; static gboolean is_debugging;
void void
gnc_main_set_namespace_regexp(const char *str) gnc_main_set_namespace_regexp(const gchar *str)
{ {
if (namespace_regexp) if (namespace_regexp)
g_free(namespace_regexp); g_free(namespace_regexp);
@@ -37,20 +37,20 @@ gnc_main_set_namespace_regexp(const char *str)
namespace_regexp = g_strdup(str); namespace_regexp = g_strdup(str);
} }
const char * const gchar *
gnc_main_get_namespace_regexp(void) gnc_main_get_namespace_regexp(void)
{ {
return namespace_regexp; return namespace_regexp;
} }
int gboolean
gnc_is_debugging(void) gnc_is_debugging(void)
{ {
return is_debugging; return is_debugging;
} }
void void
gnc_set_debugging(int d) gnc_set_debugging(gboolean d)
{ {
is_debugging = d; is_debugging = d;
} }

View File

@@ -26,10 +26,10 @@
#include <glib.h> #include <glib.h>
void gnc_main_set_namespace_regexp(const char *str); void gnc_main_set_namespace_regexp(const gchar *str);
const char *gnc_main_get_namespace_regexp(void); const gchar *gnc_main_get_namespace_regexp(void);
int gnc_is_debugging(void); gboolean gnc_is_debugging(void);
void gnc_set_debugging(int d); void gnc_set_debugging(gboolean d);
#endif /* GNC_MAIN_H */ #endif /* GNC_MAIN_H */

View File

@@ -1,64 +0,0 @@
;;; -*-scheme-*-
(debug-set! maxdepth 100000)
(debug-set! stack 200000)
(define-module (g-wrapped gw-core-utils-spec))
(use-modules (g-wrap))
(use-modules (g-wrap simple-type))
(use-modules (g-wrap gw-standard-spec))
(use-modules (g-wrap gw-wct-spec))
(use-modules (g-wrap gw-glib-spec))
(let ((ws (gw:new-wrapset "gw-core-utils")))
(gw:wrapset-depends-on ws "gw-standard")
(gw:wrapset-depends-on ws "gw-wct")
(gw:wrapset-depends-on ws "gw-glib")
(gw:wrapset-set-guile-module! ws '(g-wrapped gw-core-utils))
(gw:wrapset-add-cs-declarations!
ws
(lambda (wrapset client-wrapset)
(list
"#include <gnc-gconf-utils.h>\n"
"#include <gnc-glib-utils.h>\n"
"#include <gnc-main.h>\n")))
(gw:wrap-function
ws
'gnc:gconf-get-bool
'<gw:bool>
"gnc_gconf_get_bool_no_error"
'(((<gw:mchars> caller-owned) section)
((<gw:mchars> caller-owned) name))
"Get a boolean value from gconf.")
(gw:wrap-function
ws
'gnc:debugging?
'<gw:bool>
"gnc_is_debugging"
'()
"Is debugging mode on?")
(gw:wrap-function
ws
'g:find-program-in-path
'(<gw:mchars> callee-owned const)
"g_find_program_in_path"
'(((<gw:mchars> caller-owned) program))
"Get a boolean value from gconf.")
(gw:wrap-function
ws
'gnc:utf8-strip-invalid
'<gw:void>
"gnc_utf8_strip_invalid"
'(((<gw:mchars> caller-owned) program))
"Strip string of non-utf8 characters.")
)

View File

@@ -561,10 +561,6 @@ SplitList* xaccAccountGetSplitList (const Account *account);
* in accfrom to accto. */ * in accfrom to accto. */
void xaccAccountMoveAllSplits (Account *accfrom, Account *accto); void xaccAccountMoveAllSplits (Account *accfrom, Account *accto);
/** \warning Unimplemented */
gpointer xaccAccountForEachSplit(Account *account, SplitCallback,
gpointer data);
/** The xaccAccountForEachTransaction() routine will traverse all of /** The xaccAccountForEachTransaction() routine will traverse all of
the transactions in the given 'account' and call the callback the transactions in the given 'account' and call the callback
function 'proc' on each transaction. Processing will continue function 'proc' on each transaction. Processing will continue

View File

@@ -470,7 +470,7 @@ xaccGroupGetAccountList (const AccountGroup *grp)
return grp->accounts; return grp->accounts;
} }
GList * AccountList *
xaccGroupGetAccountListSorted (const AccountGroup *grp) xaccGroupGetAccountListSorted (const AccountGroup *grp)
{ {
if (!grp) return NULL; if (!grp) return NULL;

View File

@@ -215,7 +215,7 @@ AccountList * xaccGroupGetAccountList (const AccountGroup *grp);
* immediate children of the account group. The returned list * immediate children of the account group. The returned list
* should be freed with g_list_free() when no longer needed. * should be freed with g_list_free() when no longer needed.
*/ */
GList * xaccGroupGetAccountListSorted (const AccountGroup *grp); AccountList * xaccGroupGetAccountListSorted (const AccountGroup *grp);
/** The xaccGroupGetRoot() subroutine will find the topmost /** The xaccGroupGetRoot() subroutine will find the topmost
* (root) group to which this group belongs. * (root) group to which this group belongs.

View File

@@ -1,7 +1,7 @@
SUBDIRS = . test-core test SUBDIRS = . test-core test
PWD := $(shell pwd) PWD := $(shell pwd)
pkglib_LTLIBRARIES = libgncmod-engine.la libgw-engine.la libgw-kvp.la pkglib_LTLIBRARIES = libgncmod-engine.la
AM_CFLAGS = \ AM_CFLAGS = \
-I${top_srcdir}/lib/libc \ -I${top_srcdir}/lib/libc \
@@ -43,6 +43,10 @@ libgncmod_engine_la_SOURCES = \
gnc-session.c \ gnc-session.c \
gnc-session-scm.c \ gnc-session-scm.c \
gncmod-engine.c \ gncmod-engine.c \
swig-engine.c \
kvp-scm.c \
engine-helpers.c \
glib-helpers.c \
policy.c policy.c
EXTRA_libgncmod_engine_la_SOURCES = iso-4217-currencies.c EXTRA_libgncmod_engine_la_SOURCES = iso-4217-currencies.c
@@ -111,32 +115,13 @@ noinst_SCRIPTS = iso-currencies-to-c
libgncmod_engine_la_LIBADD = \ libgncmod_engine_la_LIBADD = \
../gnc-module/libgncmodule.la \ ../gnc-module/libgncmodule.la \
../core-utils/libcore-utils.la \ ../core-utils/libcore-utils.la \
${G_WRAP_LINK_ARGS} \ ${GUILE_LIBS} \
${QOF_LIBS} \ ${QOF_LIBS} \
${REGEX_LIBS} \ ${REGEX_LIBS} \
${GNUCASH_ENGINE_BASE_LIBS} \ ${GNUCASH_ENGINE_BASE_LIBS} \
${BINRELOC_LIBS} \ ${BINRELOC_LIBS} \
${top_builddir}/lib/libc/libc-missing.la ${top_builddir}/lib/libc/libc-missing.la
libgw_kvp_la_SOURCES = kvp-scm.c
nodist_libgw_kvp_la_SOURCES = gw-kvp.c
libgw_kvp_la_LDFLAGS = \
${G_WRAP_LINK_ARGS} \
${QOF_LIBS} \
${GLIB_LIBS}
libgw_kvp_la_LIBADD = \
libgncmod-engine.la \
libgw-engine.la
libgw_engine_la_SOURCES = engine-helpers.c glib-helpers.c
nodist_libgw_engine_la_SOURCES = gw-engine.c
libgw_engine_la_LDFLAGS = \
${G_WRAP_LINK_ARGS} \
${QOF_LIBS} \
${GLIB_LIBS}
libgw_engine_la_LIBADD = \
libgncmod-engine.la
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
gncmod_DATA = engine.scm gncmod_DATA = engine.scm
@@ -147,14 +132,6 @@ gncscm_DATA = \
engine-utilities.scm \ engine-utilities.scm \
gnc-numeric.scm gnc-numeric.scm
gwmoddir = ${GNC_GWRAP_LIBDIR}
gwmod_DATA = \
gw-engine-spec.scm \
gw-kvp-spec.scm
nodist_gwmod_DATA = \
gw-engine.scm \
gw-kvp.scm
EXTRA_DIST = \ EXTRA_DIST = \
README.query-api \ README.query-api \
design.txt \ design.txt \
@@ -164,13 +141,13 @@ EXTRA_DIST = \
gncla-dir.h.in \ gncla-dir.h.in \
kvp_doc.txt \ kvp_doc.txt \
SX-book-p.h \ SX-book-p.h \
engine.i \
${gncmod_DATA} \ ${gncmod_DATA} \
${gncscm_DATA} \ ${gncscm_DATA}
${gwmod_DATA}
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
#For compiling #For compiling
SCM_FILE_LINKS = gw-engine-spec.scm gw-kvp-spec.scm iso-4217-currencies.scm SCM_FILE_LINKS = iso-4217-currencies.scm
#For executing test cases #For executing test cases
SCM_FILE_LINKS += \ SCM_FILE_LINKS += \
${gncmod_DATA} \ ${gncmod_DATA} \
@@ -178,8 +155,8 @@ SCM_FILE_LINKS += \
endif endif
.scm-links: .scm-links:
$(RM) -rf gnucash g-wrapped $(RM) -rf gnucash
mkdir -p gnucash g-wrapped mkdir -p gnucash
if GNUCASH_SEPARATE_BUILDDIR if GNUCASH_SEPARATE_BUILDDIR
for X in ${SCM_FILE_LINKS} ; do \ for X in ${SCM_FILE_LINKS} ; do \
$(LN_S) -f ${srcdir}/$$X . ; \ $(LN_S) -f ${srcdir}/$$X . ; \
@@ -188,41 +165,18 @@ endif
( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done ) ( cd gnucash; for A in $(gncmod_DATA) ; do $(LN_S) -f ../$$A . ; done )
touch .scm-links touch .scm-links
clean-local: noinst_DATA = .scm-links
$(RM) -rf gnucash g-wrapped
.INTERMEDIATE: gwrap-files1 gwrap-files2 if BUILDING_FROM_SVN
swig-engine.c: engine.i ${gncinclude_HEADERS} ${noinst_HEADERS}
$(SWIG) -guile $(SWIG_ARGS) -Linkage module \
-I${top_srcdir}/lib/libqof/qof -o $@ $<
endif
iso-4217-currencies.c: iso-4217-currencies.scm iso-currencies-to-c iso-4217-currencies.c: iso-4217-currencies.scm iso-currencies-to-c
-chmod u+x ${srcdir}/iso-currencies-to-c -chmod u+x ${srcdir}/iso-currencies-to-c
GUILE_LOAD_PATH=@GNC_SRFI_LOAD_PATH@:${GUILE_LOAD_PATH} srcdir=${srcdir} ${srcdir}/iso-currencies-to-c GUILE_LOAD_PATH=@GNC_SRFI_LOAD_PATH@:${GUILE_LOAD_PATH} srcdir=${srcdir} ${srcdir}/iso-currencies-to-c
gw-engine.scm gw-engine.c gw-engine.h: \
gwrap-files1
gwrap-files1: \
.scm-links gw-engine-spec.scm ${top_builddir}/config.status
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(primitive-load \"./gw-engine-spec.scm\") \
(gw:generate-wrapset \"gw-engine\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-engine*.scm . )
gw-kvp.scm gw-kvp.c gw-kvp.h: \
gwrap-files2
gwrap-files2: \
.scm-links gw-kvp-spec.scm ${top_builddir}/config.status gwrap-files1
FLAVOR=gnome $(GUILE) -c \
"(set! %load-path (cons \"${G_WRAP_MODULE_DIR}\" %load-path)) \
(set! %load-path (cons \"${PWD}\" %load-path)) \
(primitive-load \"./gw-kvp-spec.scm\") \
(gw:generate-wrapset \"gw-kvp\")"
touch $@
( cd g-wrapped; $(LN_S) -f ../gw-kvp*.scm . )
gncla-dir.h: gncla-dir.h.in ${top_builddir}/config.status Makefile gncla-dir.h: gncla-dir.h.in ${top_builddir}/config.status Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
@@ -238,8 +192,8 @@ gncla-dir.h: gncla-dir.h.in ${top_builddir}/config.status Makefile
mv $@.tmp $@ mv $@.tmp $@
BUILT_SOURCES = iso-4217-currencies.c \ BUILT_SOURCES = iso-4217-currencies.c \
gw-engine.scm gw-engine.c gw-engine.h \ gncla-dir.h
gw-kvp.scm gw-kvp.c gw-kvp.h gncla-dir.h
CLEANFILES = $(BUILT_SOURCES) .scm-links gncla-dir.h \ CLEANFILES = $(BUILT_SOURCES) gnucash .scm-links gncla-dir.h \
${SCM_FILE_LINKS} gw-engine.html gw-kvp.html ${SCM_FILE_LINKS}
MAINTAINERCLEANFILES = swig-engine.c

View File

@@ -295,7 +295,8 @@ xaccQueryAddSingleAccountMatch(Query *q, Account *acc, QofQueryOp op)
void void
xaccQueryAddStringMatch (Query* q, const char *matchstring, xaccQueryAddStringMatch (Query* q, const char *matchstring,
int case_sens, int use_regexp, QofQueryOp op, gboolean case_sens, gboolean use_regexp,
QofQueryOp op,
const char * path, ...) const char * path, ...)
{ {
QofQueryPredData *pred_data; QofQueryPredData *pred_data;
@@ -353,8 +354,8 @@ xaccQueryAddNumericMatch (Query *q, gnc_numeric amount, QofNumericMatch sign,
void void
xaccQueryAddDateMatchTS (Query * q, xaccQueryAddDateMatchTS (Query * q,
int use_start, Timespec sts, gboolean use_start, Timespec sts,
int use_end, Timespec ets, gboolean use_end, Timespec ets,
QofQueryOp op) QofQueryOp op)
{ {
Query *tmp_q = NULL; Query *tmp_q = NULL;
@@ -425,8 +426,8 @@ xaccQueryGetDateMatchTS (Query * q,
void void
xaccQueryAddDateMatch(Query * q, xaccQueryAddDateMatch(Query * q,
int use_start, int sday, int smonth, int syear, gboolean use_start, int sday, int smonth, int syear,
int use_end, int eday, int emonth, int eyear, gboolean use_end, int eday, int emonth, int eyear,
QofQueryOp op) QofQueryOp op)
{ {
/* gcc -O3 will auto-inline this function, avoiding a call overhead */ /* gcc -O3 will auto-inline this function, avoiding a call overhead */
@@ -444,9 +445,9 @@ xaccQueryAddDateMatch(Query * q,
void void
xaccQueryAddDateMatchTT(Query * q, xaccQueryAddDateMatchTT(Query * q,
int use_start, gboolean use_start,
time_t stt, time_t stt,
int use_end, gboolean use_end,
time_t ett, time_t ett,
QofQueryOp op) QofQueryOp op)
{ {
@@ -532,22 +533,6 @@ xaccQueryAddGUIDMatch(Query * q, const GUID *guid,
qof_query_add_guid_match (q, param_list, guid, op); qof_query_add_guid_match (q, param_list, guid, op);
} }
void
xaccQueryAddGUIDMatchGL (QofQuery *q, GList *param_list,
GUID guid, QofQueryOp op)
{
GSList *params = NULL;
GList *node;
for (node = param_list; node; node = node->next)
params = g_slist_prepend (params, node->data);
params = g_slist_reverse (params);
g_list_free (param_list);
qof_query_add_guid_match (q, params, &guid, op);
}
void void
xaccQueryAddKVPMatch(QofQuery *q, GSList *path, const KvpValue *value, xaccQueryAddKVPMatch(QofQuery *q, GSList *path, const KvpValue *value,
QofQueryCompare how, QofIdType id_type, QofQueryCompare how, QofIdType id_type,
@@ -626,4 +611,68 @@ xaccQueryGetLatestDateFound(Query * q)
return latest; return latest;
} }
void
xaccQueryAddDescriptionMatch(Query *q, const char *m, gboolean c, gboolean r,
QofQueryOp o)
{
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_TRANS,
TRANS_DESCRIPTION, NULL);
}
void
xaccQueryAddNumberMatch(Query *q, const char *m, gboolean c, gboolean r,
QofQueryOp o)
{
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_TRANS,
TRANS_NUM, NULL);
}
void
xaccQueryAddActionMatch(Query *q, const char *m, gboolean c, gboolean r,
QofQueryOp o)
{
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_ACTION, NULL);
}
void
xaccQueryAddMemoMatch(Query *q, const char *m, gboolean c, gboolean r,
QofQueryOp o)
{
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_MEMO, NULL);
}
void
xaccQueryAddValueMatch(Query *q, gnc_numeric amt, QofNumericMatch sgn,
QofQueryCompare how, QofQueryOp op)
{
xaccQueryAddNumericMatch ((q), (amt), (sgn), (how), (op),
SPLIT_VALUE, NULL);
}
void
xaccQueryAddSharePriceMatch(Query *q, gnc_numeric amt, QofQueryCompare how,
QofQueryOp op)
{
xaccQueryAddNumericMatch ((q), (amt), QOF_NUMERIC_MATCH_ANY, (how), (op),
SPLIT_SHARE_PRICE, NULL);
}
void
xaccQueryAddSharesMatch(Query *q, gnc_numeric amt, QofQueryCompare how,
QofQueryOp op)
{
xaccQueryAddNumericMatch ((q), (amt), QOF_NUMERIC_MATCH_ANY, (how), (op),
SPLIT_AMOUNT, NULL);
}
void
xaccQueryAddBalanceMatch(Query *q, QofQueryCompare bal, QofQueryOp op)
{
xaccQueryAddNumericMatch(
(q), gnc_numeric_zero(), QOF_NUMERIC_MATCH_ANY,
((bal) ? QOF_COMPARE_EQUAL : QOF_COMPARE_NEQ), (op),
SPLIT_TRANS, TRANS_IMBALANCE, NULL);
}
/* ======================== END OF FILE ======================= */ /* ======================== END OF FILE ======================= */

View File

@@ -124,43 +124,37 @@ void xaccQueryAddAccountGUIDMatch(Query *, AccountGUIDList *,
void xaccQueryAddSingleAccountMatch(Query *, Account *, QofQueryOp); void xaccQueryAddSingleAccountMatch(Query *, Account *, QofQueryOp);
void xaccQueryAddStringMatch (Query* q, const char *matchstring, void xaccQueryAddStringMatch (Query* q, const char *matchstring,
int case_sens, int use_regexp, QofQueryOp op, gboolean case_sens, gboolean use_regexp,
QofQueryOp op,
const char * path, ...); const char * path, ...);
void
#define xaccQueryAddDescriptionMatch(q,m,c,r,o) \ xaccQueryAddDescriptionMatch(Query *q, const char *m, gboolean c, gboolean r,
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_TRANS, \ QofQueryOp o);
TRANS_DESCRIPTION, NULL) void
#define xaccQueryAddNumberMatch(q,m,c,r,o) \ xaccQueryAddNumberMatch(Query *q, const char *m, gboolean c, gboolean r,
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_TRANS, \ QofQueryOp o);
TRANS_NUM, NULL) void
#define xaccQueryAddActionMatch(q,m,c,r,o) \ xaccQueryAddActionMatch(Query *q, const char *m, gboolean c, gboolean r,
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_ACTION, \ QofQueryOp o);
NULL) void
#define xaccQueryAddMemoMatch(q,m,c,r,o) \ xaccQueryAddMemoMatch(Query *q, const char *m, gboolean c, gboolean r,
xaccQueryAddStringMatch ((q), (m), (c), (r), (o), SPLIT_MEMO, \ QofQueryOp o);
NULL) void
xaccQueryAddValueMatch(Query *q, gnc_numeric amt, QofNumericMatch sgn,
QofQueryCompare how, QofQueryOp op);
void
xaccQueryAddSharePriceMatch(Query *q, gnc_numeric amt, QofQueryCompare how,
QofQueryOp op);
void
xaccQueryAddSharesMatch(Query *q, gnc_numeric amt, QofQueryCompare how,
QofQueryOp op);
void
xaccQueryAddBalanceMatch(Query *q, QofQueryCompare bal, QofQueryOp op);
void xaccQueryAddNumericMatch (Query *q, gnc_numeric amount, void xaccQueryAddNumericMatch (Query *q, gnc_numeric amount,
QofNumericMatch sign, QofQueryCompare how, QofNumericMatch sign, QofQueryCompare how,
QofQueryOp op, const char * path, ...); QofQueryOp op, const char * path, ...);
#define xaccQueryAddValueMatch(q,amt,sgn,how,op) \
xaccQueryAddNumericMatch ((q), (amt), (sgn), (how), (op), \
SPLIT_VALUE, NULL)
#define xaccQueryAddSharePriceMatch(q,amt,how,op) \
xaccQueryAddNumericMatch ((q), (amt), QOF_NUMERIC_MATCH_ANY, (how), (op), \
SPLIT_SHARE_PRICE, NULL)
#define xaccQueryAddSharesMatch(q,amt,how,op) \
xaccQueryAddNumericMatch ((q), (amt), QOF_NUMERIC_MATCH_ANY, (how), (op), \
SPLIT_AMOUNT, NULL)
#define xaccQueryAddBalanceMatch(q,bal,op) \
xaccQueryAddNumericMatch ((q), gnc_numeric_zero(), QOF_NUMERIC_MATCH_ANY, \
((bal) ? QOF_COMPARE_EQUAL : QOF_COMPARE_NEQ), (op), \
SPLIT_TRANS, TRANS_IMBALANCE, NULL)
/** The DateMatch queries match transactions whose posted date /** The DateMatch queries match transactions whose posted date
* is in a date range. If use_start is TRUE, then a matching * is in a date range. If use_start is TRUE, then a matching
* posted date will be greater than the start date. If * posted date will be greater than the start date. If
@@ -170,17 +164,17 @@ void xaccQueryAddNumericMatch (Query *q, gnc_numeric amount,
* all transactions are matched. * all transactions are matched.
*/ */
void xaccQueryAddDateMatch(Query * q, void xaccQueryAddDateMatch(Query * q, gboolean use_start,
int use_start, int sday, int smonth, int syear, int sday, int smonth, int syear,
int use_end, int eday, int emonth, int eyear, gboolean use_end, int eday, int emonth, int eyear,
QofQueryOp op); QofQueryOp op);
void xaccQueryAddDateMatchTS(Query * q, void xaccQueryAddDateMatchTS(Query * q,
int use_start, Timespec sts, gboolean use_start, Timespec sts,
int use_end, Timespec ets, gboolean use_end, Timespec ets,
QofQueryOp op); QofQueryOp op);
void xaccQueryAddDateMatchTT(Query * q, void xaccQueryAddDateMatchTT(Query * q,
int use_start, time_t stt, gboolean use_start, time_t stt,
int use_end, time_t ett, gboolean use_end, time_t ett,
QofQueryOp op); QofQueryOp op);
void xaccQueryGetDateMatchTS (Query * q, void xaccQueryGetDateMatchTS (Query * q,
Timespec * sts, Timespec * sts,
@@ -202,8 +196,6 @@ typedef enum {
void xaccQueryAddClearedMatch(Query * q, cleared_match_t how, QofQueryOp op); void xaccQueryAddClearedMatch(Query * q, cleared_match_t how, QofQueryOp op);
void xaccQueryAddGUIDMatch(Query * q, const GUID *guid, void xaccQueryAddGUIDMatch(Query * q, const GUID *guid,
QofIdType id_type, QofQueryOp op); QofIdType id_type, QofQueryOp op);
void xaccQueryAddGUIDMatchGL (QofQuery *q, GList *param_list,
GUID guid, QofQueryOp op);
/** given kvp value is on right side of comparison */ /** given kvp value is on right side of comparison */
void xaccQueryAddKVPMatch(Query *q, GSList *path, const KvpValue *value, void xaccQueryAddKVPMatch(Query *q, GSList *path, const KvpValue *value,

View File

@@ -226,10 +226,6 @@ guint gnc_book_count_transactions(QofBook *book);
*/ */
void xaccTransSortSplits (Transaction *trans); void xaccTransSortSplits (Transaction *trans);
/** Print the transaction out to the console. Used for debugging.
*/
void xaccTransDump (Transaction *trans, const char *tag);
/** Set the Transaction Type /** Set the Transaction Type
* *
* See #TXN_TYPE_NONE, #TXN_TYPE_INVOICE and #TXN_TYPE_PAYMENT */ * See #TXN_TYPE_NONE, #TXN_TYPE_INVOICE and #TXN_TYPE_PAYMENT */

View File

@@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* engine-helpers.c -- gnucash g-wrap helper functions * * engine-helpers.c -- gnucash engine helper functions *
* Copyright (C) 2000 Linas Vepstas <linas@linas.org> * * Copyright (C) 2000 Linas Vepstas <linas@linas.org> *
* Copyright (C) 2001 Linux Developers Group, Inc. * * Copyright (C) 2001 Linux Developers Group, Inc. *
* * * *
@@ -24,7 +24,7 @@
#include "config.h" #include "config.h"
#include <g-wrap-wct.h> #include "swig-runtime.h"
#include <libguile.h> #include <libguile.h>
#include <string.h> #include <string.h>
@@ -43,6 +43,8 @@ cannot be considered "standard" or public parts of QOF. */
#include "qofquery-p.h" #include "qofquery-p.h"
#include "qofquerycore-p.h" #include "qofquerycore-p.h"
#define FUNC_NAME __FUNCTION__
static QofLogModule log_module = GNC_MOD_ENGINE; static QofLogModule log_module = GNC_MOD_ENGINE;
Timespec Timespec
@@ -197,123 +199,47 @@ typedef enum {
gnc_QUERY_v2 gnc_QUERY_v2
} query_version_t; } query_version_t;
static SCM
gnc_gw_enum_val2scm (const char *typestr, int value)
{
char *func_name;
SCM func;
SCM scm;
func_name = g_strdup_printf ("gw:enum-%s-val->sym", typestr);
func = scm_c_eval_string (func_name);
if (SCM_PROCEDUREP (func))
scm = scm_call_2 (func, scm_int2num (value), SCM_BOOL_F);
else
scm = SCM_BOOL_F;
g_free (func_name);
return scm;
}
static int
gnc_gw_enum_scm2val (const char *typestr, SCM enum_scm)
{
char *func_name;
SCM func;
SCM scm;
func_name = g_strdup_printf ("gw:enum-%s-val->int", typestr);
func = scm_c_eval_string (func_name);
if (SCM_PROCEDUREP (func))
scm = scm_call_1 (func, enum_scm);
else
scm = scm_int2num (0);
g_free (func_name);
return scm_num2int (scm, SCM_ARG1, __FUNCTION__);
}
/* QofCompareFunc */ /* QofCompareFunc */
static SCM
gnc_query_compare2scm (QofQueryCompare how)
{
return gnc_gw_enum_val2scm ("<gnc:query-compare-how>", how);
}
static QofQueryCompare static QofQueryCompare
gnc_query_scm2compare (SCM how_scm) gnc_query_scm2compare (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:query-compare-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
/* QofStringMatch */ /* QofStringMatch */
static SCM
gnc_query_string2scm (QofStringMatch how)
{
return gnc_gw_enum_val2scm ("<gnc:string-match-how>", how);
}
static QofStringMatch static QofStringMatch
gnc_query_scm2string (SCM how_scm) gnc_query_scm2string (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:string-match-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
/* QofDateMatch */ /* QofDateMatch */
static SCM
gnc_query_date2scm (QofDateMatch how)
{
return gnc_gw_enum_val2scm ("<gnc:date-match-how>", how);
}
static QofDateMatch static QofDateMatch
gnc_query_scm2date (SCM how_scm) gnc_query_scm2date (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:date-match-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
/* QofNumericMatch */ /* QofNumericMatch */
static SCM
gnc_query_numericop2scm (QofNumericMatch how)
{
return gnc_gw_enum_val2scm ("<gnc:numeric-match-how>", how);
}
static QofNumericMatch static QofNumericMatch
gnc_query_scm2numericop (SCM how_scm) gnc_query_scm2numericop (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:numeric-match-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
/* QofGuidMatch */ /* QofGuidMatch */
static SCM
gnc_query_guid2scm (QofGuidMatch how)
{
return gnc_gw_enum_val2scm ("<gnc:guid-match-how>", how);
}
static QofGuidMatch static QofGuidMatch
gnc_query_scm2guid (SCM how_scm) gnc_query_scm2guid (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:guid-match-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
/* QofCharMatch */ /* QofCharMatch */
static SCM
gnc_query_char2scm (QofCharMatch how)
{
return gnc_gw_enum_val2scm ("<gnc:char-match-how>", how);
}
static QofCharMatch static QofCharMatch
gnc_query_scm2char (SCM how_scm) gnc_query_scm2char (SCM how_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:char-match-how>", how_scm); return scm_num2int(how_scm, SCM_ARG1, __FUNCTION__);
} }
static QofGuidMatch static QofGuidMatch
@@ -379,7 +305,7 @@ gnc_scm2kvp_match_how (SCM how_scm)
} }
static int static int
gnc_scm2bitfield (const char *typestr, SCM field_scm) gnc_scm2bitfield (SCM field_scm)
{ {
int field = 0; int field = 0;
@@ -394,7 +320,7 @@ gnc_scm2bitfield (const char *typestr, SCM field_scm)
scm = SCM_CAR (field_scm); scm = SCM_CAR (field_scm);
field_scm = SCM_CDR (field_scm); field_scm = SCM_CDR (field_scm);
bit = gnc_gw_enum_scm2val (typestr, scm); bit = scm_num2int(scm, SCM_ARG2, __FUNCTION__);
field |= bit; field |= bit;
} }
@@ -404,7 +330,7 @@ gnc_scm2bitfield (const char *typestr, SCM field_scm)
static cleared_match_t static cleared_match_t
gnc_scm2cleared_match_how (SCM how_scm) gnc_scm2cleared_match_how (SCM how_scm)
{ {
return gnc_scm2bitfield ("<gnc:cleared-match-how>", how_scm); return gnc_scm2bitfield (how_scm);
} }
static gboolean static gboolean
@@ -551,7 +477,7 @@ gnc_query_path2scm (GSList *path)
return scm_reverse (path_scm); return scm_reverse (path_scm);
} }
static GSList * GSList *
gnc_query_scm2path (SCM path_scm) gnc_query_scm2path (SCM path_scm)
{ {
GSList *path = NULL; GSList *path = NULL;
@@ -588,16 +514,10 @@ gnc_query_path_free (GSList *path)
g_slist_free (path); g_slist_free (path);
} }
static SCM
gnc_KvpValueTypeype2scm (KvpValueType how)
{
return gnc_gw_enum_val2scm ("<gnc:kvp-value-t>", how);
}
static KvpValueType static KvpValueType
gnc_scm2KvpValueTypeype (SCM value_type_scm) gnc_scm2KvpValueTypeype (SCM value_type_scm)
{ {
return gnc_gw_enum_scm2val ("<gnc:kvp-value-t>", value_type_scm); return scm_num2int(value_type_scm, SCM_ARG1, __FUNCTION__);
} }
static SCM gnc_kvp_frame2scm (KvpFrame *frame); static SCM gnc_kvp_frame2scm (KvpFrame *frame);
@@ -613,7 +533,7 @@ gnc_kvp_value2scm (KvpValue *value)
value_t = kvp_value_get_type (value); value_t = kvp_value_get_type (value);
value_scm = scm_cons (gnc_KvpValueTypeype2scm (value_t), value_scm); value_scm = scm_cons (scm_long2num (value_t), value_scm);
switch (value_t) switch (value_t)
{ {
@@ -862,31 +782,31 @@ gnc_queryterm2scm (QofQueryTerm *qt)
pd = qof_query_term_get_pred_data (qt); pd = qof_query_term_get_pred_data (qt);
qt_scm = scm_cons (scm_str2symbol (pd->type_name), qt_scm); qt_scm = scm_cons (scm_str2symbol (pd->type_name), qt_scm);
qt_scm = scm_cons (gnc_query_compare2scm (pd->how), qt_scm); qt_scm = scm_cons (scm_long2num (pd->how), qt_scm);
if (!safe_strcmp (pd->type_name, QOF_TYPE_STRING)) { if (!safe_strcmp (pd->type_name, QOF_TYPE_STRING)) {
query_string_t pdata = (query_string_t) pd; query_string_t pdata = (query_string_t) pd;
qt_scm = scm_cons (gnc_query_string2scm (pdata->options), qt_scm); qt_scm = scm_cons (scm_long2num (pdata->options), qt_scm);
qt_scm = scm_cons (SCM_BOOL (pdata->is_regex), qt_scm); qt_scm = scm_cons (SCM_BOOL (pdata->is_regex), qt_scm);
qt_scm = scm_cons (scm_makfrom0str (pdata->matchstring), qt_scm); qt_scm = scm_cons (scm_makfrom0str (pdata->matchstring), qt_scm);
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_DATE)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_DATE)) {
query_date_t pdata = (query_date_t) pd; query_date_t pdata = (query_date_t) pd;
qt_scm = scm_cons (gnc_query_date2scm (pdata->options), qt_scm); qt_scm = scm_cons (scm_long2num (pdata->options), qt_scm);
qt_scm = scm_cons (gnc_timespec2timepair (pdata->date), qt_scm); qt_scm = scm_cons (gnc_timespec2timepair (pdata->date), qt_scm);
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_NUMERIC)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_NUMERIC)) {
query_numeric_t pdata = (query_numeric_t) pd; query_numeric_t pdata = (query_numeric_t) pd;
qt_scm = scm_cons (gnc_query_numericop2scm (pdata->options), qt_scm); qt_scm = scm_cons (scm_long2num (pdata->options), qt_scm);
qt_scm = scm_cons (gnc_query_numeric2scm (pdata->amount), qt_scm); qt_scm = scm_cons (gnc_query_numeric2scm (pdata->amount), qt_scm);
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_GUID)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_GUID)) {
query_guid_t pdata = (query_guid_t) pd; query_guid_t pdata = (query_guid_t) pd;
qt_scm = scm_cons (gnc_query_guid2scm (pdata->options), qt_scm); qt_scm = scm_cons (scm_long2num (pdata->options), qt_scm);
qt_scm = scm_cons (gnc_guid_glist2scm (pdata->guids), qt_scm); qt_scm = scm_cons (gnc_guid_glist2scm (pdata->guids), qt_scm);
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_INT64)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_INT64)) {
@@ -907,7 +827,7 @@ gnc_queryterm2scm (QofQueryTerm *qt)
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_CHAR)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_CHAR)) {
query_char_t pdata = (query_char_t) pd; query_char_t pdata = (query_char_t) pd;
qt_scm = scm_cons (gnc_query_char2scm (pdata->options), qt_scm); qt_scm = scm_cons (scm_long2num (pdata->options), qt_scm);
qt_scm = scm_cons (scm_makfrom0str (pdata->char_list), qt_scm); qt_scm = scm_cons (scm_makfrom0str (pdata->char_list), qt_scm);
} else if (!safe_strcmp (pd->type_name, QOF_TYPE_KVP)) { } else if (!safe_strcmp (pd->type_name, QOF_TYPE_KVP)) {
@@ -2066,46 +1986,6 @@ gnc_scm2query (SCM query_scm)
return q; return q;
} }
static int
gnc_scm_traversal_adapter(Transaction *t, void *data)
{
static SCM trans_type = SCM_BOOL_F;
SCM result;
SCM scm_trans;
SCM thunk = *((SCM *) data);
if(trans_type == SCM_BOOL_F) {
trans_type = scm_c_eval_string("<gnc:Transaction*>");
/* don't really need this - types are bound globally anyway. */
if(trans_type != SCM_BOOL_F) scm_gc_protect_object(trans_type);
}
scm_trans = gw_wcp_assimilate_ptr(t, trans_type);
result = scm_call_1(thunk, scm_trans);
return (result != SCM_BOOL_F);
}
gboolean
gnc_scmGroupStagedTransactionTraversal(AccountGroup *grp,
unsigned int new_marker,
SCM thunk)
{
return xaccGroupStagedTransactionTraversal(grp, new_marker,
gnc_scm_traversal_adapter,
&thunk);
}
gboolean
gnc_scmAccountStagedTransactionTraversal(Account *a,
unsigned int new_marker,
SCM thunk)
{
return xaccAccountStagedTransactionTraversal(a, new_marker,
gnc_scm_traversal_adapter,
&thunk);
}
SCM SCM
gnc_gint64_to_scm(const gint64 x) gnc_gint64_to_scm(const gint64 x)
{ {
@@ -2265,89 +2145,60 @@ gnc_numeric_p(SCM arg)
} }
} }
/********************************************************************
* gnc_scm_to_commodity static SCM
********************************************************************/ gnc_generic_to_scm(const void *x, const gchar *type_str)
{
swig_type_info * stype = NULL;
if (!x) return SCM_BOOL_F;
stype = SWIG_TypeQuery(type_str);
if (!stype) {
PERR("Unknown SWIG Type: %s ", type_str);
return SCM_BOOL_F;
}
return SWIG_NewPointerObj(x, stype, 0);
}
static void *
gnc_scm_to_generic(SCM scm, const gchar *type_str)
{
swig_type_info * stype = NULL;
stype = SWIG_TypeQuery(type_str);
if (!stype) {
PERR("Unknown SWIG Type: %s ", type_str);
return NULL;
}
if (!SWIG_IsPointerOfType(scm, stype))
return NULL;
return SWIG_MustGetPtr(scm, stype, 1, 0);
}
gnc_commodity * gnc_commodity *
gnc_scm_to_commodity(SCM scm) gnc_scm_to_commodity(SCM scm)
{ {
static SCM commodity_type = SCM_UNDEFINED; return gnc_scm_to_generic(scm, "_p_gnc_commodity");
if(commodity_type == SCM_UNDEFINED) {
commodity_type = scm_c_eval_string("<gnc:commodity*>");
/* don't really need this - types are bound globally anyway. */
if(commodity_type != SCM_UNDEFINED) scm_gc_protect_object(commodity_type);
}
if(!gw_wcp_is_of_type_p(commodity_type, scm)) {
return NULL;
}
return gw_wcp_get_ptr(scm);
} }
/********************************************************************
* gnc_commodity_to_scm
********************************************************************/
SCM SCM
gnc_commodity_to_scm (const gnc_commodity *commodity) gnc_commodity_to_scm (const gnc_commodity *commodity)
{ {
static SCM commodity_type = SCM_UNDEFINED; return gnc_generic_to_scm(commodity, "_p_gnc_commodity");
if(commodity == NULL) return SCM_BOOL_F;
if(commodity_type == SCM_UNDEFINED) {
commodity_type = scm_c_eval_string("<gnc:commodity*>");
/* don't really need this - types are bound globally anyway. */
if(commodity_type != SCM_UNDEFINED) scm_gc_protect_object(commodity_type);
}
return gw_wcp_assimilate_ptr((void *) commodity, commodity_type);
} }
/********************************************************************
* gnc_book_to_scm
********************************************************************/
SCM SCM
gnc_book_to_scm (QofBook *book) gnc_book_to_scm (QofBook *book)
{ {
static SCM book_type = SCM_UNDEFINED; return gnc_generic_to_scm(book, "_p_QofBook");
if (!book)
return SCM_BOOL_F;
if (book_type == SCM_UNDEFINED)
{
book_type = scm_c_eval_string ("<gnc:Book*>");
/* don't really need this - types are bound globally anyway. */
if (book_type != SCM_UNDEFINED)
scm_gc_protect_object (book_type);
}
return gw_wcp_assimilate_ptr ((void *) book, book_type);
} }
/********************************************************************
* qof_session_to_scm
********************************************************************/
SCM SCM
qof_session_to_scm (QofSession *session) qof_session_to_scm (QofSession *session)
{ {
static SCM session_type = SCM_UNDEFINED; return gnc_generic_to_scm(session, "_p_QofSession");
if (!session)
return SCM_BOOL_F;
if (session_type == SCM_UNDEFINED)
{
session_type = scm_c_eval_string ("<gnc:Session*>");
/* don't really need this - types are bound globally anyway. */
if (session_type != SCM_UNDEFINED)
scm_gc_protect_object (session_type);
}
return gw_wcp_assimilate_ptr ((void *) session, session_type);
} }

View File

@@ -1,5 +1,5 @@
/********************************************************************\ /********************************************************************\
* engine-helpers.h -- gnucash g-wrap helper functions * * engine-helpers.h -- gnucash engine helper functions *
* Copyright (C) 2000 Linas Vepstas <linas@linas.org> * * Copyright (C) 2000 Linas Vepstas <linas@linas.org> *
* Copyright (C) 2001 Linux Developers Group, Inc. * * Copyright (C) 2001 Linux Developers Group, Inc. *
* * * *
@@ -53,21 +53,15 @@ SCM gnc_guid2scm(GUID guid);
GUID gnc_scm2guid(SCM guid_scm); GUID gnc_scm2guid(SCM guid_scm);
int gnc_guid_p(SCM guid_scm); int gnc_guid_p(SCM guid_scm);
/* for a list of strings */
GSList * gnc_query_scm2path (SCM path_scm);
/* These two functions convert a query object into a scheme /* These two functions convert a query object into a scheme
* representation of the query and vice-versa. They do not * representation of the query and vice-versa. They do not
* simply convert a query pointer to a g-wrapped query pointer! */ * simply convert a query pointer to a guile query pointer! */
SCM gnc_query2scm (Query * q); SCM gnc_query2scm (Query * q);
Query * gnc_scm2query (SCM query_scm); Query * gnc_scm2query (SCM query_scm);
/* See Group.h for info about traversals. */
gboolean gnc_scmGroupStagedTransactionTraversal(AccountGroup *grp,
unsigned int stage,
SCM thunk);
gboolean gnc_scmAccountStagedTransactionTraversal(Account *a,
unsigned int stage,
SCM thunk);
SCM gnc_gint64_to_scm(const gint64 x); SCM gnc_gint64_to_scm(const gint64 x);
gint64 gnc_scm_to_gint64(SCM num); gint64 gnc_scm_to_gint64(SCM num);
int gnc_gh_gint64_p(SCM num); int gnc_gh_gint64_p(SCM num);

View File

@@ -95,15 +95,15 @@
;; for editing. ;; for editing.
(define (gnc:split->split-scm split use-cut-semantics?) (define (gnc:split->split-scm split use-cut-semantics?)
(gnc:make-split-scm (gnc:make-split-scm
(gnc:split-get-guid split) (gncSplitGetGUID split)
(gnc:account-get-guid (gnc:split-get-account split)) (gncAccountGetGUID (xaccSplitGetAccount split))
(gnc:transaction-get-guid (gnc:split-get-parent split)) (gncTransGetGUID (xaccSplitGetParent split))
(gnc:split-get-memo split) (xaccSplitGetMemo split)
(gnc:split-get-action split) (xaccSplitGetAction split)
(gnc:split-get-reconcile-state split) (xaccSplitGetReconcile split)
(gnc:split-get-reconciled-date split) (gnc-split-get-date-reconciled split)
(gnc:split-get-amount split) (xaccSplitGetAmount split)
(gnc:split-get-value split))) (xaccSplitGetValue split)))
;; Copy a scheme representation of a split onto a C split. ;; Copy a scheme representation of a split onto a C split.
;; If possible, insert the C split into the account of the ;; If possible, insert the C split into the account of the
@@ -118,18 +118,18 @@
(action (gnc:split-scm-get-action split-scm)) (action (gnc:split-scm-get-action split-scm))
(amount (gnc:split-scm-get-amount split-scm)) (amount (gnc:split-scm-get-amount split-scm))
(value (gnc:split-scm-get-value split-scm))) (value (gnc:split-scm-get-value split-scm)))
(if memo (gnc:split-set-memo split memo)) (if memo (xaccSplitSetMemo split memo))
(if action (gnc:split-set-action split action)) (if action (xaccSplitSetAction split action))
(if amount (gnc:split-set-amount split amount)) (if amount (xaccSplitSetAmount split amount))
(if value (gnc:split-set-value split value))) (if value (xaccSplitSetValue split value)))
(let ((account (gnc:account-lookup (let ((account (xaccAccountLookup
(gnc:split-scm-get-account-guid split-scm) (gnc:split-scm-get-account-guid split-scm)
book))) book)))
(if account (if account
(begin (begin
(gnc:account-begin-edit account) (xaccAccountBeginEdit account)
(gnc:account-insert-split account split) (xaccSplitSetAccount account split)
(gnc:account-commit-edit account))))))) (xaccAccountCommitEdit account)))))))
;; Defines a scheme representation of a transaction. ;; Defines a scheme representation of a transaction.
(define gnc:transaction-structure (define gnc:transaction-structure
@@ -218,23 +218,23 @@
;; a representation of it as a transaction-structure. ;; a representation of it as a transaction-structure.
(define (gnc:transaction->transaction-scm trans use-cut-semantics?) (define (gnc:transaction->transaction-scm trans use-cut-semantics?)
(define (trans-splits i) (define (trans-splits i)
(let ((split (gnc:transaction-get-split trans i))) (let ((split (xaccTransGetSplit trans i)))
(if (not split) (if (not split)
'() '()
(cons (gnc:split->split-scm split use-cut-semantics?) (cons (gnc:split->split-scm split use-cut-semantics?)
(trans-splits (+ i 1)))))) (trans-splits (+ i 1))))))
(gnc:make-transaction-scm (gnc:make-transaction-scm
(gnc:transaction-get-guid trans) (gncTransGetGUID trans)
(gnc:transaction-get-currency trans) (xaccTransGetCurrency trans)
(gnc:transaction-get-date-entered trans) (gnc-transaction-get-date-entered trans)
(if use-cut-semantics? (if use-cut-semantics?
(gnc:transaction-get-date-posted trans) (gnc-transaction-get-date-posted trans)
#f) #f)
(if use-cut-semantics? (if use-cut-semantics?
(gnc:transaction-get-num trans) (xaccTransGetNum trans)
#f) #f)
(gnc:transaction-get-description trans) (xaccTransGetDescription trans)
(gnc:transaction-get-notes trans) (xaccTransGetNotes trans)
(trans-splits 0))) (trans-splits 0)))
;; Copy a scheme representation of a transaction onto a C transaction. ;; Copy a scheme representation of a transaction onto a C transaction.
@@ -246,8 +246,8 @@
#f #f
(begin (begin
;; open the transaction for editing ;; open the transaction for editing
(if (not (gnc:transaction-is-open trans)) (if (not (xaccTransIsOpen trans))
(gnc:transaction-begin-edit trans)) (xaccTransBeginEdit trans))
;; copy in the transaction values ;; copy in the transaction values
(let ((currency (gnc:transaction-scm-get-currency trans-scm)) (let ((currency (gnc:transaction-scm-get-currency trans-scm))
@@ -255,23 +255,23 @@
(num (gnc:transaction-scm-get-num trans-scm)) (num (gnc:transaction-scm-get-num trans-scm))
(notes (gnc:transaction-scm-get-notes trans-scm)) (notes (gnc:transaction-scm-get-notes trans-scm))
(date-posted (gnc:transaction-scm-get-date-posted trans-scm))) (date-posted (gnc:transaction-scm-get-date-posted trans-scm)))
(if currency (gnc:transaction-set-currency trans currency)) (if currency (xaccTransSetCurrency trans currency))
(if description (gnc:transaction-set-description trans description)) (if description (xaccTransactionSetDescription trans description))
(if num (gnc:transaction-set-xnum trans num)) (if num (xaccTransSetNum trans num))
(if notes (gnc:transaction-set-notes trans notes)) (if notes (xaccTransSetNotes trans notes))
(if date-posted (gnc:transaction-set-date-time-pair (if date-posted (gnc-transaction-set-date
trans date-posted))) trans date-posted)))
;; strip off the old splits ;; strip off the old splits
(for-each (lambda (split) (for-each (lambda (split)
(gnc:split-destroy split)) (xaccSplitDestroy split))
(gnc:transaction-get-splits trans)) (xaccTransGetSplits trans))
;; and put on the new ones! Please note they go in the *same* ;; and put on the new ones! Please note they go in the *same*
;; order as in the original transaction. This is important. ;; order as in the original transaction. This is important.
(for-each (for-each
(lambda (split-scm) (lambda (split-scm)
(let* ((new-split (gnc:split-create book)) (let* ((new-split (xaccMallocSplit book))
(old-guid (gnc:split-scm-get-account-guid split-scm)) (old-guid (gnc:split-scm-get-account-guid split-scm))
(new-guid (assoc-ref guid-mapping old-guid))) (new-guid (assoc-ref guid-mapping old-guid)))
(if (not new-guid) (if (not new-guid)
@@ -279,9 +279,9 @@
(gnc:split-scm-set-account-guid split-scm new-guid) (gnc:split-scm-set-account-guid split-scm new-guid)
(gnc:split-scm-onto-split split-scm new-split book) (gnc:split-scm-onto-split split-scm new-split book)
(gnc:split-scm-set-account-guid split-scm old-guid) (gnc:split-scm-set-account-guid split-scm old-guid)
(gnc:transaction-append-split trans new-split))) (xaccTransAppendSplit trans new-split)))
(gnc:transaction-scm-get-split-scms trans-scm)) (gnc:transaction-scm-get-split-scms trans-scm))
;; close the transaction ;; close the transaction
(if commit? (if commit?
(gnc:transaction-commit-edit trans))))) (xaccTransCommitEdit trans)))))

View File

@@ -21,27 +21,10 @@
;; Copyright 2000 Rob Browning <rlb@cs.utexas.edu> ;; Copyright 2000 Rob Browning <rlb@cs.utexas.edu>
(define (gnc:url->loaded-session session url ignore-lock? create-if-needed?)
;; Return a <gnc:Book*> representing the data stored at the given
;; url or #f on failure -- this should later be changed to returning
;; the symbol representing the book error... On success, the book
;; will already be loaded.
(let* ((result (and session
(gnc:session-begin session url
ignore-lock?
create-if-needed?)
(eq? 'no-err (gw:enum-<gnc:BackendError>-val->sym
(gnc:session-get-error session) #f))
(gnc:session-load session)
session)))
(or result
(begin (gnc:session-destroy session) #f))))
(define (gnc:group-map-all-accounts thunk group) (define (gnc:group-map-all-accounts thunk group)
(let ((accounts (or (gnc:group-get-subaccounts group) '()))) (let ((accounts (or (xaccGroupGetSubAccountsSorted group) '())))
(map thunk accounts))) (map thunk accounts)))
(define (gnc:group-map-accounts thunk group) (define (gnc:group-map-accounts thunk group)
(let ((accounts (or (gnc:group-get-account-list group) '()))) (let ((accounts (or (xaccGroupGetAccountListSorted group) '())))
(map thunk accounts))) (map thunk accounts)))

366
src/engine/engine.i Normal file
View File

@@ -0,0 +1,366 @@
%module sw_engine
%{
/* Includes the header in the wrapper code */
#include <config.h>
#include <glib.h>
#include <qof.h>
#include <Group.h>
#include <Query.h>
#include <gnc-budget.h>
#include <gnc-commodity.h>
#include <gnc-engine.h>
#include <gnc-filepath-utils.h>
#include <gnc-pricedb.h>
#include <gnc-lot.h>
#include <gnc-session-scm.h>
#include <gnc-hooks-scm.h>
#include <engine-helpers.h>
#include <SX-book.h>
#include <kvp-scm.h>
#include "glib-helpers.h"
SCM scm_init_sw_engine_module (void);
%}
/* Not sure why SWIG doesn't figure this out. */
typedef unsigned int guint;
typedef char gchar;
typedef void * gpointer;
typedef int gint;
//%import "glib.h"
//typedef const gchar * QofIdType;
//%import "qofid.h"
%typemap(in) gint64 " $1 = gnc_scm_to_gint64($input); "
%typemap(out) gint64 " $result = gnc_gint64_to_scm($1); "
%typemap(in) gboolean " $1 = SCM_NFALSEP($input) ? TRUE : FALSE; "
%typemap(out) gboolean " $result = $1 ? SCM_BOOL_T : SCM_BOOL_F; "
%typemap(in) Timespec " $1 = gnc_timepair2timespec($input); "
%typemap(out) Timespec " $result = gnc_timespec2timepair($1); "
%typemap(in) GUID " $1 = gnc_scm2guid($input); "
%typemap(out) GUID " $result = gnc_guid2scm($1); "
%typemap(in) GUID * (GUID g) " g = gnc_scm2guid($input); $1 = &g; "
%typemap(out) GUID * " $result = ($1) ? gnc_guid2scm(*($1)): SCM_UNDEFINED; "
%typemap(in) gnc_numeric " $1 = gnc_scm_to_numeric($input); "
%typemap(out) gnc_numeric " $result = gnc_numeric_to_scm($1); "
%define GLIST_HELPER_INOUT(ListType, ElemSwigType)
%typemap(in) ListType * {
SCM list = $input;
GList *c_list = NULL;
while (!SCM_NULLP(list)) {
Account *p;
SCM p_scm = SCM_CAR(list);
if (SCM_FALSEP(p_scm) || SCM_NULLP(p_scm))
p = NULL;
else
p = SWIG_MustGetPtr(p_scm, ElemSwigType, 1, 0);
c_list = g_list_prepend(c_list, p);
list = SCM_CDR(list);
}
$1 = g_list_reverse(c_list);
}
%typemap(out) ListType * {
SCM list = SCM_EOL;
GList *node;
for (node = $1; node; node = node->next)
list = scm_cons(SWIG_NewPointerObj(node->data,
ElemSwigType, 0), list);
$result = scm_reverse(list);
}
%enddef
GLIST_HELPER_INOUT(SplitList, SWIGTYPE_p_Split);
GLIST_HELPER_INOUT(TransList, SWIGTYPE_p_Transaction);
GLIST_HELPER_INOUT(LotList, SWIGTYPE_p_GNCLot);
GLIST_HELPER_INOUT(AccountList, SWIGTYPE_p_Account);
GLIST_HELPER_INOUT(PriceList, SWIGTYPE_p_GNCPrice);
// TODO: free PriceList?
GLIST_HELPER_INOUT(CommodityList, SWIGTYPE_p_gnc_commodity);
%inline %{
static const GUID * gncSplitGetGUID(Split *x)
{ return qof_instance_get_guid(QOF_INSTANCE(x)); }
static const GUID * gncTransGetGUID(Transaction *x)
{ return qof_instance_get_guid(QOF_INSTANCE(x)); }
static const GUID * gncAccountGetGUID(Account *x)
{ return qof_instance_get_guid(QOF_INSTANCE(x)); }
static const GUID * gncPriceGetGUID(GNCPrice *x)
{ return qof_instance_get_guid(QOF_INSTANCE(x)); }
static const GUID * gncBudgetGetGUID(GncBudget *x)
{ return qof_instance_get_guid(QOF_INSTANCE(x)); }
%}
%typemap(newfree) AccountList * "g_list_free($1);"
%typemap(newfree) SplitList * "g_list_free($1);"
%typemap(newfree) TransList * "g_list_free($1);"
%typemap(newfree) PriceList * "g_list_free($1);"
%typemap(newfree) LotList * "g_list_free($1);"
%typemap(newfree) CommodityList * "g_list_free($1);"
%typemap(newfree) gchar * "g_free($1);"
/* NB: Should cover all the functions currently used, but not all that
* are wrapped */
%newobject xaccGroupGetSubAccountsSorted;
%newobject xaccGroupGetAccountListSorted;
%delobject gnc_price_list_destroy;
%newobject gnc_pricedb_lookup_latest_any_currency;
%newobject gnc_pricedb_lookup_nearest_in_time_any_currency;
%newobject gnc_pricedb_lookup_latest_before_any_currency;
%newobject gnc_pricedb_get_prices;
%newobject gnc_pricedb_lookup_at_time;
%newobject gnc_pricedb_lookup_day;
%newobject xaccQueryGetSplitsUniqueTrans;
%newobject xaccQueryGetTransactions;
%newobject xaccQueryGetLots;
%newobject xaccSplitGetCorrAccountFullName;
%newobject gnc_numeric_to_string;
%newobject gnc_build_dotgnucash_path;
%newobject gnc_build_book_path;
/* Parse the header file to generate wrappers */
//#define QOF_ID_BOOK "Book"
%inline {
static QofIdType QOF_ID_BOOK_SCM (void) { return QOF_ID_BOOK; }
}
%include <Split.h>
%include <engine-helpers.h>
%include <Account.h>
%include <Transaction.h>
%include <gnc-pricedb.h>
QofSession * qof_session_new (void);
QofBook * qof_session_get_book (QofSession *session);
%include <Group.h>
// TODO: Maybe unroll
void qof_book_kvp_changed (QofBook *book);
// TODO: Unroll/remove
const char *qof_session_get_url (QofSession *session);
const char *gnc_print_date (Timespec ts);
%inline {
static QofQuery * qof_query_create_for_splits(void) {
return qof_query_create_for(GNC_ID_SPLIT);
}
}
%typemap(in) GSList * "$1 = gnc_query_scm2path($input);"
void qof_query_add_guid_match (QofQuery *q, GSList *param_list,
const GUID *guid, QofQueryOp op);
void qof_query_set_sort_order (QofQuery *q, GSList *params1,
GSList *params2, GSList *params3);
%clear GSList *;
SplitList * qof_query_run (QofQuery *q);
%include <Query.h>
%ignore qof_query_add_guid_match;
%ignore qof_query_set_sort_order;
%ignore qof_query_run;
%include <qofquery.h>
%include <qofquerycore.h>
gnc_numeric gnc_numeric_create(gint64 num, gint64 denom);
gnc_numeric gnc_numeric_zero(void);
gint64 gnc_numeric_num(gnc_numeric a);
gint64 gnc_numeric_denom(gnc_numeric a);
gboolean gnc_numeric_zero_p(gnc_numeric a);
int gnc_numeric_compare(gnc_numeric a, gnc_numeric b);
gboolean gnc_numeric_negative_p(gnc_numeric a);
gboolean gnc_numeric_positive_p(gnc_numeric a);
gboolean gnc_numeric_equal(gnc_numeric a, gnc_numeric b);
gnc_numeric
gnc_numeric_add(gnc_numeric a, gnc_numeric b, gint64 denom, gint how);
gnc_numeric
gnc_numeric_sub(gnc_numeric a, gnc_numeric b, gint64 denom, gint how);
gnc_numeric
gnc_numeric_mul(gnc_numeric a, gnc_numeric b, gint64 denom, gint how);
gnc_numeric
gnc_numeric_div(gnc_numeric a, gnc_numeric b, gint64 denom, gint how);
gnc_numeric gnc_numeric_neg(gnc_numeric a);
gnc_numeric gnc_numeric_abs(gnc_numeric a);
gnc_numeric gnc_numeric_add_fixed(gnc_numeric a, gnc_numeric b);
gnc_numeric gnc_numeric_sub_fixed(gnc_numeric a, gnc_numeric b);
gnc_numeric gnc_numeric_convert(gnc_numeric in, gint64 denom, gint how);
gnc_numeric double_to_gnc_numeric(double in, gint64 denom, gint how);
double gnc_numeric_to_double(gnc_numeric in);
gchar * gnc_numeric_to_string(gnc_numeric n);
Timespec timespecCanonicalDayTime(Timespec t);
gchar * gnc_build_dotgnucash_path (const gchar *filename);
gchar * gnc_build_book_path (const gchar *filename);
%include <gnc-budget.h>
%typemap(in) GList * {
SCM path_scm = $input;
GList *path = NULL;
while (!SCM_NULLP (path_scm))
{
SCM key_scm = SCM_CAR (path_scm);
char *key;
if (!SCM_STRINGP (key_scm))
break;
key = g_strdup (SCM_STRING_CHARS (key_scm));
path = g_list_prepend (path, key);
path_scm = SCM_CDR (path_scm);
}
$1 = g_list_reverse (path);
}
void gnc_quote_source_set_fq_installed (GList *sources_list);
%clear GList *;
%ignore gnc_quote_source_set_fq_installed;
%include <gnc-commodity.h>
%include <gnc-lot.h>
%include <gnc-session-scm.h>
void gnc_hook_add_scm_dangler (const gchar *name, SCM proc);
void gnc_hook_run (const gchar *name, gpointer data);
%include <gnc-hooks.h>
AccountGroup * gnc_book_get_template_group(QofBook *book);
// KVP stuff
%typemap(in) KvpValue * " $1 = gnc_scm_to_kvp_value_ptr($input); "
%typemap(out) KvpValue * " $result = gnc_kvp_value_ptr_to_scm($1); "
%typemap(in) GSList *key_path " $1 = gnc_scm_to_gslist_string($input);"
void gnc_kvp_frame_delete_at_path(KvpFrame *frame, GSList *key_path);
void kvp_frame_set_slot_path_gslist(
KvpFrame *frame, const KvpValue *new_value, GSList *key_path);
KvpValue * kvp_frame_get_slot_path_gslist (KvpFrame *frame, GSList *key_path);
%clear GSList *key_path;
%inline %{
static KvpFrame * gnc_book_get_slots(QofBook *book) {
return qof_instance_get_slots(QOF_INSTANCE(book));
}
%}
%init {
{
char tmp[100];
#define SET_ENUM(e) snprintf(tmp, 100, "(set! %s (%s))", (e), (e)); \
scm_c_eval_string(tmp);
SET_ENUM("TXN-TYPE-NONE");
SET_ENUM("TXN-TYPE-INVOICE");
SET_ENUM("TXN-TYPE-PAYMENT");
SET_ENUM("ACCT-TYPE-INVALID");
SET_ENUM("ACCT-TYPE-NONE");
SET_ENUM("ACCT-TYPE-BANK");
SET_ENUM("ACCT-TYPE-CASH");
SET_ENUM("ACCT-TYPE-CREDIT");
SET_ENUM("ACCT-TYPE-ASSET");
SET_ENUM("ACCT-TYPE-LIABILITY");
SET_ENUM("ACCT-TYPE-STOCK");
SET_ENUM("ACCT-TYPE-MUTUAL");
SET_ENUM("ACCT-TYPE-CURRENCY");
SET_ENUM("ACCT-TYPE-INCOME");
SET_ENUM("ACCT-TYPE-EXPENSE");
SET_ENUM("ACCT-TYPE-EQUITY");
SET_ENUM("ACCT-TYPE-RECEIVABLE");
SET_ENUM("ACCT-TYPE-PAYABLE");
SET_ENUM("NUM-ACCOUNT-TYPES");
SET_ENUM("ACCT-TYPE-CHECKING");
SET_ENUM("ACCT-TYPE-SAVINGS");
SET_ENUM("ACCT-TYPE-MONEYMRKT");
SET_ENUM("ACCT-TYPE-CREDITLINE");
SET_ENUM("QOF-QUERY-AND");
SET_ENUM("QOF-QUERY-OR");
SET_ENUM("QUERY-TXN-MATCH-ALL");
SET_ENUM("QUERY-TXN-MATCH-ANY");
SET_ENUM("QOF-GUID-MATCH-ALL");
SET_ENUM("QOF-GUID-MATCH-ANY");
SET_ENUM("QOF-GUID-MATCH-NULL");
SET_ENUM("QOF-GUID-MATCH-NONE");
SET_ENUM("QOF-GUID-MATCH-LIST-ANY");
SET_ENUM("QOF-COMPARE-LT");
SET_ENUM("QOF-COMPARE-LTE");
SET_ENUM("QOF-COMPARE-EQUAL");
SET_ENUM("QOF-COMPARE-GT");
SET_ENUM("QOF-COMPARE-GTE");
SET_ENUM("QOF-COMPARE-NEQ");
SET_ENUM("QOF-NUMERIC-MATCH-ANY");
SET_ENUM("QOF-NUMERIC-MATCH-CREDIT");
SET_ENUM("QOF-NUMERIC-MATCH-DEBIT");
SET_ENUM("CLEARED-NO");
SET_ENUM("CLEARED-CLEARED");
SET_ENUM("CLEARED-FROZEN");
SET_ENUM("CLEARED-RECONCILED");
SET_ENUM("CLEARED-VOIDED");
SET_ENUM("HOOK-REPORT");
SET_ENUM("HOOK-SAVE-OPTIONS");
//SET_ENUM("GNC-ID-ACCOUNT");
SET_ENUM("QOF-ID-BOOK-SCM");
//SET_ENUM("GNC-ID-BUDGET");
//SET_ENUM("GNC-ID-LOT");
//SET_ENUM("GNC-ID-PRICE");
//SET_ENUM("GNC-ID-SPLIT");
//SET_ENUM("GNC-ID-SCHEDXACTION");
//SET_ENUM("QOF-ID-SESSION");
//SET_ENUM("GNC-ID-TRANS");
SET_ENUM("QUERY-DEFAULT-SORT");
SET_ENUM("SPLIT-LOT");
SET_ENUM("SPLIT-TRANS");
SET_ENUM("SPLIT-ACCOUNT");
SET_ENUM("SPLIT-VALUE");
SET_ENUM("SPLIT-MEMO");
SET_ENUM("SPLIT-DATE-RECONCILED");
SET_ENUM("TRANS-DATE-POSTED");
SET_ENUM("TRANS-DESCRIPTION");
SET_ENUM("TRANS-NUM");
SET_ENUM("ACCOUNT-CODE-"); /* sic */
#undefine SET_ENUM
}
}

View File

@@ -1,8 +1,6 @@
(define-module (gnucash engine)) (define-module (gnucash engine))
(use-modules (g-wrap gw-wct)) (use-modules (sw_engine))
(use-modules (g-wrapped gw-engine))
(export GNC-RND-FLOOR) (export GNC-RND-FLOOR)
(export GNC-RND-CEIL) (export GNC-RND-CEIL)

View File

@@ -1,6 +1,7 @@
/********************************************************************\ /********************************************************************\
* gnc-helpers.c -- gnucash g-wrap helper functions * * gnc-helpers.c -- gnucash glib helper functions *
* Copyright (C) 2000 Linas Vepstas * * Copyright (C) 2000 Linas Vepstas *
* Copyright (C) 2006 Chris Shoemaker <c.shoemaker@cox.net> *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@@ -27,39 +28,37 @@
#include <glib.h> #include <glib.h>
#include <libguile.h> #include <libguile.h>
#include "guile-mappings.h" #include "guile-mappings.h"
#include "swig-runtime.h"
#include <g-wrap-wct.h>
#include "glib-helpers.h" #include "glib-helpers.h"
/* These will eventually go into (g-wrapped glib). */
static SCM static SCM
glist_to_scm_list_helper(GList *glist, SCM wct) glist_to_scm_list_helper(GList *glist, swig_type_info *wct)
{ {
SCM list = SCM_EOL; SCM list = SCM_EOL;
GList *node; GList *node;
for (node = glist; node; node = node->next) for (node = glist; node; node = node->next)
list = scm_cons (gw_wcp_assimilate_ptr(node->data, wct), list); list = scm_cons(SWIG_NewPointerObj(node->data, wct, 0), list);
return scm_reverse (list); return scm_reverse (list);
} }
SCM SCM
gnc_glist_to_scm_list(GList *glist, SCM wct) gnc_glist_to_scm_list(GList *glist, gchar *wct)
{ {
SCM_ASSERT(gw_wct_p(wct), wct, SCM_ARG1, "gnc_glist_to_scm_list"); swig_type_info *stype = SWIG_TypeQuery(wct);
return(glist_to_scm_list_helper(glist, wct)); g_return_val_if_fail(stype, SCM_UNDEFINED);
return glist_to_scm_list_helper(glist, stype);
} }
GList* GList *
gnc_scm_list_to_glist(SCM rest) gnc_scm_list_to_glist(SCM rest)
{ {
GList *result = NULL; GList *result = NULL;
SCM scm_item; SCM scm_item;
SWIG_GetModule(NULL); /* Work-around for SWIG bug. */
SCM_ASSERT(SCM_LISTP(rest), rest, SCM_ARG1, "gnc_scm_list_to_glist"); SCM_ASSERT(SCM_LISTP(rest), rest, SCM_ARG1, "gnc_scm_list_to_glist");
while(!SCM_NULLP(rest)) while(!SCM_NULLP(rest))
@@ -69,18 +68,17 @@ gnc_scm_list_to_glist(SCM rest)
scm_item = SCM_CAR(rest); scm_item = SCM_CAR(rest);
rest = SCM_CDR(rest); rest = SCM_CDR(rest);
/* fixes a bug in g-wrap */
if (scm_item == SCM_BOOL_F) if (scm_item == SCM_BOOL_F)
{ {
result = g_list_prepend(result, NULL); result = g_list_prepend(result, NULL);
} }
else else
{ {
if (!gw_wcp_p(scm_item)) if (!SWIG_IsPointer(scm_item))
scm_misc_error("gnc_scm_list_to_glist", scm_misc_error("gnc_scm_list_to_glist",
"Item in list not a gw:wcp.", scm_item); "Item in list not a wcp.", scm_item);
item = gw_wcp_get_ptr(scm_item); item = (void *)SWIG_PointerAddress(scm_item);
result = g_list_prepend(result, item); result = g_list_prepend(result, item);
} }
} }
@@ -88,38 +86,6 @@ gnc_scm_list_to_glist(SCM rest)
return g_list_reverse(result); return g_list_reverse(result);
} }
static SCM
glist_map_helper(GList *glist, SCM wct, SCM thunk)
{
SCM list = SCM_EOL;
GList *node;
for (node = glist; node; node = node->next)
list = scm_cons (scm_call_1(thunk, gw_wcp_assimilate_ptr(node->data, wct)),
list);
return scm_reverse (list);
}
SCM
gnc_glist_scm_map(SCM wct, SCM thunk, GList* glist)
{
SCM_ASSERT(gw_wct_p(wct), wct, SCM_ARG1, "gnc_glist_map");
SCM_ASSERT(SCM_PROCEDUREP(thunk), thunk, SCM_ARG2, "gnc_glist_scm_map");
return(glist_map_helper(glist, wct, thunk));
}
void
gnc_glist_scm_for_each(SCM wct, SCM thunk, GList *glist)
{
GList *lp;
SCM_ASSERT(gw_wct_p(wct), wct, SCM_ARG1, "gnc_glist_map");
SCM_ASSERT(SCM_PROCEDUREP(thunk), thunk, SCM_ARG2, "gnc_glist_scm_for_each");
for(lp = glist; lp; lp = lp->next) {
scm_call_1(thunk, gw_wcp_assimilate_ptr(lp->data, wct));
}
}
/******************************************************************** /********************************************************************
* gnc_glist_string_to_scm * gnc_glist_string_to_scm
* i.e. (glist-of (<gw:mchars> calee-owned) callee-owned) * i.e. (glist-of (<gw:mchars> calee-owned) callee-owned)
@@ -143,9 +109,9 @@ gnc_glist_string_to_scm(GList *glist)
/******************************************************************** /********************************************************************
* gnc_scm_to_glist_string * gnc_scm_to_glist_string
* i.e. (glist-of (<gw:mchars> calee-owned) callee-owned) * i.e. (glist-of (<gw:mchars> callee-owned) callee-owned)
* or equivalently * or equivalently
* i.e. (glist-of (<gw:gchars> calee-owned) callee-owned) * i.e. (glist-of (<gw:gchars> callee-owned) callee-owned)
********************************************************************/ ********************************************************************/
GList * GList *
@@ -164,6 +130,22 @@ gnc_scm_to_glist_string(SCM list)
return g_list_reverse (glist); return g_list_reverse (glist);
} }
GSList *
gnc_scm_to_gslist_string(SCM list)
{
GSList *gslist = NULL;
while (!SCM_NULLP (list))
{
const gchar * str = SCM_STRING_CHARS (SCM_CAR(list));
if (str)
gslist = g_slist_prepend (gslist, g_strdup (str));
list = SCM_CDR (list);
}
return g_slist_reverse (gslist);
}
/******************************************************************** /********************************************************************
* gnc_glist_string_p * gnc_glist_string_p
********************************************************************/ ********************************************************************/

View File

@@ -1,6 +1,7 @@
/********************************************************************\ /********************************************************************\
* glib-helpers.h -- gnucash g-wrap helper functions * * glib-helpers.h -- gnucash glib helper functions *
* Copyright (C) 2000 Linas Vepstas * * Copyright (C) 2000 Linas Vepstas *
* Copyright (C) 2006 Chris Shoemaker <c.shoemaker@cox.net> *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@@ -27,16 +28,15 @@
#include <glib.h> #include <glib.h>
#include <libguile.h> #include <libguile.h>
SCM gnc_glist_to_scm_list(GList *glist, SCM wct); SCM gnc_glist_to_scm_list(GList *glist, gchar *wct);
GList* gnc_scm_list_to_glist(SCM wcp_list); GList* gnc_scm_list_to_glist(SCM wcp_list);
SCM gnc_glist_scm_map(SCM wct, SCM thunk, GList *glist);
void gnc_glist_scm_for_each(SCM wct, SCM thunk, GList *glist);
SCM gnc_glist_string_to_scm(GList * list); SCM gnc_glist_string_to_scm(GList * list);
GList * gnc_scm_to_glist_string(SCM list); GList * gnc_scm_to_glist_string(SCM list);
int gnc_glist_string_p(SCM list); int gnc_glist_string_p(SCM list);
GSList * gnc_scm_to_gslist_string(SCM list);
#endif #endif

Some files were not shown because too many files have changed in this diff Show More